Search in sources :

Example 1 with Image

use of playn.core.Image in project playn by threerings.

the class SubImageTest method fragment.

protected void fragment(String source, Image image, float ox, float oy) {
    float hw = image.width() / 2f, hh = image.height() / 2f;
    Image ul = image.subImage(0, 0, hw, hh);
    Image ur = image.subImage(hw, 0, hw, hh);
    Image ll = image.subImage(0, hh, hw, hh);
    Image lr = image.subImage(hw, hh, hw, hh);
    Image ctr = image.subImage(hw / 2, hh / 2, hw, hh);
    float dx = hw + 10, dy = hh + 10;
    GroupLayer group = graphics().createGroupLayer();
    group.addAt(graphics().createImageLayer(ul), 0, 0);
    group.addAt(graphics().createImageLayer(ur), dx, 0);
    group.addAt(graphics().createImageLayer(ll), 0, dy);
    group.addAt(graphics().createImageLayer(lr), dx, dy);
    group.addAt(graphics().createImageLayer(ctr), dx / 2, 2 * dy);
    float xoff = image.width() + 20;
    group.addAt(scaleLayer(graphics().createImageLayer(ul), 2), xoff, 0);
    group.addAt(scaleLayer(graphics().createImageLayer(ur), 2), xoff + 2 * dx, 0);
    group.addAt(scaleLayer(graphics().createImageLayer(ll), 2), xoff, 2 * dy);
    group.addAt(scaleLayer(graphics().createImageLayer(lr), 2), xoff + 2 * dx, 2 * dy);
    graphics().rootLayer().addAt(group, ox, oy);
    addDescrip(source + " split into subimages, and scaled", ox, oy + image.height() * 2 + 25, 3 * image.width() + 40);
}
Also used : CanvasImage(playn.core.CanvasImage) SurfaceImage(playn.core.SurfaceImage) Image(playn.core.Image) GroupLayer(playn.core.GroupLayer)

Example 2 with Image

use of playn.core.Image in project playn by threerings.

the class SubImageTest method init.

@Override
public void init() {
    // create a canvas image and draw subimages of that
    int r = 30;
    CanvasImage cimg = graphics().createImage(2 * r, 2 * r);
    Canvas canvas = cimg.canvas();
    canvas.setFillColor(0xFF99CCFF);
    canvas.fillCircle(r, r, r);
    fragment("CanvasImage", cimg, 250, 160);
    // draw subimages of a simple static image
    Image orange = assets().getImage("images/orange.png");
    orange.addCallback(new Callback<Image>() {

        public void onSuccess(Image orange) {
            fragment("Image", orange, 250, 10);
            float pw = orange.width(), ph = orange.height(), phw = pw / 2, phh = ph / 2;
            final Image.Region orangerep = orange.subImage(0, phh / 2, pw, phh);
            orangerep.setRepeat(true, true);
            // tile a sub-image, oh my!
            ImageLayer tiled = graphics().createImageLayer(orangerep);
            tiled.setSize(100, 100);
            addTest(10, 10, tiled, "ImageLayer tiled with subimage of Image");
            // use a subimage as a fill pattern
            CanvasImage pat = graphics().createImage(100, 100);
            pat.canvas().setFillPattern(orangerep.toPattern());
            pat.canvas().fillRect(0, 0, 100, 100);
            addTest(10, 160, graphics().createImageLayer(pat), "Canvas filled with subimage");
            // tile a sub-image of a surface image, oh my!
            SurfaceImage surf = graphics().createSurface(orange.width(), orange.height());
            surf.surface().drawImage(orange, 0, 0);
            Image.Region surfrep = surf.subImage(0, phh / 2, pw, phh);
            surfrep.setRepeat(true, true);
            ImageLayer surftiled = graphics().createImageLayer(surfrep);
            surftiled.setSize(100, 100);
            addTest(10, 300, surftiled, "ImageLayer tiled with subimage of SurfaceImage");
            // draw a subimage to a canvas
            CanvasImage split = graphics().createImage(orange.width(), orange.height());
            split.canvas().drawImage(orange.subImage(0, 0, phw, phh), phw, phh);
            split.canvas().drawImage(orange.subImage(phw, 0, phw, phh), 0, phh);
            split.canvas().drawImage(orange.subImage(0, phh, phw, phh), phw, 0);
            split.canvas().drawImage(orange.subImage(phw, phh, phw, phh), 0, 0);
            addTest(140, 10, graphics().createImageLayer(split), "draw subimg into Canvas", 80);
            // draw a subimage in an immediate layer
            final Image.Region orangemid = orange.subImage(0, phh / 2, pw, phh);
            ImmediateLayer imm = graphics().createImmediateLayer(new ImmediateLayer.Renderer() {

                public void render(Surface surf) {
                    surf.drawImage(orangemid, 0, 0);
                    surf.drawImage(orangemid, orangemid.width(), 0);
                    surf.drawImage(orangemid, 0, orangemid.height());
                    surf.drawImage(orangemid, orangemid.width(), orangemid.height());
                }
            });
            addTest(130, 100, imm, 2 * orangemid.width(), 2 * orangemid.height(), "draw subimg into Surface", 100);
            // draw a subimage whose bounds oscillate
            osci = orange.subImage(0, 0, orange.width(), orange.height());
            addTest(130, 190, graphics().createImageLayer(osci), "ImageLayer with subimage with changing width", 100);
        }

        public void onFailure(Throwable err) {
            log().warn("Failed to load orange image", err);
        }
    });
}
Also used : CanvasImage(playn.core.CanvasImage) ImmediateLayer(playn.core.ImmediateLayer) Canvas(playn.core.Canvas) ImageLayer(playn.core.ImageLayer) CanvasImage(playn.core.CanvasImage) SurfaceImage(playn.core.SurfaceImage) Image(playn.core.Image) SurfaceImage(playn.core.SurfaceImage) Surface(playn.core.Surface)

