Search in sources :

Example 6 with ImageLayer

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

the class Test method addDescrip.

protected float addDescrip(String descrip, float x, float y, float width) {
    ImageLayer layer = createDescripLayer(descrip, width);
    graphics().rootLayer().addAt(layer, Math.round(x + (width - layer.width()) / 2), y);
    return y + layer.height();
}
Also used : ImageLayer(playn.core.ImageLayer)

Example 7 with ImageLayer

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

the class TextTest method init.

@Override
public void init() {
    row = new Rectangle(5, 5, 0, 0);
    addToRow((style = new NToggle<Style>("Style", Style.PLAIN, Style.BOLD, Style.ITALIC, Style.BOLD_ITALIC)).layer);
    addToRow((draw = new NToggle<String>("Draw", "Fill", "Stroke")).layer);
    addToRow((effect = new NToggle<String>("Effect", "None", "ShadowUL", "ShadowLR", "Outline")).layer);
    addToRow((wrap = new NToggle<Integer>("Wrap", 0, 20, 50, 100)).layer);
    addToRow((align = new NToggle<TextBlock.Align>("Align", TextBlock.Align.LEFT, TextBlock.Align.CENTER, TextBlock.Align.RIGHT)).layer);
    addToRow((font = new NToggle<String>("Font", "Times New Roman", "Helvetica")).layer);
    class SetText extends Pointer.Adapter implements Callback<String> {

        final ImageLayer layer = graphics().createImageLayer(TestsGame.makeButtonImage("Set Text"));

        {
            layer.addListener(this);
        }

        @Override
        public void onPointerEnd(Event event) {
            keyboard().getText(TextType.DEFAULT, "Test text", sample.replace("\n", "\\n"), this);
        }

        public void onSuccess(String result) {
            if (result == null)
                return;
            // parse \n to allow testing line breaks
            sample = result.replace("\\n", "\n");
            update();
        }

        public void onFailure(Throwable cause) {
        }
    }
    addToRow(new SetText().layer);
    addToRow((lineBounds = new Toggle("Lines")).layer);
    // test laying out the empty string
    TextLayout layout = graphics().layoutText("", new TextFormat());
    ImageLayer empty = graphics().createImageLayer(makeLabel("Empty string size " + layout.width() + "x" + layout.height()));
    newRow();
    addToRow(empty);
    newRow();
    addToRow((text = graphics().createImageLayer(makeTextImage())));
}
Also used : Rectangle(pythagoras.f.Rectangle) IRectangle(pythagoras.f.IRectangle) ImageLayer(playn.core.ImageLayer) TextLayout(playn.core.TextLayout) Callback(playn.core.util.Callback) Event(playn.core.Pointer.Event) TextFormat(playn.core.TextFormat) TextBlock(playn.core.util.TextBlock)

Example 8 with ImageLayer

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

the class DepthTest method init.

@Override
public void init() {
    GroupLayer rootLayer = graphics().rootLayer();
    CanvasImage image = graphics().createImage(250, 25);
    image.canvas().drawText(rootLayer.getClass().getName(), 0, 15);
    ImageLayer info = graphics().createImageLayer(image);
    info.setTranslation(5, 5);
    rootLayer.add(info);
    int[] depths = { 0, -1, 1, 3, 2, -4, -3, 4, -2 };
    int[] fills = { 0xFF99CCFF, 0xFFFFFF33, 0xFF9933FF, 0xFF999999, 0xFFFF0033, 0xFF00CC00, 0xFFFF9900, 0xFF0066FF, 0x0FFCC6666 };
    int width = 200, height = 200;
    for (int ii = 0; ii < depths.length; ii++) {
        int depth = depths[ii];
        image = graphics().createImage(width, height);
        image.canvas().setFillColor(fills[ii]);
        image.canvas().fillRect(0, 0, width, height);
        image.canvas().setFillColor(0xFF000000);
        image.canvas().drawText(depth + "/" + ii, 5, 15);
        ImageLayer layer = graphics().createImageLayer(image);
        layer.setDepth(depth);
        layer.setTranslation(225 - 50 * depth, 125 + 25 * depth);
        rootLayer.add(layer);
    }
}
Also used : CanvasImage(playn.core.CanvasImage) ImageLayer(playn.core.ImageLayer) GroupLayer(playn.core.GroupLayer)

Example 9 with ImageLayer

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

the class GetTextTest method init.

@Override
public void init() {
    String instructions = "Click one of the buttons below to display the text entry UI.";
    ImageLayer instLayer = graphics().createImageLayer(formatText(instructions, false));
    graphics().rootLayer().addAt(instLayer, 50, 50);
    String last = storage().getItem("last_text");
    if (last == null)
        last = "...";
    final ImageLayer outputLayer = graphics().createImageLayer(formatText(last, false));
    graphics().rootLayer().addAt(outputLayer, 50, 150);
    final Callback<String> onGotText = new Callback<String>() {

        public void onSuccess(String text) {
            outputLayer.setImage(formatText(text == null ? "canceled" : text, false));
            if (text != null)
                storage().setItem("last_text", text);
        }

        public void onFailure(Throwable cause) {
            outputLayer.setImage(formatText(cause.getMessage(), false));
        }
    };
    float x = 50;
    for (final Keyboard.TextType type : Keyboard.TextType.values()) {
        ImageLayer button = createButton(type.toString(), new Runnable() {

            public void run() {
                keyboard().getText(Keyboard.TextType.DEFAULT, "Enter " + type + " text:", "", onGotText);
            }
        });
        graphics().rootLayer().addAt(button, x, 100);
        x += button.width() + 10;
    }
}
Also used : Callback(playn.core.util.Callback) Keyboard(playn.core.Keyboard) ImageLayer(playn.core.ImageLayer)

