зеркало из https://github.com/mono/ikvm-fork.git
Use the GNU ColorSpace converter
This commit is contained in:
Родитель
a96ed5bbe1
Коммит
acb82241c9
|
@ -44,6 +44,7 @@ ikvm/internal/IntrinsicThreadLocal.java
|
|||
ikvm/internal/JNI.java
|
||||
ikvm/internal/Serialization.java
|
||||
ikvm/internal/Winsock.java
|
||||
java/awt/color/ICC_ColorSpace.java
|
||||
java/awt/Font.java
|
||||
java/awt/GraphicsConfiguration.java
|
||||
java/awt/Image.java
|
||||
|
@ -110,6 +111,17 @@ java/util/zip/StreamManipulator.java
|
|||
java/util/zip/ZipEntry.java
|
||||
java/util/zip/ZipFile.java
|
||||
gnu/java/awt/Buffers.java
|
||||
gnu/java/awt/color/CieXyzConverter.java
|
||||
gnu/java/awt/color/ClutProfileConverter.java
|
||||
gnu/java/awt/color/ColorLookUpTable.java
|
||||
gnu/java/awt/color/ColorSpaceConverter.java
|
||||
gnu/java/awt/color/GrayProfileConverter.java
|
||||
gnu/java/awt/color/GrayScaleConverter.java
|
||||
gnu/java/awt/color/ProfileHeader.java
|
||||
gnu/java/awt/color/RgbProfileConverter.java
|
||||
gnu/java/awt/color/SrgbConverter.java
|
||||
gnu/java/awt/color/TagEntry.java
|
||||
gnu/java/awt/color/ToneReproductionCurve.java
|
||||
gnu/java/util/EmptyEnumeration.java
|
||||
sun/awt/AppContext.java
|
||||
sun/awt/EmbeddedFrame.java
|
||||
|
@ -7152,7 +7164,6 @@ sun/security/jgss/wrapper/SunNativeProvider.java
|
|||
@OPENJDK@/jdk/src/share/classes/java/awt/Window.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/CMMException.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/ColorSpace.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/ICC_ColorSpace.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/ICC_Profile.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/ICC_ProfileGray.java
|
||||
@OPENJDK@/jdk/src/share/classes/java/awt/color/ICC_ProfileRGB.java
|
||||
|
|
|
@ -146,7 +146,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Corba.dll
|
||||
-baseaddress:0x56960000
|
||||
-baseaddress:0x56A20000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/corba/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/jndi/cosnaming/jndiprovider.properties
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/corba/se/impl/activation/*.class
|
||||
|
@ -264,7 +264,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.API.dll
|
||||
-baseaddress:0x56FC0000
|
||||
-baseaddress:0x570E0000
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/xml/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/xml/datatype/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/xml/namespace/*.class
|
||||
|
@ -296,7 +296,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.XPath.dll
|
||||
-baseaddress:0x57080000
|
||||
-baseaddress:0x571A0000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/org/apache/xalan/internal/res/*
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/org/apache/xalan/internal/extensions/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/org/apache/xalan/internal/res/*.class
|
||||
|
@ -321,7 +321,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.Parse.dll
|
||||
-baseaddress:0x573B0000
|
||||
-baseaddress:0x574D0000
|
||||
-resource:com/sun/org/apache/xml/internal/serialize/HTMLEntities.res=@OPENJDK@/build/linux-amd64/impsrc/com/sun/org/apache/xml/internal/serialize/HTMLEntities.res
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/org/apache/xerces/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/org/apache/xml/internal/serializer/*
|
||||
|
@ -380,7 +380,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.Transform.dll
|
||||
-baseaddress:0x57A40000
|
||||
-baseaddress:0x57BC0000
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/java_cup/internal/runtime/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/org/apache/bcel/internal/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/org/apache/bcel/internal/classfile/*.class
|
||||
|
@ -404,7 +404,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.Bind.dll
|
||||
-baseaddress:0x57E60000
|
||||
-baseaddress:0x58040000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/javax/xml/bind/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/xml/internal/bind/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/xml/internal/fastinfoset/*
|
||||
|
@ -462,7 +462,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.WebServices.dll
|
||||
-baseaddress:0x581C0000
|
||||
-baseaddress:0x583D0000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/xml/internal/messaging/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/xml/internal/ws/*
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/xml/internal/messaging/saaj/*.class
|
||||
|
@ -555,7 +555,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.XML.Crypto.dll
|
||||
-baseaddress:0x58640000
|
||||
-baseaddress:0x58880000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/org/apache/xml/internal/security/*
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/*.class
|
||||
|
@ -591,7 +591,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.SwingAWT.dll
|
||||
-baseaddress:0x58790000
|
||||
-baseaddress:0x589D0000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/META-INF/services/sun.java2d.*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/java/swing/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/javax/swing/*
|
||||
|
@ -600,8 +600,10 @@ assembly.class
|
|||
-r:IKVM.AWT.WinForms.dll
|
||||
ikvm/awt/*.class
|
||||
java/awt/*.class
|
||||
java/awt/color/*.class
|
||||
java/awt/image/*.class
|
||||
gnu/java/awt/*.class
|
||||
gnu/java/awt/color/*.class
|
||||
sun/awt/*.class
|
||||
sun/awt/image/*.class
|
||||
sun/awt/shell/*.class
|
||||
|
@ -674,13 +676,13 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Charsets.dll
|
||||
-baseaddress:0x59810000
|
||||
-baseaddress:0x59BA0000
|
||||
@OPENJDK@/jdk/src/share/classes/sun/io/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/sun/nio/cs/ext/*.class
|
||||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Util.dll
|
||||
-baseaddress:0x5A650000
|
||||
-baseaddress:0x5AA10000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/java/util/jar/pack/intrinsic.properties
|
||||
java/util/zip/*.class
|
||||
@OPENJDK@/build/linux-amd64/gensrc/sun/util/logging/resources/*.class
|
||||
|
@ -698,7 +700,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Text.dll
|
||||
-baseaddress:0x5AA70000
|
||||
-baseaddress:0x5AE60000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/sun/text/*
|
||||
java/text/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/java/text/*.class
|
||||
|
@ -709,7 +711,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Security.dll
|
||||
-baseaddress:0x5AC50000
|
||||
-baseaddress:0x5B040000
|
||||
sun/security/jgss/wrapper/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/crypto/provider/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/net/ssl/*.class
|
||||
|
@ -774,7 +776,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Management.dll
|
||||
-baseaddress:0x5B370000
|
||||
-baseaddress:0x5B7C0000
|
||||
com/sun/management/*.class
|
||||
ConnectorBootstrap$DefaultValues.class
|
||||
ConnectorBootstrap.class
|
||||
|
@ -816,7 +818,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Misc.dll
|
||||
-baseaddress:0x5B730000
|
||||
-baseaddress:0x5BBE0000
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/activity/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/annotation/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/annotation/processing/*.class
|
||||
|
@ -906,7 +908,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Naming.dll
|
||||
-baseaddress:0x5B7F0000
|
||||
-baseaddress:0x5BCA0000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/jndi/ldap/jndiprovider.properties
|
||||
sun/net/dns/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/jndi/dns/*.class
|
||||
|
@ -931,7 +933,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Jdbc.dll
|
||||
-baseaddress:0x5B940000
|
||||
-baseaddress:0x5BE20000
|
||||
-resource:META-INF/services/java.sql.Driver=resources/META-INF/services/java.sql.Driver
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/rowset/*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/javax/sql/*
|
||||
|
@ -949,7 +951,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Remoting.dll
|
||||
-baseaddress:0x5BA90000
|
||||
-baseaddress:0x5BF70000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/sun/rmi/*
|
||||
@OPENJDK@/build/linux-amd64/classes/com/sun/jndi/rmi/registry/*.class
|
||||
@OPENJDK@/build/linux-amd64/classes/java/rmi/activation/*.class
|
||||
|
@ -975,7 +977,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Beans.dll
|
||||
-baseaddress:0x5BBB0000
|
||||
-baseaddress:0x5C090000
|
||||
@OPENJDK@/build/linux-amd64/impsrc/com/sun/activation/registries/*.class
|
||||
@OPENJDK@/build/linux-amd64/impsrc/javax/activation/*.class
|
||||
@OPENJDK@/jdk/src/share/classes/com/sun/beans/*.class
|
||||
|
@ -987,7 +989,7 @@ assembly.class
|
|||
}
|
||||
{
|
||||
-out:IKVM.OpenJDK.Media.dll
|
||||
-baseaddress:0x5BC70000
|
||||
-baseaddress:0x5C150000
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/META-INF/services/javax.print.*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/META-INF/services/javax.sound.*
|
||||
-recurse:@OPENJDK@/build/linux-amd64/j2re-image/lib/resources.jar/com/sun/imageio/plugins/common/iio-plugin.properties
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2009 Jeroen Frijters
|
||||
Copyright (C) 2010 Volker Berlin (i-net software)
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -23,70 +24,81 @@
|
|||
*/
|
||||
package sun.java2d.cmm.lcms;
|
||||
|
||||
import gnu.java.awt.color.TagEntry;
|
||||
|
||||
import java.awt.color.CMMException;
|
||||
import java.awt.color.ColorSpace;
|
||||
import java.awt.color.ICC_Profile;
|
||||
import java.awt.color.ICC_ProfileGray;
|
||||
import java.awt.color.ICC_ProfileRGB;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.Raster;
|
||||
import java.awt.image.WritableRaster;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Hashtable;
|
||||
|
||||
import sun.java2d.cmm.ColorTransform;
|
||||
import sun.java2d.cmm.PCMM;
|
||||
|
||||
// dummy color management implementation
|
||||
public class LCMS implements PCMM
|
||||
{
|
||||
private final ArrayList<byte[]> profiles = new ArrayList<byte[]>();
|
||||
public class LCMS implements PCMM {
|
||||
|
||||
private static final int HEADER_SIZE = 128;
|
||||
|
||||
private final ArrayList<ProfileData> profiles = new ArrayList<ProfileData>();
|
||||
|
||||
public synchronized long loadProfile(byte[] data)
|
||||
{
|
||||
int free = profiles.indexOf(null);
|
||||
if (free != -1)
|
||||
{
|
||||
profiles.set(free, data.clone());
|
||||
public synchronized long loadProfile( byte[] data ) {
|
||||
int free = profiles.indexOf( null );
|
||||
if( free != -1 ) {
|
||||
profiles.set( free, new ProfileData( data.clone()) );
|
||||
return free;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
long id = profiles.size();
|
||||
profiles.add(data.clone());
|
||||
profiles.add( new ProfileData( data.clone()) );
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void freeProfile(long profileID)
|
||||
{
|
||||
profiles.set((int)profileID, null);
|
||||
public synchronized void freeProfile( long profileID ) {
|
||||
profiles.set( (int)profileID, null );
|
||||
}
|
||||
|
||||
public synchronized int getProfileSize(long profileID)
|
||||
{
|
||||
return profiles.get((int)profileID).length;
|
||||
public synchronized int getProfileSize( long profileID ) {
|
||||
return profiles.get( (int)profileID ).data.length;
|
||||
}
|
||||
|
||||
public synchronized void getProfileData(long profileID, byte[] data)
|
||||
{
|
||||
byte[] src = profiles.get((int)profileID);
|
||||
System.arraycopy(src, 0, data, 0, src.length);
|
||||
public synchronized void getProfileData( long profileID, byte[] data ) {
|
||||
byte[] src = profiles.get( (int)profileID ).data;
|
||||
System.arraycopy( src, 0, data, 0, src.length );
|
||||
}
|
||||
|
||||
public void getTagData(long profileID, int tagSignature, byte[] data)
|
||||
{
|
||||
if (tagSignature == ICC_Profile.icSigHead)
|
||||
{
|
||||
byte[] src = profiles.get((int)profileID);
|
||||
System.arraycopy(src, 0, data, 0, 128);
|
||||
return;
|
||||
public void getTagData( long profileID, int tagSignature, byte[] data ) {
|
||||
ProfileData profile = profiles.get( (int)profileID );
|
||||
if( tagSignature == ICC_Profile.icSigHead ) {
|
||||
byte[] src = profile.data;
|
||||
System.arraycopy( src, 0, data, 0, HEADER_SIZE );
|
||||
} else {
|
||||
TagEntry entry = profile.tags.get( tagSignature );
|
||||
if( entry == null ){
|
||||
throw new CMMException( "tag does not exist: " + tagSignature );
|
||||
}
|
||||
byte[] src = entry.getData();
|
||||
System.arraycopy( src, 0, data, 0, src.length );
|
||||
}
|
||||
throw new CMMException("Not implemented");
|
||||
|
||||
}
|
||||
|
||||
public int getTagSize(long profileID, int tagSignature)
|
||||
{
|
||||
if (tagSignature == ICC_Profile.icSigHead)
|
||||
{
|
||||
return 128;
|
||||
public int getTagSize( long profileID, int tagSignature ) {
|
||||
if( tagSignature == ICC_Profile.icSigHead ) {
|
||||
return HEADER_SIZE;
|
||||
}
|
||||
throw new CMMException("Not implemented");
|
||||
ProfileData profile = profiles.get( (int)profileID );
|
||||
TagEntry entry = profile.tags.get( tagSignature );
|
||||
if( entry == null ){
|
||||
throw new CMMException( "tag does not exist: " + tagSignature );
|
||||
}
|
||||
return entry.getData().length;
|
||||
}
|
||||
|
||||
public void setTagData(long profileID, int tagSignature, byte[] data)
|
||||
|
@ -104,6 +116,35 @@ public class LCMS implements PCMM
|
|||
return new DummyColorTransform();
|
||||
}
|
||||
|
||||
private static class ProfileData{
|
||||
|
||||
private final byte[] data;
|
||||
private final Hashtable<Integer, TagEntry> tags;
|
||||
|
||||
private ProfileData(byte[] data){
|
||||
this.data = data;
|
||||
this.tags = createTagTable( data );
|
||||
}
|
||||
|
||||
private static Hashtable<Integer, TagEntry> createTagTable( byte[] data ) throws IllegalArgumentException {
|
||||
ByteBuffer buf = ByteBuffer.wrap( data );
|
||||
int nTags = buf.getInt( HEADER_SIZE );
|
||||
|
||||
Hashtable<Integer, TagEntry> tagTable = new Hashtable<Integer, TagEntry>();
|
||||
for( int i = 0; i < nTags; i++ ) {
|
||||
int sig = buf.getInt( HEADER_SIZE + i * TagEntry.entrySize + 4 );
|
||||
int offset = buf.getInt( HEADER_SIZE + i * TagEntry.entrySize + 8 );
|
||||
int size = buf.getInt( HEADER_SIZE + i * TagEntry.entrySize + 12 );
|
||||
TagEntry te = new TagEntry( sig, offset, size, data );
|
||||
|
||||
if( tagTable.put( sig, te ) != null )
|
||||
throw new IllegalArgumentException( "Duplicate tag in profile:" + te );
|
||||
}
|
||||
return tagTable;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class DummyColorTransform implements ColorTransform
|
||||
{
|
||||
public int getNumInComponents()
|
||||
|
|
Загрузка…
Ссылка в новой задаче