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