void instance_get_bbox( INSTANCE * i, GRAPH * gr, REGION * dest ) { REGION *region; int x, y, r ; int scalex, scaley ; r = LOCINT32( librender, i, REGIONID ) ; if ( r > 0 && r < 32 ) region = ®ions[ r ] ; else region = ®ions[ 0 ]; x = LOCINT32( librender, i, COORDX ) ; y = LOCINT32( librender, i, COORDY ) ; RESOLXY( librender, i, x, y ); scalex = LOCINT32( librender, i, GRAPHSIZEX ); scaley = LOCINT32( librender, i, GRAPHSIZEY ); if ( scalex == 100 && scaley == 100 ) scalex = scaley = LOCINT32( librender, i, GRAPHSIZE ); gr_get_bbox( dest, region, x, y, LOCDWORD( librender, i, FLAGS ) ^ LOCDWORD( librender, i, XGRAPH_FLAGS ), LOCDWORD( librender, i, XGRAPH ) ? 0 : LOCINT32( librender, i, ANGLE ), scalex, scaley, gr ) ; }
static int get_bbox( REGION * bbox, INSTANCE * proc ) { GRAPH * b ; int x, y ; int scalex, scaley ; b = instance_graph( proc ) ; if ( !b ) return 0 ; scalex = LOCINT32( mod_grproc, proc, GRAPHSIZEX ); scaley = LOCINT32( mod_grproc, proc, GRAPHSIZEY ); if ( scalex == 100 && scaley == 100 ) scalex = scaley = LOCINT32( mod_grproc, proc, GRAPHSIZE ); x = LOCINT32( mod_grproc, proc, COORDX ) ; y = LOCINT32( mod_grproc, proc, COORDY ) ; RESOLXY( mod_grproc, proc, x, y ); gr_get_bbox( bbox, 0, x, y, LOCDWORD( mod_grproc, proc, FLAGS ) & ( B_HMIRROR | B_VMIRROR ), LOCINT32( mod_grproc, proc, ANGLE ), scalex, scaley, b ) ; return 1 ; }
int mouse_info( INSTANCE * i, REGION * clip, int * z, int * drawme ) { int mousex ; int mousey ; int mousez ; int mousefile ; int mousegraph ; int mouseangle; int mousesize; int mouseflags; int mouseregion; int changed; * z = mousez = GLOINT32( libmouse, MOUSEZ ); mousefile = GLODWORD( libmouse, MOUSEFILE ); mousegraph = GLODWORD( libmouse, MOUSEGRAPH ); mouse_map = ( mousegraph > 0 ) ? bitmap_get( mousefile, mousegraph ) : NULL ; if ( !mouse_map ) { * drawme = 0; /* clip->x = clip->x2 = -2; clip->y = clip->y2 = -2; */ return 0; } mousex = GLOINT32( libmouse, MOUSEX ); mousey = GLOINT32( libmouse, MOUSEY ); // mousez = GLODWORD( libmouse, MOUSEZ ); mouseangle = GLOINT32( libmouse, MOUSEANGLE ); mousesize = GLOINT32( libmouse, MOUSESIZE ); mouseflags = GLODWORD( libmouse, MOUSEFLAGS ); mouseregion = GLOINT32( libmouse, MOUSEREGION ); * drawme = 1; changed = ( mouse_map && mouse_map->modified ) || last_mousex != mousex || last_mousey != mousey || last_mousez != mousez || last_mousefile != mousefile || last_mousegraph != mousegraph || last_mouseangle != mouseangle || last_mousesize != mousesize || last_mouseflags != mouseflags || last_mouseregion != mouseregion || ( mouse_map->ncpoints && ( last_mousecenterx != mouse_map->cpoints[0].x || last_mousecentery != mouse_map->cpoints[0].y ) ) ; if ( changed ) { last_mousex = mousex ; last_mousey = mousey ; last_mousez = mousez ; last_mousefile = mousefile ; last_mousegraph = mousegraph ; last_mouseangle = mouseangle ; last_mousesize = mousesize ; last_mouseflags = mouseflags ; last_mouseregion = mouseregion ; if ( mouse_map->ncpoints ) { last_mousecenterx = mouse_map->cpoints[0].x; last_mousecentery = mouse_map->cpoints[0].y; } else { last_mousecenterx = CPOINT_UNDEFINED; last_mousecentery = CPOINT_UNDEFINED; } gr_get_bbox( clip, 0, mousex, mousey, mouseflags, mouseangle , mousesize , mousesize , mouse_map ) ; } return changed; }