gfx_targa.hh

Go to the documentation of this file.
00001 /*
00010  * LEGAL:   THIS SOURCE CODE IS RELEASED UNDER THE TERMS
00011  *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
00012  ******************************************************************************/
00013 
00014 #ifndef GFX_TARGA_HH
00015 #define GFX_TARGA_HH 1
00016 
00017 namespace gfx {
00018 
00019 // A function can be specified to filter RGBAs from Targa image.
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 // Low-level function.
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 } // namespace gfx
00068 
00069 #endif // GFX_TARGA_HH
Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:11 2007