# HG changeset patch # User Jiang Jiang # Date 1249549263 0 # Node ID 311c678f3b2e6398e7343ac818b8877267438995 # Parent 962357f325e1def5d1fdfa449e78b305f522ed18 Update testime program to accept font parameter. diff -r 962357f325e1 -r 311c678f3b2e test/testime.c --- a/test/testime.c Thu Aug 06 08:59:53 2009 +0000 +++ b/test/testime.c Thu Aug 06 09:01:03 2009 +0000 @@ -8,7 +8,7 @@ #include #define DEFAULT_PTSIZE 30 -#define DEFAULT_FONT "DroidSansFallback.ttf" +#define DEFAULT_FONT "/System/Library/Fonts/华文细黑.ttf" #define MAX_TEXT_LENGTH 256 SDL_Surface *screen; @@ -18,9 +18,38 @@ SDL_Color textColor = { 0, 0, 0 }; char text[MAX_TEXT_LENGTH], *markedText; +void usage() +{ + printf("usage: testime [--font fontfile] [--fullscreen]\n"); + exit(0); +} + void InitVideo(int argc, char *argv[]) { int width = 500, height = 250; + int flags = SDL_HWSURFACE; + const char *fontname = DEFAULT_FONT; + int fullscreen = 0; + + for (argc--, argv++; argc > 0; argc--, argv++) + { + if (strcmp(argv[0], "--help") == 0) + usage(); + + else if (strcmp(argv[0], "--fullscreen") == 0) + fullscreen = 1; + + else if (strcmp(argv[0], "--font") == 0) + { + argc--; + argv++; + + if (argc > 0) + fontname = argv[0]; + else + usage(); + } + } SDL_putenv("SDL_VIDEO_WINDOW_POS=center"); if (SDL_Init(SDL_INIT_VIDEO) < 0) @@ -32,17 +61,17 @@ /* Initialize fonts */ TTF_Init(); - font = TTF_OpenFont(DEFAULT_FONT, DEFAULT_PTSIZE); + font = TTF_OpenFont(fontname, DEFAULT_PTSIZE); if (! font) { fprintf(stderr, "Failed to find font: %s\n", SDL_GetError()); exit(-1); } + printf("Using font: %s\n", fontname); atexit(SDL_Quit); - int flags = SDL_HWSURFACE; - if (argc > 1 && strcmp(argv[1], "--fullscreen") == 0) + if (fullscreen) { SDL_DisplayMode mode; SDL_GetDesktopDisplayMode(&mode); @@ -123,8 +152,11 @@ return; } + cursorRect = markedRect; + cursorRect.w = 2; + cursorRect.h = h; + SDL_FillRect(screen, &markedRect, backColor); - if (markedText) { RenderText(screen, font, markedText, markedRect.x, markedRect.y, textColor); @@ -134,12 +166,12 @@ underlineRect.y += (h - 2); underlineRect.h = 2; underlineRect.w = w; + + cursorRect.x += w + 1; + SDL_FillRect(screen, &underlineRect, lineColor); } - cursorRect = markedRect; - cursorRect.w = 2; - cursorRect.h = h; SDL_FillRect(screen, &cursorRect, lineColor); SDL_Flip(screen);