Skip to content

Commit

Permalink
libcommon|Refactor: Split UIWidget order flags out of group flags
Browse files Browse the repository at this point in the history
  • Loading branch information
danij-deng committed Jan 31, 2012
1 parent b5c0d34 commit 308e050
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 40 deletions.
25 changes: 19 additions & 6 deletions doomsday/plugins/common/include/hu_lib.h
Expand Up @@ -870,18 +870,31 @@ void UIWidget_SetMaximumSize(uiwidget_t* obj, const Size2Raw* size);
void UIWidget_SetMaximumWidth(uiwidget_t* obj, int width);

/**
* @defgroup uiWidgetGroupFlags UI Widget Group Flags.
* @defgroup orderFlags Order Flags
*/
/*@{*/
#define UWGF_LEFTTORIGHT 0x0001
#define UWGF_RIGHTTOLEFT 0x0002
///@{
#define ORDER_LEFTTORIGHT 0x0001
#define ORDER_RIGHTTOLEFT 0x0002
///@}

/**
* @defgroup uiWidgetGroupFlags UIWidget Group Flags
*/
///@{
#define UWGF_VERTICAL 0x0004
/*@}*/
///@}

typedef struct {
/// @ref orderFlags
int orderFlags;

/// @ref uiWidgetGroupFlags
int flags;

int padding;

int widgetIdCount;

uiwidgetid_t* widgetIds;
} guidata_group_t;

Expand Down Expand Up @@ -1069,7 +1082,7 @@ uiwidgetid_t GUI_CreateWidget(guiwidgettype_t type, int player, int alignFlags,
void (*updateGeometry) (uiwidget_t* obj), void (*drawer) (uiwidget_t* obj, const Point2Raw* offset),
void (*ticker) (uiwidget_t* obj, timespan_t ticLength), void* typedata);

uiwidgetid_t GUI_CreateGroup(int groupFlags, int player, int alignFlags, int padding);
uiwidgetid_t GUI_CreateGroup(int groupFlags, int player, int alignFlags, int orderFlags, int padding);

