Commit a69b68de authored by Michael Natterer's avatar Michael Natterer 😴
Browse files

plug-ins: formatting cleanup in compose/decompose

parent f78dec23
......@@ -150,43 +150,43 @@ static void type_combo_callback (GimpIntComboBox *combo,
* All the following values have to be kept in sync with those of decompose.c
*/
#define CPN_RGBA_R {"R", N_("_Red:"), GIMP_STOCK_CHANNEL_RED, 0.0, 1.0, FALSE}
#define CPN_RGBA_G {"G", N_("_Green:"), GIMP_STOCK_CHANNEL_GREEN, 0.0, 1.0, FALSE}
#define CPN_RGBA_B {"B", N_("_Blue:"), GIMP_STOCK_CHANNEL_BLUE, 0.0, 1.0, FALSE}
#define CPN_RGBA_A {"A", N_("_Alpha:"), GIMP_STOCK_CHANNEL_ALPHA, 0.0, 1.0, TRUE}
#define CPN_RGBA_R { "R", N_("_Red:"), GIMP_STOCK_CHANNEL_RED, 0.0, 1.0, FALSE}
#define CPN_RGBA_G { "G", N_("_Green:"), GIMP_STOCK_CHANNEL_GREEN, 0.0, 1.0, FALSE}
#define CPN_RGBA_B { "B", N_("_Blue:"), GIMP_STOCK_CHANNEL_BLUE, 0.0, 1.0, FALSE}
#define CPN_RGBA_A { "A", N_("_Alpha:"), GIMP_STOCK_CHANNEL_ALPHA, 0.0, 1.0, TRUE}
#define CPN_HSV_H {"hue", N_("_Hue:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSV_S {"saturation", N_("_Saturation:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSV_V {"value", N_("_Value:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSV_H { "hue", N_("_Hue:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSV_S { "saturation", N_("_Saturation:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSV_V { "value", N_("_Value:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_H {"hue", N_("_Hue:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_S {"saturation", N_("_Saturation:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_L {"lightness", N_("_Lightness:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_H { "hue", N_("_Hue:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_S { "saturation", N_("_Saturation:"), NULL, 0.0, 1.0, TRUE}
#define CPN_HSL_L { "lightness", N_("_Lightness:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_C {"cyan", N_("_Cyan:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_M {"magenta", N_("_Magenta:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_Y {"yellow", N_("_Yellow:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_K {"key", N_("_Black:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_C { "cyan", N_("_Cyan:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_M { "magenta", N_("_Magenta:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_Y { "yellow", N_("_Yellow:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMYK_K { "key", N_("_Black:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_C {"cyan", N_("_Cyan:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_M {"magenta", N_("_Magenta:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_Y {"yellow", N_("_Yellow:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_C { "cyan", N_("_Cyan:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_M { "magenta", N_("_Magenta:"), NULL, 0.0, 1.0, TRUE}
#define CPN_CMY_Y { "yellow", N_("_Yellow:"), NULL, 0.0, 1.0, TRUE}
#define CPN_LAB_L {"CIE L", N_("_L:"), NULL, 0.0, 100.0, TRUE}
#define CPN_LAB_A {"CIE a", N_("_A:"), NULL, -127.5, 127.5, TRUE}
#define CPN_LAB_B {"CIE b", N_("_B:"), NULL, -127.5, 127.5, TRUE}
#define CPN_LAB_L { "CIE L", N_("_L:"), NULL, 0.0, 100.0, TRUE}
#define CPN_LAB_A { "CIE a", N_("_A:"), NULL, -127.5, 127.5, TRUE}
#define CPN_LAB_B { "CIE b", N_("_B:"), NULL, -127.5, 127.5, TRUE}
#define CPN_LCH_L {"CIE L", N_("_L"), NULL, 0.0, 100.0, TRUE}
#define CPN_LCH_C {"CIE C(ab)", N_("_C"), NULL, 0.0, 200.0, TRUE}
#define CPN_LCH_H {"CIE H(ab)", N_("_H"), NULL, 0.0, 360.0, TRUE}
#define CPN_LCH_L { "CIE L", N_("_L"), NULL, 0.0, 100.0, TRUE}
#define CPN_LCH_C { "CIE C(ab)", N_("_C"), NULL, 0.0, 200.0, TRUE}
#define CPN_LCH_H { "CIE H(ab)", N_("_H"), NULL, 0.0, 360.0, TRUE}
#define CPN_YCBCR_Y {"Y'", N_("_Luma y470:"), NULL, 0.0, 1.0, TRUE}
#define CPN_YCBCR_CB {"Cb", N_("_Blueness cb470:"), NULL, -0.5, 0.5, TRUE}
#define CPN_YCBCR_CR {"Cr", N_("_Redness cr470:"), NULL, -0.5, 0.5, TRUE}
#define CPN_YCBCR_Y { "Y'", N_("_Luma y470:"), NULL, 0.0, 1.0, TRUE }
#define CPN_YCBCR_CB { "Cb", N_("_Blueness cb470:"), NULL, -0.5, 0.5, TRUE }
#define CPN_YCBCR_CR { "Cr", N_("_Redness cr470:"), NULL, -0.5, 0.5, TRUE }
#define CPN_YCBCR709_Y {"Y'", N_("_Luma y709:"), NULL, 0.0, 1.0, TRUE}
#define CPN_YCBCR709_CB {"Cb", N_("_Blueness cb709:"), NULL, -0.5, 0.5, TRUE}
#define CPN_YCBCR709_CR {"Cr", N_("_Redness cr709:"), NULL, -0.5, 0.5, TRUE}
#define CPN_YCBCR709_Y { "Y'", N_("_Luma y709:"), NULL, 0.0, 1.0, TRUE }
#define CPN_YCBCR709_CB { "Cb", N_("_Blueness cb709:"), NULL, -0.5, 0.5, TRUE }
#define CPN_YCBCR709_CR { "Cr", N_("_Redness cr709:"), NULL, -0.5, 0.5, TRUE }
static COMPOSE_DSC compose_dsc[] =
......@@ -275,7 +275,7 @@ static COMPOSE_DSC compose_dsc[] =
{ CPN_YCBCR709_Y,
CPN_YCBCR709_CB,
CPN_YCBCR709_CR },
"ycbcr709F-compose" },
"ycbcr709F-compose" }
};
......@@ -331,11 +331,10 @@ static ComposeInterface composeint =
0 /* Compose type */
};
static GimpRunMode run_mode;
MAIN ()
static void
query (void)
{
......@@ -379,7 +378,7 @@ query (void)
};
GString *type_desc;
int i;
gint i;
type_desc = g_string_new ("What to compose: ");
g_string_append_c (type_desc, '"');
......@@ -457,6 +456,7 @@ run (const gchar *name,
{
static GimpParam values[2];
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
GimpRunMode run_mode;
gint32 image_ID;
gint32 drawable_ID = -1;
gint compose_by_drawable;
......@@ -646,14 +646,13 @@ run (const gchar *name,
}
static void
cpn_affine_transform (GeglBuffer *buffer,
gdouble min,
gdouble max)
cpn_affine_transform (GeglBuffer *buffer,
gdouble min,
gdouble max)
{
GeglBufferIterator *gi;
const gdouble scale = max - min;
const gdouble offset = min;
const gdouble scale = max - min;
const gdouble offset = min;
/* We want to scale values linearly, regardless of the format of the buffer */
gegl_buffer_set_format (buffer, babl_format ("Y double"));
......@@ -663,10 +662,8 @@ cpn_affine_transform (GeglBuffer *buffer,
while (gegl_buffer_iterator_next (gi))
{
guint k;
double *data;
data = (double*) gi->data[0];
gdouble *data = gi->data[0];
guint k;
for (k = 0; k < gi->length; k++)
{
......@@ -683,7 +680,7 @@ fill_buffer_from_components (GeglBuffer *temp[MAX_COMPOSE_IMAGES],
gdouble mask_vals[MAX_COMPOSE_IMAGES])
{
GeglBufferIterator *gi;
gint j;
gint j;
gi = gegl_buffer_iterator_new (dst, NULL, 0, NULL,
GEGL_ACCESS_WRITE, GEGL_ABYSS_NONE);
......@@ -697,10 +694,9 @@ fill_buffer_from_components (GeglBuffer *temp[MAX_COMPOSE_IMAGES],
while (gegl_buffer_iterator_next (gi))
{
gulong k, count;
gdouble *src_data[MAX_COMPOSE_IMAGES], *dst_data;
dst_data = (gdouble*) gi->data[0];
gdouble *src_data[MAX_COMPOSE_IMAGES];
gdouble *dst_data = (gdouble*) gi->data[0];
gulong k, count;
count = 1;
for (j = 0; j < num_cpn; j++)
......@@ -712,10 +708,12 @@ fill_buffer_from_components (GeglBuffer *temp[MAX_COMPOSE_IMAGES],
gulong pos = k * num_cpn;
for (j = 0; j < num_cpn; j++)
if (inputs[j].is_ID)
dst_data[pos+j] = src_data[j][k];
else
dst_data[pos+j] = mask_vals[j];
{
if (inputs[j].is_ID)
dst_data[pos+j] = src_data[j][k];
else
dst_data[pos+j] = mask_vals[j];
}
}
}
}
......@@ -767,7 +765,6 @@ perform_composition (COMPOSE_DSC curr_compose_dsc,
if (cpn_dsc.range_min != 0.0 || cpn_dsc.range_max != 1.0)
cpn_affine_transform (temp[i], cpn_dsc.range_min, cpn_dsc.range_max);
}
gimp_progress_update ((gdouble) i / (gdouble) (num_images + 1.0));
......@@ -812,7 +809,8 @@ compose (const gchar *compose_type,
gint32 layer_ID_dst, image_ID_dst;
gint first_ID;
GimpImageType gdtype_dst;
GeglBuffer *buffer_src[MAX_COMPOSE_IMAGES], *buffer_dst;
GeglBuffer *buffer_src[MAX_COMPOSE_IMAGES];
GeglBuffer *buffer_dst;
GimpPrecision precision;
/* Search type of composing */
......@@ -825,6 +823,7 @@ compose (const gchar *compose_type,
break;
}
}
if (compose_idx < 0)
return -1;
......@@ -840,9 +839,10 @@ compose (const gchar *compose_type,
break;
}
}
if (-1 == first_ID)
{
g_message(_("At least one image is needed to compose"));
g_message (_("At least one image is needed to compose"));
return -1;
}
......@@ -858,8 +858,9 @@ compose (const gchar *compose_type,
return -1;
}
width = gimp_drawable_width (inputs[first_ID].comp.ID);
width = gimp_drawable_width (inputs[first_ID].comp.ID);
height = gimp_drawable_height (inputs[first_ID].comp.ID);
precision = gimp_image_get_precision (first_image);
for (j = first_ID + 1; j < num_images; j++)
......@@ -881,6 +882,7 @@ compose (const gchar *compose_type,
}
}
}
for (j = 0; j < num_images; j++)
{
if (inputs[j].is_ID)
......@@ -893,6 +895,7 @@ compose (const gchar *compose_type,
{
width = gimp_image_width (inputs[first_ID].comp.ID);
height = gimp_image_height (inputs[first_ID].comp.ID);
precision = gimp_image_get_precision (inputs[first_ID].comp.ID);
for (j = first_ID + 1; j < num_images; j++)
......
......@@ -44,20 +44,14 @@
/* Descrition of a component */
typedef struct
{
/* the babl_component names of the channels */
const gchar *babl_name;
const gchar *babl_name; /* channel's babl_component name */
const gchar *channel_name; /* name of channel to extract */
/* Names of channels to extract */
const gchar *channel_name;
const gdouble range_min; /* min and max */
const gdouble range_max;
const gboolean perceptual_channel; /* "correct" the channel in Y' space */
/* min and max */
const gdouble range_min;
const gdouble range_max;
/* Make the channel "correct" in Y' space */
const gboolean perceptual_channel;
} COMPONENT;
} Component;
/* Maximum number of images/layers generated by an extraction */
......@@ -68,23 +62,23 @@ typedef struct
{
const gchar *type; /* What to extract */
const gchar *model; /* the babl_model string to use */
const gboolean dialog; /* Dialog-Flag. Set it to TRUE if you want to appear
* this extract function within the dialog */
const gboolean dialog; /* Set to TRUE if you want
* this extract function in the dialog */
const gint num_images; /* Number of images to create */
const gboolean clamp; /* clamping values in [0.0, 1.0] */
/* the babl_component names of the channels */
const COMPONENT component[MAX_EXTRACT_IMAGES];
const Component component[MAX_EXTRACT_IMAGES];
} EXTRACT;
} Extract;
typedef struct
{
gchar extract_type[32];
gboolean as_layers;
gboolean use_registration;
} DecoVals;
} DecomposeVals;
/* Declare local functions
......@@ -125,11 +119,11 @@ static void cpn_affine_transform_clamp (GeglBuffer *buffer,
gboolean clamp);
static void copy_n_components (GeglBuffer *src,
GeglBuffer **dst,
EXTRACT ext);
Extract ext);
static void copy_one_component (GeglBuffer *src,
GeglBuffer *dst,
const char *model,
const COMPONENT component,
const Component component,
gboolean clamp);
static gboolean decompose_dialog (void);
static gchar * generate_filename (guint32 image_ID,
......@@ -137,84 +131,85 @@ static gchar * generate_filename (guint32 image_ID,
guint channel);
#define CPN_RGBA_R {"R", N_("red"), 0.0, 1.0, FALSE}
#define CPN_RGBA_G {"G", N_("green"), 0.0, 1.0, FALSE}
#define CPN_RGBA_B {"B", N_("blue"), 0.0, 1.0, FALSE}
#define CPN_RGBA_A {"A", N_("alpha"), 0.0, 1.0, TRUE}
#define CPN_RGBA_R { "R", N_("red"), 0.0, 1.0, FALSE }
#define CPN_RGBA_G { "G", N_("green"), 0.0, 1.0, FALSE }
#define CPN_RGBA_B { "B", N_("blue"), 0.0, 1.0, FALSE }
#define CPN_RGBA_A { "A", N_("alpha"), 0.0, 1.0, TRUE }
#define CPN_HSV_H {"hue", N_("hue"), 0.0, 1.0, TRUE}
#define CPN_HSV_S {"saturation", N_("saturation"), 0.0, 1.0, TRUE}
#define CPN_HSV_V {"value", N_("value"), 0.0, 1.0, TRUE}
#define CPN_HSV_H { "hue", N_("hue"), 0.0, 1.0, TRUE }
#define CPN_HSV_S { "saturation", N_("saturation"), 0.0, 1.0, TRUE }
#define CPN_HSV_V { "value", N_("value"), 0.0, 1.0, TRUE }
#define CPN_HSL_H {"hue", N_("hue"), 0.0, 1.0, TRUE}
#define CPN_HSL_S {"saturation", N_("saturation"), 0.0, 1.0, TRUE}
#define CPN_HSL_L {"lightness", N_("lightness"), 0.0, 1.0, TRUE}
#define CPN_HSL_H { "hue", N_("hue"), 0.0, 1.0, TRUE }
#define CPN_HSL_S { "saturation", N_("saturation"), 0.0, 1.0, TRUE }
#define CPN_HSL_L { "lightness", N_("lightness"), 0.0, 1.0, TRUE }
#define CPN_CMYK_C {"cyan", N_("cyan-k"), 0.0, 1.0, TRUE}
#define CPN_CMYK_M {"magenta", N_("magenta-k"), 0.0, 1.0, TRUE}
#define CPN_CMYK_Y {"yellow", N_("yellow-k"), 0.0, 1.0, TRUE}
#define CPN_CMYK_K {"key", N_("black"), 0.0, 1.0, TRUE}
#define CPN_CMYK_C { "cyan", N_("cyan-k"), 0.0, 1.0, TRUE }
#define CPN_CMYK_M { "magenta", N_("magenta-k"), 0.0, 1.0, TRUE }
#define CPN_CMYK_Y { "yellow", N_("yellow-k"), 0.0, 1.0, TRUE }
#define CPN_CMYK_K { "key", N_("black"), 0.0, 1.0, TRUE }
#define CPN_CMY_C {"cyan", N_("cyan"), 0.0, 1.0, TRUE}
#define CPN_CMY_M {"magenta", N_("magenta"), 0.0, 1.0, TRUE}
#define CPN_CMY_Y {"yellow", N_("yellow"), 0.0, 1.0, TRUE}
#define CPN_CMY_C { "cyan", N_("cyan"), 0.0, 1.0, TRUE }
#define CPN_CMY_M { "magenta", N_("magenta"), 0.0, 1.0, TRUE }
#define CPN_CMY_Y { "yellow", N_("yellow"), 0.0, 1.0, TRUE }
#define CPN_LAB_L {"CIE L", N_("L"), 0.0, 100.0, TRUE}
#define CPN_LAB_A {"CIE a", N_("A"), -127.5, 127.5, TRUE}
#define CPN_LAB_B {"CIE b", N_("B"), -127.5, 127.5, TRUE}
#define CPN_LAB_L { "CIE L", N_("L"), 0.0, 100.0, TRUE }
#define CPN_LAB_A { "CIE a", N_("A"), -127.5, 127.5, TRUE }
#define CPN_LAB_B { "CIE b", N_("B"), -127.5, 127.5, TRUE }
#define CPN_LCH_L {"CIE L", N_("L"), 0.0, 100.0, TRUE}
#define CPN_LCH_C {"CIE C(ab)", N_("C"), 0.0, 200.0, TRUE}
#define CPN_LCH_H {"CIE H(ab)", N_("H"), 0.0, 360.0, TRUE}
#define CPN_LCH_L { "CIE L", N_("L"), 0.0, 100.0, TRUE }
#define CPN_LCH_C { "CIE C(ab)", N_("C"), 0.0, 200.0, TRUE }
#define CPN_LCH_H { "CIE H(ab)", N_("H"), 0.0, 360.0, TRUE }
#define CPN_YCBCR_Y {"Y'", N_("luma-y470"), 0.0, 1.0, TRUE}
#define CPN_YCBCR_CB {"Cb", N_("blueness-cb470"), -0.5, 0.5, TRUE}
#define CPN_YCBCR_CR {"Cr", N_("redness-cr470"), -0.5, 0.5, TRUE}
#define CPN_YCBCR_Y { "Y'", N_("luma-y470"), 0.0, 1.0, TRUE }
#define CPN_YCBCR_CB { "Cb", N_("blueness-cb470"), -0.5, 0.5, TRUE }
#define CPN_YCBCR_CR { "Cr", N_("redness-cr470"), -0.5, 0.5, TRUE }
#define CPN_YCBCR709_Y {"Y'", N_("luma-y709"), 0.0, 1.0, TRUE}
#define CPN_YCBCR709_CB {"Cb", N_("blueness-cb709"), -0.5, 0.5, TRUE}
#define CPN_YCBCR709_CR {"Cr", N_("redness-cr709"), -0.5, 0.5, TRUE}
#define CPN_YCBCR709_Y { "Y'", N_("luma-y709"), 0.0, 1.0, TRUE }
#define CPN_YCBCR709_CB { "Cb", N_("blueness-cb709"), -0.5, 0.5, TRUE }
#define CPN_YCBCR709_CR { "Cr", N_("redness-cr709"), -0.5, 0.5, TRUE }
static const EXTRACT extract[] =
{
{ N_("RGB"), "RGB", TRUE, 3, FALSE, {CPN_RGBA_R, CPN_RGBA_G, CPN_RGBA_B} },
{ N_("RGBA"), "RGBA", TRUE, 4, FALSE, {CPN_RGBA_R, CPN_RGBA_G, CPN_RGBA_B, CPN_RGBA_A} },
{ N_("Red"), "RGB", FALSE, 1, FALSE, {CPN_RGBA_R} },
{ N_("Green"), "RGB", FALSE, 1, FALSE, {CPN_RGBA_G} },
{ N_("Blue"), "RGB", FALSE, 1, FALSE, {CPN_RGBA_B} },
{ N_("Alpha"), "RGBA", TRUE , 1, FALSE, {CPN_RGBA_A} },
{ N_("HSV"), "HSV", TRUE, 3, FALSE, {CPN_HSV_H, CPN_HSV_S, CPN_HSV_V} },
{ N_("Hue"), "HSV", FALSE, 1, FALSE, {CPN_HSV_H} },
{ N_("Saturation"), "HSV", FALSE, 1, FALSE, {CPN_HSV_S} },
{ N_("Value"), "HSV", FALSE, 1, FALSE, {CPN_HSV_V} },
{ N_("HSL"), "HSL", TRUE, 3, FALSE, {CPN_HSL_H, CPN_HSL_S, CPN_HSL_L} },
{ N_("Hue (HSL)"), "HSL", FALSE, 1, FALSE, {CPN_HSL_H} },
{ N_("Saturation (HSL)"), "HSL", FALSE, 1, FALSE, {CPN_HSL_S} },
{ N_("Lightness"), "HSL", FALSE, 1, FALSE, {CPN_HSL_L} },
{ N_("CMY"), "CMY", TRUE, 3, FALSE, {CPN_CMY_C, CPN_CMY_M, CPN_CMY_Y} },
{ N_("Cyan"), "CMY", FALSE, 1, FALSE, {CPN_CMY_C} },
{ N_("Magenta"), "CMY", FALSE, 1, FALSE, {CPN_CMY_M} },
{ N_("Yellow"), "CMY", FALSE, 1, FALSE, {CPN_CMY_Y} },
{ N_("CMYK"), "CMYK", TRUE, 4, FALSE, {CPN_CMYK_C, CPN_CMYK_M, CPN_CMYK_Y, CPN_CMYK_K} },
{ N_("Cyan_K"), "CMYK", FALSE, 1, FALSE, {CPN_CMYK_C} },
{ N_("Magenta_K"), "CMYK", FALSE, 1, FALSE, {CPN_CMYK_M} },
{ N_("Yellow_K"), "CMYK", FALSE, 1, FALSE, {CPN_CMYK_Y} },
{ N_("LAB"), "CIE Lab", TRUE, 3, FALSE, {CPN_LAB_L, CPN_LAB_A, CPN_LAB_B} },
{ N_("LCH"), "CIE LCH(ab)", TRUE, 3, FALSE, {CPN_LCH_L, CPN_LCH_C, CPN_LCH_H} },
{ N_("YCbCr_ITU_R470"), "Y'CbCr", TRUE, 3, FALSE, { CPN_YCBCR_Y, CPN_YCBCR_CB, CPN_YCBCR_CR} },
{ N_("YCbCr_ITU_R470_256"), "Y'CbCr", TRUE, 3, TRUE, { CPN_YCBCR_Y, CPN_YCBCR_CB, CPN_YCBCR_CR} },
{ N_("YCbCr_ITU_R709"), "Y'CbCr709", TRUE, 3, FALSE, { CPN_YCBCR709_Y, CPN_YCBCR709_CB, CPN_YCBCR709_CR} },
{ N_("YCbCr_ITU_R709_256"), "Y'CbCr709", TRUE, 3, TRUE, { CPN_YCBCR709_Y, CPN_YCBCR709_CB, CPN_YCBCR709_CR} }
};
static const Extract extract[] =
{
{ N_("RGB"), "RGB", TRUE, 3, FALSE, { CPN_RGBA_R, CPN_RGBA_G, CPN_RGBA_B } },
{ N_("RGBA"), "RGBA", TRUE, 4, FALSE, { CPN_RGBA_R, CPN_RGBA_G, CPN_RGBA_B, CPN_RGBA_A } },
{ N_("Red"), "RGB", FALSE, 1, FALSE, { CPN_RGBA_R } },
{ N_("Green"), "RGB", FALSE, 1, FALSE, { CPN_RGBA_G } },
{ N_("Blue"), "RGB", FALSE, 1, FALSE, { CPN_RGBA_B } },
{ N_("Alpha"), "RGBA", TRUE , 1, FALSE, { CPN_RGBA_A } },
{ N_("HSV"), "HSV", TRUE, 3, FALSE, { CPN_HSV_H, CPN_HSV_S, CPN_HSV_V } },
{ N_("Hue"), "HSV", FALSE, 1, FALSE, { CPN_HSV_H } },
{ N_("Saturation"), "HSV", FALSE, 1, FALSE, { CPN_HSV_S } },
{ N_("Value"), "HSV", FALSE, 1, FALSE, { CPN_HSV_V } },
{ N_("HSL"), "HSL", TRUE, 3, FALSE, { CPN_HSL_H, CPN_HSL_S, CPN_HSL_L } },
{ N_("Hue (HSL)"), "HSL", FALSE, 1, FALSE, { CPN_HSL_H } },
{ N_("Saturation (HSL)"), "HSL", FALSE, 1, FALSE, { CPN_HSL_S } },
{ N_("Lightness"), "HSL", FALSE, 1, FALSE, { CPN_HSL_L } },
{ N_("CMY"), "CMY", TRUE, 3, FALSE, { CPN_CMY_C, CPN_CMY_M, CPN_CMY_Y } },
{ N_("Cyan"), "CMY", FALSE, 1, FALSE, { CPN_CMY_C } },
{ N_("Magenta"), "CMY", FALSE, 1, FALSE, { CPN_CMY_M } },
{ N_("Yellow"), "CMY", FALSE, 1, FALSE, { CPN_CMY_Y } },
{ N_("CMYK"), "CMYK", TRUE, 4, FALSE, { CPN_CMYK_C, CPN_CMYK_M, CPN_CMYK_Y, CPN_CMYK_K } },
{ N_("Cyan_K"), "CMYK", FALSE, 1, FALSE, { CPN_CMYK_C } },
{ N_("Magenta_K"), "CMYK", FALSE, 1, FALSE, { CPN_CMYK_M } },
{ N_("Yellow_K"), "CMYK", FALSE, 1, FALSE, { CPN_CMYK_Y } },
{ N_("LAB"), "CIE Lab", TRUE, 3, FALSE, { CPN_LAB_L, CPN_LAB_A, CPN_LAB_B } },
{ N_("LCH"), "CIE LCH(ab)", TRUE, 3, FALSE, { CPN_LCH_L, CPN_LCH_C, CPN_LCH_H } },
{ N_("YCbCr_ITU_R470"), "Y'CbCr", TRUE, 3, FALSE, { CPN_YCBCR_Y, CPN_YCBCR_CB, CPN_YCBCR_CR} },
{ N_("YCbCr_ITU_R470_256"), "Y'CbCr", TRUE, 3, TRUE, { CPN_YCBCR_Y, CPN_YCBCR_CB, CPN_YCBCR_CR} },
{ N_("YCbCr_ITU_R709"), "Y'CbCr709", TRUE, 3, FALSE, { CPN_YCBCR709_Y, CPN_YCBCR709_CB, CPN_YCBCR709_CR} },
{ N_("YCbCr_ITU_R709_256"), "Y'CbCr709", TRUE, 3, TRUE, { CPN_YCBCR709_Y, CPN_YCBCR709_CB, CPN_YCBCR709_CR} }
};
const GimpPlugInInfo PLUG_IN_INFO =
{
......@@ -224,7 +219,7 @@ const GimpPlugInInfo PLUG_IN_INFO =
run, /* run_proc */
};
static DecoVals decovals =
static DecomposeVals decovals =
{
"rgb", /* Decompose type */
TRUE, /* Decompose to Layers */
......@@ -255,7 +250,7 @@ query (void)
};
GString *type_desc;
int i;
gint i;
type_desc = g_string_new ("What to decompose: ");
g_string_append_c (type_desc, '"');
......@@ -428,7 +423,7 @@ run (const gchar *name,
/* Store data */
if (run_mode == GIMP_RUN_INTERACTIVE)
gimp_set_data (PLUG_IN_PROC, &decovals, sizeof (DecoVals));
gimp_set_data (PLUG_IN_PROC, &decovals, sizeof (DecomposeVals));
}
gimp_progress_end ();
......@@ -456,7 +451,8 @@ decompose (gint32 image_ID,
GeglBuffer *src_buffer;
GeglBuffer *dst_buffer[MAX_EXTRACT_IMAGES];
GimpPrecision precision;
gboolean requirments = FALSE, decomp_has_alpha = FALSE;
gboolean requirments = FALSE;
gboolean decomp_has_alpha = FALSE;
extract_idx = -1; /* Search extract type */
for (j = 0; j < G_N_ELEMENTS (extract); j++)
......@@ -479,8 +475,8 @@ decompose (gint32 image_ID,
for (j = 0; j < num_layers; j++)
{
/* FIXME: Not 100% reliable */
decomp_has_alpha |= !g_strcmp0 ("alpha", extract[extract_idx].component[j].babl_name);
decomp_has_alpha |= !g_strcmp0 ("A", extract[extract_idx].component[j].babl_name);
decomp_has_alpha |= ! g_strcmp0 ("alpha", extract[extract_idx].component[j].babl_name);
decomp_has_alpha |= ! g_strcmp0 ("A", extract[extract_idx].component[j].babl_name);
}
requirments |= (gimp_drawable_is_rgb (drawable_ID));
......@@ -505,6 +501,7 @@ decompose (gint32 image_ID,
{
gchar *filename;
gdouble xres, yres;
filename = generate_filename (image_ID, extract_idx, j);
gimp_image_get_resolution (image_ID, &xres, &yres);
......@@ -555,17 +552,17 @@ decompose (gint32 image_ID,
}
/* Create an image. Sets layer_ID, drawable and rgn. Returns image_ID */
/* Create an image. Returns layer_ID and image_ID */
static gint32
create_new_image (const gchar *filename,
const gchar *layername,
guint width,
guint height,
GimpImageBaseType type,
GimpPrecision precision,
gdouble xres,
gdouble yres,
gint32 *layer_ID)
create_new_image (const gchar *filename,
const gchar *layername,
guint width,
guint height,
GimpImageBaseType type,
GimpPrecision precision,
gdouble xres,
gdouble yres,
gint32 *layer_ID)
{
gint32 image_ID;
......@@ -583,12 +580,12 @@ create_new_image (const gchar *filename,
static gint32
create_new_layer (gint32 image_ID,
gint position,
const gchar *layername,
guint width,
guint height,
GimpImageBaseType type)
create_new_layer (gint32 image_ID,
gint position,
const gchar *layername,
guint width,
guint height,
GimpImageBaseType type)
{
gint32 layer_ID;
GimpImageType gdtype = GIMP_RGB_IMAGE;
......@@ -606,7 +603,7 @@ create_new_layer (gint32 image_ID,
break;
}
if (!layername)
if (! layername)
layername = _("Background");
layer_ID = gimp_layer_new (image_ID, layername, width, height,
......@@ -623,11 +620,14 @@ transfer_registration_color (GeglBuffer *src,
GeglBuffer **dst,
gint count)
{
GimpRGB color, test;
GimpRGB color, test;
GeglBufferIterator *gi;
const Babl *src_format, *dst_format;
gint i, src_bpp, dst_bpp;
gdouble white;
const Babl *src_format;
const Babl *dst_format;
gint src_bpp;
gint dst_bpp;
gint i;
gdouble white;
gimp_context_get_foreground (&color);
white = 1.0;
......@@ -649,25 +649,26 @@ transfer_registration_color (GeglBuffer *src,
while (gegl_buffer_iterator_next (gi))
{
guint j, k;
gpointer src_data, dst_data[MAX_EXTRACT_IMAGES];
gpointer src_data;
gpointer dst_data[MAX_EXTRACT_IMAGES];
gint j, k;
src_data = gi->data[0];
for (j = 0; j < count; j++)
dst_data[j] = gi->data[j+1];
dst_data[j] = gi->data[j + 1];
for (k = 0; k < gi->length; k++)
{
gulong pos;
pos = k * src_bpp;
gulong pos = k * src_bpp;
gimp_rgba_set_pixel (&test, src_format, ((guchar *)src_data) + pos);
if (gimp_rgb_distance (&test, &color) < 1e-6)