Modify viewport to be within a single tile, encapsulating all references within tile...
authorjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 12:50:42 +0000 (12:50 +0000)
committerjaviplx <javiplx@gmail.com>
Sun, 15 May 2011 12:50:42 +0000 (12:50 +0000)
git-svn-id: file:///svnroot/wifihood/branches/mapview-redesign@188 c51dfc6a-5949-4919-9c8e-f207a149c383

view.py

diff --git a/view.py b/view.py
index 99a5eae..95fbc49 100755 (executable)
--- a/view.py
+++ b/view.py
@@ -25,7 +25,7 @@ class background_map ( gtk.gdk.Pixmap ) :
 
         # FIXME : seems that reproducing the previous behaviour requires an extra subtraction of 128 to vpor[1]
         #         when moving to non-integer viewports, the shift turns and adition, and changes to vpor[0]
-        self.vport = [ bordersize * tileloader.tilesize + tileloader.refpix[0] , bordersize * tileloader.tilesize + tileloader.refpix[1] ]
+        self.__vport_base = bordersize * tileloader.tilesize , bordersize * tileloader.tilesize
 
         gtk.gdk.Pixmap.__init__( self , None , pixsize[0] , pixsize[1] , 24 )
 
@@ -36,6 +36,10 @@ class background_map ( gtk.gdk.Pixmap ) :
     def index ( self , x , y ) :
         return x + y * self.size[0]
 
+    def get_viewport ( self ) :
+        refpix = self.tileloader.get_refpix()
+        return self.__vport_base[0] + refpix[0] , self.__vport_base[1] + refpix[1]
+
     def loadtiles ( self ) :
 
         for x in range(self.size[0]) :
@@ -54,8 +58,7 @@ class background_map ( gtk.gdk.Pixmap ) :
 
     
     def do_change_reftile( self , dx , dy ) :
-        self.tileloader.reftile[0] += dx
-        self.tileloader.reftile[1] += dy
+        self.tileloader.do_change_reftile( dx , dy )
 
         pixsize = self.get_size()
         pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, pixsize[0] , pixsize[1] )
@@ -93,7 +96,14 @@ class tile_loader :
     def __init__ ( self , conf ) :
         self.tilesize = 256
         self.rootdir = "%s/%s/%s" % ( conf.mapsdir , conf.mapclass , conf.zoom )
-        self.reftile , self.refpix = self.get_reference( conf )
+        self.__reftile , self.__refpix = self.get_reference( conf )
+
+    def do_change_reftile( self , dx , dy ) :
+        self.__reftile[0] += dx
+        self.__reftile[1] += dy
+
+    def get_refpix ( self ) :
+        return self.__refpix
 
     def get_reference ( self , conf ) :
         tilex = self.lon2tilex( conf.lon , conf.zoom )
@@ -110,7 +120,7 @@ class tile_loader :
         return math.modf( ( 1 - math.log( math.tan( lat ) + 1 / math.cos( lat ) ) / math.pi ) / 2 * 2 ** zoom )
 
     def get_tile ( self , tile ) :
-        file = self.tilepath( self.reftile[0] + tile[0] , self.reftile[1] + tile[1] )
+        file = self.tilepath( self.__reftile[0] + tile[0] , self.__reftile[1] + tile[1] )
         try :
             os.stat(file)
             return gtk.gdk.pixbuf_new_from_file( file )
@@ -281,8 +291,9 @@ class simpleMapWidget ( AbstractmapWidget , gtk.Image ) :
         self.update_background()
     
     def update_background( self ) :
+        vport = self._bg.get_viewport()
         p = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, self.win_x , self.win_y )
-        p.get_from_drawable( self._bg , self._bg.get_colormap() , self._bg.vport[0] , self._bg.vport[1] , 0 , 0 , self.win_x , self.win_y )
+        p.get_from_drawable( self._bg , self._bg.get_colormap() , vport[0] , vport[1] , 0 , 0 , self.win_x , self.win_y )
         self.set_from_pixbuf(p)
     
     def composeMap( self ) :