diff options
Diffstat (limited to 'src/DrawUtil.cc')
-rw-r--r-- | src/DrawUtil.cc | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/src/DrawUtil.cc b/src/DrawUtil.cc index 868e4fa..f83c1ca 100644 --- a/src/DrawUtil.cc +++ b/src/DrawUtil.cc | |||
@@ -13,31 +13,49 @@ | |||
13 | // | 13 | // |
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | 16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
17 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 17 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | 18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
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: DrawUtil.cc,v 1.9 2002/11/25 14:00:20 fluxgen Exp $ | 22 | // $Id: DrawUtil.cc,v 1.10 2002/11/26 15:50:46 fluxgen Exp $ |
23 | |||
24 | #ifdef HAVE_CONFIG_H | ||
25 | #include "config.h" | ||
26 | #endif //HAVE_CONFIG_H | ||
27 | 23 | ||
28 | #include "DrawUtil.hh" | 24 | #include "DrawUtil.hh" |
29 | #include "StringUtil.hh" | ||
30 | #include "i18n.hh" | ||
31 | |||
32 | #include <cstdlib> | ||
33 | #include <cassert> | ||
34 | #include <cstdio> | ||
35 | #include <iostream> | ||
36 | #include <X11/Xutil.h> | ||
37 | |||
38 | using namespace std; | ||
39 | 25 | ||
40 | namespace DrawUtil { | 26 | namespace DrawUtil { |
41 | 27 | ||
28 | int doAlignment(int max_width, int bevel, Font::FontJustify justify, | ||
29 | const FbTk::Font &font, const char * const text, size_t textlen, size_t &newlen) { | ||
30 | |||
31 | if (text == 0 || textlen == 0) | ||
32 | return 0; | ||
33 | |||
34 | int l = font.textWidth(text, textlen) + bevel; | ||
35 | size_t dlen = textlen; | ||
36 | int dx = bevel; | ||
37 | if (l > max_width) { | ||
38 | for (; dlen > 0; dlen--) { | ||
39 | l = font.textWidth(text, dlen) + bevel; | ||
40 | if (l<=max_width) | ||
41 | break; | ||
42 | } | ||
43 | } | ||
44 | |||
45 | newlen = dlen; | ||
46 | |||
47 | switch (justify) { | ||
48 | case DrawUtil::Font::RIGHT: | ||
49 | dx = max_width - l - bevel; | ||
50 | break; | ||
51 | case DrawUtil::Font::CENTER: | ||
52 | dx = (max_width - l)/2; | ||
53 | break; | ||
54 | case DrawUtil::Font::LEFT: | ||
55 | break; | ||
56 | } | ||
57 | |||
58 | return dx; | ||
59 | } | ||
42 | 60 | ||
43 | }; //end namespace DrawUtil | 61 | }; //end namespace DrawUtil |