diff options
Diffstat (limited to 'alf/alflayout.cpp')
| -rw-r--r-- | alf/alflayout.cpp | 420 |
1 files changed, 292 insertions, 128 deletions
diff --git a/alf/alflayout.cpp b/alf/alflayout.cpp index a390890..6f35345 100644 --- a/alf/alflayout.cpp +++ b/alf/alflayout.cpp @@ -10,58 +10,58 @@ static void ALF_Layout_EnsureColumnExists(ALFLayout *layout, int colno); static BOOL -ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p); +ALF_Layout_GetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p); static BOOL -ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p); +ALF_Layout_SetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p); static BOOL -ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s); +ALF_Layout_GetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s); static BOOL -ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s); +ALF_Layout_SetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s); static DWORD -ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle); +ALF_Layout_GetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle); static BOOL -ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD flags); +ALF_Layout_SetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle, DWORD flags); static int -ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno); +ALF_Layout_GetColumnSizePriv(ALFLayout *layout, HWND window, int colno); static BOOL -ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size); +ALF_Layout_SetColumnSizePriv(ALFLayout *layout, HWND window, int colno, int size); static int -ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno); +ALF_Layout_GetColumnExpandPriv(ALFLayout *layout, HWND window, int colno); static BOOL -ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand); +ALF_Layout_SetColumnExpandPriv(ALFLayout *layout, HWND window, int colno, int expand); static DWORD -ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno); +ALF_Layout_GetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno); static BOOL -ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags); +ALF_Layout_SetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno, DWORD flags); static int -ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno); +ALF_Layout_GetRowSizePriv(ALFLayout *layout, HWND window, int rowno); static BOOL -ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size); +ALF_Layout_SetRowSizePriv(ALFLayout *layout, HWND window, int rowno, int size); static int -ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno); +ALF_Layout_GetRowExpandPriv(ALFLayout *layout, HWND window, int rowno); static BOOL -ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand); +ALF_Layout_SetRowExpandPriv(ALFLayout *layout, HWND window, int rowno, int expand); static DWORD -ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno); +ALF_Layout_GetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno); static BOOL -ALF_Layout_SetRowFlags(ALFLayout *layout, HWND window, int rowno, DWORD flags); +ALF_Layout_SetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno, DWORD flags); static void ALF_Layout_HandleBackgroundChange(ALFLayout *layout, HWND window); @@ -70,7 +70,7 @@ void ALF_Layout_Init(ALFLayout *layout) { ZeroMemory(layout, sizeof(*layout)); - ALF_ListInit(&layout->widgets); + ALF_ListInit(&layout->controls); layout->nRows = 1; layout->rows = ALF_New(ALFLayoutRowOrColumn, (SIZE_T)layout->nRows); @@ -83,10 +83,10 @@ ALF_Layout_Init(ALFLayout *layout) void ALF_Layout_Clear(ALFLayout *layout) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { ALF_Free(w); } - ALF_ListInit(&layout->widgets); + ALF_ListInit(&layout->controls); ALF_Free(layout->columns); ALF_Free(layout->rows); layout->columns = NULL; @@ -96,12 +96,12 @@ ALF_Layout_Clear(ALFLayout *layout) } static void -ALF_Layout_ForwardFontToWidget(ALFLayout *layout, HWND window, ALFWidgetPriv *widget, HFONT font, LPARAM redraw) +ALF_Layout_ForwardFontToControl(ALFLayout *layout, HWND window, ALFControlPriv *control, HFONT font, LPARAM redraw) { - if (widget->flags & ALF_LAYOUT_INHERITFONT) { - SendMessage(widget->hwnd, WM_SETFONT, (WPARAM)font, redraw); + if (control->flags & ALF_LAYOUT_INHERITFONT) { + SendMessage(control->hwnd, WM_SETFONT, (WPARAM)font, redraw); - switch (widget->flags & ALF_LAYOUT_SIZETYPE_MASK) { + switch (control->flags & ALF_LAYOUT_SIZETYPE_MASK) { case ALF_LAYOUT_SIZE_EDIT: case ALF_LAYOUT_SIZE_CHECKBOX: ALF_Layout_Invalidate(layout, window); @@ -118,8 +118,8 @@ ALF_Layout_ForwardFont(ALFLayout *layout, HWND window, HFONT font, LPARAM redraw { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) { - ALF_Layout_ForwardFontToWidget(layout, window, i, font, redraw); + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) { + ALF_Layout_ForwardFontToControl(layout, window, i, font, redraw); } } @@ -128,7 +128,7 @@ ALF_Layout_ForwardBgColor(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) { if (i->flags & ALF_LAYOUT_INHERITBGCOLOR) { SendMessage(i->hwnd, ALF_WM_SETBGCOLOR, wparam, lparam); } @@ -138,7 +138,7 @@ ALF_Layout_ForwardBgColor(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM static void ALF_Layout_ForwardDpiChange(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM lparam) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) { if (i->flags & ALF_LAYOUT_SENDDPICHANGE) { SendMessage(i->hwnd, ALF_WM_DPICHANGE, wparam, lparam); } @@ -154,7 +154,7 @@ ALF_Layout_HandleBackgroundChange(ALFLayout *layout, HWND window) { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) { if (i->flags & ALF_LAYOUT_TRANSPARENTBG) { InvalidateRect(i->hwnd, NULL, TRUE); } @@ -297,7 +297,7 @@ ALF_Layout_CalcButtonSize(HWND hwndWindow, ALFLayout *layout, HWND hwndButton, S } static void -ALF_Layout_CalcMinWidgetSize(ALFLayout *layout, ALFWidgetPriv *c, HWND window) +ALF_Layout_CalcMinControlSize(ALFLayout *layout, ALFControlPriv *c, HWND window) { if (c->flags & ALF_LAYOUT_SIZE_PX) { c->calculatedSize.cx = c->width; @@ -366,12 +366,12 @@ ALF_Layout_CalcSizes(ALFLayout* layout, HWND window) layout->biggestRowNo = i; } - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) { - ALF_Layout_CalcMinWidgetSize(layout, c, window); + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) { + ALF_Layout_CalcMinControlSize(layout, c, window); if (c->x < 0 || c->y < 0) { - if (layout->handleContainerWidgetSize) - layout->handleContainerWidgetSize(layout, window, c->hwnd, &c->calculatedSize); + if (layout->handleContainerControlSize) + layout->handleContainerControlSize(layout, window, c->hwnd, &c->calculatedSize); } else { if (c->xspan <= 1) { ALF_Layout_EnsureColumnExists(layout, c->x); @@ -390,7 +390,7 @@ ALF_Layout_CalcSizes(ALFLayout* layout, HWND window) } // second pass for spanning cells - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) { if (c->xspan > 1) { ALF_Layout_EnsureColumnExists(layout, c->x + c->xspan - 1); @@ -529,26 +529,26 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) if (layout->layoutValididityFlags & ALF_LAYOUT_NEED_RECALC) ALF_Layout_CalcSizes(layout, window); - GetClientRect(window, &layout->allocatedWidgetRect); - layout->allocatedWidgetRect.left += layout->containerMargins.left; - layout->allocatedWidgetRect.right -= layout->containerMargins.right; - layout->allocatedWidgetRect.top += layout->containerMargins.top; - layout->allocatedWidgetRect.bottom -= layout->containerMargins.bottom; + GetClientRect(window, &layout->allocatedControlRect); + layout->allocatedControlRect.left += layout->containerMargins.left; + layout->allocatedControlRect.right -= layout->containerMargins.right; + layout->allocatedControlRect.top += layout->containerMargins.top; + layout->allocatedControlRect.bottom -= layout->containerMargins.bottom; // FIXME! can that happen? - if (layout->allocatedWidgetRect.right < layout->allocatedWidgetRect.left) - layout->allocatedWidgetRect.right = layout->allocatedWidgetRect.left; - if (layout->allocatedWidgetRect.bottom < layout->allocatedWidgetRect.top) - layout->allocatedWidgetRect.bottom = layout->allocatedWidgetRect.top; + if (layout->allocatedControlRect.right < layout->allocatedControlRect.left) + layout->allocatedControlRect.right = layout->allocatedControlRect.left; + if (layout->allocatedControlRect.bottom < layout->allocatedControlRect.top) + layout->allocatedControlRect.bottom = layout->allocatedControlRect.top; // distribute extra space int extraWidth = 0; int extraHeight = 0; - if (layout->allocatedWidgetRect.right - layout->allocatedWidgetRect.left > layout->totalMinWidth) - extraWidth = layout->allocatedWidgetRect.right - layout->allocatedWidgetRect.left - layout->totalMinWidth; - if (layout->allocatedWidgetRect.bottom - layout->allocatedWidgetRect.top > layout->totalMinHeight) - extraHeight = layout->allocatedWidgetRect.bottom - layout->allocatedWidgetRect.top - layout->totalMinHeight; + if (layout->allocatedControlRect.right - layout->allocatedControlRect.left > layout->totalMinWidth) + extraWidth = layout->allocatedControlRect.right - layout->allocatedControlRect.left - layout->totalMinWidth; + if (layout->allocatedControlRect.bottom - layout->allocatedControlRect.top > layout->totalMinHeight) + extraHeight = layout->allocatedControlRect.bottom - layout->allocatedControlRect.top - layout->totalMinHeight; int extraWidthLeft = extraWidth; for (int i = 0; i < layout->nColumns; ++i) { @@ -581,21 +581,21 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) layout->rows[layout->biggestRowNo].calculatedMinWidth + extraHeightLeft; // set row/column positions - int x = layout->allocatedWidgetRect.left; + int x = layout->allocatedControlRect.left; for (int i = 0; i < layout->nColumns; ++i) { layout->columns[i].allocatedPosition = x; x += layout->columns[i].allocatedWidth; } - int y = layout->allocatedWidgetRect.top; + int y = layout->allocatedControlRect.top; for (int i = 0; i < layout->nRows; ++i) { layout->rows[i].allocatedPosition = y; y += layout->rows[i].allocatedWidth; } - // now apply positions to widgets + // now apply positions to controls HDWP hdwp = BeginDeferWindowPos(layout->nColumns * layout->nRows); - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) { int col = c->x; int row = c->y; int colspan = c->xspan; @@ -609,8 +609,8 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) RECT r = { 0,0,0,0 }; if (row < 0 || col < 0) { - if (layout->preApplyLayoutToContainerWidget) - layout->preApplyLayoutToContainerWidget(layout, window, c->hwnd, &r); + if (layout->preApplyLayoutToContainerControl) + layout->preApplyLayoutToContainerControl(layout, window, c->hwnd, &r); } else { r.left = layout->columns[col].allocatedPosition; r.right = layout->columns[col+colspan-1].allocatedPosition + layout->columns[col+colspan-1].allocatedWidth; @@ -627,7 +627,7 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) if (!ALF_Compat_IsMinWindowsVersion(4, 0)) flags |= SWP_NOCOPYBITS; - // transparent background: invalidate if widget moved + // transparent background: invalidate if control moved if (layout->bgcolor == ALF_COLOR_TRANSPARENT) { RECT oldR; GetWindowRect(c->hwnd, &oldR); @@ -656,9 +656,9 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) } void -ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* params) +ALF_Layout_AddControl(ALFLayout* layout, HWND window, const ALFAddControlParams* params) { - ALFWidgetPriv *w = ALF_New(ALFWidgetPriv, 1); + ALFControlPriv *w = ALF_New(ALFControlPriv, 1); w->hwnd = params->hwnd; w->x = params->x; w->y = params->y; @@ -670,7 +670,7 @@ ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* p SetParent(w->hwnd, window); if (w->flags & ALF_LAYOUT_INHERITFONT) { - ALF_Layout_ForwardFontToWidget(layout, window, w, layout->font, 0); + ALF_Layout_ForwardFontToControl(layout, window, w, layout->font, 0); } if (w->flags & ALF_LAYOUT_INHERITBGCOLOR) { SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)layout->bgcolor); @@ -679,15 +679,15 @@ ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* p SendMessage(w->hwnd, ALF_WM_DPICHANGE, 0, (LPARAM)layout->dpi); } - ALF_ListInsert(layout->widgets.prev, &w->list); + ALF_ListInsert(layout->controls.prev, &w->list); ALF_Layout_Invalidate(layout, window); } HWND -ALF_Layout_WidgetAtPos(ALFLayout* layout, int x, int y) +ALF_Layout_ControlAtPosPriv(ALFLayout* layout, int x, int y) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->x == x && w->y == y) { return w->hwnd; } @@ -743,11 +743,11 @@ ALF_Layout_GetMinSize(ALFLayout *layout, HWND window, SIZE *size) } BOOL -ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p) +ALF_Layout_GetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p) { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { p->x = w->x; p->y = w->y; @@ -759,9 +759,9 @@ ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p) } static BOOL -ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p) +ALF_Layout_SetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { w->x = p->x; w->y = p->y; @@ -776,11 +776,11 @@ ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p) } BOOL -ALF_Layout_GetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p) +ALF_Layout_GetControlSpanPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p) { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { p->x = w->xspan; p->y = w->yspan; @@ -792,9 +792,9 @@ ALF_Layout_GetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p) } static BOOL -ALF_Layout_SetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p) +ALF_Layout_SetControlSpanPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { w->xspan = p->x; w->yspan = p->y; @@ -809,11 +809,11 @@ ALF_Layout_SetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p) } static BOOL -ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s) +ALF_Layout_GetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s) { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { s->cx = w->width; s->cy = w->height; @@ -825,9 +825,9 @@ ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s) } static BOOL -ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s) +ALF_Layout_SetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { w->width = s->cx; w->height = s->cy; @@ -842,11 +842,11 @@ ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s) } static DWORD -ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle) +ALF_Layout_GetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle) { (void)window; - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { return w->flags; } @@ -856,14 +856,14 @@ ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle) } static BOOL -ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD flags) +ALF_Layout_SetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle, DWORD flags) { - ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) { + ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) { if (w->hwnd == needle) { w->flags = flags; if (flags & ALF_LAYOUT_INHERITFONT) - ALF_Layout_ForwardFontToWidget(layout, window, w, layout->font, 0); + ALF_Layout_ForwardFontToControl(layout, window, w, layout->font, 0); if (flags & ALF_LAYOUT_INHERITBGCOLOR) SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)layout->bgcolor); if (flags & ALF_LAYOUT_SENDDPICHANGE) @@ -879,7 +879,7 @@ ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD fla } int -ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno) +ALF_Layout_GetColumnSizePriv(ALFLayout *layout, HWND window, int colno) { (void)window; @@ -890,7 +890,7 @@ ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno) } BOOL -ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size) +ALF_Layout_SetColumnSizePriv(ALFLayout *layout, HWND window, int colno, int size) { ALF_Layout_EnsureColumnExists(layout, colno); @@ -902,7 +902,7 @@ ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size) } int -ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno) +ALF_Layout_GetColumnExpandPriv(ALFLayout *layout, HWND window, int colno) { (void)window; @@ -913,7 +913,7 @@ ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno) } static BOOL -ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand) +ALF_Layout_SetColumnExpandPriv(ALFLayout *layout, HWND window, int colno, int expand) { ALF_Layout_EnsureColumnExists(layout, colno); @@ -925,7 +925,7 @@ ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand } static DWORD -ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno) +ALF_Layout_GetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno) { (void)window; @@ -936,7 +936,7 @@ ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno) } static BOOL -ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags) +ALF_Layout_SetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno, DWORD flags) { ALF_Layout_EnsureColumnExists(layout, colno); @@ -948,7 +948,7 @@ ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags } static int -ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno) +ALF_Layout_GetRowSizePriv(ALFLayout *layout, HWND window, int rowno) { (void)window; @@ -959,7 +959,7 @@ ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno) } static BOOL -ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size) +ALF_Layout_SetRowSizePriv(ALFLayout *layout, HWND window, int rowno, int size) { ALF_Layout_EnsureRowExists(layout, rowno); @@ -971,7 +971,7 @@ ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size) } static int -ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno) +ALF_Layout_GetRowExpandPriv(ALFLayout *layout, HWND window, int rowno) { (void)window; @@ -982,7 +982,7 @@ ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno) } static BOOL -ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand) +ALF_Layout_SetRowExpandPriv(ALFLayout *layout, HWND window, int rowno, int expand) { ALF_Layout_EnsureRowExists(layout, rowno); @@ -994,7 +994,7 @@ ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand) } static DWORD -ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno) +ALF_Layout_GetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno) { (void)window; @@ -1005,7 +1005,7 @@ ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno) } static BOOL -ALF_Layout_SetRowFlags(ALFLayout *layout, HWND window, int rowno, DWORD flags) +ALF_Layout_SetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno, DWORD flags) { ALF_Layout_EnsureRowExists(layout, rowno); @@ -1031,18 +1031,13 @@ ALF_Layout_HandleMessage(ALFLayout *layout, HWND hwnd, UINT msg, WPARAM wparam, return TRUE; } - if (msg == ALF_WM_APPLYLAYOUT) { - ALF_Layout_Apply(layout, hwnd); + if (msg == ALF_WM_ADDCONTROL) { + ALF_Layout_AddControl(layout, hwnd, (ALFAddControlParams *)lparam); return TRUE; } - if (msg == ALF_WM_ADDWIDGET) { - ALF_Layout_AddWidget(layout, hwnd, (ALFAddWidgetParams *)lparam); - return TRUE; - } - - if (msg == ALF_WM_GETWIDGETATPOS) { - *pRet = (LRESULT)ALF_Layout_WidgetAtPos(layout, ((int*)lparam)[0], ((int*)lparam)[1]); + if (msg == ALF_WM_LYT_GETCTLATPOS) { + *pRet = (LRESULT)ALF_Layout_ControlAtPosPriv(layout, ((int*)lparam)[0], ((int*)lparam)[1]); return TRUE; } @@ -1112,105 +1107,274 @@ ALF_Layout_HandleMessage(ALFLayout *layout, HWND hwnd, UINT msg, WPARAM wparam, return TRUE; } - if (msg == ALF_WM_LYT_GETWIDGETPOS) { - *pRet = (LRESULT)ALF_Layout_GetWidgetPos(layout, hwnd, (HWND)wparam, (POINT *)lparam); + if (msg == ALF_WM_LYT_GETCTLPOS) { + *pRet = (LRESULT)ALF_Layout_GetControlPosPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_SETWIDGETPOS) { - *pRet = (LRESULT)ALF_Layout_SetWidgetPos(layout, hwnd, (HWND)wparam, (POINT *)lparam); + if (msg == ALF_WM_LYT_SETCTLPOS) { + *pRet = (LRESULT)ALF_Layout_SetControlPosPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_GETWDGTSPAN) { - *pRet = (LRESULT)ALF_Layout_GetWidgetSpan(layout, hwnd, (HWND)wparam, (POINT *)lparam); + if (msg == ALF_WM_LYT_GETCTLSPAN) { + *pRet = (LRESULT)ALF_Layout_GetControlSpanPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_SETWDGTSPAN) { - *pRet = (LRESULT)ALF_Layout_SetWidgetSpan(layout, hwnd, (HWND)wparam, (POINT *)lparam); + if (msg == ALF_WM_LYT_SETCTLSPAN) { + *pRet = (LRESULT)ALF_Layout_SetControlSpanPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_GETWIDGTSIZE) { - *pRet = (LRESULT)ALF_Layout_GetWidgetSize(layout, hwnd, (HWND)wparam, (SIZE *)lparam); + if (msg == ALF_WM_LYT_GETCTLSIZE) { + *pRet = (LRESULT)ALF_Layout_GetControlSizePriv(layout, hwnd, (HWND)wparam, (SIZE *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_SETWIDGTSIZE) { - *pRet = (LRESULT)ALF_Layout_SetWidgetSize(layout, hwnd, (HWND)wparam, (SIZE *)lparam); + if (msg == ALF_WM_LYT_SETCTLSIZE) { + *pRet = (LRESULT)ALF_Layout_SetControlSizePriv(layout, hwnd, (HWND)wparam, (SIZE *)lparam); return TRUE; } - if (msg == ALF_WM_LYT_GETWDGTFLAGS) { - *pRet = (LRESULT)ALF_Layout_GetWidgetFlags(layout, hwnd, (HWND)wparam); + if (msg == ALF_WM_LYT_GETCTLFLAGS) { + *pRet = (LRESULT)ALF_Layout_GetControlFlagsPriv(layout, hwnd, (HWND)wparam); return TRUE; } - if (msg == ALF_WM_LYT_SETWDGTFLAGS) { - *pRet = (LRESULT)ALF_Layout_SetWidgetFlags(layout, hwnd, (HWND)wparam, (DWORD)lparam); + if (msg == ALF_WM_LYT_SETCTLFLAGS) { + *pRet = (LRESULT)ALF_Layout_SetControlFlagsPriv(layout, hwnd, (HWND)wparam, (DWORD)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETCOLSIZE) { - *pRet = (LRESULT)ALF_Layout_GetColumnSize(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetColumnSizePriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETCOLSIZE) { - *pRet = (LRESULT)ALF_Layout_SetColumnSize(layout, hwnd, (int)wparam, (int)lparam); + *pRet = (LRESULT)ALF_Layout_SetColumnSizePriv(layout, hwnd, (int)wparam, (int)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETCOLEXPAND) { - *pRet = (LRESULT)ALF_Layout_GetColumnExpand(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetColumnExpandPriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETCOLEXPAND) { - *pRet = (LRESULT)ALF_Layout_SetColumnExpand(layout, hwnd, (int)wparam, (int)lparam); + *pRet = (LRESULT)ALF_Layout_SetColumnExpandPriv(layout, hwnd, (int)wparam, (int)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETCOLFLAGS) { - *pRet = (LRESULT)ALF_Layout_GetColumnFlags(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetColumnFlagsPriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETCOLFLAGS) { - *pRet = (LRESULT)ALF_Layout_SetColumnFlags(layout, hwnd, (int)wparam, (DWORD)lparam); + *pRet = (LRESULT)ALF_Layout_SetColumnFlagsPriv(layout, hwnd, (int)wparam, (DWORD)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETROWSIZE) { - *pRet = (LRESULT)ALF_Layout_GetRowSize(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetRowSizePriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETROWSIZE) { - *pRet = (LRESULT)ALF_Layout_SetRowSize(layout, hwnd, (int)wparam, (int)lparam); + *pRet = (LRESULT)ALF_Layout_SetRowSizePriv(layout, hwnd, (int)wparam, (int)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETROWEXPAND) { - *pRet = (LRESULT)ALF_Layout_GetRowExpand(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetRowExpandPriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETROWEXPAND) { - *pRet = (LRESULT)ALF_Layout_SetRowExpand(layout, hwnd, (int)wparam, (int)lparam); + *pRet = (LRESULT)ALF_Layout_SetRowExpandPriv(layout, hwnd, (int)wparam, (int)lparam); return TRUE; } if (msg == ALF_WM_LYT_GETROWFLAGS) { - *pRet = (LRESULT)ALF_Layout_GetRowFlags(layout, hwnd, (int)wparam); + *pRet = (LRESULT)ALF_Layout_GetRowFlagsPriv(layout, hwnd, (int)wparam); return TRUE; } if (msg == ALF_WM_LYT_SETROWFLAGS) { - *pRet = (LRESULT)ALF_Layout_SetRowFlags(layout, hwnd, (int)wparam, (DWORD)lparam); + *pRet = (LRESULT)ALF_Layout_SetRowFlagsPriv(layout, hwnd, (int)wparam, (DWORD)lparam); return TRUE; } return FALSE; } + +// public api + +DWORD +ALF_Layout_ControlFlags(HWND parent, HWND control) +{ + return (DWORD)SendMessage(parent, ALF_WM_LYT_GETCTLFLAGS, (WPARAM)control, 0); +} + +BOOL +ALF_Layout_SetControlFlags(HWND parent, HWND control, DWORD flags) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLFLAGS, (WPARAM)control, (LPARAM)flags); +} + +BOOL +ALF_Layout_ControlPosition(HWND parent, HWND control, int *pX, int *pY) +{ + POINT p = { 0, 0 }; + + LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLPOS, (WPARAM)control, (LPARAM)&p); + *pX = p.x; + *pY = p.y; + return (BOOL)r; +} + +BOOL +ALF_Layout_SetControlPosition(HWND parent, HWND control, int x, int y) +{ + POINT p = { x, y }; + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLPOS, (WPARAM)control, (LPARAM)&p); +} + +BOOL +ALF_Layout_ControlSpan(HWND parent, HWND control, int *pXspan, int *pYspan) +{ + POINT p = { 0, 0 }; + + LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLSPAN, (WPARAM)control, (LPARAM)&p); + *pXspan = p.x; + *pYspan = p.y; + return (BOOL)r; +} + +BOOL +ALF_Layout_SetControlSpan(HWND parent, HWND control, int xspan, int yspan) +{ + POINT p = { xspan, yspan }; + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLSPAN, (WPARAM)control, (LPARAM)&p); +} + + +BOOL +ALF_Layout_ControlMinSize(HWND parent, HWND control, int *pWidth, int *pHeight) +{ + SIZE s = { 0, 0 }; + LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLSIZE, (WPARAM)control, (LPARAM)&s); + *pWidth = s.cx; + *pHeight = s.cy; + return (BOOL)r; +} + +BOOL +ALF_Layout_SetControlMinSize(HWND parent, HWND control, int width, int height) +{ + SIZE s = { width, height }; + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLSIZE, (WPARAM)control, (LPARAM)&s); +} + +HWND +ALF_Layout_ControlAtPosition(HWND parent, int x, int y) +{ + int xy[2] = { x, y }; + + return (HWND)SendMessage(parent, ALF_WM_LYT_GETCTLATPOS, 0, (LPARAM)&xy); +} + +int +ALF_Layout_RowMinSize(HWND parent, int rowno) +{ + return (int)SendMessage(parent, ALF_WM_LYT_GETROWSIZE, (WPARAM)rowno, 0); +} + +BOOL +ALF_Layout_SetRowMinSize(HWND parent, int rowno, int rowsize) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWSIZE, (WPARAM)rowno, (LPARAM)rowsize); +} + +int +ALF_Layout_ColumnMinSize(HWND parent, int colno) +{ + return (int)SendMessage(parent, ALF_WM_LYT_GETCOLSIZE, (WPARAM)colno, 0); +} + +BOOL +ALF_Layout_SetColumnMinSize(HWND parent, int colno, int colsize) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCOLSIZE, (WPARAM)colno, (LPARAM)colsize); +} + +DWORD +ALF_Layout_RowFlags(HWND parent, int rowno) +{ + return (DWORD)SendMessage(parent, ALF_WM_LYT_GETROWFLAGS, (WPARAM)rowno, 0); +} + +BOOL +ALF_Layout_SetRowFlags(HWND parent, int rowno, DWORD flags) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWFLAGS, (WPARAM)rowno, (LPARAM)flags); +} + +DWORD +ALF_Layout_ColumnFlags(HWND parent, int colno) +{ + return (DWORD)SendMessage(parent, ALF_WM_LYT_GETCOLFLAGS, (WPARAM)colno, 0); +} + +BOOL +ALF_Layout_SetColumnFlags(HWND parent, int colno, DWORD flags) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCOLFLAGS, (WPARAM)colno, (LPARAM)flags); +} + +int +ALF_Layout_RowExpandNumerator(HWND parent, int rowno) +{ + return (int)SendMessage(parent, ALF_WM_LYT_GETROWEXPAND, (WPARAM)rowno, 0); +} + +BOOL +ALF_Layout_SetRowExpandNumerator(HWND parent, int rowno, int expand) +{ + return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWEXPAND, (WPARAM)rowno, (LPARAM)expand); +} + +int +ALF_Layout_ColumnExpandNumerator(HWND parent, int colno) +{ + return (int)SendMessage(parent, ALF_WM_LYT_GETCOLEXPAND, (WPARAM)colno, 0); +} + +BOOL +ALF_Layout_SetColumnExpandNumerator(HWND parent, int colno, int expand) +{ + return (int)SendMessage(parent, ALF_WM_LYT_SETCOLEXPAND, (WPARAM)colno, (LPARAM)expand); +} + +void +ALF_InvalidateLayout(HWND hwnd) +{ + SendMessage(hwnd, ALF_WM_INVALIDATELAYOUT, 0, 0); +} + +void +ALF_AddControl(HWND win, int x, int y, HWND control, int minWidth, int minHeight, DWORD flags) +{ + ALFAddControlParams params; + ZeroMemory(¶ms, sizeof(params)); + params.hwnd = control; + params.x = x; + params.y = y; + params.width = minWidth; + params.height = minHeight; + params.flags = flags; + SendMessage(win, ALF_WM_ADDCONTROL, 0, (LPARAM)¶ms); +} + |
