source: trunk/WINDOW/aw_font_group.hxx

Last change on this file was 17877, checked in by westram, 6 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1// ==================================================================== //
2//                                                                      //
3//   File      : aw_font_group.hxx                                      //
4//   Purpose   : Bundles a group of fonts and provides overall maximas  //
5//                                                                      //
6//                                                                      //
7// Coded by Ralf Westram (coder@reallysoft.de) in December 2004         //
8// Copyright Department of Microbiology (Technical University Munich)   //
9//                                                                      //
10// Visit our web site at: http://www.arb-home.de/                       //
11//                                                                      //
12// ==================================================================== //
13
14#ifndef AW_FONT_GROUP_HXX
15#define AW_FONT_GROUP_HXX
16
17#ifndef AW_DEVICE_HXX
18#include <aw_device.hxx>
19#endif
20
21#define AW_FONT_GROUP_MAX_GC 10
22
23class AW_font_group { // IRRELEVANT_LOOP
24    AW_font_limits gc_limits[AW_FONT_GROUP_MAX_GC+1];
25    AW_font_limits any_limits; // maxima of all registered fonts
26
27#if defined(ASSERTION_USED)
28    bool font_registered(int gc) const { return gc_limits[gc].was_notified(); }
29    bool any_font_registered()   const { return any_limits.was_notified(); }
30#endif
31
32public:
33    void unregisterAll() { *this = AW_font_group(); }
34    void registerFont(AW_device *device_, int gc, const char *chars = NULp); // if no 'chars' specified => use complete ASCII-range
35
36    const AW_font_limits& get_limits(int gc) const {
37        aw_assert(font_registered(gc));
38        return gc_limits[gc];
39    }
40    const AW_font_limits& get_max_limits() const {
41        aw_assert(any_font_registered());
42        return any_limits;
43    }
44
45    int get_width  (int gc) const { return get_limits(gc).width; }
46    int get_ascent (int gc) const { return get_limits(gc).ascent; }
47    int get_descent(int gc) const { return get_limits(gc).descent; }
48    int get_height (int gc) const { return get_limits(gc).get_height(); }
49
50    // maxima of all registered fonts:
51    int get_max_width  () const { return get_max_limits().width; }
52    int get_max_ascent () const { return get_max_limits().ascent; }
53    int get_max_descent() const { return get_max_limits().descent; }
54    int get_max_height () const { return get_max_limits().get_height(); }
55};
56
57
58#else
59#error aw_font_group.hxx included twice
60#endif // AW_FONT_GROUP_HXX
61
Note: See TracBrowser for help on using the repository browser.