blob: 868ff187895b87518b29efd0757925b2acefddb8 [file] [log] [blame]
adamdunkelsee08cc92004-07-04 21:04:13 +00001
2#include "ctk-gtksim.h"
3
4#include "ctk-gtksim-draw.h"
5
6#define RASTER_X 8
7
8#define FONT_BASELINE 8
9
10struct ctk_gtksim_draw_font {
11 /* GdkFont *font;*/
12 PangoFontDescription *font;
13};
14
15struct ctk_gtksim_draw_color {
16 GdkGC *color;
17};
18
19struct ctk_gtksim_draw_font ctk_gtksim_draw_font_normal,
20 ctk_gtksim_draw_font_bold,
21 ctk_gtksim_draw_font_menu,
22 ctk_gtksim_draw_font_monospace,
23 ctk_gtksim_draw_font_monospace_bold;
24
25struct ctk_gtksim_draw_color ctk_gtksim_draw_color_white,
26 ctk_gtksim_draw_color_lightgray,
27 ctk_gtksim_draw_color_midgray,
28 ctk_gtksim_draw_color_darkgray,
29 ctk_gtksim_draw_color_ddarkgray,
30 ctk_gtksim_draw_color_black,
31 ctk_gtksim_draw_color_blue;
32
33/*static GdkFont *font, *ctk_gtksim_draw_font_bold, *menufont, *ctk_gtksim_draw_font_monospace;*/
34
35static PangoLayout *layout;
36
37/*--------------------------------------------------------------------------*/
38int
39ctk_gtksim_draw_string_width(struct ctk_gtksim_draw_font *font,
40 char *str, int monospace)
41{
42 int width;
43 if(monospace) {
44 return strlen(str) * RASTER_X;
45 } else {
46 pango_layout_set_text(layout, str, -1);
47 pango_layout_set_font_description(layout, font->font);
48 pango_layout_get_size(layout, &width, NULL);
49 return width / PANGO_SCALE;
50 /* return gdk_string_width(font->font, str);*/
51 }
52}
53/*--------------------------------------------------------------------------*/
54void
55ctk_gtksim_draw_string(struct ctk_gtksim_draw_font *font,
56 struct ctk_gtksim_draw_color *color,
57 int x, int y, char *str,
58 int monospace)
59{
60 int i;
61 char text[2];
62
63 pango_layout_set_font_description(layout, font->font);
64
65 if(monospace) {
66 text[1] = 0;
67 for(i = 0; i < strlen(str); ++i) {
68 text[0] = str[i];
69 pango_layout_set_text(layout, text, 1);
70
71 gdk_draw_layout(ctk_gtksim_pixmap, color->color,
72 x, y, layout);
73 /* gdk_draw_string(ctk_gtksim_pixmap, font->font, color->color,
74 x, y + FONT_BASELINE, text);*/
75 x += RASTER_X;
76 }
77 } else {
78 pango_layout_set_text(layout, str, -1);
79
80 gdk_draw_layout(ctk_gtksim_pixmap, color->color,
81 x, y, layout);
82 /* gdk_draw_string(ctk_gtksim_pixmap, font->font, color->color,
83 x, y + FONT_BASELINE, str);*/
84 }
85}
86/*--------------------------------------------------------------------------*/
87static GdkGC *
88get_color(unsigned short r, unsigned short g, unsigned short b)
89{
90 GdkGCValues values;
91 GdkColor color;
92
93 color.pixel = 0;
94 color.red = r;
95 color.green = g;
96 color.blue = b;
97
98 if(gdk_colormap_alloc_color(gdk_colormap_get_system(),
99 &color, FALSE, TRUE)) {
100 }
101
102 values.foreground = color;
103
104 return gdk_gc_new_with_values(ctk_gtksim_drawing_area->window,
105 &values,
106 GDK_GC_FOREGROUND);
107}
108/*--------------------------------------------------------------------------*/
109void
110ctk_gtksim_draw_init(void)
111{
112 /*
113 ctk_gtksim_draw_font_normal.font =
114 gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");
115 if(ctk_gtksim_draw_font_normal.font != NULL) {
116 printf("ctk-gtksim-service: Font loaded OK\n");
117 } else {
118 printf("ctk-gtksim-service: Font loading failed\n");
119 exit(1);
120 }
121
122 ctk_gtksim_draw_font_bold.font =
123 gdk_font_load("-*-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*");
124 if(ctk_gtksim_draw_font_bold.font != NULL) {
125 printf("ctk-gtksim-service: Font loaded OK\n");
126 } else {
127 printf("ctk-gtksim-service: Font loading failed\n");
128 exit(1);
129 }
130
131 ctk_gtksim_draw_font_menu.font =
132 gdk_font_load("-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*");
133 if(ctk_gtksim_draw_font_menu.font != NULL) {
134 printf("ctk-gtksim-service: Font loaded OK\n");
135 } else {
136 printf("ctk-gtksim-service: Font loading failed\n");
137 exit(1);
138 }
139
140 ctk_gtksim_draw_font_monospace.font =
141 gdk_font_load("-*-courier-medium-r-*-*-*-120-*-*-*-*-*-*");
142 if(ctk_gtksim_draw_font_monospace.font != NULL) {
143 printf("ctk-gtksim-service: Font loaded OK\n");
144 } else {
145 printf("ctk-gtksim-service: Font loading failed\n");
146 exit(1);
147 }
148 */
149 ctk_gtksim_draw_color_blue.color = get_color(0, 0, 0xffff);
150 ctk_gtksim_draw_color_white.color = get_color(0xffff, 0xffff, 0xffff);
151 ctk_gtksim_draw_color_lightgray.color = get_color(0xefff, 0xefff, 0xefff);
152 ctk_gtksim_draw_color_midgray.color = get_color(0xdfff, 0xdfff, 0xdfff);
153 ctk_gtksim_draw_color_darkgray.color = get_color(0xcfff, 0xcfff, 0xcfff);
154 ctk_gtksim_draw_color_ddarkgray.color = get_color(0xafff, 0xafff, 0xafff);
155 ctk_gtksim_draw_color_black.color = get_color(0, 0, 0);
156
157 layout = pango_layout_new(gtk_widget_get_pango_context(ctk_gtksim_drawing_area));
158
159 ctk_gtksim_draw_font_normal.font =
160 pango_font_description_from_string("Arial 8");
161 ctk_gtksim_draw_font_bold.font =
162 pango_font_description_from_string("Arial bold 8");
163 ctk_gtksim_draw_font_menu.font =
164 pango_font_description_from_string("Arial bold 9");
165 ctk_gtksim_draw_font_monospace.font =
166 pango_font_description_from_string("Monospace 8");
167 ctk_gtksim_draw_font_monospace_bold.font =
168 pango_font_description_from_string("Monospace bold 8");
169
170
171}
172/*--------------------------------------------------------------------------*/