annotate XCodeiPhoneOS/Demos/src/keyboard.c @ 2429:2c55b72ba46e gsoc2008_iphone

testdyngles is exactly what it sounds like -- a version of testdyngl that uses OpenGL ES calls instead of OpenGL. Was necessary to create because glOrtho is called glOrthof in OpenGL ES, and OpenGL ES doesn't have glBegin() type semantics for specifying geometry.
author Holmes Futrell <hfutrell@umail.ucsb.edu>
date Fri, 15 Aug 2008 00:52:52 +0000
parents 74d25e48d54d
children
rev   line source
2412
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
1 /*
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
2 * keyboard.c
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
3 * written by Holmes Futrell
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
4 * use however you want
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
5 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
6
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
7 #import "SDL.h"
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
8 #import "common.h"
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
9
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
10 #define GLYPH_SIZE_IMAGE 16 /* size of glyphs (characters) in the bitmap font file */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
11 #define GLYPH_SIZE_SCREEN 32 /* size of glyphs (characters) as shown on the screen */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
12
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
13 static SDL_TextureID textureID; /* texture where we'll hold our font */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
14
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
15 /* iPhone SDL addition keyboard related function definitions */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
16 extern DECLSPEC int SDLCALL SDL_iPhoneKeyboardShow(SDL_WindowID windowID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
17 extern DECLSPEC int SDLCALL SDL_iPhoneKeyboardHide(SDL_WindowID windowID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
18 extern DECLSPEC SDL_bool SDLCALL SDL_iPhoneKeyboardIsShown(SDL_WindowID windowID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
19 extern DECLSPEC int SDLCALL SDL_iPhoneKeyboardToggle(SDL_WindowID windowID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
20
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
21 /* function declarations */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
22 void cleanup(void);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
23 void drawBlank(int x, int y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
24
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
25 static int numChars = 0; /* number of characters we've typed so far */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
26 static SDL_bool lastCharWasColon = 0; /* we use this to detect sequences such as :) */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
27 static SDL_Color bg_color = { 50, 50, 100, 255 }; /* color of background */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
28
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
29 /* this structure maps a scancode to an index in our bitmap font.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
30 it also contains data about under which modifiers the mapping is valid
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
31 (for example, we don't want shift + 1 to produce the character '1',
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
32 but rather the character '!')
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
33 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
34 typedef struct {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
35 SDL_scancode scancode; /* scancode of the key we want to map */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
36 int allow_no_mod; /* is the map valid if the key has no modifiers? */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
37 SDLMod mod; /* what modifiers are allowed for the mapping */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
38 int index; /* what index in the font does the scancode map to */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
39 } fontMapping;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
40
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
41 #define TABLE_SIZE 51 /* size of our table which maps keys and modifiers to font indices */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
42
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
43 /* Below is the table that defines the mapping between scancodes and modifiers to indices in the
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
44 bitmap font. As an example, then line '{ SDL_SCANCODE_A, 1, KMOD_SHIFT, 33 }' means, map
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
45 the key A (which has scancode SDL_SCANCODE_A) to index 33 in the font (which is a picture of an A),
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
46 The '1' means that the mapping is valid even if there are no modifiers, and KMOD_SHIFT means the
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
47 mapping is also valid if the user is holding shift.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
48 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
49 fontMapping map[TABLE_SIZE] = {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
50
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
51 { SDL_SCANCODE_A, 1, KMOD_SHIFT, 33 }, /* A */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
52 { SDL_SCANCODE_B, 1, KMOD_SHIFT, 34 }, /* B */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
53 { SDL_SCANCODE_C, 1, KMOD_SHIFT, 35 }, /* C */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
54 { SDL_SCANCODE_D, 1, KMOD_SHIFT, 36 }, /* D */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
55 { SDL_SCANCODE_E, 1, KMOD_SHIFT, 37 }, /* E */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
56 { SDL_SCANCODE_F, 1, KMOD_SHIFT, 38 }, /* F */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
57 { SDL_SCANCODE_G, 1, KMOD_SHIFT, 39 }, /* G */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
58 { SDL_SCANCODE_H, 1, KMOD_SHIFT, 40 }, /* H */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
59 { SDL_SCANCODE_I, 1, KMOD_SHIFT, 41 }, /* I */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
60 { SDL_SCANCODE_J, 1, KMOD_SHIFT, 42 }, /* J */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
61 { SDL_SCANCODE_K, 1, KMOD_SHIFT, 43 }, /* K */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
62 { SDL_SCANCODE_L, 1, KMOD_SHIFT, 44 }, /* L */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
63 { SDL_SCANCODE_M, 1, KMOD_SHIFT, 45 }, /* M */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
64 { SDL_SCANCODE_N, 1, KMOD_SHIFT, 46 }, /* N */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
65 { SDL_SCANCODE_O, 1, KMOD_SHIFT, 47 }, /* O */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
66 { SDL_SCANCODE_P, 1, KMOD_SHIFT, 48 }, /* P */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
67 { SDL_SCANCODE_Q, 1, KMOD_SHIFT, 49 }, /* Q */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
68 { SDL_SCANCODE_R, 1, KMOD_SHIFT, 50 }, /* R */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
69 { SDL_SCANCODE_S, 1, KMOD_SHIFT, 51 }, /* S */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
70 { SDL_SCANCODE_T, 1, KMOD_SHIFT, 52 }, /* T */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
71 { SDL_SCANCODE_U, 1, KMOD_SHIFT, 53 }, /* U */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
72 { SDL_SCANCODE_V, 1, KMOD_SHIFT, 54 }, /* V */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
73 { SDL_SCANCODE_W, 1, KMOD_SHIFT, 55 }, /* W */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
74 { SDL_SCANCODE_X, 1, KMOD_SHIFT, 56 }, /* X */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
75 { SDL_SCANCODE_Y, 1, KMOD_SHIFT, 57 }, /* Y */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
76 { SDL_SCANCODE_Z, 1, KMOD_SHIFT, 58 }, /* Z */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
77 { SDL_SCANCODE_0, 1, 0, 16 }, /* 0 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
78 { SDL_SCANCODE_1, 1, 0, 17 }, /* 1 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
79 { SDL_SCANCODE_2, 1, 0, 18 }, /* 2 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
80 { SDL_SCANCODE_3, 1, 0, 19 }, /* 3 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
81 { SDL_SCANCODE_4, 1, 0, 20 }, /* 4 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
82 { SDL_SCANCODE_5, 1, 0, 21 }, /* 5 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
83 { SDL_SCANCODE_6, 1, 0, 22 }, /* 6 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
84 { SDL_SCANCODE_7, 1, 0, 23 }, /* 7 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
85 { SDL_SCANCODE_8, 1, 0, 24 }, /* 8 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
86 { SDL_SCANCODE_9, 1, 0, 25 }, /* 9 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
87 { SDL_SCANCODE_SPACE, 1, 0, 0 }, /*' '*/
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
88 { SDL_SCANCODE_1, 0, KMOD_SHIFT, 1 }, /* ! */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
89 { SDL_SCANCODE_SLASH, 0, KMOD_SHIFT, 31}, /* ? */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
90 { SDL_SCANCODE_SLASH, 1, 0, 15}, /* / */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
91 { SDL_SCANCODE_COMMA, 1, 0, 12}, /* , */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
92 { SDL_SCANCODE_SEMICOLON, 1, 0, 27}, /* ; */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
93 { SDL_SCANCODE_SEMICOLON, 0, KMOD_SHIFT, 26}, /* : */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
94 { SDL_SCANCODE_PERIOD, 1, 0, 14}, /* . */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
95 { SDL_SCANCODE_MINUS, 1, 0, 13}, /* - */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
96 { SDL_SCANCODE_EQUALS, 0, KMOD_SHIFT, 11}, /* = */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
97 { SDL_SCANCODE_APOSTROPHE, 1, 0, 7}, /* ' */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
98 { SDL_SCANCODE_APOSTROPHE, 0, KMOD_SHIFT, 2}, /* " */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
99 { SDL_SCANCODE_5, 0, KMOD_SHIFT, 5}, /* % */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
100
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
101 };
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
102
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
103 /*
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
104 This function maps an SDL_keysym to an index in the bitmap font.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
105 It does so by scanning through the font mapping table one entry
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
106 at a time.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
107
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
108 If a match is found (scancode and allowed modifiers), the proper
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
109 index is returned.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
110
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
111 If there is no entry for the key, -1 is returned
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
112 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
113 int keyToIndex(SDL_keysym key) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
114 int i, index = -1;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
115 for (i=0; i<TABLE_SIZE; i++) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
116 fontMapping compare = map[i];
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
117 if (key.scancode == compare.scancode) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
118 /* if this entry is valid with no key mod and we have no keymod, or if
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
119 the key's modifiers are allowed modifiers for that mapping */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
120 if ((compare.allow_no_mod && key.mod == 0) || ( key.mod & compare.mod ) ) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
121 index = compare.index;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
122 break;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
123 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
124 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
125 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
126 return index;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
127 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
128 /*
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
129 This function returns and x,y position for a given character number.
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
130 It is used for positioning each character of text
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
131 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
132 void getPositionForCharNumber(int n, int *x, int *y) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
133 int x_padding = 16; /* padding space on left and right side of screen */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
134 int y_padding = 32; /* padding space at top of screen */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
135 /* figure out the number of characters that can fit horizontally across the screen */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
136 int max_x_chars = (SCREEN_WIDTH - 2 * x_padding) / GLYPH_SIZE_SCREEN;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
137 int line_separation = 5; /* pixels between each line */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
138 *x = (n % max_x_chars) * GLYPH_SIZE_SCREEN + x_padding;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
139 *y = (n / max_x_chars) * (GLYPH_SIZE_SCREEN + line_separation) + y_padding;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
140 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
141 void drawIndex(int index) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
142 int x, y;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
143 getPositionForCharNumber(numChars, &x, &y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
144 SDL_Rect srcRect = { GLYPH_SIZE_IMAGE * index, 0, GLYPH_SIZE_IMAGE, GLYPH_SIZE_IMAGE };
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
145 SDL_Rect dstRect = { x, y, GLYPH_SIZE_SCREEN, GLYPH_SIZE_SCREEN };
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
146 drawBlank(x, y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
147 SDL_RenderCopy(textureID, &srcRect, &dstRect);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
148 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
149 /* draws the cursor icon at the current end position of the text */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
150 void drawCursor(void) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
151 drawIndex(29); /* cursor is at index 29 in the bitmap font */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
152 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
153 /* paints over a glyph sized region with the background color
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
154 in effect it erases the area
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
155 */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
156 void drawBlank(int x, int y) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
157 SDL_Rect rect = { x, y, GLYPH_SIZE_SCREEN, GLYPH_SIZE_SCREEN };
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
158 SDL_RenderFill(bg_color.r, bg_color.g, bg_color.b, bg_color.unused, &rect);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
159 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
160 /* moves backwards one character, erasing the last one put down */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
161 void backspace(void) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
162 int x, y;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
163 if (numChars > 0) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
164 getPositionForCharNumber(numChars, &x, &y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
165 drawBlank(x, y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
166 numChars--;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
167 getPositionForCharNumber(numChars, &x, &y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
168 drawBlank(x, y);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
169 drawCursor();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
170 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
171 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
172 /* this function loads our font into an SDL_Texture and returns the SDL_TextureID */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
173 SDL_TextureID loadFont(void) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
174
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
175 SDL_Surface *surface = SDL_LoadBMP("kromasky_16x16.bmp");
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
176
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
177 if (!surface) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
178 printf("Error loading bitmap: %s\n", SDL_GetError());
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
179 return 0;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
180 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
181 else {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
182 /* set the transparent color for the bitmap font (hot pink) */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
183 SDL_SetColorKey(surface, 1, SDL_MapRGB(surface->format, 238, 0, 252 ));
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
184 /* now we convert the surface to our desired pixel format */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
185 int format = SDL_PIXELFORMAT_ABGR8888; /* desired texture format */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
186 Uint32 Rmask, Gmask, Bmask, Amask; /* masks for desired format */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
187 int bpp; /* bits per pixel for desired format */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
188 SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask, &Amask);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
189 SDL_Surface *converted = SDL_CreateRGBSurface(0, surface->w, surface->h, bpp, Rmask, Gmask, Bmask, Amask);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
190 SDL_BlitSurface(surface, NULL, converted, NULL);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
191 /* create our texture */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
192 textureID = SDL_CreateTextureFromSurface(SDL_PIXELFORMAT_ABGR8888, converted);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
193 if (textureID == 0) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
194 printf("texture creation failed: %s\n", SDL_GetError());
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
195 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
196 else {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
197 /* set blend mode for our texture */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
198 SDL_SetTextureBlendMode(textureID, SDL_TEXTUREBLENDMODE_BLEND);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
199 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
200 SDL_FreeSurface(surface);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
201 SDL_FreeSurface(converted);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
202 return textureID;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
203 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
204 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
205
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
206 int main(int argc, char *argv[]) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
207
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
208 int index; /* index of last key we pushed in the bitmap font */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
209 SDL_Event event; /* last event received */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
210 SDLMod mod; /* key modifiers of last key we pushed */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
211 SDL_scancode scancode; /* scancode of last key we pushed */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
212
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
213 if (SDL_Init(SDL_INIT_VIDEO) < 0) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
214 printf("Error initializing SDL: %s", SDL_GetError());
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
215 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
216 /* create window */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
217 SDL_WindowID windowID = SDL_CreateWindow("iPhone keyboard test", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
218 /* create renderer */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
219 SDL_CreateRenderer(windowID, 0, 0);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
220
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
221 /* load up our font */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
222 loadFont();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
223
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
224 /* draw the background, we'll just paint over it */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
225 SDL_RenderFill(bg_color.r, bg_color.g, bg_color.b, bg_color.unused, NULL);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
226 SDL_RenderPresent();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
227
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
228 int done = 0;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
229 /* loop till we get SDL_Quit */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
230 while (SDL_WaitEvent(&event)) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
231 switch (event.type) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
232 case SDL_QUIT:
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
233 done = 1;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
234 break;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
235 case SDL_KEYDOWN:
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
236 index = keyToIndex(event.key.keysym);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
237 scancode = event.key.keysym.scancode;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
238 mod = event.key.keysym.mod;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
239 if (scancode == SDL_SCANCODE_DELETE) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
240 /* if user hit delete, delete the last character */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
241 backspace();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
242 lastCharWasColon = 0;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
243 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
244 else if (lastCharWasColon && scancode == SDL_SCANCODE_0 && (mod & KMOD_SHIFT)) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
245 /* if our last key was a colon and this one is a close paren, the make a hoppy face */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
246 backspace();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
247 drawIndex(32); /* index for happy face */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
248 numChars++;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
249 drawCursor();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
250 lastCharWasColon = 0;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
251 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
252 else if (index != -1) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
253 /* if we aren't doing a happy face, then just draw the normal character */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
254 drawIndex(index);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
255 numChars++;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
256 drawCursor();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
257 lastCharWasColon = (event.key.keysym.scancode == SDL_SCANCODE_SEMICOLON\
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
258 && (event.key.keysym.mod & KMOD_SHIFT));
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
259 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
260 /* check if the key was a colon */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
261 /* draw our updates to the screen */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
262 SDL_RenderPresent();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
263 break;
2423
74d25e48d54d Added conditional compilation line #ifdef __IPHONE_OS__ to prevent other platforms from including iPhone specific line of code that is used to toggle keyboard visibility.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2412
diff changeset
264 #ifdef __IPHONEOS__
2412
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
265 case SDL_MOUSEBUTTONUP:
2423
74d25e48d54d Added conditional compilation line #ifdef __IPHONE_OS__ to prevent other platforms from including iPhone specific line of code that is used to toggle keyboard visibility.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2412
diff changeset
266 /* mouse up toggles onscreen keyboard visibility
74d25e48d54d Added conditional compilation line #ifdef __IPHONE_OS__ to prevent other platforms from including iPhone specific line of code that is used to toggle keyboard visibility.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2412
diff changeset
267 this function is available ONLY on iPhone OS
74d25e48d54d Added conditional compilation line #ifdef __IPHONE_OS__ to prevent other platforms from including iPhone specific line of code that is used to toggle keyboard visibility.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2412
diff changeset
268 */
2412
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
269 SDL_iPhoneKeyboardToggle(windowID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
270 break;
2423
74d25e48d54d Added conditional compilation line #ifdef __IPHONE_OS__ to prevent other platforms from including iPhone specific line of code that is used to toggle keyboard visibility.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2412
diff changeset
271 #endif
2412
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
272 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
273 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
274 cleanup();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
275 return 0;
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
276 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
277
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
278 /* clean up after ourselves like a good kiddy */
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
279 void cleanup(void) {
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
280 SDL_DestroyTexture(textureID);
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
281 SDL_Quit();
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
282 }
a01958cd513d keyboard.c contains the source code for the bitmap font keyboard example.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
diff changeset
283