CImageLoaderTEX.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef __C_IMAGE_LOADER_TEX_H_INCLUDED__
  2. #define __C_IMAGE_LOADER_TEX_H_INCLUDED__
  3. #include <irrlicht/irrlicht.h>
  4. namespace irr
  5. {
  6. namespace video
  7. {
  8. //! Surface Loader for PNG files
  9. class CImageLoaderTex : public IImageLoader
  10. {
  11. public:
  12. //! returns true if the file maybe is able to be loaded by this class
  13. //! based on the file extension (e.g. ".png")
  14. virtual bool isALoadableFileExtension(const io::path& filename) const;
  15. //! returns true if the file maybe is able to be loaded by this class
  16. virtual bool isALoadableFileFormat(io::IReadFile* file) const;
  17. //! creates a surface from the file
  18. virtual IImage* loadImage(io::IReadFile* input) const;
  19. virtual void loadImageFromARGB8Data (IImage* output, const char* input, u32 width, u32 height, u32 mipmap_width) const;
  20. virtual void loadImageFromDXT1 (IImage* output, const char* input, u32 destination_width, u32 destination_height, u32 origin_width, u32 origin_height) const;
  21. virtual void loadImageFromDXT5 (IImage* output, const char* input, u32 destination_width, u32 destination_height, u32 origin_width, u32 origin_height) const;
  22. private:
  23. void BlockDecompressImageDXT1(unsigned long width, unsigned long height, const unsigned char *blockStorage, unsigned long *image) const;
  24. void DecompressBlockDXT1(unsigned long x, unsigned long y, unsigned long width, const unsigned char *blockStorage, unsigned long *image) const;
  25. unsigned long PackRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) const;
  26. void BlockDecompressImageDXT5(unsigned long width, unsigned long height, const unsigned char *blockStorage, unsigned long *image) const;
  27. void DecompressBlockDXT5(unsigned long x, unsigned long y, unsigned long width, const unsigned char *blockStorage, unsigned long *image) const;
  28. enum TextureFormat
  29. {
  30. ARGB8888,
  31. RA88,
  32. A8,
  33. DXT5,
  34. DXT3,
  35. DXT1
  36. };
  37. // extracted from the free image library
  38. enum FREE_IMAGE_FORMAT
  39. {
  40. FIF_UNKNOWN = -1,
  41. FIF_BMP = 0,
  42. FIF_ICO = 1,
  43. FIF_JPEG = 2,
  44. FIF_JNG = 3,
  45. FIF_KOALA = 4,
  46. FIF_LBM = 5,
  47. FIF_IFF = FIF_LBM,
  48. FIF_MNG = 6,
  49. FIF_PBM = 7,
  50. FIF_PBMRAW = 8,
  51. FIF_PCD = 9,
  52. FIF_PCX = 10,
  53. FIF_PGM = 11,
  54. FIF_PGMRAW = 12,
  55. FIF_PNG = 13,
  56. FIF_PPM = 14,
  57. FIF_PPMRAW = 15,
  58. FIF_RAS = 16,
  59. FIF_TARGA = 17,
  60. FIF_TIFF = 18,
  61. FIF_WBMP = 19,
  62. FIF_PSD = 20,
  63. FIF_CUT = 21,
  64. FIF_XBM = 22,
  65. FIF_XPM = 23,
  66. FIF_DDS = 24,
  67. FIF_GIF = 25,
  68. FIF_HDR = 26,
  69. FIF_FAXG3 = 27,
  70. FIF_SGI = 28,
  71. FIF_EXR = 29,
  72. FIF_J2K = 30,
  73. FIF_JP2 = 31,
  74. FIF_PFM = 32,
  75. FIF_PICT = 33,
  76. FIF_RAW = 34,
  77. FIF_WEBP = 35,
  78. FIF_JXR = 36
  79. };
  80. };
  81. } // end namespace video
  82. } // end namespace irr
  83. #endif /* !__C_IMAGE_LOADER_TEX_H_INCLUDED__ */