changeset in /hg/icedtea: * patches/icedtea-LCMS-setTagData.patc...

Keith Seitz keiths at redhat.com
Thu May 29 14:13:11 PDT 2008


changeset 7e52c573125f in /hg/icedtea
details: http://icedtea.classpath.org/hg/icedtea?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