Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_IMAGEFORMATINTERFACES_H__
00009 #define __SP_IMAGEFORMATINTERFACES_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "Base/spInputOutput.hpp"
00014 #include "Base/spBaseFileFormatHandler.hpp"
00015 #include "Base/spMath.hpp"
00016 #include "Base/spMaterialColor.hpp"
00017
00018 #include <cstdio>
00019
00020
00021 namespace sp
00022 {
00023 namespace video
00024 {
00025
00026
00027
00028
00029
00030
00032 enum EPixelFormats
00033 {
00034 PIXELFORMAT_ALPHA = 0,
00035 PIXELFORMAT_GRAY,
00036 PIXELFORMAT_GRAYALPHA,
00037 PIXELFORMAT_RGB,
00038 PIXELFORMAT_BGR,
00039 PIXELFORMAT_RGBA,
00040 PIXELFORMAT_BGRA,
00041 PIXELFORMAT_DEPTH,
00042 };
00043
00045 enum EImageFileFormats
00046 {
00047 IMAGEFORMAT_UNKNOWN,
00048
00049
00050 IMAGEFORMAT_BMP,
00051 IMAGEFORMAT_JPG,
00052 IMAGEFORMAT_PNG,
00053 IMAGEFORMAT_TGA,
00054 IMAGEFORMAT_PCX,
00055 IMAGEFORMAT_DDS,
00056 IMAGEFORMAT_WAD,
00057
00058
00059 IMAGEFORMAT_GIF,
00060 IMAGEFORMAT_PSD,
00061 };
00062
00063
00064
00065
00066
00067
00068 struct SImageData
00069 {
00070 SImageData() :
00071 Width (0 ),
00072 Height (0 ),
00073 bpp (24 ),
00074 Format (PIXELFORMAT_RGB),
00075 FormatSize (3 )
00076 {
00077 }
00078 virtual ~SImageData()
00079 {
00080 }
00081
00082
00083 s32 Width;
00084 s32 Height;
00085
00086 s32 bpp;
00087 EPixelFormats Format;
00088 s32 FormatSize;
00089 };
00090
00092 struct SImageDataRead : public SImageData
00093 {
00094 SImageDataRead() :
00095 SImageData ( ),
00096 ID (0 ),
00097 ImageBuffer (0 )
00098 {
00099 }
00100 ~SImageDataRead()
00101 {
00102 MemoryManager::deleteBuffer(ImageBuffer);
00103 }
00104
00105
00106 u32 ID;
00107 u8* ImageBuffer;
00108 };
00109
00110 struct SImageDataWrite : public SImageData
00111 {
00112 SImageDataWrite() :
00113 SImageData ( ),
00114 ImageBuffer (0 )
00115 {
00116 }
00117 ~SImageDataWrite()
00118 {
00119 }
00120
00121
00122 const u8* ImageBuffer;
00123 };
00124
00125
00127 class SP_EXPORT ImageLoader : public io::BaseFileFormatHandler
00128 {
00129
00130 public:
00131
00132 virtual ~ImageLoader()
00133 {
00134 }
00135
00136
00137
00138 virtual SImageDataRead* loadImageData() = 0;
00139
00140 protected:
00141
00142 ImageLoader(io::File* File) :
00143 io::BaseFileFormatHandler(File)
00144 {
00145 }
00146
00147 };
00148
00150 class SP_EXPORT ImageSaver : public io::BaseFileFormatHandler
00151 {
00152
00153 public:
00154
00155 virtual ~ImageSaver()
00156 {
00157 }
00158
00159
00160
00161 virtual bool saveImageData(SImageDataWrite* ImageData) = 0;
00162
00163 protected:
00164
00165 ImageSaver(io::File* File) :
00166 io::BaseFileFormatHandler(File)
00167 {
00168 }
00169
00170 };
00171
00172
00173 }
00174
00175 }
00176
00177
00178 #endif
00179
00180
00181
00182