Example usage for javax.media.j3d ImageComponent2D ImageComponent2D

List of usage examples for javax.media.j3d ImageComponent2D ImageComponent2D

Introduction

In this page you can find the example usage for javax.media.j3d ImageComponent2D ImageComponent2D.

Prototype

public ImageComponent2D(int format, NioImageBuffer image, boolean byReference, boolean yUp) 

Source Link

Document

Constructs a 2D image component object using the specified format, NioImageBuffer, byReference flag, and yUp flag.

Usage

From source file:ImageComponentByReferenceTest.java

public BranchGroup createSceneGraph() {
    objRoot = new BranchGroup();

    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    objTrans.setCapability(Group.ALLOW_CHILDREN_WRITE);

    objRoot.addChild(objTrans);/* www.j  a v a 2s  .co  m*/

    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

    app.setCapability(Appearance.ALLOW_TEXTURE_WRITE);

    textureCube = new Box(0.4f, 0.4f, 0.4f, Box.GENERATE_TEXTURE_COORDS | Box.GENERATE_NORMALS, app);
    boxShape = textureCube.getShape(Box.FRONT);
    boxShape.setCapability(Shape3D.ALLOW_APPEARANCE_WRITE);
    objTrans.addChild(textureCube);

    checkBoard = new TiledImage();
    TextureLoader texLoader = new TextureLoader(texImage, this);
    ImageComponent2D oneImage = texLoader.getImage();
    bImage1 = oneImage.getImage();

    int index = 0;
    image[index++] = new ImageComponent2D(oneImage.getFormat(), (RenderedImage) bImage1, false, true);

    image[index++] = new ImageComponent2D(oneImage.getFormat(), (RenderedImage) bImage1, true, true);

    image[index++] = new ImageComponent2D(oneImage.getFormat(), (RenderedImage) bImage1, false, false);

    image[index++] = new ImageComponent2D(oneImage.getFormat(), (RenderedImage) bImage1, true, false);

    createRaster(objRoot);

    image[index++] = new ImageComponent2D(ImageComponent.FORMAT_RGBA, checkBoard, false, true);

    image[index++] = new ImageComponent2D(ImageComponent.FORMAT_RGBA, checkBoard, true, true);

    image[index++] = new ImageComponent2D(ImageComponent.FORMAT_RGBA, checkBoard, false, false);

    image[index++] = new ImageComponent2D(ImageComponent.FORMAT_RGBA, checkBoard, true, false);

    texOne = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image[2].getWidth(), image[2].getHeight());

    texOne.setCapability(Texture.ALLOW_IMAGE_WRITE);
    texOne.setImage(0, image[2]);

    app.setTexture(texOne);

    texCheckBoard = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image[4].getWidth(), image[4].getHeight());

    texCheckBoard.setCapability(Texture.ALLOW_IMAGE_WRITE);
    objRoot.compile();
    return objRoot;
}

From source file:TextureByReference.java

public void setFlipImages(boolean b) {
    // double check that flipping is necessary
    if (b != flip) {
        BufferedImage bImage;/* www  .j a va  2 s  .  c  om*/

        // these are the same for all images so get info once
        int format = images[0].getFormat();
        boolean byRef = images[0].isByReference();
        boolean yUp = images[0].isYUp();

        // flip all the images
        // have to new ImageComponents because can't set the image at
        // runtime
        for (int i = 0; i < images.length; i++) {
            bImage = images[i].getImage();
            ImageOps.flipImage(bImage);
            // if we are byRef and the bImage type does not match
            // currentType
            // we need to convert it. If we are not byRef we will
            // save converting until it is changed to byRef
            if (byRef && bImage.getType() != currentType) {
                if (currentType != BufferedImage.TYPE_CUSTOM) {
                    bImage = ImageOps.convertImage(bImage, currentType);
                } else if (customType == this.TYPE_CUSTOM_RGBA) {
                    bImage = ImageOps.convertToCustomRGBA(bImage);
                } else {
                    bImage = ImageOps.convertToCustomRGB(bImage);
                }
            }
            images[i] = new ImageComponent2D(format, bImage, byRef, yUp);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }

        // set flip to new value
        flip = b;
    }
}

From source file:TextureByReference.java

public void setYUp(boolean b) {
    // double check that changing yUp is necessary
    if (b != images[0].isYUp()) {

        // these are the same for all images so get info once
        int format = images[0].getFormat();
        boolean byRef = images[0].isByReference();

        // reset yUp on all the images -- have to new ImageComponents
        // because
        // cannot change the value at runtime
        for (int i = 0; i < images.length; i++) {
            // if we are byRef and the bImage type does not match
            // currentType
            // we need to convert it. If we are not byRef we will
            // save converting until it is changed to byRef
            BufferedImage bImage = images[i].getImage();
            if (byRef && bImage.getType() != currentType) {
                //     bImage = ImageOps.convertImage(bImage, currentType);
                if (currentType != BufferedImage.TYPE_CUSTOM) {
                    bImage = ImageOps.convertImage(bImage, currentType);
                } else if (customType == this.TYPE_CUSTOM_RGBA) {
                    bImage = ImageOps.convertToCustomRGBA(bImage);
                } else {
                    bImage = ImageOps.convertToCustomRGB(bImage);
                }//  ww w .j av a 2 s  . co  m
            }
            images[i] = new ImageComponent2D(format, bImage, byRef, b);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }
    }
}

From source file:TextureByReference.java

public void setByReference(boolean b) {
    // double check that changing is necessary
    if (b != images[0].isByReference()) {

        // these are the same for all images so get info once
        int format = images[0].getFormat();
        boolean yUp = images[0].isYUp();

        // reset yUp on all the images
        // have to new ImageComponents because cannot set value
        for (int i = 0; i < images.length; i++) {
            // if the bImage type does not match currentType and we are
            // setting
            // to byRef we need to convert it
            BufferedImage bImage = images[i].getImage();
            if (bImage.getType() != currentType && b) {
                //     bImage = ImageOps.convertImage(bImage, currentType);
                if (currentType != BufferedImage.TYPE_CUSTOM) {
                    bImage = ImageOps.convertImage(bImage, currentType);
                } else if (customType == this.TYPE_CUSTOM_RGBA) {
                    bImage = ImageOps.convertToCustomRGBA(bImage);
                } else {
                    bImage = ImageOps.convertToCustomRGB(bImage);
                }/*from  w w  w  .  jav  a  2s .c  o  m*/
            }
            images[i] = new ImageComponent2D(format, bImage, b, yUp);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }
    }
}

From source file:TextureByReference.java

public void setImageType(int newType) {
    currentType = newType;//from w w w .ja  v  a2  s . co m

    // only need to change the images if we are byRef otherwise will change
    // them when we chnage to byRef
    if (images[0].isByReference() == true) {
        // this information is the same for all
        int format = images[0].getFormat();
        boolean yUp = images[0].isYUp();
        boolean byRef = true;
        for (int i = 0; i < images.length; i++) {
            BufferedImage bImage = images[i].getImage();
            bImage = ImageOps.convertImage(bImage, currentType);
            images[i] = new ImageComponent2D(format, bImage, byRef, yUp);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }
    }
}

From source file:TextureByReference.java

public void setImageTypeCustomRGBA() {
    currentType = BufferedImage.TYPE_CUSTOM;
    customType = this.TYPE_CUSTOM_RGBA;

    // only need to change images if we are byRef otherwise will change
    // them when we change to byRef
    if (images[0].isByReference()) {
        // this information is the same for all
        int format = images[0].getFormat();
        boolean yUp = images[0].isYUp();
        boolean byRef = true;
        for (int i = 0; i < images.length; i++) {
            BufferedImage bImage = images[i].getImage();
            bImage = ImageOps.convertToCustomRGBA(bImage);
            images[i] = new ImageComponent2D(format, bImage, byRef, yUp);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }//from ww  w . j  av  a  2 s .com
    }
}

From source file:TextureByReference.java

public void setImageTypeCustomRGB() {
    currentType = BufferedImage.TYPE_CUSTOM;
    customType = this.TYPE_CUSTOM_RGB;

    // only need to change images if we are byRef otherwise will change
    // them when we change to byRef
    if (images[0].isByReference()) {
        // this information is the same for all
        int format = images[0].getFormat();
        boolean yUp = images[0].isYUp();
        boolean byRef = true;
        for (int i = 0; i < images.length; i++) {
            BufferedImage bImage = images[i].getImage();
            bImage = ImageOps.convertToCustomRGB(bImage);
            images[i] = new ImageComponent2D(format, bImage, byRef, yUp);
            images[i].setCapability(ImageComponent.ALLOW_IMAGE_READ);
            images[i].setCapability(ImageComponent.ALLOW_FORMAT_READ);
        }//from   w ww . j  a  v  a 2s  . co m
    }
}

From source file:pl.edu.icm.visnow.geometries.viewer3d.Display3DPanel.java

public void newOffScreen(int w, int h) {
    if (w * h == 0) {
        logger.error("bad window size");
        return;//from w w w . j a  v a2 s .co m
    }
    im = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    imC = new ImageComponent2D(ImageComponent2D.FORMAT_RGB, im, true, false);
    imC.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
    offScreenCanvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration(), true) {
        @Override
        public void postRender() {
            int stdEffectiveWidth = effectiveWidth;
            int stdEffectiveHeight = effectiveHeight;
            effectiveWidth = offScreenCanvas.getWidth();
            effectiveHeight = offScreenCanvas.getHeight();
            J3DGraphics2D vGraphics = super.getGraphics2D();
            vGraphics.setFont(new Font("sans-serif", Font.PLAIN, 10));
            vGraphics.setColor(Color.YELLOW);
            offScreenLocToWin = new LocalToWindow(objScene, offScreenCanvas);
            offScreenLocToWin.update();
            fireProjectionChanged(new ProjectionEvent(this, offScreenLocToWin));
            draw2D(vGraphics, offScreenLocToWin, effectiveWidth, effectiveHeight);
            vGraphics.flush(false);
            effectiveWidth = stdEffectiveWidth;
            effectiveHeight = stdEffectiveHeight;
            offScreenRenderDone = true;
        }
    };
    offScreenView = offScreenCanvas.getView();
    offScreen = offScreenCanvas.getScreen3D();
    offScreenCanvas.setOffScreenLocation(0, 0);
    offScreenCanvas.setOffScreenBuffer(imC);
    offScreen.setSize(w, h);
    double width = 0.0254 / 90.0 * w;
    double height = 0.0254 / 90.0 * h;
    offScreen.setPhysicalScreenWidth(width);
    offScreen.setPhysicalScreenHeight(height);
    universe.getViewer().getView().addCanvas3D(offScreenCanvas);
    if (offScreenView != null)
        if (perspective)
            offScreenView.setProjectionPolicy(View.PERSPECTIVE_PROJECTION);
        else
            offScreenView.setProjectionPolicy(View.PARALLEL_PROJECTION);
}