Mercurial > hg > dmlib
annotate src/dmtext_bm.c @ 1315:7687412f9aef
Fix jssmod sample conversion flags storing .. urgh.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 20 Aug 2017 01:54:54 +0300 |
parents | e06abfde6c39 |
children | 5e5f75b45f8d |
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 | 26 { |
27 blit(glyph, xc, yc, screen); | |
28 xc += condensed ? glyph->w : font->width; | |
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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
49 |
60
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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
82 |
65
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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
107 |
102 | 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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
110 |
100
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 | 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; |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
132 |
75
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); |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
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 |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
150 |
89
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 } |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
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); |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
170 |
91
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 } |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
179 |
89
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); |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
982
diff
changeset
|
192 |
132
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 } |