git.ucc.asn.au
/
tpg
/
acess2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dc30fc0
)
Usermode/AxWin3 - Implemented WM_CreateWindow
author
John Hodge
<
[email protected]
>
Fri, 4 Nov 2011 06:04:41 +0000
(14:04 +0800)
committer
John Hodge
<
[email protected]
>
Fri, 4 Nov 2011 06:04:41 +0000
(14:04 +0800)
Usermode/Applications/axwin3_src/WM/include/wm_internals.h
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/include/wm_renderer.h
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/main.c
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/renderer_classes.c
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/renderer_passthru.c
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/renderer_widget.c
patch
|
blob
|
history
Usermode/Applications/axwin3_src/WM/wm.c
patch
|
blob
|
history
diff --git
a/Usermode/Applications/axwin3_src/WM/include/wm_internals.h
b/Usermode/Applications/axwin3_src/WM/include/wm_internals.h
index
43c8db5
..
51c43f3
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/include/wm_internals.h
+++ b/
Usermode/Applications/axwin3_src/WM/include/wm_internals.h
@@
-19,6
+19,8
@@
struct sWindow
tWindow *LastChild;
tWMRenderer *Renderer;
tWindow *LastChild;
tWMRenderer *Renderer;
+
+ int Flags;
int X;
int Y;
int X;
int Y;
@@
-27,6
+29,7
@@
struct sWindow
void *RendererInfo;
void *RendererInfo;
+ void *RenderBuffer; //!< Cached copy of the rendered window
};
#endif
};
#endif
diff --git
a/Usermode/Applications/axwin3_src/WM/include/wm_renderer.h
b/Usermode/Applications/axwin3_src/WM/include/wm_renderer.h
index
8e828eb
..
afed38c
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/include/wm_renderer.h
+++ b/
Usermode/Applications/axwin3_src/WM/include/wm_renderer.h
@@
-25,14
+25,12
@@
struct sWMRenderer
/**
* \brief Initialise a window structure for the renderer
/**
* \brief Initialise a window structure for the renderer
- * \param W Width of the new window
- * \param H Height of the new window
* \param Flags Flags for the window
* \return malloc()'d window structure, or NULL on error
* \param Flags Flags for the window
* \return malloc()'d window structure, or NULL on error
- * \note
Only the fields \a W and \a H need be filled in the window
- * s
tructure, the rest will be filled by the caller
.
+ * \note
\a Flags is provided for convinience, the caller will
+ * s
et the copy in the window structure
.
*/
*/
- tWindow *(*CreateWindow)(int
W, int H, int
Flags);
+ tWindow *(*CreateWindow)(int Flags);
/**
* \brief Redraw a window on the screen
/**
* \brief Redraw a window on the screen
diff --git
a/Usermode/Applications/axwin3_src/WM/main.c
b/Usermode/Applications/axwin3_src/WM/main.c
index
c6a4546
..
0b63a18
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/main.c
+++ b/
Usermode/Applications/axwin3_src/WM/main.c
@@
-13,6
+13,7
@@
// === IMPORTS ===
extern void WM_Update(void);
extern void Video_Setup(void);
// === IMPORTS ===
extern void WM_Update(void);
extern void Video_Setup(void);
+extern int Renderer_Widget_Init(void);
// === PROTOTYPES ===
void ParseCommandline(int argc, char **argv);
// === PROTOTYPES ===
void ParseCommandline(int argc, char **argv);
@@
-53,6
+54,7
@@
int main(int argc, char *argv[])
IPC_Init();
Input_Init();
IPC_Init();
Input_Init();
+ Renderer_Widget_Init();
// WM_Update();
// Spawn interface root
// WM_Update();
// Spawn interface root
diff --git
a/Usermode/Applications/axwin3_src/WM/renderer_classes.c
b/Usermode/Applications/axwin3_src/WM/renderer_classes.c
index
2448c63
..
439adaa
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/renderer_classes.c
+++ b/
Usermode/Applications/axwin3_src/WM/renderer_classes.c
@@
-16,7
+16,7
@@
typedef struct sClassfulInfo
} tClassfulInfo;
// === PROTOTYPES ===
} tClassfulInfo;
// === PROTOTYPES ===
-tWindow *Renderer_Class_Create(int
Width, int Height, int
Flags);
+tWindow *Renderer_Class_Create(int Flags);
void Renderer_Class_Redraw(tWindow *Window);
int Renderer_Class_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
void Renderer_Class_Redraw(tWindow *Window);
int Renderer_Class_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
@@
-36,7
+36,7
@@
int Renderer_Class_Init(void)
return 0;
}
return 0;
}
-tWindow *Renderer_Class_Create(int
Width, int Height, int
Flags)
+tWindow *Renderer_Class_Create(int Flags)
{
return WM_CreateWindowStruct(sizeof(tClassfulInfo));
}
{
return WM_CreateWindowStruct(sizeof(tClassfulInfo));
}
diff --git
a/Usermode/Applications/axwin3_src/WM/renderer_passthru.c
b/Usermode/Applications/axwin3_src/WM/renderer_passthru.c
index
d18dc40
..
6e16e6a
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/renderer_passthru.c
+++ b/
Usermode/Applications/axwin3_src/WM/renderer_passthru.c
@@
-9,7
+9,7
@@
#include <wm_renderer.h>
// === PROTOTYPES ===
#include <wm_renderer.h>
// === PROTOTYPES ===
-tWindow *Renderer_Passthru_Create(int
Width, int Height, int
Flags);
+tWindow *Renderer_Passthru_Create(int Flags);
void Renderer_Passthru_Redraw(tWindow *Window);
int Renderer_Passthru_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
void Renderer_Passthru_Redraw(tWindow *Window);
int Renderer_Passthru_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
@@
-27,7
+27,7
@@
int Renderer_Passthru_Init(void)
return 0;
}
return 0;
}
-tWindow *Renderer_Passthru_Create(int
Width, int Height, int
Flags)
+tWindow *Renderer_Passthru_Create(int Flags)
{
return NULL;
}
{
return NULL;
}
diff --git
a/Usermode/Applications/axwin3_src/WM/renderer_widget.c
b/Usermode/Applications/axwin3_src/WM/renderer_widget.c
index
32d1a97
..
7f0cb0e
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/renderer_widget.c
+++ b/
Usermode/Applications/axwin3_src/WM/renderer_widget.c
@@
-61,7
+61,7
@@
struct sWidgetWin
};
// === PROTOTYPES ===
};
// === PROTOTYPES ===
-tWindow *Renderer_Widget_Create(int
Width, int Height, int
Flags);
+tWindow *Renderer_Widget_Create(int Flags);
void Renderer_Widget_Redraw(tWindow *Window);
int Renderer_Widget_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
void Renderer_Widget_Redraw(tWindow *Window);
int Renderer_Widget_HandleMessage(tWindow *Target, int Msg, int Len, void *Data);
@@
-81,7
+81,7
@@
int Renderer_Widget_Init(void)
return 0;
}
return 0;
}
-tWindow *Renderer_Widget_Create(int
Width, int Height, int
Flags)
+tWindow *Renderer_Widget_Create(int Flags)
{
// TODO: Add info
return WM_CreateWindowStruct( sizeof(tWidgetWin) );
{
// TODO: Add info
return WM_CreateWindowStruct( sizeof(tWidgetWin) );
diff --git
a/Usermode/Applications/axwin3_src/WM/wm.c
b/Usermode/Applications/axwin3_src/WM/wm.c
index
3b60d1a
..
355229d
100644
(file)
--- a/
Usermode/Applications/axwin3_src/WM/wm.c
+++ b/
Usermode/Applications/axwin3_src/WM/wm.c
@@
-7,30
+7,48
@@
*/
#include <common.h>
#include <wm_renderer.h>
*/
#include <common.h>
#include <wm_renderer.h>
+#include <stdlib.h>
+#include <string.h>
+
+// === GLOBALS ===
+tWMRenderer *gpWM_Renderers;
// === CODE ===
void WM_RegisterRenderer(tWMRenderer *Renderer)
{
// === 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)
{
}
tWindow *WM_CreateWindow(tWindow *Parent, int Flags, const char *RendererName)
{
- UNIMPLEMENTED();
+ tWMRenderer *renderer;
+ tWindow *ret;
// - Get Renderer
// - 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
// - Call create window function
+ ret = renderer->CreateWindow(Flags);
// - Fill common fields on that
// - Fill common fields on that
+ ret->Flags = Flags;
// - Return!
// - Return!
- return
NULL
;
+ return
ret
;
}
tWindow *WM_CreateWindowStruct(size_t ExtraSize)
{
}
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)
}
void WM_Render_FilledRect(tWindow *Window, tColour Colour, int X, int Y, int W, int H)
UCC
git Repository :: git.ucc.asn.au