- bitmap = dst = g_malloc(bw * bh * 4);
-
- unsigned char *data = vt_font_data + c*16;
- unsigned char d = *data;
-
- g_assert(fg >= 0 && fg < 16);
- g_assert(bg >= 0 && bg < 16);
-
- unsigned char fgc_red = default_red[fg];
- unsigned char fgc_blue = default_blu[fg];
- unsigned char fgc_green = default_grn[fg];
- unsigned char bgc_red = default_red[bg];
- unsigned char bgc_blue = default_blu[bg];
- unsigned char bgc_green = default_grn[bg];
-
- for (j = 0; j < 16; j++) {
- gboolean ul = (j == 14) && uline;
- for (i = 0; i < 8; i++) {
- if (i == 0) {
- d=*data;
- data++;
- }
- if (ul || d&0x80) {
- *(dst) = fgc_blue;
- *(dst+1) = fgc_green;
- *(dst+2) = fgc_red;
- *(dst+3) = 0;
- } else {
- *(dst) = bgc_blue;
- *(dst+1) = bgc_green;
- *(dst+2) = bgc_red;
- *(dst+3) = 0;
+ if (!bitmap) {
+ bitmap = dst = g_malloc(bw * bh * 4);
+
+ unsigned char *data = vt_font_data + c*16;
+ unsigned char d = *data;
+
+ g_assert(fg >= 0 && fg < 16);
+ g_assert(bg >= 0 && bg < 16);
+
+ unsigned char fgc_red = default_red[fg];
+ unsigned char fgc_blue = default_blu[fg];
+ unsigned char fgc_green = default_grn[fg];
+ unsigned char bgc_red = default_red[bg];
+ unsigned char bgc_blue = default_blu[bg];
+ unsigned char bgc_green = default_grn[bg];
+
+ for (j = 0; j < 16; j++) {
+ gboolean ul = (j == 14) && uline;
+ for (i = 0; i < 8; i++) {
+ if (i == 0) {
+ d=*data;
+ data++;
+ }
+ if (ul || d&0x80) {
+ *(dst) = fgc_blue;
+ *(dst+1) = fgc_green;
+ *(dst+2) = fgc_red;
+ *(dst+3) = 0;
+ } else {
+ *(dst) = bgc_blue;
+ *(dst+1) = bgc_green;
+ *(dst+2) = bgc_red;
+ *(dst+3) = 0;
+ }
+ d<<=1;
+ dst += 4;