141 bool isFormatted = (formattedVar.
GetInteger() != 0);
143 SDL_Surface * finalSurface =
NULL;
156 if (!seg.text.empty()) {
164 int segStyle = seg.style;
165 int segSize = seg.hasSizeOverride ? seg.sizeOverride : baseSize;
166 PColor segFgColor = seg.hasColorOverride ? seg.colorOverride : baseFgColor;
169 fontFileName, segStyle, segSize,
170 segFgColor, baseBgColor, antiAliased);
173 int ascent = TTF_FontAscent(renderFont->
GetTTFFont());
174 if (ascent > maxAscent) maxAscent = ascent;
176 int segWidth, segHeight;
177 TTF_SizeText(renderFont->
GetTTFFont(), seg.text.c_str(), &segWidth, &segHeight);
178 totalWidth += segWidth;
188 if (!seg.text.empty()) {
196 int segStyle = seg.style;
197 int segSize = seg.hasSizeOverride ? seg.sizeOverride : baseSize;
198 PColor segFgColor = seg.hasColorOverride ? seg.colorOverride : baseFgColor;
201 fontFileName, segStyle, segSize,
202 segFgColor, baseBgColor, antiAliased);
204 int descent = TTF_FontDescent(renderFont->
GetTTFFont());
206 int absDescent = (descent < 0) ? -descent : descent;
207 if (absDescent > maxDescent) maxDescent = absDescent;
213 int totalHeight = maxAscent + maxDescent;
216 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
217 Uint32 rmask = 0xff000000;
218 Uint32 gmask = 0x00ff0000;
219 Uint32 bmask = 0x0000ff00;
220 Uint32 amask = 0x000000ff;
222 Uint32 rmask = 0x000000ff;
223 Uint32 gmask = 0x0000ff00;
224 Uint32 bmask = 0x00ff0000;
225 Uint32 amask = 0xff000000;
228 finalSurface = SDL_CreateRGBSurface(0, totalWidth, totalHeight, 32,
229 rmask, gmask, bmask, amask);
236 SDL_FillRect(finalSurface,
NULL, SDL_MapRGBA(finalSurface->format, 0, 0, 0, 0));
242 if (!seg.text.empty()) {
250 int segStyle = seg.style;
251 int segSize = seg.hasSizeOverride ? seg.sizeOverride : baseSize;
252 PColor segFgColor = seg.hasColorOverride ? seg.colorOverride : baseFgColor;
255 fontFileName, segStyle, segSize,
256 segFgColor, baseBgColor, antiAliased);
258 SDL_Surface* segSurface = renderFont->
RenderText(seg.text.c_str());
262 int thisAscent = TTF_FontAscent(renderFont->
GetTTFFont());
265 int yOffset = maxAscent - thisAscent;
268 SDL_Rect segRect = {xOffset, yOffset, segSurface->w, segSurface->h};
270 SDL_BlitSurface(segSurface,
NULL, finalSurface, &segRect);
271 SDL_FreeSurface(segSurface);
273 xOffset += segRect.w;
288 finalSurface = GetPlatformFont()->
RenderText(rtext.c_str());
309 SDL_SetTextureBlendMode(
mTexture, SDL_BLENDMODE_BLEND);
311 SDL_SetTextureScaleMode(
mTexture, SDL_ScaleModeBest);
313 SDL_FreeSurface(finalSurface);
virtual void SetText(const std::string &text)