gimp r27579 - in trunk: . app/core app/pdb app/xcf libgimp plug-ins/file-xjt tools/pdbgen/pdb



Author: mitch
Date: Sun Nov  9 16:49:37 2008
New Revision: 27579
URL: http://svn.gnome.org/viewvc/gimp?rev=27579&view=rev

Log:
2008-11-09  Michael Natterer  <mitch gimp org>

	Bye bye floating_sel_rigor() and floating_sel_relax():

	* app/core/gimpdrawable.[ch] (gimp_drawable_init_src_region):
	implement compositing the floating selection on the fly. Add
	return parameter "TileManager **temp_tiles" which returns the temp
	buffer used for compositing; the caller has to unref the tiles.

	* app/core/gimpchannel-project.c
	* app/core/gimplayer-project.c: unref the temp_tiles.

	* app/core/gimplayer.[ch]: remove members fs.backing_store and
	fs.initial.

	* app/core/gimplayer-floating-sel.[ch]: remove functions rigor(),
	relax(), store() and restore(), they are not needed any longer.
	Some minor cleanup, more to come.

	* app/core/gimpprojection-construct.c: don't composite the
	floating selection before projecting because that happens on the
	fly now.

	* app/core/core-enums.[ch]
	* app/core/gimpfloatingselundo.c
	* app/core/gimpimage-undo-push.[ch]: remove the rigor and relax
	undos.

	* app/core/gimpdrawable.c
	* app/core/gimpimage-convert.c
	* app/core/gimpimage-duplicate.c
	* app/core/gimpimage.c
	* app/core/gimplayer.c
	* app/xcf/xcf-save.c: remove all calls to rigor and relax and all
	implementations of virtual functions that were just there to
	rigor/releax around chaining up.

	* tools/pdbgen/pdb/floating_sel.pdb: remove all code from the
	rigor and relax wrappers and deprecate the API.

	* app/pdb/floating-sel-cmds.c
	* libgimp/gimpfloatingsel_pdb.[ch]: regenerated.

	* plug-ins/file-xjt/xjt.c: don't call rigor and relax.



Modified:
   trunk/ChangeLog
   trunk/app/core/core-enums.c
   trunk/app/core/core-enums.h
   trunk/app/core/gimpchannel-project.c
   trunk/app/core/gimpdrawable.c
   trunk/app/core/gimpdrawable.h
   trunk/app/core/gimpfloatingselundo.c
   trunk/app/core/gimpimage-convert.c
   trunk/app/core/gimpimage-duplicate.c
   trunk/app/core/gimpimage-undo-push.c
   trunk/app/core/gimpimage-undo-push.h
   trunk/app/core/gimpimage.c
   trunk/app/core/gimplayer-floating-sel.c
   trunk/app/core/gimplayer-floating-sel.h
   trunk/app/core/gimplayer-project.c
   trunk/app/core/gimplayer.c
   trunk/app/core/gimplayer.h
   trunk/app/core/gimpprojection-construct.c
   trunk/app/pdb/floating-sel-cmds.c
   trunk/app/xcf/xcf-save.c
   trunk/libgimp/gimpfloatingsel_pdb.c
   trunk/libgimp/gimpfloatingsel_pdb.h
   trunk/plug-ins/file-xjt/xjt.c
   trunk/tools/pdbgen/pdb/floating_sel.pdb

Modified: trunk/app/core/core-enums.c
==============================================================================
--- trunk/app/core/core-enums.c	(original)
+++ trunk/app/core/core-enums.c	Sun Nov  9 16:49:37 2008
@@ -855,8 +855,6 @@
     { GIMP_UNDO_VECTORS_MOD, "GIMP_UNDO_VECTORS_MOD", "vectors-mod" },
     { GIMP_UNDO_VECTORS_REPOSITION, "GIMP_UNDO_VECTORS_REPOSITION", "vectors-reposition" },
     { GIMP_UNDO_FS_TO_LAYER, "GIMP_UNDO_FS_TO_LAYER", "fs-to-layer" },
-    { GIMP_UNDO_FS_RIGOR, "GIMP_UNDO_FS_RIGOR", "fs-rigor" },
-    { GIMP_UNDO_FS_RELAX, "GIMP_UNDO_FS_RELAX", "fs-relax" },
     { GIMP_UNDO_TRANSFORM, "GIMP_UNDO_TRANSFORM", "transform" },
     { GIMP_UNDO_PAINT, "GIMP_UNDO_PAINT", "paint" },
     { GIMP_UNDO_INK, "GIMP_UNDO_INK", "ink" },
@@ -943,8 +941,6 @@
     { GIMP_UNDO_VECTORS_MOD, NC_("undo-type", "Path modification"), NULL },
     { GIMP_UNDO_VECTORS_REPOSITION, NC_("undo-type", "Reposition path"), NULL },
     { GIMP_UNDO_FS_TO_LAYER, NC_("undo-type", "Floating selection to layer"), NULL },
-    { GIMP_UNDO_FS_RIGOR, NC_("undo-type", "Rigor floating selection"), NULL },
-    { GIMP_UNDO_FS_RELAX, NC_("undo-type", "Relax floating selection"), NULL },
     { GIMP_UNDO_TRANSFORM, NC_("undo-type", "Transform"), NULL },
     { GIMP_UNDO_PAINT, NC_("undo-type", "Paint"), NULL },
     { GIMP_UNDO_INK, NC_("undo-type", "Ink"), NULL },

Modified: trunk/app/core/core-enums.h
==============================================================================
--- trunk/app/core/core-enums.h	(original)
+++ trunk/app/core/core-enums.h	Sun Nov  9 16:49:37 2008
@@ -437,8 +437,6 @@
   GIMP_UNDO_VECTORS_MOD,              /*< desc="Path modification"           >*/
   GIMP_UNDO_VECTORS_REPOSITION,       /*< desc="Reposition path"             >*/
   GIMP_UNDO_FS_TO_LAYER,              /*< desc="Floating selection to layer" >*/
-  GIMP_UNDO_FS_RIGOR,                 /*< desc="Rigor floating selection"    >*/
-  GIMP_UNDO_FS_RELAX,                 /*< desc="Relax floating selection"    >*/
   GIMP_UNDO_TRANSFORM,                /*< desc="Transform"                   >*/
   GIMP_UNDO_PAINT,                    /*< desc="Paint"                       >*/
   GIMP_UNDO_INK,                      /*< desc="Ink"                         >*/

Modified: trunk/app/core/gimpchannel-project.c
==============================================================================
--- trunk/app/core/gimpchannel-project.c	(original)
+++ trunk/app/core/gimpchannel-project.c	Sun Nov  9 16:49:37 2008
@@ -27,6 +27,7 @@
 #include "core-types.h"
 
 #include "base/pixel-region.h"
+#include "base/tile-manager.h"
 
 #include "paint-funcs/paint-funcs.h"
 
