Argh, this was meant to be squashed into the previous commit...
This commit is contained in:
@ -53,8 +53,7 @@ controller_libadd = $(modules_libadd)
|
||||
|
||||
libcolor_selector_cmyk_la_SOURCES = color-selector-cmyk.c
|
||||
libcolor_selector_cmyk_la_LDFLAGS = -avoid-version -module $(no_undefined)
|
||||
libcolor_selector_cmyk_la_CFLAGS = $(LCMS_CFLAGS)
|
||||
libcolor_selector_cmyk_la_LIBADD = $(libgimpconfig) $(color_selector_libadd) $(LCMS_LIBS)
|
||||
libcolor_selector_cmyk_la_LIBADD = $(libgimpconfig) $(color_selector_libadd)
|
||||
|
||||
libcolor_selector_water_la_SOURCES = color-selector-water.c
|
||||
libcolor_selector_water_la_LDFLAGS = -avoid-version -module $(no_undefined)
|
||||
@ -77,18 +76,12 @@ libdisplay_filter_high_contrast_la_LDFLAGS = -avoid-version -module $(no_undefin
|
||||
libdisplay_filter_high_contrast_la_LIBADD = $(display_filter_libadd)
|
||||
|
||||
libdisplay_filter_lcms_la_SOURCES = display-filter-lcms.c
|
||||
libdisplay_filter_lcms_la_CFLAGS = $(LCMS_CFLAGS)
|
||||
libdisplay_filter_lcms_la_LDFLAGS = -avoid-version -module $(no_undefined)
|
||||
libdisplay_filter_lcms_la_LIBADD = $(display_filter_libadd) $(LCMS_LIBS)
|
||||
|
||||
if PLATFORM_WIN32
|
||||
libdisplay_filter_lcms_la_LIBADD += -lgdi32
|
||||
endif
|
||||
libdisplay_filter_lcms_la_LIBADD = $(display_filter_libadd)
|
||||
|
||||
libdisplay_filter_proof_la_SOURCES = display-filter-proof.c
|
||||
libdisplay_filter_proof_la_CFLAGS = $(LCMS_CFLAGS)
|
||||
libdisplay_filter_proof_la_LDFLAGS = -avoid-version -module $(no_undefined)
|
||||
libdisplay_filter_proof_la_LIBADD = $(display_filter_libadd) $(LCMS_LIBS)
|
||||
libdisplay_filter_proof_la_LIBADD = $(display_filter_libadd)
|
||||
|
||||
libcontroller_linux_input_la_SOURCES = \
|
||||
gimpinputdevicestore-gudev.c \
|
||||
|
@ -17,8 +17,6 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <lcms2.h>
|
||||
|
||||
#include <gegl.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
@ -44,17 +42,17 @@ typedef struct _ColorselCmykClass ColorselCmykClass;
|
||||
|
||||
struct _ColorselCmyk
|
||||
{
|
||||
GimpColorSelector parent_instance;
|
||||
GimpColorSelector parent_instance;
|
||||
|
||||
GimpColorConfig *config;
|
||||
cmsHTRANSFORM rgb2cmyk;
|
||||
cmsHTRANSFORM cmyk2rgb;
|
||||
GimpColorConfig *config;
|
||||
GimpColorTransform *rgb2cmyk;
|
||||
GimpColorTransform *cmyk2rgb;
|
||||
|
||||
GimpCMYK cmyk;
|
||||
GtkAdjustment *adj[4];
|
||||
GtkWidget *name_label;
|
||||
GimpCMYK cmyk;
|
||||
GtkAdjustment *adj[4];
|
||||
GtkWidget *name_label;
|
||||
|
||||
gboolean in_destruction;
|
||||
gboolean in_destruction;
|
||||
};
|
||||
|
||||
struct _ColorselCmykClass
|
||||
@ -228,7 +226,12 @@ colorsel_cmyk_set_color (GimpColorSelector *selector,
|
||||
rgb_values[1] = rgb->g;
|
||||
rgb_values[2] = rgb->b;
|
||||
|
||||
cmsDoTransform (module->rgb2cmyk, rgb_values, cmyk_values, 1);
|
||||
gimp_color_transform_process_pixels (module->rgb2cmyk,
|
||||
babl_format ("R'G'B' double"),
|
||||
rgb_values,
|
||||
babl_format ("CMYK double"),
|
||||
cmyk_values,
|
||||
1);
|
||||
|
||||
module->cmyk.c = cmyk_values[0] / 100.0;
|
||||
module->cmyk.m = cmyk_values[1] / 100.0;
|
||||
@ -331,7 +334,12 @@ colorsel_cmyk_adj_update (GtkAdjustment *adj,
|
||||
cmyk_values[2] = module->cmyk.y * 100.0;
|
||||
cmyk_values[3] = module->cmyk.k * 100.0;
|
||||
|
||||
cmsDoTransform (module->cmyk2rgb, cmyk_values, rgb_values, 1);
|
||||
gimp_color_transform_process_pixels (module->rgb2cmyk,
|
||||
babl_format ("CMYK double"),
|
||||
cmyk_values,
|
||||
babl_format ("R'G'B' double"),
|
||||
rgb_values,
|
||||
1);
|
||||
|
||||
selector->rgb.r = rgb_values[0];
|
||||
selector->rgb.g = rgb_values[1];
|
||||
@ -350,24 +358,22 @@ colorsel_cmyk_adj_update (GtkAdjustment *adj,
|
||||
static void
|
||||
colorsel_cmyk_config_changed (ColorselCmyk *module)
|
||||
{
|
||||
GimpColorSelector *selector = GIMP_COLOR_SELECTOR (module);
|
||||
GimpColorConfig *config = module->config;
|
||||
cmsUInt32Number flags = 0;
|
||||
GimpColorProfile *rgb_profile = NULL;
|
||||
GimpColorProfile *cmyk_profile = NULL;
|
||||
cmsHPROFILE rgb_lcms;
|
||||
cmsHPROFILE cmyk_lcms;
|
||||
gchar *text;
|
||||
GimpColorSelector *selector = GIMP_COLOR_SELECTOR (module);
|
||||
GimpColorConfig *config = module->config;
|
||||
GimpColorTransformFlags flags = 0;
|
||||
GimpColorProfile *rgb_profile = NULL;
|
||||
GimpColorProfile *cmyk_profile = NULL;
|
||||
gchar *text;
|
||||
|
||||
if (module->rgb2cmyk)
|
||||
{
|
||||
cmsDeleteTransform (module->rgb2cmyk);
|
||||
g_object_unref (module->rgb2cmyk);
|
||||
module->rgb2cmyk = NULL;
|
||||
}
|
||||
|
||||
if (module->cmyk2rgb)
|
||||
{
|
||||
cmsDeleteTransform (module->cmyk2rgb);
|
||||
g_object_unref (module->cmyk2rgb);
|
||||
module->cmyk2rgb = NULL;
|
||||
}
|
||||
|
||||
@ -392,23 +398,24 @@ colorsel_cmyk_config_changed (ColorselCmyk *module)
|
||||
gimp_color_profile_get_summary (cmyk_profile),
|
||||
NULL);
|
||||
|
||||
rgb_lcms = gimp_color_profile_get_lcms_profile (rgb_profile);
|
||||
cmyk_lcms = gimp_color_profile_get_lcms_profile (cmyk_profile);
|
||||
|
||||
if (config->display_intent ==
|
||||
GIMP_COLOR_RENDERING_INTENT_RELATIVE_COLORIMETRIC)
|
||||
{
|
||||
flags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
|
||||
flags |= GIMP_COLOR_TRANSFORM_FLAGS_BLACK_POINT_COMPENSATION;
|
||||
}
|
||||
|
||||
module->rgb2cmyk = cmsCreateTransform (rgb_lcms, TYPE_RGB_DBL,
|
||||
cmyk_lcms, TYPE_CMYK_DBL,
|
||||
config->display_intent,
|
||||
flags);
|
||||
module->cmyk2rgb = cmsCreateTransform (cmyk_lcms, TYPE_CMYK_DBL,
|
||||
rgb_lcms, TYPE_RGB_DBL,
|
||||
config->display_intent,
|
||||
flags);
|
||||
module->rgb2cmyk = gimp_color_transform_new (rgb_profile,
|
||||
babl_format ("R'G'B' double"),
|
||||
cmyk_profile,
|
||||
babl_format ("CMYK double"),
|
||||
config->display_intent,
|
||||
flags);
|
||||
module->cmyk2rgb = gimp_color_transform_new (cmyk_profile,
|
||||
babl_format ("CMYK double"),
|
||||
rgb_profile,
|
||||
babl_format ("R'G'B' double"),
|
||||
config->display_intent,
|
||||
flags);
|
||||
|
||||
out:
|
||||
|
||||
|
@ -21,14 +21,6 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
#define STRICT
|
||||
#include <windows.h>
|
||||
#define LCMS_WIN_TYPES_ALREADY_DEFINED
|
||||
#endif
|
||||
|
||||
#include <lcms2.h>
|
||||
|
||||
#include <gegl.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
|
@ -17,8 +17,6 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <lcms2.h>
|
||||
|
||||
#include <gegl.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
@ -43,13 +41,13 @@ typedef struct _CdisplayProofClass CdisplayProofClass;
|
||||
|
||||
struct _CdisplayProof
|
||||
{
|
||||
GimpColorDisplay parent_instance;
|
||||
GimpColorDisplay parent_instance;
|
||||
|
||||
gint intent;
|
||||
gboolean bpc;
|
||||
gchar *profile;
|
||||
gint intent;
|
||||
gboolean bpc;
|
||||
gchar *profile;
|
||||
|
||||
cmsHTRANSFORM transform;
|
||||
GimpColorTransform *transform;
|
||||
};
|
||||
|
||||
struct _CdisplayProofClass
|
||||
@ -182,7 +180,7 @@ cdisplay_proof_finalize (GObject *object)
|
||||
|
||||
if (proof->transform)
|
||||
{
|
||||
cmsDeleteTransform (proof->transform);
|
||||
g_object_unref (proof->transform);
|
||||
proof->transform = NULL;
|
||||
}
|
||||
|
||||
@ -247,22 +245,12 @@ cdisplay_proof_convert_buffer (GimpColorDisplay *display,
|
||||
GeglBuffer *buffer,
|
||||
GeglRectangle *area)
|
||||
{
|
||||
CdisplayProof *proof = CDISPLAY_PROOF (display);
|
||||
GeglBufferIterator *iter;
|
||||
CdisplayProof *proof = CDISPLAY_PROOF (display);
|
||||
|
||||
if (! proof->transform)
|
||||
return;
|
||||
|
||||
iter = gegl_buffer_iterator_new (buffer, area, 0,
|
||||
babl_format ("R'G'B'A float"),
|
||||
GEGL_ACCESS_READWRITE, GEGL_ABYSS_NONE);
|
||||
|
||||
while (gegl_buffer_iterator_next (iter))
|
||||
{
|
||||
gfloat *data = iter->data[0];
|
||||
|
||||
cmsDoTransform (proof->transform, data, data, iter->length);
|
||||
}
|
||||
if (proof->transform)
|
||||
gimp_color_transform_process_buffer (proof->transform,
|
||||
buffer, area,
|
||||
buffer, area);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -351,7 +339,7 @@ cdisplay_proof_changed (GimpColorDisplay *display)
|
||||
|
||||
if (proof->transform)
|
||||
{
|
||||
cmsDeleteTransform (proof->transform);
|
||||
g_object_unref (proof->transform);
|
||||
proof->transform = NULL;
|
||||
}
|
||||
|
||||
@ -366,22 +354,20 @@ cdisplay_proof_changed (GimpColorDisplay *display)
|
||||
|
||||
if (proof_profile)
|
||||
{
|
||||
cmsHPROFILE rgb_lcms;
|
||||
cmsHPROFILE proof_lcms;
|
||||
cmsUInt32Number flags = cmsFLAGS_SOFTPROOFING;
|
||||
|
||||
rgb_lcms = gimp_color_profile_get_lcms_profile (rgb_profile);
|
||||
proof_lcms = gimp_color_profile_get_lcms_profile (proof_profile);
|
||||
GimpColorTransformFlags flags = 0;
|
||||
|
||||
if (proof->bpc)
|
||||
flags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
|
||||
flags |= GIMP_COLOR_TRANSFORM_FLAGS_BLACK_POINT_COMPENSATION;
|
||||
|
||||
proof->transform = cmsCreateProofingTransform (rgb_lcms, TYPE_RGBA_FLT,
|
||||
rgb_lcms, TYPE_RGBA_FLT,
|
||||
proof_lcms,
|
||||
proof->intent,
|
||||
proof->intent,
|
||||
flags);
|
||||
proof->transform =
|
||||
gimp_color_transform_new_proofing (rgb_profile,
|
||||
babl_format ("R'G'B'A float"),
|
||||
rgb_profile,
|
||||
babl_format ("R'G'B'A float"),
|
||||
proof_profile,
|
||||
proof->intent,
|
||||
proof->intent,
|
||||
flags);
|
||||
|
||||
g_object_unref (proof_profile);
|
||||
}
|
||||
|
Reference in New Issue
Block a user