ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtfont.h
Revision: 1.28
Committed: Tue Mar 30 23:00:35 2010 UTC (14 years, 1 month ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.27: +5 -2 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #ifndef DEFAULTFONT_H_
2     #define DEFAULTFONT_H_
3    
4     #include <X11/Xlib.h>
5     #if XFT
6     # include <X11/Xft/Xft.h>
7     #endif
8    
9     #include <inttypes.h>
10    
11     #include "feature.h"
12     #include "encoding.h"
13     #include "rxvtutil.h"
14 root 1.12 #include "rxvttoolkit.h"
15    
16     struct rxvt_term;
17 root 1.1
18 root 1.25 struct rxvt_fontprop
19     {
20 root 1.1 enum {
21 root 1.12 unset = -1,
22 root 1.1 medium = 100, bold = 200,
23     roman = 0, italic = 100,
24     };
25 root 1.17 int width, height, ascent;
26 root 1.1 int weight, slant;
27     };
28    
29 root 1.25 struct rxvt_font
30     {
31 root 1.1 // managed by the fontset
32 root 1.18 rxvt_term *term;
33     void set_term (rxvt_term *term) { this->term = term; }
34 root 1.1
35     char *name;
36     codeset cs;
37     bool loaded; // wether we tried loading it before (not wether it's loaded)
38    
39     // managed by the font object
40     int ascent, descent,
41     width, height;
42    
43 root 1.26 void set_name (char *name_);
44 root 1.1
45 root 1.20 rxvt_font ();
46 root 1.12 virtual ~rxvt_font () { free (name); };
47    
48     virtual void clear () { };
49 root 1.1
50 root 1.18 void clear_rect (rxvt_drawable &d, int x, int y, int w, int h, int color) const;
51 root 1.1
52     virtual rxvt_fontprop properties () = 0;
53    
54 root 1.22 virtual bool load (const rxvt_fontprop &morph, bool force_prop) = 0;
55 root 1.18 virtual bool has_char (uint32_t unicode, const rxvt_fontprop *prop, bool &careful) const = 0;
56 root 1.1
57     virtual void draw (rxvt_drawable &d,
58     int x, int y,
59     const text_t *text, int len,
60     int fg, int bg) = 0;
61     };
62    
63     #define FONT_UNREF(f) do { (f)->clear (); delete (f); } while (0)
64    
65     struct rxvt_fallback_font;
66    
67 root 1.25 struct rxvt_fontset
68     {
69 root 1.1 char *fontdesc;
70    
71 root 1.27 enum { fontCount = 127 }; // must be power-of-two - 1, also has to match RS_fontMask in rxvt.h
72    
73 root 1.18 rxvt_fontset (rxvt_term *term);
74 root 1.1 ~rxvt_fontset ();
75    
76 root 1.13 bool populate (const char *desc);
77 root 1.22 void set_prop (const rxvt_fontprop &prop, bool force_prop) { this->prop = prop; this->force_prop = force_prop; }
78 root 1.28 int find_font_ (uint32_t unicode); // same as find_font, but does not limit index
79 root 1.12 int find_font (uint32_t unicode);
80 root 1.1 int find_font (const char *name) const;
81 root 1.12 bool realize_font (int i);
82 root 1.1
83 root 1.12 // font-id's MUST fit into a signed 16 bit integer, and within 0..255
84 root 1.28 rxvt_font *get (uint32_t unicode, int id = fontCount)
85 root 1.1 {
86 root 1.28 id &= fontCount;
87    
88     return fonts[id == fontCount ? find_font_ (unicode) : id];
89 root 1.1 }
90    
91     private:
92 root 1.18 rxvt_term *term;
93 root 1.13 rxvt_fontprop prop;
94 root 1.22 bool force_prop;
95 root 1.1 simplevec<rxvt_font *> fonts;
96     const rxvt_fallback_font *fallback;
97    
98 root 1.12 typedef unsigned char pagemap[256];
99     vector<pagemap *> fmap;
100 root 1.1
101 root 1.13 void clear ();
102     rxvt_font *new_font (const char *name, codeset cs);
103 root 1.1 void add_fonts (const char *desc);
104     };
105    
106     #endif /* _DEFAULTFONT_H_ */
107