⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagecomponent2d.java

📁 JAVA3D矩陈的相关类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * ImageComponent2D object.     *     * @exception CapabilityNotSetException if appropriate capability is     * not set and this object is part of live or compiled scene graph     *     * @exception IllegalStateException if this ImageComponent object     * is <i>not</i> yUp.     *     * @exception IllegalArgumentException if the width and height of the     * specified image is not equal to the width and height of this     * ImageComponent object.     *     * @exception IllegalArgumentException if the number of components in format      * does not match the number of components in image.     *     * @since Java 3D 1.5     */    public void set(NioImageBuffer image) {        if (isLiveOrCompiled()) {            if(!this.getCapability(ALLOW_IMAGE_WRITE)) {                throw new CapabilityNotSetException(                        J3dI18N.getString("ImageComponent2D1"));            }        }        ((ImageComponent2DRetained)this.retained).set(image);    }    /**     * Retrieves the image from this ImageComponent2D object.  If the     * data access mode is not by-reference, a copy of the image     * is made.  If the data access mode is by-reference, the     * reference is returned.     *     * @return either a new BufferedImage object created from the data     * in this image component, or the BufferedImage object referenced     * by this image component.     *     * @exception CapabilityNotSetException if appropriate capability is     * not set and this object is part of live or compiled scene graph     *     * @exception IllegalStateException if the image class is not     * ImageClass.BUFFERED_IMAGE.     */    public BufferedImage getImage() {        if (isLiveOrCompiled()) {            if(!this.getCapability(ImageComponent.ALLOW_IMAGE_READ))              throw new CapabilityNotSetException(J3dI18N.getString("ImageComponent2D0"));	}	RenderedImage img = ((ImageComponent2DRetained)this.retained).getImage();	if ((img != null) && !(img instanceof BufferedImage)) {	    throw new IllegalStateException(J3dI18N.getString("ImageComponent2D5"));	}		return (BufferedImage) img;    }    /**     * Retrieves the image from this ImageComponent2D object.  If the     * data access mode is not by-reference, a copy of the image     * is made.  If the data access mode is by-reference, the     * reference is returned.     *     * @return either a new RenderedImage object created from the data     * in this image component, or the RenderedImage object referenced     * by this image component.     *     * @exception CapabilityNotSetException if appropriate capability is     * not set and this object is part of live or compiled scene graph     *     * @exception IllegalStateException if the image class is not one of:     * ImageClass.BUFFERED_IMAGE or ImageClass.RENDERED_IMAGE.     *     * @since Java 3D 1.2     */    public RenderedImage getRenderedImage() {        if (isLiveOrCompiled())            if(!this.getCapability(ImageComponent.ALLOW_IMAGE_READ))              throw new CapabilityNotSetException(J3dI18N.getString("ImageComponent2D0"));	return ((ImageComponent2DRetained)this.retained).getImage();    }    /**     * Retrieves the image from this ImageComponent2D object.  If the     * data access mode is not by-reference, a copy of the image     * is made.  If the data access mode is by-reference, the     * reference is returned.     *     * @return either a new NioImageBuffer object created from the data     * in this image component, or the NioImageBuffer object referenced     * by this image component.     *     * @exception CapabilityNotSetException if appropriate capability is     * not set and this object is part of live or compiled scene graph     *     * @exception IllegalStateException if the image class is not     * ImageClass.NIO_IMAGE_BUFFER.     *     * @since Java 3D 1.5     */    public NioImageBuffer getNioImage() {        if (isLiveOrCompiled()) {            if (!this.getCapability(ImageComponent.ALLOW_IMAGE_READ)) {                throw new CapabilityNotSetException(J3dI18N.getString("ImageComponent2D0"));            }        }        return ((ImageComponent2DRetained)this.retained).getNioImage();    }    /**     * Modifies a contiguous subregion of the image component.     * Block of data of dimension (width * height)     * starting at the offset (srcX, srcY) of the specified      * RenderedImage object will be copied into the image component     * starting at the offset (dstX, dstY) of the ImageComponent2D object.     * The specified RenderedImage object must be of the same format as     * the current RenderedImage object in this image component.     * This method can only be used if the data access mode is     * by-copy. If it is by-reference, see updateData().     *     * @param image RenderedImage object containing the subimage.     * @param width width of the subregion.     * @param height height of the subregion.     * @param srcX starting X offset of the subregion in the      * specified image.     * @param srcY starting Y offset of the subregion in the      * specified image.     * @param dstX starting X offset of the subregion in the image      * component of this object.     * @param dstY starting Y offset of the subregion in the image      * component of this object.     *     * @exception CapabilityNotSetException if appropriate capability is     * not set and this object is part of live or compiled scene graph     *     * @exception IllegalStateException if the data access mode is     * <code>BY_REFERENCE</code>.     *     * @exception IllegalArgumentException if <code>width</code> or      * <code>height</code> of     * the subregion exceeds the dimension of the image of this object.     *     * @exception IllegalArgumentException if <code>dstX</code> < 0, or     * (<code>dstX</code> + <code>width</code>) > width of this object, or      * <code>dstY</code> < 0, or     * (<code>dstY</code> + <code>height</code>) > height of this object.     *     * @exception IllegalArgumentException if <code>srcX</code> < 0, or     * (<code>srcX</code> + <code>width</code>) > width of the RenderedImage     * object containing the subimage, or      * <code>srcY</code> < 0, or     * (<code>srcY</code> + <code>height</code>) > height of the      * RenderedImage object containing the subimage.     *     * @exception IllegalArgumentException if the specified RenderedImage     * is not compatible with the existing RenderedImage.      *     * @exception IllegalStateException if the image class is not one of:     * ImageClass.BUFFERED_IMAGE or ImageClass.RENDERED_IMAGE.     *     * @since Java 3D 1.3     */    public void setSubImage(RenderedImage image, int width, int height,				int srcX, int srcY, int dstX, int dstY) {        if (isLiveOrCompiled() &&                !this.getCapability(ALLOW_IMAGE_WRITE)) {            throw new CapabilityNotSetException(                                J3dI18N.getString("ImageComponent2D1"));        }        if (((ImageComponent2DRetained)this.retained).isByReference()) {            throw new IllegalStateException(                                J3dI18N.getString("ImageComponent2D4"));        }        int w = ((ImageComponent2DRetained)this.retained).getWidth();        int h = ((ImageComponent2DRetained)this.retained).getHeight();        // Fix to issue 492        if ((srcX < 0) || (srcY < 0) ||                ((srcX + width) > image.getWidth()) || ((srcY + height) > image.getHeight()) ||                (dstX < 0) || (dstY < 0) ||                ((dstX + width) > w) || ((dstY + height) > h)) {            throw new IllegalArgumentException(                    J3dI18N.getString("ImageComponent2D3"));        }                       ((ImageComponent2DRetained)this.retained).setSubImage(                                image, width, height, srcX, srcY, dstX, dstY);    }    /**     * Updates image data that is accessed by reference.     * This method calls the updateData method of the specified     * ImageComponent2D.Updater object to synchronize updates to the     * image data that is referenced by this ImageComponent2D object.     * Applications that wish to modify such data must perform all     * updates via this method.     * <p>     * The data to be modified has to be within the boundary of the     * subregion     * specified by the offset (x, y) and the dimension (width*height).     * It is illegal to modify data outside this boundary.     * If any referenced data is modified outisde the updateData     * method, or any data outside the specified boundary is modified,     * the results are undefined.     * <p>     * @param updater object whose updateData callback method will be     * called to update the data referenced by this ImageComponent2D object.     * @param x starting X offset of the subregion.     * @param y starting Y offset of the subregion.     * @param width width of the subregion.     * @param height height of the subregion.     *     * @exception CapabilityNotSetException if the appropriate capability     * is not set, and this object is part of a live or compiled scene graph     * @exception IllegalStateException if the data access mode is     * <code>BY_COPY</code>.     * @exception IllegalArgumentException if <code>width</code> or     * <code>height</code> of     * the subregion exceeds the dimension of the image of this object.     * @exception IllegalArgumentException if <code>x</code> < 0, or     * (<code>x</code> + <code>width</code>) > width of this object, or     * <code>y</code> < 0, or     * (<code>y</code> + <code>height</code>) > height of this object.     *     * @since Java 3D 1.3     */    public void updateData(Updater updater, 			   int x, int y,			   int width, int height) {	if (isLiveOrCompiled() &&		!this.getCapability(ALLOW_IMAGE_WRITE)) {	    throw new CapabilityNotSetException(                                J3dI18N.getString("ImageComponent2D1"));	}	if (!((ImageComponent2DRetained)this.retained).isByReference()) {	    throw new IllegalStateException(				J3dI18N.getString("ImageComponent2D2"));	}	int w = ((ImageComponent2DRetained)this.retained).getWidth();	int h = ((ImageComponent2DRetained)this.retained).getHeight();	if ((x < 0) || (y < 0) || ((x + width) > w) || ((y + height) > h)) {	    throw new IllegalArgumentException(				J3dI18N.getString("ImageComponent2D3"));	}	((ImageComponent2DRetained)this.retained).updateData(				updater, x, y, width, height);    }    /**     * Creates a retained mode ImageComponent2DRetained object that this     * ImageComponent2D component object will point to.     */    void createRetained() {	this.retained = new ImageComponent2DRetained();	this.retained.setSource(this);    }    /**     * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)     */    public NodeComponent cloneNodeComponent() {	ImageComponent2DRetained rt = (ImageComponent2DRetained) retained;	ImageComponent2D img = new ImageComponent2D(rt.getFormat(),						    rt.width,						    rt.height,						    rt.byReference,						    rt.yUp);	img.duplicateNodeComponent(this);	return img;    }         /**     * Copies all node information from <code>originalNodeComponent</code>      * into the current node.  This method is called from the     * <code>duplicateNode</code> method. This routine does     * the actual duplication of all "local data" (any data defined in     * this object).      *     * @param originalNodeComponent the original node to duplicate     * @param forceDuplicate when set to <code>true</code>, causes the     *  <code>duplicateOnCloneTree</code> flag to be ignored.  When     *  <code>false</code>, the value of each node's     *  <code>duplicateOnCloneTree</code> variable determines whether     *  NodeComponent data is duplicated or copied.     *     * @see Node#cloneTree     * @see NodeComponent#setDuplicateOnCloneTree     */    void duplicateAttributes(NodeComponent originalNodeComponent,            boolean forceDuplicate) {        super.duplicateAttributes(originalNodeComponent, forceDuplicate);        ImageComponent.ImageClass imageClass =                ((ImageComponentRetained)originalNodeComponent.retained).getImageClass();        if(imageClass == ImageComponent.ImageClass.NIO_IMAGE_BUFFER) {            NioImageBuffer nioImg = ((ImageComponent2DRetained)            originalNodeComponent.retained).getNioImage();            if(nioImg != null) {                ((ImageComponent2DRetained) retained).set(nioImg);            }        } else {            RenderedImage img = ((ImageComponent2DRetained)            originalNodeComponent.retained).getImage();            if (img != null) {                ((ImageComponent2DRetained) retained).set(img);            }        }    }    /**     * The ImageComponent2D.Updater interface is used in updating image data     * that is accessed by reference from a live or compiled ImageComponent     * object.  Applications that wish to modify such data must define a     * class that implements this interface.  An instance of that class is     * then passed to the <code>updateData</code> method of the     * ImageComponent object to be modified.     *     * @since Java 3D 1.3     */    public static interface Updater {	/**	 * Updates image data that is accessed by reference.	 * This method is called by the updateData method of an	 * ImageComponent object to effect	 * safe updates to image data that	 * is referenced by that object.  Applications that wish to modify	 * such data must implement this method and perform all updates	 * within it.	 * <br>	 * NOTE: Applications should <i>not</i> call this method directly.	 *	 * @param imageComponent the ImageComponent object being updated.	 * @param x starting X offset of the subregion.	 * @param y starting Y offset of the subregion.	 * @param width width of the subregion.	 * @param height height of the subregion.	 *	 * @see ImageComponent2D#updateData	 */	public void updateData(ImageComponent2D imageComponent,			       int x, int y,			       int width, int height);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -