Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/subprojects/others/TTFtoIMG.cc @ 6348

Last change on this file since 6348 was 6348, checked in by bensch, 18 years ago

trunk: added small app, that converts ttf-to images
compile with:
g++ TTFtoIMG -lSDL_ttf -lSDL

File size: 2.2 KB
Line 
1
2#include <SDL/SDL.h>
3#include <SDL/SDL_ttf.h>
4
5
6
7TTF_Font* fontTTF = NULL;
8
9int getMaxHeight()
10{
11  if (fontTTF != NULL)
12    return TTF_FontHeight(fontTTF);
13  else
14    return 0;
15}
16
17
18void createAsciiImage(const char* fileName, unsigned int size)
19{
20  if (fontTTF == NULL)
21    return;
22  int height = getMaxHeight();
23
24  //
25  SDL_Color tmpColor = {0, 0, 0};
26  // Surface definition.
27  SDL_Rect tmpRect; // this represents a Rectangle for blitting.
28  SDL_Surface* tmpSurf =  SDL_CreateRGBSurface(SDL_SWSURFACE,
29                                               height*16, height*16,
30                                               32,
31#if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */
32                                               0x000000FF,
33                                               0x0000FF00,
34                                               0x00FF0000,
35                                               0xFF000000
36#else
37                                               0xFF000000,
38                                               0x00FF0000,
39                                               0x0000FF00,
40                                               0x000000FF
41#endif
42                                              );
43  tmpRect.x = 0; tmpRect.y = 0; tmpRect.w = tmpSurf->w; tmpRect.h = tmpSurf->h;
44  SDL_SetClipRect(tmpSurf, &tmpRect);
45  int maxLineHeight = 0;
46
47  int posX, posY;
48  // all the interessting Glyphs
49  for (posY = 0; posY < 16; posY++)
50  {
51    for (posX = 0; posX < 16; posX++)
52    {
53      SDL_Surface* glyphSurf = NULL;
54      if (fontTTF != NULL)
55      {
56        SDL_Color white = {255, 255, 255};
57        glyphSurf = TTF_RenderGlyph_Blended(fontTTF, posX+16*posY, white);
58      }
59      if( glyphSurf != NULL )
60      {
61        tmpRect.x = height*posX;
62        tmpRect.y = height*posY;
63        SDL_SetAlpha(glyphSurf, 0, 0);
64
65        SDL_BlitSurface(glyphSurf, NULL, tmpSurf, &tmpRect);
66        SDL_FreeSurface(glyphSurf);
67      }
68    }
69  }
70  SDL_SaveBMP(tmpSurf, fileName);
71  SDL_FreeSurface(tmpSurf);
72}
73
74
75
76int main (int argc, const char** argv)
77{
78  SDL_Init(0);
79  TTF_Init();
80  unsigned int renderSize = 32;
81
82  fontTTF = TTF_OpenFont(argv[1], renderSize);
83 
84  createAsciiImage(argv[2], renderSize);
85 
86  //  delete fontTTF;
87  TTF_Quit();
88  SDL_Quit();
89}
Note: See TracBrowser for help on using the repository browser.