| [6348] | 1 |  | 
|---|
 | 2 | #include <SDL/SDL.h> | 
|---|
 | 3 | #include <SDL/SDL_ttf.h> | 
|---|
| [7221] | 4 | #include <string> | 
|---|
| [6348] | 5 |  | 
|---|
 | 6 |  | 
|---|
 | 7 | TTF_Font* fontTTF = NULL; | 
|---|
 | 8 |  | 
|---|
 | 9 | int getMaxHeight() | 
|---|
 | 10 | { | 
|---|
 | 11 |   if (fontTTF != NULL) | 
|---|
 | 12 |     return TTF_FontHeight(fontTTF); | 
|---|
 | 13 |   else | 
|---|
 | 14 |     return 0; | 
|---|
 | 15 | } | 
|---|
 | 16 |  | 
|---|
 | 17 |  | 
|---|
| [7221] | 18 | void createAsciiImage(const std::string& fileName, unsigned int size) | 
|---|
| [6348] | 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 |   } | 
|---|
| [7221] | 70 |   SDL_SaveBMP(tmpSurf, fileName.c_str()); | 
|---|
| [6348] | 71 |   SDL_FreeSurface(tmpSurf); | 
|---|
 | 72 | } | 
|---|
 | 73 |  | 
|---|
 | 74 |  | 
|---|
 | 75 |  | 
|---|
 | 76 | int 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); | 
|---|
| [7221] | 83 |  | 
|---|
| [6348] | 84 |   createAsciiImage(argv[2], renderSize); | 
|---|
| [7221] | 85 |  | 
|---|
| [6348] | 86 |   //  delete fontTTF; | 
|---|
 | 87 |   TTF_Quit(); | 
|---|
 | 88 |   SDL_Quit(); | 
|---|
 | 89 | } | 
|---|