00001 #ifndef FBUTTON_H_FILE 00002 #define FBUTTON_H_FILE 00003 00004 00005 #include <vector> 00006 00007 #include "FBase.h" 00008 #include "FShape.h" 00009 #include "FAction.h" 00010 00011 #define FBR_HIT_TEST (1<<3) 00012 #define FBR_DOWN (1<<2) 00013 #define FBR_OVER (1<<1) 00014 #define FBR_UP (1) 00015 00016 00017 class FlashTagDefineButton; 00018 class FlashTagDefineButton2; 00019 00020 class FlashButtonRecord : public FlashVersionEnabled 00021 { 00022 DEFINE_RW_INTERFACE 00023 public: 00024 FlashButtonRecord(UWORD _charID, UWORD _depth, char _validstates, FlashMatrix &_matrix, 00025 FlashColorTransform &_cfx); 00026 00027 friend std::ostream &operator<< (std::ostream &out, FlashButtonRecord &data); 00028 friend std::istream &operator>> (std::istream &in, FlashButtonRecord &data); 00029 00030 private: 00031 FlashButtonRecord() {} 00032 00033 friend std::istream &operator>> (std::istream &in, FlashTagDefineButton &data); 00034 friend std::istream &operator>> (std::istream &in, FlashTagDefineButton2 &data); 00035 00036 UWORD charID; 00037 UWORD depth; 00038 char validstates; 00039 FlashMatrix matrix; 00040 FlashColorTransform cfx; 00041 }; 00042 00043 class FlashTagDefineButton : public FlashTag, public FlashIDEnabled 00044 { 00045 DEFINE_RW_INTERFACE 00046 public: 00047 FlashTagDefineButton() {} 00048 ~FlashTagDefineButton() { } 00049 00050 void AddButtonRecord(FlashButtonRecord *r); 00051 void AddActionRecord(FlashActionRecord *r); 00052 private: 00053 friend std::ostream &operator<< (std::ostream &out, FlashTagDefineButton &data); 00054 friend std::istream &operator>> (std::istream &in, FlashTagDefineButton &data); 00055 00056 std::vector<FlashButtonRecord*> buttonrecords; 00057 std::vector<FlashActionRecord*> actionrecords; 00058 00059 gc_vector<FlashButtonRecord*> gcbuttonrecords; 00060 gc_vector<FlashActionRecord*> gcactionrecords; 00061 00062 00063 }; 00064 00065 class FlashTagDefineButton2 : public FlashTag, public FlashIDEnabled 00066 { 00067 DEFINE_RW_INTERFACE 00068 public: 00069 FlashTagDefineButton2(bool _menu) : menu(_menu) {} 00070 ~FlashTagDefineButton2(); 00071 void AddButtonRecord(FlashButtonRecord *r); 00072 void AddActionRecords(std::vector<FlashActionRecord *> &r, UWORD conditionflags); 00073 private: 00074 friend std::ostream &operator<< (std::ostream &out, FlashTagDefineButton2 &data); 00075 friend std::istream &operator>> (std::istream &in, FlashTagDefineButton2 &data); 00076 00077 bool menu; 00078 std::vector<FlashButtonRecord *> buttonrecords; 00079 00080 std::vector<flash_pair<std::vector<FlashActionRecord*>, UWORD> > actionrecords; 00081 00082 gc_vector<FlashButtonRecord*> gcbuttonrecords; 00083 gc_vector<FlashActionRecord*> gcactionrecords; 00084 00085 }; 00086 #endif