Usermode/Build - Updates to build system for crtbegin/crtend
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / renderer_classes.c
index 8e58193..4b0f3c6 100644 (file)
@@ -7,18 +7,63 @@
  */
 #include <common.h>
 #include <wm_renderer.h>
+#include <renderer_classful.h>
+
+// === TYPES ===
+typedef struct sClassfulInfo
+{
+       tColour BGColour;
+} tClassfulInfo;
+
+// === PROTOTYPES ===
+tWindow        *Renderer_Class_Create(int Flags);
+void   Renderer_Class_Redraw(tWindow *Window);
+int    Renderer_Class_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
 
 // === GLOBALS ===
 tWMRenderer    gRenderer_Class = {
+       .Name = "Classful",
        .CreateWindow = Renderer_Class_Create,
        .Redraw = Renderer_Class_Redraw,
-       .SendMessage = Renderer_Class_SendMessage
+       .HandleMessage = Renderer_Class_HandleMessage
 };
 
 // === CODE ===
 int Renderer_Class_Init(void)
 {
+       WM_RegisterRenderer(&gRenderer_Class);  
+
        return 0;
 }
 
+tWindow        *Renderer_Class_Create(int Flags)
+{
+       return WM_CreateWindowStruct(sizeof(tClassfulInfo));
+}
+
+void Renderer_Class_Redraw(tWindow *Window)
+{
+       tClassfulInfo   *info = Window->RendererInfo;
+       WM_Render_FillRect(Window, 0, 0, Window->W, Window->H, info->BGColour);
+}
+
+int Renderer_Class_HandleMessage(tWindow *Target, int Msg, int Len, void *Data)
+{
+       tClassfulInfo   *info = Target->RendererInfo;
+       switch(Msg)
+       {
+       case MSG_CLASSFUL_SETBGCOLOUR:
+               if( Len != sizeof(uint32_t) ) return -1;
+               info->BGColour = *(uint32_t*)Data;
+               return 0;
+
+       case MSG_CLASSFUL_SETTEXT:
+               
+               return -1;
+       
+       // Anything else is unhandled
+       default:
+               return 1;
+       }
+}
 

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