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();
}
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())));
}
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);
}
}
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;
}
}
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);
}
Aggregations