OSDN Git Service

add tstools.
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / events.h
diff --git a/tstools/DtsEdit/src/gpac/events.h b/tstools/DtsEdit/src/gpac/events.h
new file mode 100644 (file)
index 0000000..84f0d5e
--- /dev/null
@@ -0,0 +1,689 @@
+/*\r
+ *                     GPAC - Multimedia Framework C SDK\r
+ *\r
+ *                     Copyright (c) Jean Le Feuvre 2000-2005 \r
+ *                                     All rights reserved\r
+ *\r
+ *  This file is part of GPAC / Events management\r
+ *\r
+ *  GPAC is free software; you can redistribute it and/or modify\r
+ *  it under the terms of the GNU Lesser General Public License as published by\r
+ *  the Free Software Foundation; either version 2, or (at your option)\r
+ *  any later version.\r
+ *   \r
+ *  GPAC is distributed in the hope that it will be useful,\r
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ *  GNU Lesser General Public License for more details.\r
+ *   \r
+ *  You should have received a copy of the GNU Lesser General Public\r
+ *  License along with this library; see the file COPYING.  If not, write to\r
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _GF_EVENTS_H_\r
+#define _GF_EVENTS_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <gpac/math.h>\r
+#include <gpac/tools.h>\r
+\r
+/*\r
+               minimal event system \r
+\r
+       DO NOT CHANGE THEIR POSITION IN THE LIST, USED TO SPEED UP FILTERING OF USER INPUT EVENTS\r
+*/\r
+\r
+/*events*/\r
+enum {\r
+\r
+       /******************************************************\r
+\r
+               Events used for both GPAC internals and DOM Events\r
+\r
+       *******************************************************/\r
+       /*MouseEvents*/\r
+       GF_EVENT_CLICK, \r
+       GF_EVENT_MOUSEUP, \r
+       GF_EVENT_MOUSEDOWN, \r
+       GF_EVENT_MOUSEOVER, \r
+       GF_EVENT_MOUSEOUT, \r
+       /*!! ALL MOUSE EVENTS SHALL BE DECLARED BEFORE MOUSEMOVE !! */\r
+       GF_EVENT_MOUSEMOVE, \r
+       /*mouse wheel event*/\r
+       GF_EVENT_MOUSEWHEEL,\r
+\r
+       /*Key Events*/\r
+       GF_EVENT_KEYUP,\r
+       GF_EVENT_KEYDOWN, /* covers KeyDown, KeyPress and AccessKey */\r
+       GF_EVENT_LONGKEYPRESS,\r
+       /*character input*/\r
+       GF_EVENT_TEXTINPUT,\r
+\r
+\r
+       /******************************************************\r
+\r
+               Events used for DOM Events only\r
+\r
+       *******************************************************/\r
+       GF_EVENT_TEXTSELECT,\r
+\r
+       /*DOM UIEvents*/\r
+       GF_EVENT_FOCUSIN,\r
+       GF_EVENT_FOCUSOUT, \r
+       GF_EVENT_ACTIVATE, \r
+       GF_EVENT_CHANGE, \r
+       GF_EVENT_FOCUS, \r
+       GF_EVENT_BLUR, \r
+       /*SVG (HTML) Events*/\r
+       GF_EVENT_LOAD, \r
+       GF_EVENT_UNLOAD,\r
+       GF_EVENT_ABORT, \r
+       GF_EVENT_ERROR, \r
+       GF_EVENT_RESIZE, \r
+       GF_EVENT_SCROLL, \r
+       GF_EVENT_ZOOM,\r
+       GF_EVENT_BEGIN, /*this is a fake event, it is NEVER fired, only used in SMIL begin*/\r
+       GF_EVENT_BEGIN_EVENT,\r
+       GF_EVENT_END, /*this is a fake event, it is NEVER fired, only used in SMIL end*/\r
+       GF_EVENT_END_EVENT,\r
+       GF_EVENT_REPEAT, /*this is a fake event, it is NEVER fired, only used in SMIL repeat*/\r
+       GF_EVENT_REPEAT_EVENT,\r
+\r
+       /*DOM MutationEvents - NOT SUPPORTED YET*/\r
+       GF_EVENT_TREE_MODIFIED,\r
+       GF_EVENT_NODE_INSERTED,\r
+       GF_EVENT_NODE_REMOVED,\r
+       GF_EVENT_NODE_INSERTED_DOC,\r
+       GF_EVENT_NODE_REMOVED_DOC,\r
+       GF_EVENT_ATTR_MODIFIED,\r
+       GF_EVENT_CHAR_DATA_MODIFIED,\r
+       GF_EVENT_NODE_NAME_CHANGED,\r
+       GF_EVENT_ATTR_NAME_CHANGED,\r
+\r
+       GF_EVENT_DCCI_PROP_CHANGE,\r
+\r
+       /*LASeR events*/\r
+       GF_EVENT_ACTIVATED,\r
+       GF_EVENT_DEACTIVATED,\r
+       GF_EVENT_PAUSE,\r
+       GF_EVENT_PAUSED_EVENT,\r
+       GF_EVENT_PLAY,\r
+       GF_EVENT_REPEAT_KEY,\r
+       GF_EVENT_RESUME_EVENT,\r
+       GF_EVENT_SHORT_ACCESSKEY,\r
+       /*pseudo-event, only used in LASeR coding*/\r
+       GF_EVENT_EXECUTION_TIME,\r
+\r
+       /*MediaAccess events - cf http://www.w3.org/TR/MediaAccessEvents*/\r
+       GF_EVENT_MEDIA_BEGIN_SESSION_SETUP,\r
+       GF_EVENT_MEDIA_END_SESSION_SETUP,\r
+       GF_EVENT_MEDIA_DATA_REQUEST,\r
+       GF_EVENT_MEDIA_PLAYABLE,\r
+       GF_EVENT_MEDIA_NOT_PLAYABLE,\r
+       GF_EVENT_MEDIA_DATA_PROGRESS,\r
+       GF_EVENT_MEDIA_END_OF_DATA,\r
+       GF_EVENT_MEDIA_STOP,\r
+       GF_EVENT_MEDIA_ERROR,\r
+\r
+       GF_EVENT_BATTERY,\r
+       GF_EVENT_CPU,\r
+       GF_EVENT_UNKNOWN,\r
+\r
+\r
+       /******************************************************\r
+\r
+               Events used for GPAC internals only\r
+\r
+       *******************************************************/\r
+\r
+       /*same as mousedown, generated internally by GPAC*/\r
+       GF_EVENT_DBLCLICK,\r
+       \r
+       /*window events*/\r
+       /*size has changed - indicate new w & h in .x end .y fields of event. \r
+       When sent from gpac to a video plugin, indicates the output size should be changed. This is only sent when the plugin\r
+       manages the output video himself\r
+       When sent from a video plugin to gpac, indicates the output size has been changed. This is only sent when the plugin\r
+       manages the output video himself\r
+       */\r
+       GF_EVENT_SIZE,          \r
+       /*signals the scene size (if indicated in scene) upon connection (sent to the user event proc only)\r
+               if scene size hasn't changed (seeking or other) this event is not sent\r
+       */\r
+       GF_EVENT_SCENE_SIZE,            \r
+       GF_EVENT_SHOWHIDE,      /*window show/hide (minimized or other). This is also sent to the user to signal focus switch in fullscreen*/\r
+       GF_EVENT_SET_CURSOR,    /*set mouse cursor*/\r
+       GF_EVENT_SET_CAPTION,   /*set window caption*/\r
+       GF_EVENT_MOVE,          /*move window*/\r
+       GF_EVENT_REFRESH, /*window needs repaint (whenever needed, eg restore, hide->show, background refresh, paint)*/\r
+       GF_EVENT_QUIT,  /*window is being closed*/\r
+       /*video hw setup message:\r
+               - when sent from gpac to plugin, indicates that the plugin should re-setup hardware context due to a window resize:\r
+                       * for 2D output, this means resizing the backbuffer if needed (depending on HW constraints)\r
+                       * for 3D output, this means re-setup of OpenGL context (depending on HW constraints). Depending on windowing systems \r
+                       and implementations, it could be possible to resize a window without destroying the GL context.\r
+\r
+               - when sent from plugin to gpac, indicates that hardware resources must be resetup before next render step (this is mainly\r
+               due to discard all openGL textures and cached objects)\r
+       */\r
+       GF_EVENT_VIDEO_SETUP,\r
+\r
+       /*terminal events*/\r
+       GF_EVENT_CONNECT,       /*signal URL is connected*/\r
+       GF_EVENT_DURATION,      /*signal duration of presentation*/\r
+       GF_EVENT_AUTHORIZATION, /*indicates a user and pass is queried*/\r
+       GF_EVENT_NAVIGATE, /*indicates the user app should load or jump to the given URL.*/\r
+       GF_EVENT_NAVIGATE_INFO, /*indicates the link or its description under the mouse pointer*/\r
+       GF_EVENT_MESSAGE, /*message from the MPEG-4 terminal*/\r
+       GF_EVENT_PROGRESS, /*progress message from the MPEG-4 terminal*/\r
+       GF_EVENT_VIEWPOINTS,    /*indicates viewpoint list has changed - no struct associated*/\r
+       GF_EVENT_STREAMLIST,    /*indicates stream list has changed - no struct associated - only used when no scene info is present*/\r
+       GF_EVENT_METADATA, /*indicates a change in associated metadata*/\r
+       GF_EVENT_MIGRATE, /*indicates a session migration request*/\r
+       GF_EVENT_DISCONNECT, /*indicates the current url should be disconnected*/\r
+       GF_EVENT_SYS_COLORS,    /*queries the list of system colors*/\r
+};\r
+\r
+/*GPAC/DOM3 key codes*/\r
+enum {\r
+       GF_KEY_UNIDENTIFIED = 0, \r
+       GF_KEY_ACCEPT = 1, /* "Accept"    The Accept (Commit) key.*/\r
+       GF_KEY_AGAIN, /* "Again"  The Again key.*/\r
+       GF_KEY_ALLCANDIDATES, /* "AllCandidates"    The All Candidates key.*/\r
+       GF_KEY_ALPHANUM, /*"Alphanumeric"    The Alphanumeric key.*/\r
+       GF_KEY_ALT, /*"Alt"    The Alt (Menu) key.*/\r
+       GF_KEY_ALTGRAPH, /*"AltGraph"    The Alt-Graph key.*/\r
+       GF_KEY_APPS, /*"Apps"    The Application key.*/\r
+       GF_KEY_ATTN, /*"Attn"    The ATTN key.*/\r
+       GF_KEY_BROWSERBACK, /*"BrowserBack"    The Browser Back key.*/\r
+       GF_KEY_BROWSERFAVORITES, /*"BrowserFavorites"    The Browser Favorites key.*/\r
+       GF_KEY_BROWSERFORWARD, /*"BrowserForward"    The Browser Forward key.*/\r
+       GF_KEY_BROWSERHOME, /*"BrowserHome"    The Browser Home key.*/\r
+       GF_KEY_BROWSERREFRESH, /*"BrowserRefresh"    The Browser Refresh key.*/\r
+       GF_KEY_BROWSERSEARCH, /*"BrowserSearch"    The Browser Search key.*/\r
+       GF_KEY_BROWSERSTOP, /*"BrowserStop"    The Browser Stop key.*/\r
+       GF_KEY_CAPSLOCK, /*"CapsLock"    The Caps Lock (Capital) key.*/\r
+       GF_KEY_CLEAR, /*"Clear"    The Clear key.*/\r
+       GF_KEY_CODEINPUT, /*"CodeInput"    The Code Input key.*/\r
+       GF_KEY_COMPOSE, /*"Compose"    The Compose key.*/\r
+       GF_KEY_CONTROL, /*"Control"    The Control (Ctrl) key.*/\r
+       GF_KEY_CRSEL, /*"Crsel"    The Crsel key.*/\r
+       GF_KEY_CONVERT, /*"Convert"    The Convert key.*/\r
+       GF_KEY_COPY, /*"Copy"    The Copy key.*/\r
+       GF_KEY_CUT, /*"Cut"    The Cut key.*/\r
+       GF_KEY_DOWN, /*"Down"    The Down Arrow key.*/\r
+       GF_KEY_END, /*"End"    The End key.*/\r
+       GF_KEY_ENTER, /*"Enter"    The Enter key.\r
+                   Note: This key identifier is also used for the Return (Macintosh numpad) key.*/\r
+       GF_KEY_ERASEEOF, /*"EraseEof"    The Erase EOF key.*/\r
+       GF_KEY_EXECUTE, /*"Execute"    The Execute key.*/\r
+       GF_KEY_EXSEL, /*"Exsel"    The Exsel key.*/\r
+       GF_KEY_F1, /*"F1"    The F1 key.*/\r
+       GF_KEY_F2, /*"F2"    The F2 key.*/\r
+       GF_KEY_F3, /*"F3"    The F3 key.*/\r
+       GF_KEY_F4, /*"F4"    The F4 key.*/\r
+       GF_KEY_F5, /*"F5"    The F5 key.*/\r
+       GF_KEY_F6, /*"F6"    The F6 key.*/\r
+       GF_KEY_F7, /*"F7"    The F7 key.*/\r
+       GF_KEY_F8, /*"F8"    The F8 key.*/\r
+       GF_KEY_F9, /*"F9"    The F9 key.*/\r
+       GF_KEY_F10, /*"F10"    The F10 key.*/\r
+       GF_KEY_F11, /*"F11"    The F11 key.*/\r
+       GF_KEY_F12, /*"F12"    The F12 key.*/\r
+       GF_KEY_F13, /*"F13"    The F13 key.*/\r
+       GF_KEY_F14, /*"F14"    The F14 key.*/\r
+       GF_KEY_F15, /*"F15"    The F15 key.*/\r
+       GF_KEY_F16, /*"F16"    The F16 key.*/\r
+       GF_KEY_F17, /*"F17"    The F17 key.*/\r
+       GF_KEY_F18, /*"F18"    The F18 key.*/\r
+       GF_KEY_F19, /*"F19"    The F19 key.*/\r
+       GF_KEY_F20, /*"F20"    The F20 key.*/\r
+       GF_KEY_F21, /*"F21"    The F21 key.*/\r
+       GF_KEY_F22, /*"F22"    The F22 key.*/\r
+       GF_KEY_F23, /*"F23"    The F23 key.*/\r
+       GF_KEY_F24, /*"F24"    The F24 key.*/\r
+       GF_KEY_FINALMODE, /*"FinalMode"    The Final Mode (Final) key used on some asian keyboards.*/\r
+       GF_KEY_FIND, /*"Find"    The Find key.*/\r
+       GF_KEY_FULLWIDTH, /*"FullWidth"    The Full-Width Characters key.*/\r
+       GF_KEY_HALFWIDTH, /*"HalfWidth"    The Half-Width Characters key.*/\r
+       GF_KEY_HANGULMODE, /*"HangulMode"    The Hangul (Korean characters) Mode key.*/\r
+       GF_KEY_HANJAMODE, /*"HanjaMode"    The Hanja (Korean characters) Mode key.*/\r
+       GF_KEY_HELP, /*"Help"    The Help key.*/\r
+       GF_KEY_HIRAGANA, /*"Hiragana"    The Hiragana (Japanese Kana characters) key.*/\r
+       GF_KEY_HOME, /*"Home"    The Home key.*/\r
+       GF_KEY_INSERT, /*"Insert"    The Insert (Ins) key.*/\r
+       GF_KEY_JAPANESEHIRAGANA, /*"JapaneseHiragana"    The Japanese-Hiragana key.*/\r
+       GF_KEY_JAPANESEKATAKANA, /*"JapaneseKatakana"    The Japanese-Katakana key.*/\r
+       GF_KEY_JAPANESEROMAJI, /*"JapaneseRomaji"    The Japanese-Romaji key.*/\r
+       GF_KEY_JUNJAMODE, /*"JunjaMode"    The Junja Mode key.*/\r
+       GF_KEY_KANAMODE, /*"KanaMode"    The Kana Mode (Kana Lock) key.*/\r
+       GF_KEY_KANJIMODE, /*"KanjiMode"    The Kanji (Japanese name for ideographic characters of Chinese origin) Mode key.*/\r
+       GF_KEY_KATAKANA, /*"Katakana"    The Katakana (Japanese Kana characters) key.*/\r
+       GF_KEY_LAUNCHAPPLICATION1, /*"LaunchApplication1"    The Start Application One key.*/\r
+       GF_KEY_LAUNCHAPPLICATION2, /*"LaunchApplication2"    The Start Application Two key.*/\r
+       GF_KEY_LAUNCHMAIL, /*"LaunchMail"    The Start Mail key.*/\r
+       GF_KEY_LEFT, /*"Left"    The Left Arrow key.*/\r
+       GF_KEY_META, /*"Meta"    The Meta key.*/\r
+       GF_KEY_MEDIANEXTTRACK, /*"MediaNextTrack"    The Media Next Track key.*/\r
+       GF_KEY_MEDIAPLAYPAUSE, /*"MediaPlayPause"    The Media Play Pause key.*/\r
+       GF_KEY_MEDIAPREVIOUSTRACK, /*"MediaPreviousTrack"    The Media Previous Track key.*/\r
+       GF_KEY_MEDIASTOP, /*"MediaStop"    The Media Stok key.*/\r
+       GF_KEY_MODECHANGE, /*"ModeChange"    The Mode Change key.*/\r
+       GF_KEY_NONCONVERT, /*"Nonconvert"    The Nonconvert (Don't Convert) key.*/\r
+       GF_KEY_NUMLOCK, /*"NumLock"    The Num Lock key.*/\r
+       GF_KEY_PAGEDOWN, /*"PageDown"    The Page Down (Next) key.*/\r
+       GF_KEY_PAGEUP, /*"PageUp"    The Page Up key.*/\r
+       GF_KEY_PASTE, /*"Paste"    The Paste key.*/\r
+       GF_KEY_PAUSE, /*"Pause"    The Pause key.*/\r
+       GF_KEY_PLAY, /*"Play"    The Play key.*/\r
+       GF_KEY_PREVIOUSCANDIDATE, /*"PreviousCandidate"    The Previous Candidate function key.*/\r
+       GF_KEY_PRINTSCREEN, /*"PrintScreen"    The Print Screen (PrintScrn, SnapShot) key.*/\r
+       GF_KEY_PROCESS, /*"Process"    The Process key.*/\r
+       GF_KEY_PROPS, /*"Props"    The Props key.*/\r
+       GF_KEY_RIGHT, /*"Right"    The Right Arrow key.*/\r
+       GF_KEY_ROMANCHARACTERS, /*"RomanCharacters"    The Roman Characters function key.*/\r
+       GF_KEY_SCROLL, /*"Scroll"    The Scroll Lock key.*/\r
+       GF_KEY_SELECT, /*"Select"    The Select key.*/\r
+       GF_KEY_SELECTMEDIA, /*"SelectMedia"    The Select Media key.*/\r
+       GF_KEY_SHIFT, /*"Shift"    The Shift key.*/\r
+       GF_KEY_STOP, /*"Stop"    The Stop key.*/\r
+       GF_KEY_UP, /*"Up"    The Up Arrow key.*/\r
+       GF_KEY_UNDO, /*"Undo"    The Undo key.*/\r
+       GF_KEY_VOLUMEDOWN, /*"VolumeDown"    The Volume Down key.*/\r
+       GF_KEY_VOLUMEMUTE, /*"VolumeMute"    The Volume Mute key.*/\r
+       GF_KEY_VOLUMEUP, /*"VolumeUp"    The Volume Up key.*/\r
+       GF_KEY_WIN, /*"Win"    The Windows Logo key.*/\r
+       GF_KEY_ZOOM, /*"Zoom"    The Zoom key.*/\r
+       GF_KEY_BACKSPACE, /*"U+0008"    The Backspace (Back) key.*/\r
+       GF_KEY_TAB, /*"U+0009"    The Horizontal Tabulation (Tab) key.*/\r
+       GF_KEY_CANCEL, /*"U+0018"    The Cancel key.*/\r
+       GF_KEY_ESCAPE, /*"U+001B"    The Escape (Esc) key.*/\r
+       GF_KEY_SPACE, /*"U+0020"    The Space (Spacebar) key.*/\r
+       GF_KEY_EXCLAMATION, /*"U+0021"    The Exclamation Mark (Factorial, Bang) key (!).*/\r
+       GF_KEY_QUOTATION, /*"U+0022"    The Quotation Mark (Quote Double) key (").*/\r
+       GF_KEY_NUMBER, /*"U+0023"    The Number Sign (Pound Sign, Hash, Crosshatch, Octothorpe) key (#).*/\r
+       GF_KEY_DOLLAR, /*"U+0024"    The Dollar Sign (milreis, escudo) key ($).*/\r
+       GF_KEY_AMPERSAND, /*"U+0026"    The Ampersand key (&).*/\r
+       GF_KEY_APOSTROPHE, /*"U+0027"    The Apostrophe (Apostrophe-Quote, APL Quote) key (').*/\r
+       GF_KEY_LEFTPARENTHESIS, /*"U+0028"    The Left Parenthesis (Opening Parenthesis) key (().*/\r
+       GF_KEY_RIGHTPARENTHESIS, /*"U+0029"    The Right Parenthesis (Closing Parenthesis) key ()).*/\r
+       GF_KEY_STAR, /*"U+002A"    The Asterix (Star) key (*).*/\r
+       GF_KEY_PLUS, /*"U+002B"    The Plus Sign (Plus) key (+).*/\r
+       GF_KEY_COMMA, /*"U+002C"    The Comma (decimal separator) sign key (,).*/\r
+       GF_KEY_HYPHEN, /*"U+002D"    The Hyphen-minus (hyphen or minus sign) key (-).*/\r
+       GF_KEY_FULLSTOP, /*"U+002E"    The Full Stop (period, dot, decimal point) key (.).*/\r
+       GF_KEY_SLASH, /*"U+002F"    The Solidus (slash, virgule, shilling) key (/).*/\r
+       GF_KEY_0, /*"U+0030"    The Digit Zero key (0).*/\r
+       GF_KEY_1, /*"U+0031"    The Digit One key (1).*/\r
+       GF_KEY_2, /*"U+0032"    The Digit Two key (2).*/\r
+       GF_KEY_3, /*"U+0033"    The Digit Three key (3).*/\r
+       GF_KEY_4, /*"U+0034"    The Digit Four key (4).*/\r
+       GF_KEY_5, /*"U+0035"    The Digit Five key (5).*/\r
+       GF_KEY_6, /*"U+0036"    The Digit Six key (6).*/\r
+       GF_KEY_7, /*"U+0037"    The Digit Seven key (7).*/\r
+       GF_KEY_8, /*"U+0038"    The Digit Eight key (8).*/\r
+       GF_KEY_9, /*"U+0039"    The Digit Nine key (9).*/\r
+       GF_KEY_COLON, /*"U+003A"    The Colon key (:).*/\r
+       GF_KEY_SEMICOLON, /*"U+003B"    The Semicolon key (;).*/\r
+       GF_KEY_LESSTHAN, /*"U+003C"    The Less-Than Sign key (<).*/\r
+       GF_KEY_EQUALS, /*"U+003D"    The Equals Sign key (=).*/\r
+       GF_KEY_GREATERTHAN, /*"U+003E"    The Greater-Than Sign key (>).*/\r
+       GF_KEY_QUESTION, /*"U+003F"    The Question Mark key (?).*/\r
+       GF_KEY_AT, /*"U+0040"    The Commercial At (@) key.*/\r
+       GF_KEY_A, /*"U+0041"    The Latin Capital Letter A key (A).*/\r
+       GF_KEY_B, /*"U+0042"    The Latin Capital Letter B key (B).*/\r
+       GF_KEY_C, /*"U+0043"    The Latin Capital Letter C key (C).*/\r
+       GF_KEY_D, /*"U+0044"    The Latin Capital Letter D key (D).*/\r
+       GF_KEY_E, /*"U+0045"    The Latin Capital Letter E key (E).*/\r
+       GF_KEY_F, /*"U+0046"    The Latin Capital Letter F key (F).*/\r
+       GF_KEY_G, /*"U+0047"    The Latin Capital Letter G key (G).*/\r
+       GF_KEY_H, /*"U+0048"    The Latin Capital Letter H key (H).*/\r
+       GF_KEY_I, /*"U+0049"    The Latin Capital Letter I key (I).*/\r
+       GF_KEY_J, /*"U+004A"    The Latin Capital Letter J key (J).*/\r
+       GF_KEY_K, /*"U+004B"    The Latin Capital Letter K key (K).*/\r
+       GF_KEY_L, /*"U+004C"    The Latin Capital Letter L key (L).*/\r
+       GF_KEY_M, /*"U+004D"    The Latin Capital Letter M key (M).*/\r
+       GF_KEY_N, /*"U+004E"    The Latin Capital Letter N key (N).*/\r
+       GF_KEY_O, /*"U+004F"    The Latin Capital Letter O key (O).*/\r
+       GF_KEY_P, /*"U+0050"    The Latin Capital Letter P key (P).*/\r
+       GF_KEY_Q, /*"U+0051"    The Latin Capital Letter Q key (Q).*/\r
+       GF_KEY_R, /*"U+0052"    The Latin Capital Letter R key (R).*/\r
+       GF_KEY_S, /*"U+0053"    The Latin Capital Letter S key (S).*/\r
+       GF_KEY_T, /*"U+0054"    The Latin Capital Letter T key (T).*/\r
+       GF_KEY_U, /*"U+0055"    The Latin Capital Letter U key (U).*/\r
+       GF_KEY_V, /*"U+0056"    The Latin Capital Letter V key (V).*/\r
+       GF_KEY_W, /*"U+0057"    The Latin Capital Letter W key (W).*/\r
+       GF_KEY_X, /*"U+0058"    The Latin Capital Letter X key (X).*/\r
+       GF_KEY_Y, /*"U+0059"    The Latin Capital Letter Y key (Y).*/\r
+       GF_KEY_Z, /*"U+005A"    The Latin Capital Letter Z key (Z).*/\r
+       GF_KEY_LEFTSQUAREBRACKET, /*"U+005B"    The Left Square Bracket (Opening Square Bracket) key ([).*/\r
+       GF_KEY_BACKSLASH, /*"U+005C"    The Reverse Solidus (Backslash) key (\).*/\r
+       GF_KEY_RIGHTSQUAREBRACKET, /*"U+005D"    The Right Square Bracket (Closing Square Bracket) key (]).*/\r
+       GF_KEY_CIRCUM, /*"U+005E"    The Circumflex Accent key (^).*/\r
+       GF_KEY_UNDERSCORE, /*"U+005F"    The Low Sign (Spacing Underscore, Underscore) key (_).*/\r
+       GF_KEY_GRAVEACCENT, /*"U+0060"    The Grave Accent (Back Quote) key (`).*/\r
+       GF_KEY_LEFTCURLYBRACKET, /*"U+007B"    The Left Curly Bracket (Opening Curly Bracket, Opening Brace, Brace Left) key ({).*/\r
+       GF_KEY_PIPE, /*"U+007C"    The Vertical Line (Vertical Bar, Pipe) key (|).*/\r
+       GF_KEY_RIGHTCURLYBRACKET, /*"U+007D"    The Right Curly Bracket (Closing Curly Bracket, Closing Brace, Brace Right) key (}).*/\r
+       GF_KEY_DEL, /*"U+007F"    The Delete (Del) Key.*/\r
+       GF_KEY_INVERTEXCLAMATION, /*"U+00A1"    The Inverted Exclamation Mark key (�).*/\r
+       GF_KEY_DEADGRAVE, /*"U+0300"    The Combining Grave Accent (Greek Varia, Dead Grave) key.*/\r
+       GF_KEY_DEADEACUTE, /*"U+0301"    The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute) key.*/\r
+       GF_KEY_DEADCIRCUM, /*"U+0302"    The Combining Circumflex Accent (Hat, Dead Circumflex) key.*/\r
+       GF_KEY_DEADTILDE, /*"U+0303"    The Combining Tilde (Dead Tilde) key.*/\r
+       GF_KEY_DEADMACRON, /*"U+0304"    The Combining Macron (Long, Dead Macron) key.*/\r
+       GF_KEY_DEADBREVE, /*"U+0306"    The Combining Breve (Short, Dead Breve) key.*/\r
+       GF_KEY_DEADABOVEDOT, /*"U+0307"    The Combining Dot Above (Derivative, Dead Above Dot) key.*/\r
+       GF_KEY_DEADDIARESIS, /*"U+0308"    The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika, Double Derivative, Dead Diaeresis) key.*/\r
+       GF_KEY_DEADRINGABOVE, /*"U+030A"    The Combining Ring Above (Dead Above Ring) key.*/\r
+       GF_KEY_DEADDOUBLEACUTE, /*"U+030B"    The Combining Double Acute Accent (Dead Doubleacute) key.*/\r
+       GF_KEY_DEADCARON, /*"U+030C"    The Combining Caron (Hacek, V Above, Dead Caron) key.*/\r
+       GF_KEY_DEADCEDILLA, /*"U+0327"    The Combining Cedilla (Dead Cedilla) key.*/\r
+       GF_KEY_DEADOGONEK, /*"U+0328"    The Combining Ogonek (Nasal Hook, Dead Ogonek) key.*/\r
+       GF_KEY_DEADIOTA, /*"U+0345"    The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota Subscript, Dead Iota) key.*/\r
+       GF_KEY_EURO, /*"U+20AC"    The Euro Currency Sign key (�).*/\r
+       GF_KEY_DEADVOICESOUND, /*"U+3099"    The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key.*/\r
+       GF_KEY_DEADSEMIVOICESOUND, /*"U+309A"    The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced Sound) key. */\r
+\r
+       /*non-dom keys, used in LASeR*/\r
+       GF_KEY_CELL_SOFT1,      /*soft1 key of cell phones*/\r
+       GF_KEY_CELL_SOFT2,      /*soft2 key of cell phones*/\r
+       \r
+       /*for joystick handling*/\r
+       GF_KEY_JOYSTICK\r
+};\r
+\r
+\r
+/*key modifiers state - set by terminal (not set by video driver)*/\r
+enum\r
+{\r
+       GF_KEY_MOD_SHIFT = (1),\r
+       GF_KEY_MOD_CTRL = (1<<2),\r
+       GF_KEY_MOD_ALT = (1<<3),\r
+\r
+       GF_KEY_EXT_NUMPAD = (1<<4),\r
+       GF_KEY_EXT_LEFT = (1<<5),\r
+       GF_KEY_EXT_RIGHT = (1<<6)\r
+};\r
+\r
+/*mouse button modifiers*/\r
+enum\r
+{\r
+       GF_MOUSE_LEFT = 0,\r
+       GF_MOUSE_MIDDLE,\r
+       GF_MOUSE_RIGHT\r
+};\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_MOUSEMOVE, GF_EVENT_MOUSEWHEEL, GF_EVENT_MOUSEDOWN, GF_EVENT_MOUSEUP*/\r
+       u8 type;\r
+       /*mouse location in output window, 2D-like:  top-left (0,0), increasing y towards bottom*/\r
+       s32 x, y;\r
+       /*wheel position (wheel current delta / wheel absolute delta) for GF_EVENT_MouseWheel*/\r
+       Fixed wheel_pos;\r
+       /*0: left - 1: middle, 2- right*/\r
+       u32 button;\r
+       /*key modifier*/\r
+       u32 key_states;\r
+} GF_EventMouse;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_KEYDOWN and GF_EVENT_KEYUP*/\r
+       u8 type;\r
+       /*above GPAC/DOM key code*/\r
+       u32 key_code;\r
+       /* hadrware key value (matching ASCI) */\r
+       u32 hw_code;\r
+       /*key modifier*/\r
+       u32 flags;\r
+} GF_EventKey;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_TEXTINPUT*/\r
+       u8 type;\r
+       /*above virtual key code*/\r
+       u32 unicode_char;\r
+} GF_EventChar;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_SIZE*/\r
+       u8 type;\r
+       /*width and height*/\r
+       u16 width, height;\r
+} GF_EventSize;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_VIDEO_SETUP*/\r
+       u8 type;\r
+       /*width and height of visual surface to allocate*/\r
+       u16 width, height;\r
+       /*indicates whether double buffering is desired*/\r
+       Bool back_buffer;\r
+       /*indicates whether system memory for the backbuffer is desired (no video blitting)*/\r
+       Bool system_memory;\r
+       /*indicates whether opengl context shall be created. Values are:\r
+               0: no opengl context shall be created\r
+               1: opengl context shall be created for the main window and set as the current one\r
+               2: an extra opengl context shall be created for offscreen rendering and set as the current one\r
+                       if not supported, mix of 2D (raster) and 3D (openGL) will be disabled\r
+       */\r
+       u32 opengl_mode;\r
+} GF_EventVideoSetup;\r
+\r
+/*event proc return value: ignored\r
+this event may be triggered by the compositor if owning window or if shortcut fullscreen is detected*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_SHOWHIDE*/\r
+       u8 type;\r
+       /*0: hidden - 1: visible - 2: fullscreen*/\r
+       u32 show_type;\r
+} GF_EventShow;\r
+\r
+\r
+/*sensor signaling*/\r
+enum\r
+{\r
+       GF_CURSOR_NORMAL = 0x00,\r
+       GF_CURSOR_ANCHOR, \r
+       GF_CURSOR_TOUCH,\r
+       /*discSensor, cylinderSensor, sphereSensor*/\r
+       GF_CURSOR_ROTATE, \r
+       /*proximitySensor & proximitySensor2D*/\r
+       GF_CURSOR_PROXIMITY, \r
+       /*planeSensor & planeSensor2D*/\r
+       GF_CURSOR_PLANE,\r
+       /*collision*/\r
+       GF_CURSOR_COLLIDE, \r
+       GF_CURSOR_HIDE, \r
+};\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_SET_CURSOR*/\r
+       u8 type;\r
+       /*set if is visible*/\r
+       u32 cursor_type;\r
+} GF_EventCursor;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_SET_CAPTION*/\r
+       u8 type;\r
+       /*window style flags - NOT USED YET*/\r
+       const char *caption;\r
+} GF_EventCaption;\r
+\r
+/*event proc: never posted*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_MOVE*/\r
+       u8 type;\r
+       s32 x, y;\r
+       /*0: absolute positionning, 1: relative move, 2: use alignment constraints*/\r
+       Bool relative;\r
+       /*0: left/top, 1: middle, 2: right/bottom*/\r
+       u8 align_x, align_y;\r
+} GF_EventMove;\r
+\r
+/*duration may be signaled several times: it may change when setting up streams\r
+event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_DURATION*/\r
+       u8 type;\r
+       /*duration in seconds*/\r
+       Double duration;\r
+       /*is seeking supported for service*/\r
+       Bool can_seek;\r
+} GF_EventDuration;\r
+\r
+/*event proc return value: 0 if URL not supported, 1 if accepted (it is the user responsability to load the url)\r
+YOU SHALL NOT DIRECTLY OPEN THE NEW URL IN THE EVENT PROC, THIS WOULD DEADLOCK THE TERMINAL\r
+*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_NAVIGATE and GF_EVENT_NAVIGATE_INFO*/\r
+       u8 type;\r
+       /*new url to open / data to handle*/\r
+       const char *to_url;\r
+       /*parameters (cf vrml spec) - UNUSED for GF_EVENT_NAVIGATE_INFO*/\r
+       u32 param_count;\r
+       const char **parameters;\r
+} GF_EventNavigate;\r
+\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_MESSAGE*/\r
+       u8 type;\r
+       /*name of service issuing the message*/\r
+       const char *service;\r
+       /*message*/\r
+       const char *message;\r
+       /*error if any*/\r
+       GF_Err error;\r
+} GF_EventMessage;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_PROGRESS*/\r
+       u8 type;\r
+       /*name of service issuing the progress notif*/\r
+       const char *service;\r
+       /*progress type: 0: buffering, 1: downloading, 2: importing (BT/VRML/...)*/\r
+       u32 progress_type;\r
+       /*amount done and total amount of operation.\r
+               For buffer events, expresses current and total desired stream buffer in scene in milliseconds\r
+               For download events, expresses current and total size of download in bytes\r
+               For import events, no units defined (depends on importers)\r
+       */\r
+       u32 done, total;\r
+} GF_EventProgress;\r
+\r
+/*event proc return value: ignored*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_CONNECT*/\r
+       u8 type;\r
+       /*sent upon connection/deconnection completion. if any error, it is signaled through message event*/\r
+       Bool is_connected;\r
+} GF_EventConnect;\r
+\r
+/*event proc return value: 1 if info has been completed, 0 otherwise (and operation this request was for\r
+will then fail)*/\r
+typedef struct\r
+{\r
+       /*GF_EVENT_AUTHORIZATION*/\r
+       u8 type;\r
+       /*the URL the auth request is for*/\r
+       const char *site_url;\r
+       /*user name (provided buffer can hold 50 bytes). It may already be formated, or an empty ("") string*/\r
+       char *user;\r
+       /*password (provided buffer can hold 50 bytes)*/\r
+       char *password;\r
+} GF_EventAuthorize;\r
+\r
+\r
+/*event proc return value: 1 if info has been completed, 0 otherwise */\r
+typedef struct\r
+{\r
+       /*GF_EVENT_SYS_COLORS*/\r
+       u8 type;\r
+       /*ARGB colors, in order:\r
+       ActiveBorder, ActiveCaption, AppWorkspace, Background, ButtonFace, ButtonHighlight, ButtonShadow, \r
+       ButtonText, CaptionText, GrayText, Highlight, HighlightText, InactiveBorder, InactiveCaption, \r
+       InactiveCaptionText, InfoBackground, InfoText, Menu, MenuText, Scrollbar, ThreeDDarkShadow, \r
+       ThreeDFace, ThreeDHighlight, ThreeDLightShadow, ThreeDShadow, Window, WindowFrame, WindowText\r
+       */\r
+       u32 sys_colors[28];\r
+} GF_EventSysColors;\r
+\r
+/*Mutation AttrChangeType Signaling*/\r
+enum\r
+{\r
+       GF_MUTATION_ATTRCHANGE_MODIFICATION = 0x01,\r
+       GF_MUTATION_ATTRCHANGE_ADDITION = 0x02,\r
+       GF_MUTATION_ATTRCHANGE_REMOVAL = 0x03,\r
+};\r
+\r
+typedef struct {\r
+       /* 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
+       u8 type;\r
+       void *relatedNode;\r
+       void *prevValue;\r
+       void *newValue;\r
+       void *attrName;\r
+       u8 attrChange;\r
+} GF_EventMutation;\r
+\r
+typedef union\r
+{\r
+       u8 type;\r
+       GF_EventMouse mouse;\r
+       GF_EventKey key;\r
+       GF_EventChar character;\r
+       GF_EventSize size;\r
+       GF_EventShow show;\r
+       GF_EventDuration duration;\r
+       GF_EventNavigate navigate;\r
+       GF_EventMessage message;\r
+       GF_EventProgress progress;\r
+       GF_EventConnect connect;\r
+       GF_EventCaption caption;\r
+       GF_EventCursor cursor;\r
+       GF_EventAuthorize auth;\r
+       GF_EventSysColors sys_cols;\r
+       GF_EventMove move;\r
+       GF_EventVideoSetup setup;\r
+       GF_EventMutation mutation;\r
+} GF_Event;\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /*_GF_EVENTS_H_*/\r
+\r