1 // Andreas Kirsch Gecko item (to test it)
3 CLASS(Gecko) EXTENDS(Item)
4 METHOD( Gecko, configureBrowser, void( entity, string ) )
5 METHOD( Gecko, draw, void(entity))
6 METHOD( Gecko, keyDown, float(entity, float, float, float))
7 METHOD( Gecko, keyUp, float(entity, float, float, float))
8 METHOD( Gecko, mouseMove, float(entity, vector))
9 METHOD( Gecko, mousePress, float(entity, vector))
10 METHOD( Gecko, mouseDrag, float(entity, vector))
11 METHOD( Gecko, mouseRelease, float(entity, vector))
12 METHOD( Gecko, resizeNotify, void(entity, vector, vector, vector, vector))
13 ATTRIB( Gecko, texturePath, string, string_null )
14 ATTRIB( Gecko, textureExtent, vector, '0 0 0')
19 // define static members
20 float _gecko_instanceNumber;
22 void configureBrowserGecko( entity me, string URI ) {
25 //create a new gecko object if needed
26 if( !me.texturePath ) {
27 me.texturePath = strzone( strcat( "_dynamic/gecko/menu/", ftos( _gecko_instanceNumber ) ) );
28 _gecko_instanceNumber+=1;
29 // TODO: add error checks
30 gecko_create( me.texturePath );
32 gecko_navigate( me.texturePath, URI );
35 void drawGecko(entity me)
39 if( me.texturePath ) {
40 /* The gecko browser is actually only drawn to a part of the
41 texture. Correct scaling so that part fills up the whole
43 drawSize_x = 1.0 / me.textureExtent_x;
44 drawSize_y = 1.0 / me.textureExtent_y;
45 draw_Picture( '0 0 0', strcat( "/", me.texturePath ),
46 drawSize, '1 1 1', 1.0 );
48 local vector fontsize;
49 fontsize_x = fontsize_y = 1.0 / 30.0;
51 draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 );
55 float keyDownGecko(entity me, float scan, float ascii, float shift)
57 if( scan == K_ESCAPE ) {
60 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );
63 float keyUpGecko(entity me, float scan, float ascii, float shift)
65 return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );
68 float mouseMoveGecko(entity me, vector pos)
70 gecko_mousemove( me.texturePath, pos_x, pos_y );
74 float mousePressGecko(entity me, vector pos)
76 return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_DOWN );
79 float mouseDragGecko(entity me, vector pos)
81 gecko_mousemove( me.texturePath, pos_x, pos_y );
85 float mouseReleaseGecko(entity me, vector pos)
87 return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_UP );
90 void resizeNotifyGecko(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
92 me.origin = absOrigin;
94 gecko_resize( me.texturePath, absSize_x, absSize_y );
95 me.textureExtent = gecko_get_texture_extent( me.texturePath );
98 string toStringGecko(entity me)
100 return me.texturePath;