diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/FbTk/XmbFontImp.cc | 55 |
1 files changed, 19 insertions, 36 deletions
diff --git a/src/FbTk/XmbFontImp.cc b/src/FbTk/XmbFontImp.cc index c8a6291..0f66802 100644 --- a/src/FbTk/XmbFontImp.cc +++ b/src/FbTk/XmbFontImp.cc | |||
@@ -1,6 +1,6 @@ | |||
1 | // XmbFontImp.cc for FbTk fluxbox toolkit | 1 | // XmbFontImp.cc for FbTk fluxbox toolkit |
2 | // Copyright (c) 2002-2003 Henrik Kinnunen (fluxgen at users.sourceforge.net) | 2 | // Copyright (c) 2002-2003 Henrik Kinnunen (fluxgen at users.sourceforge.net) |
3 | // | 3 | // |
4 | // Permission is hereby granted, free of charge, to any person obtaining a | 4 | // Permission is hereby granted, free of charge, to any person obtaining a |
5 | // copy of this software and associated documentation files (the "Software"), | 5 | // copy of this software and associated documentation files (the "Software"), |
6 | // to deal in the Software without restriction, including without limitation | 6 | // to deal in the Software without restriction, including without limitation |
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: XmbFontImp.cc,v 1.11 2004/09/03 17:05:35 rathnor Exp $ | 22 | // $Id: XmbFontImp.cc,v 1.12 2004/09/10 16:12:01 akir Exp $ |
23 | 23 | ||
24 | #include "XmbFontImp.hh" | 24 | #include "XmbFontImp.hh" |
25 | 25 | ||
@@ -59,25 +59,6 @@ using namespace std; | |||
59 | 59 | ||
60 | namespace { | 60 | namespace { |
61 | 61 | ||
62 | #ifndef HAVE_STRCASESTR | ||
63 | //!! TODO this is moved to StringUtil | ||
64 | // Tries to find a string in another and | ||
65 | // ignoring the case of the characters | ||
66 | // Returns 0 on success else pointer to str. | ||
67 | const char *strcasestr(const char *str, const char *ptn) { | ||
68 | const char *s2, *p2; | ||
69 | for( ; *str; str++) { | ||
70 | for(s2=str, p2=ptn; ; s2++,p2++) { | ||
71 | // check if we reached the end of ptn, if so, return str | ||
72 | if (!*p2) return str; | ||
73 | // check if the chars match(ignoring case) | ||
74 | if (toupper(*s2) != toupper(*p2)) break; | ||
75 | } | ||
76 | } | ||
77 | return 0; | ||
78 | } | ||
79 | #endif //HAVE_STRCASESTR | ||
80 | |||
81 | const char *getFontSize(const char *pattern, int *size) { | 62 | const char *getFontSize(const char *pattern, int *size) { |
82 | const char *p; | 63 | const char *p; |
83 | const char *p2=0; | 64 | const char *p2=0; |
@@ -178,13 +159,13 @@ XFontSet createFontSet(const char *fontname, bool utf8mode) { | |||
178 | "-r-", "-i-", "-o-", "-ri-", "-ro-", NULL); | 159 | "-r-", "-i-", "-o-", "-ri-", "-ro-", NULL); |
179 | getFontSize(fontname, &pixel_size); | 160 | getFontSize(fontname, &pixel_size); |
180 | 161 | ||
181 | if (! strcmp(weight, "*")) | 162 | if (! strcmp(weight, "*")) |
182 | strncpy(weight, "medium", FONT_ELEMENT_SIZE); | 163 | strncpy(weight, "medium", FONT_ELEMENT_SIZE); |
183 | if (! strcmp(slant, "*")) | 164 | if (! strcmp(slant, "*")) |
184 | strncpy(slant, "r", FONT_ELEMENT_SIZE); | 165 | strncpy(slant, "r", FONT_ELEMENT_SIZE); |
185 | if (pixel_size < 3) | 166 | if (pixel_size < 3) |
186 | pixel_size = 3; | 167 | pixel_size = 3; |
187 | else if (pixel_size > 97) | 168 | else if (pixel_size > 97) |
188 | pixel_size = 97; | 169 | pixel_size = 97; |
189 | 170 | ||
190 | buf_size = strlen(fontname) + (FONT_ELEMENT_SIZE * 2) + 64; | 171 | buf_size = strlen(fontname) + (FONT_ELEMENT_SIZE * 2) + 64; |
@@ -240,26 +221,28 @@ bool XmbFontImp::load(const std::string &fontname) { | |||
240 | m_fontset = set; | 221 | m_fontset = set; |
241 | m_setextents = XExtentsOfFontSet(m_fontset); | 222 | m_setextents = XExtentsOfFontSet(m_fontset); |
242 | 223 | ||
243 | return true; | 224 | return true; |
244 | } | 225 | } |
245 | 226 | ||
246 | void XmbFontImp::drawText(Drawable w, int screen, GC gc, const char *text, | 227 | void XmbFontImp::drawText(Drawable w, int screen, GC gc, const char *text, |
247 | size_t len, int x, int y) const { | 228 | size_t len, int x, int y) const { |
248 | 229 | ||
249 | if (text == 0 || len == 0 || w == 0 || m_fontset == 0) | 230 | if (text == 0 || len == 0 || w == 0 || m_fontset == 0) |
250 | return; | 231 | return; |
232 | |||
233 | Display* disp = App::instance()->display(); | ||
251 | #ifdef X_HAVE_UTF8_STRING | 234 | #ifdef X_HAVE_UTF8_STRING |
252 | if (m_utf8mode) { | 235 | if (m_utf8mode) { |
253 | Xutf8DrawString(App::instance()->display(), w, m_fontset, | 236 | Xutf8DrawString(disp, w, m_fontset, |
254 | gc, x, y, | 237 | gc, x, y, |
255 | text, len); | 238 | text, len); |
256 | } else | 239 | } else |
257 | #endif //X_HAVE_UTF8_STRING | 240 | #endif //X_HAVE_UTF8_STRING |
258 | { | 241 | { |
259 | XmbDrawString(App::instance()->display(), w, m_fontset, | 242 | XmbDrawString(disp, w, m_fontset, |
260 | gc, x, y, | 243 | gc, x, y, |
261 | text, len); | 244 | text, len); |
262 | } | 245 | } |
263 | } | 246 | } |
264 | 247 | ||
265 | unsigned int XmbFontImp::textWidth(const char * const text, unsigned int len) const { | 248 | unsigned int XmbFontImp::textWidth(const char * const text, unsigned int len) const { |