38dc1ac5f90f011f521fa0a3952a9d016da6707e
[tpg/acess2.git] / Usermode / Applications / axwin2_src / WM / wm.h
1
2 #ifndef _WM_H_
3 #define _WM_H_
4
5 typedef struct sElement
6 {
7          int    Type;
8         
9         struct sElement *Parent;
10         struct sElement *FirstChild;
11         struct sElement *LastChild;
12         struct sElement *NextSibling;
13         
14         
15         short   CachedX;
16         short   CachedY;
17         short   CachedW;
18         short   CachedH;
19         
20         short   Size;   // Size attribute
21         
22         char    *Text;
23         void    *Data;
24         
25         uint32_t        Flags;
26 }       tElement;
27
28 typedef struct sTab
29 {
30          int    Type;   // Should be zero, allows a tab to be the parent of an element
31         
32         struct sElement *Parent;
33         struct sElement *FirstChild;
34         struct sElement *LastChild;
35         
36         char    *Name;
37         
38         tElement        *RootElement;
39 }       tTab;
40
41 typedef struct sApplication
42 {
43         pid_t   PID;
44         
45          int    nTabs;
46         tTab    *Tabs;
47         
48         char    Name[];
49 }       tApplication;
50
51 // === CONSTANTS ===
52 enum eElementFlags
53 {
54         ELEFLAG_VISIBLE     = 0x001,    ELEFLAG_INVISIBLE   = 0x000,
55         ELEFLAG_VERTICAL    = 0x002,    ELEFLAG_HORIZONTAL  = 0x000,
56         ELEFLAG_WRAP        = 0x004,    ELEFLAG_NOWRAP      = 0x000,
57 };
58 /**
59  */
60 enum eElementTypes
61 {
62         ELETYPE_NONE,
63         
64         ELETYPE_BOX,    //!< Content box
65         ELETYPE_TABBAR, //!< Tab Bar
66         ELETYPE_TOOLBAR,        //!< Tool Bar
67         
68         ELETYPE_BUTTON, //!< Push Button
69         ELETYPE_TEXT,   //!< Text
70         
71         ELETYPE_SPACER, //!< Visual Spacer
72         ELETYPE_GAP,    //!< Alignment Gap
73         
74         NUM_ELETYPES
75 };
76
77 // === FUNCTIONS ===
78 /**
79  * \brief Create a new element as a child of \a Parent
80  */
81 extern tElement *WM_CreateElement(tElement *Parent, int Type, int Flags);
82 extern void     WM_SetFlags(tElement *Element, int Flags);
83 extern void     WM_SetSize(tElement *Element, int Size);
84 extern void     WM_SetText(tElement *Element, char *Text);
85
86 #endif

UCC git Repository :: git.ucc.asn.au