1 // Andreas Kirsch Gecko item (to test it)
\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
16 #ifdef IMPLEMENTATION
\r
17 // define static members
\r
18 float _gecko_instanceNumber;
\r
20 void configureBrowserGecko( entity me, string URI ) {
\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
30 gecko_navigate( me.texturePath, URI );
\r
33 void drawGecko(entity me)
\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
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
46 local vector fontsize;
\r
47 fontsize_x = fontsize_y = 1.0 / 30.0;
\r
49 draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 );
\r
53 float keyDownGecko(entity me, float scan, float ascii, float shift)
\r
55 if( scan == K_ESCAPE ) {
\r
59 return gecko_keyevent( me.texturePath, ascii, GECKO_BUTTON_DOWN );
\r
61 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );
\r
64 float keyUpGecko(entity me, float scan, float ascii, float shift)
\r
67 return gecko_keyevent( me.texturePath, ascii, GECKO_BUTTON_UP );
\r
69 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );
\r
72 float mouseMoveGecko(entity me, vector pos)
\r
74 gecko_mousemove( me.texturePath, pos_x, pos_y );
\r
78 float mouseDragGecko(entity me, vector pos)
\r
80 gecko_mousemove( me.texturePath, pos_x, pos_y );
\r
84 void resizeNotifyGecko(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
\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
91 string toStringGecko(entity me)
\r
93 return me.texturePath;
\r