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