2 * Acess2 Window Manager v3
3 * - By John Hodge (thePowersGang)
6 * - Window manager core
9 #include <wm_renderer.h>
14 tWMRenderer *gpWM_Renderers;
17 void WM_RegisterRenderer(tWMRenderer *Renderer)
19 // TODO: Catch out duplicates
20 Renderer->Next = gpWM_Renderers;
21 gpWM_Renderers = Renderer;
24 tWindow *WM_CreateWindow(tWindow *Parent, int Flags, const char *RendererName)
26 tWMRenderer *renderer;
30 for( renderer = gpWM_Renderers; renderer; renderer = renderer->Next )
32 if(strcmp(RendererName, renderer->Name) == 0)
38 // - Call create window function
39 ret = renderer->CreateWindow(Flags);
41 // - Fill common fields on that
48 tWindow *WM_CreateWindowStruct(size_t ExtraSize)
50 return calloc( sizeof(tWindow) + ExtraSize, 1 );
55 // - Iterate through visible windows, updating them as needed
57 // - Draw windows from back to front to the render buffer
59 // - Blit the buffer to the screen
62 void WM_Render_FilledRect(tWindow *Window, tColour Colour, int X, int Y, int W, int H)
64 // Clip to window dimensions
65 if(X < 0) { W += X; X = 0; }
66 if(Y < 0) { H += Y; Y = 0; }
67 if(X >= Window->W) return;
68 if(Y >= Window->H) return;
69 if(X + W > Window->W) W = Window->W - X;
70 if(Y + H > Window->H) H = Window->H - Y;