Example 3 with Image

use of playn.core.Image in project playn by threerings.

the class SurfaceTest method init.

@Override
public void init() {
    final Image tile = assets().getImage("images/tile.png");
    final Image orange = assets().getImage("images/orange.png");
    AssetWatcher watcher = new AssetWatcher(new AssetWatcher.Listener() {

        @Override
        public void done() {
            addTests(orange, tile);
        }

        @Override
        public void error(Throwable err) {
            addDescrip("Error: " + err.getMessage(), 10, errY, graphics().width() - 20);
            errY += 30;
        }

        private float errY = 10;
    });
    watcher.add(tile);
    watcher.add(orange);
    watcher.start();
}
Also used : Image(playn.core.Image) SurfaceImage(playn.core.SurfaceImage) AssetWatcher(playn.core.AssetWatcher)

Example 4 with Image

use of playn.core.Image in project playn by threerings.

the class AlphaLayerTest method init.

@Override
public void init() {
    final GroupLayer rootLayer = graphics().rootLayer();
    final float fullWidth = 6 * width, fullHeight = 3 * height;
    // add a half white, half blue background
    SurfaceImage bg = graphics().createSurface(fullWidth, fullHeight);
    bg.surface().setFillColor(Color.rgb(255, 255, 255));
    bg.surface().fillRect(0, 0, fullWidth, fullHeight);
    bg.surface().setFillColor(Color.rgb(0, 0, 255));
    bg.surface().fillRect(0, 2 * height, fullWidth, height);
    rootLayer.add(graphics().createImageLayer(bg));
    addDescrip("all layers contained in group layer with a=0.5\n" + "thus, fully composited a=0.25", offset, fullHeight + 5, fullWidth);
    // add a 50% transparent group layer
    final GroupLayer groupLayer = graphics().createGroupLayer();
    groupLayer.setAlpha(0.5f);
    rootLayer.add(groupLayer);
    assets().getImage("images/alphalayertest.png").addCallback(new Callback<Image>() {

        @Override
        public void onSuccess(Image image) {
            // add the layers over the white background
            float x = offset;
            groupLayer.addAt(graphics().createImageLayer(image).setAlpha(0.5f), x, offset);
            addDescrip("image\nimg layer a=0.5", x, offset + height, width);
            x += width;
            SurfaceImage surf1 = graphics().createSurface(image.width(), image.height());
            surf1.surface().setAlpha(0.5f).drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(surf1), x, offset);
            addDescrip("surface a=0.5\nimg layer a=1", x, offset + height, width);
            x += width;
            SurfaceImage surf2 = graphics().createSurface(image.width(), image.height());
            surf2.surface().drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(surf2).setAlpha(0.5f), x, offset);
            addDescrip("surface a=1\nimg layer a=0.5", x, offset + height, width);
            x += width;
            CanvasImage canvas1 = graphics().createImage(image.width(), image.height());
            canvas1.canvas().drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(canvas1).setAlpha(0.5f), x, offset);
            addDescrip("canvas a=1\nimg layer a=0.5", x, offset + height, width);
            x += width;
            CanvasImage canvas2 = graphics().createImage(image.width(), image.height());
            canvas2.canvas().setAlpha(0.5f).drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(canvas2), x, offset);
            addDescrip("canvas a=0.5\nimg layer a=1", x, offset + height, width);
            x += width;
            // add the same layers over the blue background
            x = offset;
            groupLayer.addAt(graphics().createImageLayer(image).setAlpha(0.5f), x, offset + 2 * height);
            x += width;
            SurfaceImage surf1b = graphics().createSurface(image.width(), image.height());
            surf1b.surface().setAlpha(0.5f).drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(surf1b), x, offset + 2 * height);
            x += width;
            SurfaceImage surf2b = graphics().createSurface(image.width(), image.height());
            surf2b.surface().drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(surf2b).setAlpha(0.5f), x, offset + 2 * height);
            x += width;
            CanvasImage canvas1b = graphics().createImage(image.width(), image.height());
            canvas1b.canvas().drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(canvas1b).setAlpha(0.5f), x, offset + 2 * height);
            x += width;
            CanvasImage canvas2b = graphics().createImage(image.width(), image.height());
            canvas2b.canvas().setAlpha(0.5f).drawImage(image, 0, 0);
            groupLayer.addAt(graphics().createImageLayer(canvas2b), x, offset + 2 * height);
            // add some copies of the image at 1, 0.5, 0.25 and 0.125 alpha
            x = offset + width;
            for (float alpha : new float[] { 1, 1 / 2f, 1 / 4f, 1 / 8f }) {
                float y = fullHeight + 50;
                rootLayer.addAt(graphics().createImageLayer(image).setAlpha(alpha), x, y);
                addDescrip("image a=" + alpha, x, y + height / 2, width / 2);
                x += width;
            }
        }

        @Override
        public void onFailure(Throwable err) {
            log().error("Error loading image", err);
        }
    });
    // add ground truth of 25% opaque image
    assets().getImage("images/alphalayertest_expected.png").addCallback(new Callback<Image>() {

        @Override
        public void onSuccess(Image image) {
            rootLayer.addAt(graphics().createImageLayer(image), 5 * width, 0);
            addDescrip("ground truth", 5 * width, offset + height, width);
        }

        @Override
        public void onFailure(Throwable err) {
            log().error("Error loading image", err);
        }
    });
}
Also used : CanvasImage(playn.core.CanvasImage) CanvasImage(playn.core.CanvasImage) SurfaceImage(playn.core.SurfaceImage) Image(playn.core.Image) GroupLayer(playn.core.GroupLayer) SurfaceImage(playn.core.SurfaceImage)

