/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ /** * @author Igor V. Stolyarov * @version $Revision$ */ package java.awt.image.renderable; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.AffineTransform; /** * The Class RenderContext stores data on how an image is to be rendered: the * affine transform, the area of interest, and the rendering hints. * * @since Android 1.0 */ public class RenderContext implements Cloneable { /** * The affine transform. */ AffineTransform transform; /** * The area of interest. */ Shape aoi; /** * The rendering hints. */ RenderingHints hints; /** * Instantiates a new render context. * * @param usr2dev * the affine transform. * @param aoi * the area of interest. * @param hints * the rendering hints. */ public RenderContext(AffineTransform usr2dev, Shape aoi, RenderingHints hints) { this.transform = (AffineTransform)usr2dev.clone(); this.aoi = aoi; this.hints = hints; } /** * Instantiates a new render context with no specified hints. * * @param usr2dev * the affine transform. * @param aoi * the area of interest. */ public RenderContext(AffineTransform usr2dev, Shape aoi) { this(usr2dev, aoi, null); } /** * Instantiates a new render context with no specified area of interest. * * @param usr2dev * the affine transform. * @param hints * the rendering hints. */ public RenderContext(AffineTransform usr2dev, RenderingHints hints) { this(usr2dev, null, hints); } /** * Instantiates a new render context with no rendering hints or area of * interest. * * @param usr2dev * the affine transform. */ public RenderContext(AffineTransform usr2dev) { this(usr2dev, null, null); } @Override public Object clone() { return new RenderContext(transform, aoi, hints); } /** * Sets the affine transform for this render context. * * @param newTransform * the new affine transform. */ public void setTransform(AffineTransform newTransform) { transform = (AffineTransform)newTransform.clone(); } /** * Concatenates the current transform with the specified transform (so they * are applied with the specified transform acting first) and sets the * resulting transform as the affine transform of this rendering context. * * @param modTransform * the new transform which modifies the current transform. * @deprecated use * {@link RenderContext#preConcatenateTransform(AffineTransform)} * . */ @Deprecated public void preConcetenateTransform(AffineTransform modTransform) { preConcatenateTransform(modTransform); } /** * Concatenates the current transform with the specified transform (so they * are applied with the specified transform acting first) and sets the * resulting transform as the affine transform of this rendering context. * * @param modTransform * the new transform which modifies the current transform. */ public void preConcatenateTransform(AffineTransform modTransform) { transform.preConcatenate(modTransform); } /** * Concatenate the specified transform with the current transform. * * @param modTransform * the new transform which modifies the current transform. * @deprecated use * {@link RenderContext#concatenateTransform(AffineTransform)}. */ @Deprecated public void concetenateTransform(AffineTransform modTransform) { concatenateTransform(modTransform); } /** * Concatenate the specified transform with the current transform. * * @param modTransform * the new transform which modifies the current transform. */ public void concatenateTransform(AffineTransform modTransform) { transform.concatenate(modTransform); } /** * Gets the transform. * * @return the transform. */ public AffineTransform getTransform() { return (AffineTransform)transform.clone(); } /** * Sets the area of interest. * * @param newAoi * the new area of interest. */ public void setAreaOfInterest(Shape newAoi) { aoi = newAoi; } /** * Gets the area of interest. * * @return the area of interest. */ public Shape getAreaOfInterest() { return aoi; } /** * Sets the rendering hints. * * @param hints * the new rendering hints. */ public void setRenderingHints(RenderingHints hints) { this.hints = hints; } /** * Gets the rendering hints. * * @return the rendering hints. */ public RenderingHints getRenderingHints() { return hints; } }