| [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 | } | 
|---|