@@ -45,6 +46,7 @@
 {
   GimpChannel *channel = GIMP_CHANNEL (drawable);
   PixelRegion  srcPR;
+  TileManager *temp_tiles;
   guchar       col[3];
   guchar       opacity;
 
@@ -52,7 +54,8 @@
                        &col[0], &col[1], &col[2], &opacity);
 
   gimp_drawable_init_src_region (drawable, &srcPR,
-                                 x, y, width, height);
+                                 x, y, width, height,
+                                 &temp_tiles);
 
   if (combine)
     {
@@ -74,4 +77,7 @@
                        INITIAL_CHANNEL_MASK :
                        INITIAL_CHANNEL_SELECTION));
     }
+
+  if (temp_tiles)
+    tile_manager_unref (temp_tiles);
 }

Modified: trunk/app/core/gimpdrawable.c
==============================================================================
--- trunk/app/core/gimpdrawable.c	(original)
+++ trunk/app/core/gimpdrawable.c	Sun Nov  9 16:49:37 2008
@@ -79,10 +79,6 @@
 static void       gimp_drawable_visibility_changed (GimpItem          *item);
 static GimpItem * gimp_drawable_duplicate          (GimpItem          *item,
                                                     GType              new_type);
-static void       gimp_drawable_translate          (GimpItem          *item,
-                                                    gint               offset_x,
-                                                    gint               offset_y,
-                                                    gboolean           push_undo);
 static void       gimp_drawable_scale              (GimpItem          *item,
                                                     gint               new_width,
                                                     gint               new_height,
@@ -207,7 +203,6 @@
   item_class->removed                = gimp_drawable_removed;
   item_class->visibility_changed     = gimp_drawable_visibility_changed;
   item_class->duplicate              = gimp_drawable_duplicate;
-  item_class->translate              = gimp_drawable_translate;
   item_class->scale                  = gimp_drawable_scale;
   item_class->resize                 = gimp_drawable_resize;
   item_class->flip                   = gimp_drawable_flip;
@@ -411,25 +406,6 @@
 }
 
 static void
-gimp_drawable_translate (GimpItem *item,
-                         gint      offset_x,
-                         gint      offset_y,
-                         gboolean  push_undo)
-{
-  GimpDrawable *drawable = GIMP_DRAWABLE (item);
-  GimpImage    *image    = gimp_item_get_image (item);
-
-  if (gimp_drawable_has_floating_sel (drawable))
-    floating_sel_relax (gimp_image_floating_sel (image), FALSE);
-
-  GIMP_ITEM_CLASS (parent_class)->translate (item, offset_x, offset_y,
-                                             push_undo);
-
-  if (gimp_drawable_has_floating_sel (drawable))
-    floating_sel_rigor (gimp_image_floating_sel (image), FALSE);
-}
-
-static void
 gimp_drawable_scale (GimpItem              *item,
                      gint                   new_width,
                      gint                   new_height,
@@ -1059,32 +1035,111 @@
 }
 
 void
-gimp_drawable_init_src_region (GimpDrawable *drawable,
-                               PixelRegion  *srcPR,
-                               gint          x,
-                               gint          y,
-                               gint          width,
-                               gint          height)
+gimp_drawable_init_src_region (GimpDrawable  *drawable,
+                               PixelRegion   *srcPR,
+                               gint           x,
+                               gint           y,
+                               gint           width,
+                               gint           height,
+                               TileManager  **temp_tiles)
 {
   g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
   g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)));
   g_return_if_fail (srcPR != NULL);
+  g_return_if_fail (temp_tiles != NULL);
 
   if (gimp_drawable_has_floating_sel (drawable))
     {
-      /*  FIXME: return the composite of the layer and the floating
-       *  selection.
-       */
-      pixel_region_init (srcPR, gimp_drawable_get_tiles (drawable),
-                         x, y, width, height,
-                         FALSE);
-    }
-  else
-    {
-      pixel_region_init (srcPR, gimp_drawable_get_tiles (drawable),
-                         x, y, width, height,
-                         FALSE);
+      GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable));
+      GimpLayer *fs    = gimp_image_floating_sel (image);
+      gint       off_x, off_y;
+      gint       fs_off_x, fs_off_y;
+      gint       combine_x, combine_y;
+      gint       combine_width, combine_height;
+
+      gimp_item_get_offset (GIMP_ITEM (drawable), &off_x, &off_y);
+      gimp_item_get_offset (GIMP_ITEM (fs), &fs_off_x, &fs_off_y);
+
+      if (gimp_item_get_visible (GIMP_ITEM (fs)) &&
+          gimp_rectangle_intersect (x + off_x, y + off_y,
+                                    width, height,
+                                    fs_off_x, fs_off_y,
+                                    gimp_item_get_width  (GIMP_ITEM (fs)),
+                                    gimp_item_get_height (GIMP_ITEM (fs)),
+                                    &combine_x, &combine_y,
+                                    &combine_width, &combine_height))
+        {
+          PixelRegion tempPR;
+          PixelRegion destPR;
+          PixelRegion fsPR;
+          gboolean    lock_alpha = FALSE;
+
+          /*  a temporary buffer for the compisition of the drawable and
+           *  its floating selection
+           */
+          *temp_tiles = tile_manager_new (width, height,
+                                          gimp_drawable_bytes (drawable));
+
+          /*  first, initialize the entire buffer with the drawable's
+           *  contents
+           */
+          pixel_region_init (&tempPR, gimp_drawable_get_tiles (drawable),
+                             x, y, width, height,
+                             FALSE);
+          pixel_region_init (&destPR, *temp_tiles,
+                             0, 0, width, height,
+                             TRUE);
+          copy_region (&tempPR, &destPR);
+
+          /*  then, apply the floating selection onto the buffer just as
+           *  we apply it onto the drawable when anchoring the floating
+           *  selection
+           */
+          pixel_region_init (&fsPR,
+                             gimp_drawable_get_tiles (GIMP_DRAWABLE (fs)),
+                             combine_x - fs_off_x,
+                             combine_y - fs_off_y,
+                             combine_width, combine_height,
+                             FALSE);
+          pixel_region_init (&destPR, *temp_tiles,
+                             combine_x - x - off_x, combine_y - y - off_y,
+                             combine_width, combine_height,
+                             TRUE);
+
+          if (GIMP_IS_LAYER (drawable))
+            {
+              lock_alpha = gimp_layer_get_lock_alpha (GIMP_LAYER (drawable));
+
+              if (lock_alpha)
+                gimp_layer_set_lock_alpha (GIMP_LAYER (drawable), FALSE, FALSE);
+            }
+
+          gimp_drawable_apply_region (drawable, &fsPR,
+                                      FALSE, NULL,
+                                      gimp_layer_get_opacity (fs),
+                                      gimp_layer_get_mode (fs),
+                                      NULL, &destPR,
+                                      combine_x - off_y,
+                                      combine_y - off_y);
+
+          if (lock_alpha)
+            gimp_layer_set_lock_alpha (GIMP_LAYER (drawable), TRUE, FALSE);
+
+          /*  finally, return a PixelRegion on the composited buffer instead
+           *  of the drawable's tiles
+           */
+          pixel_region_init (srcPR, *temp_tiles,
+                             0, 0, width, height,
+                             FALSE);
+
+          return;
+       }
     }
