AxWin2 - More fiddling, almost ready now :)
[tpg/acess2.git] / Usermode / Applications / axwin2_src / WM / wm.h
index 8de9e20..ab2a629 100644 (file)
@@ -7,35 +7,47 @@
 #include <axwin2/axwin.h>
 #include "common.h"
 
+/**
+ * \brief Number of elements that can be owned by each application
+ */
+// TODO: Fine tune these values
+#define MAX_ELEMENTS_PER_APP   1024
+#define DEFAULT_ELEMENTS_PER_APP       128
+
 typedef struct sAxWin_Element  tElement;
-typedef struct sTab    tTab;
 typedef struct sApplication    tApplication;
 
 struct sAxWin_Element
 {
-        int    Type;
+       enum eElementTypes      Type;
        
+       // Element Tree
        tElement        *Parent;
        tElement        *FirstChild;
        tElement        *LastChild;
        tElement        *NextSibling;
        
+       // Application
+       tApplication    *Owner; //!< Owning application
+       uint16_t        ApplicationID;  //!< Index into sApplication::EleIndex
+
+       // User modifiable attributes   
        short   PaddingL, PaddingR;
        short   PaddingT, PaddingB;
        short   GapSize;
        
-       short   FixedWith;      // Fixed Long Size attribute (height)
-       short   FixedCross;     // Fixed Cross Size attribute (width)
+       uint32_t        Flags;
+       
+       short   FixedWith;      //!< Fixed Long Size attribute (height)
+       short   FixedCross;     //!< Fixed Cross Size attribute (width)
        
        char    *Text;
        
        // -- Attributes maitained by the element code
        // Not touched by the user
-       short   MinWith;        // Minimum long size
-       short   MinCross;       // Minimum cross size
-       void    *Data;
-       
-       uint32_t        Flags;
+       short   MinWith;        //!< Minimum long size
+       short   MinCross;       //!< Minimum cross size
+       void    *Data;  //!< Per-type data
        
        // -- Render Cache
        short   CachedX, CachedY;
@@ -44,32 +56,28 @@ struct sAxWin_Element
        char    DebugName[];
 };
 
-struct sTab
+struct sApplication
 {
-        int    Type;   // Should be zero, allows a tab to be the parent of an element
+       tApplication    *Next;
+
+       tIPC_Type       *IPCType;
+       void    *Ident; //!< Client Identifier
        
-       tElement        *Parent;
-       tElement        *FirstChild;
-       tElement        *LastChild;
-       tTab    *NextTab;
+       char    *Name;  //!< Application name
        
-       char    *Name;
+        int    MaxElementIndex;        //!< Number of entries in \a EleIndex
+       tElement        **EleIndex;     //!< Array of pointers to elements owned by this application
        
-       tElement        *RootElement;
+       tElement        MetaElement;    //!< Windows child off this
 };
 
-struct sApplication
-{
-       tApplication    *Next;  
+// === FUNCTIONS ===
 
-       void    *Ident;
-       tMessages_Handle_Callback       *SendMessage;
-       
-        int    nTabs;
-       tTab    *Tabs;
-       tTab    *CurrentTab;
-       
-       char    Name[];
-};
+// --- Render
+extern void    WM_UpdateMinDims(tElement *Element);
+extern void    WM_UpdateDimensions(tElement *Element, int Pass);
+extern void    WM_UpdatePosition(tElement *Element);
+extern void    WM_RenderWidget(tElement *Element);
+extern void    WM_Update(void);
 
 #endif

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