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