+
+  pixel_region_init (srcPR, gimp_drawable_get_tiles (drawable),
+                     x, y, width, height,
+                     FALSE);
+  *temp_tiles = NULL;
 }
 
 TileManager *
@@ -1149,17 +1204,11 @@
                             gimp_item_get_height (item));
     }
 
-  if (gimp_drawable_has_floating_sel (drawable))
-    floating_sel_relax (gimp_image_floating_sel (image), FALSE);
-
   GIMP_DRAWABLE_GET_CLASS (drawable)->set_tiles (drawable,
                                                  push_undo, undo_desc,
                                                  tiles, type,
                                                  offset_x, offset_y);
 
-  if (gimp_drawable_has_floating_sel (drawable))
-    floating_sel_rigor (gimp_image_floating_sel (image), FALSE);
-
   gimp_drawable_update (drawable,
                         0, 0,
                         gimp_item_get_width  (item),

Modified: trunk/app/core/gimpdrawable.h
==============================================================================
--- trunk/app/core/gimpdrawable.h	(original)
+++ trunk/app/core/gimpdrawable.h	Sun Nov  9 16:49:37 2008
@@ -179,7 +179,8 @@
                                                   gint                x,
                                                   gint                y,
                                                   gint                width,
-                                                  gint                height);
+                                                  gint                height,
+                                                  TileManager       **temp_tiles);
 
 TileManager   * gimp_drawable_get_tiles          (GimpDrawable       *drawable);
 void            gimp_drawable_set_tiles          (GimpDrawable       *drawable,

Modified: trunk/app/core/gimpfloatingselundo.c
==============================================================================
--- trunk/app/core/gimpfloatingselundo.c	(original)
+++ trunk/app/core/gimpfloatingselundo.c	Sun Nov  9 16:49:37 2008
@@ -37,8 +37,6 @@
 static void      gimp_floating_sel_undo_pop         (GimpUndo              *undo,
                                                      GimpUndoMode           undo_mode,
                                                      GimpUndoAccumulator   *accum);
-static void      gimp_floating_sel_undo_free        (GimpUndo              *undo,
-                                                     GimpUndoMode           undo_mode);
 
 
 G_DEFINE_TYPE (GimpFloatingSelUndo, gimp_floating_sel_undo, GIMP_TYPE_ITEM_UNDO)
@@ -55,7 +53,6 @@
   object_class->constructor = gimp_floating_sel_undo_constructor;
 
   undo_class->pop           = gimp_floating_sel_undo_pop;
-  undo_class->free          = gimp_floating_sel_undo_free;
 }
 
 static void
@@ -82,10 +79,6 @@
 
   switch (GIMP_UNDO (object)->undo_type)
     {
-    case GIMP_UNDO_FS_RIGOR:
-    case GIMP_UNDO_FS_RELAX:
-      break;
-
     case GIMP_UNDO_FS_TO_LAYER:
       floating_sel_undo->drawable = layer->fs.drawable;
       break;
@@ -109,24 +102,6 @@
 
   switch (undo->undo_type)
     {
-    case GIMP_UNDO_FS_RIGOR:
-    case GIMP_UNDO_FS_RELAX:
-      if (! gimp_layer_is_floating_sel (floating_layer))
-        return;
-
-      if ((undo_mode       == GIMP_UNDO_MODE_UNDO &&
-           undo->undo_type == GIMP_UNDO_FS_RIGOR) ||
-          (undo_mode       == GIMP_UNDO_MODE_REDO &&
-           undo->undo_type == GIMP_UNDO_FS_RELAX))
-        {
-          floating_sel_relax (floating_layer, FALSE);
-        }
-      else
-        {
-          floating_sel_rigor (floating_layer, FALSE);
-        }
-      break;
-
     case GIMP_UNDO_FS_TO_LAYER:
       if (undo_mode == GIMP_UNDO_MODE_UNDO)
         {
@@ -137,26 +112,11 @@
           gimp_image_set_active_layer (undo->image, floating_layer);
           undo->image->floating_sel = floating_layer;
 
-          /*  store the contents of the drawable  */
-          floating_sel_store (floating_layer,
-                              GIMP_ITEM (floating_layer)->offset_x,
-                              GIMP_ITEM (floating_layer)->offset_y,
-                              gimp_item_get_width  (GIMP_ITEM (floating_layer)),
-                              gimp_item_get_height (GIMP_ITEM (floating_layer)));
-          floating_layer->fs.initial = TRUE;
-
           /*  clear the selection  */
           gimp_drawable_invalidate_boundary (GIMP_DRAWABLE (floating_layer));
         }
       else
         {
-          /*  restore the contents of the drawable  */
-          floating_sel_restore (floating_layer,
-                                GIMP_ITEM (floating_layer)->offset_x,
-                                GIMP_ITEM (floating_layer)->offset_y,
-                                gimp_item_get_width  (GIMP_ITEM (floating_layer)),
-                                gimp_item_get_height (GIMP_ITEM (floating_layer)));
-
           /*  Update the preview for the underlying drawable  */
           gimp_viewable_invalidate_preview (GIMP_VIEWABLE (floating_layer));
 
@@ -182,19 +142,3 @@
       g_assert_not_reached ();
     }
 }
-
-static void
-gimp_floating_sel_undo_free (GimpUndo     *undo,
-                             GimpUndoMode  undo_mode)
-{
-  GimpLayer *floating_layer = GIMP_LAYER (GIMP_ITEM_UNDO (undo)->item);
-
-  if (undo->undo_type == GIMP_UNDO_FS_TO_LAYER &&
-      undo_mode       == GIMP_UNDO_MODE_UNDO)
-    {
-      tile_manager_unref (floating_layer->fs.backing_store);
-      floating_layer->fs.backing_store = NULL;
-    }
-
-  GIMP_UNDO_CLASS (parent_class)->free (undo, undo_mode);
-}

Modified: trunk/app/core/gimpimage-convert.c
==============================================================================
--- trunk/app/core/gimpimage-convert.c	(original)
+++ trunk/app/core/gimpimage-convert.c	Sun Nov  9 16:49:37 2008
@@ -820,9 +820,6 @@
   gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_IMAGE_CONVERT,
                                undo_desc);
 
-  if (gimp_image_floating_sel (image))
-    floating_sel_relax (gimp_image_floating_sel (image), TRUE);
-
   /*  Push the image type to the stack  */
   gimp_image_undo_push_image_type (image, NULL);
 
@@ -1070,9 +1067,6 @@
   if (quantobj)
     quantobj->delete_func (quantobj);
 
-  if (gimp_image_floating_sel (image))
-    floating_sel_rigor (gimp_image_floating_sel (image), TRUE);
-
   gimp_image_undo_group_end (image);
 
   gimp_image_mode_changed (image);

