5a230b33c1a74e88e958b7110f516950b2b5980e
[framework/uifw/expedite.git] / src / bin / engine_gl_sdl.c
1 #include <assert.h>
2 #include "main.h"
3
4 #include <Evas_Engine_GL_SDL.h>
5
6 Eina_Bool
7 engine_gl_sdl_args(const char *engine, int width, int height)
8 {
9    Evas_Engine_Info_GL_SDL *einfo;
10    int                  i;
11
12    evas_output_method_set(evas, evas_render_method_lookup("gl_sdl"));
13
14    einfo = (Evas_Engine_Info_GL_SDL *) evas_engine_info_get(evas);
15    if (!einfo)
16      {
17         printf("Evas wasn't build with GL SDL backend.\n");
18         return EINA_FALSE;
19      }
20
21    /* the following is specific to the engine */
22    einfo->flags.fullscreen = fullscreen;
23    einfo->flags.noframe = 0;
24
25    if (!evas_engine_info_set(evas, (Evas_Engine_Info *) einfo))
26      {
27         printf("Evas could not initialize the GL SDL Engine\n");
28         return EINA_FALSE;
29      }
30
31    return EINA_TRUE;
32 }
33
34 void
35 engine_gl_sdl_loop(void)
36 {
37    SDL_Event event;
38
39    while(SDL_PollEvent(&event))
40      {
41         switch(event.type)
42           {
43           case SDL_MOUSEMOTION:
44              evas_event_feed_mouse_move(evas, event.motion.x, event.motion.y, 0, NULL);
45              break;
46           case SDL_MOUSEBUTTONDOWN:
47              evas_event_feed_mouse_move(evas, event.button.x, event.button.y, 0, NULL);
48              evas_event_feed_mouse_down(evas, event.button.state, EVAS_BUTTON_NONE, 0, NULL);
49              break;
50           case SDL_MOUSEBUTTONUP:
51              evas_event_feed_mouse_move(evas, event.button.x, event.button.y, 0, NULL);
52              evas_event_feed_mouse_up(evas, event.button.state, EVAS_BUTTON_NONE, 0, NULL);
53              break;
54           case SDL_VIDEORESIZE:
55              evas_output_viewport_set(evas, 0, 0,
56                                       event.resize.w, event.resize.w);
57              evas_output_size_set(evas, event.resize.w, event.resize.w);
58              evas_output_size_get(evas, &win_w, &win_h);
59              break;
60           case SDL_VIDEOEXPOSE:
61              evas_output_size_get(evas, &win_w, &win_h);
62              evas_damage_rectangle_add(evas, 0, 0, win_w, win_h);
63              break;
64           case SDL_KEYDOWN:
65              switch (event.key.keysym.sym)
66                {
67                case SDLK_LSHIFT:
68                case SDLK_RSHIFT:
69                   evas_key_modifier_on(evas, "Shift");
70                   break;
71                case SDLK_RCTRL:
72                case SDLK_LCTRL:
73                   evas_key_modifier_on(evas, "Control");
74                   break;
75                case SDLK_MENU:
76                case SDLK_RALT:
77                case SDLK_LALT:
78                   evas_key_modifier_on(evas, "Alt");
79                   break;
80                case SDLK_LSUPER:
81                case SDLK_RSUPER:
82                   evas_key_modifier_on(evas, "Super");
83                   break;
84                case SDLK_CAPSLOCK:
85                   if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
86                     evas_key_lock_off(evas, "Caps_Lock");
87                   else
88                     evas_key_lock_on(evas, "Caps_Lock");
89                   break;
90                case SDLK_NUMLOCK:
91                   if (evas_key_lock_is_set(evas_key_lock_get(evas), "Num_Lock"))
92                     evas_key_lock_off(evas, "Num_Lock");
93                   else
94                     evas_key_lock_on(evas, "Num_Lock");
95                   break;
96                case SDLK_SCROLLOCK:
97                   if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock"))
98                     evas_key_lock_off(evas, "Scroll_Lock");
99                   else
100                     evas_key_lock_on(evas, "Scroll_Lock");
101                   break;
102                case SDLK_s:
103                case SDLK_ESCAPE:
104                   evas_event_feed_key_down(evas, "Escape", "Escape", NULL, NULL, 0, NULL);
105                   break;
106                case SDLK_KP_ENTER:
107                case SDLK_RETURN:
108                   evas_event_feed_key_down(evas, "Return", "Return", NULL, NULL, 0, NULL);
109                   break;
110                case SDLK_LEFT: evas_event_feed_key_down(evas, "Left", "Left", NULL, NULL, 0, NULL); break;
111                case SDLK_RIGHT: evas_event_feed_key_down(evas, "Right", "Right", NULL, NULL, 0, NULL); break;
112                case SDLK_q:
113                   if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
114                     evas_event_feed_key_down(evas, "Q", "Q", NULL, NULL, 0, NULL);
115                   else
116                     evas_event_feed_key_down(evas, "q", "q", NULL, NULL, 0, NULL);
117                   break;
118                default:
119                   break;
120                }
121              break;
122           case SDL_KEYUP:
123              switch (event.key.keysym.sym)
124                {
125                case SDLK_LSHIFT:
126                case SDLK_RSHIFT:
127                   evas_key_modifier_off(evas, "Shift");
128                   break;
129                case SDLK_RCTRL:
130                case SDLK_LCTRL:
131                   evas_key_modifier_off(evas, "Control");
132                   break;
133                case SDLK_MENU:
134                case SDLK_RALT:
135                case SDLK_LALT:
136                   evas_key_modifier_off(evas, "Alt");
137                   break;
138                case SDLK_LSUPER:
139                case SDLK_RSUPER:
140                   evas_key_modifier_off(evas, "Super");
141                   break;
142                case SDLK_ESCAPE: evas_event_feed_key_up(evas, "Escape", "Escape", NULL, NULL, 0, NULL); break;
143                case SDLK_RETURN: evas_event_feed_key_up(evas, "Return", "Return", NULL, NULL, 0, NULL); break;
144                case SDLK_LEFT: evas_event_feed_key_up(evas, "Left", "Left", NULL, NULL, 0, NULL); break;
145                case SDLK_RIGHT: evas_event_feed_key_up(evas, "Right", "Right", NULL, NULL, 0, NULL); break;
146                case SDLK_q:
147                   if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock"))
148                     evas_event_feed_key_up(evas, "Q", "Q", NULL, NULL, 0, NULL);
149                   else
150                     evas_event_feed_key_up(evas, "q", "q", NULL, NULL, 0, NULL);
151                   break;
152                default:
153                   break;
154                }
155              break;
156           case SDL_QUIT:
157           case SDL_SYSWMEVENT:
158           case SDL_USEREVENT:
159           case SDL_ACTIVEEVENT:
160           case SDL_JOYAXISMOTION:
161           case SDL_JOYBALLMOTION:
162           case SDL_JOYHATMOTION:
163           case SDL_JOYBUTTONDOWN:
164           case SDL_JOYBUTTONUP:
165           default:
166              break;
167           }
168      }
169 }
170
171 void
172 engine_gl_sdl_shutdown(void)
173 {
174 }