From bb6784e0e1a385cdd20b41d3254093e89a210332 Mon Sep 17 00:00:00 2001 From: pescuma Date: Wed, 31 Dec 2008 21:12:58 +0000 Subject: skins: Added SkinLib git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@120 c086bb3d-8645-0410-b8da-73a8550f86e7 --- Plugins/skins/SkinLib/TextFieldState.cpp | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Plugins/skins/SkinLib/TextFieldState.cpp (limited to 'Plugins/skins/SkinLib/TextFieldState.cpp') 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 -- cgit v1.2.3