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