mirror of https://github.com/GNOME/gimp.git
added enum values GIMP_ADD_ALPHA_MASK_TRANSFER and
2003-11-26 Michael Natterer <mitch@gimp.org> * app/core/core-enums.[ch]: added enum values GIMP_ADD_ALPHA_MASK_TRANSFER and GIMP_UNDO_GROUP_LAYER_ADD_MASK. * app/core/gimplayer.c (gimp_layer_create_mask): applied patch from Pedro Gimeno which implements the new ADD_MASK type and added undo. Fixes bug #127930. * app/gui/layers-commands.c: push an undo group around layer mask creation & adding since the creation may change the layer now. * app/pdb/layer_cmds.c * libgimp/gimpenums.h * plug-ins/pygimp/gimpenums.py * plug-ins/script-fu/script-fu-constants.c * tools/pdbgen/enums.pl: regenerated.
This commit is contained in:
parent
b2098d1e8e
commit
e0e8a34f31
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
2003-11-26 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/core/core-enums.[ch]: added enum values
|
||||
GIMP_ADD_ALPHA_MASK_TRANSFER and GIMP_UNDO_GROUP_LAYER_ADD_MASK.
|
||||
|
||||
* app/core/gimplayer.c (gimp_layer_create_mask): applied patch
|
||||
from Pedro Gimeno which implements the new ADD_MASK type and
|
||||
added undo. Fixes bug #127930.
|
||||
|
||||
* app/gui/layers-commands.c: push an undo group around layer mask
|
||||
creation & adding since the creation may change the layer now.
|
||||
|
||||
* app/pdb/layer_cmds.c
|
||||
* libgimp/gimpenums.h
|
||||
* plug-ins/pygimp/gimpenums.py
|
||||
* plug-ins/script-fu/script-fu-constants.c
|
||||
* tools/pdbgen/enums.pl: regenerated.
|
||||
|
||||
2003-11-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* libgimpthumb/gimpthumb-utils.[ch]
|
||||
|
|
|
@ -927,6 +927,9 @@ add_mask_query_response (GtkWidget *widget,
|
|||
|
||||
if ((layer = (options->layer)) && (gimage = GIMP_ITEM (layer)->gimage))
|
||||
{
|
||||
gimp_image_undo_group_start (gimage, GIMP_UNDO_GROUP_LAYER_ADD_MASK,
|
||||
_("Add Layer Mask"));
|
||||
|
||||
mask = gimp_layer_create_mask (layer, options->add_mask_type);
|
||||
|
||||
if (options->invert)
|
||||
|
@ -935,6 +938,8 @@ add_mask_query_response (GtkWidget *widget,
|
|||
gimp_layer_add_mask (layer, mask, TRUE);
|
||||
g_object_unref (mask);
|
||||
|
||||
gimp_image_undo_group_end (gimage);
|
||||
|
||||
gimp_image_flush (gimage);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ static const GEnumValue gimp_add_mask_type_enum_values[] =
|
|||
{ GIMP_ADD_WHITE_MASK, N_("_White (Full Opacity)"), "white-mask" },
|
||||
{ GIMP_ADD_BLACK_MASK, N_("_Black (Full Transparency)"), "black-mask" },
|
||||
{ GIMP_ADD_ALPHA_MASK, N_("Layer's _Alpha Channel"), "alpha-mask" },
|
||||
{ GIMP_ADD_ALPHA_MASK_TRANSFER, N_("_Transfer Layer's Alpha Channel"), "alpha-mask-transfer" },
|
||||
{ GIMP_ADD_SELECTION_MASK, N_("_Selection"), "selection-mask" },
|
||||
{ GIMP_ADD_COPY_MASK, N_("_Grayscale Copy of Layer"), "copy-mask" },
|
||||
{ 0, NULL, NULL }
|
||||
|
@ -568,6 +569,7 @@ static const GEnumValue gimp_undo_type_enum_values[] =
|
|||
{ GIMP_UNDO_GROUP_ITEM_LINKED, N_("Linked Item"), "group-item-linked" },
|
||||
{ GIMP_UNDO_GROUP_LAYER_SCALE, N_("Scale Layer"), "group-layer-scale" },
|
||||
{ GIMP_UNDO_GROUP_LAYER_RESIZE, N_("Resize Layer"), "group-layer-resize" },
|
||||
{ GIMP_UNDO_GROUP_LAYER_ADD_MASK, N_("Add Layer Mask"), "group-layer-add-mask" },
|
||||
{ GIMP_UNDO_GROUP_LAYER_APPLY_MASK, N_("Apply Layer Mask"), "group-layer-apply-mask" },
|
||||
{ GIMP_UNDO_GROUP_FS_TO_LAYER, N_("Floating Selection to Layer"), "group-fs-to-layer" },
|
||||
{ GIMP_UNDO_GROUP_FS_FLOAT, N_("Float Selection"), "group-fs-float" },
|
||||
|
|
|
@ -42,11 +42,12 @@ GType gimp_add_mask_type_get_type (void) G_GNUC_CONST;
|
|||
|
||||
typedef enum
|
||||
{
|
||||
GIMP_ADD_WHITE_MASK, /*< desc="_White (Full Opacity)" >*/
|
||||
GIMP_ADD_BLACK_MASK, /*< desc="_Black (Full Transparency)" >*/
|
||||
GIMP_ADD_ALPHA_MASK, /*< desc="Layer's _Alpha Channel" >*/
|
||||
GIMP_ADD_SELECTION_MASK, /*< desc="_Selection" >*/
|
||||
GIMP_ADD_COPY_MASK /*< desc="_Grayscale Copy of Layer" >*/
|
||||
GIMP_ADD_WHITE_MASK, /*< desc="_White (Full Opacity)" >*/
|
||||
GIMP_ADD_BLACK_MASK, /*< desc="_Black (Full Transparency)" >*/
|
||||
GIMP_ADD_ALPHA_MASK, /*< desc="Layer's _Alpha Channel" >*/
|
||||
GIMP_ADD_ALPHA_MASK_TRANSFER, /*< desc="_Transfer Layer's Alpha Channel" >*/
|
||||
GIMP_ADD_SELECTION_MASK, /*< desc="_Selection" >*/
|
||||
GIMP_ADD_COPY_MASK /*< desc="_Grayscale Copy of Layer" >*/
|
||||
} GimpAddMaskType;
|
||||
|
||||
|
||||
|
@ -407,6 +408,7 @@ typedef enum /*< pdb-skip >*/
|
|||
GIMP_UNDO_GROUP_ITEM_LINKED, /*< desc="Linked Item" >*/
|
||||
GIMP_UNDO_GROUP_LAYER_SCALE, /*< desc="Scale Layer" >*/
|
||||
GIMP_UNDO_GROUP_LAYER_RESIZE, /*< desc="Resize Layer" >*/
|
||||
GIMP_UNDO_GROUP_LAYER_ADD_MASK, /*< desc="Add Layer Mask" >*/
|
||||
GIMP_UNDO_GROUP_LAYER_APPLY_MASK, /*< desc="Apply Layer Mask" >*/
|
||||
GIMP_UNDO_GROUP_FS_TO_LAYER, /*< desc="Floating Selection to Layer" >*/
|
||||
GIMP_UNDO_GROUP_FS_FLOAT, /*< desc="Float Selection" >*/
|
||||
|
|
|
@ -1041,6 +1041,7 @@ gimp_layer_create_mask (const GimpLayer *layer,
|
|||
break;
|
||||
|
||||
case GIMP_ADD_ALPHA_MASK:
|
||||
case GIMP_ADD_ALPHA_MASK_TRANSFER:
|
||||
if (gimp_drawable_has_alpha (drawable))
|
||||
{
|
||||
pixel_region_init (&srcPR, drawable->tiles,
|
||||
|
@ -1049,6 +1050,45 @@ gimp_layer_create_mask (const GimpLayer *layer,
|
|||
FALSE);
|
||||
|
||||
extract_alpha_region (&srcPR, NULL, &destPR);
|
||||
|
||||
if (add_mask_type == GIMP_ADD_ALPHA_MASK_TRANSFER)
|
||||
{
|
||||
void *pr;
|
||||
gint w, h;
|
||||
guchar *alpha_ptr;
|
||||
|
||||
gimp_drawable_push_undo (GIMP_DRAWABLE (layer),
|
||||
_("Transfer Alpha to Mask"),
|
||||
0, 0,
|
||||
item->width,
|
||||
item->height,
|
||||
NULL, FALSE);
|
||||
|
||||
pixel_region_init (&srcPR, drawable->tiles,
|
||||
0, 0,
|
||||
item->width, item->height,
|
||||
TRUE);
|
||||
|
||||
for (pr = pixel_regions_register (1, &srcPR);
|
||||
pr != NULL;
|
||||
pr = pixel_regions_process (pr))
|
||||
{
|
||||
h = srcPR.h;
|
||||
|
||||
while (h--)
|
||||
{
|
||||
w = srcPR.w;
|
||||
alpha_ptr = (srcPR.data + h * srcPR.rowstride +
|
||||
srcPR.bytes - 1);
|
||||
|
||||
while (w--)
|
||||
{
|
||||
*alpha_ptr = OPAQUE_OPACITY;
|
||||
alpha_ptr += srcPR.bytes;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -927,6 +927,9 @@ add_mask_query_response (GtkWidget *widget,
|
|||
|
||||
if ((layer = (options->layer)) && (gimage = GIMP_ITEM (layer)->gimage))
|
||||
{
|
||||
gimp_image_undo_group_start (gimage, GIMP_UNDO_GROUP_LAYER_ADD_MASK,
|
||||
_("Add Layer Mask"));
|
||||
|
||||
mask = gimp_layer_create_mask (layer, options->add_mask_type);
|
||||
|
||||
if (options->invert)
|
||||
|
@ -935,6 +938,8 @@ add_mask_query_response (GtkWidget *widget,
|
|||
gimp_layer_add_mask (layer, mask, TRUE);
|
||||
g_object_unref (mask);
|
||||
|
||||
gimp_image_undo_group_end (gimage);
|
||||
|
||||
gimp_image_flush (gimage);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -342,7 +342,7 @@ static ProcArg layer_create_mask_inargs[] =
|
|||
{
|
||||
GIMP_PDB_INT32,
|
||||
"mask_type",
|
||||
"The type of mask: { GIMP_ADD_WHITE_MASK (0), GIMP_ADD_BLACK_MASK (1), GIMP_ADD_ALPHA_MASK (2), GIMP_ADD_SELECTION_MASK (3), GIMP_ADD_COPY_MASK (4) }"
|
||||
"The type of mask: { GIMP_ADD_WHITE_MASK (0), GIMP_ADD_BLACK_MASK (1), GIMP_ADD_ALPHA_MASK (2), GIMP_ADD_ALPHA_MASK_TRANSFER (3), GIMP_ADD_SELECTION_MASK (4), GIMP_ADD_COPY_MASK (5) }"
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ typedef enum
|
|||
GIMP_ADD_WHITE_MASK,
|
||||
GIMP_ADD_BLACK_MASK,
|
||||
GIMP_ADD_ALPHA_MASK,
|
||||
GIMP_ADD_ALPHA_MASK_TRANSFER,
|
||||
GIMP_ADD_SELECTION_MASK,
|
||||
GIMP_ADD_COPY_MASK
|
||||
} GimpAddMaskType;
|
||||
|
|
|
@ -37,8 +37,9 @@ TRUE = True
|
|||
ADD_WHITE_MASK = 0
|
||||
ADD_BLACK_MASK = 1
|
||||
ADD_ALPHA_MASK = 2
|
||||
ADD_SELECTION_MASK = 3
|
||||
ADD_COPY_MASK = 4
|
||||
ADD_ALPHA_MASK_TRANSFER = 3
|
||||
ADD_SELECTION_MASK = 4
|
||||
ADD_COPY_MASK = 5
|
||||
|
||||
# GimpBlendMode
|
||||
FG_BG_RGB_MODE = 0
|
||||
|
|
|
@ -26,8 +26,9 @@ init_generated_constants (void)
|
|||
setvar (cintern ("ADD-WHITE-MASK"), flocons (0), NIL);
|
||||
setvar (cintern ("ADD-BLACK-MASK"), flocons (1), NIL);
|
||||
setvar (cintern ("ADD-ALPHA-MASK"), flocons (2), NIL);
|
||||
setvar (cintern ("ADD-SELECTION-MASK"), flocons (3), NIL);
|
||||
setvar (cintern ("ADD-COPY-MASK"), flocons (4), NIL);
|
||||
setvar (cintern ("ADD-ALPHA-MASK-TRANSFER"), flocons (3), NIL);
|
||||
setvar (cintern ("ADD-SELECTION-MASK"), flocons (4), NIL);
|
||||
setvar (cintern ("ADD-COPY-MASK"), flocons (5), NIL);
|
||||
|
||||
setvar (cintern ("FG-BG-RGB-MODE"), flocons (0), NIL);
|
||||
setvar (cintern ("FG-BG-HSV-MODE"), flocons (1), NIL);
|
||||
|
|
|
@ -191,13 +191,14 @@ package Gimp::CodeGen::enums;
|
|||
{ contig => 1,
|
||||
header => 'core/core-enums.h',
|
||||
symbols => [ qw(GIMP_ADD_WHITE_MASK GIMP_ADD_BLACK_MASK
|
||||
GIMP_ADD_ALPHA_MASK GIMP_ADD_SELECTION_MASK
|
||||
GIMP_ADD_COPY_MASK) ],
|
||||
GIMP_ADD_ALPHA_MASK GIMP_ADD_ALPHA_MASK_TRANSFER
|
||||
GIMP_ADD_SELECTION_MASK GIMP_ADD_COPY_MASK) ],
|
||||
mapping => { GIMP_ADD_WHITE_MASK => '0',
|
||||
GIMP_ADD_BLACK_MASK => '1',
|
||||
GIMP_ADD_ALPHA_MASK => '2',
|
||||
GIMP_ADD_SELECTION_MASK => '3',
|
||||
GIMP_ADD_COPY_MASK => '4' }
|
||||
GIMP_ADD_ALPHA_MASK_TRANSFER => '3',
|
||||
GIMP_ADD_SELECTION_MASK => '4',
|
||||
GIMP_ADD_COPY_MASK => '5' }
|
||||
},
|
||||
GimpBlendMode =>
|
||||
{ contig => 1,
|
||||
|
|
Loading…
Reference in New Issue