On Sun, Dec 07, 2008 at 01:21:51PM -0500, Okan Demirmen wrote:
> > > Fix koffice to work with latest GraphicsMagick?
> >
> > Please do.
[...]
> i'm not interested in krita, nor do i have the time to invest in it
> right now. of course, others are more than welcome to do so :)
Untested (I don't even know how to use this krita filter). I built
it against GraphicsMagick-1.2.6, but it should as well build against
the (older) version we currently have in ports.
Ciao,
Kili
Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/kde/office3/Makefile,v
retrieving revision 1.53
diff -u -p -r1.53 Makefile
--- Makefile 20 Nov 2008 13:40:48 -0000 1.53
+++ Makefile 17 Dec 2008 17:29:33 -0000
@@ -8,7 +8,7 @@ VMEM_WARNING= Yes
MASTER_SITES?=
${MASTER_SITE_KDE:s...@$@stable/koffice-${VERSION}/src/@}
DISTNAME= koffice-${VERSION}
-PKGNAME= ${DISTNAME}p5
+PKGNAME= ${DISTNAME}p6
MASTER_SITES0= ftp://ftp.kde.org/pub/kde/security_patches/
PATCHFILES= koffice-xpdf-CVE-2007-3387.diff:0 \
Index: patches/patch-filters_krita_gmagick_kis_image_magick_converter_cc
===================================================================
RCS file: patches/patch-filters_krita_gmagick_kis_image_magick_converter_cc
diff -N patches/patch-filters_krita_gmagick_kis_image_magick_converter_cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-filters_krita_gmagick_kis_image_magick_converter_cc 17 Dec
2008 17:29:33 -0000
@@ -0,0 +1,153 @@
+$OpenBSD$
+--- filters/krita/gmagick/kis_image_magick_converter.cc.orig Wed May 30
23:39:37 2007
++++ filters/krita/gmagick/kis_image_magick_converter.cc Mon Dec 15
23:10:01 2008
+@@ -168,32 +168,22 @@ namespace {
+
+ void setAnnotationsForImage(const Image * src, KisImageSP image)
+ {
++ ImageProfileIterator ipi;
++ const char *name;
++ const unsigned char *profiledata;
+ size_t length;
+
+- const unsigned char * profiledata = GetImageProfile(src, "IPTC",
&length);
+- if( profiledata != NULL )
+- {
++ ipi = AllocateImageProfileIterator(src);
++ while (NextImageProfile(ipi, &name, &profiledata, &length) !=
MagickFail) {
+ QByteArray rawdata;
+ rawdata.resize(length);
+ memcpy(rawdata.data(), profiledata, length);
+-
+- KisAnnotation* annotation = new KisAnnotation(QString("IPTC"),
"", rawdata);
++ KisAnnotation* annotation = new KisAnnotation(QString(name), "",
rawdata);
+ Q_CHECK_PTR(annotation);
+-
+ image -> addAnnotation(annotation);
+- }
+- for(int i = 0; i < src->generic_profiles; i++)
+- {
+- QByteArray rawdata;
+- rawdata.resize(length);
+- memcpy(rawdata.data(), src->generic_profile[i].info,
src->generic_profile[i].length);
+-
+- KisAnnotation* annotation = new
KisAnnotation(QString(src->generic_profile[i].name), "", rawdata);
+- Q_CHECK_PTR(annotation);
++ }
++ DeallocateImageProfileIterator(ipi);
+
+- image -> addAnnotation(annotation);
+- }
+-
+ const ImageAttribute* imgAttr = GetImageAttribute(src, NULL);
+ while(imgAttr)
+ {
+@@ -480,7 +470,7 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ Q_UINT8 opacity = OPACITY_OPAQUE;
+ const ImageAttribute * attr = GetImageAttribute(image,
"[layer-opacity]");
+ if (attr != 0) {
+- opacity = Q_UINT8_MAX -
Downscale(QString(attr->value).toInt());
++ opacity = Q_UINT8_MAX -
ScaleQuantumToChar(QString(attr->value).toInt());
+ }
+
+ KisPaintLayerSP layer = 0;
+@@ -534,17 +524,17 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ while (!hiter.isDone())
+ {
+ Q_UINT8 *ptr= hiter.rawData();
+- *(ptr++) = Downscale(pp->red); // cyan
+- *(ptr++) = Downscale(pp->green); // magenta
+- *(ptr++) = Downscale(pp->blue); // yellow
+- *(ptr++) = Downscale(indexes[x]); // Black
++ *(ptr++) = ScaleQuantumToChar(pp->red); // cyan
++ *(ptr++) = ScaleQuantumToChar(pp->green); //
magenta
++ *(ptr++) = ScaleQuantumToChar(pp->blue); // yellow
++ *(ptr++) = ScaleQuantumToChar(indexes[x]); //
Black
+ // XXX: Warning! This ifdef messes up the paren matching big-time!
+ #ifdef HAVE_MAGICK6
+ if (image->matte != MagickFalse) {
+ #else
+ if (image->matte == true) {
+ #endif
+- *(ptr++) = OPACITY_OPAQUE -
Downscale(pp->opacity);
++ *(ptr++) = OPACITY_OPAQUE -
ScaleQuantumToChar(pp->opacity);
+ }
+ else {
+ *(ptr++) = OPACITY_OPAQUE;
+@@ -578,10 +568,10 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ {
+ Q_UINT8 *ptr= hiter.rawData();
+ // XXX: not colorstrategy and bitdepth
independent
+- *(ptr++) = Downscale(pp->blue);
+- *(ptr++) = Downscale(pp->green);
+- *(ptr++) = Downscale(pp->red);
+- *(ptr++) = OPACITY_OPAQUE -
Downscale(pp->opacity);
++ *(ptr++) = ScaleQuantumToChar(pp->blue);
++ *(ptr++) = ScaleQuantumToChar(pp->green);
++ *(ptr++) = ScaleQuantumToChar(pp->red);
++ *(ptr++) = OPACITY_OPAQUE -
ScaleQuantumToChar(pp->opacity);
+
+ pp++;
+ ++hiter;
+@@ -608,8 +598,8 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ {
+ Q_UINT8 *ptr= hiter.rawData();
+ // XXX: not colorstrategy and bitdepth
independent
+- *(ptr++) = Downscale(pp->blue);
+- *(ptr++) = OPACITY_OPAQUE -
Downscale(pp->opacity);
++ *(ptr++) = ScaleQuantumToChar(pp->blue);
++ *(ptr++) = OPACITY_OPAQUE -
ScaleQuantumToChar(pp->opacity);
+
+ pp++;
+ ++hiter;
+@@ -812,13 +802,13 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ while (!it.isDone()) {
+
+ Q_UINT8 * d = it.rawData();
+- pp -> red = Upscale(d[PIXEL_CYAN]);
+- pp -> green = Upscale(d[PIXEL_MAGENTA]);
+- pp -> blue = Upscale(d[PIXEL_YELLOW]);
++ pp -> red = ScaleCharToQuantum(d[PIXEL_CYAN]);
++ pp -> green = ScaleCharToQuantum(d[PIXEL_MAGENTA]);
++ pp -> blue = ScaleCharToQuantum(d[PIXEL_YELLOW]);
+ if (alpha)
+- pp -> opacity = Upscale(OPACITY_OPAQUE -
d[PIXEL_CMYK_ALPHA]);
++ pp -> opacity = ScaleCharToQuantum(OPACITY_OPAQUE
- d[PIXEL_CMYK_ALPHA]);
+
+- indexes[x]= Upscale(d[PIXEL_BLACK]);
++ indexes[x]= ScaleCharToQuantum(d[PIXEL_BLACK]);
+
+ x++;
+ pp++;
+@@ -848,11 +838,11 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ while (!it.isDone()) {
+
+ Q_UINT8 * d = it.rawData();
+- pp -> red = Upscale(d[PIXEL_RED]);
+- pp -> green = Upscale(d[PIXEL_GREEN]);
+- pp -> blue = Upscale(d[PIXEL_BLUE]);
++ pp -> red = ScaleCharToQuantum(d[PIXEL_RED]);
++ pp -> green = ScaleCharToQuantum(d[PIXEL_GREEN]);
++ pp -> blue = ScaleCharToQuantum(d[PIXEL_BLUE]);
+ if (alpha)
+- pp -> opacity = Upscale(OPACITY_OPAQUE -
d[PIXEL_ALPHA]);
++ pp -> opacity = ScaleCharToQuantum(OPACITY_OPAQUE
- d[PIXEL_ALPHA]);
+
+ pp++;
+ ++it;
+@@ -879,11 +869,11 @@ KisImageBuilder_Result KisImageMagickConverter::decode
+ else {
+ while (!it.isDone()) {
+ Q_UINT8 * d = it.rawData();
+- pp -> red = Upscale(d[PIXEL_GRAY]);
+- pp -> green = Upscale(d[PIXEL_GRAY]);
+- pp -> blue = Upscale(d[PIXEL_GRAY]);
++ pp -> red = ScaleCharToQuantum(d[PIXEL_GRAY]);
++ pp -> green = ScaleCharToQuantum(d[PIXEL_GRAY]);
++ pp -> blue = ScaleCharToQuantum(d[PIXEL_GRAY]);
+ if (alpha)
+- pp -> opacity = Upscale(OPACITY_OPAQUE -
d[PIXEL_GRAY_ALPHA]);
++ pp -> opacity = ScaleCharToQuantum(OPACITY_OPAQUE
- d[PIXEL_GRAY_ALPHA]);
+
+ pp++;
+ ++it;