00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SHAPEFRAME_H
00020 #define SHAPEFRAME_H
00021
00022 struct ConvertShapeFormat;
00023 struct ConvertShapeFrame;
00024
00025 class ShapeFrame
00026 {
00027 public:
00028
00029
00030
00031
00032
00033
00034
00035 ShapeFrame(const uint8* data, uint32 size, const ConvertShapeFormat* format=0,
00036 const uint8 special[256]=0, ConvertShapeFrame *prev=0);
00037 ~ShapeFrame();
00038
00039 uint32 compressed;
00040 sint32 width, height;
00041 sint32 xoff, yoff;
00042
00043 uint32 *line_offsets;
00044 const uint8 *rle_data;
00045
00046 bool hasPoint(sint32 x, sint32 y) const;
00047
00048 uint8 getPixelAtPoint(sint32 x, sint32 y) const;
00049
00050 void getConvertShapeFrame(ConvertShapeFrame &csf, bool need_bytes_rle=false);
00051 protected:
00052
00053
00054 void LoadU8Format(const uint8* data, uint32 size);
00055
00056
00057 void LoadPentagramFormat(const uint8* data, uint32 size);
00058
00059
00060
00061 void LoadGenericFormat(const uint8* data, uint32 size, const ConvertShapeFormat* format);
00062
00063
00064 void LoadU8CMPFormat(const uint8* data, uint32 size, const ConvertShapeFormat* format, const uint8 special[256], ConvertShapeFrame *prev);
00065 };
00066
00067
00068 #endif