changeset in /hg/icedtea6: * patches/icedtea-LCMS-setTagData.pat...
Keith Seitz
keiths at redhat.com
Wed Apr 16 13:29:59 PDT 2008
changeset 7e52c573125f in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=7e52c573125f
description:
* patches/icedtea-LCMS-setTagData.patch: New file.
* patches/icedtea-color-createcontext.patch: New file.
* Makefile.am (ICEDTEA_PATCHES): Add above patches.
* Makefile.in: Regenerated.
diffstat:
4 files changed, 337 insertions(+), 1 deletion(-)
Makefile.am | 2
Makefile.in | 4
patches/icedtea-LCMS-setTagData.patch | 296 +++++++++++++++++++++++++++++
patches/icedtea-color-createcontext.patch | 36 +++
diffs (366 lines):
diff -r 698de8663419 -r 7e52c573125f Makefile.am
--- a/Makefile.am Wed Apr 16 17:35:57 2008 +0100
+++ b/Makefile.am Wed Apr 16 11:55:40 2008 -0700
@@ -296,6 +296,8 @@ ICEDTEA_PATCHES = \
patches/icedtea-xinerama.patch \
patches/icedtea-arm-uname.patch \
patches/icedtea-ia64-fdlibm.patch \
+ patches/icedtea-LCMS-setTagData.patch \
+ patches/icedtea-color-createcontext.patch \
$(GCC_PATCH) \
$(FAST_BUILD_PATCH) \
$(DISTRIBUTION_PATCHES)
diff -r 698de8663419 -r 7e52c573125f Makefile.in
--- a/Makefile.in Wed Apr 16 17:35:57 2008 +0100
+++ b/Makefile.in Wed Apr 16 11:55:40 2008 -0700
@@ -403,7 +403,9 @@ ICEDTEA_PATCHES = $(ZERO_PATCHES_COND) \
patches/icedtea-print-lsb-release.patch \
patches/icedtea-jpegclasses.patch \
patches/icedtea-xinerama.patch patches/icedtea-arm-uname.patch \
- patches/icedtea-ia64-fdlibm.patch $(GCC_PATCH) \
+ patches/icedtea-ia64-fdlibm.patch \
+ patches/icedtea-LCMS-setTagData.patch \
+ patches/icedtea-color-createcontext.patch $(GCC_PATCH) \
$(FAST_BUILD_PATCH) $(DISTRIBUTION_PATCHES) $(am__append_5)
# Patch OpenJDK for plug replacements and ecj.
diff -r 698de8663419 -r 7e52c573125f patches/icedtea-LCMS-setTagData.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-LCMS-setTagData.patch Wed Apr 16 11:55:40 2008 -0700
@@ -0,0 +1,296 @@
+*** openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h.orig 2008-04-11 19:17:54.000000000 -0700
+--- openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h 2008-04-11 19:19:48.000000000 -0700
+*************** LCMSAPI BOOL LCMSEXPORT _cmsSaveProfile(
+*** 1244,1250 ****
+ LCMSAPI BOOL LCMSEXPORT _cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr,
+ size_t* BytesNeeded);
+
+!
+
+ // PostScript ColorRenderingDictionary and ColorSpaceArray
+
+--- 1244,1251 ----
+ LCMSAPI BOOL LCMSEXPORT _cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr,
+ size_t* BytesNeeded);
+
+! // Modify data for a tag in a profile
+! LCMSAPI BOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig, void *data, size_t size);
+
+ // PostScript ColorRenderingDictionary and ColorSpaceArray
+
+*************** typedef struct _lcms_iccprofile_struct {
+*** 1838,1843 ****
+--- 1839,1845 ----
+ BOOL (* Seek)(struct _lcms_iccprofile_struct* Icc, size_t offset);
+ BOOL (* Close)(struct _lcms_iccprofile_struct* Icc);
+ size_t (* Tell)(struct _lcms_iccprofile_struct* Icc);
++ BOOL (* Grow)(struct _lcms_iccprofile_struct* Icc, size_t amount);
+
+ // Writting
+
+*** openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c.orig 2008-04-11 19:18:43.000000000 -0700
+--- openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c 2008-04-11 19:19:48.000000000 -0700
+*************** JNIEXPORT void JNICALL Java_sun_java2d_c
+*** 347,353 ****
+ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_setTagData
+ (JNIEnv *env, jobject obj, jlong id, jint tagSig, jbyteArray data)
+ {
+! fprintf(stderr, "setTagData operation is not implemented");
+ }
+
+ void* getILData (JNIEnv *env, jobject img, jint* pDataType,
+--- 347,368 ----
+ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_setTagData
+ (JNIEnv *env, jobject obj, jlong id, jint tagSig, jbyteArray data)
+ {
+! cmsHPROFILE profile;
+! storeID_t sProf;
+! jbyte* dataArray;
+! int tagSize;
+!
+! if (tagSig == SigHead) {
+! fprintf(stderr, "setTagData on icSigHead not permitted");
+! return;
+! }
+!
+! sProf.j = id;
+! profile = (cmsHPROFILE) sProf.pf;
+! dataArray = (*env)->GetByteArrayElements(env, data, 0);
+! tagSize =(*env)->GetArrayLength(env, data);
+! _cmsModifyTagData(profile, (icTagSignature) tagSig, dataArray, tagSize);
+! (*env)->ReleaseByteArrayElements(env, data, dataArray, 0);
+ }
+
+ void* getILData (JNIEnv *env, jobject img, jint* pDataType,
+*** openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c.orig 2008-04-11 19:17:54.000000000 -0700
+--- openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c 2008-04-11 19:19:48.000000000 -0700
+*************** BOOL MemoryWrite(struct _lcms_iccprofile
+*** 157,164 ****
+ if (size == 0) return TRUE;
+
+ if (ResData != NULL)
+! CopyMemory(ResData ->Block + Icc ->UsedSpace, Ptr, size);
+
+ Icc->UsedSpace += size;
+
+ return TRUE;
+--- 157,165 ----
+ if (size == 0) return TRUE;
+
+ if (ResData != NULL)
+! CopyMemory(ResData ->Block + ResData ->Pointer, Ptr, size);
+
++ ResData->Pointer += size;
+ Icc->UsedSpace += size;
+
+ return TRUE;
+*************** BOOL MemoryWrite(struct _lcms_iccprofile
+*** 166,171 ****
+--- 167,184 ----
+
+
+ static
++ BOOL MemoryGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
++ {
++ FILEMEM* ResData = (FILEMEM*) Icc->stream;
++ ResData->Size += size;
++ ResData->Block = realloc(ResData->Block, ResData->Size);
++ if (!ResData->Block)
++ return FALSE;
++ return TRUE;
++ }
++
++
++ static
+ BOOL MemoryClose(struct _lcms_iccprofile_struct* Icc)
+ {
+ FILEMEM* ResData = (FILEMEM*) Icc ->stream;
+*************** BOOL FileWrite(struct _lcms_iccprofile_s
+*** 239,244 ****
+--- 252,264 ----
+
+
+ static
++ BOOL FileGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
++ {
++ return TRUE;
++ }
++
++
++ static
+ BOOL FileClose(struct _lcms_iccprofile_struct* Icc)
+ {
+ return fclose((FILE*) Icc ->stream);
+*************** LPLCMSICCPROFILE _cmsCreateProfileFromFi
+*** 382,387 ****
+--- 402,408 ----
+ NewIcc ->Seek = FileSeek;
+ NewIcc ->Tell = FileTell;
+ NewIcc ->Close = FileClose;
++ NewIcc ->Grow = FileGrow;
+ NewIcc ->Write = NULL;
+
+ NewIcc ->IsWrite = FALSE;
+*************** LPLCMSICCPROFILE _cmsCreateProfileFromMe
+*** 419,425 ****
+ NewIcc ->Seek = MemorySeek;
+ NewIcc ->Tell = MemoryTell;
+ NewIcc ->Close = MemoryClose;
+! NewIcc ->Write = NULL;
+
+ NewIcc ->IsWrite = FALSE;
+
+--- 440,447 ----
+ NewIcc ->Seek = MemorySeek;
+ NewIcc ->Tell = MemoryTell;
+ NewIcc ->Close = MemoryClose;
+! NewIcc ->Grow = MemoryGrow;
+! NewIcc ->Write = MemoryWrite;
+
+ NewIcc ->IsWrite = FALSE;
+
+*** openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c.orig 2008-04-11 19:17:54.000000000 -0700
+--- openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c 2008-04-11 19:19:48.000000000 -0700
+*************** CleanUp:
+*** 3661,3663 ****
+--- 3661,3800 ----
+ CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE));
+ return FALSE;
+ }
++
++ BOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig,
++ void *data, size_t size)
++ {
++ BOOL isNew;
++ int i, idx, delta, count;
++ LPBYTE padChars[3] = {0, 0, 0};
++ LPBYTE beforeBuf, afterBuf, ptr;
++ size_t beforeSize, afterSize;
++ icUInt32Number profileSize, temp;
++ LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
++
++ isNew = FALSE;
++ idx = _cmsSearchTag(Icc, sig, FALSE);
++ if (idx < 0)
++ {
++ isNew = TRUE;
++ idx = Icc->TagCount++;
++ if (Icc->TagCount >= MAX_TABLE_TAG)
++ {
++ fprintf(stderr, "Too many tags (%d)\n", Icc->TagCount);
++ Icc->TagCount = MAX_TABLE_TAG-1;
++ return FALSE;
++ }
++ }
++
++ /* Read in size from header */
++ Icc->Seek(Icc, 0);
++ Icc->Read(&profileSize, sizeof(icUInt32Number), 1, Icc);
++ AdjustEndianess32((LPBYTE) &profileSize);
++
++ /* Compute the change in profile size */
++ if (isNew)
++ delta = sizeof(icTag) + ALIGNLONG(size);
++ else
++ delta = ALIGNLONG(size) - ALIGNLONG(Icc->TagSizes[idx]);
++
++ /* Add tag to internal structures */
++ ptr = malloc(size);
++ CopyMemory(ptr, data, size);
++ Icc->TagSizes[idx] = size;
++ Icc->TagNames[idx] = sig;
++ if (Icc->TagPtrs[idx])
++ free(Icc->TagPtrs[idx]);
++ Icc->TagPtrs[idx] = ptr;
++ if (isNew)
++ Icc->TagOffsets[idx] = profileSize;
++
++ /* Compute size of tag data before/after the modified tag */
++ beforeSize = Icc->TagOffsets[idx] - Icc->TagOffsets[0];
++ if (Icc->TagCount == (idx + 1))
++ afterSize = 0;
++ else
++ afterSize = profileSize - Icc->TagOffsets[idx+1];
++
++ /* Make copies of the data before/after the modified tag */
++ if (beforeSize > 0)
++ {
++ beforeBuf = malloc(beforeSize);
++ Icc->Seek(Icc, Icc->TagOffsets[0]);
++ Icc->Read(beforeBuf, beforeSize, 1, Icc);
++ }
++
++ if (afterSize > 0)
++ {
++ afterBuf = malloc(afterSize);
++ Icc->Seek(Icc, Icc->TagOffsets[idx+1]);
++ Icc->Read(afterBuf, afterSize, 1, Icc);
++ }
++
++ /* Update the profile size in the header */
++ profileSize += delta;
++ Icc->Seek(Icc, 0);
++ temp = TransportValue32(profileSize);
++ Icc->Write(Icc, sizeof(icUInt32Number), &temp);
++
++ Icc->Grow(Icc, delta);
++
++ /* Adjust tag offsets: if the tag is new, we must account
++ for the new tag table entry; otherwise, only those tags after
++ the modified tag are changed (by delta) */
++ if (isNew)
++ {
++ for (i = 0; i < Icc->TagCount; ++i)
++ Icc->TagOffsets[i] += sizeof(icTag);
++ }
++ else
++ {
++ for (i = idx+1; i < Icc->TagCount; ++i)
++ Icc->TagOffsets[i] += delta;
++ }
++
++ /* Write out a new tag table */
++ count = 0;
++ for (i = 0; i < Icc->TagCount; ++i)
++ {
++ if (Icc->TagNames[i] != 0)
++ ++count;
++ }
++ Icc->Seek(Icc, sizeof(icHeader));
++ temp = TransportValue32(count);
++ Icc->Write(Icc, sizeof(icUInt32Number), &temp);
++
++ for (i = 0; i < Icc->TagCount; ++i)
++ {
++ if (Icc->TagNames[i] != 0)
++ {
++ icTag tag;
++ tag.sig = TransportValue32(Icc->TagNames[i]);
++ tag.offset = TransportValue32((icInt32Number) Icc->TagOffsets[i]);
++ tag.size = TransportValue32((icInt32Number) Icc->TagSizes[i]);
++ Icc->Write(Icc, sizeof(icTag), &tag);
++ }
++ }
++
++ /* Write unchanged data before the modified tag */
++ if (beforeSize > 0)
++ {
++ Icc->Write(Icc, beforeSize, beforeBuf);
++ free(beforeBuf);
++ }
++
++ /* Write modified tag data */
++ Icc->Write(Icc, size, data);
++ if (size % 4)
++ Icc->Write(Icc, 4 - (size % 4), padChars);
++
++ /* Write unchanged data after the modified tag */
++ if (afterSize > 0)
++ {
++ Icc->Write(Icc, afterSize, afterBuf);
++ free(afterBuf);
++ }
++
++ return TRUE;
++ }
++
diff -r 698de8663419 -r 7e52c573125f patches/icedtea-color-createcontext.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-color-createcontext.patch Wed Apr 16 11:55:40 2008 -0700
@@ -0,0 +1,36 @@
+*** openjdk/jdk/src/share/classes/java/awt/Color.java.orig 2008-04-02 17:12:00.000000000 -0700
+--- openjdk/jdk/src/share/classes/java/awt/Color.java 2008-04-02 17:29:29.000000000 -0700
+*************** public class Color implements Paint, jav
+*** 251,256 ****
+--- 251,262 ----
+ */
+ private ColorSpace cs = null;
+
++ /**
++ * The <code>PaintContext</code> for this solid color.
++ * @see #createContext
++ */
++ private transient PaintContext context;
++
+ /*
+ * JDK 1.1 serialVersionUID
+ */
+*************** public class Color implements Paint, jav
+*** 1205,1211 ****
+ Rectangle2D r2d,
+ AffineTransform xform,
+ RenderingHints hints) {
+! return new ColorPaintContext(getRGB(), cm);
+ }
+
+ /**
+--- 1211,1219 ----
+ Rectangle2D r2d,
+ AffineTransform xform,
+ RenderingHints hints) {
+! if (context == null || !context.getColorModel().equals(cm))
+! context = new ColorPaintContext(getRGB(), cm);
+! return context;
+ }
+
+ /**
More information about the distro-pkg-dev
mailing list