| a133dbce |
sago007 |
2016-03-26 10:05 |
1 |
/*
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
2 |
NFont v4.0.0: A font class for SDL
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
3 |
by Jonathan Dearborn
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
4 |
Dedicated to the memory of Florian Hufsky
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
5 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
6 |
License:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
7 |
The short:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
8 |
Use it however you'd like, but keep the copyright and license notice
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
9 |
whenever these files or parts of them are distributed in uncompiled form.
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
10 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
11 |
The long:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
12 |
Copyright (c) 2014 Jonathan Dearborn
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
13 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
14 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
15 |
of this software and associated documentation files (the "Software"), to deal
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
16 |
in the Software without restriction, including without limitation the rights
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
17 |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
18 |
copies of the Software, and to permit persons to whom the Software is
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
19 |
furnished to do so, subject to the following conditions:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
20 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
21 |
The above copyright notice and this permission notice shall be included in
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
22 |
all copies or substantial portions of the Software.
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
23 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
24 |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
25 |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
26 |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
27 |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
28 |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
29 |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
30 |
THE SOFTWARE.
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
31 |
*/
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
32 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
33 |
#include "NFont.h"
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
34 |
#include "SDL_FontCache.h"
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
35 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
36 |
#include <cmath>
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
37 |
#include <cstdio>
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
38 |
#ifndef M_PI
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
39 |
#define M_PI 3.14159265358979323846
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
40 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
41 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
42 |
#include <string>
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
43 |
#include <cstring>
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
44 |
#include <list>
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
45 |
using std::string;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
46 |
using std::list;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
47 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
48 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
49 |
#define NFont_Target GPU_Target
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
50 |
#define NFont_Image GPU_Image
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
51 |
#define NFont_Log GPU_LogError
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
52 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
53 |
#define NFont_Target SDL_Renderer
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
54 |
#define NFont_Image SDL_Texture
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
55 |
#define NFont_Log SDL_Log
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
56 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
57 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
58 |
#define MIN(a,b) ((a) < (b)? (a) : (b))
|
| 3a164ed3 |
sago007 |
2016-10-02 13:26 |
59 |
#define MAX(a,b) ((a) > (b)? (a) : (b))
|
| 3a164ed3 |
sago007 |
2016-10-02 13:26 |
60 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
61 |
#define NFONT_BUFFER_SIZE 1024
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
62 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
63 |
// vsnprintf replacement adapted from Valentin Milea:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
64 |
// http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
65 |
#if defined(_MSC_VER) && _MSC_VER < 1900
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
66 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
67 |
#define vsnprintf c99_vsnprintf
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
68 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
69 |
static int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
70 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
71 |
int count = -1;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
72 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
73 |
if (size != 0)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
74 |
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
75 |
if (count == -1)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
76 |
count = _vscprintf(format, ap);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
77 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
78 |
return count;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
79 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
80 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
81 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
82 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
83 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
84 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
85 |
static inline SDL_Surface* createSurface24(Uint32 width, Uint32 height)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
86 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
87 |
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
88 |
return SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 24, 0xFF0000, 0x00FF00, 0x0000FF, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
89 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
90 |
return SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 24, 0x0000FF, 0x00FF00, 0xFF0000, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
91 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
92 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
93 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
94 |
static inline SDL_Surface* createSurface32(Uint32 width, Uint32 height)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
95 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
96 |
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
97 |
return SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
98 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
99 |
return SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
100 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
101 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
102 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
103 |
static inline char* copyString(const char* c)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
104 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
105 |
if(c == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
106 |
return NULL;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
107 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
108 |
char* result = new char[strlen(c)+1];
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
109 |
strcpy(result, c);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
110 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
111 |
return result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
112 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
113 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
114 |
static inline Uint32 getPixel(SDL_Surface *Surface, int x, int y)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
115 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
116 |
Uint8* bits;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
117 |
Uint32 bpp;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
118 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
119 |
if(x < 0 || x >= Surface->w)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
120 |
return 0; // Best I could do for errors
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
121 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
122 |
bpp = Surface->format->BytesPerPixel;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
123 |
bits = ((Uint8*)Surface->pixels) + y*Surface->pitch + x*bpp;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
124 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
125 |
switch (bpp)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
126 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
127 |
case 1:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
128 |
return *((Uint8*)Surface->pixels + y * Surface->pitch + x);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
129 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
130 |
case 2:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
131 |
return *((Uint16*)Surface->pixels + y * Surface->pitch/2 + x);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
132 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
133 |
case 3:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
134 |
// Endian-correct, but slower
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
135 |
Uint8 r, g, b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
136 |
r = *((bits)+Surface->format->Rshift/8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
137 |
g = *((bits)+Surface->format->Gshift/8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
138 |
b = *((bits)+Surface->format->Bshift/8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
139 |
return SDL_MapRGB(Surface->format, r, g, b);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
140 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
141 |
case 4:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
142 |
return *((Uint32*)Surface->pixels + y * Surface->pitch/4 + x);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
143 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
144 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
145 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
146 |
return 0; // FIXME: Handle errors better
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
147 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
148 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
149 |
static inline void setPixel(SDL_Surface* surface, int x, int y, Uint32 color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
150 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
151 |
int bpp = surface->format->BytesPerPixel;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
152 |
Uint8* bits = ((Uint8 *)surface->pixels) + y*surface->pitch + x*bpp;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
153 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
154 |
/* Set the pixel */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
155 |
switch(bpp)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
156 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
157 |
case 1:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
158 |
*((Uint8 *)(bits)) = (Uint8)color;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
159 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
160 |
case 2:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
161 |
*((Uint16 *)(bits)) = (Uint16)color;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
162 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
163 |
case 3: { /* Format/endian independent */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
164 |
Uint8 r,g,b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
165 |
r = (color >> surface->format->Rshift) & 0xFF;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
166 |
g = (color >> surface->format->Gshift) & 0xFF;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
167 |
b = (color >> surface->format->Bshift) & 0xFF;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
168 |
*((bits)+surface->format->Rshift/8) = r;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
169 |
*((bits)+surface->format->Gshift/8) = g;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
170 |
*((bits)+surface->format->Bshift/8) = b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
171 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
172 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
173 |
case 4:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
174 |
*((Uint32 *)(bits)) = (Uint32)color;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
175 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
176 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
177 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
178 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
179 |
static inline void drawPixel(SDL_Surface *surface, Sint16 x, Sint16 y, Uint32 color, Uint8 alpha)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
180 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
181 |
if(x > surface->clip_rect.x + surface->clip_rect.w || x < surface->clip_rect.x || y > surface->clip_rect.y + surface->clip_rect.h || y < surface->clip_rect.y)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
182 |
return;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
183 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
184 |
switch (surface->format->BytesPerPixel)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
185 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
186 |
case 1: { /* Assuming 8-bpp */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
187 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
188 |
Uint8 *pixel = (Uint8 *)surface->pixels + y*surface->pitch + x;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
189 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
190 |
Uint8 dR = surface->format->palette->colors[*pixel].r;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
191 |
Uint8 dG = surface->format->palette->colors[*pixel].g;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
192 |
Uint8 dB = surface->format->palette->colors[*pixel].b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
193 |
Uint8 sR = surface->format->palette->colors[color].r;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
194 |
Uint8 sG = surface->format->palette->colors[color].g;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
195 |
Uint8 sB = surface->format->palette->colors[color].b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
196 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
197 |
dR = dR + ((sR-dR)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
198 |
dG = dG + ((sG-dG)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
199 |
dB = dB + ((sB-dB)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
200 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
201 |
*pixel = SDL_MapRGB(surface->format, dR, dG, dB);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
202 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
203 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
204 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
205 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
206 |
case 2: { /* Probably 15-bpp or 16-bpp */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
207 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
208 |
Uint32 Rmask = surface->format->Rmask, Gmask = surface->format->Gmask, Bmask = surface->format->Bmask, Amask = surface->format->Amask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
209 |
Uint16 *pixel = (Uint16 *)surface->pixels + y*surface->pitch/2 + x;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
210 |
Uint32 dc = *pixel;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
211 |
Uint32 R,G,B,A=0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
212 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
213 |
R = ((dc & Rmask) + (( (color & Rmask) - (dc & Rmask) ) * alpha >> 8)) & Rmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
214 |
G = ((dc & Gmask) + (( (color & Gmask) - (dc & Gmask) ) * alpha >> 8)) & Gmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
215 |
B = ((dc & Bmask) + (( (color & Bmask) - (dc & Bmask) ) * alpha >> 8)) & Bmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
216 |
if( Amask )
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
217 |
A = ((dc & Amask) + (( (color & Amask) - (dc & Amask) ) * alpha >> 8)) & Amask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
218 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
219 |
*pixel= R | G | B | A;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
220 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
221 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
222 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
223 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
224 |
case 3: { /* Slow 24-bpp mode, usually not used */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
225 |
Uint8 *pix = (Uint8 *)surface->pixels + y * surface->pitch + x*3;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
226 |
Uint8 rshift8=surface->format->Rshift/8;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
227 |
Uint8 gshift8=surface->format->Gshift/8;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
228 |
Uint8 bshift8=surface->format->Bshift/8;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
229 |
Uint8 ashift8=surface->format->Ashift/8;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
230 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
231 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
232 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
233 |
Uint8 dR, dG, dB, dA;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
234 |
Uint8 sR, sG, sB, sA;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
235 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
236 |
pix = (Uint8 *)surface->pixels + y * surface->pitch + x*3;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
237 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
238 |
dR = *((pix)+rshift8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
239 |
dG = *((pix)+gshift8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
240 |
dB = *((pix)+bshift8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
241 |
dA = *((pix)+ashift8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
242 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
243 |
sR = (color>>surface->format->Rshift)&0xff;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
244 |
sG = (color>>surface->format->Gshift)&0xff;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
245 |
sB = (color>>surface->format->Bshift)&0xff;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
246 |
sA = (color>>surface->format->Ashift)&0xff;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
247 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
248 |
dR = dR + ((sR-dR)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
249 |
dG = dG + ((sG-dG)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
250 |
dB = dB + ((sB-dB)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
251 |
dA = dA + ((sA-dA)*alpha >> 8);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
252 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
253 |
*((pix)+rshift8) = dR;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
254 |
*((pix)+gshift8) = dG;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
255 |
*((pix)+bshift8) = dB;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
256 |
*((pix)+ashift8) = dA;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
257 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
258 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
259 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
260 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
261 |
case 4: { /* Probably 32-bpp */
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
262 |
Uint32 Rmask = surface->format->Rmask, Gmask = surface->format->Gmask, Bmask = surface->format->Bmask, Amask = surface->format->Amask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
263 |
Uint32* pixel = (Uint32*)surface->pixels + y*surface->pitch/4 + x;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
264 |
Uint32 source = *pixel;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
265 |
Uint32 R,G,B,A;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
266 |
R = color & Rmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
267 |
G = color & Gmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
268 |
B = color & Bmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
269 |
A = 0; // keep this as 0 to avoid corruption of non-alpha surfaces
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
270 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
271 |
// Blend and keep dest alpha
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
272 |
if( alpha != SDL_ALPHA_OPAQUE ){
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
273 |
R = ((source & Rmask) + (( R - (source & Rmask) ) * alpha >> 8)) & Rmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
274 |
G = ((source & Gmask) + (( G - (source & Gmask) ) * alpha >> 8)) & Gmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
275 |
B = ((source & Bmask) + (( B - (source & Bmask) ) * alpha >> 8)) & Bmask;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
276 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
277 |
if(Amask)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
278 |
A = (source & Amask);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
279 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
280 |
*pixel = R | G | B | A;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
281 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
282 |
break;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
283 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
284 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
285 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
286 |
static inline NFont::Rectf rectUnion(const NFont::Rectf& A, const NFont::Rectf& B)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
287 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
288 |
float x,x2,y,y2;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
289 |
x = MIN(A.x, B.x);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
290 |
y = MIN(A.y, B.y);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
291 |
x2 = MAX(A.x+A.w, B.x+B.w);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
292 |
y2 = MAX(A.y+A.h, B.y+B.h);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
293 |
NFont::Rectf result(x, y, MAX(0, x2 - x), MAX(0, y2 - y));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
294 |
return result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
295 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
296 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
297 |
// Adapted from SDL_IntersectRect
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
298 |
static inline NFont::Rectf rectIntersect(const NFont::Rectf& A, const NFont::Rectf& B)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
299 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
300 |
NFont::Rectf result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
301 |
float Amin, Amax, Bmin, Bmax;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
302 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
303 |
// Horizontal intersection
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
304 |
Amin = A.x;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
305 |
Amax = Amin + A.w;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
306 |
Bmin = B.x;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
307 |
Bmax = Bmin + B.w;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
308 |
if(Bmin > Amin)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
309 |
Amin = Bmin;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
310 |
result.x = Amin;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
311 |
if(Bmax < Amax)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
312 |
Amax = Bmax;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
313 |
result.w = Amax - Amin > 0 ? Amax - Amin : 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
314 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
315 |
// Vertical intersection
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
316 |
Amin = A.y;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
317 |
Amax = Amin + A.h;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
318 |
Bmin = B.y;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
319 |
Bmax = Bmin + B.h;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
320 |
if(Bmin > Amin)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
321 |
Amin = Bmin;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
322 |
result.y = Amin;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
323 |
if(Bmax < Amax)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
324 |
Amax = Bmax;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
325 |
result.h = Amax - Amin > 0 ? Amax - Amin : 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
326 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
327 |
return result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
328 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
329 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
330 |
static inline SDL_Surface* copySurface(SDL_Surface *Surface)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
331 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
332 |
return SDL_ConvertSurface(Surface, Surface->format, Surface->flags);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
333 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
334 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
335 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
336 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
337 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
338 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
339 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
340 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
341 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
342 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
343 |
NFont::Color::Color()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
344 |
: r(0), g(0), b(0), a(255)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
345 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
346 |
NFont::Color::Color(Uint8 r, Uint8 g, Uint8 b)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
347 |
: r(r), g(g), b(b), a(255)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
348 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
349 |
NFont::Color::Color(Uint8 r, Uint8 g, Uint8 b, Uint8 a)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
350 |
: r(r), g(g), b(b), a(a)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
351 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
352 |
NFont::Color::Color(const SDL_Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
353 |
: r(color.r), g(color.g), b(color.b), a(color.a)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
354 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
355 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
356 |
NFont::Color& NFont::Color::rgb(Uint8 R, Uint8 G, Uint8 B)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
357 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
358 |
r = R;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
359 |
g = G;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
360 |
b = B;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
361 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
362 |
return *this;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
363 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
364 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
365 |
NFont::Color& NFont::Color::rgba(Uint8 R, Uint8 G, Uint8 B, Uint8 A)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
366 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
367 |
r = R;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
368 |
g = G;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
369 |
b = B;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
370 |
a = A;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
371 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
372 |
return *this;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
373 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
374 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
375 |
NFont::Color& NFont::Color::color(const SDL_Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
376 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
377 |
r = color.r;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
378 |
g = color.g;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
379 |
b = color.b;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
380 |
a = color.a;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
381 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
382 |
return *this;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
383 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
384 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
385 |
SDL_Color NFont::Color::to_SDL_Color() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
386 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
387 |
SDL_Color c = {r, g, b, a};
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
388 |
return c;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
389 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
390 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
391 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
392 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
393 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
394 |
NFont::Rectf::Rectf()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
395 |
: x(0), y(0), w(0), h(0)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
396 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
397 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
398 |
NFont::Rectf::Rectf(float x, float y)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
399 |
: x(x), y(y), w(0), h(0)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
400 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
401 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
402 |
NFont::Rectf::Rectf(float x, float y, float w, float h)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
403 |
: x(x), y(y), w(w), h(h)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
404 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
405 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
406 |
NFont::Rectf::Rectf(const SDL_Rect& rect)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
407 |
: x(rect.x), y(rect.y), w(rect.w), h(rect.h)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
408 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
409 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
410 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
411 |
NFont::Rectf::Rectf(const GPU_Rect& rect)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
412 |
: x(rect.x), y(rect.y), w(rect.w), h(rect.h)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
413 |
{}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
414 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
415 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
416 |
SDL_Rect NFont::Rectf::to_SDL_Rect() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
417 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
418 |
SDL_Rect r = {int(x), int(y), int(w), int(h)};
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
419 |
return r;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
420 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
421 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
422 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
423 |
GPU_Rect NFont::Rectf::to_GPU_Rect() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
424 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
425 |
return GPU_MakeRect(x, y, w, h);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
426 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
427 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
428 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
429 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
430 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
431 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
432 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
433 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
434 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
435 |
char* NFont::buffer = NULL; // Shared buffer for efficient drawing
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
436 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
437 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
438 |
// Constructors
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
439 |
NFont::NFont()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
440 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
441 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
442 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
443 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
444 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
445 |
NFont::NFont(TTF_Font* ttf)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
446 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
447 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
448 |
load(ttf, FC_GetDefaultColor(font));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
449 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
450 |
NFont::NFont(TTF_Font* ttf, const NFont::Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
451 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
452 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
453 |
load(ttf, color);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
454 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
455 |
NFont::NFont(const char* filename_ttf, Uint32 pointSize)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
456 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
457 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
458 |
load(filename_ttf, pointSize);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
459 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
460 |
NFont::NFont(const char* filename_ttf, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
461 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
462 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
463 |
load(filename_ttf, pointSize, color, style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
464 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
465 |
NFont::NFont(SDL_RWops* file_rwops_ttf, Uint8 own_rwops, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
466 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
467 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
468 |
load(file_rwops_ttf, own_rwops, pointSize, color, style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
469 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
470 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
471 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
472 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
473 |
NFont::NFont(NFont_Target* renderer, TTF_Font* ttf)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
474 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
475 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
476 |
load(renderer, ttf, FC_GetDefaultColor(font));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
477 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
478 |
NFont::NFont(NFont_Target* renderer, TTF_Font* ttf, const NFont::Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
479 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
480 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
481 |
load(renderer, ttf, color);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
482 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
483 |
NFont::NFont(NFont_Target* renderer, const char* filename_ttf, Uint32 pointSize)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
484 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
485 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
486 |
load(renderer, filename_ttf, pointSize);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
487 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
488 |
NFont::NFont(NFont_Target* renderer, const char* filename_ttf, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
489 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
490 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
491 |
load(renderer, filename_ttf, pointSize, color, style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
492 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
493 |
NFont::NFont(NFont_Target* renderer, SDL_RWops* file_rwops_ttf, Uint8 own_rwops, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
494 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
495 |
init();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
496 |
load(renderer, file_rwops_ttf, own_rwops, pointSize, color, style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
497 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
498 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
499 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
500 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
501 |
NFont::~NFont()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
502 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
503 |
FC_FreeFont(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
504 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
505 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
506 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
507 |
void NFont::init()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
508 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
509 |
font = FC_CreateFont();
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
510 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
511 |
if(buffer == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
512 |
buffer = new char[NFONT_BUFFER_SIZE];
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
513 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
514 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
515 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
516 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
517 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
518 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
519 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
520 |
void NFont::setLoadingString(const char* str)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
521 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
522 |
FC_SetLoadingString(font, str);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
523 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
524 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
525 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
526 |
bool NFont::load(TTF_Font* ttf)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
527 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
528 |
bool NFont::load(NFont_Target* renderer, TTF_Font* ttf)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
529 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
530 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
531 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
532 |
return load(ttf, FC_GetDefaultColor(font));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
533 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
534 |
return load(renderer, ttf, Color(0,0,0,255));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
535 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
536 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
537 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
538 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
539 |
bool NFont::load(TTF_Font* ttf, const NFont::Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
540 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
541 |
bool NFont::load(NFont_Target* renderer, TTF_Font* ttf, const NFont::Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
542 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
543 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
544 |
if(ttf == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
545 |
return false;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
546 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
547 |
#ifndef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
548 |
if(renderer == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
549 |
return false;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
550 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
551 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
552 |
FC_ClearFont(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
553 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
554 |
return FC_LoadFontFromTTF(font, ttf, color.to_SDL_Color());
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
555 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
556 |
return FC_LoadFontFromTTF(font, renderer, ttf, color.to_SDL_Color());
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
557 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
558 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
559 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
560 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
561 |
bool NFont::load(const char* filename_ttf, Uint32 pointSize)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
562 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
563 |
bool NFont::load(NFont_Target* renderer, const char* filename_ttf, Uint32 pointSize)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
564 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
565 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
566 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
567 |
return load(filename_ttf, pointSize, Color(0,0,0,255));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
568 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
569 |
return load(renderer, filename_ttf, pointSize, Color(0,0,0,255));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
570 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
571 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
572 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
573 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
574 |
bool NFont::load(const char* filename_ttf, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
575 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
576 |
bool NFont::load(NFont_Target* renderer, const char* filename_ttf, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
577 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
578 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
579 |
FC_ClearFont(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
580 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
581 |
return FC_LoadFont(font, filename_ttf, pointSize, color.to_SDL_Color(), style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
582 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
583 |
return FC_LoadFont(font, renderer, filename_ttf, pointSize, color.to_SDL_Color(), style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
584 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
585 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
586 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
587 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
588 |
bool NFont::load(SDL_RWops* file_rwops_ttf, Uint8 own_rwops, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
589 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
590 |
bool NFont::load(NFont_Target* renderer, SDL_RWops* file_rwops_ttf, Uint8 own_rwops, Uint32 pointSize, const NFont::Color& color, int style)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
591 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
592 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
593 |
FC_ClearFont(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
594 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
595 |
return FC_LoadFont_RW(font, file_rwops_ttf, own_rwops, pointSize, color.to_SDL_Color(), style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
596 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
597 |
return FC_LoadFont_RW(font, renderer, file_rwops_ttf, own_rwops, pointSize, color.to_SDL_Color(), style);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
598 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
599 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
600 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
601 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
602 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
603 |
void NFont::free()
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
604 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
605 |
FC_ClearFont(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
606 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
607 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
608 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
609 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
610 |
NFont::Rectf NFont::draw(NFont_Target* dest, float x, float y, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
611 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
612 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
613 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
614 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
615 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
616 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
617 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
618 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
619 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
620 |
return FC_Draw(font, dest, x, y, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
621 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
622 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
623 |
/*static int getIndexPastWidth(const char* text, int width, const int* charWidth)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
624 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
625 |
int charnum;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
626 |
int len = strlen(text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
627 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
628 |
for (int index = 0; index < len; index++)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
629 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
630 |
char c = text[index];
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
631 |
charnum = (unsigned char)(c) - 33;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
632 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
633 |
// spaces and nonprintable characters
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
634 |
if (c == ' ' || charnum > 222)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
635 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
636 |
width -= charWidth[0];
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
637 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
638 |
else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
639 |
width -= charWidth[charnum];
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
640 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
641 |
if(width <= 0)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
642 |
return index;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
643 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
644 |
return 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
645 |
}*/
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
646 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
647 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
648 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
649 |
/*static list<string> explode(const string& str, char delimiter)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
650 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
651 |
list<string> result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
652 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
653 |
size_t oldPos = 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
654 |
size_t pos = str.find_first_of(delimiter);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
655 |
while(pos != string::npos)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
656 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
657 |
result.push_back(str.substr(oldPos, pos - oldPos));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
658 |
oldPos = pos+1;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
659 |
pos = str.find_first_of(delimiter, oldPos);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
660 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
661 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
662 |
result.push_back(str.substr(oldPos, string::npos));
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
663 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
664 |
return result;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
665 |
}*/
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
666 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
667 |
NFont::Rectf NFont::drawBox(NFont_Target* dest, const Rectf& box, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
668 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
669 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
670 |
return Rectf(box.x, box.y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
671 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
672 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
673 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
674 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
675 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
676 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
677 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
678 |
return FC_DrawBox(font, dest, box.to_GPU_Rect(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
679 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
680 |
return FC_DrawBox(font, dest, box.to_SDL_Rect(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
681 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
682 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
683 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
684 |
static FC_AlignEnum translate_enum_NFont_to_FC(NFont::AlignEnum align)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
685 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
686 |
switch(align)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
687 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
688 |
case NFont::LEFT:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
689 |
return FC_ALIGN_LEFT;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
690 |
case NFont::CENTER:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
691 |
return FC_ALIGN_CENTER;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
692 |
case NFont::RIGHT:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
693 |
return FC_ALIGN_RIGHT;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
694 |
default:
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
695 |
return FC_ALIGN_LEFT;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
696 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
697 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
698 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
699 |
NFont::Rectf NFont::drawBox(NFont_Target* dest, const Rectf& box, AlignEnum align, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
700 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
701 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
702 |
return Rectf(box.x, box.y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
703 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
704 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
705 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
706 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
707 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
708 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
709 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
710 |
return FC_DrawBoxAlign(font, dest, box.to_GPU_Rect(), translate_enum_NFont_to_FC(align), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
711 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
712 |
return FC_DrawBoxAlign(font, dest, box.to_SDL_Rect(), translate_enum_NFont_to_FC(align), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
713 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
714 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
715 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
716 |
NFont::Rectf NFont::drawBox(NFont_Target* dest, const Rectf& box, const Scale& scale, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
717 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
718 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
719 |
return Rectf(box.x, box.y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
720 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
721 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
722 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
723 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
724 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
725 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
726 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
727 |
return FC_DrawBoxScale(font, dest, box.to_GPU_Rect(), FC_MakeScale(scale.x, scale.y), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
728 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
729 |
return FC_DrawBoxScale(font, dest, box.to_SDL_Rect(), FC_MakeScale(scale.x, scale.y), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
730 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
731 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
732 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
733 |
NFont::Rectf NFont::drawBox(NFont_Target* dest, const Rectf& box, const Color& color, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
734 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
735 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
736 |
return Rectf(box.x, box.y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
737 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
738 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
739 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
740 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
741 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
742 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
743 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
744 |
return FC_DrawBoxColor(font, dest, box.to_GPU_Rect(), color.to_SDL_Color(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
745 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
746 |
return FC_DrawBoxColor(font, dest, box.to_SDL_Rect(), color.to_SDL_Color(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
747 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
748 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
749 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
750 |
NFont::Rectf NFont::drawBox(NFont_Target* dest, const Rectf& box, const Effect& effect, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
751 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
752 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
753 |
return Rectf(box.x, box.y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
754 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
755 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
756 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
757 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
758 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
759 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
760 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
761 |
return FC_DrawBoxEffect(font, dest, box.to_GPU_Rect(), FC_MakeEffect(translate_enum_NFont_to_FC(effect.alignment), FC_MakeScale(effect.scale.x, effect.scale.y), effect.color.to_SDL_Color()), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
762 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
763 |
return FC_DrawBoxEffect(font, dest, box.to_SDL_Rect(), FC_MakeEffect(translate_enum_NFont_to_FC(effect.alignment), FC_MakeScale(effect.scale.x, effect.scale.y), effect.color.to_SDL_Color()), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
764 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
765 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
766 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
767 |
NFont::Rectf NFont::drawColumn(NFont_Target* dest, float x, float y, Uint16 width, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
768 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
769 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
770 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
771 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
772 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
773 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
774 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
775 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
776 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
777 |
return FC_DrawColumn(font, dest, x, y, width, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
778 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
779 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
780 |
NFont::Rectf NFont::drawColumn(NFont_Target* dest, float x, float y, Uint16 width, AlignEnum align, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
781 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
782 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
783 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
784 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
785 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
786 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
787 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
788 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
789 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
790 |
return FC_DrawColumnAlign(font, dest, x, y, width, translate_enum_NFont_to_FC(align), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
791 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
792 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
793 |
NFont::Rectf NFont::drawColumn(NFont_Target* dest, float x, float y, Uint16 width, const Scale& scale, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
794 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
795 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
796 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
797 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
798 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
799 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
800 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
801 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
802 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
803 |
return FC_DrawColumnScale(font, dest, x, y, width, FC_MakeScale(scale.x, scale.y), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
804 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
805 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
806 |
NFont::Rectf NFont::drawColumn(NFont_Target* dest, float x, float y, Uint16 width, const Color& color, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
807 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
808 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
809 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
810 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
811 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
812 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
813 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
814 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
815 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
816 |
return FC_DrawColumnColor(font, dest, x, y, width, color.to_SDL_Color(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
817 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
818 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
819 |
NFont::Rectf NFont::drawColumn(NFont_Target* dest, float x, float y, Uint16 width, const Effect& effect, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
820 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
821 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
822 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
823 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
824 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
825 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
826 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
827 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
828 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
829 |
#ifdef NFONT_USE_SDL_GPU
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
830 |
return FC_DrawColumnEffect(font, dest, x, y, width, FC_MakeEffect(translate_enum_NFont_to_FC(effect.alignment), FC_MakeScale(effect.scale.x, effect.scale.y), effect.color.to_SDL_Color()), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
831 |
#else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
832 |
return FC_DrawColumnEffect(font, dest, x, y, width, FC_MakeEffect(translate_enum_NFont_to_FC(effect.alignment), FC_MakeScale(effect.scale.x, effect.scale.y), effect.color.to_SDL_Color()), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
833 |
#endif
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
834 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
835 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
836 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
837 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
838 |
NFont::Rectf NFont::draw(NFont_Target* dest, float x, float y, const Scale& scale, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
839 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
840 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
841 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
842 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
843 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
844 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
845 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
846 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
847 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
848 |
return FC_DrawScale(font, dest, x, y, FC_MakeScale(scale.x, scale.y), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
849 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
850 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
851 |
NFont::Rectf NFont::draw(NFont_Target* dest, float x, float y, AlignEnum align, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
852 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
853 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
854 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
855 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
856 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
857 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
858 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
859 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
860 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
861 |
return FC_DrawAlign(font, dest, x, y, translate_enum_NFont_to_FC(align), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
862 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
863 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
864 |
NFont::Rectf NFont::draw(NFont_Target* dest, float x, float y, const Color& color, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
865 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
866 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
867 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
868 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
869 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
870 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
871 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
872 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
873 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
874 |
return FC_DrawColor(font, dest, x, y, color.to_SDL_Color(), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
875 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
876 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
877 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
878 |
NFont::Rectf NFont::draw(NFont_Target* dest, float x, float y, const Effect& effect, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
879 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
880 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
881 |
return Rectf(x, y, 0, 0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
882 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
883 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
884 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
885 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
886 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
887 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
888 |
return FC_DrawEffect(font, dest, x, y, FC_MakeEffect(translate_enum_NFont_to_FC(effect.alignment), FC_MakeScale(effect.scale.x, effect.scale.y), effect.color.to_SDL_Color()), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
889 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
890 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
891 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
892 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
893 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
894 |
// Getters
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
895 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
896 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
897 |
NFont::FilterEnum NFont::getFilterMode() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
898 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
899 |
FC_FilterEnum f = FC_GetFilterMode(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
900 |
if(f == FC_FILTER_LINEAR)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
901 |
return NFont::LINEAR;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
902 |
return NFont::NEAREST;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
903 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
904 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
905 |
Uint16 NFont::getHeight() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
906 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
907 |
return FC_GetLineHeight(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
908 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
909 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
910 |
Uint16 NFont::getHeight(const char* formatted_text, ...) const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
911 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
912 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
913 |
return 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
914 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
915 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
916 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
917 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
918 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
919 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
920 |
return FC_GetHeight(font, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
921 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
922 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
923 |
Uint16 NFont::getWidth(const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
924 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
925 |
if (formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
926 |
return 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
927 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
928 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
929 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
930 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
931 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
932 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
933 |
return FC_GetWidth(font, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
934 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
935 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
936 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
937 |
NFont::Rectf NFont::getCharacterOffset(Uint16 position_index, int column_width, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
938 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
939 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
940 |
return Rectf(0,0,0,0);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
941 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
942 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
943 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
944 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
945 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
946 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
947 |
return FC_GetCharacterOffset(font, position_index, column_width, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
948 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
949 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
950 |
// Given an offset (x,y) from the text draw position (the upper-left corner), returns the character position (UTF-8 index)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
951 |
Uint16 NFont::getPositionFromOffset(float x, float y, int column_width, NFont::AlignEnum align, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
952 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
953 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
954 |
return 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
955 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
956 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
957 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
958 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
959 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
960 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
961 |
return FC_GetPositionFromOffset(font, x, y, column_width, translate_enum_NFont_to_FC(align), "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
962 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
963 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
964 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
965 |
Uint16 NFont::getColumnHeight(Uint16 width, const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
966 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
967 |
if(formatted_text == NULL || width == 0)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
968 |
return 0;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
969 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
970 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
971 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
972 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
973 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
974 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
975 |
return FC_GetColumnHeight(font, width, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
976 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
977 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
978 |
int NFont::getAscent(const char character)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
979 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
980 |
return FC_GetAscent(font, "%c", character);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
981 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
982 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
983 |
int NFont::getAscent() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
984 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
985 |
return FC_GetAscent(font, NULL);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
986 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
987 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
988 |
int NFont::getAscent(const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
989 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
990 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
991 |
return FC_GetAscent(font, NULL);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
992 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
993 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
994 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
995 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
996 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
997 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
998 |
return FC_GetAscent(font, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
999 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1000 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1001 |
int NFont::getDescent(const char character)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1002 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1003 |
return FC_GetDescent(font, "%c", character);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1004 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1005 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1006 |
int NFont::getDescent() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1007 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1008 |
return FC_GetDescent(font, NULL);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1009 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1010 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1011 |
int NFont::getDescent(const char* formatted_text, ...)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1012 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1013 |
if(formatted_text == NULL)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1014 |
return FC_GetDescent(font, NULL);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1015 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1016 |
va_list lst;
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1017 |
va_start(lst, formatted_text);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1018 |
vsnprintf(buffer, NFONT_BUFFER_SIZE, formatted_text, lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1019 |
va_end(lst);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1020 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1021 |
return FC_GetDescent(font, "%s", buffer);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1022 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1023 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1024 |
int NFont::getSpacing() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1025 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1026 |
return FC_GetSpacing(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1027 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1028 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1029 |
int NFont::getLineSpacing() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1030 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1031 |
return FC_GetLineSpacing(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1032 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1033 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1034 |
Uint16 NFont::getBaseline() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1035 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1036 |
return FC_GetBaseline(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1037 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1038 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1039 |
Uint16 NFont::getMaxWidth() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1040 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1041 |
return FC_GetMaxWidth(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1042 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1043 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1044 |
NFont::Color NFont::getDefaultColor() const
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1045 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1046 |
return FC_GetDefaultColor(font);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1047 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1048 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1049 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1050 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1051 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1052 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1053 |
// Setters
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1054 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1055 |
void NFont::setFilterMode(NFont::FilterEnum filter)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1056 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1057 |
if(filter == NFont::LINEAR)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1058 |
FC_SetFilterMode(font, FC_FILTER_LINEAR);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1059 |
else
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1060 |
FC_SetFilterMode(font, FC_FILTER_NEAREST);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1061 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1062 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1063 |
void NFont::setSpacing(int LetterSpacing)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1064 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1065 |
FC_SetSpacing(font, LetterSpacing);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1066 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1067 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1068 |
void NFont::setLineSpacing(int LineSpacing)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1069 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1070 |
FC_SetLineSpacing(font, LineSpacing);
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1071 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1072 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1073 |
void NFont::setDefaultColor(const Color& color)
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1074 |
{
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1075 |
FC_SetDefaultColor(font, color.to_SDL_Color());
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1076 |
}
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1077 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1078 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1079 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1080 |
|
| a133dbce |
sago007 |
2016-03-26 10:05 |
1081 |
|
|
|
1970-01-01 00:00 |
1082 |
|