00001 #ifndef FCONTROL_H_FILE
00002 #define FCONTROL_H_FILE
00003
00004 #include "FBase.h"
00005 #include "./md5/md5.h"
00006 #include <vector>
00007 #include <string>
00008
00009
00010 class FlashImportHandler;
00011
00012 class FlashTagDefineBitsPtr : public FlashTag
00013 {
00014 DEFINE_RW_INTERFACE
00015 public:
00016 FlashTagDefineBitsPtr(UDWORD ptr) : ref(ptr){}
00017 UDWORD GetPtr() { return ref; }
00018 void SetPtr(UDWORD ptr) { ref = ptr; }
00019
00020 private:
00021 friend class FlashImportHandler;
00022 FlashTagDefineBitsPtr(){};
00023 UDWORD ref;
00024 friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsPtr &data);
00025 friend std::istream &operator >> (std::istream &in, FlashTagDefineBitsPtr &data);
00026 };
00027
00028 class FlashTagProtect : public FlashTag
00029 {
00030 DEFINE_RW_INTERFACE
00031 public:
00032 friend class FlashImportHandler;
00033 FlashTagProtect() : hasPass(false){}
00034 FlashTagProtect(std::string& password) : hasPass(false)
00035 {
00036 hasPass = true;
00037 md5Pass = crypt_md5(password.c_str(), "Aa");
00038 }
00039
00040 std::string GetEncryptedPassword(){return md5Pass;}
00041
00042 void SetEncryptedPassword(std::string& encPassword){
00043 hasPass = true;
00044 md5Pass = encPassword;
00045 }
00046 void SetPassword(std::string& password)
00047 {
00048 hasPass = true;
00049 md5Pass = crypt_md5(password.c_str(), "Aa");;
00050 }
00051 bool HasPassword() { return hasPass; }
00052 private:
00053 bool hasPass;
00054 std::string md5Pass;
00055
00056 friend class FlashImporter;
00057
00058 friend std::ostream &operator << (std::ostream &out, FlashTagProtect &data);
00059 friend std::istream &operator >> (std::istream &in, FlashTagProtect &data);
00060 };
00061
00062 class FlashTagEnableDebugger : public FlashTag
00063 {
00064 DEFINE_RW_INTERFACE
00065 public:
00066 friend class FlashImportHandler;
00067 FlashTagEnableDebugger() : hasPass(false){}
00068 FlashTagEnableDebugger(std::string& password) : hasPass(false)
00069 {
00070 hasPass = true;
00071 md5Pass = crypt_md5(password.c_str(), "Aa");
00072 }
00073
00074 std::string GetEncryptedPassword(){return md5Pass;}
00075
00076 void SetEncryptedPassword(std::string& encPassword){
00077 hasPass = true;
00078 md5Pass = encPassword;
00079 }
00080 void SetPassword(std::string& password)
00081 {
00082 hasPass = true;
00083 md5Pass = crypt_md5(password.c_str(), "Aa");;
00084 }
00085 bool HasPassword() { return hasPass; }
00086 private:
00087 bool hasPass;
00088
00089
00090 std::string md5Pass;
00091
00092 friend class FlashImporter;
00093
00094 friend std::ostream &operator << (std::ostream &out, FlashTagEnableDebugger &data);
00095 friend std::istream &operator >> (std::istream &in, FlashTagEnableDebugger &data);
00096 };
00097
00098 class FlashTagBackgroundColor : public FlashTag
00099 {
00100 DEFINE_RW_INTERFACE
00101 public:
00102 friend class FlashImportHandler;
00103 FlashTagBackgroundColor(UBYTE _r, UBYTE _g, UBYTE _b) : r(_r), g(_g), b(_b) {}
00104 FlashTagBackgroundColor(FlashRGB &c) { r = (UBYTE)c.GetR(); g= (UBYTE)c.GetG(); b = (UBYTE)c.GetB(); }
00105 ~FlashTagBackgroundColor() {}
00106
00107 FlashRGB GetRGB() { return FlashRGB(r,g,b); }
00108
00109 UBYTE r;
00110 UBYTE g;
00111 UBYTE b;
00112 private:
00113 friend class FlashImporter;
00114 FlashTagBackgroundColor() {}
00115
00116 friend std::ostream &operator << (std::ostream &out, FlashTagBackgroundColor &data);
00117 friend std::istream &operator >> (std::istream &in, FlashTagBackgroundColor &data);
00118 };
00119
00120 class FlashTagLabelFrame : public FlashSpriteEnabled
00121 {
00122 DEFINE_RW_INTERFACE
00123 public:
00124 friend class FlashImportHandler;
00125 FlashTagLabelFrame(char *_str) : str(_str) {}
00126 ~FlashTagLabelFrame() { free(str); }
00127
00128 const char *GetLabel() { return str; }
00129 private:
00130 FlashTagLabelFrame() {}
00131 friend class FlashImporter;
00132
00133 friend std::ostream &operator << (std::ostream &out, FlashTagLabelFrame &data);
00134 friend std::istream &operator >> (std::istream &in, FlashTagLabelFrame &data);
00135
00136 char *str;
00137
00138 gc_vector<char *> gc;
00139 };
00140
00141 DECLARE_SIMPLE_TAG2(FlashTagEnd)
00142
00143 class FlashTagExportAssets : public FlashTag
00144 {
00145 DEFINE_RW_INTERFACE
00146 public:
00147 friend class FlashImportHandler;
00148 FlashTagExportAssets() {}
00149 ~FlashTagExportAssets() {}
00150
00151 void AddAsset(char *str, UWORD id);
00152
00153 unsigned int GetAssetNum() { return assets_str.size(); }
00154 flash_pair<char*, UWORD> GetAsset(long num) { return(flash_pair<char*,UWORD>(assets_str[num],assets_id[num])); }
00155 private:
00156 friend class FlashImporter;
00157 private:
00158 friend std::ostream &operator << (std::ostream &out, FlashTagExportAssets &data);
00159 friend std::istream &operator >> (std::istream &in, FlashTagExportAssets &data);
00160
00161 std::vector <char*> assets_str;
00162 std::vector <UWORD> assets_id;
00163 gc_vector<char *> gc;
00164 };
00165 class FlashTagImportAssets : public FlashTag
00166 {
00167 DEFINE_RW_INTERFACE
00168 FlashTagImportAssets() {}
00169 public:
00170 friend class FlashImportHandler;
00171 FlashTagImportAssets(char *_swfurl) : swfurl(_swfurl) {}
00172 ~FlashTagImportAssets() { }
00173
00174 void AddAsset(char *str, UWORD id);
00175
00176 const char *GetSwfUrl() { return swfurl; }
00177 unsigned int GetAssetNum() { return assets_str.size(); }
00178 flash_pair<char*, UWORD> GetAsset(long num) { return(flash_pair<char*,UWORD>(assets_str[num],assets_id[num])); }
00179 private:
00180 friend class FlashImporter;
00181
00182
00183 private:
00184 friend std::ostream &operator << (std::ostream &out, FlashTagImportAssets &data);
00185 friend std::istream &operator >> (std::istream &in, FlashTagImportAssets &data);
00186
00187 char *swfurl;
00188 std::vector <char*> assets_str;
00189 std::vector <UWORD> assets_id;
00190 gc_vector<char *> gc;
00191 };
00192
00193
00194 class FlashTagFreeCharacter : public FlashTag
00195 {
00196 DEFINE_RW_INTERFACE
00197 FlashTagFreeCharacter() {}
00198 public:
00199 FlashTagFreeCharacter(UWORD _id) { _id = id; }
00200 UWORD GetID(void) const { return id; }
00201 private:
00202 friend class FlashImporter;
00203 friend std::ostream &operator << (std::ostream &out, FlashTagFreeCharacter &data);
00204 friend std::istream &operator >> (std::istream &in, FlashTagFreeCharacter &data);
00205
00206 UWORD id;
00207 };
00208
00209 #endif