Search in sources :

Example 1 with ImageLayer

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

the class PointerMouseTouchTest method init.

@Override
public void init() {
    float y = 20, x = 20;
    preventDefault = new Toggle("Prevent Default");
    graphics().rootLayer().addAt(preventDefault.layer, x, y);
    x += preventDefault.layer.image().width() + 5;
    capture = new Toggle("Capture");
    graphics().rootLayer().addAt(capture.layer, x, y);
    x += capture.layer.image().width() + 5;
    propagate = new NToggle<String>("Propagation", "Off", "On", "On (stop)") {

        @Override
        public void set(int value) {
            super.set(value);
            platform().setPropagateEvents(value != 0);
        }
    };
    graphics().rootLayer().addAt(propagate.layer, x, y);
    y += propagate.layer.image().height() + 5;
    x = 20;
    float boxWidth = 300, boxHeight = 110;
    final Box mouse = new Box("Mouse", 0xffff8080, boxWidth, boxHeight);
    graphics().rootLayer().addAt(mouse.layer, x, y);
    y += mouse.layer.height() + 5;
    final Box pointer = new Box("Pointer", 0xff80ff80, boxWidth, boxHeight);
    graphics().rootLayer().addAt(pointer.layer, x, y);
    y += pointer.layer.height() + 5;
    final Box touch = new Box("Touch", 0xff8080ff, boxWidth, boxHeight);
    graphics().rootLayer().addAt(touch.layer, x, y);
    y = mouse.layer.ty();
    x += touch.layer.width() + 5;
    // setup the logger and its layer
    y += createLabel("Event Log", 0, x, y).height();
    logger = new TextLogger(375, 15, logFormat);
    logger.layer.setTranslation(x, y);
    graphics().rootLayer().add(logger.layer);
    y += logger.layer.height() + 5;
    // setup the motion logger and its layer
    y += createLabel("Motion Log", 0, x, y).height();
    motionLabel = new TextMapper(375, 6, logFormat);
    motionLabel.layer.setTranslation(x, y);
    graphics().rootLayer().add(motionLabel.layer);
    // add mouse layer listener
    mouse.label.addListener(new Mouse.LayerListener() {

        ImageLayer label = mouse.label;

        @Override
        public void onMouseDown(ButtonEvent event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "mouse down"));
        }

        @Override
        public void onMouseDrag(MotionEvent event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("mouse drag", describe(event, ""));
        }

        @Override
        public void onMouseUp(ButtonEvent event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "mouse up"));
        }

        @Override
        public void onMouseMove(MotionEvent event) {
            modify(event);
            motionLabel.set("mouse move", describe(event, ""));
        }

        @Override
        public void onMouseOver(MotionEvent event) {
            modify(event);
            logger.log(describe(event, "mouse over"));
        }

        @Override
        public void onMouseOut(MotionEvent event) {
            modify(event);
            logger.log(describe(event, "mouse out"));
        }

        @Override
        public void onMouseWheelScroll(WheelEvent event) {
            modify(event);
            logger.log(describe(event, "mouse wheel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add mouse layer listener to parent
    mouse.layer.addListener(new Mouse.LayerListener() {

        @Override
        public void onMouseDown(ButtonEvent event) {
            logger.log(describe(event, "parent mouse down"));
        }

        @Override
        public void onMouseDrag(MotionEvent event) {
            motionLabel.set("parent mouse drag", describe(event, ""));
        }

        @Override
        public void onMouseUp(ButtonEvent event) {
            logger.log(describe(event, "parent mouse up"));
        }

        @Override
        public void onMouseMove(MotionEvent event) {
            motionLabel.set("parent mouse move", describe(event, ""));
        }

        @Override
        public void onMouseOver(MotionEvent event) {
            logger.log(describe(event, "parent mouse over"));
        }

        @Override
        public void onMouseOut(MotionEvent event) {
            logger.log(describe(event, "parent mouse out"));
        }

        @Override
        public void onMouseWheelScroll(WheelEvent event) {
            logger.log(describe(event, "parent mouse wheel"));
        }
    });
    // add pointer layer listener
    pointer.label.addListener(new Pointer.Listener() {

        ImageLayer label = pointer.label;

        @Override
        public void onPointerStart(Event event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "pointer start"));
        }

        @Override
        public void onPointerDrag(Event event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("pointer drag", describe(event, ""));
        }

        @Override
        public void onPointerEnd(Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "pointer end"));
        }

        @Override
        public void onPointerCancel(Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "pointer cancel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add pointer listener for parent layer
    pointer.layer.addListener(new Pointer.Listener() {

        double start;

        @Override
        public void onPointerStart(Event event) {
            logger.log(describe(event, "parent pointer start"));
            start = event.time();
        }

        @Override
        public void onPointerDrag(Event event) {
            motionLabel.set("parent pointer drag", describe(event, ""));
            if (capture.value() && event.time() - start > 2000) {
                event.capture();
            }
        }

        @Override
        public void onPointerEnd(Event event) {
            logger.log(describe(event, "parent pointer end"));
        }

        @Override
        public void onPointerCancel(Event event) {
            logger.log(describe(event, "parent pointer cancel"));
        }
    });
    // add touch layer listener
    touch.label.addListener(new Touch.LayerListener() {

        ImageLayer label = touch.label;

        @Override
        public void onTouchStart(Touch.Event event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "touch start"));
        }

        @Override
        public void onTouchMove(Touch.Event event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("touch move", describe(event, ""));
        }

        @Override
        public void onTouchEnd(Touch.Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "touch end"));
        }

        @Override
        public void onTouchCancel(Touch.Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "touch cancel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add touch parent layer listener
    touch.layer.addListener(new Touch.LayerListener() {

        @Override
        public void onTouchStart(Touch.Event event) {
            logger.log(describe(event, "parent touch start"));
        }

        @Override
        public void onTouchMove(Touch.Event event) {
            motionLabel.set("parent touch move", describe(event, ""));
        }

        @Override
        public void onTouchEnd(Touch.Event event) {
            logger.log(describe(event, "parent touch end"));
        }

        @Override
        public void onTouchCancel(Touch.Event event) {
            logger.log(describe(event, "parent touch cancel"));
        }
    });
}
Also used : WheelEvent(playn.core.Mouse.WheelEvent) ImageLayer(playn.core.ImageLayer) Pointer(playn.core.Pointer) Touch(playn.core.Touch) Point(pythagoras.f.Point) MotionEvent(playn.core.Mouse.MotionEvent) Mouse(playn.core.Mouse) ButtonEvent(playn.core.Mouse.ButtonEvent) NToggle(playn.tests.core.TestsGame.NToggle) Toggle(playn.tests.core.TestsGame.Toggle) ButtonEvent(playn.core.Mouse.ButtonEvent) WheelEvent(playn.core.Mouse.WheelEvent) Event(playn.core.Pointer.Event) MotionEvent(playn.core.Mouse.MotionEvent) Vector(pythagoras.f.Vector)

