Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
authorJohn Ellis <johne@verizon.net>
Sat, 2 Apr 2005 22:44:34 +0000 (22:44 +0000)
committerJohn Ellis <johne@verizon.net>
Sat, 2 Apr 2005 22:44:34 +0000 (22:44 +0000)
        * image.c (image_options_set): Update PixbufRenderer parent window so
        that changing 'fit window to image' option works.
        * pan-view.c (pan_window_image_zoom_cb): Use same zoom text display as
        for main windows.
        * pixbuf-renderer.c: Fix (re-implement) check for maximized window
        state. Fix pr_source_tile_visible() calculation which was using the x
        axis where it should be y. Add redrawn return value to pr_zoom_clamp()
        and use that value in pr_zoom_sync() to pass pr_redraw correct args.

##### Note: GQview CVS on sourceforge is not always up to date, please use #####
##### an offical release when making enhancements and translation updates. #####

ChangeLog
TODO
src/image.c
src/pan-view.c
src/pixbuf-renderer.c

index 6f108e0..4d00655 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Apr  2 17:28:16 2005  John Ellis  <johne@verizon.net>
+
+       * image.c (image_options_set): Update PixbufRenderer parent window so
+       that changing 'fit window to image' option works.
+       * pan-view.c (pan_window_image_zoom_cb): Use same zoom text display as
+       for main windows.
+       * pixbuf-renderer.c: Fix (re-implement) check for maximized window
+       state. Fix pr_source_tile_visible() calculation which was using the x
+       axis where it should be y. Add redrawn return value to pr_zoom_clamp()
+       and use that value in pr_zoom_sync() to pass pr_redraw correct args.
+
 Mon Mar 28 20:23:34 2005  John Ellis  <johne@verizon.net>
 
        * image.[ch]: Add utility to sync image settings to user preferences.
diff --git a/TODO b/TODO
index dbd3344..38b5f13 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,7 +7,8 @@ Major:
  > pixbuf-renderer.c:
   d> fix two pass render from corrupting it->qd pointer (need one pointer for each queue?).
   d> fix image_change_from_image (to do this need a pixbuf_renderer_move_image).
-   > fix broken zoom out drawing when using source tiles.
+  d> fix broken zoom out drawing when using source tiles.
+   > fix 2pass zoom when using source tiles and zoomed out (not always rendering second pass)
 
  > image.c:
   d> need to keep a list of ImageWindows and provide function to sync options to each object.
@@ -16,6 +17,8 @@ Major:
         by pre-rendering any scaled tiles that are visible before signaling 'render_complete'.
    > make this a g_object with signals for completed, changed, etc.
   d> fix region computation rounding when updating scaled image in 'area ready' signal.
+   > fix delay flip 'completed' signal (full screen busy cursor is not always turned off)
+   > fix slow loading of images when zoomed out - bug could be poor clamping to visible in PixbufRenderer.
 
 
  > work on pan view:
index 7b6824b..e2cb6fa 100644 (file)
@@ -1347,6 +1347,8 @@ static void image_options_set(ImageWindow *imd)
                                        "window_limit", limit_window_size,
                                        "window_limit_value", max_window_size,
                                        NULL);
+
+       pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)imd->top_window);
 }
 
 void image_options_sync(void)
index c5f2851..2f6394d 100644 (file)
@@ -2965,9 +2965,9 @@ static gint pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
                }
        g_list_free(list);
 
-       if (0)
+#if 0
+       if (x%512 == 0 && y%512 == 0)
                {
-               static gint count = 0;
                PangoLayout *layout;
                gchar *buf;
 
@@ -2982,9 +2982,8 @@ static gint pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
                pixbuf_draw_layout(pixbuf, layout, (GtkWidget *)pr, 0, 0, 0, 0, 0, 255);
 
                g_object_unref(G_OBJECT(layout));
-
-               count++;
                }
+#endif
 
        return TRUE;
 }
