[gimp/gtk3-port: 146/226] libgimpwidgets: move all GimpOffsetArea members to a private struct



commit 7f97fa4d9a7a0e124cbf6d582f8256253b140ca6
Author: Michael Natterer <mitch gimp org>
Date:   Wed Dec 29 16:49:38 2010 +0100

    libgimpwidgets: move all GimpOffsetArea members to a private struct

 libgimpwidgets/gimpoffsetarea.c |  218 ++++++++++++++++++++++++---------------
 libgimpwidgets/gimpoffsetarea.h |   15 +--
 2 files changed, 136 insertions(+), 97 deletions(-)
---
diff --git a/libgimpwidgets/gimpoffsetarea.c b/libgimpwidgets/gimpoffsetarea.c
index 660ba42..9276c85 100644
--- a/libgimpwidgets/gimpoffsetarea.c
+++ b/libgimpwidgets/gimpoffsetarea.c
@@ -48,6 +48,25 @@ enum
 };
 
 
+typedef struct _GimpOffsetAreaPrivate GimpOffsetAreaPrivate;
+
+struct _GimpOffsetAreaPrivate
+{
+  gint    orig_width;
+  gint    orig_height;
+  gint    width;
+  gint    height;
+  gint    offset_x;
+  gint    offset_y;
+  gdouble display_ratio_x;
+  gdouble display_ratio_y;
+};
+
+#define GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE (obj, \
+                                                      GIMP_TYPE_OFFSET_AREA, \
+                                                      GimpOffsetAreaPrivate)
+
+
 static void      gimp_offset_area_resize        (GimpOffsetArea *area);
 
 static void      gimp_offset_area_realize       (GtkWidget      *widget);
