return TRUE;
}
+
+/* 1 << (x) is like a 2**(x) */
+#define GZ(x) (1<<(x))
+
+static const gdouble scale_mpps[] = { GZ(0), GZ(1), GZ(2), GZ(3), GZ(4), GZ(5), GZ(6), GZ(7), GZ(8), GZ(9),
+ GZ(10), GZ(11), GZ(12), GZ(13), GZ(14), GZ(15), GZ(16), GZ(17) };
+
+static const gint num_scales = (sizeof(scale_mpps) / sizeof(scale_mpps[0]));
+
+#define ERROR_MARGIN 0.01
+guint8 mpp_to_zoom ( gdouble mpp )
+{
+ gint i;
+ for ( i = 0; i < num_scales; i++ ) {
+ if ( ABS(scale_mpps[i] - mpp) < ERROR_MARGIN ) {
+ g_debug ( "mpp_to_zoom: %f -> %d", mpp, i );
+ return i;
+ }
+ }
+ // Handle mpp smaller than 1
+ // return a useful value such that '17 - this number' gives a natural number.
+ // Ideally should return '-1' or '0.5' but that's tricky with an unsigned int type!
+ // (i.e. should rework to support zoom levels of 18 or 19)
+ return 0;
+}