Modified: trunk/app/core/gimpimage-duplicate.c
==============================================================================
--- trunk/app/core/gimpimage-duplicate.c	(original)
+++ trunk/app/core/gimpimage-duplicate.c	Sun Nov  9 16:49:37 2008
@@ -97,8 +97,6 @@
   floating_layer = gimp_image_floating_sel (image);
   if (floating_layer)
     {
-      floating_sel_relax (floating_layer, FALSE);
-
       floating_sel_drawable = floating_layer->fs.drawable;
       floating_layer = NULL;
     }

Modified: trunk/app/core/gimpimage-undo-push.c
==============================================================================
--- trunk/app/core/gimpimage-undo-push.c	(original)
+++ trunk/app/core/gimpimage-undo-push.c	Sun Nov  9 16:49:37 2008
@@ -807,45 +807,9 @@
                                "item", floating_layer,
                                NULL);
 
-  if (! undo)
-    {
-      tile_manager_unref (floating_layer->fs.backing_store);
-      floating_layer->fs.backing_store = NULL;
-    }
-
   return undo;
 }
 
-GimpUndo *
-gimp_image_undo_push_fs_rigor (GimpImage    *image,
-                               const gchar  *undo_desc,
-                               GimpLayer    *floating_layer)
-{
-  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
-  g_return_val_if_fail (GIMP_IS_LAYER (floating_layer), NULL);
-
-  return gimp_image_undo_push (image, GIMP_TYPE_FLOATING_SEL_UNDO,
-                               GIMP_UNDO_FS_RIGOR, undo_desc,
-                               GIMP_DIRTY_NONE,
-                               "item", floating_layer,
-                               NULL);
-}
-
-GimpUndo *
-gimp_image_undo_push_fs_relax (GimpImage   *image,
-                               const gchar *undo_desc,
-                               GimpLayer   *floating_layer)
-{
-  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
-  g_return_val_if_fail (GIMP_IS_LAYER (floating_layer), NULL);
-
-  return gimp_image_undo_push (image, GIMP_TYPE_FLOATING_SEL_UNDO,
-                               GIMP_UNDO_FS_RELAX, undo_desc,
-                               GIMP_DIRTY_NONE,
-                               "item", floating_layer,
-                               NULL);
-}
-
 
 /******************************************************************************/
 /*  Something for which programmer is too lazy to write an undo function for  */

Modified: trunk/app/core/gimpimage-undo-push.h
==============================================================================
--- trunk/app/core/gimpimage-undo-push.h	(original)
+++ trunk/app/core/gimpimage-undo-push.h	Sun Nov  9 16:49:37 2008
@@ -200,12 +200,6 @@
 GimpUndo * gimp_image_undo_push_fs_to_layer         (GimpImage     *image,
                                                      const gchar   *undo_desc,
                                                      GimpLayer     *floating_layer);
-GimpUndo * gimp_image_undo_push_fs_rigor            (GimpImage     *image,
-                                                     const gchar   *undo_desc,
-                                                     GimpLayer     *floating_layer);
-GimpUndo * gimp_image_undo_push_fs_relax            (GimpImage     *image,
-                                                     const gchar   *undo_desc,
-                                                     GimpLayer     *floating_layer);
 
 
 /*  EEK undo  */

Modified: trunk/app/core/gimpimage.c
==============================================================================
--- trunk/app/core/gimpimage.c	(original)
+++ trunk/app/core/gimpimage.c	Sun Nov  9 16:49:37 2008
@@ -1665,19 +1665,13 @@
     {
       GimpLayer *floating_sel = gimp_image_floating_sel (image);
 
-      if (floating_sel)
-        floating_sel_relax (floating_sel, FALSE);
-
       image->active[index] = active ? TRUE : FALSE;
 
       if (floating_sel)
-        {
-          floating_sel_rigor (floating_sel, FALSE);
-          gimp_drawable_update (GIMP_DRAWABLE (floating_sel),
-                                0, 0,
-                                gimp_item_get_width  (GIMP_ITEM (floating_sel)),
-                                gimp_item_get_height (GIMP_ITEM (floating_sel)));
-        }
+        gimp_drawable_update (GIMP_DRAWABLE (floating_sel),
+                              0, 0,
+                              gimp_item_get_width  (GIMP_ITEM (floating_sel)),
+                              gimp_item_get_height (GIMP_ITEM (floating_sel)));
 
       /*  If there is an active channel and we mess with the components,
        *  the active channel gets unset...

Modified: trunk/app/core/gimplayer-floating-sel.c
==============================================================================
--- trunk/app/core/gimplayer-floating-sel.c	(original)
+++ trunk/app/core/gimplayer-floating-sel.c	Sun Nov  9 16:49:37 2008
@@ -73,16 +73,10 @@
 
   /*  set the drawable and allocate a backing store  */
   gimp_layer_set_lock_alpha (layer, TRUE, FALSE);
-  layer->fs.drawable      = drawable;
-  layer->fs.backing_store = tile_manager_new (gimp_item_get_width  (GIMP_ITEM (layer)),
-                                              gimp_item_get_height (GIMP_ITEM (layer)),
-                                              gimp_drawable_bytes (drawable));
+  layer->fs.drawable = drawable;
 
   /*  add the layer to the image  */
   gimp_image_add_layer (image, layer, 0, TRUE);
-
-  /*  store the affected area from the drawable in the backing store  */
-  floating_sel_rigor (layer, TRUE);
 }
 
 void
@@ -98,9 +92,6 @@
   gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_FS_REMOVE,
                                _("Remove Floating Selection"));
 
-  /*  restore the affected area in the drawable from the backing store  */
-  floating_sel_relax (layer, TRUE);
-
   /*  Invalidate the preview of the obscured drawable.  We do this here
    *  because it will not be done until the floating selection is removed,
    *  at which point the obscured drawable's preview will not be declared
@@ -134,9 +125,6 @@
    */
   gimp_viewable_invalidate_preview (GIMP_VIEWABLE (layer->fs.drawable));
 
-  /*  Relax the floating selection  */
-  floating_sel_relax (layer, TRUE);
-
   /*  Composite the floating selection contents  */
   floating_sel_composite (layer,
                           GIMP_ITEM (layer)->offset_x,
@@ -211,20 +199,13 @@
   gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_FS_TO_LAYER,
                                _("Floating Selection to Layer"));
 
-  /*  restore the contents of the drawable  */
-  floating_sel_restore (layer,
-                        item->offset_x,
-                        item->offset_y,
-                        gimp_item_get_width  (item),
-                        gimp_item_get_height (item));
-
   gimp_image_undo_push_fs_to_layer (image, NULL, layer);
 
   /*  clear the selection  */
   gimp_drawable_invalidate_boundary (GIMP_DRAWABLE (layer));
 
   /*  Set pointers  */
-  layer->fs.drawable   = NULL;
+  layer->fs.drawable  = NULL;
   image->floating_sel = NULL;
 
   gimp_item_set_visible (item, TRUE, TRUE);
@@ -245,162 +226,6 @@
 }
 
 void
