165d38a97602ca6a982b35c0eaaa440e1ededa25
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / include / wm_renderer.h
1 /*
2 * Acess2 Window Manager v3 (axwin3)
3 * - By John Hodge (thePowersGang)
4 *
5 * include/wm_renderer.h
6 * - Window renderer API
7 */
8 #ifndef _WM_RENDERER_H_
9 #define _WM_RENDERER_H_
10
11 #include <wm.h>
12
13 struct sWMRenderer
14 {
15         /**
16          * \brief Internal pointer to next loaded renderer
17          */
18         struct sWMRenderer      *Next;
19
20         /**
21          * \brief Renderer name / identifier
22          */
23         const char      *Name;
24
25         /**
26          * \brief Initialise a window structure for the renderer
27          * \param W     Width of the new window
28          * \param H     Height of the new window
29          * \param Flags Flags for the window
30          * \return malloc()'d window structure, or NULL on error
31          * \note Only the fields \a W and \a H need be filled in the window
32          *       structure, the rest will be filled by the caller.
33          */
34         tWindow *(*CreateWindow)(int W, int H, int Flags);
35
36         /**
37          * \brief Redraw a window on the screen
38          * \param Window        Window to render
39          * 
40          * Called when a window needs to be re-rendered, e.g. when it is uncovered or
41          * repositioned.
42          *
43          * \todo List all conditions for Redraw
44          */
45         void    (*Redraw)(tWindow *Window);
46         
47         /**
48          * \brief Handle a message sent to the window using WM_SendMessage
49          * \param Window        Target window
50          * \param MessageID     Implementation defined message ID (usually the command)
51          * \param Length        Length of the buffer \a Data
52          * \param Data          Implementation defined data buffer
53          */
54          int    (*HandleMessage)(tWindow *Window, int MessageID, int Length, void *Data);
55 };
56
57 extern void     WM_RegisterRenderer(tWMRenderer *Renderer);
58 extern tWindow  *WM_CreateWindowStruct(size_t ExtraBytes);
59
60 #endif

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