diff options
Diffstat (limited to 'src/libui_sdl/libui/windows/label.cpp')
-rw-r--r-- | src/libui_sdl/libui/windows/label.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/windows/label.cpp b/src/libui_sdl/libui/windows/label.cpp new file mode 100644 index 0000000..d74b7d1 --- /dev/null +++ b/src/libui_sdl/libui/windows/label.cpp @@ -0,0 +1,57 @@ +// 11 april 2015 +#include "uipriv_windows.hpp" + +struct uiLabel { + uiWindowsControl c; + HWND hwnd; +}; + +uiWindowsControlAllDefaults(uiLabel) + +// via http://msdn.microsoft.com/en-us/library/windows/desktop/dn742486.aspx#sizingandspacing +#define labelHeight 8 + +static void uiLabelMinimumSize(uiWindowsControl *c, int *width, int *height) +{ + uiLabel *l = uiLabel(c); + uiWindowsSizing sizing; + int y; + + *width = uiWindowsWindowTextWidth(l->hwnd); + y = labelHeight; + uiWindowsGetSizing(l->hwnd, &sizing); + uiWindowsSizingDlgUnitsToPixels(&sizing, NULL, &y); + *height = y; +} + +char *uiLabelText(uiLabel *l) +{ + return uiWindowsWindowText(l->hwnd); +} + +void uiLabelSetText(uiLabel *l, const char *text) +{ + uiWindowsSetWindowText(l->hwnd, text); + // changing the text might necessitate a change in the label's size + uiWindowsControlMinimumSizeChanged(uiWindowsControl(l)); +} + +uiLabel *uiNewLabel(const char *text) +{ + uiLabel *l; + WCHAR *wtext; + + uiWindowsNewControl(uiLabel, l); + + wtext = toUTF16(text); + l->hwnd = uiWindowsEnsureCreateControlHWND(0, + L"static", wtext, + // SS_LEFTNOWORDWRAP clips text past the end; SS_NOPREFIX avoids accelerator translation + // controls are vertically aligned to the top by default (thanks Xeek in irc.freenode.net/#winapi) + SS_LEFTNOWORDWRAP | SS_NOPREFIX, + hInstance, NULL, + TRUE); + uiFree(wtext); + + return l; +} |