include/df/element.hpp

00001 //all coords relative to Parent!
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     //private data
00011     BOOL IsWindow;      //is this a Window
00012     BOOL IsBitmap;      //is this a Bitmap
00013 
00014     Array<Element*> elist; //list of children Element's
00015     //private code
00016     void einit();
00017     void einitvalues();
00018     void attachElement(Element *gfx) {
00019       elist.Seek(0, SEEK_END);  //put at end for TAB to work properly, and draw order too
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     //public data
00032     Window *wParent;    //Window Parent (always valid after Create())
00033     Element *eParent;   //Element Parent (can be NULL)
00034     BOOL bMouseOver;
00035     BOOL bAnyMouseDown; //=bMouseDown | bMouseDown2
00036     BOOL bMouseDown;
00037     BOOL bMouseDown2;
00038     BOOL Valid;         //is a Valid Element Create()ed
00039     uint32 Style;       //WND_... flags
00040     uint32 x, y;        //size
00041     int32 x1, y1, x2, y2;  //relative position to Parent
00042     uint32 xy;          //x*y
00043     uint32 x_1, y_1;    //size -1
00044     uint32 clr;         //colour
00045     uint32 bclr;        //back colour
00046     BOOL inited;        //Init() member called
00047     BOOL nofocus;       //object never receives input focus
00048     BOOL blockEvents;   //Doesn't let events pass thru (default=FALSE)
00049     uint32 xStyle;      //WND_... flags (controls not to pass down to childs)
00050     //ie: WND_ENABLE | WND_VISIBLE | WND_POSITION
00051 
00052     //public code
00053     void Init();  //default init member
00054 
00055     Element();                    //CTOR
00056     ~Element() {Destroy();}       //DTOR
00057 
00058 //virtual members
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);   //move turtle graphics location to (x,y)
00076     virtual void Line(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);  //draw line
00077     virtual void LineDash(int32 x1, int32 y1, int32 x2, int32 y2, uint32 clr);  //draw line dashed
00078     virtual void LineTo(int32 x, int32 y, uint32 clr);     //draw line from turtle loc.
00079     virtual void LineDashTo(int32 x, int32 y, uint32 clr);  //draw line dashed
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); //to pass events to Parent's
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);   //LB mouse down action
00092     virtual void MouseUp(int _x, int _y, int flgs);     //LB mouse up action
00093     virtual void MouseDown2(int _x, int _y, int flgs);  //RB mouse down action
00094     virtual void MouseUp2(int _x, int _y, int flgs);    //RB mouse up action
00095     virtual void Click(int _x, int _y, int flgs);       //LB single click object
00096     virtual void Click2(int _x, int _y, int flgs) {}    //RB single click object
00097     virtual void DblClick(int _x, int _y, int flgs) {}  //LB double click object
00098     virtual void DblClick2(int _x, int _y, int flgs) {} //RB double click object
00099     virtual void Exit() {};                           //[x] clicked
00100     virtual void Draw();                              //Draws window
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     //colour stuff (not palette related)
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();  //moves element to top of Z Order inside Window (DF/1.5.5)
00118 };
00119 
00120 class FindElement {
00121   _PROTECTED_:
00122     uint32 Offset;
00123     int32 Dir;  //direction
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 };

Generated on Mon Mar 5 09:49:14 2007 for DigiForce by  doxygen 1.4.7