Example 2 with ImageLayer

use of playn.core.ImageLayer 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 ImageLayer

use of playn.core.ImageLayer 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 ImageLayer

use of playn.core.ImageLayer 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 ImageLayer

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

the class Test method addButton.

protected float addButton(String text, Runnable onClick, float x, float y) {
    ImageLayer button = createButton(text, onClick);
    graphics().rootLayer().addAt(button, x, y);
    return x + button.width() + 10;
}
Also used : ImageLayer(playn.core.ImageLayer)

Aggregations

ImageLayer (playn.core.ImageLayer)17 CanvasImage (playn.core.CanvasImage)7 GroupLayer (playn.core.GroupLayer)3 Image (playn.core.Image)3 ImmediateLayer (playn.core.ImmediateLayer)3 Pointer (playn.core.Pointer)3 Surface (playn.core.Surface)3 TextLayout (playn.core.TextLayout)3 Canvas (playn.core.Canvas)2 Mouse (playn.core.Mouse)2 WheelEvent (playn.core.Mouse.WheelEvent)2 Event (playn.core.Pointer.Event)2 SurfaceImage (playn.core.SurfaceImage)2 TextFormat (playn.core.TextFormat)2 Touch (playn.core.Touch)2 Callback (playn.core.util.Callback)2 Rectangle (pythagoras.f.Rectangle)2 Keyboard (playn.core.Keyboard)1 ButtonEvent (playn.core.Mouse.ButtonEvent)1 MotionEvent (playn.core.Mouse.MotionEvent)1