annotate src/dmtext_bm.c @ 982:21aeff49d974

Oops. 100L fix to bitmapped text rendering.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 27 Feb 2015 17:49:10 +0200
parents 8aa0d640af74
children e06abfde6c39
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
1 /*
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
2 * DMLib
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
3 * -- Bitmap and TTF text & font support
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
4 * Programmed and designed by Matti 'ccr' Hamalainen
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
5 * (C) Copyright 2012 Tecnic Software productions (TNSP)
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
6 */
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
7 #include "dmtext.h"
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
8
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
9
634
656332eec724 Add condensed boolean flag to bitmap text rendering functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 200
diff changeset
10 void dmDrawBMTextConst(SDL_Surface *screen, DMBitmapFont *font, BOOL condensed, int mode, int xc, int yc, const char *fmt)
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
11 {
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
12 const char *ptr = fmt;
129
975725e3126d Cleanup some prototyping code.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
13 DMUnscaledBlitFunc blit = NULL;
70
a791146e3094 Make BM text work, a bit at least.
Matti Hamalainen <ccr@tnsp.org>
parents: 66
diff changeset
14
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
15 while (*ptr)
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
16 {
129
975725e3126d Cleanup some prototyping code.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
17 int ch = *ptr++;
70
a791146e3094 Make BM text work, a bit at least.
Matti Hamalainen <ccr@tnsp.org>
parents: 66
diff changeset
18 SDL_Surface *glyph;
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
19
129
975725e3126d Cleanup some prototyping code.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
20 if (ch >= 0 && ch < font->nglyphs && (glyph = font->glyphs[ch]) != NULL)
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
21 {
129
975725e3126d Cleanup some prototyping code.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
22 if (blit == NULL)
975725e3126d Cleanup some prototyping code.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
23 blit = dmGetUnscaledBlitFunc(glyph->format, screen->format, mode);
982
21aeff49d974 Oops. 100L fix to bitmapped text rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 875
diff changeset
24
21aeff49d974 Oops. 100L fix to bitmapped text rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 875
diff changeset
25 if (blit != NULL)
875
8aa0d640af74 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 812
diff changeset
26 {
8aa0d640af74 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 812
diff changeset
27 blit(glyph, xc, yc, screen);
8aa0d640af74 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 812
diff changeset
28 xc += condensed ? glyph->w : font->width;
8aa0d640af74 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 812
diff changeset
29 }
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
30 }
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
31 else
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
32 xc += font->width;
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
33 }
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
34 }
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
35
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
36
634
656332eec724 Add condensed boolean flag to bitmap text rendering functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 200
diff changeset
37 void dmDrawBMTextVA(SDL_Surface *screen, DMBitmapFont *font, BOOL condensed, int mode, int xc, int yc, const char *fmt, va_list ap)
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
38 {
200
b842cc92c787 No need for dynamic allocation here, I think.
Matti Hamalainen <ccr@tnsp.org>
parents: 178
diff changeset
39 char tmp[512];
b842cc92c787 No need for dynamic allocation here, I think.
Matti Hamalainen <ccr@tnsp.org>
parents: 178
diff changeset
40 vsnprintf(tmp, sizeof(tmp), fmt, ap);
634
656332eec724 Add condensed boolean flag to bitmap text rendering functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 200
diff changeset
41 dmDrawBMTextConst(screen, font, condensed, mode, xc, yc, tmp);
200
b842cc92c787 No need for dynamic allocation here, I think.
Matti Hamalainen <ccr@tnsp.org>
parents: 178
diff changeset
42 dmFree(tmp);
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
43 }
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
44
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
45
634
656332eec724 Add condensed boolean flag to bitmap text rendering functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 200
diff changeset
46 void dmDrawBMText(SDL_Surface *screen, DMBitmapFont *font, BOOL condensed, int mode, int xc, int yc, const char *fmt, ...)
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
47 {
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
48 va_list ap;
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
49
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
50 va_start(ap, fmt);
634
656332eec724 Add condensed boolean flag to bitmap text rendering functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 200
diff changeset
51 dmDrawBMTextVA(screen, font, condensed, mode, xc, yc, fmt, ap);
60
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
52 va_end(ap);
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
53 }
f28cd66356f6 Initial work for bitmapped fonts and text drawing. Also moved TTF header
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
54
65
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
55
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
56 DMBitmapFont *dmNewBitmapFont(int nglyphs, int width, int height)
65
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
57 {
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
58 DMBitmapFont *font = dmMalloc0(sizeof(DMBitmapFont));
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
59 if (font == NULL)
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
60 return NULL;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
61
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
62 font->width = width;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
63 font->height = height;
65
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
64 font->nglyphs = nglyphs;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
65 font->glyphs = dmCalloc(nglyphs, sizeof(SDL_Surface *));
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
66 if (font->glyphs == NULL)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
67 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
68 dmFree(font);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
69 return NULL;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
70 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
71
65
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
72 return font;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
73 }
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
74
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
75
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
76 int dmFreeBitmapFont(DMBitmapFont *font)
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
77 {
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
78 int i;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
79
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
80 if (font == NULL)
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
81 return DMERR_NULLPTR;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
82
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
83 for (i = 0; i < font->nglyphs; i++)
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
84 {
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
85 if (font->glyphs[i] != NULL)
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
86 {
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
87 SDL_FreeSurface(font->glyphs[i]);
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
88 font->glyphs[i] = NULL;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
89 }
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
90 }
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
91
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
92 dmFree(font);
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
93 return DMERR_OK;
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
94 }
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
95
03375aa0ef2b Implement some new functions for bitmapped font handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 64
diff changeset
96
100
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
97 /* Set the palette for each glyph. While the function allows you to
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
98 * specify 'start' and 'end' indices and palette array freely, you should
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
99 * typically use DMFONT_NPALETTE size palette starting at index 0.
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
100 */
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
101 int dmSetBitmapFontPalette(DMBitmapFont *font, SDL_Color *pal, int start, int size)
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
102 {
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
103 int i;
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
104
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
105 if (font == NULL)
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
106 return DMERR_NULLPTR;
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
107
102
751af3f0e3f2 Oops, 100L :(
Matti Hamalainen <ccr@tnsp.org>
parents: 101
diff changeset
108 if (start < 0 || size < 1)
100
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
109 return DMERR_INVALID_ARGS;
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
110
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
111 for (i = 0; i < font->nglyphs; i++)
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
112 {
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
113 SDL_Surface *glyph = font->glyphs[i];
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
114 if (glyph != NULL)
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
115 {
101
8bba97252d85 Oops, 10L.
Matti Hamalainen <ccr@tnsp.org>
parents: 100
diff changeset
116 SDL_SetColors(glyph, pal, start, size);
100
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
117 }
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
118 }
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
119
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
120 return DMERR_OK;
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
121 }
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
122
162
040e3bbce5ba Add some extra debugging stuff.
Matti Hamalainen <ccr@tnsp.org>
parents: 161
diff changeset
123 //#define FN_DEBUG
100
f16d102dbbac Add a function for setting bitmapped font palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
124
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
125 int dmLoadBitmapFont(DMResource *res, DMBitmapFont **pfont)
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
126 {
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
127 DMBitmapFont *font;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
128 char magic[8];
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
129 Uint16 version, nglyphs, maxglyph;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
130 int width, height;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
131 BOOL tsfont = FALSE;
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
132
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
133 // Check magic and version
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
134 dmf_read_str(res, (Uint8 *) &magic, 6);
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
135 dmf_read_le16(res, &version);
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
136
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
137 // Check if it is a legacy TSFONT file
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
138 if (memcmp(magic, TSFONT_MAGIC, 6) == 0)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
139 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
140 // Yep, we handle these a bit differently
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
141 int encoding = dmfgetc(res);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
142 tsfont = TRUE;
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
143
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
144 if (version > TSFONT_VERSION)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
145 return DMERR_VERSION;
132
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
146
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
147 #ifdef FN_DEBUG
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
148 fprintf(stderr, "TSFONT v%d.%d (0x%04x), encoding=%d\n", version >> 8, version & 0xff, version, encoding);
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
149 #endif
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
150
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
151 // There were only two encodings, 0 = none and 1 = RLE
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
152 // of which RLE was never actually used ... derp.
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
153 if (encoding != 0)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
154 return DMERR_NOT_SUPPORTED;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
155 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
156 else
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
157 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
158 if (memcmp(magic, DMFONT_MAGIC, 6) != 0)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
159 return DMERR_INVALID;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
160
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
161 if (version > DMFONT_VERSION)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
162 return DMERR_VERSION;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
163 }
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
164
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
165 // Read other header data
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
166 if (tsfont)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
167 {
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
168 // TSFONT only has number of glyphs stored in the file
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
169 nglyphs = dmfgetc(res);
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
170
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
171 // Maximum glyph number
104
7160c1d71ade Few nasty bugs fixed in TSFONT loading.
Matti Hamalainen <ccr@tnsp.org>
parents: 102
diff changeset
172 maxglyph = 256;
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
173 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
174 else
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
175 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
176 dmf_read_le16(res, &nglyphs);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
177 dmf_read_le16(res, &maxglyph);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
178 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
179
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
180 width = dmfgetc(res);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
181 height = dmfgetc(res);
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
182
132
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
183 #ifdef FN_DEBUG
162
040e3bbce5ba Add some extra debugging stuff.
Matti Hamalainen <ccr@tnsp.org>
parents: 161
diff changeset
184 fprintf(stderr, "nglyphs=%d (0x%02x), maxglyph=%d (0x%02x) width=%d, height=%d\n",
040e3bbce5ba Add some extra debugging stuff.
Matti Hamalainen <ccr@tnsp.org>
parents: 161
diff changeset
185 nglyphs, nglyphs, maxglyph, maxglyph, width, height);
132
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
186 #endif
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
187
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
188 if (tsfont)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
189 {
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
190 // TSFONT color assignments (boolean) .. we discard this.
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
191 dmfgetc(res);
132
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
192
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
193 // Very old TSFONTs have some extra data that is not used
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
194 // .. can't actually even remember what it was for.
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
195 if (version == 0x0200)
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
196 {
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
197 int i;
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
198 for (i = 0; i < 32; i++)
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
199 dmfgetc(res);
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
200 }
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
201 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
202
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
203 if (width < DMFONT_MIN_WIDTH ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
204 height < DMFONT_MIN_HEIGHT ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
205 width > DMFONT_MAX_WIDTH ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
206 height > DMFONT_MAX_HEIGHT ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
207 nglyphs > DMFONT_MAX_GLYPHS ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
208 maxglyph > DMFONT_MAX_GLYPHS ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
209 maxglyph < 1)
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
210 return DMERR_INVALID_DATA;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
211
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
212 // Allocate font
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
213 if ((*pfont = font = dmNewBitmapFont(maxglyph, width, height)) == NULL)
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
214 return DMERR_MALLOC;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
215
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
216 // Read glyph data, if any
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
217 if (nglyphs > 0)
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
218 {
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
219 int n, i;
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
220 Uint32 BitsPerPixel, Rmask, Gmask, Bmask, Amask;
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
221 SDL_Color pal[DMFONT_NPALETTE];
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
222
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
223 // Setup palette for 8bpp fonts
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
224 for (n = 0; n < DMFONT_NPALETTE; n++)
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
225 {
104
7160c1d71ade Few nasty bugs fixed in TSFONT loading.
Matti Hamalainen <ccr@tnsp.org>
parents: 102
diff changeset
226 pal[n].r = pal[n].g = pal[n].b = 0;
7160c1d71ade Few nasty bugs fixed in TSFONT loading.
Matti Hamalainen <ccr@tnsp.org>
parents: 102
diff changeset
227 pal[n].unused = n > 0 ? 255 : 0;
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
228 }
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
229
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
230 if (tsfont)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
231 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
232 BitsPerPixel = 8;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
233 Rmask = Gmask = Bmask = Amask = 0;
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
234 }
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
235 else
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
236 {
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
237 BitsPerPixel = dmfgetc(res);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
238 dmf_read_le32(res, &Rmask);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
239 dmf_read_le32(res, &Gmask);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
240 dmf_read_le32(res, &Bmask);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
241 dmf_read_le32(res, &Amask);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
242 }
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
243
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
244 for (i = 0; i < nglyphs; i++)
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
245 {
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
246 int y;
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
247 Uint16 index;
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
248 Uint8 *pixels;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
249 SDL_Surface *glyph;
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
250
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
251 // TSFONT format has only byte sized index
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
252 if (tsfont)
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
253 index = dmfgetc(res);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
254 else
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
255 dmf_read_le16(res, &index);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
256
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
257 // Read dimensions
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
258 width = dmfgetc(res);
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
259 height = dmfgetc(res);
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
260
132
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
261 #ifdef FN_DEBUG
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
262 fprintf(stderr, "#%d @ %d - w=%d, h=%d\n", i, index, width, height);
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
263 #endif
b5569c84f00a Add support for loading ancient version of TSFONTs.
Matti Hamalainen <ccr@tnsp.org>
parents: 129
diff changeset
264
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
265 if (width < DMFONT_MIN_WIDTH ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
266 height < DMFONT_MIN_HEIGHT ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
267 width > DMFONT_MAX_WIDTH ||
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
268 height > DMFONT_MAX_HEIGHT ||
104
7160c1d71ade Few nasty bugs fixed in TSFONT loading.
Matti Hamalainen <ccr@tnsp.org>
parents: 102
diff changeset
269 index >= maxglyph)
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
270 return DMERR_INVALID_DATA;
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
271
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
272 // Allocate bitmap
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
273 font->glyphs[index] = glyph = SDL_CreateRGBSurface(
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
274 SDL_SWSURFACE, width, height,
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
275 BitsPerPixel, Rmask, Gmask,
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
276 Bmask,
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
277 Amask);
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
278
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
279 if (glyph == NULL)
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
280 return DMERR_MALLOC;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
281
91
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
282 if (BitsPerPixel == 8)
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
283 SDL_SetColors(glyph, pal, 0, DMFONT_NPALETTE);
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
284
e1e308167991 Various improvements in the bitmapped font loading and saving functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 89
diff changeset
285 // Read pixel data
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
286 pixels = glyph->pixels;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
287 for (y = 0; y < glyph->h; y++)
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
288 {
89
b10884934aca Various improvements in bitmapped font support, and addition of legacy
Matti Hamalainen <ccr@tnsp.org>
parents: 76
diff changeset
289 if (dmfread(pixels, glyph->format->BytesPerPixel, glyph->w, res) != (size_t) glyph->w)
75
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
290 return DMERR_FREAD;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
291 pixels += glyph->pitch;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
292 }
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
293 }
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
294 }
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
295
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
296 return DMERR_OK;
e6535609c161 Initial implementation of loading and saving of bitmap fonts.
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
297 }