Applied zoom_Ãfactorize.diff patch from Aurelien J.
authorkazer_ <kazer_@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Tue, 11 Dec 2007 10:50:09 +0000 (10:50 +0000)
committerkazer_ <kazer_@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Tue, 11 Dec 2007 10:50:09 +0000 (10:50 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@628 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/src/navit.c

index 998de42..9e0fa46 100644 (file)
@@ -252,6 +252,22 @@ navit_motion(void *data, struct point *p)
        }
 }
 
+static void
+navit_scale(struct navit *this_, long scale, struct point *p)
+{
+       struct coord c1, c2, *center;
+       if (p)
+               transform_reverse(this_->trans, p, &c1);
+       transform_set_scale(this_->trans, scale);
+       if (p) {
+               transform_reverse(this_->trans, p, &c2);
+               center = transform_center(this_->trans);
+               center->x += c1.x - c2.x;
+               center->y += c1.y - c2.y;
+       }
+       navit_draw(this_);
+}
+
 /**
  * Change the current zoom level, zooming closer to the ground
  *
@@ -263,20 +279,10 @@ navit_motion(void *data, struct point *p)
 void
 navit_zoom_in(struct navit *this_, int factor, struct point *p)
 {
-       struct coord c1, c2, *center;
        long scale=transform_get_scale(this_->trans)/factor;
        if (scale < 1)
                scale=1;
-       if (p)
-               transform_reverse(this_->trans, p, &c1);
-       transform_set_scale(this_->trans, scale);
-       if (p) {
-               transform_reverse(this_->trans, p, &c2);
-               center = transform_center(this_->trans);
-               center->x += c1.x - c2.x;
-               center->y += c1.y - c2.y;
-       }
-       navit_draw(this_);
+       navit_scale(this_, scale, p);
 }
 
 /**
@@ -290,18 +296,8 @@ navit_zoom_in(struct navit *this_, int factor, struct point *p)
 void
 navit_zoom_out(struct navit *this_, int factor, struct point *p)
 {
-       struct coord c1, c2, *center;
        long scale=transform_get_scale(this_->trans)*factor;
-       if (p)
-               transform_reverse(this_->trans, p, &c1);
-       transform_set_scale(this_->trans,scale);
-       if (p) {
-               transform_reverse(this_->trans, p, &c2);
-               center = transform_center(this_->trans);
-               center->x += c1.x - c2.x;
-               center->y += c1.y - c2.y;
-       }
-       navit_draw(this_);
+       navit_scale(this_, scale, p);
 }
 
 struct navit *