diff options
Diffstat (limited to 'awt/java/awt/image/renderable/RenderContext.java')
-rw-r--r-- | awt/java/awt/image/renderable/RenderContext.java | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/awt/java/awt/image/renderable/RenderContext.java b/awt/java/awt/image/renderable/RenderContext.java new file mode 100644 index 0000000..3a3b93c --- /dev/null +++ b/awt/java/awt/image/renderable/RenderContext.java @@ -0,0 +1,196 @@ +/* + * 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. + */ +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; + } +} |