]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu-div0test/item/gecko.c
Add gecko.c and support for DP's gecko system to msys.h and mbuiltin.qh
[divverent/nexuiz.git] / data / qcsrc / menu-div0test / item / gecko.c
1 // Andreas Kirsch Gecko item (to test it)\r
2 #ifdef INTERFACE\r
3 CLASS(Gecko) EXTENDS(Item)\r
4         METHOD( Gecko, configureBrowser, void( entity, string ) )\r
5         METHOD( Gecko, draw, void(entity))\r
6         METHOD( Gecko, keyDown, float(entity, float, float, float))\r
7         METHOD( Gecko, keyUp, float(entity, float, float, float))\r
8         METHOD( Gecko, mouseMove, float(entity, vector))\r
9         METHOD( Gecko, mousePress, float(entity, vector))\r
10         METHOD( Gecko, mouseDrag, float(entity, vector))\r
11         METHOD( Gecko, mouseRelease, float(entity, vector))\r
12         ATTRIB( Gecko, texturePath, string, string_null )\r
13 ENDCLASS(Item)\r
14 #endif\r
15 \r
16 #ifdef IMPLEMENTATION\r
17 // define static members\r
18 float _gecko_instanceNumber;\r
19 \r
20 void configureBrowserGecko( entity me, string URI ) {\r
21         me.focusable = 1;\r
22 \r
23         //create a new gecko object if needed\r
24         if( !me.texturePath ) {\r
25                 me.texturePath = strzone( strcat( "/_dynamic/gecko/menu/",  ftos( _gecko_instanceNumber ) ) );\r
26                 _gecko_instanceNumber+=1;\r
27                 // TODO: add error checks\r
28                 gecko_create( me.texturePath );\r
29         }\r
30         gecko_navigate( me.texturePath, URI );\r
31 }\r
32 \r
33 void drawGecko(entity me)\r
34 {\r
35         if( me.texturePath ) {\r
36                 draw_Picture( '0 0 0', me.texturePath, '1 1 0', '1 1 1', 1.0 );\r
37         } else {\r
38                 local vector fontsize;\r
39                 fontsize_x = fontsize_y = 1.0 / 30.0;\r
40                 fontsize_z = 0.0;\r
41                 draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 );\r
42         }\r
43 }\r
44 \r
45 float keyDownGecko(entity me, float scan, float ascii, float shift)\r
46 {\r
47         if( scan == K_ESCAPE ) {\r
48                 return 0;\r
49         }\r
50         return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );\r
51 }\r
52 \r
53 float keyUpGecko(entity me, float scan, float ascii, float shift)\r
54 {\r
55         return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );\r
56 }\r
57 \r
58 float mouseMoveGecko(entity me, vector pos)\r
59 {\r
60         gecko_mousemove( me.texturePath, pos_x, pos_y );\r
61         return 1;\r
62 }\r
63 \r
64 float mousePressGecko(entity me, vector pos)\r
65 {\r
66         return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_DOWN );\r
67 }\r
68 \r
69 float mouseDragGecko(entity me, vector pos)\r
70 {\r
71         //gecko_mousemove( me.instanceName, pos_x, pos_y );\r
72         return 0;\r
73 }\r
74 \r
75 float mouseReleaseGecko(entity me, vector pos)\r
76 {\r
77         return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_UP );\r
78 }\r
79 \r
80 string toStringGecko(entity me)\r
81 {\r
82         return me.texturePath;\r
83 }\r
84 \r
85 #endif\r