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 RendererArg, 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(RendererArg);
45 tWindow *WM_CreateWindowStruct(size_t ExtraSize)
47 return calloc( sizeof(tWindow) + ExtraSize, 1 );
52 // - Iterate through visible windows, updating them as needed
54 // - Draw windows from back to front to the render buffer
56 // - Blit the buffer to the screen
59 void WM_Render_FilledRect(tWindow *Window, tColour Colour, int X, int Y, int W, int H)
61 // Clip to window dimensions
62 if(X < 0) { W += X; X = 0; }
63 if(Y < 0) { H += Y; Y = 0; }
64 if(X >= Window->W) return;
65 if(Y >= Window->H) return;
66 if(X + W > Window->W) W = Window->W - X;
67 if(Y + H > Window->H) H = Window->H - Y;