Example 5 with Image

use of playn.core.Image in project playn by threerings.

the class CanvasTest method addTestCanvas.

private void addTestCanvas(String descrip, int width, int height, String imagePath, final ImageDrawer drawer) {
    final CanvasImage target = graphics().createImage(width, height);
    assets().getImage(imagePath).addCallback(new Callback<Image>() {

        public void onSuccess(Image image) {
            drawer.draw(target.canvas(), image);
        }

        public void onFailure(Throwable err) {
            System.err.println("Oops! " + err);
        }
    });
    addTestLayer(descrip, width, height, graphics().createImageLayer(target));
}
Also used : CanvasImage(playn.core.CanvasImage) CanvasImage(playn.core.CanvasImage) Image(playn.core.Image)

Aggregations

Image (playn.core.Image)11 CanvasImage (playn.core.CanvasImage)7 SurfaceImage (playn.core.SurfaceImage)5 ImageLayer (playn.core.ImageLayer)3 Canvas (playn.core.Canvas)2 GroupLayer (playn.core.GroupLayer)2 Pointer (playn.core.Pointer)2 Test (org.junit.Test)1 AssetWatcher (playn.core.AssetWatcher)1 ImmediateLayer (playn.core.ImmediateLayer)1 Log (playn.core.Log)1 Path (playn.core.Path)1 Surface (playn.core.Surface)1 TextFormat (playn.core.TextFormat)1 TextLayout (playn.core.TextLayout)1 Touch (playn.core.Touch)1 AbstractPlayNTest (playn.tests.AbstractPlayNTest)1