summaryrefslogtreecommitdiff
path: root/Plugins/skins/SkinLib/TextFieldState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/skins/SkinLib/TextFieldState.cpp')
-rw-r--r--Plugins/skins/SkinLib/TextFieldState.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/Plugins/skins/SkinLib/TextFieldState.cpp b/Plugins/skins/SkinLib/TextFieldState.cpp
new file mode 100644
index 0000000..5014a04
--- /dev/null
+++ b/Plugins/skins/SkinLib/TextFieldState.cpp
@@ -0,0 +1,58 @@
+#include "globals.h"
+#include "TextFieldState.h"
+
+
+TextFieldState::TextFieldState(TextField *field) : FieldState(field), font(field->getFont(), field->getFontColor())
+{
+}
+
+TextFieldState::~TextFieldState()
+{
+}
+
+TextField * TextFieldState::getField() const
+{
+ return (TextField *) FieldState::getField();
+}
+
+
+Size TextFieldState::getPreferedSize() const
+{
+ HDC hdc = CreateCompatibleDC(NULL);
+
+ HFONT newFont = getFont()->getHFONT();
+ HFONT oldFont = (HFONT) SelectObject(hdc, newFont);
+
+ RECT rc = {0};
+ const TCHAR *text = getText();
+ DrawText(hdc, text, -1, &rc, DT_CALCRECT | DT_NOPREFIX | DT_EXPANDTABS | DT_SINGLELINE);
+
+ SelectObject(hdc, oldFont);
+
+ DeleteDC(hdc);
+
+ return Size(rc.right - rc.left, rc.bottom - rc.top);
+}
+
+const TCHAR * TextFieldState::getText() const
+{
+ if (textSet)
+ return text.c_str();
+
+ return getField()->getText();
+}
+
+void TextFieldState::setText(const TCHAR *text)
+{
+ this->text = text;
+}
+
+FontState * TextFieldState::getFont()
+{
+ return &font;
+}
+
+const FontState * TextFieldState::getFont() const
+{
+ return &font;
+} \ No newline at end of file