test/testime.c
branchgsoc2009_IME
changeset 3133 84119fe89d26
parent 3132 88861448961f
child 3134 f896821736fb
equal deleted inserted replaced
3132:88861448961f 3133:84119fe89d26
    61                 width, height, SDL_GetError());
    61                 width, height, SDL_GetError());
    62         return -1;
    62         return -1;
    63     }
    63     }
    64 
    64 
    65     /* Prepare a rect for text input */
    65     /* Prepare a rect for text input */
    66     SDL_Rect textRect = { 100, 80, 300, 50 }, markedRect;
    66     SDL_Rect textRect = { 100, 80, 300, 50 }, markedRect, underlineRect, cursorRect;
    67     Uint32 backColor = SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF);
    67     Uint32 backColor = SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF);
       
    68     Uint32 lineColor = SDL_MapRGB(screen->format, 0x0, 0x0, 0x0);
    68     SDL_Color textColor = { 0, 0, 0 };
    69     SDL_Color textColor = { 0, 0, 0 };
    69     SDL_FillRect(screen, &textRect, backColor);
    70     SDL_FillRect(screen, &textRect, backColor);
    70 
    71 
    71     markedRect = textRect;
    72     markedRect = textRect;
    72     SDL_StartTextInput(&markedRect);
    73     SDL_StartTextInput(&markedRect);
   104             SDL_FillRect(screen, &textRect, backColor);
   105             SDL_FillRect(screen, &textRect, backColor);
   105 
   106 
   106             render_text(screen, font, text, textRect.x, textRect.y, textColor);
   107             render_text(screen, font, text, textRect.x, textRect.y, textColor);
   107             TTF_SizeUTF8(font, text, &w, &h);
   108             TTF_SizeUTF8(font, text, &w, &h);
   108             markedRect.x = textRect.x + w;
   109             markedRect.x = textRect.x + w;
       
   110 
       
   111             cursorRect = markedRect;
       
   112             cursorRect.w = 2;
       
   113             cursorRect.h = h;
       
   114             SDL_FillRect(screen, &cursorRect, lineColor);
   109             SDL_Flip(screen);
   115             SDL_Flip(screen);
   110 
   116 
   111             SDL_StartTextInput(&markedRect);
   117             SDL_StartTextInput(&markedRect);
   112             break;
   118             break;
   113 
   119 
   115             fprintf(stderr, "text editing \"%s\", selected range (%d, %d)\n",
   121             fprintf(stderr, "text editing \"%s\", selected range (%d, %d)\n",
   116                     event.edit.text, event.edit.start, event.edit.length);
   122                     event.edit.text, event.edit.start, event.edit.length);
   117 
   123 
   118             SDL_FillRect(screen, &markedRect, backColor);
   124             SDL_FillRect(screen, &markedRect, backColor);
   119             render_text(screen, font, event.edit.text, markedRect.x, markedRect.y, textColor);
   125             render_text(screen, font, event.edit.text, markedRect.x, markedRect.y, textColor);
       
   126             TTF_SizeUTF8(font, event.edit.text, &w, &h);
       
   127             underlineRect = markedRect;
       
   128             underlineRect.y += (h - 2);
       
   129             underlineRect.h = 2;
       
   130             underlineRect.w = w;
       
   131             SDL_FillRect(screen, &underlineRect, lineColor);
       
   132 
   120             SDL_Flip(screen);
   133             SDL_Flip(screen);
   121             break;
   134             break;
   122 
   135 
   123         case SDL_QUIT:
   136         case SDL_QUIT:
   124             done = 1;
   137             done = 1;