self.draw_pixbuf( None , pixbuf , 0 , 0 , dest_x , dest_y )
+ def do_change_viewport ( self , dx , dy ) :
+ dx , dy = self.tileloader.do_change_refpix( dx , dy )
+ if dx or dy :
+ self.do_change_reftile( dx , dy )
+
def do_change_reftile( self , dx , dy ) :
self.tileloader.do_change_reftile( dx , dy )
self.rootdir = "%s/%s/%s" % ( conf.mapsdir , conf.mapclass , conf.zoom )
self.__reftile , self.__refpix = self.get_reference( conf )
+ def do_change_refpix ( self , dx , dy ) :
+ self.__refpix[0] += dx
+ self.__refpix[1] += dy
+ tileshift = self.__refpix[0] / self.tilesize , self.__refpix[1] / self.tilesize
+ self.__refpix[0] %= self.tilesize
+ self.__refpix[1] %= self.tilesize
+ return tileshift
+
def do_change_reftile( self , dx , dy ) :
self.__reftile[0] += dx
self.__reftile[1] += dy
class interactiveMapWidget :
def Shift( self , dx , dy ) :
-
-# tile_x , tile_y = ( self.refpix_x - dx ) / self.tile_size , ( self.refpix_y - dy ) / self.tile_size
-# self.reftile_x += tile_x
-# self.reftile_y += tile_y
-
-# self.refpix_x -= dx + self.tile_size * tile_x
-# self.refpix_y -= dy + self.tile_size * tile_y
-
- self.mapwidget._bg.vport[0] += dx
- self.mapwidget._bg.vport[1] += dy
+ self.mapwidget._bg.do_change_viewport( dx , dy )
self.mapwidget.update_background()
def Up( self ) :
self.click_x , self.click_y = event.x , event.y
def release_event ( self , widget, event ) :
+ # NOTE : we use origin-current for deltas because the map center moves in the opposite direction
delta_x = int( self.click_x - event.x )
delta_y = int( self.click_y - event.y )
widget.Shift(delta_x, delta_y)