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