afed38c61b1a6ebf75ebc209334de5e013532993
[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 #include <wm_internals.h>
13
14 struct sWMRenderer
15 {
16         /**
17          * \brief Internal pointer to next loaded renderer
18          */
19         struct sWMRenderer      *Next;
20
21         /**
22          * \brief Renderer name / identifier
23          */
24         const char      *Name;
25
26         /**
27          * \brief Initialise a window structure for the renderer
28          * \param Flags Flags for the window
29          * \return malloc()'d window structure, or NULL on error
30          * \note \a Flags is provided for convinience, the caller will
31          *       set the copy in the window structure.
32          */
33         tWindow *(*CreateWindow)(int Flags);
34
35         /**
36          * \brief Redraw a window on the screen
37          * \param Window        Window to render
38          * 
39          * Called when a window needs to be re-rendered, e.g. when it is uncovered or
40          * repositioned.
41          *
42          * \todo List all conditions for Redraw
43          */
44         void    (*Redraw)(tWindow *Window);
45         
46         /**
47          * \brief Handle a message sent to the window using WM_SendMessage
48          * \param Window        Target window
49          * \param MessageID     Implementation defined message ID (usually the command)
50          * \param Length        Length of the buffer \a Data
51          * \param Data          Implementation defined data buffer
52          * \return Boolean failure (0: Handled, 1: Unhandled)
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