Mercurial > sdl-ios-xcode
annotate test/testime.c @ 5080:6d94060d16a9
Fixed bug #1011
Daniel Ellis 2010-06-25 15:20:31 PDT
SDL based applications sometimes display the wrong application name in the
Sound Preferences dialog when using pulseaudio.
I can see from the code that the SDL pulse module is initiating a new pulse
audio context and passing an application name using the function
get_progname().
The get_progname() function returns the name of the current process. However,
the process name is often not a suitable name to use. For example, the OpenShot
video editor is a python application, and so "python" is displayed in the Sound
Preferences window (see Bug #596504), when it should be displaying "OpenShot".
PulseAudio allows applications to specify the application name, either at the
time the context is created (as SDL does currently), or by special environment
variables (see http://www.pulseaudio.org/wiki/ApplicationProperties). If no
name is specified, then pulseaudio will determine the name based on the
process.
If you specify the application name when initiating the pulseaudio context,
then that will override any application name specified using an environment
variable.
As libsdl is a library, I believe the solution is for libsdl to not specify any
application name when initiating a pulseaudio context, which will enable
applications to specify the application name using environment variables. In
the case that the applications do not specify anything, pulseaudio will fall
back to using the process name anyway.
The attached patch removes the get_progname() function and passes NULL as the
application name when creating the pulseaudio context, which fixes the issue.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 23 Jan 2011 21:55:04 -0800 |
parents | 518d1679d2d0 |
children | 1435f8a6425c |
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 |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
13 #ifdef __QNXNTO__ |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
14 #define DEFAULT_FONT "/usr/photon/font_repository/tt0003m_.ttf" |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
15 #else |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
16 #define DEFAULT_FONT "/System/Library/Fonts/华文细黑.ttf" |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
17 #endif |
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
|
18 #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
|
19 |
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 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
|
21 |
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 #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
|
23 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
|
24 #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
|
25 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
|
26 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
|
27 SDL_Color textColor = { 0, 0, 0 }; |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
28 char text[MAX_TEXT_LENGTH], markedText[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; |
4757 | 29 int cursor = 0; |
30 | |
31 size_t utf8_length(unsigned char c) | |
32 { | |
33 c = (unsigned char)(0xff & c); | |
34 if (c < 0x80) | |
35 return 1; | |
36 else if ((c >> 5) ==0x6) | |
37 return 2; | |
38 else if ((c >> 4) == 0xe) | |
39 return 3; | |
40 else if ((c >> 3) == 0x1e) | |
41 return 4; | |
42 else | |
43 return 0; | |
44 } | |
45 | |
46 char *utf8_next(char *p) | |
47 { | |
48 size_t len = utf8_length(*p); | |
49 size_t i = 0; | |
50 if (!len) | |
51 return 0; | |
52 | |
53 for (; i < len; ++i) | |
54 { | |
55 ++p; | |
56 if (!*p) | |
57 return 0; | |
58 } | |
59 return p; | |
60 } | |
61 | |
62 char *utf8_advance(char *p, size_t distance) | |
63 { | |
64 size_t i = 0; | |
65 for (; i < distance && p; ++i) | |
66 { | |
67 p = utf8_next(p); | |
68 } | |
69 return p; | |
70 } | |
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
|
71 |
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 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
|
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 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
|
75 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
|
76 } |
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 |
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 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
|
79 { |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
80 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
|
81 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
|
82 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
|
83 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
|
84 |
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 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
|
86 { |
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 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
|
88 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
|
89 |
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 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
|
91 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
|
92 |
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 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
|
94 { |
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 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
|
96 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
|
97 |
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 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
|
99 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
|
100 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
|
101 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
|
102 } |
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 } |
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
|
104 |
3581
15eea7a1fa97
Implemented SDL_setenv(), moved SDL_putenv() to compat.
Ryan C. Gordon <icculus@icculus.org>
parents:
3478
diff
changeset
|
105 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
|
106 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
|
107 { |
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
|
108 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
|
109 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
|
110 } |
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 #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
|
113 /* 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
|
114 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
|
115 |
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 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
|
117 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
|
118 { |
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
|
119 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
|
120 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
|
121 } |
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 #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
|
123 |
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 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
|
125 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
|
126 |
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 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
|
128 { |
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 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
|
130 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
|
131 |
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 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
|
133 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
|
134 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
|
135 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
|
136 } |
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 /* 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
|
139 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
|
140 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
|
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 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
|
143 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
|
144 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
|
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 } |
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 |
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 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
|
149 { |
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 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
|
151 #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
|
152 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
|
153 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
|
154 #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
|
155 } |
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 |
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 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
|
158 { |
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 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
|
160 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
|
161 |
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 /* 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
|
163 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
|
164 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
|
165 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
|
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 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
|
168 markedRect = textRect; |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
169 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
|
170 |
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 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
|
172 } |
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 |
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 #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
|
175 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
|
176 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
|
177 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
|
178 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
|
179 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
|
180 { |
4638
08d22c54a21f
Don't need to use strlen() to determine if there's text.
Sam Lantinga <slouken@libsdl.org>
parents:
4637
diff
changeset
|
181 if (text && *text) { |
4637
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
182 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
|
183 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
|
184 |
4637
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
185 SDL_BlitSurface(textSur, NULL, sur, &dest); |
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
186 SDL_FreeSurface(textSur); |
8c229370ddba
Fix for deleting the last uncommit character
Jjgod Jiang <gzjjgod@gmail.com>
parents:
4465
diff
changeset
|
187 } |
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
|
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 #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
|
190 |
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 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
|
192 { |
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 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
|
194 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
|
195 |
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 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
|
197 |
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 #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
|
199 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
|
200 { |
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 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
|
202 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
|
203 } |
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 #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
|
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 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
|
207 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
|
208 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
|
209 { |
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 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
|
211 // 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
|
212 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
|
213 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
|
214 } |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
215 else |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
216 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
217 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
|
218 } |
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
|
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 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
|
221 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
|
222 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
|
223 |
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
|
224 SDL_FillRect(screen, &markedRect, backColor); |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
225 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
|
226 { |
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
|
227 #ifdef HAVE_SDL_TTF |
4757 | 228 if (cursor) |
229 { | |
230 char *p = utf8_advance(markedText, cursor); | |
231 char c = 0; | |
232 if (!p) | |
233 p = &markedText[strlen(markedText)]; | |
234 | |
235 c = *p; | |
236 *p = 0; | |
237 TTF_SizeUTF8(font, markedText, &w, 0); | |
238 cursorRect.x += w; | |
239 *p = c; | |
240 } | |
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
|
241 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
|
242 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
|
243 #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
|
244 |
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 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
|
246 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
|
247 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
|
248 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
|
249 |
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 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
|
251 } |
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_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
|
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 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
|
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
|
257 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
|
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 |
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 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
|
261 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
|
262 { |
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 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
|
264 |
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 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
|
266 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
|
267 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
|
268 (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
|
269 } 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
|
270 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
|
271 } |
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
|
272 } |
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
|
273 |
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
|
274 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
|
275 { |
3338 | 276 SDL_Event event; |
277 int done = 0; | |
278 | |
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
|
279 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
|
280 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
|
281 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
|
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 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
|
284 { |
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
|
285 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
|
286 { |
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
|
287 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
|
288 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
|
289 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
290 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
|
291 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
|
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_RETURN: |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
294 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
|
295 Redraw(); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
296 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
297 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
|
298 { |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
299 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
|
300 |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
301 do { |
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 (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
|
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 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
305 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
306 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
|
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 /* 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
|
309 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
|
310 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
311 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
312 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
|
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 /* 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
|
315 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
|
316 textlen--; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
317 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
318 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
|
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 /* 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
|
321 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
|
322 break; |
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 } 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
|
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 Redraw(); |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
327 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
328 break; |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
329 } |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
330 |
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
331 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
|
332 { |
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
|
333 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
|
334 } |
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 |
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 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
|
337 "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
|
338 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
|
339 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
|
340 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
|
341 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
|
342 |
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 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
|
344 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
|
345 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
|
346 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
|
347 |
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
|
348 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
|
349 |
3478
f7541260e89c
Added support for QNX default font. Backspace and Return keys now handled.
Mike Gorchak <lestat@i.com.ua>
parents:
3338
diff
changeset
|
350 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
|
351 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
|
352 |
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
|
353 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
|
354 |
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 // 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
|
356 // is committed |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
357 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
|
358 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
|
359 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
|
360 |
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
|
361 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
|
362 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
|
363 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
|
364 |
4756
b99b1024607a
Changed markedText to have its own storage to resolve multiple bugs.
dewyatt
parents:
4465
diff
changeset
|
365 strcpy(markedText, event.edit.text); |
4757 | 366 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
|
367 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
|
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 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
|
371 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
|
372 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
|
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 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
|
375 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
|
376 } |
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 } |
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
|
378 |
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
|
379 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
|
380 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
|
381 } |