]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/menu/item/gecko.c
Adapt the HUD menu to the new shownames
[voretournament/voretournament.git] / data / qcsrc / menu / 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, mouseDrag, float(entity, vector))\r
10         METHOD( Gecko, resizeNotify, void(entity, vector, vector, vector, vector))\r
11         ATTRIB( Gecko, texturePath, string, string_null )\r
12         ATTRIB( Gecko, textureExtent, vector, '0 0 0')\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         vector drawSize;\r
36   \r
37         if( me.texturePath ) {\r
38                 /* The gecko browser is actually only drawn to a part of the\r
39                    texture. Correct scaling so that part fills up the whole\r
40                    item area. */\r
41                 drawSize_x = 1.0 / me.textureExtent_x;\r
42                 drawSize_y = 1.0 / me.textureExtent_y;\r
43                 draw_Picture( '0 0 0', strcat( "/", me.texturePath ), \r
44                         drawSize, '1 1 1', 1.0 );\r
45         } else {\r
46                 local vector fontsize;\r
47                 fontsize_x = fontsize_y = 1.0 / 30.0;\r
48                 fontsize_z = 0.0;\r
49                 draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 );\r
50         }\r
51 }\r
52 \r
53 float keyDownGecko(entity me, float scan, float ascii, float shift)\r
54 {\r
55         if( scan == K_ESCAPE ) {\r
56                 return 0;\r
57         }\r
58         if (ascii >= 32)\r
59                 return gecko_keyevent( me.texturePath, ascii, GECKO_BUTTON_DOWN );\r
60         else\r
61                 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );\r
62 }\r
63 \r
64 float keyUpGecko(entity me, float scan, float ascii, float shift)\r
65 {\r
66         if (ascii >= 32)\r
67                 return gecko_keyevent( me.texturePath, ascii, GECKO_BUTTON_UP );\r
68         else\r
69                 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );\r
70 }\r
71 \r
72 float mouseMoveGecko(entity me, vector pos)\r
73 {\r
74         gecko_mousemove( me.texturePath, pos_x, pos_y );\r
75         return 1;\r
76 }\r
77 \r
78 float mouseDragGecko(entity me, vector pos)\r
79 {\r
80         gecko_mousemove( me.texturePath, pos_x, pos_y );\r
81         return 1;\r
82 }\r
83 \r
84 void resizeNotifyGecko(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)\r
85 {\r
86         resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize);\r
87         gecko_resize( me.texturePath, absSize_x, absSize_y );\r
88         me.textureExtent = gecko_get_texture_extent( me.texturePath );\r
89 }\r
90 \r
91 string toStringGecko(entity me)\r
92 {\r
93         return me.texturePath;\r
94 }\r
95 \r
96 #endif\r