@@ -4047,10 +4046,7 @@ static void pan_window_image_zoom_cb(PixbufRenderer *pr, gdouble zoom, gpointer
        PanWindow *pw = data;
        gchar *text;
 
-#if 0
-       text = image_zoom_get_as_text(imd);
-#endif
-       text = g_strdup_printf("%.2f", zoom);
+       text = image_zoom_get_as_text(pw->imd);
        gtk_label_set_text(GTK_LABEL(pw->label_zoom), text);
        g_free(text);
 }
index 0d18659..6449678 100644 (file)
@@ -676,12 +676,15 @@ static gint util_clip_region(gint x, gint y, gint w, gint h,
 
 static gint pr_parent_window_sizable(PixbufRenderer *pr)
 {
+       GdkWindowState state;
+
        if (!pr->parent_window) return FALSE;
        if (!pr->window_fit) return FALSE;
        if (!GTK_WIDGET(pr)->window) return FALSE;
-#if 0
-       if (window_maximized(pr->top_window)) return FALSE;
-#endif
+
+       if (!pr->parent_window->window) return FALSE;
+       state = gdk_window_get_state(pr->parent_window->window);
+       if (state & GDK_WINDOW_STATE_MAXIMIZED) return FALSE;
 
        return TRUE;
 }
@@ -1249,7 +1252,7 @@ static gint pr_source_tile_visible(PixbufRenderer *pr, SourceTile *st)
 
        return !((double)st->x * pr->scale > (double)x2 ||
                 (double)(st->x + pr->source_tile_width) * pr->scale < (double)x1 ||
-                (double)st->y * pr->scale > (double)x2 ||
+                (double)st->y * pr->scale > (double)y2 ||
                 (double)(st->y + pr->source_tile_height) * pr->scale < (double)y1);
 }
 
@@ -2430,7 +2433,9 @@ static gint pr_size_clamp(PixbufRenderer *pr)
        return (old_vw != pr->vis_width || old_vh != pr->vis_height);
 }
 
-static gint pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom, gint force, gint new, gint invalidate)
+static gint pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom,
+                         gint force, gint new, gint invalidate,
+                         gint *redrawn)
 {
        gint w, h;
        gdouble scale;
@@ -2521,6 +2526,7 @@ static gint pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom, gint force, gint new
                pr_tile_invalidate_all(pr);
                pr_redraw(pr, TRUE);
                }
+       if (redrawn) *redrawn = (invalidate || invalid);
 
        return TRUE;
 }
@@ -2533,6 +2539,7 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
        gint old_cx, old_cy;
        gint clamped;
        gint sized;
+       gint redrawn = FALSE;
 
        old_scale = pr->scale;
        if (center_point)
@@ -2549,7 +2556,7 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
                old_cy = pr->y_scroll + pr->vis_height / 2;
                }
 
-       if (!pr_zoom_clamp(pr, zoom, force, new, force)) return;
+       if (!pr_zoom_clamp(pr, zoom, force, new, force, &redrawn)) return;
 
        clamped = pr_size_clamp(pr);
        sized = pr_parent_window_resize(pr, pr->width, pr->height);
@@ -2600,7 +2607,7 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
         * so redraw the window anyway :/
         */
        if (sized || clamped) pr_border_clear(pr);
-       pr_redraw(pr, FALSE);
+       pr_redraw(pr, redrawn);
 
        pr_zoom_signal(pr);
        pr_update_signal(pr);
@@ -2613,7 +2620,7 @@ static void pr_size_sync(PixbufRenderer *pr, gint new_width, gint new_height)
        pr->window_width = new_width;
        pr->window_height = new_height;
 
-       if (pr->zoom == 0.0) pr_zoom_clamp(pr, 0.0, TRUE, FALSE, FALSE);
+       if (pr->zoom == 0.0) pr_zoom_clamp(pr, 0.0, TRUE, FALSE, FALSE, NULL);
 
        pr_size_clamp(pr);
        pr_scroll_clamp(pr);