drawable: add fallback function.

This commit is contained in:
Martin Preuss
2024-05-24 00:19:16 +02:00
parent b20c0f9901
commit 08a4d24732

View File

@@ -20,6 +20,8 @@
static GWENHYWFAR_CB void _freeData(void *bp, void *p); static GWENHYWFAR_CB void _freeData(void *bp, void *p);
static int _drawFallback(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g);
/* ------------------------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------------------------
@@ -41,6 +43,7 @@ AQDG_OBJECT *AQDG_DrawableObject_new(AQDG_OBJECT *parent, uint32_t options)
GWEN_INHERIT_SETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object, xo, _freeData); GWEN_INHERIT_SETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object, xo, _freeData);
AQDG_Object_SetOptions(object, options); AQDG_Object_SetOptions(object, options);
xo->drawFn=_drawFallback;
if (parent && GWEN_INHERIT_ISOFTYPE(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, parent)) { if (parent && GWEN_INHERIT_ISOFTYPE(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, parent)) {
xo->fontId=AQDG_DrawableObject_GetFontId(parent); xo->fontId=AQDG_DrawableObject_GetFontId(parent);
@@ -198,26 +201,34 @@ int AQDG_DrawableObject_Draw(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g)
AQDG_OBJECT_DRAWABLE *xo; AQDG_OBJECT_DRAWABLE *xo;
xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object); xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object);
if (xo) { if (xo && xo->drawFn)
if (xo->drawFn) return xo->drawFn(object, g);
return xo->drawFn(object, g); }
else { return 0;
AQDG_OBJECT *child; }
AQDG_Draw_Context_DrawFilledRect(g,
xo->backgroundPenId,
AQDG_Object_GetAbsoluteX(object), int _drawFallback(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g)
AQDG_Object_GetAbsoluteY(object), {
AQDG_Object_GetWidth(object), AQDG_OBJECT_DRAWABLE *xo;
AQDG_Object_GetHeight(object));
child=AQDG_Object_Tree2_GetFirstChild(object); xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object);
while(child) { if (xo) {
AQDG_DrawableObject_Draw(child, g); AQDG_OBJECT *child;
child=AQDG_Object_Tree2_GetNext(child);
} AQDG_Draw_Context_DrawFilledRect(g,
return 1; xo->backgroundPenId,
} AQDG_Object_GetAbsoluteX(object),
AQDG_Object_GetAbsoluteY(object),
AQDG_Object_GetWidth(object),
AQDG_Object_GetHeight(object));
child=AQDG_Object_Tree2_GetFirstChild(object);
while(child) {
AQDG_DrawableObject_Draw(child, g);
child=AQDG_Object_Tree2_GetNext(child);
} }
return 1;
} }
return 0; return 0;
} }
@@ -230,3 +241,4 @@ int AQDG_DrawableObject_Draw(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g)