ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/defaultfont.h
Revision: 1.20
Committed: Wed Aug 4 03:29:28 2004 UTC (19 years, 9 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-3_5, rel-3_4
Changes since 1.19: +3 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.9 #ifndef DEFAULTFONT_H_
2     #define DEFAULTFONT_H_
3 pcg 1.1
4 pcg 1.14 #include <X11/Xlib.h>
5     #if XFT
6     # include <X11/Xft/Xft.h>
7     #endif
8    
9 pcg 1.1 #ifdef HAVE_XSETLOCALE
10     # define X_LOCALE
11     # include <X11/Xlocale.h>
12     #else
13     # ifdef HAVE_SETLOCALE
14 pcg 1.17 # include <clocale>
15 pcg 1.1 # endif
16     #endif /* HAVE_XLOCALE */
17    
18     #ifdef HAVE_NL_LANGINFO
19     # include <langinfo.h>
20     #endif
21    
22 root 1.20 #include <inttypes.h>
23    
24 pcg 1.1 #include "rxvtlib.h"
25     #include "feature.h"
26     #include "encoding.h"
27 pcg 1.9 #include "rxvtstl.h"
28 pcg 1.1
29 pcg 1.7 struct rxvt_fontprop {
30     enum {
31     medium = 100, bold = 200,
32     roman = 0, italic = 100,
33     };
34 pcg 1.8 int width, height;
35     int weight, slant;
36 pcg 1.7 };
37    
38 pcg 1.14 struct rxvt_drawable {
39     rxvt_display *display;
40     Drawable drawable;
41 pcg 1.15 #if XFT
42 pcg 1.14 XftDraw *xftdrawable;
43 pcg 1.15 operator XftDraw *();
44 pcg 1.14 #endif
45 pcg 1.15
46 pcg 1.14 rxvt_drawable (rxvt_display *display, Drawable drawable)
47 pcg 1.15 : display(display),
48     #if XFT
49     xftdrawable(0),
50     #endif
51     drawable(drawable)
52     { }
53    
54     #if XFT
55 pcg 1.14 ~rxvt_drawable ();
56 pcg 1.15 #endif
57 pcg 1.14
58     operator Drawable() { return drawable; }
59     };
60    
61 pcg 1.1 struct rxvt_font {
62 pcg 1.16 struct rxvt_fontset *fs;
63 pcg 1.1 // managed by the fontset
64 pcg 1.5 rxvt_t r;
65     void set_term (rxvt_t r) { this->r = r; }
66    
67 pcg 1.1 char *name;
68     codeset cs;
69 pcg 1.6 bool loaded; // wether we tried loading it before (not wether it's loaded)
70 pcg 1.1
71     // managed by the font object
72 pcg 1.7 bool slow; // wether this is a proportional font or has other funny characteristics
73 pcg 1.1 int ascent, descent,
74     width, height;
75    
76     void set_name (char *name)
77     {
78     if (this->name) free (this->name); // let the compiler optimize
79     this->name = name;
80     }
81    
82     rxvt_font () { name = 0; }
83 pcg 1.12 ~rxvt_font () { free (name); };
84 pcg 1.1
85 pcg 1.14 void clear_rect (rxvt_drawable &d, int x, int y, int w, int h, int color);
86 pcg 1.1
87     virtual void clear () { };
88    
89 pcg 1.7 virtual rxvt_fontprop properties () = 0;
90    
91     virtual bool load (const rxvt_fontprop &prop) = 0;
92 pcg 1.1 virtual bool has_codepoint (uint32_t unicode) = 0;
93    
94 pcg 1.14 virtual void draw (rxvt_drawable &d,
95     int x, int y,
96 pcg 1.1 const text_t *text, int len,
97     int fg, int bg) = 0;
98     };
99    
100 pcg 1.12 #define FONT_UNREF(f) do { (f)->clear (); delete (f); } while (0)
101 pcg 1.1
102     struct rxvt_fallback_font;
103    
104     struct rxvt_fontset {
105 pcg 1.18 char *fontdesc;
106    
107 pcg 1.5 rxvt_fontset (rxvt_t r);
108 pcg 1.1 ~rxvt_fontset ();
109    
110     rxvt_font *new_font (const char *name, codeset cs);
111    
112 pcg 1.13 bool populate (const char *desc);
113 root 1.19 int find_font (uint32_t unicode, bool bold = false);
114 pcg 1.1
115 root 1.20 // font-id's MUST fit into a signed 16 bit integer.
116 pcg 1.11 rxvt_font *operator [] (int id) const
117 pcg 1.1 {
118     return fonts[id];
119     }
120    
121     rxvt_font *base_font () const
122     {
123     return fonts[base_id];
124     }
125    
126     private:
127 pcg 1.5 rxvt_t r;
128 pcg 1.1 simplevec<rxvt_font *> fonts;
129     const rxvt_fallback_font *fallback;
130    
131 pcg 1.7 rxvt_fontprop base_prop;
132 pcg 1.1 int base_id;
133    
134     bool realize_font (int i);
135     void add_fonts (const char *desc);
136     void clear ();
137     };
138    
139     #endif /* _DEFAULTFONT_H_ */
140