app/base/siox.c moved rectangle intersection into
2005-08-06 Sven Neumann <sven@gimp.org> * app/base/siox.c * app/core/gimpdrawable-foreground-extract.c: moved rectangle intersection into gimp_drawable_foreground_extract().
This commit is contained in:

committed by
Sven Neumann

parent
68f09c7cb6
commit
3c8a10e925
@ -1,3 +1,9 @@
|
|||||||
|
2005-08-06 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* app/base/siox.c
|
||||||
|
* app/core/gimpdrawable-foreground-extract.c: moved rectangle
|
||||||
|
intersection into gimp_drawable_foreground_extract().
|
||||||
|
|
||||||
2005-08-06 Sven Neumann <sven@gimp.org>
|
2005-08-06 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* app/core/gimpscanconvert.[ch]: added gimp_scan_convert_compose(),
|
* app/core/gimpscanconvert.[ch]: added gimp_scan_convert_compose(),
|
||||||
|
@ -44,8 +44,6 @@
|
|||||||
|
|
||||||
#include "paint-funcs/paint-funcs.h"
|
#include "paint-funcs/paint-funcs.h"
|
||||||
|
|
||||||
#include "core/gimp-utils.h" /* FIXME (gimp_rectangle_intersect) */
|
|
||||||
|
|
||||||
#include "cpercep.h"
|
#include "cpercep.h"
|
||||||
#include "pixel-region.h"
|
#include "pixel-region.h"
|
||||||
#include "siox.h"
|
#include "siox.h"
|
||||||
@ -809,7 +807,6 @@ siox_foreground_extract (TileManager *pixels,
|
|||||||
PixelRegion srcPR;
|
PixelRegion srcPR;
|
||||||
PixelRegion mapPR;
|
PixelRegion mapPR;
|
||||||
gpointer pr;
|
gpointer pr;
|
||||||
gboolean intersect;
|
|
||||||
gint bpp;
|
gint bpp;
|
||||||
gint row, col;
|
gint row, col;
|
||||||
const gfloat clustersize = get_clustersize (limits);
|
const gfloat clustersize = get_clustersize (limits);
|
||||||
@ -830,19 +827,6 @@ siox_foreground_extract (TileManager *pixels,
|
|||||||
g_return_if_fail (y + height <= tile_manager_height (mask));
|
g_return_if_fail (y + height <= tile_manager_height (mask));
|
||||||
g_return_if_fail (progress_data == NULL || progress_callback != NULL);
|
g_return_if_fail (progress_data == NULL || progress_callback != NULL);
|
||||||
|
|
||||||
intersect = gimp_rectangle_intersect (offset_x, offset_y,
|
|
||||||
tile_manager_width (pixels),
|
|
||||||
tile_manager_height (pixels),
|
|
||||||
x, y, width, height,
|
|
||||||
&x, &y, &width, &height);
|
|
||||||
|
|
||||||
/* FIXME:
|
|
||||||
* Should clear the mask outside the rectangle that we are working on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! intersect)
|
|
||||||
return;
|
|
||||||
|
|
||||||
cpercep_init ();
|
cpercep_init ();
|
||||||
|
|
||||||
siox_progress_update (progress_callback, progress_data, 0.0);
|
siox_progress_update (progress_callback, progress_data, 0.0);
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "gimpimage.h"
|
#include "gimpimage.h"
|
||||||
#include "gimpimage-colormap.h"
|
#include "gimpimage-colormap.h"
|
||||||
#include "gimpprogress.h"
|
#include "gimpprogress.h"
|
||||||
|
#include "gimp-utils.h"
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ gimp_drawable_foreground_extract_rect (GimpDrawable *drawable,
|
|||||||
{
|
{
|
||||||
GimpImage *gimage;
|
GimpImage *gimage;
|
||||||
const guchar *colormap = NULL;
|
const guchar *colormap = NULL;
|
||||||
|
gboolean intersect;
|
||||||
gint offset_x;
|
gint offset_x;
|
||||||
gint offset_y;
|
gint offset_y;
|
||||||
|
|
||||||
@ -83,6 +85,20 @@ gimp_drawable_foreground_extract_rect (GimpDrawable *drawable,
|
|||||||
|
|
||||||
gimp_item_offsets (GIMP_ITEM (drawable), &offset_x, &offset_y);
|
gimp_item_offsets (GIMP_ITEM (drawable), &offset_x, &offset_y);
|
||||||
|
|
||||||
|
intersect = gimp_rectangle_intersect (offset_x, offset_y,
|
||||||
|
gimp_item_width (GIMP_ITEM (drawable)),
|
||||||
|
gimp_item_height (GIMP_ITEM (drawable)),
|
||||||
|
x, y, width, height,
|
||||||
|
&x, &y, &width, &height);
|
||||||
|
|
||||||
|
|
||||||
|
/* FIXME:
|
||||||
|
* Clear the mask outside the rectangle that we are working on?
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (! intersect)
|
||||||
|
return;
|
||||||
|
|
||||||
if (progress)
|
if (progress)
|
||||||
gimp_progress_start (progress, _("Foreground Extraction..."), FALSE);
|
gimp_progress_start (progress, _("Foreground Extraction..."), FALSE);
|
||||||
|
|
||||||
|
@ -524,10 +524,6 @@ gimp_foreground_select_tool_select (GimpFreeSelectTool *free_sel,
|
|||||||
0, 0, 127);
|
0, 0, 127);
|
||||||
gimp_scan_convert_free (scan_convert);
|
gimp_scan_convert_free (scan_convert);
|
||||||
|
|
||||||
/* apply foreground and background markers */
|
|
||||||
for (list = fg_select->strokes; list; list = list->next)
|
|
||||||
gimp_foreground_select_tool_stroke (mask, list->data);
|
|
||||||
|
|
||||||
/* restrict working area to double the size of the bounding box */
|
/* restrict working area to double the size of the bounding box */
|
||||||
gimp_channel_bounds (mask, &x, &y, &x2, &y2);
|
gimp_channel_bounds (mask, &x, &y, &x2, &y2);
|
||||||
width = x2 - x;
|
width = x2 - x;
|
||||||
@ -538,6 +534,10 @@ gimp_foreground_select_tool_select (GimpFreeSelectTool *free_sel,
|
|||||||
width = MIN (width * 2, gimp_item_width (GIMP_ITEM (mask)) - x);
|
width = MIN (width * 2, gimp_item_width (GIMP_ITEM (mask)) - x);
|
||||||
height = MIN (height * 2, gimp_item_height (GIMP_ITEM (mask)) - y);
|
height = MIN (height * 2, gimp_item_height (GIMP_ITEM (mask)) - y);
|
||||||
|
|
||||||
|
/* apply foreground and background markers */
|
||||||
|
for (list = fg_select->strokes; list; list = list->next)
|
||||||
|
gimp_foreground_select_tool_stroke (mask, list->data);
|
||||||
|
|
||||||
gimp_drawable_foreground_extract_rect (drawable,
|
gimp_drawable_foreground_extract_rect (drawable,
|
||||||
GIMP_FOREGROUND_EXTRACT_SIOX,
|
GIMP_FOREGROUND_EXTRACT_SIOX,
|
||||||
GIMP_DRAWABLE (mask),
|
GIMP_DRAWABLE (mask),
|
||||||
@ -674,7 +674,8 @@ gimp_foreground_select_tool_push_stroke (GimpForegroundSelectTool *fg_select,
|
|||||||
stroke = g_new (FgSelectStroke, 1);
|
stroke = g_new (FgSelectStroke, 1);
|
||||||
|
|
||||||
stroke->background = options->background;
|
stroke->background = options->background;
|
||||||
stroke->width = options->stroke_width / SCALEFACTOR_Y (shell);
|
stroke->width = ROUND ((gdouble) options->stroke_width /
|
||||||
|
SCALEFACTOR_Y (shell));
|
||||||
stroke->num_points = fg_select->stroke->len;
|
stroke->num_points = fg_select->stroke->len;
|
||||||
stroke->points = (GimpVector2 *) g_array_free (fg_select->stroke, FALSE);
|
stroke->points = (GimpVector2 *) g_array_free (fg_select->stroke, FALSE);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user