2 * GPAC - Multimedia Framework C SDK
\r
4 * Copyright (c) Jean Le Feuvre 2000-2005
\r
5 * All rights reserved
\r
7 * This file is part of GPAC / Events management
\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
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
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
27 #ifndef _GF_EVENTS_H_
\r
28 #define _GF_EVENTS_H_
\r
34 #include <gpac/math.h>
\r
35 #include <gpac/tools.h>
\r
38 minimal event system
\r
40 DO NOT CHANGE THEIR POSITION IN THE LIST, USED TO SPEED UP FILTERING OF USER INPUT EVENTS
\r
46 /******************************************************
\r
48 Events used for both GPAC internals and DOM Events
\r
50 *******************************************************/
\r
54 GF_EVENT_MOUSEDOWN,
\r
55 GF_EVENT_MOUSEOVER,
\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
64 GF_EVENT_KEYDOWN, /* covers KeyDown, KeyPress and AccessKey */
\r
65 GF_EVENT_LONGKEYPRESS,
\r
70 /******************************************************
\r
72 Events used for DOM Events only
\r
74 *******************************************************/
\r
75 GF_EVENT_TEXTSELECT,
\r
84 /*SVG (HTML) Events*/
\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
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
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
110 GF_EVENT_DCCI_PROP_CHANGE,
\r
113 GF_EVENT_ACTIVATED,
\r
114 GF_EVENT_DEACTIVATED,
\r
116 GF_EVENT_PAUSED_EVENT,
\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
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
140 /******************************************************
\r
142 Events used for GPAC internals only
\r
144 *******************************************************/
\r
146 /*same as mousedown, generated internally by GPAC*/
\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
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
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
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
176 GF_EVENT_VIDEO_SETUP,
\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
194 /*GPAC/DOM3 key codes*/
\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
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
399 /*for joystick handling*/
\r
404 /*key modifiers state - set by terminal (not set by video driver)*/
\r
407 GF_KEY_MOD_SHIFT = (1),
\r
408 GF_KEY_MOD_CTRL = (1<<2),
\r
409 GF_KEY_MOD_ALT = (1<<3),
\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
416 /*mouse button modifiers*/
\r
424 /*event proc return value: ignored*/
\r
427 /*GF_EVENT_MOUSEMOVE, GF_EVENT_MOUSEWHEEL, GF_EVENT_MOUSEDOWN, GF_EVENT_MOUSEUP*/
\r
429 /*mouse location in output window, 2D-like: top-left (0,0), increasing y towards bottom*/
\r
431 /*wheel position (wheel current delta / wheel absolute delta) for GF_EVENT_MouseWheel*/
\r
433 /*0: left - 1: middle, 2- right*/
\r
439 /*event proc return value: ignored*/
\r
442 /*GF_EVENT_KEYDOWN and GF_EVENT_KEYUP*/
\r
444 /*above GPAC/DOM key code*/
\r
446 /* hadrware key value (matching ASCI) */
\r
452 /*event proc return value: ignored*/
\r
455 /*GF_EVENT_TEXTINPUT*/
\r
457 /*above virtual key code*/
\r
461 /*event proc return value: ignored*/
\r
466 /*width and height*/
\r
470 /*event proc return value: ignored*/
\r
473 /*GF_EVENT_VIDEO_SETUP*/
\r
475 /*width and height of visual surface to allocate*/
\r
477 /*indicates whether double buffering is desired*/
\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
488 } GF_EventVideoSetup;
\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
494 /*GF_EVENT_SHOWHIDE*/
\r
496 /*0: hidden - 1: visible - 2: fullscreen*/
\r
501 /*sensor signaling*/
\r
504 GF_CURSOR_NORMAL = 0x00,
\r
507 /*discSensor, cylinderSensor, sphereSensor*/
\r
509 /*proximitySensor & proximitySensor2D*/
\r
510 GF_CURSOR_PROXIMITY,
\r
511 /*planeSensor & planeSensor2D*/
\r
514 GF_CURSOR_COLLIDE,
\r
518 /*event proc return value: ignored*/
\r
521 /*GF_EVENT_SET_CURSOR*/
\r
523 /*set if is visible*/
\r
527 /*event proc return value: ignored*/
\r
530 /*GF_EVENT_SET_CAPTION*/
\r
532 /*window style flags - NOT USED YET*/
\r
533 const char *caption;
\r
536 /*event proc: never posted*/
\r
542 /*0: absolute positionning, 1: relative move, 2: use alignment constraints*/
\r
544 /*0: left/top, 1: middle, 2: right/bottom*/
\r
545 u8 align_x, align_y;
\r
548 /*duration may be signaled several times: it may change when setting up streams
\r
549 event proc return value: ignored*/
\r
552 /*GF_EVENT_DURATION*/
\r
554 /*duration in seconds*/
\r
556 /*is seeking supported for service*/
\r
558 } GF_EventDuration;
\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
565 /*GF_EVENT_NAVIGATE and GF_EVENT_NAVIGATE_INFO*/
\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
571 const char **parameters;
\r
572 } GF_EventNavigate;
\r
575 /*event proc return value: ignored*/
\r
578 /*GF_EVENT_MESSAGE*/
\r
580 /*name of service issuing the message*/
\r
581 const char *service;
\r
583 const char *message;
\r
588 /*event proc return value: ignored*/
\r
591 /*GF_EVENT_PROGRESS*/
\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
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
603 } GF_EventProgress;
\r
605 /*event proc return value: ignored*/
\r
608 /*GF_EVENT_CONNECT*/
\r
610 /*sent upon connection/deconnection completion. if any error, it is signaled through message event*/
\r
614 /*event proc return value: 1 if info has been completed, 0 otherwise (and operation this request was for
\r
618 /*GF_EVENT_AUTHORIZATION*/
\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
624 /*password (provided buffer can hold 50 bytes)*/
\r
626 } GF_EventAuthorize;
\r
629 /*event proc return value: 1 if info has been completed, 0 otherwise */
\r
632 /*GF_EVENT_SYS_COLORS*/
\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
640 u32 sys_colors[28];
\r
641 } GF_EventSysColors;
\r
643 /*Mutation AttrChangeType Signaling*/
\r
646 GF_MUTATION_ATTRCHANGE_MODIFICATION = 0x01,
\r
647 GF_MUTATION_ATTRCHANGE_ADDITION = 0x02,
\r
648 GF_MUTATION_ATTRCHANGE_REMOVAL = 0x03,
\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
659 } GF_EventMutation;
\r
664 GF_EventMouse mouse;
\r
666 GF_EventChar character;
\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
679 GF_EventVideoSetup setup;
\r
680 GF_EventMutation mutation;
\r
688 #endif /*_GF_EVENTS_H_*/
\r