You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by de...@apache.org on 2001/04/27 21:55:45 UTC
cvs commit: xml-batik/sources/org/apache/batik/util Service.java
deweese 01/04/27 12:55:45
Added: sources/org/apache/batik/ext/awt/image/rendered
ComponentTransferRed.java
sources/org/apache/batik/util Service.java
Log:
Added files needed by first commit. :)
Revision Changes Path
1.1 xml-batik/sources/org/apache/batik/ext/awt/image/rendered/ComponentTransferRed.java
Index: ComponentTransferRed.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.ext.awt.image.rendered;
import java.awt.RenderingHints;
import java.awt.image.WritableRaster;
import java.awt.image.LookupOp;
import java.awt.image.LookupTable;
import java.awt.image.ByteLookupTable;
import org.apache.batik.ext.awt.image.GraphicsUtil;
import org.apache.batik.ext.awt.image.TransferFunction;
/**
*
* @author <a href="mailto:thomas.deweese@kodak.com">Thomas DeWeese</a>
* @version $Id: ComponentTransferRed.java,v 1.1 2001/04/27 19:55:43 deweese Exp $
*/
public class ComponentTransferRed extends AbstractRed {
LookupOp operation;
/**
* The constructor will instantiate a LookupOp instance using
* a LookupOp, which is built using the four LUT
* data obtained by the TransferFunction objects
* funcs[0] : Alpha component transfer function
* funcs[1] : Red component transfer function
* funcs[2] : Green component transfer function
* funcs[3] : Blue component transfer function
*/
public ComponentTransferRed(CachableRed src,
TransferFunction [] funcs,
RenderingHints hints) {
super(src, src.getBounds(),
GraphicsUtil.coerceColorModel(src.getColorModel(), false),
src.getSampleModel(),
null);
byte [][] tableData = {funcs[1].getLookupTable(),
funcs[2].getLookupTable(),
funcs[3].getLookupTable(),
funcs[0].getLookupTable()};
// Note that we create an anonymous subclass here.
// For what ever reason this makes the Op work correctly.
// If you remove this, it seems to get the color channels messed
// up. The downside is that I suspect that this means we are
// falling into a more general, and hence slower case, but
// at least it works....
operation = new LookupOp(new ByteLookupTable(0, tableData), hints)
{ };
}
public WritableRaster copyData(WritableRaster wr){
CachableRed src = (CachableRed)getSources().elementAt(0);
wr = src.copyData(wr);
GraphicsUtil.coerceData(wr, src.getColorModel(), false);
WritableRaster srcWR = wr.createWritableTranslatedChild(0,0);
operation.filter(srcWR, srcWR);
return wr;
}
}
1.1 xml-batik/sources/org/apache/batik/util/Service.java
Index: Service.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.util;
import java.util.HashMap;
import java.util.Vector;
import java.util.Iterator;
import java.util.Enumeration;
import java.io.IOException;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
/**
* This class handles looking up service providers on the class path.
* it implements the system described in:
*
* http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html
* Under Service Provider. Note that this interface is very
* similar to the one they describe which seems to be missing in the JDK.
*
* @author <a href="mailto:Thomas.DeWeeese@Kodak.com">Thomas DeWeese</a>
* @version $Id: Service.java,v 1.1 2001/04/27 19:55:44 deweese Exp $
*/
public class Service {
static HashMap providerMap = new HashMap();
public static synchronized Iterator providers(Class cls) {
ClassLoader cl = cls.getClassLoader();
String serviceFile = "META-INF/services/"+cls.getName();
// System.out.println("File: " + serviceFile);
Vector v = (Vector)providerMap.get(serviceFile);
if (v != null)
return v.iterator();
v = new Vector();
providerMap.put(serviceFile, v);
Enumeration e;
try {
e = cl.getResources(serviceFile);
} catch (IOException ioe) {
return v.iterator();
}
while (e.hasMoreElements()) {
try {
URL u = (URL)e.nextElement();
// System.out.println("URL: " + u);
InputStream is = u.openStream();
Reader r = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(r);
String line = br.readLine();
while (line != null) {
try {
// First strip any comment...
int idx = line.indexOf('#');
if (idx != -1)
line = line.substring(0, idx);
// Trim whitespace.
line = line.trim();
// If nothing left then loop around...
if (line.length() == 0) {
line = br.readLine();
continue;
}
// System.out.println("Line: " + line);
// Try and load the class
Object obj = cl.loadClass(line).newInstance();
// stick it into our vector...
v.add(obj);
} catch (Exception ex) {
// Just try the next line
}
line = br.readLine();
}
} catch (Exception ex) {
// Just try the next file...
}
}
return v.iterator();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org