@@ -69,6 +88,7 @@ static guint gimp_offset_area_signals[LAST_SIGNAL] = { 0 };
 static void
 gimp_offset_area_class_init (GimpOffsetAreaClass *klass)
 {
+  GObjectClass   *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
   gimp_offset_area_signals[OFFSETS_CHANGED] =
@@ -86,19 +106,23 @@ gimp_offset_area_class_init (GimpOffsetAreaClass *klass)
   widget_class->realize       = gimp_offset_area_realize;
   widget_class->event         = gimp_offset_area_event;
   widget_class->draw          = gimp_offset_area_draw;
+
+  g_type_class_add_private (object_class, sizeof (GimpOffsetAreaPrivate));
 }
 
 static void
 gimp_offset_area_init (GimpOffsetArea *area)
 {
-  area->orig_width      = 0;
-  area->orig_height     = 0;
-  area->width           = 0;
-  area->height          = 0;
-  area->offset_x        = 0;
-  area->offset_y        = 0;
-  area->display_ratio_x = 1.0;
-  area->display_ratio_y = 1.0;
+  GimpOffsetAreaPrivate *private = GET_PRIVATE (area);
+
+  private->orig_width      = 0;
+  private->orig_height     = 0;
+  private->width           = 0;
+  private->height          = 0;
+  private->offset_x        = 0;
+  private->offset_y        = 0;
+  private->display_ratio_x = 1.0;
+  private->display_ratio_y = 1.0;
 
   gtk_widget_add_events (GTK_WIDGET (area),
                          GDK_BUTTON_PRESS_MASK   |
@@ -121,15 +145,18 @@ GtkWidget *
 gimp_offset_area_new (gint orig_width,
                       gint orig_height)
 {
-  GimpOffsetArea *area;
+  GimpOffsetArea        *area;
+  GimpOffsetAreaPrivate *private;
 
   g_return_val_if_fail (orig_width  > 0, NULL);
   g_return_val_if_fail (orig_height > 0, NULL);
 
   area = g_object_new (GIMP_TYPE_OFFSET_AREA, NULL);
 
-  area->orig_width  = area->width  = orig_width;
-  area->orig_height = area->height = orig_height;
+  private = GET_PRIVATE (area);
+
+  private->orig_width  = private->width  = orig_width;
+  private->orig_height = private->height = orig_height;
 
   gimp_offset_area_resize (area);
 
@@ -175,31 +202,39 @@ gimp_offset_area_set_size (GimpOffsetArea *area,
                            gint            width,
                            gint            height)
 {
+  GimpOffsetAreaPrivate *private;
+
   g_return_if_fail (GIMP_IS_OFFSET_AREA (area));
   g_return_if_fail (width > 0 && height > 0);
 
-  if (area->width != width || area->height != height)
+  private = GET_PRIVATE (area);
+
+  if (private->width != width || private->height != height)
     {
       gint offset_x;
       gint offset_y;
 
-      area->width  = width;
-      area->height = height;
+      private->width  = width;
+      private->height = height;
 
-      if (area->orig_width <= area->width)
-        offset_x = CLAMP (area->offset_x, 0, area->width - area->orig_width);
+      if (private->orig_width <= private->width)
+        offset_x = CLAMP (private->offset_x,
+                          0, private->width - private->orig_width);
       else
-        offset_x = CLAMP (area->offset_x, area->width - area->orig_width, 0);
+        offset_x = CLAMP (private->offset_x,
+                          private->width - private->orig_width, 0);
 
-      if (area->orig_height <= area->height)
-        offset_y = CLAMP (area->offset_y, 0, area->height - area->orig_height);
+      if (private->orig_height <= private->height)
+        offset_y = CLAMP (private->offset_y,
+                          0, private->height - private->orig_height);
       else
-        offset_y = CLAMP (area->offset_y, area->height - area->orig_height, 0);
+        offset_y = CLAMP (private->offset_y,
+                          private->height - private->orig_height, 0);
 
-      if (offset_x != area->offset_x || offset_y != area->offset_y)
+      if (offset_x != private->offset_x || offset_y != private->offset_y)
         {
-          area->offset_x = offset_x;
-          area->offset_y = offset_y;
+          private->offset_x = offset_x;
+          private->offset_y = offset_y;
 
           g_signal_emit (area,
                          gimp_offset_area_signals[OFFSETS_CHANGED], 0,
@@ -224,19 +259,27 @@ gimp_offset_area_set_offsets (GimpOffsetArea *area,
                               gint            offset_x,
                               gint            offset_y)
 {
+  GimpOffsetAreaPrivate *private;
+
   g_return_if_fail (GIMP_IS_OFFSET_AREA (area));
 
-  if (area->offset_x != offset_x || area->offset_y != offset_y)
+  private = GET_PRIVATE (area);
+
+  if (private->offset_x != offset_x || private->offset_y != offset_y)
     {
-      if (area->orig_width <= area->width)
-        area->offset_x = CLAMP (offset_x, 0, area->width - area->orig_width);
+      if (private->orig_width <= private->width)
+        private->offset_x = CLAMP (offset_x,
+                                   0, private->width - private->orig_width);
       else
-        area->offset_x = CLAMP (offset_x, area->width - area->orig_width, 0);
+        private->offset_x = CLAMP (offset_x,
+                                   private->width - private->orig_width, 0);
 
-      if (area->orig_height <= area->height)
-        area->offset_y = CLAMP (offset_y, 0, area->height - area->orig_height);
+      if (private->orig_height <= private->height)
+        private->offset_y = CLAMP (offset_y,
+                                   0, private->height - private->orig_height);
       else
-        area->offset_y = CLAMP (offset_y, area->height - area->orig_height, 0);
+        private->offset_y = CLAMP (offset_y,
+                                   private->height - private->orig_height, 0);
 
       gtk_widget_queue_draw (GTK_WIDGET (area));
     }
@@ -245,22 +288,23 @@ gimp_offset_area_set_offsets (GimpOffsetArea *area,
 static void
 gimp_offset_area_resize (GimpOffsetArea *area)
 {
-  gint    width;
-  gint    height;
-  gdouble ratio;
+  GimpOffsetAreaPrivate *private = GET_PRIVATE (area);
+  gint                   width;
+  gint                   height;
+  gdouble                ratio;
 
-  if (area->orig_width == 0 || area->orig_height == 0)
+  if (private->orig_width == 0 || private->orig_height == 0)
     return;
 
-  if (area->orig_width <= area->width)
-    width = area->width;
+  if (private->orig_width <= private->width)
+    width = private->width;
   else
-    width = area->orig_width * 2 - area->width;
+    width = private->orig_width * 2 - private->width;
 
-  if (area->orig_height <= area->height)
-    height = area->height;
+  if (private->orig_height <= private->height)
+    height = private->height;
   else
-    height = area->orig_height * 2 - area->height;
+    height = private->orig_height * 2 - private->height;
 
   ratio = (gdouble) DRAWING_AREA_SIZE / (gdouble) MAX (width, height);
 
@@ -275,20 +319,21 @@ static void
 gimp_offset_area_size_allocate (GtkWidget     *widget,
                                 GtkAllocation *allocation)
 {
-  GimpOffsetArea *area = GIMP_OFFSET_AREA (widget);
-  GdkPixbuf      *pixbuf;
+  GimpOffsetArea        *area    = GIMP_OFFSET_AREA (widget);
+  GimpOffsetAreaPrivate *private = GET_PRIVATE (area);
+  GdkPixbuf             *pixbuf;
 
   GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, allocation);
 
-  area->display_ratio_x = ((gdouble) allocation->width /
-                           ((area->orig_width <= area->width) ?
-                            area->width :
-                            area->orig_width * 2 - area->width));
+  private->display_ratio_x = ((gdouble) allocation->width /
+                              ((private->orig_width <= private->width) ?
+                               private->width :
+                               private->orig_width * 2 - private->width));
 
-  area->display_ratio_y = ((gdouble) allocation->height /
-                           ((area->orig_height <= area->height) ?
-                            area->height :
-                            area->orig_height * 2 - area->height));
+  private->display_ratio_y = ((gdouble) allocation->height /
+                              ((private->orig_height <= private->height) ?
+                               private->height :
+                               private->orig_height * 2 - private->height));
 
   pixbuf = g_object_get_data (G_OBJECT (area), "pixbuf");
 
@@ -298,10 +343,10 @@ gimp_offset_area_size_allocate (GtkWidget     *widget,
       gint       pixbuf_width;
       gint       pixbuf_height;
 
-      pixbuf_width  = area->display_ratio_x * area->orig_width;
+      pixbuf_width  = private->display_ratio_x * private->orig_width;
       pixbuf_width  = MAX (pixbuf_width, 1);
 
-      pixbuf_height = area->display_ratio_y * area->orig_height;
+      pixbuf_height = private->display_ratio_y * private->orig_height;
       pixbuf_height = MAX (pixbuf_height, 1);
 
       copy = g_object_get_data (G_OBJECT (area), "pixbuf-copy");
@@ -346,11 +391,12 @@ gimp_offset_area_event (GtkWidget *widget,
   static gint start_x       = 0;
   static gint start_y       = 0;
 
-  GimpOffsetArea *area = GIMP_OFFSET_AREA (widget);
-  gint            offset_x;
-  gint            offset_y;
+  GimpOffsetArea        *area    = GIMP_OFFSET_AREA (widget);
+  GimpOffsetAreaPrivate *private = GET_PRIVATE (area);
+  gint                   offset_x;
+  gint                   offset_y;
 
-  if (area->orig_width == 0 || area->orig_height == 0)
+  if (private->orig_width == 0 || private->orig_height == 0)
     return FALSE;
 
   switch (event->type)
@@ -360,8 +406,8 @@ gimp_offset_area_event (GtkWidget *widget,
         {
           gtk_grab_add (widget);
 
-          orig_offset_x = area->offset_x;
-          orig_offset_y = area->offset_y;
+          orig_offset_x = private->offset_x;
+          orig_offset_y = private->offset_y;
           start_x = event->button.x;
           start_y = event->button.y;
         }
@@ -369,17 +415,17 @@ gimp_offset_area_event (GtkWidget *widget,
 
     case GDK_MOTION_NOTIFY:
       offset_x = (orig_offset_x +
-                  (event->motion.x - start_x) / area->display_ratio_x);
+                  (event->motion.x - start_x) / private->display_ratio_x);
       offset_y = (orig_offset_y +
-                  (event->motion.y - start_y) / area->display_ratio_y);
+                  (event->motion.y - start_y) / private->display_ratio_y);
 
-      if (area->offset_x != offset_x || area->offset_y != offset_y)
+      if (private->offset_x != offset_x || private->offset_y != offset_y)
         {
           gimp_offset_area_set_offsets (area, offset_x, offset_y);
 
           g_signal_emit (area,
                          gimp_offset_area_signals[OFFSETS_CHANGED], 0,
-                         area->offset_x, area->offset_y);
+                         private->offset_x, private->offset_y);
         }
       break;
 
@@ -403,29 +449,30 @@ static gboolean
 gimp_offset_area_draw (GtkWidget *widget,
                        cairo_t   *cr)
 {
-  GimpOffsetArea  *area    = GIMP_OFFSET_AREA (widget);
-  GtkStyleContext *context = gtk_widget_get_style_context (widget);
-  GtkAllocation    allocation;
-  GdkPixbuf       *pixbuf;
-  gint             w, h;
-  gint             x, y;
+  GimpOffsetArea        *area    = GIMP_OFFSET_AREA (widget);
+  GimpOffsetAreaPrivate *private = GET_PRIVATE (area);
+  GtkStyleContext       *context = gtk_widget_get_style_context (widget);
+  GtkAllocation          allocation;
+  GdkPixbuf             *pixbuf;
+  gint                   w, h;
+  gint                   x, y;
 
   gtk_widget_get_allocation (widget, &allocation);
 
-  x = (area->display_ratio_x *
-       ((area->orig_width <= area->width) ?
-        area->offset_x :
-        area->offset_x + area->orig_width - area->width));
+  x = (private->display_ratio_x *
+       ((private->orig_width <= private->width) ?
+        private->offset_x :
+        private->offset_x + private->orig_width - private->width));
 
-  y = (area->display_ratio_y *
-       ((area->orig_height <= area->height) ?
-        area->offset_y :
-        area->offset_y + area->orig_height - area->height));
+  y = (private->display_ratio_y *
+       ((private->orig_height <= private->height) ?
+        private->offset_y :
+        private->offset_y + private->orig_height - private->height));
 
-  w = area->display_ratio_x * area->orig_width;
+  w = private->display_ratio_x * private->orig_width;
   w = MAX (w, 1);
 
-  h = area->display_ratio_y * area->orig_height;
+  h = private->display_ratio_y * private->orig_height;
   h = MAX (h, 1);
 
   pixbuf = g_object_get_data (G_OBJECT (widget), "pixbuf-copy");
@@ -445,14 +492,15 @@ gimp_offset_area_draw (GtkWidget *widget,
       gtk_render_frame (context, cr, x, y, w, h);
     }
 
-  if (area->orig_width > area->width || area->orig_height > area->height)
+  if (private->orig_width > private->width ||
+      private->orig_height > private->height)
     {
       gint line_width;
 
-       if (area->orig_width > area->width)
+       if (private->orig_width > private->width)
         {
-          x = area->display_ratio_x * (area->orig_width - area->width);
-          w = area->display_ratio_x * area->width;
+          x = private->display_ratio_x * (private->orig_width - private->width);
+          w = private->display_ratio_x * private->width;
         }
       else
         {
@@ -460,10 +508,10 @@ gimp_offset_area_draw (GtkWidget *widget,
           w = allocation.width + 2;
         }
 
-      if (area->orig_height > area->height)
+      if (private->orig_height > private->height)
         {
-          y = area->display_ratio_y * (area->orig_height - area->height);
-          h = area->display_ratio_y * area->height;
+          y = private->display_ratio_y * (private->orig_height - private->height);
+          h = private->display_ratio_y * private->height;
         }
       else
         {
diff --git a/libgimpwidgets/gimpoffsetarea.h b/libgimpwidgets/gimpoffsetarea.h
index a33960c..acd1d23 100644
--- a/libgimpwidgets/gimpoffsetarea.h
+++ b/libgimpwidgets/gimpoffsetarea.h
@@ -44,24 +44,15 @@ typedef struct _GimpOffsetAreaClass  GimpOffsetAreaClass;
 struct _GimpOffsetArea
 {
   GtkDrawingArea  parent_instance;
-
-  gint            orig_width;
-  gint            orig_height;
-  gint            width;
-  gint            height;
-  gint            offset_x;
-  gint            offset_y;
-  gdouble         display_ratio_x;
-  gdouble         display_ratio_y;
 };
 
 struct _GimpOffsetAreaClass
 {
   GtkDrawingAreaClass  parent_class;
 
-  void (* offsets_changed)  (GimpOffsetArea *offset_area,
-                             gint            offset_x,
-                             gint            offset_y);
+  void (* offsets_changed) (GimpOffsetArea *offset_area,
+                            gint            offset_x,
+                            gint            offset_y);
 
   /* Padding for future expansion */
   void (* _gimp_reserved1) (void);


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