Change the unifont API so that text is passed right down to the
[u/mdw/putty] / unix / gtkfont.h
1 /*
2 * Header file for gtkfont.c. Has to be separate from unix.h
3 * because it depends on GTK data types, hence can't be included
4 * from cross-platform code (which doesn't go near GTK).
5 */
6
7 #ifndef PUTTY_GTKFONT_H
8 #define PUTTY_GTKFONT_H
9
10 /*
11 * Exports from gtkfont.c.
12 */
13 struct unifont_vtable; /* contents internal to gtkfont.c */
14 typedef struct unifont {
15 const struct unifont_vtable *vt;
16 /*
17 * `Non-static data members' of the `class', accessible to
18 * external code.
19 */
20
21 /*
22 * public_charset is the charset used when the user asks for
23 * `Use font encoding'.
24 */
25 int public_charset;
26
27 /*
28 * Font dimensions needed by clients.
29 */
30 int width, height, ascent, descent;
31 } unifont;
32
33 unifont *unifont_create(GtkWidget *widget, const char *name,
34 int wide, int bold,
35 int shadowoffset, int shadowalways);
36 void unifont_destroy(unifont *font);
37 void unifont_draw_text(GdkDrawable *target, GdkGC *gc, unifont *font,
38 int x, int y, const wchar_t *string, int len,
39 int wide, int bold, int cellwidth);
40
41 /*
42 * Unified font selector dialog. I can't be bothered to do a
43 * proper GTK subclassing today, so this will just be an ordinary
44 * data structure with some useful members.
45 *
46 * (Of course, these aren't the only members; this structure is
47 * contained within a bigger one which holds data visible only to
48 * the implementation.)
49 */
50 typedef struct unifontsel {
51 void *user_data; /* settable by the user */
52 GtkWindow *window;
53 GtkWidget *ok_button, *cancel_button;
54 } unifontsel;
55
56 unifontsel *unifontsel_new(const char *wintitle);
57 void unifontsel_destroy(unifontsel *fontsel);
58 void unifontsel_set_name(unifontsel *fontsel, const char *fontname);
59 char *unifontsel_get_name(unifontsel *fontsel);
60
61 #endif /* PUTTY_GTKFONT_H */