From e199f1e0215b12b67d387d99d5941aa3e4cbb0cd Mon Sep 17 00:00:00 2001 From: joncruz Date: Wed, 3 Oct 2007 07:19:17 +0000 Subject: [PATCH] Added profile intent options --- src/color-profile.cpp | 13 ++++++++++--- src/preferences-skeleton.h | 6 ++++-- src/ui/dialog/inkscape-preferences.cpp | 15 +++++++++++++++ src/ui/dialog/inkscape-preferences.h | 2 ++ 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[] = " \n" " \n" " \n" " \n" " \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; -- 2.30.2