Mercurial > sdl-ios-xcode
annotate test/testime.c @ 5247:78ce7bfd0faf
Better window parameter checking
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 10 Feb 2011 10:37:35 -0800 |
parents | 1435f8a6425c |
children | 762e40fb8e28 |
rev | line source |
---|---|
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* A simple program to test the Input Method support in the SDL library (1.3+) */ |
3338 | 2 |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 #include <stdlib.h> |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 #include <stdio.h> |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 #include <string.h> |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 #include "SDL.h" |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 #ifdef HAVE_SDL_TTF |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 #include "SDL_ttf.h" |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 #endif |
3338 | 11 |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 #define DEFAULT_PTSIZE 30 |
5153
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
13 #define DEFAULT_FONT "/System/Library/Fonts/华文细黑.ttf" |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 #define MAX_TEXT_LENGTH 256 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 SDL_Surface *screen; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 #ifdef HAVE_SDL_TTF |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 TTF_Font *font; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 SDL_Rect textRect, markedRect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 Uint32 lineColor, backColor; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 SDL_Color textColor = { 0, 0, 0 }; |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
24 char text[MAX_TEXT_LENGTH], markedText[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; |
4757 | 25 int cursor = 0; |
26 | |
5153
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
27 size_t utf8_length(unsigned char c) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
28 { |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
29 c = (unsigned char)(0xff & c); |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
30 if (c < 0x80) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
31 return 1; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
32 else if ((c >> 5) ==0x6) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
33 return 2; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
34 else if ((c >> 4) == 0xe) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
35 return 3; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
36 else if ((c >> 3) == 0x1e) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
37 return 4; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
38 else |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
39 return 0; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
40 } |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
41 |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
42 char *utf8_next(char *p) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
43 { |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
44 size_t len = utf8_length(*p); |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
45 size_t i = 0; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
46 if (!len) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
47 return 0; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
48 |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
49 for (; i < len; ++i) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
50 { |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
51 ++p; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
52 if (!*p) |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
53 return 0; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
54 } |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
55 return p; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
4763
diff
changeset
|
56 } |
4757 | 57 |
58 char *utf8_advance(char *p, size_t distance) | |
59 { | |
60 size_t i = 0; | |
61 for (; i < distance && p; ++i) | |
62 { | |
63 p = utf8_next(p); | |
64 } | |
65 return p; | |
66 } | |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 void usage() |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 printf("usage: testime [--font fontfile] [--fullscreen]\n"); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 exit(0); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 void InitVideo(int argc, char *argv[]) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 { |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
76 int width = 640, height = 480; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 int flags = SDL_HWSURFACE; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 const char *fontname = DEFAULT_FONT; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 int fullscreen = 0; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 for (argc--, argv++; argc > 0; argc--, argv++) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 if (strcmp(argv[0], "--help") == 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 usage(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 else if (strcmp(argv[0], "--fullscreen") == 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 fullscreen = 1; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 else if (strcmp(argv[0], "--font") == 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 argc--; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 argv++; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 if (argc > 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 fontname = argv[0]; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 else |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 usage(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 |
3581
15eea7a1fa97
Implemented SDL_setenv(), moved SDL_putenv() to compat.
Ryan C. Gordon <icculus@icculus.org>
parents:
3478
diff
changeset
|
101 SDL_setenv("SDL_VIDEO_WINDOW_POS", "center", 1); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 if (SDL_Init(SDL_INIT_VIDEO) < 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 { |
3281
2d3a9f229ba1
I'm gussing that this was never compiled where TTF support was missing. As a result a call to SDL_GetError and a call to TTF_GetError were swapped.
Bob Pendleton <bob@pendleton.com>
parents:
3280
diff
changeset
|
104 fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
105 exit(-1); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 #ifdef HAVE_SDL_TTF |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 /* Initialize fonts */ |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 TTF_Init(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 font = TTF_OpenFont(fontname, DEFAULT_PTSIZE); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
113 if (! font) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
114 { |
3281
2d3a9f229ba1
I'm gussing that this was never compiled where TTF support was missing. As a result a call to SDL_GetError and a call to TTF_GetError were swapped.
Bob Pendleton <bob@pendleton.com>
parents:
3280
diff
changeset
|
115 fprintf(stderr, "Failed to find font: %s\n", TTF_GetError()); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
116 exit(-1); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
119 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 printf("Using font: %s\n", fontname); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 atexit(SDL_Quit); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
122 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
123 if (fullscreen) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
125 SDL_DisplayMode mode; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
126 SDL_GetDesktopDisplayMode(&mode); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
127 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
128 width = mode.w; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
129 height = mode.h; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
130 fprintf(stderr, "%dx%d\n", width, height); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
131 flags |= SDL_FULLSCREEN; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
132 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
133 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
134 /* Create window */ |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
135 screen = SDL_SetVideoMode(width, height, 32, flags); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
136 if (screen == NULL) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
137 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
138 fprintf(stderr, "Unable to set %dx%d video: %s\n", |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
139 width, height, SDL_GetError()); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
140 exit(-1); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
141 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
142 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
143 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
144 void CleanupVideo() |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
145 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
146 SDL_StopTextInput(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
147 #ifdef HAVE_SDL_TTF |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
148 TTF_CloseFont(font); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
149 TTF_Quit(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
150 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
151 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
152 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
153 void InitInput() |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
154 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
155 backColor = SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
156 lineColor = SDL_MapRGB(screen->format, 0x0, 0x0, 0x0); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
157 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
158 /* Prepare a rect for text input */ |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
159 textRect.x = textRect.y = 100; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
160 textRect.w = screen->w - 2 * textRect.x; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
161 textRect.h = 50; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
162 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
163 text[0] = 0; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
164 markedRect = textRect; |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
165 markedText[0] = 0; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
166 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
167 SDL_StartTextInput(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
168 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
169 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
170 #ifdef HAVE_SDL_TTF |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
171 static void RenderText(SDL_Surface *sur, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
172 TTF_Font *font, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
173 const char *text, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
174 int x, int y, |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
175 SDL_Color color) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
176 { |
4638
08d22c54a21f
Don't need to use strlen() to determine if there's text.
Sam Lantinga <slouken@libsdl.org>
parents:
4637
diff
changeset
|
177 if (text && *text) { |
4637
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
178 SDL_Surface *textSur = TTF_RenderUTF8_Blended(font, text, color); |
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
179 SDL_Rect dest = { x, y, textSur->w, textSur->h }; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
180 |
4637
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
181 SDL_BlitSurface(textSur, NULL, sur, &dest); |
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
182 SDL_FreeSurface(textSur); |
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
183 } |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
184 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
185 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
186 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
187 void Redraw() |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
188 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
189 int w = 0, h = textRect.h; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
190 SDL_Rect cursorRect, underlineRect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
191 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
192 SDL_FillRect(screen, &textRect, backColor); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
193 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
194 #ifdef HAVE_SDL_TTF |
4638
08d22c54a21f
Don't need to use strlen() to determine if there's text.
Sam Lantinga <slouken@libsdl.org>
parents:
4637
diff
changeset
|
195 if (*text) |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
196 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
197 RenderText(screen, font, text, textRect.x, textRect.y, textColor); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
198 TTF_SizeUTF8(font, text, &w, &h); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
199 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
200 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
201 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
202 markedRect.x = textRect.x + w; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
203 markedRect.w = textRect.w - w; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
204 if (markedRect.w < 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
205 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
206 SDL_Flip(screen); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
207 // Stop text input because we cannot hold any more characters |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
208 SDL_StopTextInput(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
209 return; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
210 } |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
211 else |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
212 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
213 SDL_StartTextInput(); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
214 } |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
215 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
216 cursorRect = markedRect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
217 cursorRect.w = 2; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
218 cursorRect.h = h; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
219 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
220 SDL_FillRect(screen, &markedRect, backColor); |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
221 if (markedText[0]) |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
222 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
223 #ifdef HAVE_SDL_TTF |
4757 | 224 if (cursor) |
225 { | |
226 char *p = utf8_advance(markedText, cursor); | |
227 char c = 0; | |
228 if (!p) | |
229 p = &markedText[strlen(markedText)]; | |
230 | |
231 c = *p; | |
232 *p = 0; | |
233 TTF_SizeUTF8(font, markedText, &w, 0); | |
234 cursorRect.x += w; | |
235 *p = c; | |
236 } | |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
237 RenderText(screen, font, markedText, markedRect.x, markedRect.y, textColor); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
238 TTF_SizeUTF8(font, markedText, &w, &h); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
239 #endif |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
240 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
241 underlineRect = markedRect; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
242 underlineRect.y += (h - 2); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
243 underlineRect.h = 2; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
244 underlineRect.w = w; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
245 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
246 SDL_FillRect(screen, &underlineRect, lineColor); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
247 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
248 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
249 SDL_FillRect(screen, &cursorRect, lineColor); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
250 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
251 SDL_Flip(screen); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
252 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
253 SDL_SetTextInputRect(&markedRect); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
254 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
255 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
256 void |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
257 HotKey_ToggleFullScreen(void) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
258 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
259 SDL_Surface *screen; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
260 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
261 screen = SDL_GetVideoSurface(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
262 if (SDL_WM_ToggleFullScreen(screen)) { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
263 printf("Toggled fullscreen mode - now %s\n", |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
264 (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
265 } else { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
266 printf("Unable to toggle fullscreen mode\n"); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
267 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
268 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
269 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
270 int main(int argc, char *argv[]) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
271 { |
3338 | 272 SDL_Event event; |
273 int done = 0; | |
274 | |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
275 InitVideo(argc, argv); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
276 InitInput(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
277 Redraw(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
278 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
279 while (! done && SDL_WaitEvent(&event)) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
280 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
281 switch (event.type) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
282 { |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
283 case SDL_KEYDOWN: |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
284 switch (event.key.keysym.sym) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
285 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
286 case SDLK_ESCAPE: |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
287 done = 1; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
288 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
289 case SDLK_RETURN: |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
290 text[0]=0x00; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
291 Redraw(); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
292 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
293 case SDLK_BACKSPACE: |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
294 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
295 int textlen=SDL_strlen(text); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
296 |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
297 do { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
298 if (textlen==0) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
299 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
300 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
301 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
302 if ((text[textlen-1] & 0x80) == 0x00) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
303 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
304 /* One byte */ |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
305 text[textlen-1]=0x00; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
306 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
307 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
308 if ((text[textlen-1] & 0xC0) == 0x80) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
309 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
310 /* Byte from the multibyte sequence */ |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
311 text[textlen-1]=0x00; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
312 textlen--; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
313 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
314 if ((text[textlen-1] & 0xC0) == 0xC0) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
315 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
316 /* First byte of multibyte sequence */ |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
317 text[textlen-1]=0x00; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
318 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
319 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
320 } while(1); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
321 |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
322 Redraw(); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
323 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
324 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
325 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
326 |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
327 if (done) |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
328 { |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
329 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
330 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
331 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
332 fprintf(stderr, |
4465
3e69e077cb95
Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents:
3581
diff
changeset
|
333 "Keyboard: scancode 0x%08X = %s, keycode 0x%08X = %s\n", |
3e69e077cb95
Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents:
3581
diff
changeset
|
334 event.key.keysym.scancode, |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
335 SDL_GetScancodeName(event.key.keysym.scancode), |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
336 event.key.keysym.sym, SDL_GetKeyName(event.key.keysym.sym)); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
337 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
338 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
339 case SDL_TEXTINPUT: |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
340 if (SDL_strlen(event.text.text) == 0 || event.text.text[0] == '\n' || |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
341 markedRect.w < 0) |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
342 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
343 |
4465
3e69e077cb95
Removed multi-mouse / multi-keyboard support in anticipation of a real multi-mouse and multi-touch API.
Sam Lantinga <slouken@libsdl.org>
parents:
3581
diff
changeset
|
344 fprintf(stderr, "Keyboard: text input \"%s\"\n", event.text.text); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
345 |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
346 if (SDL_strlen(text) + SDL_strlen(event.text.text) < sizeof(text)) |
4763
518d1679d2d0
Merged Daniel's Google Summer of Code work from SDL-gsoc2010_IME
Sam Lantinga <slouken@libsdl.org>
diff
changeset
|
347 SDL_strlcat(text, event.text.text, sizeof(text)); |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
348 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
349 fprintf(stderr, "text inputed: %s\n", text); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
350 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
351 // After text inputed, we can clear up markedText because it |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
352 // is committed |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
353 markedText[0] = 0; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
354 Redraw(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
355 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
356 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
357 case SDL_TEXTEDITING: |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
358 fprintf(stderr, "text editing \"%s\", selected range (%d, %d)\n", |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
359 event.edit.text, event.edit.start, event.edit.length); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
360 |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
361 strcpy(markedText, event.edit.text); |
4757 | 362 cursor = event.edit.start; |
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
363 Redraw(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
364 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
365 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
366 case SDL_QUIT: |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
367 done = 1; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
368 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
369 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
370 default: |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
371 break; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
372 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
373 } |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
374 |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
375 CleanupVideo(); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
376 return 0; |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
377 } |