-floating_sel_store (GimpLayer *layer,
-                    gint       x,
-                    gint       y,
-                    gint       w,
-                    gint       h)
-{
-  PixelRegion srcPR, destPR;
-  gint        offx, offy;
-  gint        x1, y1, x2, y2;
-
-  g_return_if_fail (GIMP_IS_LAYER (layer));
-  g_return_if_fail (gimp_layer_is_floating_sel (layer));
-
-  /*  Check the backing store & make sure it has the correct dimensions  */
-  if ((tile_manager_width  (layer->fs.backing_store) !=
-       gimp_item_get_width (GIMP_ITEM(layer)))  ||
-      (tile_manager_height (layer->fs.backing_store) !=
-       gimp_item_get_height (GIMP_ITEM(layer))) ||
-      (tile_manager_bpp    (layer->fs.backing_store) !=
-       gimp_drawable_bytes (layer->fs.drawable)))
-    {
-      /*  free the backing store and allocate anew  */
-      tile_manager_unref (layer->fs.backing_store);
-
-      layer->fs.backing_store =
-        tile_manager_new (gimp_item_get_width  (GIMP_ITEM (layer)),
-                          gimp_item_get_height (GIMP_ITEM (layer)),
-                          gimp_drawable_bytes (layer->fs.drawable));
-    }
-
-  /*  What this function does is save the specified area of the
-   *  drawable that this floating selection obscures.  We do this so
-   *  that it will be possible to subsequently restore the drawable's area
-   */
-  gimp_item_get_offset (GIMP_ITEM (layer->fs.drawable), &offx, &offy);
-
-  /*  Find the minimum area we need to uncover -- in image space  */
-  x1 = MAX (GIMP_ITEM (layer)->offset_x, offx);
-  y1 = MAX (GIMP_ITEM (layer)->offset_y, offy);
-  x2 = MIN (GIMP_ITEM (layer)->offset_x + gimp_item_get_width (GIMP_ITEM (layer)),
-            offx + gimp_item_get_width (GIMP_ITEM (layer->fs.drawable)));
-  y2 = MIN (GIMP_ITEM (layer)->offset_y + gimp_item_get_height (GIMP_ITEM (layer)),
-            offy + gimp_item_get_height (GIMP_ITEM (layer->fs.drawable)));
-
-  x1 = CLAMP (x, x1, x2);
-  y1 = CLAMP (y, y1, y2);
-  x2 = CLAMP (x + w, x1, x2);
-  y2 = CLAMP (y + h, y1, y2);
-
-  if ((x2 - x1) > 0 && (y2 - y1) > 0)
-    {
-      /*  Copy the area from the drawable to the backing store  */
-      pixel_region_init (&srcPR, gimp_drawable_get_tiles (layer->fs.drawable),
-                         (x1 - offx), (y1 - offy), (x2 - x1), (y2 - y1), FALSE);
-      pixel_region_init (&destPR, layer->fs.backing_store,
-                         (x1 - GIMP_ITEM (layer)->offset_x),
-                         (y1 - GIMP_ITEM (layer)->offset_y),
-                         (x2 - x1), (y2 - y1), TRUE);
-
-      copy_region (&srcPR, &destPR);
-    }
-}
-
-void
-floating_sel_restore (GimpLayer *layer,
-                      gint       x,
-                      gint       y,
-                      gint       w,
-                      gint       h)
-{
-  PixelRegion srcPR, destPR;
-  gint        offx, offy;
-  gint        x1, y1, x2, y2;
-
-  g_return_if_fail (GIMP_IS_LAYER (layer));
-  g_return_if_fail (gimp_layer_is_floating_sel (layer));
-
-  /*  What this function does is "uncover" the specified area in the
-   *  drawable that this floating selection obscures.  We do this so
-   *  that either the floating selection can be removed or it can be
-   *  translated
-   */
-
-  /*  Find the minimum area we need to uncover -- in image space  */
-  gimp_item_get_offset (GIMP_ITEM (layer->fs.drawable), &offx, &offy);
-
-  x1 = MAX (GIMP_ITEM (layer)->offset_x, offx);
-  y1 = MAX (GIMP_ITEM (layer)->offset_y, offy);
-  x2 = MIN (GIMP_ITEM (layer)->offset_x + gimp_item_get_width (GIMP_ITEM (layer)),
-            offx + gimp_item_get_width  (GIMP_ITEM (layer->fs.drawable)));
-  y2 = MIN (GIMP_ITEM (layer)->offset_y + gimp_item_get_height (GIMP_ITEM (layer)),
-            offy + gimp_item_get_height (GIMP_ITEM (layer->fs.drawable)));
-
-  x1 = CLAMP (x, x1, x2);
-  y1 = CLAMP (y, y1, y2);
-  x2 = CLAMP (x + w, x1, x2);
-  y2 = CLAMP (y + h, y1, y2);
-
-  if ((x2 - x1) > 0 && (y2 - y1) > 0)
-    {
-      /*  Copy the area from the backing store to the drawable  */
-      pixel_region_init (&srcPR, layer->fs.backing_store,
-                         (x1 - GIMP_ITEM (layer)->offset_x),
-                         (y1 - GIMP_ITEM (layer)->offset_y),
-                         (x2 - x1), (y2 - y1), FALSE);
-      pixel_region_init (&destPR, gimp_drawable_get_tiles (layer->fs.drawable),
-                         (x1 - offx), (y1 - offy), (x2 - x1), (y2 - y1), TRUE);
-
-      copy_region (&srcPR, &destPR);
-    }
-}
-
-void
-floating_sel_rigor (GimpLayer *layer,
-                    gboolean   push_undo)
-{
-  g_return_if_fail (GIMP_IS_LAYER (layer));
-  g_return_if_fail (gimp_layer_is_floating_sel (layer));
-
-  /*  store the affected area from the drawable in the backing store  */
-  floating_sel_store (layer,
-                      GIMP_ITEM (layer)->offset_x,
-                      GIMP_ITEM (layer)->offset_y,
-                      gimp_item_get_width  (GIMP_ITEM (layer)),
-                      gimp_item_get_height (GIMP_ITEM (layer)));
-  layer->fs.initial = TRUE;
-
-  if (push_undo)
-    gimp_image_undo_push_fs_rigor (gimp_item_get_image (GIMP_ITEM (layer)),
-                                   NULL,
-                                   layer);
-}
-
-void
-floating_sel_relax (GimpLayer *layer,
-                    gboolean   push_undo)
-{
-  g_return_if_fail (GIMP_IS_LAYER (layer));
-  g_return_if_fail (gimp_layer_is_floating_sel (layer));
-
-  /*  restore the contents of drawable the floating layer is attached to  */
-  if (layer->fs.initial == FALSE)
-    floating_sel_restore (layer,
-                          GIMP_ITEM (layer)->offset_x,
-                          GIMP_ITEM (layer)->offset_y,
-                          gimp_item_get_width  (GIMP_ITEM (layer)),
-                          gimp_item_get_height (GIMP_ITEM (layer)));
-  layer->fs.initial = TRUE;
-
-  if (push_undo)
-    gimp_image_undo_push_fs_relax (gimp_item_get_image (GIMP_ITEM (layer)),
-                                   NULL,
-                                   layer);
-}
-
-void
 floating_sel_composite (GimpLayer *layer,
                         gint       x,
                         gint       y,
@@ -421,14 +246,6 @@
    *  is constructed, before any other composition takes place.
    */
 
-  /*  If this isn't the first composite,
-   *  restore the image underneath
-   */
-  if (! layer->fs.initial)
-    floating_sel_restore (layer, x, y, w, h);
-  else if (gimp_item_get_visible (GIMP_ITEM (layer)))
-    layer->fs.initial = FALSE;
-
   /*  First restore what's behind the image if necessary,
    *  then check for visibility
    */
@@ -457,8 +274,8 @@
       if ((x2 - x1) > 0 && (y2 - y1) > 0)
         {
           PixelRegion  fsPR;
-          GimpLayer   *d_layer = NULL;
-          gboolean     lock_alpha;
+          GimpLayer   *d_layer    = NULL;
+          gboolean     lock_alpha = FALSE;
 
           /*  composite the area from the layer to the drawable  */
           pixel_region_init (&fsPR,
@@ -474,11 +291,12 @@
           if (GIMP_IS_LAYER (layer->fs.drawable))
             {
               d_layer = GIMP_LAYER (layer->fs.drawable);
-              if ((lock_alpha = gimp_layer_get_lock_alpha (d_layer)))
+
+              lock_alpha = gimp_layer_get_lock_alpha (d_layer);
+
+              if (lock_alpha)
                 gimp_layer_set_lock_alpha (d_layer, FALSE, FALSE);
             }
-          else
-            lock_alpha = FALSE;
 
           /*  apply the fs with the undo specified by the value
            *  passed to this function
@@ -488,7 +306,7 @@
                                       gimp_layer_get_opacity (layer),
                                       gimp_layer_get_mode (layer),
                                       NULL, NULL,
-                                      (x1 - offx), (y1 - offy));
+                                      x1 - offx, y1 - offy);
 
           /*  restore lock alpha  */
           if (lock_alpha)

Modified: trunk/app/core/gimplayer-floating-sel.h
==============================================================================
--- trunk/app/core/gimplayer-floating-sel.h	(original)
+++ trunk/app/core/gimplayer-floating-sel.h	Sun Nov  9 16:49:37 2008
@@ -27,20 +27,6 @@
 void             floating_sel_activate_drawable (GimpLayer     *layer);
 gboolean         floating_sel_to_layer          (GimpLayer     *layer,
                                                  GError       **error);
-void             floating_sel_store             (GimpLayer     *layer,
-                                                 gint           x,
-                                                 gint           y,
-                                                 gint           w,
-                                                 gint           h);
-void             floating_sel_restore           (GimpLayer     *layer,
-                                                 gint           x,
-                                                 gint           y,
-                                                 gint           w,
-                                                 gint           h);
-void             floating_sel_rigor             (GimpLayer     *layer,
-                                                 gboolean       push_undo);
-void             floating_sel_relax             (GimpLayer     *layer,
-                                                 gboolean       push_undo);
 void             floating_sel_composite         (GimpLayer     *layer,
                                                  gint           x,
                                                  gint           y,

Modified: trunk/app/core/gimplayer-project.c
==============================================================================
--- trunk/app/core/gimplayer-project.c	(original)
+++ trunk/app/core/gimplayer-project.c	Sun Nov  9 16:49:37 2008
@@ -25,6 +25,7 @@
 #include "core-types.h"
 
 #include "base/pixel-region.h"
+#include "base/tile-manager.h"
 
 #include "paint-funcs/paint-funcs.h"
 
@@ -51,32 +52,41 @@
     {
       /*  If we're showing the layer mask instead of the layer...  */
 
-      PixelRegion srcPR;
+      PixelRegion  srcPR;
+      TileManager *temp_tiles;
 
       gimp_drawable_init_src_region (GIMP_DRAWABLE (mask), &srcPR,
-                                     x, y, width, height);
+                                     x, y, width, height,
+                                     &temp_tiles);
 
       copy_gray_to_region (&srcPR, projPR);
+
+      if (temp_tiles)
+        tile_manager_unref (temp_tiles);
     }
   else
     {
       /*  Otherwise, normal  */
 
-      GimpImage       *image    = gimp_item_get_image (GIMP_ITEM (layer));
+      GimpImage       *image = gimp_item_get_image (GIMP_ITEM (layer));
       PixelRegion      srcPR;
       PixelRegion      maskPR;
-      PixelRegion     *mask_pr  = NULL;
-      const guchar    *colormap = NULL;
+      PixelRegion     *mask_pr          = NULL;
+      const guchar    *colormap         = NULL;
+      TileManager     *temp_mask_tiles  = NULL;
+      TileManager     *temp_layer_tiles = NULL;
       InitialMode      initial_mode;
       CombinationMode  combination_mode;
 
       gimp_drawable_init_src_region (drawable, &srcPR,
-                                     x, y, width, height);
+                                     x, y, width, height,
+                                     &temp_layer_tiles);
 
       if (mask && gimp_layer_mask_get_apply (mask))
         {
           gimp_drawable_init_src_region (GIMP_DRAWABLE (mask), &maskPR,
-                                         x, y, width, height);
+                                         x, y, width, height,
+                                         &temp_mask_tiles);
           mask_pr = &maskPR;
         }
 
@@ -132,5 +142,11 @@
                           image->visible,
                           initial_mode);
         }
