diff options
Diffstat (limited to 'awt/javax/imageio/IIOParam.java')
-rw-r--r-- | awt/javax/imageio/IIOParam.java | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/awt/javax/imageio/IIOParam.java b/awt/javax/imageio/IIOParam.java new file mode 100644 index 0000000..d998b6e --- /dev/null +++ b/awt/javax/imageio/IIOParam.java @@ -0,0 +1,316 @@ +/* + * 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 Rustem V. Rafikov + * @version $Revision: 1.3 $ + */ +package javax.imageio; + +import java.awt.*; + +/** + * The IIOParam abstract class is superclass for + * ImageReadParam and ImageWriteParam classes and provides + * methods and variables which they share. + */ +public abstract class IIOParam { + + /** The source region. */ + protected Rectangle sourceRegion; + + /** The source x subsampling. */ + protected int sourceXSubsampling = 1; + + /** The source y subsampling. */ + protected int sourceYSubsampling = 1; + + /** The subsampling x offset. */ + protected int subsamplingXOffset; + + /** The subsampling y offset. */ + protected int subsamplingYOffset; + + /** The source bands. */ + protected int[] sourceBands; + + /** The destination type. */ + protected ImageTypeSpecifier destinationType; + + /** The destination offset. */ + protected Point destinationOffset = new Point(0, 0); + + /** The default controller. */ + protected IIOParamController defaultController; + + /** The controller. */ + protected IIOParamController controller; + + /** + * Instantiates a new IIOParam. + */ + protected IIOParam() {} + + /** + * Sets the source region as a Rectangle object. + * + * @param sourceRegion the Rectangle which specifies the source region. + */ + public void setSourceRegion(Rectangle sourceRegion) { + if (sourceRegion != null) { + if (sourceRegion.x < 0) { + throw new IllegalArgumentException("x < 0"); + } + if (sourceRegion.y < 0) { + throw new IllegalArgumentException("y < 0"); + } + if (sourceRegion.width <= 0) { + throw new IllegalArgumentException("width <= 0"); + } + if (sourceRegion.height <= 0) { + throw new IllegalArgumentException("height <= 0"); + } + + if (sourceRegion.width <= subsamplingXOffset) { + throw new IllegalArgumentException("width <= subsamplingXOffset"); + } + + if (sourceRegion.height <= subsamplingYOffset) { + throw new IllegalArgumentException("height <= subsamplingXOffset"); + } + //-- clone it to avoid unexpected modifications + this.sourceRegion = (Rectangle) sourceRegion.clone(); + } else { + this.sourceRegion = null; + } + } + + /** + * Gets the source region. + * + * @return the source region as Rectangle. + */ + public Rectangle getSourceRegion() { + if (sourceRegion == null) { + return null; + } + //-- clone it to avoid unexpected modifications + return (Rectangle) sourceRegion.clone(); + } + + /** + * Sets the source subsampling. The sourceXSubsampling and + * sourceYSubsampling parameters specify the number of rows + * and columns to advance after every source pixel. + * + * @param sourceXSubsampling the source X subsampling. + * @param sourceYSubsampling the source Y subsampling. + * @param subsamplingXOffset the subsampling X offset. + * @param subsamplingYOffset the subsampling Y offset. + */ + public void setSourceSubsampling(int sourceXSubsampling, + int sourceYSubsampling, + int subsamplingXOffset, + int subsamplingYOffset) { + + if (sourceXSubsampling <= 0) { + throw new IllegalArgumentException("sourceXSubsampling <= 0"); + } + if (sourceYSubsampling <= 0) { + throw new IllegalArgumentException("sourceYSubsampling <= 0"); + } + + if (subsamplingXOffset <= 0 || subsamplingXOffset >= sourceXSubsampling) { + throw new IllegalArgumentException("subsamplingXOffset is wrong"); + } + + if (subsamplingYOffset <= 0 || subsamplingYOffset >= sourceYSubsampling) { + throw new IllegalArgumentException("subsamplingYOffset is wrong"); + } + + //-- does region contain pixels + if (sourceRegion != null) { + if (sourceRegion.width <= subsamplingXOffset || + sourceRegion.height <= subsamplingYOffset) { + throw new IllegalArgumentException("there are no pixels in region"); + } + } + + this.sourceXSubsampling = sourceXSubsampling; + this.sourceYSubsampling = sourceYSubsampling; + this.subsamplingXOffset = subsamplingXOffset; + this.subsamplingYOffset = subsamplingYOffset; + } + + /** + * Gets the source X subsampling - the number of source + * columns to advance for each pixel. + * + * @return the source X subsampling. + */ + public int getSourceXSubsampling() { + return sourceXSubsampling; + } + + /** + * Gets the source Y subsampling - the number of source + * rows to advance for each pixel. + * + * @return the source Y subsampling. + */ + public int getSourceYSubsampling() { + return sourceYSubsampling; + } + + /** + * Gets the horizontal offset of the subsampling grid. + * + * @return the horizontal offset of the subsampling grid. + */ + public int getSubsamplingXOffset() { + return subsamplingXOffset; + } + + /** + * Gets the vertical offset of the subsampling grid. + * + * @return the vertical offset of the subsampling grid. + */ + public int getSubsamplingYOffset() { + return subsamplingYOffset; + } + + /** + * Sets the indices of the source bands. + * + * @param sourceBands the indices of the source bands. + */ + public void setSourceBands(int[] sourceBands) { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Gets the array of source bands. + * + * @return the array of source bands. + */ + public int[] getSourceBands() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Sets the specified ImageTypeSpecifier for the destination image. + * + * @param destinationType the ImageTypeSpecifier. + */ + public void setDestinationType(ImageTypeSpecifier destinationType) { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Gets the type of the destination image as an ImageTypeSpecifier. . + * + * @return the ImageTypeSpecifier. + */ + public ImageTypeSpecifier getDestinationType() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Sets the offset in the destination image where + * the decoded pixels are placed as a result of reading, + * or specified an area to be written while writing operation. + * + * @param destinationOffset the destination offset. + */ + public void setDestinationOffset(Point destinationOffset) { + if (destinationOffset == null) { + throw new IllegalArgumentException("destinationOffset == null!"); + } + + this.destinationOffset = (Point) destinationOffset.clone(); + } + + /** + * Gets the offset in the destination image for placing pixels. + * + * @return the offset in the destination image. + */ + public Point getDestinationOffset() { + return (Point) destinationOffset.clone(); + } + + /** + * Sets the IIOParamController to this IIOParam object for + * providing settings to this IIOParam. + * + * @param controller the new IIOParamController. + */ + public void setController(IIOParamController controller) { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Gets the current IIOParamController controller + * for this IIOParam. + * + * @return the current IIOParamController controller + * for this IIOParam. + */ + public IIOParamController getController() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Gets the default IIOParamController controller + * for this IIOParam. + * + * @return the default IIOParamController controller + * for this IIOParam, or null. + */ + public IIOParamController getDefaultController() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Returns true if IIOParamController is installed for + * this IIOParam. + * + * @return true if IIOParamController is installed for + * this IIOParam, false otherwise. + */ + public boolean hasController() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } + + /** + * Activates the controller. + * + * @return true, if successful, false otherwise. + */ + public boolean activateController() { + // TODO implement + throw new UnsupportedOperationException("not implemented yet"); + } +} |