Package com.sun.pdfview.pattern

Source Code of com.sun.pdfview.pattern.PDFPattern

/*
* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

package com.sun.pdfview.pattern;


import java.awt.geom.AffineTransform;
import java.io.IOException;
import java.util.Map;

import com.sun.pdfview.PDFObject;
import com.sun.pdfview.PDFPaint;
import com.sun.pdfview.PDFParseException;

/**
* The abstract superclass of all PDF Pattern types
*
*/
public abstract class PDFPattern {
    /** the pattern type (1 or 2) */
    private int type;
   
    /** the matrix to transform from pattern space to PDF space */
    private AffineTransform xform;
    /** Creates a new instance of PDFPattern */
    protected PDFPattern(int type)
    {
        this.type = type;
    }
    /**
     * Read a pattern from the given pattern stream
     */
    public static PDFPattern getPattern(PDFObject patternObj, Map resources)
        throws IOException
    {
        // see if the pattern is already cached
        PDFPattern pattern = (PDFPattern) patternObj.getCache();
        if (pattern != null) {
            return pattern;
        }
       
        // get the pattern type
        int type = patternObj.getDictRef("PatternType").getIntValue();
        
        // read the pattern transform matrix
        PDFObject matrix = patternObj.getDictRef("Matrix");
  AffineTransform xform = null;
        if (matrix == null) {
            xform = new AffineTransform();
        } else {
            float elts[]= new float[6];
            for (int i = 0; i < elts.length; i++) {
                elts[i] = (matrix.getAt(i)).getFloatValue();
            }
       
            xform = new AffineTransform(elts);
        }   
       
        switch (type) {
            case 1:
                pattern = new PatternType1();
                break;
            case 2:
              pattern = new PatternType2();
              break;
            default:
                throw new PDFParseException("Unknown pattern type " + type);
        }      
       
        // set the transform
        pattern.setTransform(xform);
       
        // parse the pattern-specific data
        pattern.parse(patternObj, resources);
       
        // set the cache
        patternObj.setCache(pattern);
       
        return pattern;
    }
   
    /**
     * Get the type of this pattern
     */
    public int getPatternType() {
        return this.type;
    }
   
    /**
     * Get the transform associated with this pattern
     */
    public AffineTransform getTransform() {
        return this.xform;
    }
   
    /**
     * Set the transform associated with this pattern
     */
    protected void setTransform(AffineTransform xform) {
        this.xform = xform;
    }
   
    /**
     * Parse the pattern-specific information from the pdf object
     *
     * @param patternObj the pdfobject with data for this pattern
     */
    protected abstract void parse(PDFObject patternObj, Map resources)
        throws IOException;
   
    /**
     * Returns paint that represents the selected pattern
     *
     * @param basePaint the background paint color, or null for none
     */
    public abstract PDFPaint getPaint(PDFPaint basePaint);
}
TOP

Related Classes of com.sun.pdfview.pattern.PDFPattern

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.