summaryrefslogtreecommitdiffstats
path: root/src/sp-image.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2006-04-06 07:20:13 +0000
committerjoncruz <joncruz@users.sourceforge.net>2006-04-06 07:20:13 +0000
commitda1795619ff661cbb262991e3062994a13ddd993 (patch)
treeed333019b9f98d0ae69bb942f49be6246f5584d4 /src/sp-image.cpp
parentshare/keyboards -> share/keys; first shot at configurable keymaps (diff)
downloadinkscape-da1795619ff661cbb262991e3062994a13ddd993.tar.gz
inkscape-da1795619ff661cbb262991e3062994a13ddd993.zip
Adding rendering-intent to <color-profile>
(bzr r438)
Diffstat (limited to 'src/sp-image.cpp')
-rw-r--r--src/sp-image.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/sp-image.cpp b/src/sp-image.cpp
index 6a848c1bc..83b623dbc 100644
--- a/src/sp-image.cpp
+++ b/src/sp-image.cpp
@@ -38,6 +38,7 @@
#include <png.h>
#if ENABLE_LCMS
#include "color-profile-fns.h"
+#include "color-profile.h"
#endif // ENABLE_LCMS
/*
* SPImage
@@ -665,16 +666,36 @@ sp_image_update (SPObject *object, SPCtx *ctx, unsigned int flags)
guchar* px = gdk_pixbuf_get_pixels( pixbuf );
if ( px ) {
- cmsHPROFILE prof = Inkscape::colorprofile_get_handle( SP_OBJECT_DOCUMENT( object ), image->color_profile );
+ guint profIntent = Inkscape::RENDERING_INTENT_UNKNOWN;
+ cmsHPROFILE prof = Inkscape::colorprofile_get_handle( SP_OBJECT_DOCUMENT( object ),
+ &profIntent,
+ image->color_profile );
if ( prof ) {
icProfileClassSignature profileClass = cmsGetDeviceClass( prof );
if ( profileClass != icSigNamedColorClass ) {
+ int intent = INTENT_PERCEPTUAL;
+ switch ( profIntent ) {
+ case Inkscape::RENDERING_INTENT_RELATIVE_COLORIMETRIC:
+ intent = INTENT_RELATIVE_COLORIMETRIC;
+ break;
+ case Inkscape::RENDERING_INTENT_SATURATION:
+ intent = INTENT_SATURATION;
+ break;
+ case Inkscape::RENDERING_INTENT_ABSOLUTE_COLORIMETRIC:
+ intent = INTENT_ABSOLUTE_COLORIMETRIC;
+ break;
+ case Inkscape::RENDERING_INTENT_PERCEPTUAL:
+ case Inkscape::RENDERING_INTENT_UNKNOWN:
+ case Inkscape::RENDERING_INTENT_AUTO:
+ default:
+ intent = INTENT_PERCEPTUAL;
+ }
cmsHPROFILE destProf = cmsCreate_sRGBProfile();
cmsHTRANSFORM transf = cmsCreateTransform( prof,
TYPE_RGBA_8,
destProf,
TYPE_RGBA_8,
- INTENT_PERCEPTUAL, 0 );
+ intent, 0 );
if ( transf ) {
guchar* currLine = px;
for ( int y = 0; y < imageheight; y++ ) {