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