"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/Texture/LSGTextureManager.h

00001 
00017 #ifndef __LSG_TEXTUREMANAGER_H__
00018 #define __LSG_TEXTUREMANAGER_H__
00019 
00020 #include "../LSGGraphicsLib.h"
00021 #include "LSGStandardTexture.h"
00022 #include "Map/LSTLMap.h"
00023 #include "String/LSTLString.h"
00024 
00025 namespace lsg {
00026 
00034         class CTextureManager {
00035         public :
00036                 // == Various constructors.
00037                 LSE_CALLCTOR                                                                                    CTextureManager();
00038                 LSE_CALLCTOR                                                                                    ~CTextureManager();
00039 
00040 
00041                 // == Functions.
00054                 CSharedStdTexPtr LSE_CALL                                                               CreateSharedTexFromMemory( LSUINT32 _ui32Crc1, LSUINT32 _ui32Crc2,
00055                         const LSUINT8 * _pui8Data, LSUINTPTR _uiptrLen, const LSG_TEX_PARMS &_tpParms );
00056 
00065                 CSharedStdTexPtr LSE_CALL                                                               CreateSharedTexFromFile( const LSCHAR * _pcPath,
00066                         const LSG_TEX_PARMS &_tpParms );
00067 
00080                 CSharedStdTexPtr LSE_CALL                                                               CreateNormalMapFromBumpTexture( LSUINT32 _ui32Crc1, LSUINT32 _ui32Crc2,
00081                         const CSharedStdTexPtr _sstpBumpTexture, LSBOOL _bWrapX = true, LSBOOL _bWrapY = true );
00082 
00096                 CSharedStdTexPtr LSE_CALL                                                               CombineRgbAlphaTextures( LSUINT32 _ui32CrcRgb1, LSUINT32 _ui32CrcRgb2,
00097                         const CSharedStdTexPtr _sstpRgbTexture,
00098                         LSUINT32 _ui32CrcAlpha1, LSUINT32 _ui32CrcAlpha2,
00099                         const CSharedStdTexPtr _sstpAlphaTexture,
00100                         const LSG_TEX_PARMS &_tpParms );
00101 
00106                 LSVOID LSE_CALL                                                                                 Release();
00107 
00112                 LSVOID LSE_CALL                                                                                 ReleaseUnreferenced();
00113 
00114         protected :
00115                 // == Types.
00120                 typedef struct LSG_TEXTURE_DATA {
00124                         CString                                                                                         sPath;
00125 
00129                         LSUINT32                                                                                        ui32Crc1;
00130 
00134                         LSUINT32                                                                                        ui32Crc2;
00135 
00136 
00137                         // == Operators.
00144                         LSG_TEXTURE_DATA & LSE_CALL                                                     operator = ( const LSG_TEXTURE_DATA &_tdOther );
00145 
00152                         LSBOOL LSE_CALL                                                                         operator == ( const LSG_TEXTURE_DATA &_tdOther ) const;
00153 
00162                         LSBOOL LSE_CALL                                                                         operator < ( const LSG_TEXTURE_DATA &_tdOther ) const;
00163                 } * LPLSG_TEXTURE_DATA, * const LPCLSG_TEXTURE_DATA;
00164 
00169                 typedef struct LSG_TEXTURE_DATA_COMBINED {
00173                         LSG_TEXTURE_DATA                                                                        tdCrc1;
00174 
00178                         LSG_TEXTURE_DATA                                                                        tdCrc2;
00179 
00180 
00181                         // == Operators.
00188                         LSBOOL LSE_CALL                                                                         operator == ( const LSG_TEXTURE_DATA_COMBINED &_tdcOther ) const;
00189 
00198                         LSBOOL LSE_CALL                                                                         operator < ( const LSG_TEXTURE_DATA_COMBINED &_tdcOther ) const;
00199                 } * LPLSG_TEXTURE_DATA_COMBINED, * const LPCLSG_TEXTURE_DATA_COMBINED;
00200 
00201 
00202                 // == Members.
00207                 CMap<LSG_TEXTURE_DATA, CSharedStdTexPtr>                                m_mSharedData;
00208 
00212                 CMap<LSG_TEXTURE_DATA, LSG_TEXTURE_DATA>                                m_mBumpConversions;
00213 
00217                 CMap<LSG_TEXTURE_DATA_COMBINED, LSG_TEXTURE_DATA>               m_mCombinedTextures;
00218         };
00219 
00220 }       // namespace lsg
00221 
00222 #endif  // __LSG_TEXTUREMANAGER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator