From 08a4d247326e7d23207904c482bd189cd64b199e Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Fri, 24 May 2024 00:19:16 +0200 Subject: [PATCH] drawable: add fallback function. --- src/lib/aqdiagram/draw/o_drawable.c | 48 ++++++++++++++++++----------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/lib/aqdiagram/draw/o_drawable.c b/src/lib/aqdiagram/draw/o_drawable.c index 933cc11..d05f2c8 100644 --- a/src/lib/aqdiagram/draw/o_drawable.c +++ b/src/lib/aqdiagram/draw/o_drawable.c @@ -20,6 +20,8 @@ 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); AQDG_Object_SetOptions(object, options); + xo->drawFn=_drawFallback; if (parent && GWEN_INHERIT_ISOFTYPE(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, 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; xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object); - if (xo) { - if (xo->drawFn) - return xo->drawFn(object, g); - else { - AQDG_OBJECT *child; + if (xo && xo->drawFn) + return xo->drawFn(object, g); + } + return 0; +} - AQDG_Draw_Context_DrawFilledRect(g, - 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; - } + + +int _drawFallback(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g) +{ + AQDG_OBJECT_DRAWABLE *xo; + + xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object); + if (xo) { + AQDG_OBJECT *child; + + AQDG_Draw_Context_DrawFilledRect(g, + 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; } @@ -230,3 +241,4 @@ int AQDG_DrawableObject_Draw(AQDG_OBJECT *object, AQDG_DRAW_CONTEXT *g) +