+
+      if (temp_layer_tiles)
+        tile_manager_unref (temp_layer_tiles);
+
+      if (temp_mask_tiles)
+        tile_manager_unref (temp_mask_tiles);
     }
 }

Modified: trunk/app/core/gimplayer.c
==============================================================================
--- trunk/app/core/gimplayer.c	(original)
+++ trunk/app/core/gimplayer.c	Sun Nov  9 16:49:37 2008
@@ -159,13 +159,6 @@
 static void    gimp_layer_invalidate_boundary   (GimpDrawable       *drawable);
 static void    gimp_layer_get_active_components (const GimpDrawable *drawable,
                                                  gboolean           *active);
-static void    gimp_layer_set_tiles             (GimpDrawable       *drawable,
-                                                 gboolean            push_undo,
-                                                 const gchar        *undo_desc,
-                                                 TileManager        *tiles,
-                                                 GimpImageType       type,
-                                                 gint                offset_x,
-                                                 gint                offset_y);
 static GeglNode * gimp_layer_get_node           (GimpItem           *item);
 
 static gint    gimp_layer_get_opacity_at        (GimpPickable       *pickable,
@@ -277,7 +270,6 @@
   drawable_class->invalidate_boundary   = gimp_layer_invalidate_boundary;
   drawable_class->get_active_components = gimp_layer_get_active_components;
   drawable_class->project_region        = gimp_layer_project_region;
-  drawable_class->set_tiles             = gimp_layer_set_tiles;
 
   klass->opacity_changed              = NULL;
   klass->mode_changed                 = NULL;
@@ -314,9 +306,7 @@
   layer->mask       = NULL;
 
   /*  floating selection  */
-  layer->fs.backing_store  = NULL;
   layer->fs.drawable       = NULL;
-  layer->fs.initial        = TRUE;
   layer->fs.boundary_known = FALSE;
   layer->fs.segs           = NULL;
   layer->fs.num_segs       = 0;
@@ -396,12 +386,6 @@
       layer->mask = NULL;
     }
 
