From f75a0ee5e37b1e53abfbd747ec1f65b1a44c5411 Mon Sep 17 00:00:00 2001 From: fluxgen Date: Mon, 2 Dec 2002 20:11:58 +0000 Subject: text utils --- src/FbTk/Text.cc | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/FbTk/Text.hh | 41 ++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 src/FbTk/Text.cc create mode 100644 src/FbTk/Text.hh diff --git a/src/FbTk/Text.cc b/src/FbTk/Text.cc new file mode 100644 index 0000000..2a7435e --- /dev/null +++ b/src/FbTk/Text.cc @@ -0,0 +1,88 @@ +// Text.cc for FbTk - text utils +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: Text.cc,v 1.1 2002/12/02 20:11:58 fluxgen Exp $ + +#include "Text.hh" + +#include "Font.hh" +#include "Theme.hh" + +#include + +namespace FbTk { + +int doAlignment(int max_width, int bevel, FbTk::Justify justify, + const FbTk::Font &font, const char * const text, + unsigned int textlen, unsigned int &newlen) { + + if (text == 0 || textlen == 0) + return 0; + + int l = font.textWidth(text, textlen) + bevel; + size_t dlen = textlen; + int dx = bevel; + if (l > max_width) { + for (; dlen > 0; dlen--) { + l = font.textWidth(text, dlen) + bevel; + if (l<=max_width) + break; + } + } + + newlen = dlen; + + switch (justify) { + case FbTk::RIGHT: + dx = max_width - l - bevel; + break; + case FbTk::CENTER: + dx = (max_width - l)/2; + break; + case FbTk::LEFT: + break; + } + + return dx; +} + +/// specialization for Justify +template <> +void ThemeItem::setDefaultValue() { + m_value = LEFT; +} + +template <> +void ThemeItem::setFromString(const char *value) { + if (strcasecmp("center", value) == 0) + m_value = FbTk::CENTER; + else if (strcasecmp("right", value) == 0) + m_value = FbTk::RIGHT; + else // default + setDefaultValue(); +} + +// do nothing +template <> +void ThemeItem::load() { +} + +}; // end namespace FbTk diff --git a/src/FbTk/Text.hh b/src/FbTk/Text.hh new file mode 100644 index 0000000..54abd50 --- /dev/null +++ b/src/FbTk/Text.hh @@ -0,0 +1,41 @@ +// Text.hh for FbTk - text utils +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: Text.hh,v 1.1 2002/12/02 20:11:57 fluxgen Exp $ + +#ifndef FBTK_TEXT_HH +#define FBTK_TEXT_HH + +namespace FbTk { + +class Font; + +enum Justify {LEFT, RIGHT, CENTER}; +/** + Aligns the text after max width and bevel + */ +int doAlignment(int max_width, int bevel, FbTk::Justify justify, + const FbTk::Font &font, const char * const text, + unsigned int textlen, unsigned int &newlen); + +}; + +#endif // FBTK_TEXT_HH -- cgit v0.11.2