Usermode/AxWin3 - Implemented WM_CreateWindow
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / wm.c
index 3b60d1a..355229d 100644 (file)
@@ -7,30 +7,48 @@
  */
 #include <common.h>
 #include <wm_renderer.h>
+#include <stdlib.h>
+#include <string.h>
+
+// === GLOBALS ===
+tWMRenderer    *gpWM_Renderers;
 
 // === CODE ===
 void WM_RegisterRenderer(tWMRenderer *Renderer)
 {
-       UNIMPLEMENTED();
+       // TODO: Catch re-adding the first somehow?
+       if(Renderer->Next)      return;
+       Renderer->Next = gpWM_Renderers;
+       gpWM_Renderers = Renderer;
 }
 
 tWindow *WM_CreateWindow(tWindow *Parent, int Flags, const char *RendererName)
 {
-       UNIMPLEMENTED();
+       tWMRenderer     *renderer;
+       tWindow *ret;
        
        // - Get Renderer
+       for( renderer = gpWM_Renderers; renderer; renderer = renderer->Next )
+       {
+               if(strcmp(RendererName, renderer->Name) == 0)
+                       break;
+       }
+       if(renderer == NULL)
+               return NULL;
 
        // - Call create window function
+       ret = renderer->CreateWindow(Flags);
        
        // - Fill common fields on that
+       ret->Flags = Flags;
        
        // - Return!
-       return NULL;
+       return ret;
 }
 
 tWindow *WM_CreateWindowStruct(size_t ExtraSize)
 {
-       return NULL;
+       return calloc( sizeof(tWindow) + ExtraSize, 1 );
 }
 
 void WM_Render_FilledRect(tWindow *Window, tColour Colour, int X, int Y, int W, int H)

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