Usermode/AxWin3 - Added window invalidation, sub-windows render now
[tpg/acess2.git] / Usermode / Applications / axwin3_src / libaxwin3.so_src / r_widget.c
1 /*
2  * AxWin3 Interface Library
3  * - By John Hodge (thePowersGang)
4  *
5  * main.c
6  * - Entrypoint and setup
7  */
8 #include <axwin3/axwin.h>
9 #include <axwin3/widget.h>
10 #include "include/internal.h"
11 #include <stdlib.h>
12
13 // === STRUCTURES ===
14 struct sAxWin3_Widget
15 {
16         tHWND   Window;
17         uint32_t        ID;
18         tAxWin3_Widget_Callback Callback;
19 };
20
21 typedef struct
22 {
23          int    nElements;
24         tAxWin3_Widget  **Elements;
25         // Callbacks for each element
26 } tWidgetWindowInfo;
27
28 // === CODE ===
29 int AxWin3_Widget_MessageHandler(tHWND Window, int Size, void *Data)
30 {
31         return 0;
32 }
33
34 tHWND AxWin3_Widget_CreateWindow(tHWND Parent, int W, int H, int RootEleFlags)
35 {
36         tHWND   ret;
37         tWidgetWindowInfo       *info;
38         
39         ret = AxWin3_CreateWindow(
40                 Parent, "Widget", RootEleFlags,
41                 sizeof(*info) + sizeof(tAxWin3_Widget), AxWin3_Widget_MessageHandler
42                 );
43         info = AxWin3_int_GetDataPtr(ret);
44
45         info->nElements = 1;
46         info->Elements = malloc(sizeof(tAxWin3_Widget*));
47         info->Elements[0] = (void*)(info + 1);  // Get end of *info
48
49         AxWin3_ResizeWindow(ret, W, H);
50         
51         return ret;
52 }
53
54 void AxWin3_Widget_DestroyWindow(tHWND Window)
55 {
56         // Free all element structures
57         
58         // Free array
59         
60         // Request window to be destroyed (will clean up any data stored in tHWND)
61 }
62
63 tAxWin3_Widget *AxWin3_Widget_GetRoot(tHWND Window)
64 {
65         tWidgetWindowInfo       *info = AxWin3_int_GetDataPtr(Window);
66         return info->Elements[0];
67 }
68
69 tAxWin3_Widget *AxWin3_Widget_AddWidget(tAxWin3_Widget *Parent, int Type, int Flags, const char *DebugName)
70 {
71         // Assign ID
72         
73         return NULL;
74 }

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