Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_IMAGELOADER_PCX_H__
00009 #define __SP_IMAGELOADER_PCX_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #ifdef SP_COMPILE_WITH_TEXLOADER_PCX
00015
00016
00017 #include "FileFormats/Image/spImageFormatInterfaces.hpp"
00018
00019
00020 namespace sp
00021 {
00022 namespace video
00023 {
00024
00025
00026 class SP_EXPORT ImageLoaderPCX : public ImageLoader
00027 {
00028
00029 public:
00030
00031 ImageLoaderPCX(io::File* File);
00032 ~ImageLoaderPCX();
00033
00034 SImageDataRead* loadImageData();
00035
00036 private:
00037
00038
00039
00040 struct SHeaderPCX
00041 {
00042 u8 manufacturer, version;
00043 u8 encoding, bpp;
00044
00045 u16 xmin, ymin;
00046 u16 xmax, ymax;
00047 u16 horzRes, vertRes;
00048
00049 u8 palette[48];
00050 u8 reserved, numColorPlanes;
00051
00052 u16 bytesPerScanLine, paletteType;
00053 u16 horzSize, vertSize;
00054
00055 u8 padding[54];
00056 };
00057
00058
00059
00060 void readPCX1bit(SHeaderPCX* pHeader, SImageDataRead* texture);
00061 void readPCX4bit(SHeaderPCX* pHeader, SImageDataRead* texture);
00062 void readPCX8bit(SHeaderPCX* pHeader, SImageDataRead* texture);
00063 void readPCX24bit(SHeaderPCX* pHeader, SImageDataRead* texture);
00064
00065
00066
00067 inline s32 readByte() const
00068 {
00069 return static_cast<s32>(File_->readValue<u8>());
00070 }
00071
00072 };
00073
00074
00075 }
00076
00077 }
00078
00079
00080 #endif
00081
00082 #endif
00083
00084
00085
00086