summaryrefslogtreecommitdiff
path: root/print/poppler
diff options
context:
space:
mode:
authordrochner <drochner>2009-09-09 19:57:05 +0000
committerdrochner <drochner>2009-09-09 19:57:05 +0000
commitf439da631ce492e767b7806dc9c74faac2251ef1 (patch)
treef1037fe6cbd8bdd5191f3af345b54d6c694aca33 /print/poppler
parentb7361e5f29874731c8f95e98fed213bd84c40ee8 (diff)
downloadpkgsrc-f439da631ce492e767b7806dc9c74faac2251ef1.tar.gz
update to 0.12.0
This is a major update, switches to the 0.12 release branch. Most notable change is that the color management stuff which we had as patches in pkgsrc is official now. Otherwise - many fixes and enhancements. (while this is a .0 release I've been tracking the 0.11.x snapshots and release candidate for a while so I don't expect big problems)
Diffstat (limited to 'print/poppler')
-rw-r--r--print/poppler/Makefile5
-rw-r--r--print/poppler/Makefile.common4
-rw-r--r--print/poppler/buildlink3.mk4
-rw-r--r--print/poppler/distinfo21
-rw-r--r--print/poppler/patches/patch-ab23
-rw-r--r--print/poppler/patches/patch-ag10
-rw-r--r--print/poppler/patches/patch-ai313
-rw-r--r--print/poppler/patches/patch-aj51
-rw-r--r--print/poppler/patches/patch-ak27
-rw-r--r--print/poppler/patches/patch-al22
-rw-r--r--print/poppler/patches/patch-am22
-rw-r--r--print/poppler/patches/patch-an107
-rw-r--r--print/poppler/patches/patch-ca936
-rw-r--r--print/poppler/patches/patch-cb156
14 files changed, 36 insertions, 1665 deletions
diff --git a/print/poppler/Makefile b/print/poppler/Makefile
index 8fcb5a8b055..26f7fddd9bb 100644
--- a/print/poppler/Makefile
+++ b/print/poppler/Makefile
@@ -1,10 +1,8 @@
-# $NetBSD: Makefile,v 1.42 2009/08/26 19:56:42 sno Exp $
+# $NetBSD: Makefile,v 1.43 2009/09/09 19:57:05 drochner Exp $
#
.include "../../print/poppler/Makefile.common"
-PKGREVISION= 2
-
COMMENT= PDF rendering library
MAINTAINER= reed@reedmedia.net
@@ -53,5 +51,6 @@ post-install:
.include "../../fonts/fontconfig/buildlink3.mk"
.include "../../graphics/jpeg/buildlink3.mk"
+.include "../../graphics/png/buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/print/poppler/Makefile.common b/print/poppler/Makefile.common
index 5e060abad15..4fe421ebfdc 100644
--- a/print/poppler/Makefile.common
+++ b/print/poppler/Makefile.common
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.30 2009/05/25 21:05:23 drochner Exp $
+# $NetBSD: Makefile.common,v 1.31 2009/09/09 19:57:05 drochner Exp $
#
# used by print/poppler/Makefile
# used by print/poppler-glib/Makefile
@@ -7,7 +7,7 @@
# used by print/poppler-qt4/Makefile
# used by print/poppler-utils/Makefile
-POPPLER_VERS= 0.10.7
+POPPLER_VERS= 0.12.0
DISTNAME= poppler-${POPPLER_VERS}
CATEGORIES= print
MASTER_SITES= http://poppler.freedesktop.org/
diff --git a/print/poppler/buildlink3.mk b/print/poppler/buildlink3.mk
index 4ad5d4d0b0c..dc0def0265c 100644
--- a/print/poppler/buildlink3.mk
+++ b/print/poppler/buildlink3.mk
@@ -1,4 +1,4 @@
-# $NetBSD: buildlink3.mk,v 1.17 2009/08/26 19:56:42 sno Exp $
+# $NetBSD: buildlink3.mk,v 1.18 2009/09/09 19:57:05 drochner Exp $
BUILDLINK_TREE+= poppler
@@ -6,7 +6,7 @@ BUILDLINK_TREE+= poppler
POPPLER_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.poppler+= poppler>=0.5.1
-BUILDLINK_ABI_DEPENDS.poppler+= poppler>=0.10.7nb2
+BUILDLINK_ABI_DEPENDS.poppler+= poppler>=0.11.2
BUILDLINK_PKGSRCDIR.poppler?= ../../print/poppler
pkgbase := poppler
diff --git a/print/poppler/distinfo b/print/poppler/distinfo
index 1c9e86db664..bb7165a6c40 100644
--- a/print/poppler/distinfo
+++ b/print/poppler/distinfo
@@ -1,16 +1,9 @@
-$NetBSD: distinfo,v 1.45 2009/07/28 18:22:49 drochner Exp $
+$NetBSD: distinfo,v 1.46 2009/09/09 19:57:05 drochner Exp $
-SHA1 (poppler-0.10.7.tar.gz) = 891284d3fcac9bb250218e3439e596778c7f5edb
-RMD160 (poppler-0.10.7.tar.gz) = a275742a11df1965e4b7d06115f071f67d781d8f
-Size (poppler-0.10.7.tar.gz) = 1531154 bytes
+SHA1 (poppler-0.12.0.tar.gz) = 6165cfc46340644e8750ab8a37f3a3d634144106
+RMD160 (poppler-0.12.0.tar.gz) = c90a6a437fb7b5e5c9c9cdaf72782be16cd8ae07
+Size (poppler-0.12.0.tar.gz) = 1595424 bytes
SHA1 (patch-aa) = 43c63c16d3a845e394a8eb0c3a321944fcf17615
-SHA1 (patch-ab) = 096382d2f7c240c7fbf5eee88d7ba5af5cf7cd1b
-SHA1 (patch-ag) = 0bf1bc080cad55792fe6cc761bf22ecccba7d13a
-SHA1 (patch-ai) = b58704153418b5e3b5d65a2e02e5a9b306b00cf7
-SHA1 (patch-aj) = 8bb1fe169bddb76ecc72129cc1dbd32030073dfd
-SHA1 (patch-ak) = ab4d0c91a6f2806b405954f8dab6e3d61a03b054
-SHA1 (patch-al) = b1d76a92a5ffad01543f0072a1a00e74e751a56f
-SHA1 (patch-am) = 2ee61c446ea85acde8c1ee798a0201901e565d55
-SHA1 (patch-an) = 357b88ed15a4d355b1532e0d95cc511b137b4c44
-SHA1 (patch-ca) = 5bd31c497c8cbfb6c1d6cb5b9183088113bef6e3
-SHA1 (patch-cb) = e8cfb16a0641788759b13cf5fcf97d82f9485adc
+SHA1 (patch-ab) = 6bde603d2934099631e057f022ab61b6ff965022
+SHA1 (patch-ag) = 89d4ca8d5325b703c953317f422501873d659ac6
+SHA1 (patch-ai) = 52376e12baaba63629156055d5254c29f6e89824
diff --git a/print/poppler/patches/patch-ab b/print/poppler/patches/patch-ab
index 650a1ab9910..fccc438af72 100644
--- a/print/poppler/patches/patch-ab
+++ b/print/poppler/patches/patch-ab
@@ -1,8 +1,8 @@
-$NetBSD: patch-ab,v 1.10 2009/05/25 21:05:24 drochner Exp $
+$NetBSD: patch-ab,v 1.11 2009/09/09 19:57:05 drochner Exp $
---- utils/Makefile.in.orig 2009-05-16 17:40:51.000000000 +0200
+--- utils/Makefile.in.orig 2009-08-18 21:04:22.000000000 +0200
+++ utils/Makefile.in
-@@ -51,7 +51,7 @@ mkinstalldirs = $(install_sh) -d
+@@ -52,7 +52,7 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h \
$(top_builddir)/poppler/poppler-config.h
CONFIG_CLEAN_FILES =
@@ -11,7 +11,7 @@ $NetBSD: patch-ab,v 1.10 2009/05/25 21:05:24 drochner Exp $
@BUILD_ABIWORD_OUTPUT_TRUE@am__EXEEXT_2 = pdftoabw$(EXEEXT)
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-@@ -61,19 +61,19 @@ am_pdffonts_OBJECTS = pdffonts.$(OBJEXT)
+@@ -62,25 +62,25 @@ am_pdffonts_OBJECTS = pdffonts.$(OBJEXT)
pdffonts_OBJECTS = $(am_pdffonts_OBJECTS)
pdffonts_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
@@ -34,7 +34,14 @@ $NetBSD: patch-ab,v 1.10 2009/05/25 21:05:24 drochner Exp $
$(am__DEPENDENCIES_1)
am__pdftoabw_SOURCES_DIST = pdftoabw.cc parseargs.c parseargs.h
@BUILD_ABIWORD_OUTPUT_TRUE@am_pdftoabw_OBJECTS = pdftoabw.$(OBJEXT) \
-@@ -88,25 +88,25 @@ am_pdftohtml_OBJECTS = pdftohtml.$(OBJEX
+ @BUILD_ABIWORD_OUTPUT_TRUE@ $(am__objects_1)
+ pdftoabw_OBJECTS = $(am_pdftoabw_OBJECTS)
+-am__DEPENDENCIES_2 = $(top_builddir)/poppler/libpoppler.la \
++am__DEPENDENCIES_2 = $(prefix)/lib/libpoppler.la \
+ $(am__DEPENDENCIES_1)
+ @BUILD_ABIWORD_OUTPUT_TRUE@pdftoabw_DEPENDENCIES = \
+ @BUILD_ABIWORD_OUTPUT_TRUE@ $(am__DEPENDENCIES_2) \
+@@ -89,25 +89,25 @@ am_pdftohtml_OBJECTS = pdftohtml.$(OBJEX
HtmlLinks.$(OBJEXT) HtmlOutputDev.$(OBJEXT) $(am__objects_1)
pdftohtml_OBJECTS = $(am_pdftohtml_OBJECTS)
pdftohtml_LDADD = $(LDADD)
@@ -66,7 +73,7 @@ $NetBSD: patch-ab,v 1.10 2009/05/25 21:05:24 drochner Exp $
$(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/poppler
depcomp = $(SHELL) $(top_srcdir)/depcomp
-@@ -307,12 +307,12 @@ top_build_prefix = @top_build_prefix@
+@@ -319,12 +319,12 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
win32_libs = @win32_libs@
@@ -83,8 +90,8 @@ $NetBSD: patch-ab,v 1.10 2009/05/25 21:05:24 drochner Exp $
+pdftoppm_manpage = pdftoppm.1
INCLUDES = \
-I$(top_srcdir) \
- -I$(top_srcdir)/utils \
-@@ -322,9 +322,10 @@ INCLUDES = \
+ -I$(top_srcdir)/goo \
+@@ -335,9 +335,10 @@ INCLUDES = \
$(ABIWORD_CFLAGS)
LDADD = \
diff --git a/print/poppler/patches/patch-ag b/print/poppler/patches/patch-ag
index d45527976ee..57b9692a17e 100644
--- a/print/poppler/patches/patch-ag
+++ b/print/poppler/patches/patch-ag
@@ -1,8 +1,8 @@
-$NetBSD: patch-ag,v 1.4 2008/10/24 23:28:53 wiz Exp $
+$NetBSD: patch-ag,v 1.5 2009/09/09 19:57:05 drochner Exp $
---- qt4/src/Makefile.in.orig 2008-10-09 19:13:21.000000000 +0000
+--- qt4/src/Makefile.in.orig 2009-09-09 19:22:37.000000000 +0200
+++ qt4/src/Makefile.in
-@@ -62,7 +62,7 @@ libLTLIBRARIES_INSTALL = $(INSTALL)
+@@ -65,7 +65,7 @@ libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
libpoppler_qt4_la_DEPENDENCIES = \
@@ -11,12 +11,12 @@ $NetBSD: patch-ag,v 1.4 2008/10/24 23:28:53 wiz Exp $
$(am__DEPENDENCIES_1) $(am__append_1)
am_libpoppler_qt4_la_OBJECTS = poppler-document.lo poppler-page.lo \
poppler-fontinfo.lo poppler-embeddedfile.lo poppler-textbox.lo \
-@@ -308,7 +308,7 @@ libpoppler_qt4_la_SOURCES = \
+@@ -332,7 +332,7 @@ libpoppler_qt4_la_SOURCES = \
poppler-export.h \
poppler-private.h
-libpoppler_qt4_la_LIBADD = $(top_builddir)/poppler/libpoppler.la \
+libpoppler_qt4_la_LIBADD = $(prefix)/lib/libpoppler.la \
$(FONTCONFIG_LIBS) $(POPPLER_QT4_LIBS) $(am__append_1)
- libpoppler_qt4_la_LDFLAGS = -version-info 4:0:1
+ libpoppler_qt4_la_LDFLAGS = -version-info 5:0:2
all: all-am
diff --git a/print/poppler/patches/patch-ai b/print/poppler/patches/patch-ai
index 9dd9753f472..f441e7b70c4 100644
--- a/print/poppler/patches/patch-ai
+++ b/print/poppler/patches/patch-ai
@@ -1,33 +1,8 @@
-$NetBSD: patch-ai,v 1.8 2009/04/17 16:08:17 drochner Exp $
+$NetBSD: patch-ai,v 1.9 2009/09/09 19:57:05 drochner Exp $
---- configure.orig 2009-04-16 22:21:56.000000000 +0200
+--- configure.orig 2009-08-01 17:19:11.000000000 +0200
+++ configure
-@@ -787,6 +787,8 @@ ac_subst_vars='LTLIBOBJS
- LIBOBJS
- PC_REQUIRES_PRIVATE
- PC_REQUIRES
-+USE_CMS_FALSE
-+USE_CMS_TRUE
- BUILD_UTILS_FALSE
- BUILD_UTILS_TRUE
- BUILD_ABIWORD_OUTPUT_FALSE
-@@ -1005,6 +1007,7 @@ enable_gtk_test
- enable_abiword_output
- enable_utils
- enable_compile_warnings
-+enable_cms
- '
- ac_precious_vars='build_alias
- host_alias
-@@ -1701,6 +1704,7 @@ Optional Features:
- --enable-compile-warnings=[no/yes/kde]
- Turn on compiler warnings.
-
-+ --disable-cms Don't use color management system.
-
- Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-@@ -24668,7 +24672,7 @@ fi
+@@ -25282,7 +25282,7 @@ fi
if test x$enable_poppler_qt4 = xyes; then
{ $as_echo "$as_me:$LINENO: checking for Qt4 moc" >&5
$as_echo_n "checking for Qt4 moc... " >&6; }
@@ -36,285 +11,3 @@ $NetBSD: patch-ai,v 1.8 2009/04/17 16:08:17 drochner Exp $
mocversion=`$MOCQT4 -v 2>&1`
mocversiongrep=`echo $mocversion | grep "Qt 4"`
if test x"$mocversiongrep" != x"$mocversion"; then
-@@ -25127,6 +25131,259 @@ else
- fi
-
-
-+
-+# Check whether --enable-cms was given.
-+if test "${enable_cms+set}" = set; then
-+ enableval=$enable_cms; enable_cms=$enableval
-+else
-+ enable_cms="yes"
-+fi
-+
-+if test x$enable_cms = xyes; then
-+
-+{ $as_echo "$as_me:$LINENO: checking for cmsOpenProfileFromFile in -llcms" >&5
-+$as_echo_n "checking for cmsOpenProfileFromFile in -llcms... " >&6; }
-+if test "${ac_cv_lib_lcms_cmsOpenProfileFromFile+set}" = set; then
-+ $as_echo_n "(cached) " >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-llcms $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+char cmsOpenProfileFromFile ();
-+int
-+main ()
-+{
-+return cmsOpenProfileFromFile ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ ac_cv_lib_lcms_cmsOpenProfileFromFile=yes
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_cv_lib_lcms_cmsOpenProfileFromFile=no
-+fi
-+
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lcms_cmsOpenProfileFromFile" >&5
-+$as_echo "$ac_cv_lib_lcms_cmsOpenProfileFromFile" >&6; }
-+if test "x$ac_cv_lib_lcms_cmsOpenProfileFromFile" = x""yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBLCMS 1
-+_ACEOF
-+
-+ LIBS="-llcms $LIBS"
-+
-+else
-+ { { $as_echo "$as_me:$LINENO: error: \"*** lcms library not found ***\"" >&5
-+$as_echo "$as_me: error: \"*** lcms library not found ***\"" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+
-+for ac_header in lcms.h
-+do
-+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-+$as_echo_n "checking for $ac_header... " >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ $as_echo_n "(cached) " >&6
-+fi
-+ac_res=`eval 'as_val=${'$as_ac_Header'}
-+ $as_echo "$as_val"'`
-+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+else
-+ # Is the header compilable?
-+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+$as_echo_n "checking $ac_header usability... " >&6; }
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+#include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_compile") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ ac_header_compiler=yes
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_compiler=no
-+fi
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+$as_echo "$ac_header_compiler" >&6; }
-+
-+# Is the header present?
-+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+$as_echo_n "checking $ac_header presence... " >&6; }
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <$ac_header>
-+_ACEOF
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
-+ ac_header_preproc=yes
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_preproc=no
-+fi
-+
-+rm -f conftest.err conftest.$ac_ext
-+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+$as_echo "$ac_header_preproc" >&6; }
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+
-+ ;;
-+esac
-+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-+$as_echo_n "checking for $ac_header... " >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ $as_echo_n "(cached) " >&6
-+else
-+ eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+ac_res=`eval 'as_val=${'$as_ac_Header'}
-+ $as_echo "$as_val"'`
-+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+
-+fi
-+as_val=`eval 'as_val=${'$as_ac_Header'}
-+ $as_echo "$as_val"'`
-+ if test "x$as_val" = x""yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+ { { $as_echo "$as_me:$LINENO: error: \"*** lcms headers not found ***\"" >&5
-+$as_echo "$as_me: error: \"*** lcms headers not found ***\"" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+done
-+
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define USE_CMS 1
-+_ACEOF
-+
-+fi
-+ if test x$enable_cms = xyes; then
-+ USE_CMS_TRUE=
-+ USE_CMS_FALSE='#'
-+else
-+ USE_CMS_TRUE='#'
-+ USE_CMS_FALSE=
-+fi
-+
-+
- if test "x$GCC" != xyes; then
- enable_compile_warnings=no
- fi
-@@ -25399,6 +25656,13 @@ $as_echo "$as_me: error: conditional \"B
- Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
- fi
-+if test -z "${USE_CMS_TRUE}" && test -z "${USE_CMS_FALSE}"; then
-+ { { $as_echo "$as_me:$LINENO: error: conditional \"USE_CMS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+$as_echo "$as_me: error: conditional \"USE_CMS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-
- : ${CONFIG_STATUS=./config.status}
- ac_write_fail=0
-@@ -27938,6 +28202,7 @@ echo " use gtk-doc: $enable_gtk_
- echo " use libjpeg: $enable_libjpeg"
- echo " use zlib: $enable_zlib"
- echo " use libopenjpeg: $enable_libopenjpeg"
-+echo " use cms: $enable_cms"
- echo " command line utils: $enable_utils"
- echo ""
-
diff --git a/print/poppler/patches/patch-aj b/print/poppler/patches/patch-aj
deleted file mode 100644
index e1ba42dead9..00000000000
--- a/print/poppler/patches/patch-aj
+++ /dev/null
@@ -1,51 +0,0 @@
-$NetBSD: patch-aj,v 1.7 2009/02/12 20:55:07 drochner Exp $
-
---- poppler/Makefile.in.orig 2008-12-18 00:09:45.000000000 +0100
-+++ poppler/Makefile.in
-@@ -70,19 +70,20 @@ am__libpoppler_cairo_la_SOURCES_DIST = C
- @BUILD_CAIRO_OUTPUT_TRUE@ CairoFontEngine.lo CairoOutputDev.lo
- libpoppler_cairo_la_OBJECTS = $(am_libpoppler_cairo_la_OBJECTS)
- @BUILD_CAIRO_OUTPUT_TRUE@am_libpoppler_cairo_la_rpath =
--@BUILD_SPLASH_OUTPUT_TRUE@am__DEPENDENCIES_1 = \
-+am__DEPENDENCIES_1 =
-+@BUILD_SPLASH_OUTPUT_TRUE@am__DEPENDENCIES_2 = \
- @BUILD_SPLASH_OUTPUT_TRUE@ $(top_builddir)/splash/libsplash.la
--am__DEPENDENCIES_2 =
--@BUILD_LIBJPEG_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2)
--@BUILD_ZLIB_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2)
--@BUILD_LIBOPENJPEG_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_2)
--@BUILD_ABIWORD_OUTPUT_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_2)
-+@BUILD_LIBJPEG_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
-+@BUILD_ZLIB_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
-+@BUILD_LIBOPENJPEG_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
-+@BUILD_ABIWORD_OUTPUT_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
- libpoppler_la_DEPENDENCIES = $(top_builddir)/goo/libgoo.la \
- $(top_builddir)/fofi/libfofi.la $(am__DEPENDENCIES_1) \
-- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \
-- $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6) \
-- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2) \
-- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2)
-+ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
-+ $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_5) \
-+ $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_1) \
-+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-+ $(am__DEPENDENCIES_1)
- am__libpoppler_la_SOURCES_DIST = SplashOutputDev.cc DCTStream.h \
- DCTStream.cc FlateStream.h FlateStream.cc JPXStream.h \
- JPXStream.cc JPEG2000Stream.h JPEG2000Stream.cc ABWOutputDev.h \
-@@ -394,6 +395,7 @@ win32_libs = @win32_libs@
- @BUILD_ABIWORD_OUTPUT_TRUE@abiword_libs = \
- @BUILD_ABIWORD_OUTPUT_TRUE@ $(ABIWORD_LIBS)
-
-+@USE_CMS_TRUE@cms_libs = -llcms
- INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/goo \
-@@ -411,6 +413,7 @@ noinst_LTLIBRARIES = $(poppler_cairo) \
- libpoppler_la_LIBADD = \
- $(top_builddir)/goo/libgoo.la \
- $(top_builddir)/fofi/libfofi.la \
-+ $(cms_libs) \
- $(splash_libs) \
- $(libjpeg_libs) \
- $(zlib_libs) \
diff --git a/print/poppler/patches/patch-ak b/print/poppler/patches/patch-ak
deleted file mode 100644
index 91f1eb41bd7..00000000000
--- a/print/poppler/patches/patch-ak
+++ /dev/null
@@ -1,27 +0,0 @@
-$NetBSD: patch-ak,v 1.5 2009/02/12 20:55:07 drochner Exp $
-
---- config.h.in.orig 2008-12-18 00:32:25.000000000 +0100
-+++ config.h.in
-@@ -40,6 +40,12 @@
- /* Define to 1 if you have the <inttypes.h> header file. */
- #undef HAVE_INTTYPES_H
-
-+/* Define to 1 if you have the <lcms.h> header file. */
-+#undef HAVE_LCMS_H
-+
-+/* Define to 1 if you have the `lcms' library (-llcms). */
-+#undef HAVE_LIBLCMS
-+
- /* Define to 1 if you have the `openjpeg' library (-lopenjpeg). */
- #undef HAVE_LIBOPENJPEG
-
-@@ -148,6 +154,9 @@
- /* Enable word list support. */
- #undef TEXTOUT_WORD_LIST
-
-+/* Defines if use cms */
-+#undef USE_CMS
-+
- /* Throw exceptions to deal with not enough memory and similar problems */
- #undef USE_EXCEPTIONS
-
diff --git a/print/poppler/patches/patch-al b/print/poppler/patches/patch-al
deleted file mode 100644
index ecfea3969a6..00000000000
--- a/print/poppler/patches/patch-al
+++ /dev/null
@@ -1,22 +0,0 @@
-$NetBSD: patch-al,v 1.3 2009/04/06 09:29:27 drochner Exp $
-
---- poppler/Form.cc.orig 2009-01-28 22:56:21.000000000 +0100
-+++ poppler/Form.cc
-@@ -546,7 +546,7 @@ void FormWidgetChoice::_updateV ()
- } else if (numSelected == 1) {
- for(int i=0; i<parent->getNumChoices(); i++) {
- if (parent->isSelected(i)) {
-- obj1.initString(new GooString(parent->getExportVal(i)));
-+ obj1.initString(new GooString(parent->getChoice(i)));
- break;
- }
- }
-@@ -555,7 +555,7 @@ void FormWidgetChoice::_updateV ()
- for(int i=0; i<parent->getNumChoices(); i++) {
- if (parent->isSelected(i)) {
- Object obj2;
-- obj2.initString(new GooString(parent->getExportVal(i)));
-+ obj2.initString(new GooString(parent->getChoice(i)));
- obj1.arrayAdd(&obj2);
- }
- }
diff --git a/print/poppler/patches/patch-am b/print/poppler/patches/patch-am
deleted file mode 100644
index 8ed0c2a0f2a..00000000000
--- a/print/poppler/patches/patch-am
+++ /dev/null
@@ -1,22 +0,0 @@
-$NetBSD: patch-am,v 1.1 2009/04/06 09:29:27 drochner Exp $
-
---- glib/poppler-form-field.cc.orig 2008-10-09 22:30:34.000000000 +0200
-+++ glib/poppler-form-field.cc
-@@ -279,7 +279,7 @@ poppler_form_field_text_set_text (Popple
-
- g_return_if_fail (field->widget->getType () == formText);
-
-- tmp = text ? g_convert (text, -1, "UTF16BE", "UTF8", NULL, &length, NULL) : NULL;
-+ tmp = text ? g_convert (text, -1, "UTF-16BE", "UTF-8", NULL, &length, NULL) : NULL;
- goo_tmp = new GooString (tmp, length);
- g_free (tmp);
- static_cast<FormWidgetText*>(field->widget)->setContent (goo_tmp);
-@@ -552,7 +552,7 @@ poppler_form_field_choice_set_text (Popp
-
- g_return_if_fail (field->widget->getType () == formChoice);
-
-- tmp = text ? g_convert (text, -1, "UTF16BE", "UTF8", NULL, &length, NULL) : NULL;
-+ tmp = text ? g_convert (text, -1, "UTF-16BE", "UTF-8", NULL, &length, NULL) : NULL;
- goo_tmp = new GooString (tmp, length);
- g_free (tmp);
- static_cast<FormWidgetChoice*>(field->widget)->setEditChoice (goo_tmp);
diff --git a/print/poppler/patches/patch-an b/print/poppler/patches/patch-an
deleted file mode 100644
index 0131678cb9e..00000000000
--- a/print/poppler/patches/patch-an
+++ /dev/null
@@ -1,107 +0,0 @@
-$NetBSD: patch-an,v 1.1 2009/07/28 18:22:49 drochner Exp $
-
---- poppler/PSOutputDev.cc.orig 2009-05-02 14:14:57.000000000 +0200
-+++ poppler/PSOutputDev.cc
-@@ -4565,6 +4565,8 @@ void PSOutputDev::doImageL2(Object *ref,
- GfxCMYK cmyk;
- int c;
- int col, i, j, x0, x1, y, maskXor;
-+
-+ rectsOutLen = 0;
-
- // color key masking
- if (maskColors && colorMap && !inlineImg) {
-@@ -4573,7 +4575,7 @@ void PSOutputDev::doImageL2(Object *ref,
- numComps = colorMap->getNumPixelComps();
- imgStr = new ImageStream(str, width, numComps, colorMap->getBits());
- imgStr->reset();
-- rects0Len = rects1Len = rectsOutLen = 0;
-+ rects0Len = rects1Len = 0;
- rectsSize = rectsOutSize = 64;
- rects0 = (PSOutImgClipRect *)gmallocn(rectsSize, sizeof(PSOutImgClipRect));
- rects1 = (PSOutImgClipRect *)gmallocn(rectsSize, sizeof(PSOutImgClipRect));
-@@ -4696,14 +4698,28 @@ void PSOutputDev::doImageL2(Object *ref,
- rectsOut[rectsOutLen].y1 = height - rects0[i].y0 - 1;
- ++rectsOutLen;
- }
-- writePSFmt("{0:d} array 0\n", rectsOutLen * 4);
-- for (i = 0; i < rectsOutLen; ++i) {
-- writePSFmt("[{0:d} {1:d} {2:d} {3:d}] pr\n",
-- rectsOut[i].x0, rectsOut[i].y0,
-- rectsOut[i].x1 - rectsOut[i].x0,
-- rectsOut[i].y1 - rectsOut[i].y0);
-+ if (rectsOutLen < 65536/4) {
-+ writePSFmt("{0:d} array 0\n", rectsOutLen * 4);
-+ for (i = 0; i < rectsOutLen; ++i) {
-+ writePSFmt("[{0:d} {1:d} {2:d} {3:d}] pr\n",
-+ rectsOut[i].x0, rectsOut[i].y0,
-+ rectsOut[i].x1 - rectsOut[i].x0,
-+ rectsOut[i].y1 - rectsOut[i].y0);
-+ }
-+ writePSFmt("pop {0:d} {1:d} pdfImClip\n", width, height);
-+ } else {
-+ // would be over the limit of array size.
-+ // make each rectangle path and clip.
-+ writePS("gsave newpath\n");
-+ for (i = 0; i < rectsOutLen; ++i) {
-+ writePSFmt("{0:.4g} {1:.4g} {2:.4g} {3:.4g} re\n",
-+ ((double)rectsOut[i].x0)/width,
-+ ((double)rectsOut[i].y0)/height,
-+ ((double)(rectsOut[i].x1 - rectsOut[i].x0))/width,
-+ ((double)(rectsOut[i].y1 - rectsOut[i].y0))/height);
-+ }
-+ writePS("clip\n");
- }
-- writePSFmt("pop {0:d} {1:d} pdfImClip\n", width, height);
- gfree(rectsOut);
- gfree(rects0);
- gfree(rects1);
-@@ -4798,14 +4814,28 @@ void PSOutputDev::doImageL2(Object *ref,
- rectsOut[rectsOutLen].y1 = maskHeight - rects0[i].y0 - 1;
- ++rectsOutLen;
- }
-- writePSFmt("{0:d} array 0\n", rectsOutLen * 4);
-- for (i = 0; i < rectsOutLen; ++i) {
-- writePSFmt("[{0:d} {1:d} {2:d} {3:d}] pr\n",
-- rectsOut[i].x0, rectsOut[i].y0,
-- rectsOut[i].x1 - rectsOut[i].x0,
-- rectsOut[i].y1 - rectsOut[i].y0);
-+ if (rectsOutLen < 65536/4) {
-+ writePSFmt("{0:d} array 0\n", rectsOutLen * 4);
-+ for (i = 0; i < rectsOutLen; ++i) {
-+ writePSFmt("[{0:d} {1:d} {2:d} {3:d}] pr\n",
-+ rectsOut[i].x0, rectsOut[i].y0,
-+ rectsOut[i].x1 - rectsOut[i].x0,
-+ rectsOut[i].y1 - rectsOut[i].y0);
-+ }
-+ writePSFmt("pop {0:d} {1:d} pdfImClip\n", maskWidth, maskHeight);
-+ } else {
-+ // would be over the limit of array size.
-+ // make each rectangle path and clip.
-+ writePS("gsave newpath\n");
-+ for (i = 0; i < rectsOutLen; ++i) {
-+ writePSFmt("{0:.4g} {1:.4g} {2:.4g} {3:.4g} re\n",
-+ ((double)rectsOut[i].x0)/maskWidth,
-+ ((double)rectsOut[i].y0)/maskHeight,
-+ ((double)(rectsOut[i].x1 - rectsOut[i].x0))/maskWidth,
-+ ((double)(rectsOut[i].y1 - rectsOut[i].y0))/maskHeight);
-+ }
-+ writePS("clip\n");
- }
-- writePSFmt("pop {0:d} {1:d} pdfImClip\n", maskWidth, maskHeight);
- gfree(rectsOut);
- gfree(rects0);
- gfree(rects1);
-@@ -5066,7 +5096,11 @@ void PSOutputDev::doImageL2(Object *ref,
- }
-
- if ((maskColors && colorMap && !inlineImg) || maskStr) {
-- writePS("pdfImClipEnd\n");
-+ if (rectsOutLen < 65536/4) {
-+ writePS("pdfImClipEnd\n");
-+ } else {
-+ writePS("grestore\n");
-+ }
- }
- }
-
diff --git a/print/poppler/patches/patch-ca b/print/poppler/patches/patch-ca
deleted file mode 100644
index eae526f2d0a..00000000000
--- a/print/poppler/patches/patch-ca
+++ /dev/null
@@ -1,936 +0,0 @@
-$NetBSD: patch-ca,v 1.2 2009/02/26 20:23:02 drochner Exp $
-
---- poppler/GfxState.cc.orig 2008-11-05 22:49:26.000000000 +0100
-+++ poppler/GfxState.cc
-@@ -39,6 +39,7 @@
- #include "Page.h"
- #include "GfxState.h"
- #include "GfxFont.h"
-+#include "GlobalParams.h"
-
- //------------------------------------------------------------------------
-
-@@ -224,6 +225,225 @@ void GfxColorSpace::getRGBLine(Guchar *i
- }
- }
-
-+#ifdef USE_CMS
-+cmsHPROFILE GfxColorSpace::RGBProfile = NULL;
-+cmsHPROFILE GfxColorSpace::displayProfile = NULL;
-+GooString *GfxColorSpace::displayProfileName = NULL;
-+unsigned int GfxColorSpace::displayPixelType = 0;
-+GfxColorTransform *GfxColorSpace::XYZ2DisplayTransform = NULL;
-+
-+cmsHPROFILE GfxColorSpace::loadColorProfile(const char *fileName)
-+{
-+ cmsHPROFILE hp = NULL;
-+ FILE *fp;
-+
-+ if (fileName[0] == '/') {
-+ // full path
-+ // check if open the file
-+ if ((fp = fopen(fileName,"r")) != NULL) {
-+ fclose(fp);
-+ hp = cmsOpenProfileFromFile(fileName,"r");
-+ }
-+ return hp;
-+ }
-+ // try to load from user directory
-+ GooString *path = globalParams->getBaseDir();
-+ path->append(COLOR_PROFILE_DIR);
-+ path->append(fileName);
-+ // check if open the file
-+ if ((fp = fopen(path->getCString(),"r")) != NULL) {
-+ fclose(fp);
-+ hp = cmsOpenProfileFromFile(path->getCString(),"r");
-+ }
-+ delete path;
-+ if (hp == NULL) {
-+ // load from global directory
-+ path = new GooString(GLOBAL_COLOR_PROFILE_DIR);
-+ path->append(fileName);
-+ // check if open the file
-+ if ((fp = fopen(path->getCString(),"r")) != NULL) {
-+ fclose(fp);
-+ hp = cmsOpenProfileFromFile(path->getCString(),"r");
-+ }
-+ delete path;
-+ }
-+ return hp;
-+}
-+
-+static int CMSError(int ecode, const char *msg)
-+{
-+ error(-1,const_cast<char *>(msg));
-+ return 1;
-+}
-+
-+int GfxColorSpace::setupColorProfiles()
-+{
-+ static GBool initialized = gFalse;
-+ cmsHTRANSFORM transform;
-+ unsigned int nChannels;
-+
-+ // do only once
-+ if (initialized) return 0;
-+ initialized = gTrue;
-+
-+ // set error handlor
-+ cmsSetErrorHandler(CMSError);
-+
-+ if (displayProfile == NULL) {
-+ // load display profile if it was not already loaded.
-+ if (displayProfileName == NULL) {
-+ displayProfile = loadColorProfile("display.icc");
-+ } else if (displayProfileName->getLength() > 0) {
-+ displayProfile = loadColorProfile(displayProfileName->getCString());
-+ }
-+ }
-+ // load RGB profile
-+ RGBProfile = loadColorProfile("RGB.icc");
-+ if (RGBProfile == NULL) {
-+ /* use built in sRGB profile */
-+ RGBProfile = cmsCreate_sRGBProfile();
-+ }
-+ // create transforms
-+ if (displayProfile != NULL) {
-+ displayPixelType = getCMSColorSpaceType(cmsGetColorSpace(displayProfile));
-+ nChannels = getCMSNChannels(cmsGetColorSpace(displayProfile));
-+ // create transform from XYZ
-+ cmsHPROFILE XYZProfile = cmsCreateXYZProfile();
-+ if ((transform = cmsCreateTransform(XYZProfile, TYPE_XYZ_DBL,
-+ displayProfile,
-+ COLORSPACE_SH(displayPixelType) |
-+ CHANNELS_SH(nChannels) | BYTES_SH(0),
-+ INTENT_RELATIVE_COLORIMETRIC,0)) == 0) {
-+ error(-1, "Can't create Lab transform");
-+ } else {
-+ XYZ2DisplayTransform = new GfxColorTransform(transform);
-+ }
-+ cmsCloseProfile(XYZProfile);
-+ }
-+ return 0;
-+}
-+
-+unsigned int GfxColorSpace::getCMSColorSpaceType(icColorSpaceSignature cs)
-+{
-+ switch (cs) {
-+ case icSigXYZData:
-+ return PT_XYZ;
-+ break;
-+ case icSigLabData:
-+ return PT_Lab;
-+ break;
-+ case icSigLuvData:
-+ return PT_YUV;
-+ break;
-+ case icSigYCbCrData:
-+ return PT_YCbCr;
-+ break;
-+ case icSigYxyData:
-+ return PT_Yxy;
-+ break;
-+ case icSigRgbData:
-+ return PT_RGB;
-+ break;
-+ case icSigGrayData:
-+ return PT_GRAY;
-+ break;
-+ case icSigHsvData:
-+ return PT_HSV;
-+ break;
-+ case icSigHlsData:
-+ return PT_HLS;
-+ break;
-+ case icSigCmykData:
-+ return PT_CMYK;
-+ break;
-+ case icSigCmyData:
-+ return PT_CMY;
-+ break;
-+ case icSig2colorData:
-+ case icSig3colorData:
-+ case icSig4colorData:
-+ case icSig5colorData:
-+ case icSig6colorData:
-+ case icSig7colorData:
-+ case icSig8colorData:
-+ case icSig9colorData:
-+ case icSig10colorData:
-+ case icSig11colorData:
-+ case icSig12colorData:
-+ case icSig13colorData:
-+ case icSig14colorData:
-+ case icSig15colorData:
-+ default:
-+ break;
-+ }
-+ return PT_RGB;
-+}
-+
-+unsigned int GfxColorSpace::getCMSNChannels(icColorSpaceSignature cs)
-+{
-+ switch (cs) {
-+ case icSigXYZData:
-+ case icSigLuvData:
-+ case icSigLabData:
-+ case icSigYCbCrData:
-+ case icSigYxyData:
-+ case icSigRgbData:
-+ case icSigHsvData:
-+ case icSigHlsData:
-+ case icSigCmyData:
-+ case icSig3colorData:
-+ return 3;
-+ break;
-+ case icSigGrayData:
-+ return 1;
-+ break;
-+ case icSigCmykData:
-+ case icSig4colorData:
-+ return 4;
-+ break;
-+ case icSig2colorData:
-+ return 2;
-+ break;
-+ case icSig5colorData:
-+ return 5;
-+ break;
-+ case icSig6colorData:
-+ return 6;
-+ break;
-+ case icSig7colorData:
-+ return 7;
-+ break;
-+ case icSig8colorData:
-+ return 8;
-+ break;
-+ case icSig9colorData:
-+ return 9;
-+ break;
-+ case icSig10colorData:
-+ return 10;
-+ break;
-+ case icSig11colorData:
-+ return 11;
-+ break;
-+ case icSig12colorData:
-+ return 12;
-+ break;
-+ case icSig13colorData:
-+ return 13;
-+ break;
-+ case icSig14colorData:
-+ return 14;
-+ break;
-+ case icSig15colorData:
-+ return 15;
-+ default:
-+ break;
-+ }
-+ return 3;
-+}
-+
-+#endif
-+
- void GfxColorSpace::getGrayLine(Guchar *in, unsigned char *out, int length) {
- int i, j, n;
- GfxColor color;
-@@ -311,6 +531,14 @@ GfxColorSpace *GfxCalGrayColorSpace::cop
- return cs;
- }
-
-+// This is the inverse of MatrixLMN in Example 4.10 from the PostScript
-+// Language Reference, Third Edition.
-+static const double xyzrgb[3][3] = {
-+ { 3.240449, -1.537136, -0.498531 },
-+ { -0.969265, 1.876011, 0.041556 },
-+ { 0.055643, -0.204026, 1.057229 }
-+};
-+
- GfxColorSpace *GfxCalGrayColorSpace::parse(Array *arr) {
- GfxCalGrayColorSpace *cs;
- Object obj1, obj2, obj3;
-@@ -353,32 +581,127 @@ GfxColorSpace *GfxCalGrayColorSpace::par
- }
- obj2.free();
- obj1.free();
-+
-+ cs->kr = 1 / (xyzrgb[0][0] * cs->whiteX +
-+ xyzrgb[0][1] * cs->whiteY +
-+ xyzrgb[0][2] * cs->whiteZ);
-+ cs->kg = 1 / (xyzrgb[1][0] * cs->whiteX +
-+ xyzrgb[1][1] * cs->whiteY +
-+ xyzrgb[1][2] * cs->whiteZ);
-+ cs->kb = 1 / (xyzrgb[2][0] * cs->whiteX +
-+ xyzrgb[2][1] * cs->whiteY +
-+ xyzrgb[2][2] * cs->whiteZ);
-+
- return cs;
- }
-
--void GfxCalGrayColorSpace::getGray(GfxColor *color, GfxGray *gray) {
-- *gray = clip01(color->c[0]);
-+// convert CalGray to media XYZ color space
-+// (not multiply by the white point)
-+void GfxCalGrayColorSpace::getXYZ(GfxColor *color,
-+ double *pX, double *pY, double *pZ) {
-+ double A;
-+
-+ A = colToDbl(color->c[0]);
-+ *pX = pow(A,gamma);
-+ *pY = pow(A,gamma);
-+ *pZ = pow(A,gamma);
- }
-
--void GfxCalGrayColorSpace::getGrayLine(Guchar *in, Guchar *out, int length) {
-- memcpy (out, in, length);
--}
-+void GfxCalGrayColorSpace::getGray(GfxColor *color, GfxGray *gray) {
-+ GfxRGB rgb;
-
--void GfxCalGrayColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-- rgb->r = rgb->g = rgb->b = clip01(color->c[0]);
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_GRAY) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+ double X, Y, Z;
-+
-+ getXYZ(color,&X,&Y,&Z);
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ *gray = dblToCol(out[0]);
-+ return;
-+ }
-+#endif
-+ getRGB(color, &rgb);
-+ *gray = clip01((GfxColorComp)(0.299 * rgb.r +
-+ 0.587 * rgb.g +
-+ 0.114 * rgb.b + 0.5));
- }
-
--void GfxCalGrayColorSpace::getRGBLine(Guchar *in, unsigned int *out,
-- int length) {
-- int i;
-+void GfxCalGrayColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-+ double X, Y, Z;
-+ double r, g, b;
-
-- for (i = 0; i < length; i++)
-- out[i] = (in[i] << 16) | (in[i] << 8) | (in[i] << 0);
-+ getXYZ(color,&X,&Y,&Z);
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_RGB) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ rgb->r = dblToCol(out[0]);
-+ rgb->g = dblToCol(out[1]);
-+ rgb->b = dblToCol(out[2]);
-+ return;
-+ }
-+#endif
-+ X *= whiteX;
-+ Y *= whiteY;
-+ Z *= whiteZ;
-+ // convert XYZ to RGB, including gamut mapping and gamma correction
-+ r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z;
-+ g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z;
-+ b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z;
-+ rgb->r = dblToCol(pow(clip01(r * kr), 0.5));
-+ rgb->g = dblToCol(pow(clip01(g * kg), 0.5));
-+ rgb->b = dblToCol(pow(clip01(b * kb), 0.5));
-+ rgb->r = rgb->g = rgb->b = clip01(color->c[0]);
- }
-
- void GfxCalGrayColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
-- cmyk->c = cmyk->m = cmyk->y = 0;
-- cmyk->k = clip01(gfxColorComp1 - color->c[0]);
-+ GfxRGB rgb;
-+ GfxColorComp c, m, y, k;
-+
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_CMYK) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+ double X, Y, Z;
-+
-+ getXYZ(color,&X,&Y,&Z);
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ cmyk->c = dblToCol(out[0]);
-+ cmyk->m = dblToCol(out[1]);
-+ cmyk->y = dblToCol(out[2]);
-+ cmyk->k = dblToCol(out[3]);
-+ return;
-+ }
-+#endif
-+ getRGB(color, &rgb);
-+ c = clip01(gfxColorComp1 - rgb.r);
-+ m = clip01(gfxColorComp1 - rgb.g);
-+ y = clip01(gfxColorComp1 - rgb.b);
-+ k = c;
-+ if (m < k) {
-+ k = m;
-+ }
-+ if (y < k) {
-+ k = y;
-+ }
-+ cmyk->c = c - k;
-+ cmyk->m = m - k;
-+ cmyk->y = y - k;
-+ cmyk->k = k;
- }
-
- void GfxCalGrayColorSpace::getDefaultColor(GfxColor *color) {
-@@ -553,47 +876,112 @@ GfxColorSpace *GfxCalRGBColorSpace::pars
- }
- obj2.free();
- obj1.free();
-+
-+ cs->kr = 1 / (xyzrgb[0][0] * cs->whiteX +
-+ xyzrgb[0][1] * cs->whiteY +
-+ xyzrgb[0][2] * cs->whiteZ);
-+ cs->kg = 1 / (xyzrgb[1][0] * cs->whiteX +
-+ xyzrgb[1][1] * cs->whiteY +
-+ xyzrgb[1][2] * cs->whiteZ);
-+ cs->kb = 1 / (xyzrgb[2][0] * cs->whiteX +
-+ xyzrgb[2][1] * cs->whiteY +
-+ xyzrgb[2][2] * cs->whiteZ);
-+
- return cs;
- }
-
--void GfxCalRGBColorSpace::getGray(GfxColor *color, GfxGray *gray) {
-- *gray = clip01((GfxColorComp)(0.299 * color->c[0] +
-- 0.587 * color->c[1] +
-- 0.114 * color->c[2] + 0.5));
-+// convert CalRGB to XYZ color space
-+void GfxCalRGBColorSpace::getXYZ(GfxColor *color,
-+ double *pX, double *pY, double *pZ) {
-+ double A, B, C;
-+
-+ A = colToDbl(color->c[0]);
-+ B = colToDbl(color->c[1]);
-+ C = colToDbl(color->c[2]);
-+ *pX = mat[0]*pow(A,gammaR)+mat[3]*pow(B,gammaG)+mat[6]*pow(C,gammaB);
-+ *pY = mat[1]*pow(A,gammaR)+mat[4]*pow(B,gammaG)+mat[7]*pow(C,gammaB);
-+ *pZ = mat[2]*pow(A,gammaR)+mat[5]*pow(B,gammaG)+mat[8]*pow(C,gammaB);
- }
-
--void GfxCalRGBColorSpace::getGrayLine(Guchar *in, Guchar *out, int length) {
-- int i;
-+void GfxCalRGBColorSpace::getGray(GfxColor *color, GfxGray *gray) {
-+ GfxRGB rgb;
-
-- for (i = 0; i < length; i++) {
-- out[i] =
-- (in[i * 3 + 0] * 19595 +
-- in[i * 3 + 1] * 38469 +
-- in[i * 3 + 2] * 7472) / 65536;
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_GRAY) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+ double X, Y, Z;
-+
-+ getXYZ(color,&X,&Y,&Z);
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ *gray = dblToCol(out[0]);
-+ return;
- }
-+#endif
-+ getRGB(color, &rgb);
-+ *gray = clip01((GfxColorComp)(0.299 * rgb.r +
-+ 0.587 * rgb.g +
-+ 0.114 * rgb.b + 0.5));
- }
-
- void GfxCalRGBColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-- rgb->r = clip01(color->c[0]);
-- rgb->g = clip01(color->c[1]);
-- rgb->b = clip01(color->c[2]);
--}
--
--void GfxCalRGBColorSpace::getRGBLine(Guchar *in, unsigned int *out,
-- int length) {
-- Guchar *p;
-- int i;
-+ double X, Y, Z;
-+ double r, g, b;
-
-- for (i = 0, p = in; i < length; i++, p += 3)
-- out[i] = (p[0] << 16) | (p[1] << 8) | (p[2] << 0);
-+ getXYZ(color,&X,&Y,&Z);
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_RGB) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+
-+ in[0] = clip01(X/whiteX);
-+ in[1] = clip01(Y/whiteY);
-+ in[2] = clip01(Z/whiteZ);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ rgb->r = dblToCol(out[0]);
-+ rgb->g = dblToCol(out[1]);
-+ rgb->b = dblToCol(out[2]);
-+ return;
-+ }
-+#endif
-+ // convert XYZ to RGB, including gamut mapping and gamma correction
-+ r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z;
-+ g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z;
-+ b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z;
-+ rgb->r = dblToCol(pow(clip01(r), 0.5));
-+ rgb->g = dblToCol(pow(clip01(g), 0.5));
-+ rgb->b = dblToCol(pow(clip01(b), 0.5));
- }
-
- void GfxCalRGBColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
-+ GfxRGB rgb;
- GfxColorComp c, m, y, k;
-
-- c = clip01(gfxColorComp1 - color->c[0]);
-- m = clip01(gfxColorComp1 - color->c[1]);
-- y = clip01(gfxColorComp1 - color->c[2]);
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_CMYK) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+ double X, Y, Z;
-+
-+ getXYZ(color,&X,&Y,&Z);
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ cmyk->c = dblToCol(out[0]);
-+ cmyk->m = dblToCol(out[1]);
-+ cmyk->y = dblToCol(out[2]);
-+ cmyk->k = dblToCol(out[3]);
-+ return;
-+ }
-+#endif
-+ getRGB(color, &rgb);
-+ c = clip01(gfxColorComp1 - rgb.r);
-+ m = clip01(gfxColorComp1 - rgb.g);
-+ y = clip01(gfxColorComp1 - rgb.b);
- k = c;
- if (m < k) {
- k = m;
-@@ -714,14 +1102,6 @@ void GfxDeviceCMYKColorSpace::getDefault
- // GfxLabColorSpace
- //------------------------------------------------------------------------
-
--// This is the inverse of MatrixLMN in Example 4.10 from the PostScript
--// Language Reference, Third Edition.
--static const double xyzrgb[3][3] = {
-- { 3.240449, -1.537136, -0.498531 },
-- { -0.969265, 1.876011, 0.041556 },
-- { 0.055643, -0.204026, 1.057229 }
--};
--
- GfxLabColorSpace::GfxLabColorSpace() {
- whiteX = whiteY = whiteZ = 1;
- blackX = blackY = blackZ = 0;
-@@ -823,18 +1203,30 @@ GfxColorSpace *GfxLabColorSpace::parse(A
- void GfxLabColorSpace::getGray(GfxColor *color, GfxGray *gray) {
- GfxRGB rgb;
-
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_GRAY) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+
-+ getXYZ(color, &in[0], &in[1], &in[2]);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ *gray = dblToCol(out[0]);
-+ return;
-+ }
-+#endif
- getRGB(color, &rgb);
- *gray = clip01((GfxColorComp)(0.299 * rgb.r +
- 0.587 * rgb.g +
- 0.114 * rgb.b + 0.5));
- }
-
--void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-+// convert L*a*b* to media XYZ color space
-+// (not multiply by the white point)
-+void GfxLabColorSpace::getXYZ(GfxColor *color,
-+ double *pX, double *pY, double *pZ) {
- double X, Y, Z;
- double t1, t2;
-- double r, g, b;
-
-- // convert L*a*b* to CIE 1931 XYZ color space
- t1 = (colToDbl(color->c[0]) + 16) / 116;
- t2 = t1 + colToDbl(color->c[1]) / 500;
- if (t2 >= (6.0 / 29.0)) {
-@@ -842,21 +1234,45 @@ void GfxLabColorSpace::getRGB(GfxColor *
- } else {
- X = (108.0 / 841.0) * (t2 - (4.0 / 29.0));
- }
-- X *= whiteX;
- if (t1 >= (6.0 / 29.0)) {
- Y = t1 * t1 * t1;
- } else {
- Y = (108.0 / 841.0) * (t1 - (4.0 / 29.0));
- }
-- Y *= whiteY;
- t2 = t1 - colToDbl(color->c[2]) / 200;
- if (t2 >= (6.0 / 29.0)) {
- Z = t2 * t2 * t2;
- } else {
- Z = (108.0 / 841.0) * (t2 - (4.0 / 29.0));
- }
-- Z *= whiteZ;
-+ *pX = X;
-+ *pY = Y;
-+ *pZ = Z;
-+}
-+
-+void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-+ double X, Y, Z;
-+ double r, g, b;
-
-+ getXYZ(color, &X, &Y, &Z);
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_RGB) {
-+ double out[gfxColorMaxComps];
-+ double in[gfxColorMaxComps];
-+
-+ in[0] = clip01(X);
-+ in[1] = clip01(Y);
-+ in[2] = clip01(Z);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ rgb->r = dblToCol(out[0]);
-+ rgb->g = dblToCol(out[1]);
-+ rgb->b = dblToCol(out[2]);
-+ return;
-+ }
-+#endif
-+ X *= whiteX;
-+ Y *= whiteY;
-+ Z *= whiteZ;
- // convert XYZ to RGB, including gamut mapping and gamma correction
- r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z;
- g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z;
-@@ -870,6 +1286,20 @@ void GfxLabColorSpace::getCMYK(GfxColor
- GfxRGB rgb;
- GfxColorComp c, m, y, k;
-
-+#ifdef USE_CMS
-+ if (XYZ2DisplayTransform != NULL && displayPixelType == PT_CMYK) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+
-+ getXYZ(color, &in[0], &in[1], &in[2]);
-+ XYZ2DisplayTransform->doTransform(in,out,1);
-+ cmyk->c = dblToCol(out[0]);
-+ cmyk->m = dblToCol(out[1]);
-+ cmyk->y = dblToCol(out[2]);
-+ cmyk->k = dblToCol(out[3]);
-+ return;
-+ }
-+#endif
- getRGB(color, &rgb);
- c = clip01(gfxColorComp1 - rgb.r);
- m = clip01(gfxColorComp1 - rgb.g);
-@@ -926,10 +1356,22 @@ GfxICCBasedColorSpace::GfxICCBasedColorS
- iccProfileStream = *iccProfileStreamA;
- rangeMin[0] = rangeMin[1] = rangeMin[2] = rangeMin[3] = 0;
- rangeMax[0] = rangeMax[1] = rangeMax[2] = rangeMax[3] = 1;
-+#ifdef USE_CMS
-+ transform = NULL;
-+ lineTransform = NULL;
-+#endif
- }
-
- GfxICCBasedColorSpace::~GfxICCBasedColorSpace() {
- delete alt;
-+#ifdef USE_CMS
-+ if (transform != NULL) {
-+ if (transform->unref() == 0) delete transform;
-+ }
-+ if (lineTransform != NULL) {
-+ if (lineTransform->unref() == 0) delete lineTransform;
-+ }
-+#endif
- }
-
- GfxColorSpace *GfxICCBasedColorSpace::copy() {
-@@ -941,6 +1383,12 @@ GfxColorSpace *GfxICCBasedColorSpace::co
- cs->rangeMin[i] = rangeMin[i];
- cs->rangeMax[i] = rangeMax[i];
- }
-+#ifdef USE_CMS
-+ cs->transform = transform;
-+ if (transform != NULL) transform->ref();
-+ cs->lineTransform = lineTransform;
-+ if (lineTransform != NULL) lineTransform->ref();
-+#endif
- return cs;
- }
-
-@@ -961,6 +1409,12 @@ GfxColorSpace *GfxICCBasedColorSpace::pa
- iccProfileStreamA.gen = 0;
- }
- obj1.free();
-+#ifdef USE_CMS
-+ // check cache
-+ if (iccProfileStreamA.num > 0
-+ && (cs = GfxICCBasedCache::lookup(iccProfileStreamA.num,
-+ iccProfileStreamA.gen)) != NULL) return cs;
-+#endif
- arr->get(1, &obj1);
- if (!obj1.isStream()) {
- error(-1, "Bad ICCBased color space (stream)");
-@@ -1015,24 +1469,167 @@ GfxColorSpace *GfxICCBasedColorSpace::pa
- }
- obj2.free();
- obj1.free();
-+
-+#ifdef USE_CMS
-+ arr->get(1, &obj1);
-+ dict = obj1.streamGetDict();
-+ Guchar *profBuf;
-+ unsigned int bufSize;
-+ Stream *iccStream = obj1.getStream();
-+ int c;
-+ unsigned int size = 0;
-+
-+ bufSize = 65536;
-+ profBuf = (Guchar *)gmallocn(bufSize,1);
-+ iccStream->reset();
-+ while ((c = iccStream->getChar()) != EOF) {
-+ if (bufSize <= size) {
-+ bufSize += 65536;
-+ profBuf = (Guchar *)greallocn(profBuf,bufSize,1);
-+ }
-+ profBuf[size++] = c;
-+ }
-+ cmsHPROFILE hp = cmsOpenProfileFromMem(profBuf,size);
-+ gfree(profBuf);
-+ if (hp == 0) {
-+ error(-1, "read ICCBased color space profile error");
-+ } else {
-+ cmsHPROFILE dhp = displayProfile;
-+ if (dhp == NULL) dhp = RGBProfile;
-+ unsigned int cst = getCMSColorSpaceType(cmsGetColorSpace(hp));
-+ unsigned int dNChannels = getCMSNChannels(cmsGetColorSpace(dhp));
-+ unsigned int dcst = getCMSColorSpaceType(cmsGetColorSpace(dhp));
-+ cmsHTRANSFORM transform;
-+ if ((transform = cmsCreateTransform(hp,
-+ COLORSPACE_SH(cst) |CHANNELS_SH(nCompsA) | BYTES_SH(0),
-+ dhp,
-+ COLORSPACE_SH(dcst) |
-+ CHANNELS_SH(dNChannels) | BYTES_SH(0),
-+ INTENT_RELATIVE_COLORIMETRIC,0)) == 0) {
-+ error(-1, "Can't create transform");
-+ }
-+ cs->transform = new GfxColorTransform(transform);
-+ if (dcst == PT_RGB) {
-+ // create line transform only when the display is RGB type color space
-+ if ((transform = cmsCreateTransform(hp,
-+ CHANNELS_SH(nCompsA) | BYTES_SH(1),dhp,
-+ TYPE_RGB_8,INTENT_RELATIVE_COLORIMETRIC,0)) == 0) {
-+ error(-1, "Can't create transform");
-+ }
-+ cs->lineTransform = new GfxColorTransform(transform);
-+ }
-+ cmsCloseProfile(hp);
-+ }
-+ obj1.free();
-+ // put this colorSpace into cache
-+ if (iccProfileStreamA.num > 0) {
-+ GfxICCBasedCache::put(iccProfileStreamA.num,iccProfileStreamA.gen,cs);
-+ }
-+#endif
- return cs;
- }
-
- void GfxICCBasedColorSpace::getGray(GfxColor *color, GfxGray *gray) {
-+#ifdef USE_CMS
-+ if (transform != 0 && displayPixelType == PT_GRAY) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+
-+ for (int i = 0;i < nComps;i++) {
-+ in[i] = colToDbl(color->c[i]);
-+ }
-+ transform->doTransform(in,out,1);
-+ *gray = dblToCol(out[0]);
-+ } else {
-+ GfxRGB rgb;
-+ getRGB(color,&rgb);
-+ *gray = clip01((GfxColorComp)(0.3 * rgb.r +
-+ 0.59 * rgb.g +
-+ 0.11 * rgb.b + 0.5));
-+ }
-+#else
- alt->getGray(color, gray);
-+#endif
- }
-
- void GfxICCBasedColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) {
-+#ifdef USE_CMS
-+ if (transform != 0
-+ && (displayProfile == NULL || displayPixelType == PT_RGB)) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+
-+ for (int i = 0;i < nComps;i++) {
-+ in[i] = colToDbl(color->c[i]);
-+ }
-+ transform->doTransform(in,out,1);
-+ rgb->r = dblToCol(out[0]);
-+ rgb->g = dblToCol(out[1]);
-+ rgb->b = dblToCol(out[2]);
-+ } else {
-+ alt->getRGB(color, rgb);
-+ }
-+#else
- alt->getRGB(color, rgb);
-+#endif
- }
-
- void GfxICCBasedColorSpace::getRGBLine(Guchar *in, unsigned int *out,
- int length) {
-+#ifdef USE_CMS
-+ if (lineTransform != 0) {
-+ for (int i = 0;i < length;i++) {
-+ Guchar tmp[gfxColorMaxComps];
-+
-+ lineTransform->doTransform(in,tmp,1);
-+ in += nComps;
-+ out[i] = (tmp[0] << 16) | (tmp[1] << 8) | tmp[2];
-+ }
-+ } else {
-+ alt->getRGBLine(in, out, length);
-+ }
-+#else
- alt->getRGBLine(in, out, length);
-+#endif
- }
-
- void GfxICCBasedColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) {
-+#ifdef USE_CMS
-+ if (transform != NULL && displayPixelType == PT_CMYK) {
-+ double in[gfxColorMaxComps];
-+ double out[gfxColorMaxComps];
-+
-+ for (int i = 0;i < nComps;i++) {
-+ in[i] = colToDbl(color->c[i]);
-+ }
-+ transform->doTransform(in,out,1);
-+ cmyk->c = dblToCol(out[0]);
-+ cmyk->m = dblToCol(out[1]);
-+ cmyk->y = dblToCol(out[2]);
-+ cmyk->k = dblToCol(out[3]);
-+ } else {
-+ GfxRGB rgb;
-+ GfxColorComp c, m, y, k;
-+
-+ getRGB(color,&rgb);
-+ c = clip01(gfxColorComp1 - rgb.r);
-+ m = clip01(gfxColorComp1 - rgb.g);
-+ y = clip01(gfxColorComp1 - rgb.b);
-+ k = c;
-+ if (m < k) {
-+ k = m;
-+ }
-+ if (y < k) {
-+ k = y;
-+ }
-+ cmyk->c = c - k;
-+ cmyk->m = m - k;
-+ cmyk->y = y - k;
-+ cmyk->k = k;
-+ }
-+#else
- alt->getCMYK(color, cmyk);
-+#endif
- }
-
- void GfxICCBasedColorSpace::getDefaultColor(GfxColor *color) {
-@@ -1066,6 +1663,56 @@ void GfxICCBasedColorSpace::getDefaultRa
- #endif
- }
-
-+#ifdef USE_CMS
-+GfxICCBasedCache
-+ GfxICCBasedCache::cache[GFX_ICCBASED_CACHE_SIZE];
-+
-+GfxICCBasedCache::GfxICCBasedCache()
-+{
-+ num = 0;
-+ gen = 0;
-+ colorSpace = 0;
-+}
-+
-+GfxICCBasedColorSpace *GfxICCBasedCache::lookup(int numA, int genA)
-+{
-+ int i;
-+
-+ if (cache[0].num == numA && cache[0].gen == genA) {
-+ return (GfxICCBasedColorSpace *)cache[0].colorSpace->copy();
-+ }
-+ for (i = 1;i < GFX_ICCBASED_CACHE_SIZE && cache[i].num > 0;i++) {
-+ if (cache[i].num == numA && cache[i].gen == genA) {
-+ int j;
-+ GfxICCBasedCache hit = cache[i];
-+
-+ for (j = i;j > 0;j--) {
-+ if (cache[j - 1].num > 0) cache[j] = cache[j-1];
-+ }
-+ cache[0] = hit;
-+ return (GfxICCBasedColorSpace *)hit.colorSpace->copy();
-+ }
-+ }
-+ return NULL;
-+}
-+
-+void GfxICCBasedCache::put(int numA, int genA,
-+ GfxICCBasedColorSpace *cs)
-+{
-+ int i;
-+
-+ if (cache[GFX_ICCBASED_CACHE_SIZE-1].num > 0) {
-+ delete cache[GFX_ICCBASED_CACHE_SIZE-1].colorSpace;
-+ }
-+ for (i = GFX_ICCBASED_CACHE_SIZE-1; i > 0; i--) {
-+ if (cache[i - 1].num > 0) cache[i] = cache[i - 1];
-+ }
-+ cache[0].num = numA;
-+ cache[0].gen = genA;
-+ cache[0].colorSpace = (GfxICCBasedColorSpace *)cs->copy();
-+}
-+#endif
-+
- //------------------------------------------------------------------------
- // GfxIndexedColorSpace
- //------------------------------------------------------------------------
-@@ -3938,6 +4585,9 @@ GfxState::GfxState(double hDPIA, double
- clipYMax = pageHeight;
-
- saved = NULL;
-+#ifdef USE_CMS
-+ GfxColorSpace::setupColorProfiles();
-+#endif
- }
-
- GfxState::~GfxState() {
diff --git a/print/poppler/patches/patch-cb b/print/poppler/patches/patch-cb
deleted file mode 100644
index 79ef2c8bde3..00000000000
--- a/print/poppler/patches/patch-cb
+++ /dev/null
@@ -1,156 +0,0 @@
-$NetBSD: patch-cb,v 1.1 2009/02/12 20:55:07 drochner Exp $
-
---- poppler/GfxState.h.orig 2009-01-20 16:54:29.000000000 +0100
-+++ poppler/GfxState.h
-@@ -32,6 +32,9 @@
- #include "goo/gtypes.h"
- #include "Object.h"
- #include "Function.h"
-+#ifdef USE_CMS
-+#include "lcms.h"
-+#endif
-
- class Array;
- class GfxFont;
-@@ -151,6 +154,37 @@ enum GfxColorSpaceMode {
- csPattern
- };
-
-+#ifdef USE_CMS
-+
-+#define COLOR_PROFILE_DIR "/ColorProfiles/"
-+#define GLOBAL_COLOR_PROFILE_DIR POPPLER_DATADIR COLOR_PROFILE_DIR
-+
-+// wrapper of cmsHTRANSFORM to copy
-+class GfxColorTransform {
-+public:
-+ void doTransform(void *in, void *out, unsigned int size) {
-+ cmsDoTransform(transform, in, out, size);
-+ }
-+ GfxColorTransform(cmsHTRANSFORM transformA) {
-+ transform = transformA;
-+ refCount = 1;
-+ }
-+ ~GfxColorTransform() {
-+ cmsDeleteTransform(transform);
-+ }
-+ void ref() {
-+ refCount++;
-+ }
-+ unsigned int unref() {
-+ return --refCount;
-+ }
-+private:
-+ GfxColorTransform() {}
-+ cmsHTRANSFORM transform;
-+ unsigned int refCount;
-+};
-+#endif
-+
- class GfxColorSpace {
- public:
-
-@@ -191,6 +225,32 @@ public:
- static char *getColorSpaceModeName(int idx);
-
- private:
-+#ifdef USE_CMS
-+protected:
-+ static cmsHPROFILE RGBProfile;
-+ static GooString *displayProfileName; // display profile file Name
-+ static cmsHPROFILE displayProfile; // display profile
-+ static unsigned int displayPixelType;
-+ static GfxColorTransform *XYZ2DisplayTransform;
-+ // convert color space signature to cmsColor type
-+ static unsigned int getCMSColorSpaceType(icColorSpaceSignature cs);
-+ static unsigned int getCMSNChannels(icColorSpaceSignature cs);
-+ static cmsHPROFILE loadColorProfile(const char *fileName);
-+public:
-+ static int setupColorProfiles();
-+ static void setDisplayProfile(cmsHPROFILE displayProfileA) {
-+ displayProfile = displayProfileA;
-+ }
-+ static void setDisplayProfileName(GooString *name) {
-+ displayProfileName = name->copy();
-+ }
-+ static cmsHPROFILE getRGBProfile() {
-+ return RGBProfile;
-+ }
-+ static cmsHPROFILE getDisplayProfile() {
-+ return displayProfile;
-+ }
-+#endif
- };
-
- //------------------------------------------------------------------------
-@@ -235,8 +295,6 @@ public:
- virtual void getGray(GfxColor *color, GfxGray *gray);
- virtual void getRGB(GfxColor *color, GfxRGB *rgb);
- virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
-- virtual void getGrayLine(Guchar *in, Guchar *out, int length);
-- virtual void getRGBLine(Guchar *in, unsigned int *out, int length);
-
- virtual int getNComps() { return 1; }
- virtual void getDefaultColor(GfxColor *color);
-@@ -255,6 +313,8 @@ private:
- double whiteX, whiteY, whiteZ; // white point
- double blackX, blackY, blackZ; // black point
- double gamma; // gamma value
-+ double kr, kg, kb; // gamut mapping mulitpliers
-+ void getXYZ(GfxColor *color, double *pX, double *pY, double *pZ);
- };
-
- //------------------------------------------------------------------------
-@@ -299,8 +359,6 @@ public:
- virtual void getGray(GfxColor *color, GfxGray *gray);
- virtual void getRGB(GfxColor *color, GfxRGB *rgb);
- virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
-- virtual void getGrayLine(Guchar *in, Guchar *out, int length);
-- virtual void getRGBLine(Guchar *in, unsigned int *out, int length);
-
- virtual int getNComps() { return 3; }
- virtual void getDefaultColor(GfxColor *color);
-@@ -323,6 +381,8 @@ private:
- double blackX, blackY, blackZ; // black point
- double gammaR, gammaG, gammaB; // gamma values
- double mat[9]; // ABC -> XYZ transform matrix
-+ double kr, kg, kb; // gamut mapping mulitpliers
-+ void getXYZ(GfxColor *color, double *pX, double *pY, double *pZ);
- };
-
- //------------------------------------------------------------------------
-@@ -390,6 +450,7 @@ private:
- double blackX, blackY, blackZ; // black point
- double aMin, aMax, bMin, bMax; // range for the a and b components
- double kr, kg, kb; // gamut mapping mulitpliers
-+ void getXYZ(GfxColor *color, double *pX, double *pY, double *pZ);
- };
-
- //------------------------------------------------------------------------
-@@ -429,7 +490,26 @@ private:
- double rangeMin[4]; // min values for each component
- double rangeMax[4]; // max values for each component
- Ref iccProfileStream; // the ICC profile
-+#ifdef USE_CMS
-+ GfxColorTransform *transform;
-+ GfxColorTransform *lineTransform; // color transform for line
-+#endif
-+};
-+
-+#ifdef USE_CMS
-+#define GFX_ICCBASED_CACHE_SIZE 5
-+class GfxICCBasedCache {
-+public:
-+ static GfxICCBasedColorSpace *lookup(int numA, int genA);
-+ static void put(int numA, int genA, GfxICCBasedColorSpace *cs);
-+private:
-+ GfxICCBasedCache();
-+ int num;
-+ int gen;
-+ GfxICCBasedColorSpace *colorSpace;
-+ static GfxICCBasedCache cache[GFX_ICCBASED_CACHE_SIZE];
- };
-+#endif
-
- //------------------------------------------------------------------------
- // GfxIndexedColorSpace