Skip to content

Instantly share code, notes, and snippets.

@Introscopia
Created March 31, 2024 23:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Introscopia/e74413c0950b699fa3371aaba40ca003 to your computer and use it in GitHub Desktop.
Save Introscopia/e74413c0950b699fa3371aaba40ca003 to your computer and use it in GitHub Desktop.
Text rendering for SDL without fonts or any other dependencies.
#include <SDL.h>
#include <SDL_image.h>
#include "SDL_Text.h"
#ifndef WIN32
#define _WIN32_WINNT 0x0500
#include <windows.h>
#endif
// - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o - o
int main(int argc, char *argv[]){
//HWND hwnd_win = GetConsoleWindow();
//ShowWindow(hwnd_win,SW_HIDE);
SDL_Window *window;
SDL_Renderer *renderer;
int width = 0;
int height = 0;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s", SDL_GetError());
return 3;
}
if (SDL_CreateWindowAndRenderer(width, height, SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED, &window, &renderer)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create window and renderer: %s", SDL_GetError());
return 3;
}
SDL_GetWindowSize( window, &width, &height );
SDL_SetWindowTitle( window, "SDL_Text" );
//srand (time(NULL));
/*
SDL_Surface *font = IMG_Load("DOS.png");
color *pix = (color*) font->pixels;
printf("font->format->BitsPerPixel: %d\n", font->format->BitsPerPixel );
for (int CJ = 0; CJ < 12; ++CJ ){
for (int CI = 0; CI < 8; ++CI ){
SDL_Rect rcts [48];
int R = 0;
for (int pi = 0; pi < 8; ++pi ){
for (int pj = 0; pj < 12; ++pj ){
int o = (CJ * 768) + (pj * 64) + (CI * 8) + pi;
if( pix[o] == 0xFFD7D6D2 ){
int w = 1;
int h = 1;
for (int i = 1; i < 8-pi; ++i ){
if( pix[o+i] != 0xFFD7D6D2 ){
w = i;
break;
}
}
for (int j = 1; j < 12-pj; ++j ){
int q = (CJ * 768) + ((pj+j) * 64) + (CI * 8) + pi;
for (int i = 0; i < w; ++i ){
if( pix[q+i] != 0xFFD7D6D2 ){
h = j;
goto rect_found;
}
}
}
rect_found:
rcts[R++] = (SDL_Rect){ pi, pj, w, h };
for (int j = 0; j < h; ++j ){
int q = (CJ * 768) + ((pj+j) * 64) + (CI * 8) + pi;
for (int i = 0; i < w; ++i ){
pix[q+i] = 0x00000000;
}
}
}
}
}
printf("\tcase '%c':\n", (CJ*8)+CI+32 );
for (int r = 0; r < R; ++r ){
printf("\t\tSDL_RenderFillRectF(R, &(SDL_FRect){(%d*scale)+x, (%d*scale)+y, %d*scale, %d*scale} );\n", rcts[r].x, rcts[r].y, rcts[r].w, rcts[r].h );
}
printf("\t\tbreak;\n");
}
}
abort();
//*/
char lorem [] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
char ascii [128];
for (char i = '!'; i <= '~'; ++i ){
ascii[i-'!'] = i;
}
ascii [127] = '\0';
int mouseX = 0;
int mouseY = 0;
bool loop = 1;
puts("<<<Entering Main Loop>>>");
while ( loop ) {//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /LOOP %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|||
SDL_Event event;
while( SDL_PollEvent(&event) ){
if( event.type == SDL_QUIT ){
goto exit;
}
}
SDL_SetRenderDrawColor( renderer, 222, 222, 222, 255 );
SDL_RenderClear( renderer );
SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255 );
SDL_RenderText( renderer, "The quick brown fox jumps over the lazy dog", 3, 100, 100 );
//SDL_RenderText( renderer, "0123456789", 2, 100, 150 );
SDL_RenderTextWrapped( renderer, ascii, 2, 100, 150, 783 );
SDL_RenderTextWrapped( renderer, lorem, 2, 458, 275, 450 );
SDL_RenderPresent(renderer);
SDL_framerateDelay( 32 );
}//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /LOOP %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|||
exit:
puts("Exiting");
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
#include "SDL_Text.h"
void SDL_RenderChar( SDL_Renderer *R, char C, float scale, float x, float y ){
switch(C){
case '!':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 4*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case '"':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (0*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (0*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
break;
case '#':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case '$':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (0*scale)+y, 1*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 1*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 2*scale} );
break;
case '%':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
break;
case '&':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case '\'':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (0*scale)+y, 2*scale, 3*scale} );
break;
case '(':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case ')':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
break;
case '*':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 4*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(7*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
break;
case '+':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 2*scale, 6*scale} );
break;
case ',':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (10*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 2*scale, 3*scale} );
break;
case '-':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 7*scale, 1*scale} );
break;
case '.':
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case '/':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (1*scale)+y, 1*scale, 1*scale} );
break;
case '0':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
break;
case '1':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 2*scale, 5*scale} );
break;
case '2':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case '3':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case '4':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (3*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
break;
case '5':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case '6':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case '7':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
break;
case '8':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case '9':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 2*scale} );
break;
case ':':
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
break;
case ';':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
break;
case '<':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case '=':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (7*scale)+y, 6*scale, 1*scale} );
break;
case '>':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
break;
case '?':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
break;
case '@':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 4*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
break;
case 'A':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 3*scale} );
break;
case 'B':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case 'C':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (7*scale)+y, 1*scale, 1*scale} );
break;
case 'D':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
break;
case 'E':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (7*scale)+y, 1*scale, 1*scale} );
break;
case 'F':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
break;
case 'G':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (9*scale)+y, 1*scale, 1*scale} );
break;
case 'H':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 9*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 4*scale} );
break;
case 'I':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
break;
case 'J':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
break;
case 'K':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case 'L':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (7*scale)+y, 1*scale, 1*scale} );
break;
case 'M':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 9*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 4*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 5*scale} );
break;
case 'N':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 9*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 3*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 3*scale} );
break;
case 'O':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 5*scale} );
break;
case 'P':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
break;
case 'Q':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 1*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (10*scale)+y, 1*scale, 1*scale} );
break;
case 'R':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 3*scale} );
break;
case 'S':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
break;
case 'T':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 6*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
break;
case 'U':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 8*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 8*scale} );
break;
case 'V':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (8*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 6*scale} );
break;
case 'W':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (7*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 1*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 6*scale} );
break;
case 'X':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 3*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case 'Y':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 4*scale} );
break;
case 'Z':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (7*scale)+y, 1*scale, 1*scale} );
break;
case '[':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 2*scale, 8*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case '\\':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (3*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(6*scale)+x, (7*scale)+y, 1*scale, 3*scale} );
break;
case ']':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
break;
case '^':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (0*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 2*scale, 1*scale} );
break;
case '_':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (11*scale)+y, 7*scale, 1*scale} );
break;
case '`':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (0*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
break;
case 'a':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case 'b':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 8*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
break;
case 'c':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case 'd':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case 'e':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case 'f':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
break;
case 'g':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (10*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (11*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
break;
case 'h':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 5*scale} );
break;
case 'i':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
break;
case 'j':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (11*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 6*scale} );
break;
case 'k':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 2*scale} );
break;
case 'l':
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 7*scale} );
break;
case 'm':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 3*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (6*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (5*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 1*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 4*scale} );
break;
case 'n':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 5*scale} );
break;
case 'o':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
break;
case 'p':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (11*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 2*scale, 6*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (8*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 3*scale} );
break;
case 'q':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (11*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
break;
case 'r':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 2*scale} );
break;
case 's':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (6*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (7*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case 't':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (2*scale)+y, 2*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (5*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case 'u':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (4*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case 'v':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (4*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (8*scale)+y, 4*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 4*scale} );
break;
case 'w':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 5*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 1*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 4*scale} );
break;
case 'x':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (6*scale)+y, 3*scale, 2*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case 'y':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (11*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 6*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (10*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (4*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (9*scale)+y, 2*scale, 1*scale} );
break;
case 'z':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (4*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (9*scale)+y, 7*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (7*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (8*scale)+y, 2*scale, 1*scale} );
break;
case '{':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
break;
case '|':
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (1*scale)+y, 2*scale, 4*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 4*scale} );
break;
case '}':
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (9*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 3*scale, 1*scale} );
break;
case '~':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (2*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (1*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (2*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (1*scale)+y, 2*scale, 1*scale} );
break;
case '⌂':
SDL_RenderFillRectF(R, &(SDL_FRect){(0*scale)+x, (6*scale)+y, 2*scale, 3*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(1*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (4*scale)+y, 3*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(2*scale)+x, (8*scale)+y, 5*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(3*scale)+x, (3*scale)+y, 1*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(4*scale)+x, (5*scale)+y, 2*scale, 1*scale} );
SDL_RenderFillRectF(R, &(SDL_FRect){(5*scale)+x, (6*scale)+y, 2*scale, 2*scale} );
break;
}
}
void SDL_RenderText( SDL_Renderer *R, char *string, float scale, float x, float y ){
for (int i = 0; string[i] != '\0'; ++i ){
SDL_RenderChar( R, string[i], scale, x + (8 * scale * i), y );
}
}
void SDL_RenderTextWrapped( SDL_Renderer *R, char *string, float scale, float x, float y, float width ){
int len = strlen( string );
float cx = x;
float line_end = x + width;
float cy = y;
for ( int i = 0; i < len; ){
int ww = 0;//word width
int we = len;//word end
for (int j = i; j < len; ++j){
if( (uint8_t)(string[j]) < '!' ){
we = j;
break;
}
ww += (8*scale);
if( ww > width ){
ww -= 1;
we = j-1;
break;
}
}
if( cx + ww >= line_end ){
cx = x;
cy += (scale*LINE_HEIGHT);
}
while( i < we ){
SDL_RenderChar( R, string[i], scale, cx, cy );
cx += (8*scale);
++i;
}
if( i >= len ) break;
while( !(isalnum( string[i] ) || (uint8_t)(string[i]) > 0x7F) ){
if( string[i] == ' ' ){
if( cx + (8*scale) > line_end ){
cx = x;
cy += (scale*LINE_HEIGHT);
}
else cx += (8*scale);
}
else if( string[i] == '\t' ){
if( cx + (24*scale) > line_end ){
cx = x;
cy += (scale*LINE_HEIGHT);
}
else cx += (24*scale);
}
else if( string[i] == '\n' ){
cx = x;
cy += (scale*LINE_HEIGHT);
}
else if( (uint8_t)(string[i]) < '!' ){ //|| string[j] > '~'
if( cx + (8*scale) > line_end ){
cx = x + (8*scale);
cy += (scale*LINE_HEIGHT);
}
else cx += (8*scale);
}
else{
break;
}
++i;
if( i >= len ) break;
}
}
}
#ifndef SDL_TEXT_H_INCLUDED
#define SDL_TEXT_H_INCLUDED
#include <SDL.h>
#include <ctype.h>
#define LINE_HEIGHT 12
void SDL_RenderChar( SDL_Renderer *R, char C, float scale, float x, float y );
void SDL_RenderText( SDL_Renderer *R, char *string, float scale, float x, float y );
void SDL_RenderTextWrapped( SDL_Renderer *R, char *string, float scale, float x, float y, float width );
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment