00001
00002
00003 class Element : public SystemCode {
00004 friend class Window;
00005 friend class Bitmap;
00006 friend class Font;
00007 friend class FindElement;
00008 friend class ComboBox;
00009 _PROTECTED_:
00010
00011 BOOL IsWindow;
00012 BOOL IsBitmap;
00013
00014 Array<Element*> elist;
00015
00016 void einit();
00017 void einitvalues();
00018 void attachElement(Element *gfx) {
00019 elist.Seek(0, SEEK_END);
00020 elist.Insert(&gfx);
00021 }
00022 BOOL detachElement(Element *gfx) {
00023 int offset = elist.Find(&gfx);
00024 if (offset == -1) return FALSE;
00025 elist.Seek(offset, SEEK_SET);
00026 elist.Delete();
00027 return TRUE;
00028 }
00029
00030 public:
00031
00032 Window *wParent;
00033 Element *eParent;
00034 BOOL bMouseOver;
00035 BOOL bAnyMouseDown;
00036 BOOL bMouseDown;
00037 BOOL bMouseDown2;
00038 BOOL Valid;
00039 uint32 Style;
00040 uint32 x, y;
00041 int32 x1, y1, x2, y2;
00042 uint32 xy;
00043 uint32 x_1, y_1;
00044 uint32 clr;
00045 uint32 bclr;
00046 BOOL inited;
00047 BOOL nofocus;
00048 BOOL blockEvents;
00049 uint32 xStyle;
00050
00051
00052
00053 void Init();
00054
00055 Element();
00056 ~Element() {Destroy();}
00057
00058
00059 virtual void SetPos(int, int);
00060 virtual void SetSize(uint32, uint32);
00061 virtual void GetSize(uint32 *_x, uint32 *_y);
00062 virtual void GetPos(int *_x, int *_y);
00063 virtual void SetPosSize(int _px, int _py, uint _sx, uint _sy);
00064 virtual void Enable();
00065 virtual void Disable();
00066 virtual BOOL Create(int _xpos, int _ypos, int _x, int _y, int _Style, Element *_Parent);
00067 virtual void Destroy();
00068 virtual void Show();
00069 virtual void Hide();
00070 virtual void FlagFlip();
00071 virtual void FlagFlip(int _x1, int _y1, int _x2, int _y2);
00072 virtual void FlagDraw();
00073 virtual void FlagDraw(int _x1, int _y1, int _x2, int _y2);
00074 virtual void FlagEvent();
00075 virtual void MoveTo(int32 x, int32 y);
00076 virtual void Line(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);
00077 virtual void LineDash(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);
00078 virtual void LineTo(int32 x, int32 y, uint32 clr);
00079 virtual void LineDashTo(int32 x, int32 y, uint32 clr);
00080 virtual void PutPixel(int32 x, int32 y, uint32 clr);
00081 virtual uint32 GetPixel(int32 x, int32 y);
00082 virtual void Box(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);
00083 virtual void BoxDash(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);
00084 virtual void BoxFill(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);
00085 virtual BOOL DispatchEvent(Element *id, int msg, int x, int y, int flgs);
00086 virtual void GetFocus();
00087 virtual void KeyDown(int keycode);
00088 virtual void KeyUp(int keycode);
00089 virtual void GetKey(char keychar);
00090 virtual void MouseOver(int x, int y, int flgs);
00091 virtual void MouseDown(int _x, int _y, int flgs);
00092 virtual void MouseUp(int _x, int _y, int flgs);
00093 virtual void MouseDown2(int _x, int _y, int flgs);
00094 virtual void MouseUp2(int _x, int _y, int flgs);
00095 virtual void Click(int _x, int _y, int flgs);
00096 virtual void Click2(int _x, int _y, int flgs) {}
00097 virtual void DblClick(int _x, int _y, int flgs) {}
00098 virtual void DblClick2(int _x, int _y, int flgs) {}
00099 virtual void Exit() {};
00100 virtual void Draw();
00101 virtual void LostFocus();
00102 virtual void SetFocus() {GetFocus();}
00103 virtual void SetClipping();
00104 virtual void SetClipping(uint32, uint32, uint32, uint32);
00105 virtual void GetClipping(uint32*, uint32*, uint32*, uint32*);
00106 virtual uint32 MakePixel(uint32 clr) {return clr;}
00107
00108
00109 void SetClr(uint32 _clr) {clr = _clr;}
00110 uint32 GetClr() {return clr;}
00111 void SetBackClr(uint32 _clr) {bclr = _clr;}
00112 uint32 GetBackClr() { return bclr;}
00113
00114 void SetGUIClr(uint32, uint32);
00115 uint32 GetGUIClr(uint32);
00116
00117 BOOL SetTopZOrder();
00118 };
00119
00120 class FindElement {
00121 _PROTECTED_:
00122 uint32 Offset;
00123 int32 Dir;
00124 Array<Element*> *list;
00125 BOOL Eol;
00126 public:
00127 void Start(Array<Element*> *list, BOOL rev = FALSE);
00128 Element *Find(int _x, int _y, int flgs = (WND_VISIBLE | WND_ENABLED));
00129 Element *Find(int _x, int _y, BOOL &inside, int flgs = (WND_VISIBLE | WND_ENABLED));
00130 Element *Find( int flgs = (WND_VISIBLE | WND_ENABLED));
00131 };