From 9815a2ce53fdc9b94052ffbee157515650facf27 Mon Sep 17 00:00:00 2001 From: javiplx Date: Sun, 15 May 2011 12:50:42 +0000 Subject: [PATCH] Modify viewport to be within a single tile, encapsulating all references within tile manager git-svn-id: file:///svnroot/wifihood/branches/mapview-redesign@188 c51dfc6a-5949-4919-9c8e-f207a149c383 --- view.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/view.py b/view.py index 99a5eae..95fbc49 100755 --- 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 ) : -- 1.7.9.5