[gimp/gimp-2-10] app: rename gimp_applicator_set_preview() to _set_crop(); add _get_crop()



commit 81bef8cd506e3b24c0fa27ab51e87436af8ab4c0
Author: Ell <ell_se yahoo com>
Date:   Sun Dec 30 03:33:56 2018 -0500

    app: rename gimp_applicator_set_preview() to _set_crop(); add _get_crop()
    
    We're going to use GimpApplicator's output crop for more than just
    split previews.  Rename gimp_applicator_set_preview() to
    gimp_applicator_set_crop(), and add gimp_applicator_get_crop(),
    which returns the output crop rectangle, or NULL if cropping is
    disabled.
    
    (cherry picked from commit 7534ae53d69302ef6142a90c93cf45cc9b1257ba)

 app/core/gimpdrawable-filters.c |  5 ++--
 app/core/gimpdrawablefilter.c   |  5 ++--
 app/gegl/gimpapplicator.c       | 54 +++++++++++++++++++++++------------------
 app/gegl/gimpapplicator.h       | 10 ++++----
 4 files changed, 40 insertions(+), 34 deletions(-)
---
diff --git a/app/core/gimpdrawable-filters.c b/app/core/gimpdrawable-filters.c
index 25822e8614..2dad613110 100644
--- a/app/core/gimpdrawable-filters.c
+++ b/app/core/gimpdrawable-filters.c
@@ -150,9 +150,8 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
 
       if (applicator)
         {
-          /*  disable the preview crop  */
-          gimp_applicator_set_preview (applicator, FALSE,
-                                       GEGL_RECTANGLE (0, 0, 0, 0));
+          /*  disable the output crop  */
+          gimp_applicator_set_crop (applicator, NULL);
 
           /*  the cache and its valid rectangles are the region that
            *  has already been processed by this applicator.
diff --git a/app/core/gimpdrawablefilter.c b/app/core/gimpdrawablefilter.c
index 072c00cacc..4cef918b31 100644
--- a/app/core/gimpdrawablefilter.c
+++ b/app/core/gimpdrawablefilter.c
@@ -577,9 +577,8 @@ gimp_drawable_filter_sync_preview (GimpDrawableFilter *filter,
                                          filter->preview_position,
                                          &new_rect);
 
-  gimp_applicator_set_preview (filter->applicator,
-                               filter->preview_enabled,
-                               &new_rect);
+  gimp_applicator_set_crop (filter->applicator,
+                            filter->preview_enabled ? &new_rect : NULL);
 
   if (old_rect.x      != new_rect.x     ||
       old_rect.y      != new_rect.y     ||
diff --git a/app/gegl/gimpapplicator.c b/app/gegl/gimpapplicator.c
index 7caf5fbebb..d1c85b50d0 100644
--- a/app/gegl/gimpapplicator.c
+++ b/app/gegl/gimpapplicator.c
@@ -183,7 +183,7 @@ gimp_applicator_new (GeglNode *parent)
                          "operation", "gegl:nop",
                          NULL);
 
-  applicator->preview_crop_node =
+  applicator->crop_node =
     gegl_node_new_child (applicator->node,
                          "operation", "gegl:nop",
                          NULL);
@@ -192,7 +192,7 @@ gimp_applicator_new (GeglNode *parent)
                        applicator->affect_node,
                        applicator->convert_format_node,
                        applicator->cache_node,
-                       applicator->preview_crop_node,
+                       applicator->crop_node,
                        applicator->output_node,
                        NULL);
 
@@ -556,24 +556,19 @@ gimp_applicator_get_cache_buffer (GimpApplicator  *applicator,
 }
 
 void
-gimp_applicator_set_preview (GimpApplicator      *applicator,
-                             gboolean             enable,
-                             const GeglRectangle *rect)
+gimp_applicator_set_crop (GimpApplicator      *applicator,
+                          const GeglRectangle *rect)
 {
   g_return_if_fail (GIMP_IS_APPLICATOR (applicator));
-  g_return_if_fail (rect != NULL);
 
-  if (applicator->preview_enabled     != enable      ||
-      applicator->preview_rect.x      != rect->x     ||
-      applicator->preview_rect.y      != rect->y     ||
-      applicator->preview_rect.width  != rect->width ||
-      applicator->preview_rect.height != rect->height)
+  if (applicator->crop_enabled != (rect != NULL) ||
+      (rect && ! gegl_rectangle_equal (&applicator->crop_rect, rect)))
     {
-      if (enable)
+      if (rect)
         {
-          if (! applicator->preview_enabled)
+          if (! applicator->crop_enabled)
             {
-              gegl_node_set (applicator->preview_crop_node,
+              gegl_node_set (applicator->crop_node,
                              "operation", "gimp:compose-crop",
                              "x",         rect->x,
                              "y",         rect->y,
@@ -581,32 +576,45 @@ gimp_applicator_set_preview (GimpApplicator      *applicator,
                              "height",    rect->height,
                              NULL);
 
-              gegl_node_connect_to (applicator->input_node,        "output",
-                                    applicator->preview_crop_node, "aux");
+              gegl_node_connect_to (applicator->input_node, "output",
+                                    applicator->crop_node,  "aux");
             }
           else
             {
-              gegl_node_set (applicator->preview_crop_node,
+              gegl_node_set (applicator->crop_node,
                              "x",      rect->x,
                              "y",      rect->y,
                              "width",  rect->width,
                              "height", rect->height,
                              NULL);
             }
+
+          applicator->crop_enabled = TRUE;
+          applicator->crop_rect    = *rect;
         }
-      else if (applicator->preview_enabled)
+      else
         {
-          gegl_node_disconnect (applicator->preview_crop_node, "aux");
-          gegl_node_set (applicator->preview_crop_node,
+          gegl_node_disconnect (applicator->crop_node, "aux");
+          gegl_node_set (applicator->crop_node,
                          "operation", "gegl:nop",
                          NULL);
-        }
 
-      applicator->preview_enabled = enable;
-      applicator->preview_rect    = *rect;
+          applicator->crop_enabled = FALSE;
+        }
     }
 }
 
+const GeglRectangle *
+gimp_applicator_get_crop (GimpApplicator *applicator)
+{
+  g_return_val_if_fail (GIMP_IS_APPLICATOR (applicator), NULL);
+
+  if (applicator->crop_enabled)
+    return &applicator->crop_rect;
+
+  return NULL;
+}
+
 void
 gimp_applicator_blit (GimpApplicator      *applicator,
                       const GeglRectangle *rect)
diff --git a/app/gegl/gimpapplicator.h b/app/gegl/gimpapplicator.h
index 675a750343..3c70944f2b 100644
--- a/app/gegl/gimpapplicator.h
+++ b/app/gegl/gimpapplicator.h
@@ -64,9 +64,9 @@ struct _GimpApplicator
   gboolean                cache_enabled;
   GeglNode               *cache_node;
 
-  gboolean                preview_enabled;
-  GeglRectangle           preview_rect;
-  GeglNode               *preview_crop_node;
+  gboolean                crop_enabled;
+  GeglRectangle           crop_rect;
+  GeglNode               *crop_node;
 
   GeglBuffer             *src_buffer;
   GeglNode               *src_node;
@@ -128,9 +128,9 @@ GeglBuffer * gimp_applicator_get_cache_buffer  (GimpApplicator       *applicator
                                                 GeglRectangle       **rectangles,
                                                 gint                 *n_rectangles);
 
-void         gimp_applicator_set_preview       (GimpApplicator       *applicator,
-                                                gboolean              enable,
+void         gimp_applicator_set_crop          (GimpApplicator       *applicator,
                                                 const GeglRectangle  *rect);
+const GeglRectangle * gimp_applicator_get_crop (GimpApplicator       *applicator);
 
 void         gimp_applicator_blit              (GimpApplicator       *applicator,
                                                 const GeglRectangle  *rect);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]