Implemented cursor based shifts
authorjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 15:37:21 +0000 (15:37 +0000)
committerjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 15:37:21 +0000 (15:37 +0000)
git-svn-id: file:///svnroot/wifihood/branches/mapview-redesign@189 c51dfc6a-5949-4919-9c8e-f207a149c383

view.py

diff --git a/view.py b/view.py
index 95fbc49..32de00f 100755 (executable)
--- a/view.py
+++ b/view.py
@@ -57,6 +57,11 @@ class background_map ( gtk.gdk.Pixmap ) :
                 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 )
 
@@ -98,6 +103,14 @@ class tile_loader :
         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
@@ -250,16 +263,7 @@ class AbstractmapWidget :
 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 ) :
@@ -414,6 +418,7 @@ class mapWidget ( gtk.EventBox , interactiveMapWidget ) :
         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)