Example 10 with ImageLayer

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

the class ShaderTest method init.

protected void init(final Image orange) {
    // add the normal orange
    float dx = orange.width() + 25;
    graphics().rootLayer().addAt(graphics().createImageLayer(orange), 25, 25);
    // add a sepia toned orange
    ImageLayer olayer = graphics().createImageLayer(orange);
    olayer.setShader(createSepiaShader());
    graphics().rootLayer().addAt(olayer, 25 + dx, 25);
    // create a shader that rotates things around the (3D) y axis
    IndexedTrisShader rotShader = new IndexedTrisShader(graphics().ctx()) {

        @Override
        protected String vertexShader() {
            return VERT_UNIFS + "uniform float u_Angle;\n" + "uniform vec2 u_Eye;\n" + VERT_ATTRS + PER_VERT_ATTRS + VERT_VARS + "void main(void) {\n" + // Rotate the vertex per our 3D rotation
            "  float cosa = cos(u_Angle);\n" + "  float sina = sin(u_Angle);\n" + "  mat4 rotmat = mat4(\n" + "    cosa, 0, sina, 0,\n" + "    0,    1, 0,    0,\n" + "   -sina, 0, cosa, 0,\n" + "    0,    0, 0,    1);\n" + "  vec4 pos = rotmat * vec4(a_Position - u_Eye, 0, 1);\n" + // Perspective project the vertex back into the plane
            "  mat4 persp = mat4(\n" + "    1, 0, 0, 0,\n" + "    0, 1, 0, 0,\n" + "    0, 0, 1, -1.0/200.0,\n" + "    0, 0, 0, 1);\n" + "  pos = persp * pos;\n" + "  pos /= pos.w;\n" + "  pos += vec4(u_Eye, 0, 0);\n;" + // Transform the vertex per the normal screen transform
            "  mat4 transform = mat4(\n" + "    a_Matrix[0],      a_Matrix[1],      0, 0,\n" + "    a_Matrix[2],      a_Matrix[3],      0, 0,\n" + "    0,                0,                1, 0,\n" + "    a_Translation[0], a_Translation[1], 0, 1);\n" + "  pos = transform * pos;\n" + "  pos.x /= (u_ScreenSize.x / 2.0);\n" + "  pos.y /= (u_ScreenSize.y / 2.0);\n" + "  pos.z /= (u_ScreenSize.y / 2.0);\n" + "  pos.x -= 1.0;\n" + "  pos.y = 1.0 - pos.y;\n" + "  gl_Position = pos;\n" + VERT_SETTEX + VERT_SETCOLOR + "}";
        }

        @Override
        protected Core createTextureCore() {
            return new RotCore(vertexShader(), textureFragmentShader());
        }

        class RotCore extends ITCore {

            private final Uniform1f uAngle = prog.getUniform1f("u_Angle");

            private final Uniform2f uEye = prog.getUniform2f("u_Eye");

            public RotCore(String vertShader, String fragShader) {
                super(vertShader, fragShader);
            }

            @Override
            public void activate(int fbufWidth, int fbufHeight) {
                super.activate(fbufWidth, fbufHeight);
                uAngle.bind(elapsed * FloatMath.PI);
                uEye.bind(0, orange.height() / 2);
            }
        }
    };
    // add an image that is rotated around the (3D) y axis
    CanvasImage image = graphics().createImage(orange.width(), orange.height());
    image.canvas().setFillColor(0xFF99CCFF);
    image.canvas().fillRect(0, 0, image.width(), image.height());
    image.canvas().drawImage(orange, 0, 0);
    ImageLayer rotlayer = graphics().createImageLayer(image);
    rotlayer.setShader(rotShader);
    graphics().rootLayer().addAt(rotlayer, 25 + 2 * dx + orange.width(), 25);
    // add an immediate layer that draws a quad and an image (which should rotate)
    ImmediateLayer irotlayer = graphics().createImmediateLayer(new ImmediateLayer.Renderer() {

        public void render(Surface surf) {
            surf.setFillColor(0xFFCC99FF);
            surf.fillRect(0, 0, orange.width(), orange.height());
            surf.drawImage(orange, 0, 0);
        }
    });
    irotlayer.setShader(rotShader);
    graphics().rootLayer().addAt(irotlayer, 25 + 3 * dx + orange.width(), 25);
}
Also used : ImmediateLayer(playn.core.ImmediateLayer) ImageLayer(playn.core.ImageLayer) Surface(playn.core.Surface) IndexedTrisShader(playn.core.gl.IndexedTrisShader) CanvasImage(playn.core.CanvasImage)

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