[gimp/soc-2010-cage] gimpcagetool: now inherit from GimpDrawTool. Moving cage point also works.



commit e798b97db3d2cf245b58cb9fd5af09f1567893a9
Author: Michael Muré <batolettre gmail com>
Date:   Sat Jul 17 13:33:48 2010 +0200

    gimpcagetool: now inherit from GimpDrawTool. Moving cage point also works.

 app/tools/gimpcagetool.c |   32 ++++++++++++++------------------
 app/tools/gimpcagetool.h |    6 +++---
 2 files changed, 17 insertions(+), 21 deletions(-)
---
diff --git a/app/tools/gimpcagetool.c b/app/tools/gimpcagetool.c
index df05d56..e151ef6 100644
--- a/app/tools/gimpcagetool.c
+++ b/app/tools/gimpcagetool.c
@@ -41,9 +41,9 @@
 
 #include "gimp-intl.h"
 
-static gboolean     gimp_cage_tool_initialize     (GimpTool    *tool,
+/*static gboolean     gimp_cage_tool_initialize     (GimpTool    *tool,
                                                    GimpDisplay *display,
-                                                   GError     **error);
+                                                   GError     **error);*/
 static void         gimp_cage_tool_finalize       (GObject *object);
 static void         gimp_cage_tool_start          (GimpCageTool *ct,
                                                    GimpDisplay        *display);
@@ -84,11 +84,11 @@ static void         gimp_cage_tool_draw           (GimpDrawTool *draw_tool);
 static void         gimp_cage_tool_switch_to_deform (GimpCageTool *ct);
 static void         gimp_cage_tool_remove_last_handle (GimpCageTool *ct);
 
-G_DEFINE_TYPE (GimpCageTool, gimp_cage_tool, GIMP_TYPE_TRANSFORM_TOOL)
+G_DEFINE_TYPE (GimpCageTool, gimp_cage_tool, GIMP_TYPE_DRAW_TOOL)
 
 #define parent_class gimp_cage_tool_parent_class
 
-#define HANDLE_SIZE             10
+#define HANDLE_SIZE             14
 
 void
 gimp_cage_tool_register (GimpToolRegisterCallback  callback,
@@ -113,11 +113,10 @@ gimp_cage_tool_class_init (GimpCageToolClass *klass)
   GObjectClass           *object_class         = G_OBJECT_CLASS (klass);
   GimpToolClass          *tool_class           = GIMP_TOOL_CLASS (klass);
   GimpDrawToolClass      *draw_tool_class      = GIMP_DRAW_TOOL_CLASS (klass);
-  GimpTransformToolClass *transformtool_class  = GIMP_TRANSFORM_TOOL_CLASS (klass);
   
   object_class->finalize          = gimp_cage_tool_finalize;
   
-  tool_class->initialize          = gimp_cage_tool_initialize;
+  /*tool_class->initialize          = gimp_cage_tool_initialize;*/
   tool_class->button_press        = gimp_cage_tool_button_press;
   tool_class->button_release      = gimp_cage_tool_button_release;
   tool_class->key_press           = gimp_cage_tool_key_press;
@@ -139,7 +138,7 @@ gimp_cage_tool_init (GimpCageTool *self)
   self->cage_complete = FALSE;
 }
 
-static gboolean
+/*static gboolean
 gimp_cage_tool_initialize (GimpTool    *tool,
                            GimpDisplay *display,
                            GError     **error)
@@ -147,7 +146,7 @@ gimp_cage_tool_initialize (GimpTool    *tool,
   GimpCageTool *cage_tool = GIMP_CAGE_TOOL (tool);
 
   return GIMP_TOOL_CLASS (parent_class)->initialize(tool, display, error);
-}
+}*/
 
 static void
 gimp_cage_tool_finalize (GObject *object)
@@ -162,14 +161,11 @@ gimp_cage_tool_finalize (GObject *object)
 
 
 static void
-gimp_cage_tool_start (GimpCageTool *ct,
+gimp_cage_tool_start (GimpCageTool       *ct,
                       GimpDisplay        *display)
 {
   GimpTool                  *tool      = GIMP_TOOL (ct);
   GimpDrawTool              *draw_tool = GIMP_DRAW_TOOL (tool);
-  GimpCageOptions           *options   = GIMP_CAGE_TOOL_GET_OPTIONS (ct);
-
-  gimp_cage_tool_halt (ct);
 
   gimp_tool_control_activate (tool->control);
 
@@ -210,6 +206,9 @@ gimp_cage_tool_button_press (GimpTool              *tool,
 {
   GimpCageTool    *ct       = GIMP_CAGE_TOOL (tool);
   GimpCage        *cage     = ct->cage;
+
+  g_return_if_fail (GIMP_IS_CAGE_TOOL (ct));
+  g_return_if_fail (GIMP_IS_CAGE (cage));
   
   if (display != tool->display)
   {
@@ -267,7 +266,6 @@ gimp_cage_tool_key_press (GimpTool    *tool,
                           GimpDisplay *display)
 {
   GimpCageTool *ct    = GIMP_CAGE_TOOL (tool);
-  GimpCage     *cage  = ct->cage;
   
   switch (kevent->keyval)
     {
@@ -344,7 +342,7 @@ gimp_cage_tool_cursor_update  (GimpTool         *tool,
                                GimpDisplay      *display)
 {
   GimpCageTool    *ct       = GIMP_CAGE_TOOL (tool);
-  GimpCageOptions *options  = GIMP_CAGE_TOOL_GET_OPTIONS (tool);
+  GimpCageOptions *options  = GIMP_CAGE_TOOL_GET_OPTIONS (ct);
 
   if (tool->display == NULL)
   {
@@ -382,14 +380,13 @@ gimp_cage_tool_oper_update  (GimpTool         *tool,
 {
   GimpCageTool *ct          = GIMP_CAGE_TOOL (tool);
   GimpDrawTool *draw_tool   = GIMP_DRAW_TOOL (tool);
-  GimpCage     *cage        = ct->cage;
   
-  gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
+  gimp_draw_tool_pause (draw_tool);
   
   ct->cursor_position.x = coords->x;
   ct->cursor_position.y = coords->y;
   
-  gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+  gimp_draw_tool_resume (draw_tool);
 }
 
 /**
@@ -402,7 +399,6 @@ static void
 gimp_cage_tool_draw (GimpDrawTool *draw_tool)
 {
   GimpCageTool       *ct      = GIMP_CAGE_TOOL (draw_tool);
-  GimpTool           *tool    = GIMP_TOOL (draw_tool);
   GimpCage           *cage    = ct->cage;
   
   gint i = 0;
diff --git a/app/tools/gimpcagetool.h b/app/tools/gimpcagetool.h
index 14f64e5..16ca860 100644
--- a/app/tools/gimpcagetool.h
+++ b/app/tools/gimpcagetool.h
@@ -20,7 +20,7 @@
 #ifndef __GIMP_CAGE_TOOL_H__
 #define __GIMP_CAGE_TOOL_H__
 
-#include "gimptransformtool.h"
+#include "gimpdrawtool.h"
 #include "libgimpmath/gimpvector.h"
 #include "core/gimpcage.h"
 
@@ -39,7 +39,7 @@ typedef struct _GimpCageTool GimpCageTool;
 
 struct _GimpCageTool
 {
-  GimpTransformTool     parent_instance;
+  GimpDrawTool          parent_instance;
   GimpCage             *cage;
   
   GimpVector2           cursor_position;
@@ -50,7 +50,7 @@ struct _GimpCageTool
 
 struct _GimpCageToolClass
 {
-  GimpTransformToolClass parent_class;
+  GimpDrawToolClass     parent_class;
 };
 
 void    gimp_cage_tool_register (GimpToolRegisterCallback  callback,



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