/* * Copyright 2006-2017 ICEsoft Technologies Canada Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.icepdf.core.pobjects.graphics; import org.icepdf.core.pobjects.Name; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; /** * <p>Patterns come in two varieties:</p> * <ul> * <li><p><i>Tiling patterns</i> consist of a small graphical figure (called a * pattern cell) that is replicated at fixed horizontal and vertical * intervals to fill the area to be painted. The graphics objects to * use for tiling are described by a content stream. (PDF 1.2)</li> * <li><p><i>Shading patterns</i> define a gradient fill that produces a smooth * transition between colors across the area. The color to use is * specified as a function of position using any of a variety of * methods. (PDF 1.3)</li> * </ul> * <p>Note Tiling pattern and shading patterns are not currently supported</p> * * @since 1.0 */ public interface Pattern { /** * The pattern type is a tiling pattern */ public static final int PATTERN_TYPE_TILING = 1; /** * The pattern type is a shading pattern */ public static final int PATTERN_TYPE_SHADING = 2; public static final Name TYPE_VALUE = new Name("pattern"); public Name getType(); public int getPatternType(); public AffineTransform getMatrix(); public void setMatrix(AffineTransform matrix); public Rectangle2D getBBox(); void init(GraphicsState graphicsState); public Paint getPaint() throws InterruptedException; public void setParentGraphicState(GraphicsState graphicsState); }