-  if (layer->fs.backing_store)
-    {
-      tile_manager_unref (layer->fs.backing_store);
-      layer->fs.backing_store = NULL;
-    }
-
   if (layer->fs.segs)
     {
       g_free (layer->fs.segs);
@@ -438,7 +422,6 @@
 
   memsize += gimp_object_get_memsize (GIMP_OBJECT (layer->mask), gui_size);
 
-  *gui_size += tile_manager_get_memsize (layer->fs.backing_store, FALSE);
   *gui_size += layer->fs.num_segs * sizeof (BoundSeg);
 
   return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object,
@@ -487,29 +470,6 @@
     active[gimp_drawable_bytes (drawable) - 1] = FALSE;
 }
 
-static void
-gimp_layer_set_tiles (GimpDrawable *drawable,
-                      gboolean      push_undo,
-                      const gchar  *undo_desc,
-                      TileManager  *tiles,
-                      GimpImageType type,
-                      gint          offset_x,
-                      gint          offset_y)
-{
-  GimpLayer *layer = GIMP_LAYER (drawable);
-
-  if (gimp_layer_is_floating_sel (layer))
-    floating_sel_relax (layer, FALSE);
-
-  GIMP_DRAWABLE_CLASS (parent_class)->set_tiles (drawable,
-                                                 push_undo, undo_desc,
-                                                 tiles, type,
-                                                 offset_x, offset_y);
-
-  if (gimp_layer_is_floating_sel (layer))
-    floating_sel_rigor (layer, FALSE);
-}
-
 static GeglNode *
 gimp_layer_get_node (GimpItem *item)
 {
@@ -752,15 +712,9 @@
   /*  invalidate the selection boundary because of a layer modification  */
   gimp_drawable_invalidate_boundary (GIMP_DRAWABLE (layer));
 
-  if (gimp_layer_is_floating_sel (layer))
-    floating_sel_relax (layer, FALSE);
-
   GIMP_ITEM_CLASS (parent_class)->translate (item, offset_x, offset_y,
                                              push_undo);
 
-  if (gimp_layer_is_floating_sel (layer))
-    floating_sel_rigor (layer, FALSE);
-
   /*  update the new region  */
   gimp_drawable_update (GIMP_DRAWABLE (layer),
                         0, 0,

Modified: trunk/app/core/gimplayer.h
==============================================================================
--- trunk/app/core/gimplayer.h	(original)
+++ trunk/app/core/gimplayer.h	Sun Nov  9 16:49:37 2008
@@ -48,10 +48,7 @@
   /*  Floating selections  */
   struct
   {
-    TileManager  *backing_store;      /*  for obscured regions           */
     GimpDrawable *drawable;           /*  floating sel is attached to    */
-    gboolean      initial;            /*  is fs composited yet?          */
-
     gboolean      boundary_known;     /*  is the current boundary valid  */
     BoundSeg     *segs;               /*  boundary of floating sel       */
     gint          num_segs;           /*  number of segs in boundary     */

Modified: trunk/app/core/gimpprojection-construct.c
==============================================================================
--- trunk/app/core/gimpprojection-construct.c	(original)
+++ trunk/app/core/gimpprojection-construct.c	Sun Nov  9 16:49:37 2008
@@ -191,13 +191,8 @@
         {
           GimpLayer *layer = list->data;
 
-          if (gimp_layer_is_floating_sel (layer))
-            {
-              /*  composite the floating selection if it exists
-               */
-              floating_sel_composite (layer, x, y, w, h, FALSE);
-            }
-          else if (gimp_item_get_visible (GIMP_ITEM (layer)))
+          if (! gimp_layer_is_floating_sel (layer) &&
+              gimp_item_get_visible (GIMP_ITEM (layer)))
             {
               /*  only add layers that are visible and not floating selections
                *  to the list

Modified: trunk/app/pdb/floating-sel-cmds.c
==============================================================================
--- trunk/app/pdb/floating-sel-cmds.c	(original)
+++ trunk/app/pdb/floating-sel-cmds.c	Sun Nov  9 16:49:37 2008
@@ -178,17 +178,6 @@
 
   if (success)
     {
-      if (gimp_layer_is_floating_sel (floating_sel))
-        {
-          floating_sel_rigor (floating_sel, undo);
-        }
-      else
-        {
-          g_set_error_literal (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
-                               _("Cannot rigor this layer because "
-                                 "it is not a floating selection."));
-          success = FALSE;
-        }
     }
 
   return gimp_procedure_get_return_values (procedure, success,
@@ -212,17 +201,6 @@
 
   if (success)
     {
-      if (gimp_layer_is_floating_sel (floating_sel))
-        {
-          floating_sel_relax (floating_sel, undo);
-        }
-      else
-        {
-          g_set_error_literal (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
-                               _("Cannot relax this layer because "
-                                 "it is not a floating selection."));
-          success = FALSE;
-        }
     }
 
   return gimp_procedure_get_return_values (procedure, success,
@@ -340,12 +318,12 @@
                                "gimp-floating-sel-rigor");
   gimp_procedure_set_static_strings (procedure,
                                      "gimp-floating-sel-rigor",
-                                     "Rigor the floating selection.",
-                                     "This procedure rigors the floating selection.",
-                                     "Spencer Kimball & Peter Mattis",
-                                     "Spencer Kimball & Peter Mattis",
-                                     "1995-1996",
-                                     NULL);
+                                     "This procedure is deprecated!",
+                                     "This procedure is deprecated!",
+                                     "",
+                                     "",
+                                     "",
+                                     "NONE");
   gimp_procedure_add_argument (procedure,
                                gimp_param_spec_layer_id ("floating-sel",
                                                          "floating sel",
@@ -369,12 +347,12 @@
                                "gimp-floating-sel-relax");
   gimp_procedure_set_static_strings (procedure,
                                      "gimp-floating-sel-relax",
-                                     "Relax the floating selection.",
-                                     "This procedure relaxes the floating selection.",
-                                     "Spencer Kimball & Peter Mattis",
-                                     "Spencer Kimball & Peter Mattis",
-                                     "1995-1996",
-                                     NULL);
+                                     "This procedure is deprecated!",
+                                     "This procedure is deprecated!",
+                                     "",
+                                     "",
+                                     "",
+                                     "NONE");
   gimp_procedure_add_argument (procedure,
                                gimp_param_spec_layer_id ("floating-sel",
                                                          "floating sel",

Modified: trunk/app/xcf/xcf-save.c
==============================================================================
--- trunk/app/xcf/xcf-save.c	(original)
+++ trunk/app/xcf/xcf-save.c	Sun Nov  9 16:49:37 2008
@@ -216,7 +216,6 @@
                 GError    **error)
 {
   GimpLayer   *layer;
-  GimpLayer   *floating_layer;
   GimpChannel *channel;
   GList       *list;
   guint32      saved_pos;
@@ -231,10 +230,6 @@
   gchar        version_tag[16];
   GError      *tmp_error = NULL;
 
-  floating_layer = gimp_image_floating_sel (image);
-  if (floating_layer)
-    floating_sel_relax (floating_layer, FALSE);
-
   /* write out the tag information for the image */
   if (info->file_version > 0)
     {
@@ -379,9 +374,6 @@
   xcf_write_int32_check_error (info, &offset, 1);
   saved_pos = info->cp;
 
-  if (floating_layer)
-    floating_sel_rigor (floating_layer, FALSE);
-
   return !ferror (info->fp);
 }
 

Modified: trunk/libgimp/gimpfloatingsel_pdb.c
==============================================================================
--- trunk/libgimp/gimpfloatingsel_pdb.c	(original)
+++ trunk/libgimp/gimpfloatingsel_pdb.c	Sun Nov  9 16:49:37 2008
@@ -24,6 +24,9 @@
 #include "config.h"
 
 #include "gimp.h"
+#undef GIMP_DISABLE_DEPRECATED
+#undef __GIMP_FLOATING_SEL_PDB_H__
+#include "gimpfloatingsel_pdb.h"
 
 /**
  * gimp_floating_sel_remove:
@@ -162,9 +165,7 @@
  * @floating_sel_ID: The floating selection.
  * @undo: .
  *
- * Rigor the floating selection.
- *
- * This procedure rigors the floating selection.
+ * This procedure is deprecated!
  *
  * Returns: TRUE on success.
  */
@@ -194,9 +195,7 @@
  * @floating_sel_ID: The floating selection.
  * @undo: .
  *
- * Relax the floating selection.
- *
- * This procedure relaxes the floating selection.
+ * This procedure is deprecated!
  *
  * Returns: TRUE on success.
  */

Modified: trunk/libgimp/gimpfloatingsel_pdb.h
==============================================================================
--- trunk/libgimp/gimpfloatingsel_pdb.h	(original)
+++ trunk/libgimp/gimpfloatingsel_pdb.h	Sun Nov  9 16:49:37 2008
@@ -34,10 +34,12 @@
 gboolean gimp_floating_sel_to_layer (gint32   floating_sel_ID);
 gboolean gimp_floating_sel_attach   (gint32   layer_ID,
                                      gint32   drawable_ID);
+#ifndef GIMP_DISABLE_DEPRECATED
 gboolean gimp_floating_sel_rigor    (gint32   floating_sel_ID,
                                      gboolean undo);
 gboolean gimp_floating_sel_relax    (gint32   floating_sel_ID,
                                      gboolean undo);
+#endif /* GIMP_DISABLE_DEPRECATED */
 
 
 G_END_DECLS

Modified: trunk/plug-ins/file-xjt/xjt.c
==============================================================================
--- trunk/plug-ins/file-xjt/xjt.c	(original)
+++ trunk/plug-ins/file-xjt/xjt.c	Sun Nov  9 16:49:37 2008
@@ -1667,7 +1667,6 @@
   gint    l_nchannels;
   gint32  l_layer_id;
   gint32  l_channel_id;
-  gint32  l_floating_layer_id;
   gint32  l_selection_channel_id;
   int     l_sel;
   gint32  l_x1, l_x2, l_y1, l_y2;
@@ -1676,7 +1675,6 @@
   gint    l_wr_all_prp;
 
   l_rc = -1;  /* init retcode to Errorstate */
-  l_floating_layer_id = -1;
   l_fp_prp = NULL;
   l_layers_list = NULL;
   l_channels_list = NULL;
@@ -1735,15 +1733,6 @@
   p_write_image_prp (l_dirname, l_fp_prp, image_id, l_wr_all_prp);
 
 
-  l_floating_layer_id = gimp_image_get_floating_sel (image_id);
-  if (l_floating_layer_id >= 0)
-    {
-      if (xjt_debug) printf ("XJT-DEBUG: call floating_sel_relax fsel_id=%d\n",
-                             (int) l_floating_layer_id);
-
-      gimp_floating_sel_relax (l_floating_layer_id, FALSE);
-    }
-
   l_layers_list = gimp_image_get_layers (image_id, &l_nlayers);
 
   /* foreach layer do */
@@ -1907,14 +1896,6 @@
        fclose (l_fp_prp);
      }
 
-   if (l_floating_layer_id >= 0)
-     {
-       if (xjt_debug)
-         printf("XJT-DEBUG: here we should call floating_sel_rigor sel_id=%d\n",
-                (int)l_floating_layer_id);
-       gimp_floating_sel_rigor (l_floating_layer_id, FALSE);
-     }
-
    g_free (l_layers_list);
    g_free (l_channels_list);
 

Modified: trunk/tools/pdbgen/pdb/floating_sel.pdb
==============================================================================
--- trunk/tools/pdbgen/pdb/floating_sel.pdb	(original)
+++ trunk/tools/pdbgen/pdb/floating_sel.pdb	Sun Nov  9 16:49:37 2008
@@ -160,10 +160,7 @@
 }
 
 sub floating_sel_rigor {
-    $blurb = 'Rigor the floating selection.';
-    $help  = 'This procedure rigors the floating selection.';
-
-    &std_pdb_misc;
+    &std_pdb_deprecated ();
 
     @inargs = (
 	{ name => 'floating_sel', type => 'layer',
@@ -174,27 +171,13 @@
     %invoke = (
 	code => <<'CODE'
 {
-  if (gimp_layer_is_floating_sel (floating_sel))
-    {
-      floating_sel_rigor (floating_sel, undo);
-    }
-  else
-    {
-      g_set_error_literal (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
-                           _("Cannot rigor this layer because "
-                             "it is not a floating selection."));
-      success = FALSE;
-    }
 }
 CODE
     );
 }
 
 sub floating_sel_relax {
-    $blurb = 'Relax the floating selection.';
-    $help  = 'This procedure relaxes the floating selection.';
-
-    &std_pdb_misc;
+    &std_pdb_deprecated ();
 
     @inargs = (
 	{ name => 'floating_sel', type => 'layer',
@@ -205,17 +188,6 @@
     %invoke = (
 	code => <<'CODE'
 {
-  if (gimp_layer_is_floating_sel (floating_sel))
-    {
-      floating_sel_relax (floating_sel, undo);
-    }
-  else
-    {
-      g_set_error_literal (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
-                           _("Cannot relax this layer because "
-                             "it is not a floating selection."));
-      success = FALSE;
-    }
 }
 CODE
     );
@@ -227,8 +199,12 @@
               "gimppdb-utils.h"
               "gimp-intl.h");
 
- procs = qw(floating_sel_remove floating_sel_anchor floating_sel_to_layer
-	    floating_sel_attach floating_sel_rigor floating_sel_relax);
+ procs = qw(floating_sel_remove
+            floating_sel_anchor
+            floating_sel_to_layer
+            floating_sel_attach
+            floating_sel_rigor
+            floating_sel_relax);
 
 %exports = (app => [ procs], lib => [ procs]);
 



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