src/lib/png.c
changeset 127 df89d13f2354
parent 111 a31ffb59bc19
child 177 b2768f3982f3
--- a/src/lib/png.c	Wed Jan 27 02:18:58 2010 +0200
+++ b/src/lib/png.c	Sat Apr 10 22:18:41 2010 +0300
@@ -440,11 +440,11 @@
 static int pt_png_encode_zoomed (struct pt_png_img *img, const struct pt_png_header *header, const uint8_t *data, const struct pt_tile_info *ti)
 {
     // size of the image data in px
-    size_t data_width = scale_by_zoom_factor(ti->width, -ti->zoom);
-    size_t data_height = scale_by_zoom_factor(ti->height, -ti->zoom);
+    size_t data_width = scale_by_zoom_factor(ti->width, ti->zoom);
+    size_t data_height = scale_by_zoom_factor(ti->height, ti->zoom);
 
     // input pixels per output pixel
-    size_t pixel_size = scale_by_zoom_factor(1, -ti->zoom);
+    size_t pixel_size = scale_by_zoom_factor(1, ti->zoom);
 
     // bytes per output pixel
     size_t pixel_bytes = 3;
@@ -462,7 +462,7 @@
     const png_color *c = &header->palette[0];
     
     // only supports zooming out...
-    if (ti->zoom >= 0)
+    if (ti->zoom < 0)
         RETURN_ERROR(PT_ERR_TILE_ZOOM);
 
     if ((row_buf = malloc(row_bytes)) == NULL)
@@ -484,7 +484,7 @@
         memset(row_buf, 0, row_bytes);
 
         // ...includes pixels starting from this row.
-        size_t in_row_offset = ti->y + scale_by_zoom_factor(out_row, -ti->zoom);
+        size_t in_row_offset = ti->y + scale_by_zoom_factor(out_row, ti->zoom);
         
         // ...each out row includes pixel_size in rows
         for (size_t in_row = in_row_offset; in_row < in_row_offset + pixel_size && in_row < header->height; in_row++) {
@@ -492,7 +492,7 @@
             for (size_t in_col = ti->x; in_col < ti->x + data_width && in_col < header->width; in_col++) {
 
                 // ...for this output pixel
-                size_t out_col = scale_by_zoom_factor(in_col - ti->x, ti->zoom);
+                size_t out_col = scale_by_zoom_factor(in_col - ti->x, -ti->zoom);
                 
                 // get pixel RGB data
                 png_pixel_data(&c, header, data, in_row, in_col);