typedef struct ui_rendstate_s {
float pageAlpha;
Expand Down
7 changes: 4 additions & 3 deletions doomsday/plugins/common/src/hu_lib.c
Expand Up @@ -276,7 +276,7 @@ uiwidgetid_t GUI_CreateWidget(guiwidgettype_t type, int player, int alignFlags,
return obj->id;
}

uiwidgetid_t GUI_CreateGroup(int groupFlags, int player, int alignFlags, int padding)
uiwidgetid_t GUI_CreateGroup(int groupFlags, int player, int alignFlags, int orderFlags, int padding)
{
uiwidget_t* obj;
guidata_group_t* grp;
Expand All @@ -285,6 +285,7 @@ uiwidgetid_t GUI_CreateGroup(int groupFlags, int player, int alignFlags, int pad
obj = createWidget(GUI_GROUP, player, alignFlags, 1, 0, UIGroup_UpdateGeometry, NULL, NULL, NULL);
grp = (guidata_group_t*)obj->typedata;
grp->flags = groupFlags;
grp->orderFlags = orderFlags;
grp->padding = padding;

return obj->id;
Expand Down Expand Up @@ -400,14 +401,14 @@ void UIGroup_UpdateGeometry(uiwidget_t* obj)
childGeometry = UIWidget_Geometry(child);
if(Rect_Width(childGeometry) > 0 && Rect_Height(childGeometry) > 0)
{
if(grp->flags & UWGF_RIGHTTOLEFT)
if(grp->orderFlags & ORDER_RIGHTTOLEFT)
{
if(!(grp->flags & UWGF_VERTICAL))
x -= Rect_Width(childGeometry) + grp->padding;
else
y -= Rect_Height(childGeometry) + grp->padding;
}
else if(grp->flags & UWGF_LEFTTORIGHT)
else if(grp->orderFlags & ORDER_LEFTTORIGHT)
{
if(!(grp->flags & UWGF_VERTICAL))
x += Rect_Width(childGeometry) + grp->padding;
Expand Down
17 changes: 9 additions & 8 deletions doomsday/plugins/jdoom/src/st_stuff.c
Expand Up @@ -2880,6 +2880,7 @@ void ST_BuildWidgets(int player)
typedef struct {
int group;
int alignFlags;
int orderFlags;
int groupFlags;
int padding;
} uiwidgetgroupdef_t;
Expand All @@ -2899,13 +2900,13 @@ typedef struct {
const uiwidgetgroupdef_t widgetGroupDefs[] = {
{ UWG_STATUSBAR, ALIGN_BOTTOM },
{ UWG_MAPNAME, ALIGN_BOTTOMLEFT },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMLEFT2, ALIGN_BOTTOMLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOMLEFT, UWGF_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOPLEFT, UWGF_VERTICAL|UWGF_LEFTTORIGHT, PADDING },
{ UWG_COUNTERS, ALIGN_LEFT, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_BOTTOMLEFT2, ALIGN_BOTTOMLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, ORDER_RIGHTTOLEFT, 0, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOMLEFT, ORDER_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT, UWGF_VERTICAL, PADDING },
{ UWG_COUNTERS, ALIGN_LEFT, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_AUTOMAP, ALIGN_TOPLEFT }
};
const uiwidgetdef_t widgetDefs[] = {
Expand Down Expand Up @@ -2958,7 +2959,7 @@ typedef struct {
for(i = 0; i < sizeof(widgetGroupDefs)/sizeof(widgetGroupDefs[0]); ++i)
{
const uiwidgetgroupdef_t* def = &widgetGroupDefs[i];
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->padding);
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->orderFlags, def->padding);
}

UIGroup_AddWidget(GUI_MustFindObjectById(hud->widgetGroupIds[UWG_BOTTOMLEFT]),
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/jdoom64/src/st_stuff.c
Expand Up @@ -799,7 +799,7 @@ void ST_BuildWidgets(int player)
for(i = 0; i < sizeof(widgetGroupDefs)/sizeof(widgetGroupDefs[0]); ++i)
{
const uiwidgetgroupdef_t* def = &widgetGroupDefs[i];
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->padding);
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, 0, def->padding);
}

hud->automapWidgetId = GUI_CreateWidget(GUI_AUTOMAP, player, 0, FID(GF_FONTB), 1, UIAutomap_UpdateGeometry, UIAutomap_Drawer, UIAutomap_Ticker, &hud->automap);
Expand Down
23 changes: 12 additions & 11 deletions doomsday/plugins/jheretic/src/st_stuff.c
Expand Up @@ -2732,6 +2732,7 @@ void ST_BuildWidgets(int player)
typedef struct {
int group;
int alignFlags;
int orderFlags;
int groupFlags;
int padding; // In fixed 320x200 pixels.
} uiwidgetgroupdef_t;
Expand All @@ -2751,16 +2752,16 @@ typedef struct {
const uiwidgetgroupdef_t widgetGroupDefs[] = {
{ UWG_STATUSBAR, ALIGN_BOTTOM },
{ UWG_MAPNAME, ALIGN_BOTTOMLEFT },
{ UWG_TOP, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOP, UWGF_VERTICAL|UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPLEFT, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPRIGHT, ALIGN_TOPRIGHT, UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMLEFT2, ALIGN_BOTTOMLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOMLEFT, UWGF_LEFTTORIGHT },
{ UWG_COUNTERS, ALIGN_LEFT, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_TOP, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOP, ORDER_LEFTTORIGHT, UWGF_VERTICAL, PADDING },
{ UWG_TOPLEFT, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_TOPRIGHT, ALIGN_TOPRIGHT, ORDER_RIGHTTOLEFT, 0, PADDING },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_BOTTOMLEFT2, ALIGN_BOTTOMLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, ORDER_RIGHTTOLEFT, 0, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOMLEFT, ORDER_LEFTTORIGHT },
{ UWG_COUNTERS, ALIGN_LEFT, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_AUTOMAP, ALIGN_TOPLEFT }
};
const uiwidgetdef_t widgetDefs[] = {
Expand Down Expand Up @@ -2803,7 +2804,7 @@ typedef struct {
for(i = 0; i < sizeof(widgetGroupDefs)/sizeof(widgetGroupDefs[0]); ++i)
{
const uiwidgetgroupdef_t* def = &widgetGroupDefs[i];
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->padding);
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->orderFlags, def->padding);
}

for(i = 0; widgetDefs[i].type != GUI_NONE; ++i)
Expand Down
23 changes: 12 additions & 11 deletions doomsday/plugins/jhexen/src/st_stuff.c
Expand Up @@ -3016,6 +3016,7 @@ void ST_BuildWidgets(int player)
typedef struct {
int group;
int alignFlags;
int orderFlags;
int groupFlags;
int padding; // In fixed 320x200 pixels.
} uiwidgetgroupdef_t;
Expand All @@ -3035,16 +3036,16 @@ typedef struct {
const uiwidgetgroupdef_t widgetGroupDefs[] = {
{ UWG_STATUSBAR, ALIGN_BOTTOM },
{ UWG_MAPNAME, ALIGN_BOTTOMLEFT },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, UWGF_VERTICAL|UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOM, UWGF_LEFTTORIGHT },
{ UWG_TOP, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOP, UWGF_VERTICAL|UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPLEFT, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPLEFT2, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPLEFT3, ALIGN_TOPLEFT, UWGF_LEFTTORIGHT, PADDING },
{ UWG_TOPRIGHT, ALIGN_TOPRIGHT, UWGF_RIGHTTOLEFT, PADDING },
{ UWG_BOTTOMLEFT, ALIGN_BOTTOMLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_BOTTOMRIGHT, ALIGN_BOTTOMRIGHT, ORDER_RIGHTTOLEFT, 0, PADDING },
{ UWG_BOTTOMCENTER, ALIGN_BOTTOM, ORDER_RIGHTTOLEFT, UWGF_VERTICAL, PADDING },
{ UWG_BOTTOM, ALIGN_BOTTOM, ORDER_LEFTTORIGHT },
{ UWG_TOP, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT },
{ UWG_TOPCENTER, ALIGN_TOP, ORDER_LEFTTORIGHT, UWGF_VERTICAL, PADDING },
{ UWG_TOPLEFT, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_TOPLEFT2, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_TOPLEFT3, ALIGN_TOPLEFT, ORDER_LEFTTORIGHT, 0, PADDING },
{ UWG_TOPRIGHT, ALIGN_TOPRIGHT, ORDER_RIGHTTOLEFT, 0, PADDING },
{ UWG_AUTOMAP, ALIGN_TOPLEFT }
};
const uiwidgetdef_t widgetDefs[] = {
Expand Down Expand Up @@ -3091,7 +3092,7 @@ typedef struct {
for(i = 0; i < sizeof(widgetGroupDefs)/sizeof(widgetGroupDefs[0]); ++i)
{
const uiwidgetgroupdef_t* def = &widgetGroupDefs[i];
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->padding);
hud->widgetGroupIds[def->group] = GUI_CreateGroup(def->groupFlags, player, def->alignFlags, def->orderFlags, def->padding);
}

for(i = 0; widgetDefs[i].type != GUI_NONE; ++i)
Expand Down

0 comments on commit 308e050

Please sign in to comment.