summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2007-10-03 07:19:17 +0000
committerjoncruz <joncruz@users.sourceforge.net>2007-10-03 07:19:17 +0000
commitc6ec6595f756a891fc7b210f71d33065b96b1d55 (patch)
tree95e6a6a550762eeda74f33a7075b60b534508d09 /src
parentInitial cut of softproofing (diff)
downloadinkscape-c6ec6595f756a891fc7b210f71d33065b96b1d55.tar.gz
inkscape-c6ec6595f756a891fc7b210f71d33065b96b1d55.zip
Added profile intent options
(bzr r3827)
Diffstat (limited to 'src')
-rw-r--r--src/color-profile.cpp13
-rw-r--r--src/preferences-skeleton.h6
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp15
-rw-r--r--src/ui/dialog/inkscape-preferences.h2
4 files changed, 31 insertions, 5 deletions
diff --git a/src/color-profile.cpp b/src/color-profile.cpp
index 7cd4df598..b7c8c40ed 100644
--- a/src/color-profile.cpp
+++ b/src/color-profile.cpp
@@ -546,6 +546,8 @@ int errorHandlerCB(int ErrorCode, const char *ErrorText)
}
static bool gamutWarn = false;
+static int lastIntent = INTENT_PERCEPTUAL;
+static int lastProofIntent = INTENT_PERCEPTUAL;
static cmsHTRANSFORM transf = 0;
static cmsHPROFILE srcprof = 0;
@@ -673,12 +675,17 @@ cmsHPROFILE Inkscape::colorprofile_get_proof_profile_handle()
cmsHTRANSFORM Inkscape::colorprofile_get_display_transform()
{
bool warn = prefs_get_int_attribute_limited( "options.softproof", "gamutwarn", 0, 0, 1 );
- if ( (warn != gamutWarn) ) {
+ int intent = prefs_get_int_attribute_limited( "options.displayprofile", "intent", 0, 0, 3 );
+ int proofIntent = prefs_get_int_attribute_limited( "options.softproof", "intent", 0, 0, 3 );
+
+ if ( (warn != gamutWarn) || (lastIntent != intent) || (lastProofIntent != proofIntent)) {
gamutWarn = warn;
if ( transf ) {
cmsDeleteTransform(transf);
transf = 0;
}
+ lastIntent = intent;
+ lastProofIntent = proofIntent;
}
// Fecth these now, as they might clear the transform as a side effect.
@@ -695,9 +702,9 @@ cmsHTRANSFORM Inkscape::colorprofile_get_display_transform()
dwFlags |= cmsFLAGS_GAMUTCHECK;
}
cmsSetAlarmCodes(0, 255, 0);
- transf = cmsCreateProofingTransform( srcprof, TYPE_RGB_8, hprof, TYPE_RGB_8, proofProf, INTENT_PERCEPTUAL, INTENT_PERCEPTUAL, dwFlags );
+ transf = cmsCreateProofingTransform( srcprof, TYPE_RGB_8, hprof, TYPE_RGB_8, proofProf, intent, proofIntent, dwFlags );
} else if ( hprof ) {
- transf = cmsCreateTransform( srcprof, TYPE_RGB_8, hprof, TYPE_RGB_8, INTENT_PERCEPTUAL, 0 );
+ transf = cmsCreateTransform( srcprof, TYPE_RGB_8, hprof, TYPE_RGB_8, intent, 0 );
}
}
diff --git a/src/preferences-skeleton.h b/src/preferences-skeleton.h
index 373323097..b01d5a3de 100644
--- a/src/preferences-skeleton.h
+++ b/src/preferences-skeleton.h
@@ -182,12 +182,14 @@ static char const preferences_skeleton[] =
" <group id=\"cursortolerance\" value=\"8.0\"/>\n"
" <group id=\"dragtolerance\" value=\"4.0\"/>\n"
" <group\n"
-" id=\"displayprofile\""
+" id=\"displayprofile\"\n"
" enable=\"0\"\n"
+" intent=\"0\"\n"
" uri=\"\" />\n"
" <group\n"
-" id=\"softproof\""
+" id=\"softproof\"\n"
" enable=\"0\"\n"
+" intent=\"0\"\n"
" gamutwarn=\"0\"\n"
" uri=\"\" />\n"
" <group id=\"savewindowgeometry\" value=\"1\"/>\n"
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 0e83addec..964073782 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -672,6 +672,14 @@ void InkscapePreferences::initPageMisc()
_page_misc.add_line( false, "", _misc_cms_display, "",
_("Enables application of the display using an ICC profile."), true);
+ int const numIntents = 4;
+ Glib::ustring intentLabels[numIntents] = {_("Perceptual"), _("Relative Colorimetric"), _("Saturation"), _("Absolute Colorimetric")};
+ int intentValues[numIntents] = {0, 1, 2, 3};
+
+ _misc_cms_intent.init("options.displayprofile", "intent", intentLabels, intentValues, numIntents, 0);
+ _page_misc.add_line( false, _("Display intent:"), _misc_cms_intent, "",
+ _("The rendering intent to use to calibrate display output."), true);
+
_page_misc.add_line( false, _("Display profile:"), _misc_cms_display_profile, "",
_("The ICC profile to use to calibrate display output."), true);
@@ -684,6 +692,10 @@ void InkscapePreferences::initPageMisc()
_page_misc.add_line( false, "", _misc_cms_gamutwarn, "",
_("Highlights colors that are out of gamut for the target device."), true);
+ _misc_cms_proof_intent.init("options.softproof", "intent", intentLabels, intentValues, numIntents, 0);
+ _page_misc.add_line( false, _("Device intent:"), _misc_cms_proof_intent, "",
+ _("The rendering intent to use to calibrate display output."), true);
+
_page_misc.add_line( false, _("Device profile:"), _misc_cms_proof_profile, "",
_("The ICC profile to use to simulate device output."), true);
@@ -720,6 +732,9 @@ void InkscapePreferences::initPageMisc()
_misc_cms_softproof.signal_toggled().connect( sigc::ptr_fun(forceUpdates) );
_misc_cms_gamutwarn.signal_toggled().connect( sigc::ptr_fun(forceUpdates) );
+ _misc_cms_intent.signal_changed().connect( sigc::ptr_fun(forceUpdates) );
+ _misc_cms_proof_intent.signal_changed().connect( sigc::ptr_fun(forceUpdates) );
+
_misc_cms_display_profile.signal_changed().connect( sigc::bind( sigc::ptr_fun(profileComboChanged), &_misc_cms_display_profile) );
_misc_cms_proof_profile.signal_changed().connect( sigc::bind( sigc::ptr_fun(proofComboChanged), &_misc_cms_proof_profile) );
#else
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index 58c908a9a..f88c5e0c6 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -163,10 +163,12 @@ protected:
PrefCombo _misc_overs_bitmap;
PrefCheckButton _misc_cms_display;
+ PrefCombo _misc_cms_intent;
Gtk::ComboBoxText _misc_cms_display_profile;
PrefCheckButton _misc_cms_softproof;
PrefCheckButton _misc_cms_gamutwarn;
+ PrefCombo _misc_cms_proof_intent;
Gtk::ComboBoxText _misc_cms_proof_profile;
PrefEntryButtonHBox _importexport_ocal_url;