00001
00010
00011
00012
00013
00014 #ifndef GFX_TARGA_HH
00015 #define GFX_TARGA_HH 1
00016
00017 namespace gfx {
00018
00019
00020 typedef void(*TargaFilterFuncType)( uint8* p, uint8 r, uint8 g, uint8 b, uint8 a );
00021 void DefaultTargaFilterFunc( uint8* p, uint8 r, uint8 g, uint8 b, uint8 a );
00022
00023
00024 uint8* tga_load( const uint8* const ibuf, uint ibufLen, uint* olen,
00025 uint* w, uint* h,
00026 bool* hasAlpha,
00027 TargaFilterFuncType filterFunc );
00028
00042 class Targa
00043 {
00044
00045 public:
00046 Targa( SafePtr<const uint8> ibuf, uint ibufLen, TargaFilterFuncType filterFunc = DefaultTargaFilterFunc );
00047 ~Targa();
00048 bool IfValid( void ) const { return mBuf != NULL; }
00049 bool HasAlpha( void ) const { return mHasAlpha; }
00050 uint GetWidth( void ) const { ASSERT( mWidth ); return mWidth; }
00051 uint GetHeight( void ) const { ASSERT( mHeight ); return mHeight; }
00052 uint8* GetBuf( void ) { ASSERT( mBuf ); return mBuf; }
00053 const uint8* GetConstBuf( void ) const { ASSERT( mBuf ); return mBuf; }
00054 uint GetBufLen( void ) const { ASSERT( mBufLen ); return mBufLen; }
00055 uint GetColorLen( void ) const { ASSERT( mBufLen ); return mBufLen / (mWidth*mHeight); }
00056 uint8 ReadBuf( uint i ) const { ASSERT( mBuf && i < mBufLen ); return mBuf[i]; }
00057 void WriteBuf( uint i, uint8 c ) { ASSERT( mBuf && i < mBufLen ); mBuf[i] = c; }
00058
00059 private:
00060 uint mWidth;
00061 uint mHeight;
00062 uint8* mBuf;
00063 uint mBufLen;
00064 bool mHasAlpha;
00065 };
00066
00067 }
00068
00069 #endif // GFX_TARGA_HH