00001 #ifndef FBITMAP_H_FILE 00002 #define FBITMAP_H_FILE 00003 00004 #include "FBase.h" 00005 #include <iostream> 00006 #include <vector> 00007 00008 class FlashTagDefineBitsJPEG1 : public FlashTag, public FlashIDEnabled 00009 { 00010 DEFINE_RW_INTERFACE 00011 FlashTagDefineBitsJPEG1() {} 00012 public: 00013 FlashTagDefineBitsJPEG1(unsigned char *_data, UDWORD _len) : data(_data), len(_len) {} 00014 00015 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG1 &data); 00016 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsJPEG1 &data); 00017 friend class FlashImporter; 00018 00019 const unsigned char *GetJPEGData() { return data; } 00020 UDWORD GetJPEGDataSize() { return len; } 00021 00022 private: 00023 gc_vector<unsigned char *> datagc; 00024 unsigned char *data; 00025 UDWORD len; 00026 }; 00027 00028 class FlashTagJPEGTables : public FlashTag 00029 { 00030 DEFINE_RW_INTERFACE 00031 FlashTagJPEGTables() {} 00032 public: 00033 friend class FlashImporter; 00034 FlashTagJPEGTables(unsigned char *_data, UDWORD _len) : data(_data), len(_len) {} 00035 00036 friend std::ostream &operator << (std::ostream &out, FlashTagJPEGTables &data); 00037 friend std::istream &operator >> (std::istream &in, FlashTagJPEGTables &data); 00038 00039 const unsigned char *GetJPEGData() { return data; } 00040 UDWORD GetJPEGDataSize() { return len; } 00041 00042 private: 00043 unsigned char *data; 00044 gc_vector<unsigned char *> datagc; 00045 UDWORD len; 00046 }; 00047 00048 class FlashTagDefineBitsJPEG2 : public FlashTag, public FlashIDEnabled 00049 { 00050 DEFINE_RW_INTERFACE 00051 FlashTagDefineBitsJPEG2() {} 00052 public: 00053 FlashTagDefineBitsJPEG2(unsigned char *_JPEGdata, UDWORD _len) : data(_JPEGdata), len(_len) {} 00054 00055 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG2 &data); 00056 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsJPEG2 &data); 00057 friend class FlashImporter; 00058 00059 const unsigned char *GetJPEGData() { return data; } 00060 UDWORD GetJPEGDataSize() { return len; } 00061 00062 private: 00063 unsigned char *data; 00064 UDWORD len; 00065 gc_vector<unsigned char *> gc; 00066 }; 00067 00068 class FlashTagDefineBitsJPEG3 : public FlashTag, public FlashIDEnabled 00069 { 00070 DEFINE_RW_INTERFACE 00071 FlashTagDefineBitsJPEG3() {} 00072 public: 00073 FlashTagDefineBitsJPEG3(unsigned char *_JPEGdata, UDWORD _len, unsigned char *_TRANSdata2, UDWORD _len2) : data(_JPEGdata), len(_len), data2(_TRANSdata2), len2(_len2) {} 00074 00075 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG3 &data); 00076 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsJPEG3 &data); 00077 friend class FlashImporter; 00078 00079 const unsigned char *GetJPEGData() { return data; } 00080 UDWORD GetJPEGDataSize() { return len; } 00081 00082 const unsigned char *GetAlphaData() { return data2; } 00083 UDWORD GetAlphaDataSize() { return len2; } 00084 00085 private: 00086 unsigned char *data; 00087 UDWORD len; 00088 unsigned char *data2; 00089 UDWORD len2; 00090 00091 gc_vector<unsigned char *> gc; 00092 }; 00093 00094 class FlashZLibBitmapData 00095 { 00096 FlashZLibBitmapData() {} 00097 public: 00098 FlashZLibBitmapData(unsigned char *_data, UDWORD _len) : withalpha(false), data(_data), len(_len) {} 00099 00100 void AddColor(FlashRGB &r) { colors.push_back(r); } 00101 void SetAlpha(bool a) { withalpha = a; } 00102 bool GetAlpha() { return withalpha; } 00103 UDWORD GetSize() { return colors.size(); } 00104 00105 void Write(std::ostream &out, char format); 00106 void Read(std::istream &in, char format, UDWORD size, UDWORD size_buffer); 00107 00108 const unsigned char *GetData() { return data; } 00109 UDWORD GetDataSize() { return len; } 00110 private: 00111 friend class FlashTagDefineBitsLossless; 00112 friend class FlashTagDefineBitsLossless2; 00113 gc_vector<unsigned char *> gc; 00114 bool withalpha; 00115 UDWORD len; 00116 std::vector<FlashRGB> colors; 00117 00118 unsigned char *data; 00119 }; 00120 00121 class FlashTagDefineBitsLossless : public FlashTag, public FlashIDEnabled 00122 { 00123 DEFINE_RW_INTERFACE 00124 FlashTagDefineBitsLossless() {} 00125 public: 00126 FlashTagDefineBitsLossless(char _format, UWORD _width, UWORD _height, FlashZLibBitmapData &_d) 00127 : format(_format), width(_width), height(_height), d(_d) {} 00128 00129 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsLossless &data); 00130 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsLossless &data); 00131 00132 int GetFormat() { return format; } 00133 UWORD GetWidth() { return width; } 00134 UWORD GetHeight() { return height; } 00135 FlashZLibBitmapData &GetData() { return d; } 00136 00137 private: 00138 char format; 00139 UWORD width; 00140 UWORD height; 00141 FlashZLibBitmapData d; 00142 00143 }; 00144 00145 class FlashTagDefineBitsLossless2 : public FlashTag, public FlashIDEnabled 00146 { 00147 DEFINE_RW_INTERFACE 00148 FlashTagDefineBitsLossless2() {} 00149 public: 00150 friend class FlashImporter; 00151 FlashTagDefineBitsLossless2(char _format, UWORD _width, UWORD _height, FlashZLibBitmapData &_d) 00152 : format(_format), width(_width), height(_height), d(_d) {} 00153 00154 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsLossless2 &data); 00155 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsLossless2 &data); 00156 00157 00158 int GetFormat() { return format; } 00159 UWORD GetWidth() { return width; } 00160 UWORD GetHeight() { return height; } 00161 FlashZLibBitmapData &GetData() { return d; } 00162 00163 private: 00164 char format; 00165 UWORD width; 00166 UWORD height; 00167 FlashZLibBitmapData d; 00168 }; 00169 00170 #endif