Search in sources :

Example 1 with CanvasImage

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

the class GLContext method fillImage.

/**
   * Returns a (created on demand, then cached) image used when filling solid color quads or
   * triangles.
   */
Image fillImage() {
    if (fillImage == null) {
        CanvasImage image = platform.graphics().createImage(1, 1);
        image.canvas().setFillColor(0xFFFFFFFF).fillRect(0, 0, image.width(), image.height());
        fillImage = image;
    }
    return fillImage;
}
Also used : CanvasImage(playn.core.CanvasImage)

Example 2 with CanvasImage

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

the class PointerMouseTouchTest method createLabel.

protected ImageLayer createLabel(String text, GroupLayer parent, int fg, int bg, float x, float y, float padding) {
    TextLayout layout = graphics().layoutText(text, baseFormat);
    float twidth = layout.width() + padding * 2;
    float theight = layout.height() + padding * 2;
    CanvasImage image = graphics().createImage(twidth, theight);
    if (bg != 0) {
        image.canvas().setFillColor(bg);
        image.canvas().fillRect(0, 0, twidth, theight);
    }
    image.canvas().setFillColor(fg);
    image.canvas().fillText(layout, padding, padding);
    ImageLayer imageLayer = graphics().createImageLayer(image);
    imageLayer.setTranslation(x, y);
    parent.add(imageLayer);
    return imageLayer;
}
Also used : CanvasImage(playn.core.CanvasImage) ImageLayer(playn.core.ImageLayer) TextLayout(playn.core.TextLayout)

Example 3 with CanvasImage

use of playn.core.CanvasImage 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 4 with CanvasImage

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

the class Test method createButton.

protected static ImageLayer createButton(String text, final Runnable onClick) {
    CanvasImage image = formatText(text, true);
    ImageLayer button = graphics().createImageLayer(image);
    button.addListener(new Pointer.Adapter() {

        @Override
        public void onPointerStart(Pointer.Event event) {
            onClick.run();
        }
    });
    return button;
}
Also used : CanvasImage(playn.core.CanvasImage) ImageLayer(playn.core.ImageLayer) Pointer(playn.core.Pointer)

Example 5 with CanvasImage

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

the class Test method formatText.

protected static CanvasImage formatText(TextFormat format, String text, boolean border) {
    TextLayout layout = graphics().layoutText(text, format);
    float margin = border ? 10 : 0;
    float width = layout.width() + 2 * margin, height = layout.height() + 2 * margin;
    CanvasImage image = graphics().createImage(width, height);
    image.canvas().setStrokeColor(0xFF000000);
    image.canvas().setFillColor(0xFF000000);
    image.canvas().fillText(layout, margin, margin);
    if (border)
        image.canvas().strokeRect(0, 0, width - 1, height - 1);
    return image;
}
Also used : CanvasImage(playn.core.CanvasImage) TextLayout(playn.core.TextLayout)

Aggregations

CanvasImage (playn.core.CanvasImage)22 ImageLayer (playn.core.ImageLayer)7 TextLayout (playn.core.TextLayout)6 GroupLayer (playn.core.GroupLayer)5 Image (playn.core.Image)5 TextFormat (playn.core.TextFormat)5 Surface (playn.core.Surface)4 SurfaceImage (playn.core.SurfaceImage)4 ImmediateLayer (playn.core.ImmediateLayer)3 Canvas (playn.core.Canvas)2 TextWrap (playn.core.TextWrap)2 TextBlock (playn.core.util.TextBlock)2 Mouse (playn.core.Mouse)1 WheelEvent (playn.core.Mouse.WheelEvent)1 Path (playn.core.Path)1 Pointer (playn.core.Pointer)1 IndexedTrisShader (playn.core.gl.IndexedTrisShader)1