[gimp/soc-2010-cage-2] app: remove the preview node and other unneeded stuff
- From: Michael Muré <mmure src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/soc-2010-cage-2] app: remove the preview node and other unneeded stuff
- Date: Thu, 30 Dec 2010 18:06:53 +0000 (UTC)
commit 9fab44213f059aa9e5759ada53b90ffc2e69ee77
Author: Michael Natterer <mitch gimp org>
Date: Fri Nov 5 19:47:57 2010 +0100
app: remove the preview node and other unneeded stuff
and simplify the code even further.
app/tools/gimpcagetool.c | 155 +++-------------------------------------------
app/tools/gimpcagetool.h | 2 -
2 files changed, 9 insertions(+), 148 deletions(-)
---
diff --git a/app/tools/gimpcagetool.c b/app/tools/gimpcagetool.c
index fe27205..7f011de 100644
--- a/app/tools/gimpcagetool.c
+++ b/app/tools/gimpcagetool.c
@@ -111,18 +111,12 @@ static void gimp_cage_tool_switch_to_deform (GimpCageTool *ct);
static void gimp_cage_tool_remove_last_handle (GimpCageTool *ct);
static void gimp_cage_tool_compute_coef (GimpCageTool *ct,
GimpDisplay *display);
-static void gimp_cage_tool_process (GimpCageTool *ct,
- GimpDisplay *display);
-static void gimp_cage_tool_process_drawable (GimpCageTool *ct,
- GimpDrawable *drawable,
- GimpProgress *progress);
static void gimp_cage_tool_create_image_map (GimpCageTool *ct,
GimpDrawable *drawable);
static void gimp_cage_tool_image_map_flush (GimpImageMap *image_map,
GimpTool *tool);
-static GeglNode * gimp_cage_tool_get_render_node (GimpCageTool *ct,
- GeglNode *parent);
+static GeglNode * gimp_cage_tool_create_render_node (GimpCageTool *ct);
G_DEFINE_TYPE (GimpCageTool, gimp_cage_tool, GIMP_TYPE_DRAW_TOOL)
@@ -178,7 +172,6 @@ gimp_cage_tool_init (GimpCageTool *self)
self->coef = NULL;
self->image_map = NULL;
- self->node_preview = NULL;
}
static void
@@ -689,31 +682,30 @@ gimp_cage_tool_compute_coef (GimpCageTool *ct,
}
static GeglNode *
-gimp_cage_tool_get_render_node (GimpCageTool *ct,
- GeglNode *parent)
+gimp_cage_tool_create_render_node (GimpCageTool *ct)
{
GimpCageOptions *options = GIMP_CAGE_TOOL_GET_OPTIONS (ct);
GeglNode *coef, *cage, *render; /* Render nodes */
GeglNode *input, *output; /* Proxy nodes*/
GeglNode *node; /* wraper to be returned */
- node = gegl_node_new_child (parent, NULL, NULL);
+ node = gegl_node_new ();
input = gegl_node_get_input_proxy (node, "input");
output = gegl_node_get_output_proxy (node, "output");
- coef = gegl_node_new_child (ct->node_preview,
+ coef = gegl_node_new_child (node,
"operation", "gegl:buffer-source",
"buffer", ct->coef,
NULL);
- cage = gegl_node_new_child (parent,
+ cage = gegl_node_new_child (node,
"operation", "gimp:cage-transform",
"config", ct->config,
"fill_plain_color", options->fill_plain_color,
NULL);
- render = gegl_node_new_child (parent,
+ render = gegl_node_new_child (node,
"operation", "gegl:map-absolute",
NULL);
@@ -741,15 +733,7 @@ gimp_cage_tool_create_image_map (GimpCageTool *ct,
{
GeglNode *node;
- if (ct->node_preview)
- {
- g_object_unref (ct->node_preview);
- ct->node_preview = NULL;
- }
-
- ct->node_preview = gegl_node_new ();
-
- node = gimp_cage_tool_get_render_node (ct, ct->node_preview);
+ node = gimp_cage_tool_create_render_node (ct);
ct->image_map = gimp_image_map_new (drawable,
_("Cage transform"),
@@ -757,6 +741,8 @@ gimp_cage_tool_create_image_map (GimpCageTool *ct,
NULL,
NULL);
+ g_object_unref (node);
+
g_signal_connect (ct->image_map, "flush",
G_CALLBACK (gimp_cage_tool_image_map_flush),
ct);
@@ -773,123 +759,6 @@ gimp_cage_tool_image_map_flush (GimpImageMap *image_map,
}
static void
-gimp_cage_tool_process (GimpCageTool *ct,
- GimpDisplay *display)
-{
- GimpImage *image = gimp_display_get_image (display);
- GimpLayer *layer = gimp_image_get_active_layer (image);
- GimpDrawable *drawable = GIMP_DRAWABLE (layer);
- GimpDrawable *mask = GIMP_DRAWABLE (gimp_layer_get_mask (layer));
-
- g_return_if_fail (ct->coef);
-
- if (GIMP_IS_DRAWABLE (drawable))
- {
- GimpProgress *progress;
-
- progress = gimp_progress_start (GIMP_PROGRESS (display),
- _("Rendering cage transform"),
- FALSE);
-
- gimp_cage_tool_process_drawable (ct, drawable, progress);
-
- gimp_progress_end (progress);
-
- if (mask)
- {
- progress = gimp_progress_start (GIMP_PROGRESS (display),
- _("Rendering mask cage transform"),
- FALSE);
- gimp_cage_tool_process_drawable (ct, mask, progress);
-
- gimp_progress_end (progress);
- }
-
- gimp_image_flush (image);
-
- gimp_cage_tool_halt (ct);
- }
-}
-
-static void
-gimp_cage_tool_process_drawable (GimpCageTool *ct,
- GimpDrawable *drawable,
- GimpProgress *progress)
-{
- TileManager *new_tiles = NULL;
- TileManager *old_tiles = NULL;
- GeglRectangle rect;
- GeglProcessor *processor;
- gdouble value;
-
- if (GIMP_IS_DRAWABLE (drawable))
- {
- GeglNode *gegl = gegl_node_new ();
-
- /* reverse transform */
- GeglNode *node, *input, *output;
-
- old_tiles = gimp_drawable_get_tiles (drawable);
-
- input = gegl_node_new_child (gegl,
- "operation", "gimp:tilemanager-source",
- "tile-manager", old_tiles,
- "linear", TRUE,
- NULL);
-
- node = gimp_cage_tool_get_render_node (ct, gegl);
-
- new_tiles = gimp_drawable_get_shadow_tiles (drawable);
- output = gegl_node_new_child (gegl,
- "operation", "gimp:tilemanager-sink",
- "tile-manager", new_tiles,
- "linear", TRUE,
- NULL);
-
- gegl_node_connect_to (input, "output",
- node, "input");
-
- gegl_node_connect_to (node, "output",
- output, "input");
-
- /* Debug code sample for debugging coef calculation.*/
-
- /*
- debug = gegl_node_new_child (gegl,
- "operation", "gegl:debugit",
- NULL);
-
- gegl_node_connect_to (coef, "output",
- debug, "input");
-
- gegl_node_connect_to (debug, "output",
- output, "input");*/
-
-
- processor = gegl_node_new_processor (output, NULL);
-
- while (gegl_processor_work (processor, &value))
- {
- gimp_progress_set_value (progress, value);
- }
-
- rect.x = 0;
- rect.y = 0;
- rect.width = tile_manager_width (new_tiles);
- rect.height = tile_manager_height (new_tiles);
-
- gimp_drawable_merge_shadow_tiles (drawable, TRUE, _("Cage transform"));
- gimp_drawable_free_shadow_tiles (drawable);
-
- gimp_drawable_update (drawable, rect.x, rect.y, rect.width, rect.height);
-
- g_object_unref (gegl);
-
- gegl_processor_destroy (processor);
- }
-}
-
-static void
gimp_cage_tool_halt (GimpCageTool *ct)
{
GimpTool *tool = GIMP_TOOL (ct);
@@ -926,11 +795,5 @@ gimp_cage_tool_halt (GimpCageTool *ct)
gimp_image_flush (gimp_display_get_image (tool->display));
}
- if (ct->node_preview)
- {
- g_object_unref (ct->node_preview);
- ct->node_preview = NULL;
- }
-
tool->display = NULL;
}
diff --git a/app/tools/gimpcagetool.h b/app/tools/gimpcagetool.h
index 05785e7..4e2909f 100644
--- a/app/tools/gimpcagetool.h
+++ b/app/tools/gimpcagetool.h
@@ -51,8 +51,6 @@ struct _GimpCageTool
GeglBuffer *coef;
GimpImageMap *image_map;
-
- GeglNode *node_preview;
};
struct _GimpCageToolClass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]