00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "Text.hh"
00025
00026 #include "Font.hh"
00027 #include "Theme.hh"
00028
00029 #include <strings.h>
00030
00031 namespace FbTk {
00032
00033 int doAlignment(int max_width, int bevel, FbTk::Justify justify,
00034 const FbTk::Font &font, const char * const text,
00035 unsigned int textlen, unsigned int &newlen) {
00036
00037 if (text == 0 || textlen == 0)
00038 return 0;
00039
00040 int l = font.textWidth(text, textlen) + bevel;
00041 size_t dlen = textlen;
00042 int dx = bevel;
00043 if (l > max_width) {
00044 for (; dlen > 0; dlen--) {
00045 l = font.textWidth(text, dlen) + bevel;
00046 if (l<=max_width)
00047 break;
00048 }
00049 }
00050
00051 newlen = dlen;
00052
00053 switch (justify) {
00054 case FbTk::RIGHT:
00055 dx = max_width - l - bevel;
00056 break;
00057 case FbTk::CENTER:
00058 dx = (max_width - l)/2;
00059 break;
00060 case FbTk::LEFT:
00061 break;
00062 }
00063
00064 return dx;
00065 }
00066
00068 template <>
00069 void ThemeItem<FbTk::Justify>::setDefaultValue() {
00070 m_value = LEFT;
00071 }
00072
00073 template <>
00074 void ThemeItem<FbTk::Justify>::setFromString(const char *value) {
00075 if (strcasecmp("center", value) == 0)
00076 m_value = FbTk::CENTER;
00077 else if (strcasecmp("right", value) == 0)
00078 m_value = FbTk::RIGHT;
00079 else
00080 setDefaultValue();
00081 }
00082
00083
00084 template <>
00085 void ThemeItem<FbTk::Justify>::load() {
00086 }
00087
00088 };