afImage.h
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:3k
源码类别:

其他游戏

开发平台:

Visual C++

  1. #ifndef AF_IMAGE
  2. #define AF_IMAGE
  3. #include "afString.h"
  4. #include <D3D9.h>
  5. /// afImage objects store images
  6. /**
  7.  *  Each image is defined by its resolution and format
  8.  */
  9. class afImage
  10. {
  11. public:
  12. /// Image format specification
  13. enum FORMAT {
  14. UNKNOWN = D3DFMT_UNKNOWN, /**<  Undefined Format  */
  15. RGB888 = D3DFMT_R8G8B8, /**<  24-bit RGB  */
  16. ARGB8888 = D3DFMT_A8R8G8B8, /**<  32-bit ARGB  */
  17. XRGB8888 = D3DFMT_X8R8G8B8, /**<  32-bit RGB  */
  18. RGB565 = D3DFMT_R5G6B5, /**<  16-bit RGB  */
  19. XRGB1555 = D3DFMT_X1R5G5B5, /**<  16-bit RGB  */
  20. ARGB1555 = D3DFMT_A1R5G5B5, /**<  16-bit ARGB  */
  21. ARGB4444 = D3DFMT_A4R4G4B4, /**<  16-bit ARGB  */
  22. A8 = D3DFMT_A8, /**<  8-bit Alpha  */
  23. P8 = D3DFMT_P8, /**<  8-bit Indexed  */
  24. L8 = D3DFMT_L8, /**<  8-bit Gray  */
  25. DXT1 = D3DFMT_DXT1, /**<  Opaque / one-bit alpha  */
  26. DXT2 = D3DFMT_DXT2, /**<  Explicit alpha (premultiplied)  */
  27. DXT3 = D3DFMT_DXT3, /**<  Explicit alpha  */
  28. DXT4 = D3DFMT_DXT4, /**<  Interpolated alpha (premultiplied)  */
  29. DXT5 = D3DFMT_DXT5 /**<  Interpolated alpha  */
  30. };
  31. /// Creates an undefinded image (size 0*0)
  32. afImage();
  33. /// Creates an image with size nWidth * nHeight and format nFormat
  34. /**
  35.  *  If nData is unequal to NULL the data is taken to initialize the image object.
  36.  *  If nCopy is true the data is copied and not just referenced.
  37.  */
  38. afImage(int nWidth, int nHeight, FORMAT nFormat, const afString& nName, unsigned char* nData=NULL, bool nCopy=true);
  39. /// Returns the width of the image in pixels.
  40. int getWidth() const  {  return width;  }
  41. /// Returns the height of the image in pixels.
  42. int getHeight() const  {  return height;  }
  43. /// Returns a pointer to the image's pixels
  44. const unsigned char* getData() const  {  return data;  }
  45. /// Returns a pointer to the image's pixels
  46. unsigned char* getData()  {  return data;  }
  47. /// Returns the number of bytes a single pixel takes in the image
  48. int getPixelSize() const;
  49. /// Returns true if the current image format is a compressed format
  50. bool isCompressed() const  {  return isCompressed(format);  }
  51. /// Returns the name of the image which was set during construction
  52. const afString& getName() const  {  return name;  }
  53. /// Toolmethod to calculate the pixelsize from a format.
  54. /**
  55.  *  The pixelsize is returned as number of bytes each pixel takes using the passed format
  56.  */
  57. static int getPixelSize(FORMAT nFormat);
  58. /// Returns the name of the format as a string
  59. static afString getFormatString(D3DFORMAT nFormat);
  60. /// Returns the name of the format as a string
  61. static afString getFormatString(FORMAT nFormat);
  62. /// Converts a D3D pixel format into a afLib pixel format
  63. static D3DFORMAT getD3DFormat(FORMAT nFormat)  {  return D3DFORMAT(nFormat);  }
  64. /// Returns true if the passed image format is a compressed format
  65. static bool isCompressed(FORMAT nFormat);
  66. /// Returns true if the passed image format has an alpha component
  67. static bool hasAlpha(FORMAT nFormat);
  68. protected:
  69. int width, height;
  70. FORMAT format;
  71. unsigned char* data;
  72. afString name;
  73. };
  74. typedef afImage* afImagePtr;
  75. #endif