OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / events.h
1 /*\r
2  *                      GPAC - Multimedia Framework C SDK\r
3  *\r
4  *                      Copyright (c) Jean Le Feuvre 2000-2005 \r
5  *                                      All rights reserved\r
6  *\r
7  *  This file is part of GPAC / Events management\r
8  *\r
9  *  GPAC is free software; you can redistribute it and/or modify\r
10  *  it under the terms of the GNU Lesser General Public License as published by\r
11  *  the Free Software Foundation; either version 2, or (at your option)\r
12  *  any later version.\r
13  *   \r
14  *  GPAC is distributed in the hope that it will be useful,\r
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
17  *  GNU Lesser General Public License for more details.\r
18  *   \r
19  *  You should have received a copy of the GNU Lesser General Public\r
20  *  License along with this library; see the file COPYING.  If not, write to\r
21  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
22  *\r
23  */\r
24 \r
25 \r
26 \r
27 #ifndef _GF_EVENTS_H_\r
28 #define _GF_EVENTS_H_\r
29 \r
30 #ifdef __cplusplus\r
31 extern "C" {\r
32 #endif\r
33 \r
34 #include <gpac/math.h>\r
35 #include <gpac/tools.h>\r
36 \r
37 /*\r
38                 minimal event system \r
39 \r
40         DO NOT CHANGE THEIR POSITION IN THE LIST, USED TO SPEED UP FILTERING OF USER INPUT EVENTS\r
41 */\r
42 \r
43 /*events*/\r
44 enum {\r
45 \r
46         /******************************************************\r
47 \r
48                 Events used for both GPAC internals and DOM Events\r
49 \r
50         *******************************************************/\r
51         /*MouseEvents*/\r
52         GF_EVENT_CLICK, \r
53         GF_EVENT_MOUSEUP, \r
54         GF_EVENT_MOUSEDOWN, \r
55         GF_EVENT_MOUSEOVER, \r
56         GF_EVENT_MOUSEOUT, \r
57         /*!! ALL MOUSE EVENTS SHALL BE DECLARED BEFORE MOUSEMOVE !! */\r
58         GF_EVENT_MOUSEMOVE, \r
59         /*mouse wheel event*/\r
60         GF_EVENT_MOUSEWHEEL,\r
61 \r
62         /*Key Events*/\r
63         GF_EVENT_KEYUP,\r
64         GF_EVENT_KEYDOWN, /* covers KeyDown, KeyPress and AccessKey */\r
65         GF_EVENT_LONGKEYPRESS,\r
66         /*character input*/\r
67         GF_EVENT_TEXTINPUT,\r
68 \r
69 \r
70         /******************************************************\r
71 \r
72                 Events used for DOM Events only\r
73 \r
74         *******************************************************/\r
75         GF_EVENT_TEXTSELECT,\r
76 \r
77         /*DOM UIEvents*/\r
78         GF_EVENT_FOCUSIN,\r
79         GF_EVENT_FOCUSOUT, \r
80         GF_EVENT_ACTIVATE, \r
81         GF_EVENT_CHANGE, \r
82         GF_EVENT_FOCUS, \r
83         GF_EVENT_BLUR, \r
84         /*SVG (HTML) Events*/\r
85         GF_EVENT_LOAD, \r
86         GF_EVENT_UNLOAD,\r
87         GF_EVENT_ABORT, \r
88         GF_EVENT_ERROR, \r
89         GF_EVENT_RESIZE, \r
90         GF_EVENT_SCROLL, \r
91         GF_EVENT_ZOOM,\r
92         GF_EVENT_BEGIN, /*this is a fake event, it is NEVER fired, only used in SMIL begin*/\r
93         GF_EVENT_BEGIN_EVENT,\r
94         GF_EVENT_END, /*this is a fake event, it is NEVER fired, only used in SMIL end*/\r
95         GF_EVENT_END_EVENT,\r
96         GF_EVENT_REPEAT, /*this is a fake event, it is NEVER fired, only used in SMIL repeat*/\r
97         GF_EVENT_REPEAT_EVENT,\r
98 \r
99         /*DOM MutationEvents - NOT SUPPORTED YET*/\r
100         GF_EVENT_TREE_MODIFIED,\r
101         GF_EVENT_NODE_INSERTED,\r
102         GF_EVENT_NODE_REMOVED,\r
103         GF_EVENT_NODE_INSERTED_DOC,\r
104         GF_EVENT_NODE_REMOVED_DOC,\r
105         GF_EVENT_ATTR_MODIFIED,\r
106         GF_EVENT_CHAR_DATA_MODIFIED,\r
107         GF_EVENT_NODE_NAME_CHANGED,\r
108         GF_EVENT_ATTR_NAME_CHANGED,\r
109 \r
110         GF_EVENT_DCCI_PROP_CHANGE,\r
111 \r
112         /*LASeR events*/\r
113         GF_EVENT_ACTIVATED,\r
114         GF_EVENT_DEACTIVATED,\r
115         GF_EVENT_PAUSE,\r
116         GF_EVENT_PAUSED_EVENT,\r
117         GF_EVENT_PLAY,\r
118         GF_EVENT_REPEAT_KEY,\r
119         GF_EVENT_RESUME_EVENT,\r
120         GF_EVENT_SHORT_ACCESSKEY,\r
121         /*pseudo-event, only used in LASeR coding*/\r
122         GF_EVENT_EXECUTION_TIME,\r
123 \r
124         /*MediaAccess events - cf http://www.w3.org/TR/MediaAccessEvents*/\r
125         GF_EVENT_MEDIA_BEGIN_SESSION_SETUP,\r
126         GF_EVENT_MEDIA_END_SESSION_SETUP,\r
127         GF_EVENT_MEDIA_DATA_REQUEST,\r
128         GF_EVENT_MEDIA_PLAYABLE,\r
129         GF_EVENT_MEDIA_NOT_PLAYABLE,\r
130         GF_EVENT_MEDIA_DATA_PROGRESS,\r
131         GF_EVENT_MEDIA_END_OF_DATA,\r
132         GF_EVENT_MEDIA_STOP,\r
133         GF_EVENT_MEDIA_ERROR,\r
134 \r
135         GF_EVENT_BATTERY,\r
136         GF_EVENT_CPU,\r
137         GF_EVENT_UNKNOWN,\r
138 \r
139 \r
140         /******************************************************\r
141 \r
142                 Events used for GPAC internals only\r
143 \r
144         *******************************************************/\r
145 \r
146         /*same as mousedown, generated internally by GPAC*/\r
147         GF_EVENT_DBLCLICK,\r
148         \r
149         /*window events*/\r
150         /*size has changed - indicate new w & h in .x end .y fields of event. \r
151         When sent from gpac to a video plugin, indicates the output size should be changed. This is only sent when the plugin\r
152         manages the output video himself\r
153         When sent from a video plugin to gpac, indicates the output size has been changed. This is only sent when the plugin\r
154         manages the output video himself\r
155         */\r
156         GF_EVENT_SIZE,          \r
157         /*signals the scene size (if indicated in scene) upon connection (sent to the user event proc only)\r
158                 if scene size hasn't changed (seeking or other) this event is not sent\r
159         */\r
160         GF_EVENT_SCENE_SIZE,            \r
161         GF_EVENT_SHOWHIDE,      /*window show/hide (minimized or other). This is also sent to the user to signal focus switch in fullscreen*/\r
162         GF_EVENT_SET_CURSOR,    /*set mouse cursor*/\r
163         GF_EVENT_SET_CAPTION,   /*set window caption*/\r
164         GF_EVENT_MOVE,          /*move window*/\r
165         GF_EVENT_REFRESH, /*window needs repaint (whenever needed, eg restore, hide->show, background refresh, paint)*/\r
166         GF_EVENT_QUIT,  /*window is being closed*/\r
167         /*video hw setup message:\r
168                 - when sent from gpac to plugin, indicates that the plugin should re-setup hardware context due to a window resize:\r
169                         * for 2D output, this means resizing the backbuffer if needed (depending on HW constraints)\r
170                         * for 3D output, this means re-setup of OpenGL context (depending on HW constraints). Depending on windowing systems \r
171                         and implementations, it could be possible to resize a window without destroying the GL context.\r
172 \r
173                 - when sent from plugin to gpac, indicates that hardware resources must be resetup before next render step (this is mainly\r
174                 due to discard all openGL textures and cached objects)\r
175         */\r
176         GF_EVENT_VIDEO_SETUP,\r
177 \r
178         /*terminal events*/\r
179         GF_EVENT_CONNECT,       /*signal URL is connected*/\r
180         GF_EVENT_DURATION,      /*signal duration of presentation*/\r
181         GF_EVENT_AUTHORIZATION, /*indicates a user and pass is queried*/\r
182         GF_EVENT_NAVIGATE, /*indicates the user app should load or jump to the given URL.*/\r
183         GF_EVENT_NAVIGATE_INFO, /*indicates the link or its description under the mouse pointer*/\r
184         GF_EVENT_MESSAGE, /*message from the MPEG-4 terminal*/\r
185         GF_EVENT_PROGRESS, /*progress message from the MPEG-4 terminal*/\r
186         GF_EVENT_VIEWPOINTS,    /*indicates viewpoint list has changed - no struct associated*/\r
187         GF_EVENT_STREAMLIST,    /*indicates stream list has changed - no struct associated - only used when no scene info is present*/\r
188         GF_EVENT_METADATA, /*indicates a change in associated metadata*/\r
189         GF_EVENT_MIGRATE, /*indicates a session migration request*/\r
190         GF_EVENT_DISCONNECT, /*indicates the current url should be disconnected*/\r
191         GF_EVENT_SYS_COLORS,    /*queries the list of system colors*/\r
192 };\r
193 \r
194 /*GPAC/DOM3 key codes*/\r
195 enum {\r
196         GF_KEY_UNIDENTIFIED = 0, \r
197         GF_KEY_ACCEPT = 1, /* "Accept"    The Accept (Commit) key.*/\r
198         GF_KEY_AGAIN, /* "Again"  The Again key.*/\r
199         GF_KEY_ALLCANDIDATES, /* "AllCandidates"    The All Candidates key.*/\r
200         GF_KEY_ALPHANUM, /*"Alphanumeric"    The Alphanumeric key.*/\r
201         GF_KEY_ALT, /*"Alt"    The Alt (Menu) key.*/\r
202         GF_KEY_ALTGRAPH, /*"AltGraph"    The Alt-Graph key.*/\r
203         GF_KEY_APPS, /*"Apps"    The Application key.*/\r
204         GF_KEY_ATTN, /*"Attn"    The ATTN key.*/\r
205         GF_KEY_BROWSERBACK, /*"BrowserBack"    The Browser Back key.*/\r
206         GF_KEY_BROWSERFAVORITES, /*"BrowserFavorites"    The Browser Favorites key.*/\r
207         GF_KEY_BROWSERFORWARD, /*"BrowserForward"    The Browser Forward key.*/\r
208         GF_KEY_BROWSERHOME, /*"BrowserHome"    The Browser Home key.*/\r
209         GF_KEY_BROWSERREFRESH, /*"BrowserRefresh"    The Browser Refresh key.*/\r
210         GF_KEY_BROWSERSEARCH, /*"BrowserSearch"    The Browser Search key.*/\r
211         GF_KEY_BROWSERSTOP, /*"BrowserStop"    The Browser Stop key.*/\r
212         GF_KEY_CAPSLOCK, /*"CapsLock"    The Caps Lock (Capital) key.*/\r
213         GF_KEY_CLEAR, /*"Clear"    The Clear key.*/\r
214         GF_KEY_CODEINPUT, /*"CodeInput"    The Code Input key.*/\r
215         GF_KEY_COMPOSE, /*"Compose"    The Compose key.*/\r
216         GF_KEY_CONTROL, /*"Control"    The Control (Ctrl) key.*/\r
217         GF_KEY_CRSEL, /*"Crsel"    The Crsel key.*/\r
218         GF_KEY_CONVERT, /*"Convert"    The Convert key.*/\r
219         GF_KEY_COPY, /*"Copy"    The Copy key.*/\r
220         GF_KEY_CUT, /*"Cut"    The Cut key.*/\r
221         GF_KEY_DOWN, /*"Down"    The Down Arrow key.*/\r
222         GF_KEY_END, /*"End"    The End key.*/\r
223         GF_KEY_ENTER, /*"Enter"    The Enter key.\r
224                    Note: This key identifier is also used for the Return (Macintosh numpad) key.*/\r
225         GF_KEY_ERASEEOF, /*"EraseEof"    The Erase EOF key.*/\r
226         GF_KEY_EXECUTE, /*"Execute"    The Execute key.*/\r
227         GF_KEY_EXSEL, /*"Exsel"    The Exsel key.*/\r
228         GF_KEY_F1, /*"F1"    The F1 key.*/\r
229         GF_KEY_F2, /*"F2"    The F2 key.*/\r
230         GF_KEY_F3, /*"F3"    The F3 key.*/\r
231         GF_KEY_F4, /*"F4"    The F4 key.*/\r
232         GF_KEY_F5, /*"F5"    The F5 key.*/\r
233         GF_KEY_F6, /*"F6"    The F6 key.*/\r
234         GF_KEY_F7, /*"F7"    The F7 key.*/\r
235         GF_KEY_F8, /*"F8"    The F8 key.*/\r
236         GF_KEY_F9, /*"F9"    The F9 key.*/\r
237         GF_KEY_F10, /*"F10"    The F10 key.*/\r
238         GF_KEY_F11, /*"F11"    The F11 key.*/\r
239         GF_KEY_F12, /*"F12"    The F12 key.*/\r
240         GF_KEY_F13, /*"F13"    The F13 key.*/\r
241         GF_KEY_F14, /*"F14"    The F14 key.*/\r
242         GF_KEY_F15, /*"F15"    The F15 key.*/\r
243         GF_KEY_F16, /*"F16"    The F16 key.*/\r
244         GF_KEY_F17, /*"F17"    The F17 key.*/\r
245         GF_KEY_F18, /*"F18"    The F18 key.*/\r
246         GF_KEY_F19, /*"F19"    The F19 key.*/\r
247         GF_KEY_F20, /*"F20"    The F20 key.*/\r
248         GF_KEY_F21, /*"F21"    The F21 key.*/\r
249         GF_KEY_F22, /*"F22"    The F22 key.*/\r
250         GF_KEY_F23, /*"F23"    The F23 key.*/\r
251         GF_KEY_F24, /*"F24"    The F24 key.*/\r
252         GF_KEY_FINALMODE, /*"FinalMode"    The Final Mode (Final) key used on some asian keyboards.*/\r
253         GF_KEY_FIND, /*"Find"    The Find key.*/\r
254         GF_KEY_FULLWIDTH, /*"FullWidth"    The Full-Width Characters key.*/\r
255         GF_KEY_HALFWIDTH, /*"HalfWidth"    The Half-Width Characters key.*/\r
256         GF_KEY_HANGULMODE, /*"HangulMode"    The Hangul (Korean characters) Mode key.*/\r
257         GF_KEY_HANJAMODE, /*"HanjaMode"    The Hanja (Korean characters) Mode key.*/\r
258         GF_KEY_HELP, /*"Help"    The Help key.*/\r
259         GF_KEY_HIRAGANA, /*"Hiragana"    The Hiragana (Japanese Kana characters) key.*/\r
260         GF_KEY_HOME, /*"Home"    The Home key.*/\r
261         GF_KEY_INSERT, /*"Insert"    The Insert (Ins) key.*/\r
262         GF_KEY_JAPANESEHIRAGANA, /*"JapaneseHiragana"    The Japanese-Hiragana key.*/\r
263         GF_KEY_JAPANESEKATAKANA, /*"JapaneseKatakana"    The Japanese-Katakana key.*/\r
264         GF_KEY_JAPANESEROMAJI, /*"JapaneseRomaji"    The Japanese-Romaji key.*/\r
265         GF_KEY_JUNJAMODE, /*"JunjaMode"    The Junja Mode key.*/\r
266         GF_KEY_KANAMODE, /*"KanaMode"    The Kana Mode (Kana Lock) key.*/\r
267         GF_KEY_KANJIMODE, /*"KanjiMode"    The Kanji (Japanese name for ideographic characters of Chinese origin) Mode key.*/\r
268         GF_KEY_KATAKANA, /*"Katakana"    The Katakana (Japanese Kana characters) key.*/\r
269         GF_KEY_LAUNCHAPPLICATION1, /*"LaunchApplication1"    The Start Application One key.*/\r
270         GF_KEY_LAUNCHAPPLICATION2, /*"LaunchApplication2"    The Start Application Two key.*/\r
271         GF_KEY_LAUNCHMAIL, /*"LaunchMail"    The Start Mail key.*/\r
272         GF_KEY_LEFT, /*"Left"    The Left Arrow key.*/\r
273         GF_KEY_META, /*"Meta"    The Meta key.*/\r
274         GF_KEY_MEDIANEXTTRACK, /*"MediaNextTrack"    The Media Next Track key.*/\r
275         GF_KEY_MEDIAPLAYPAUSE, /*"MediaPlayPause"    The Media Play Pause key.*/\r
276         GF_KEY_MEDIAPREVIOUSTRACK, /*"MediaPreviousTrack"    The Media Previous Track key.*/\r
277         GF_KEY_MEDIASTOP, /*"MediaStop"    The Media Stok key.*/\r
278         GF_KEY_MODECHANGE, /*"ModeChange"    The Mode Change key.*/\r
279         GF_KEY_NONCONVERT, /*"Nonconvert"    The Nonconvert (Don't Convert) key.*/\r
280         GF_KEY_NUMLOCK, /*"NumLock"    The Num Lock key.*/\r
281         GF_KEY_PAGEDOWN, /*"PageDown"    The Page Down (Next) key.*/\r
282         GF_KEY_PAGEUP, /*"PageUp"    The Page Up key.*/\r
283         GF_KEY_PASTE, /*"Paste"    The Paste key.*/\r
284         GF_KEY_PAUSE, /*"Pause"    The Pause key.*/\r
285         GF_KEY_PLAY, /*"Play"    The Play key.*/\r
286         GF_KEY_PREVIOUSCANDIDATE, /*"PreviousCandidate"    The Previous Candidate function key.*/\r
287         GF_KEY_PRINTSCREEN, /*"PrintScreen"    The Print Screen (PrintScrn, SnapShot) key.*/\r
288         GF_KEY_PROCESS, /*"Process"    The Process key.*/\r
289         GF_KEY_PROPS, /*"Props"    The Props key.*/\r
290         GF_KEY_RIGHT, /*"Right"    The Right Arrow key.*/\r
291         GF_KEY_ROMANCHARACTERS, /*"RomanCharacters"    The Roman Characters function key.*/\r
292         GF_KEY_SCROLL, /*"Scroll"    The Scroll Lock key.*/\r
293         GF_KEY_SELECT, /*"Select"    The Select key.*/\r
294         GF_KEY_SELECTMEDIA, /*"SelectMedia"    The Select Media key.*/\r
295         GF_KEY_SHIFT, /*"Shift"    The Shift key.*/\r
296         GF_KEY_STOP, /*"Stop"    The Stop key.*/\r
297         GF_KEY_UP, /*"Up"    The Up Arrow key.*/\r
298         GF_KEY_UNDO, /*"Undo"    The Undo key.*/\r
299         GF_KEY_VOLUMEDOWN, /*"VolumeDown"    The Volume Down key.*/\r
300         GF_KEY_VOLUMEMUTE, /*"VolumeMute"    The Volume Mute key.*/\r
301         GF_KEY_VOLUMEUP, /*"VolumeUp"    The Volume Up key.*/\r
302         GF_KEY_WIN, /*"Win"    The Windows Logo key.*/\r
303         GF_KEY_ZOOM, /*"Zoom"    The Zoom key.*/\r
304         GF_KEY_BACKSPACE, /*"U+0008"    The Backspace (Back) key.*/\r
305         GF_KEY_TAB, /*"U+0009"    The Horizontal Tabulation (Tab) key.*/\r
306         GF_KEY_CANCEL, /*"U+0018"    The Cancel key.*/\r
307         GF_KEY_ESCAPE, /*"U+001B"    The Escape (Esc) key.*/\r
308         GF_KEY_SPACE, /*"U+0020"    The Space (Spacebar) key.*/\r
309         GF_KEY_EXCLAMATION, /*"U+0021"    The Exclamation Mark (Factorial, Bang) key (!).*/\r
310         GF_KEY_QUOTATION, /*"U+0022"    The Quotation Mark (Quote Double) key (").*/\r
311         GF_KEY_NUMBER, /*"U+0023"    The Number Sign (Pound Sign, Hash, Crosshatch, Octothorpe) key (#).*/\r
312         GF_KEY_DOLLAR, /*"U+0024"    The Dollar Sign (milreis, escudo) key ($).*/\r
313         GF_KEY_AMPERSAND, /*"U+0026"    The Ampersand key (&).*/\r
314         GF_KEY_APOSTROPHE, /*"U+0027"    The Apostrophe (Apostrophe-Quote, APL Quote) key (').*/\r
315         GF_KEY_LEFTPARENTHESIS, /*"U+0028"    The Left Parenthesis (Opening Parenthesis) key (().*/\r
316         GF_KEY_RIGHTPARENTHESIS, /*"U+0029"    The Right Parenthesis (Closing Parenthesis) key ()).*/\r
317         GF_KEY_STAR, /*"U+002A"    The Asterix (Star) key (*).*/\r
318         GF_KEY_PLUS, /*"U+002B"    The Plus Sign (Plus) key (+).*/\r
319         GF_KEY_COMMA, /*"U+002C"    The Comma (decimal separator) sign key (,).*/\r
320         GF_KEY_HYPHEN, /*"U+002D"    The Hyphen-minus (hyphen or minus sign) key (-).*/\r
321         GF_KEY_FULLSTOP, /*"U+002E"    The Full Stop (period, dot, decimal point) key (.).*/\r
322         GF_KEY_SLASH, /*"U+002F"    The Solidus (slash, virgule, shilling) key (/).*/\r
323         GF_KEY_0, /*"U+0030"    The Digit Zero key (0).*/\r
324         GF_KEY_1, /*"U+0031"    The Digit One key (1).*/\r
325         GF_KEY_2, /*"U+0032"    The Digit Two key (2).*/\r
326         GF_KEY_3, /*"U+0033"    The Digit Three key (3).*/\r
327         GF_KEY_4, /*"U+0034"    The Digit Four key (4).*/\r
328         GF_KEY_5, /*"U+0035"    The Digit Five key (5).*/\r
329         GF_KEY_6, /*"U+0036"    The Digit Six key (6).*/\r
330         GF_KEY_7, /*"U+0037"    The Digit Seven key (7).*/\r
331         GF_KEY_8, /*"U+0038"    The Digit Eight key (8).*/\r
332         GF_KEY_9, /*"U+0039"    The Digit Nine key (9).*/\r
333         GF_KEY_COLON, /*"U+003A"    The Colon key (:).*/\r
334         GF_KEY_SEMICOLON, /*"U+003B"    The Semicolon key (;).*/\r
335         GF_KEY_LESSTHAN, /*"U+003C"    The Less-Than Sign key (<).*/\r
336         GF_KEY_EQUALS, /*"U+003D"    The Equals Sign key (=).*/\r
337         GF_KEY_GREATERTHAN, /*"U+003E"    The Greater-Than Sign key (>).*/\r
338         GF_KEY_QUESTION, /*"U+003F"    The Question Mark key (?).*/\r
339         GF_KEY_AT, /*"U+0040"    The Commercial At (@) key.*/\r
340         GF_KEY_A, /*"U+0041"    The Latin Capital Letter A key (A).*/\r
341         GF_KEY_B, /*"U+0042"    The Latin Capital Letter B key (B).*/\r
342         GF_KEY_C, /*"U+0043"    The Latin Capital Letter C key (C).*/\r
343         GF_KEY_D, /*"U+0044"    The Latin Capital Letter D key (D).*/\r
344         GF_KEY_E, /*"U+0045"    The Latin Capital Letter E key (E).*/\r
345         GF_KEY_F, /*"U+0046"    The Latin Capital Letter F key (F).*/\r
346         GF_KEY_G, /*"U+0047"    The Latin Capital Letter G key (G).*/\r
347         GF_KEY_H, /*"U+0048"    The Latin Capital Letter H key (H).*/\r
348         GF_KEY_I, /*"U+0049"    The Latin Capital Letter I key (I).*/\r
349         GF_KEY_J, /*"U+004A"    The Latin Capital Letter J key (J).*/\r
350         GF_KEY_K, /*"U+004B"    The Latin Capital Letter K key (K).*/\r
351         GF_KEY_L, /*"U+004C"    The Latin Capital Letter L key (L).*/\r
352         GF_KEY_M, /*"U+004D"    The Latin Capital Letter M key (M).*/\r
353         GF_KEY_N, /*"U+004E"    The Latin Capital Letter N key (N).*/\r
354         GF_KEY_O, /*"U+004F"    The Latin Capital Letter O key (O).*/\r
355         GF_KEY_P, /*"U+0050"    The Latin Capital Letter P key (P).*/\r
356         GF_KEY_Q, /*"U+0051"    The Latin Capital Letter Q key (Q).*/\r
357         GF_KEY_R, /*"U+0052"    The Latin Capital Letter R key (R).*/\r
358         GF_KEY_S, /*"U+0053"    The Latin Capital Letter S key (S).*/\r
359         GF_KEY_T, /*"U+0054"    The Latin Capital Letter T key (T).*/\r
360         GF_KEY_U, /*"U+0055"    The Latin Capital Letter U key (U).*/\r
361         GF_KEY_V, /*"U+0056"    The Latin Capital Letter V key (V).*/\r
362         GF_KEY_W, /*"U+0057"    The Latin Capital Letter W key (W).*/\r
363         GF_KEY_X, /*"U+0058"    The Latin Capital Letter X key (X).*/\r
364         GF_KEY_Y, /*"U+0059"    The Latin Capital Letter Y key (Y).*/\r
365         GF_KEY_Z, /*"U+005A"    The Latin Capital Letter Z key (Z).*/\r
366         GF_KEY_LEFTSQUAREBRACKET, /*"U+005B"    The Left Square Bracket (Opening Square Bracket) key ([).*/\r
367         GF_KEY_BACKSLASH, /*"U+005C"    The Reverse Solidus (Backslash) key (\).*/\r
368         GF_KEY_RIGHTSQUAREBRACKET, /*"U+005D"    The Right Square Bracket (Closing Square Bracket) key (]).*/\r
369         GF_KEY_CIRCUM, /*"U+005E"    The Circumflex Accent key (^).*/\r
370         GF_KEY_UNDERSCORE, /*"U+005F"    The Low Sign (Spacing Underscore, Underscore) key (_).*/\r
371         GF_KEY_GRAVEACCENT, /*"U+0060"    The Grave Accent (Back Quote) key (`).*/\r
372         GF_KEY_LEFTCURLYBRACKET, /*"U+007B"    The Left Curly Bracket (Opening Curly Bracket, Opening Brace, Brace Left) key ({).*/\r
373         GF_KEY_PIPE, /*"U+007C"    The Vertical Line (Vertical Bar, Pipe) key (|).*/\r
374         GF_KEY_RIGHTCURLYBRACKET, /*"U+007D"    The Right Curly Bracket (Closing Curly Bracket, Closing Brace, Brace Right) key (}).*/\r
375         GF_KEY_DEL, /*"U+007F"    The Delete (Del) Key.*/\r
376         GF_KEY_INVERTEXCLAMATION, /*"U+00A1"    The Inverted Exclamation Mark key (�).*/\r
377         GF_KEY_DEADGRAVE, /*"U+0300"    The Combining Grave Accent (Greek Varia, Dead Grave) key.*/\r
378         GF_KEY_DEADEACUTE, /*"U+0301"    The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute) key.*/\r
379         GF_KEY_DEADCIRCUM, /*"U+0302"    The Combining Circumflex Accent (Hat, Dead Circumflex) key.*/\r
380         GF_KEY_DEADTILDE, /*"U+0303"    The Combining Tilde (Dead Tilde) key.*/\r
381         GF_KEY_DEADMACRON, /*"U+0304"    The Combining Macron (Long, Dead Macron) key.*/\r
382         GF_KEY_DEADBREVE, /*"U+0306"    The Combining Breve (Short, Dead Breve) key.*/\r
383         GF_KEY_DEADABOVEDOT, /*"U+0307"    The Combining Dot Above (Derivative, Dead Above Dot) key.*/\r
384         GF_KEY_DEADDIARESIS, /*"U+0308"    The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika, Double Derivative, Dead Diaeresis) key.*/\r
385         GF_KEY_DEADRINGABOVE, /*"U+030A"    The Combining Ring Above (Dead Above Ring) key.*/\r
386         GF_KEY_DEADDOUBLEACUTE, /*"U+030B"    The Combining Double Acute Accent (Dead Doubleacute) key.*/\r
387         GF_KEY_DEADCARON, /*"U+030C"    The Combining Caron (Hacek, V Above, Dead Caron) key.*/\r
388         GF_KEY_DEADCEDILLA, /*"U+0327"    The Combining Cedilla (Dead Cedilla) key.*/\r
389         GF_KEY_DEADOGONEK, /*"U+0328"    The Combining Ogonek (Nasal Hook, Dead Ogonek) key.*/\r
390         GF_KEY_DEADIOTA, /*"U+0345"    The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota Subscript, Dead Iota) key.*/\r
391         GF_KEY_EURO, /*"U+20AC"    The Euro Currency Sign key (�).*/\r
392         GF_KEY_DEADVOICESOUND, /*"U+3099"    The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key.*/\r
393         GF_KEY_DEADSEMIVOICESOUND, /*"U+309A"    The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced Sound) key. */\r
394 \r
395         /*non-dom keys, used in LASeR*/\r
396         GF_KEY_CELL_SOFT1,      /*soft1 key of cell phones*/\r
397         GF_KEY_CELL_SOFT2,      /*soft2 key of cell phones*/\r
398         \r
399         /*for joystick handling*/\r
400         GF_KEY_JOYSTICK\r
401 };\r
402 \r
403 \r
404 /*key modifiers state - set by terminal (not set by video driver)*/\r
405 enum\r
406 {\r
407         GF_KEY_MOD_SHIFT = (1),\r
408         GF_KEY_MOD_CTRL = (1<<2),\r
409         GF_KEY_MOD_ALT = (1<<3),\r
410 \r
411         GF_KEY_EXT_NUMPAD = (1<<4),\r
412         GF_KEY_EXT_LEFT = (1<<5),\r
413         GF_KEY_EXT_RIGHT = (1<<6)\r
414 };\r
415 \r
416 /*mouse button modifiers*/\r
417 enum\r
418 {\r
419         GF_MOUSE_LEFT = 0,\r
420         GF_MOUSE_MIDDLE,\r
421         GF_MOUSE_RIGHT\r
422 };\r
423 \r
424 /*event proc return value: ignored*/\r
425 typedef struct\r
426 {\r
427         /*GF_EVENT_MOUSEMOVE, GF_EVENT_MOUSEWHEEL, GF_EVENT_MOUSEDOWN, GF_EVENT_MOUSEUP*/\r
428         u8 type;\r
429         /*mouse location in output window, 2D-like:  top-left (0,0), increasing y towards bottom*/\r
430         s32 x, y;\r
431         /*wheel position (wheel current delta / wheel absolute delta) for GF_EVENT_MouseWheel*/\r
432         Fixed wheel_pos;\r
433         /*0: left - 1: middle, 2- right*/\r
434         u32 button;\r
435         /*key modifier*/\r
436         u32 key_states;\r
437 } GF_EventMouse;\r
438 \r
439 /*event proc return value: ignored*/\r
440 typedef struct\r
441 {\r
442         /*GF_EVENT_KEYDOWN and GF_EVENT_KEYUP*/\r
443         u8 type;\r
444         /*above GPAC/DOM key code*/\r
445         u32 key_code;\r
446         /* hadrware key value (matching ASCI) */\r
447         u32 hw_code;\r
448         /*key modifier*/\r
449         u32 flags;\r
450 } GF_EventKey;\r
451 \r
452 /*event proc return value: ignored*/\r
453 typedef struct\r
454 {\r
455         /*GF_EVENT_TEXTINPUT*/\r
456         u8 type;\r
457         /*above virtual key code*/\r
458         u32 unicode_char;\r
459 } GF_EventChar;\r
460 \r
461 /*event proc return value: ignored*/\r
462 typedef struct\r
463 {\r
464         /*GF_EVENT_SIZE*/\r
465         u8 type;\r
466         /*width and height*/\r
467         u16 width, height;\r
468 } GF_EventSize;\r
469 \r
470 /*event proc return value: ignored*/\r
471 typedef struct\r
472 {\r
473         /*GF_EVENT_VIDEO_SETUP*/\r
474         u8 type;\r
475         /*width and height of visual surface to allocate*/\r
476         u16 width, height;\r
477         /*indicates whether double buffering is desired*/\r
478         Bool back_buffer;\r
479         /*indicates whether system memory for the backbuffer is desired (no video blitting)*/\r
480         Bool system_memory;\r
481         /*indicates whether opengl context shall be created. Values are:\r
482                 0: no opengl context shall be created\r
483                 1: opengl context shall be created for the main window and set as the current one\r
484                 2: an extra opengl context shall be created for offscreen rendering and set as the current one\r
485                         if not supported, mix of 2D (raster) and 3D (openGL) will be disabled\r
486         */\r
487         u32 opengl_mode;\r
488 } GF_EventVideoSetup;\r
489 \r
490 /*event proc return value: ignored\r
491 this event may be triggered by the compositor if owning window or if shortcut fullscreen is detected*/\r
492 typedef struct\r
493 {\r
494         /*GF_EVENT_SHOWHIDE*/\r
495         u8 type;\r
496         /*0: hidden - 1: visible - 2: fullscreen*/\r
497         u32 show_type;\r
498 } GF_EventShow;\r
499 \r
500 \r
501 /*sensor signaling*/\r
502 enum\r
503 {\r
504         GF_CURSOR_NORMAL = 0x00,\r
505         GF_CURSOR_ANCHOR, \r
506         GF_CURSOR_TOUCH,\r
507         /*discSensor, cylinderSensor, sphereSensor*/\r
508         GF_CURSOR_ROTATE, \r
509         /*proximitySensor & proximitySensor2D*/\r
510         GF_CURSOR_PROXIMITY, \r
511         /*planeSensor & planeSensor2D*/\r
512         GF_CURSOR_PLANE,\r
513         /*collision*/\r
514         GF_CURSOR_COLLIDE, \r
515         GF_CURSOR_HIDE, \r
516 };\r
517 \r
518 /*event proc return value: ignored*/\r
519 typedef struct\r
520 {\r
521         /*GF_EVENT_SET_CURSOR*/\r
522         u8 type;\r
523         /*set if is visible*/\r
524         u32 cursor_type;\r
525 } GF_EventCursor;\r
526 \r
527 /*event proc return value: ignored*/\r
528 typedef struct\r
529 {\r
530         /*GF_EVENT_SET_CAPTION*/\r
531         u8 type;\r
532         /*window style flags - NOT USED YET*/\r
533         const char *caption;\r
534 } GF_EventCaption;\r
535 \r
536 /*event proc: never posted*/\r
537 typedef struct\r
538 {\r
539         /*GF_EVENT_MOVE*/\r
540         u8 type;\r
541         s32 x, y;\r
542         /*0: absolute positionning, 1: relative move, 2: use alignment constraints*/\r
543         Bool relative;\r
544         /*0: left/top, 1: middle, 2: right/bottom*/\r
545         u8 align_x, align_y;\r
546 } GF_EventMove;\r
547 \r
548 /*duration may be signaled several times: it may change when setting up streams\r
549 event proc return value: ignored*/\r
550 typedef struct\r
551 {\r
552         /*GF_EVENT_DURATION*/\r
553         u8 type;\r
554         /*duration in seconds*/\r
555         Double duration;\r
556         /*is seeking supported for service*/\r
557         Bool can_seek;\r
558 } GF_EventDuration;\r
559 \r
560 /*event proc return value: 0 if URL not supported, 1 if accepted (it is the user responsability to load the url)\r
561 YOU SHALL NOT DIRECTLY OPEN THE NEW URL IN THE EVENT PROC, THIS WOULD DEADLOCK THE TERMINAL\r
562 */\r
563 typedef struct\r
564 {\r
565         /*GF_EVENT_NAVIGATE and GF_EVENT_NAVIGATE_INFO*/\r
566         u8 type;\r
567         /*new url to open / data to handle*/\r
568         const char *to_url;\r
569         /*parameters (cf vrml spec) - UNUSED for GF_EVENT_NAVIGATE_INFO*/\r
570         u32 param_count;\r
571         const char **parameters;\r
572 } GF_EventNavigate;\r
573 \r
574 \r
575 /*event proc return value: ignored*/\r
576 typedef struct\r
577 {\r
578         /*GF_EVENT_MESSAGE*/\r
579         u8 type;\r
580         /*name of service issuing the message*/\r
581         const char *service;\r
582         /*message*/\r
583         const char *message;\r
584         /*error if any*/\r
585         GF_Err error;\r
586 } GF_EventMessage;\r
587 \r
588 /*event proc return value: ignored*/\r
589 typedef struct\r
590 {\r
591         /*GF_EVENT_PROGRESS*/\r
592         u8 type;\r
593         /*name of service issuing the progress notif*/\r
594         const char *service;\r
595         /*progress type: 0: buffering, 1: downloading, 2: importing (BT/VRML/...)*/\r
596         u32 progress_type;\r
597         /*amount done and total amount of operation.\r
598                 For buffer events, expresses current and total desired stream buffer in scene in milliseconds\r
599                 For download events, expresses current and total size of download in bytes\r
600                 For import events, no units defined (depends on importers)\r
601         */\r
602         u32 done, total;\r
603 } GF_EventProgress;\r
604 \r
605 /*event proc return value: ignored*/\r
606 typedef struct\r
607 {\r
608         /*GF_EVENT_CONNECT*/\r
609         u8 type;\r
610         /*sent upon connection/deconnection completion. if any error, it is signaled through message event*/\r
611         Bool is_connected;\r
612 } GF_EventConnect;\r
613 \r
614 /*event proc return value: 1 if info has been completed, 0 otherwise (and operation this request was for\r
615 will then fail)*/\r
616 typedef struct\r
617 {\r
618         /*GF_EVENT_AUTHORIZATION*/\r
619         u8 type;\r
620         /*the URL the auth request is for*/\r
621         const char *site_url;\r
622         /*user name (provided buffer can hold 50 bytes). It may already be formated, or an empty ("") string*/\r
623         char *user;\r
624         /*password (provided buffer can hold 50 bytes)*/\r
625         char *password;\r
626 } GF_EventAuthorize;\r
627 \r
628 \r
629 /*event proc return value: 1 if info has been completed, 0 otherwise */\r
630 typedef struct\r
631 {\r
632         /*GF_EVENT_SYS_COLORS*/\r
633         u8 type;\r
634         /*ARGB colors, in order:\r
635         ActiveBorder, ActiveCaption, AppWorkspace, Background, ButtonFace, ButtonHighlight, ButtonShadow, \r
636         ButtonText, CaptionText, GrayText, Highlight, HighlightText, InactiveBorder, InactiveCaption, \r
637         InactiveCaptionText, InfoBackground, InfoText, Menu, MenuText, Scrollbar, ThreeDDarkShadow, \r
638         ThreeDFace, ThreeDHighlight, ThreeDLightShadow, ThreeDShadow, Window, WindowFrame, WindowText\r
639         */\r
640         u32 sys_colors[28];\r
641 } GF_EventSysColors;\r
642 \r
643 /*Mutation AttrChangeType Signaling*/\r
644 enum\r
645 {\r
646         GF_MUTATION_ATTRCHANGE_MODIFICATION = 0x01,\r
647         GF_MUTATION_ATTRCHANGE_ADDITION = 0x02,\r
648         GF_MUTATION_ATTRCHANGE_REMOVAL = 0x03,\r
649 };\r
650 \r
651 typedef struct {\r
652         /* GF_EVENT_TREE_MODIFIED, GF_EVENT_NODE_INSERTED, GF_EVENT_NODE_REMOVED, GF_EVENT_NODE_INSERTED_DOC, GF_EVENT_NODE_REMOVED_DOC, GF_EVENT_ATTR_MODIFIED, GF_EVENT_CHAR_DATA_MODIFIED */\r
653         u8 type;\r
654         void *relatedNode;\r
655         void *prevValue;\r
656         void *newValue;\r
657         void *attrName;\r
658         u8 attrChange;\r
659 } GF_EventMutation;\r
660 \r
661 typedef union\r
662 {\r
663         u8 type;\r
664         GF_EventMouse mouse;\r
665         GF_EventKey key;\r
666         GF_EventChar character;\r
667         GF_EventSize size;\r
668         GF_EventShow show;\r
669         GF_EventDuration duration;\r
670         GF_EventNavigate navigate;\r
671         GF_EventMessage message;\r
672         GF_EventProgress progress;\r
673         GF_EventConnect connect;\r
674         GF_EventCaption caption;\r
675         GF_EventCursor cursor;\r
676         GF_EventAuthorize auth;\r
677         GF_EventSysColors sys_cols;\r
678         GF_EventMove move;\r
679         GF_EventVideoSetup setup;\r
680         GF_EventMutation mutation;\r
681 } GF_Event;\r
682 \r
683 \r
684 #ifdef __cplusplus\r
685 }\r
686 #endif\r
687 \r
688 #endif  /*_GF_EVENTS_H_*/\r
689 \r