use of playn.core.Image in project playn by threerings.
the class SubImageTest method fragment.
protected void fragment(String source, Image image, float ox, float oy) {
float hw = image.width() / 2f, hh = image.height() / 2f;
Image ul = image.subImage(0, 0, hw, hh);
Image ur = image.subImage(hw, 0, hw, hh);
Image ll = image.subImage(0, hh, hw, hh);
Image lr = image.subImage(hw, hh, hw, hh);
Image ctr = image.subImage(hw / 2, hh / 2, hw, hh);
float dx = hw + 10, dy = hh + 10;
GroupLayer group = graphics().createGroupLayer();
group.addAt(graphics().createImageLayer(ul), 0, 0);
group.addAt(graphics().createImageLayer(ur), dx, 0);
group.addAt(graphics().createImageLayer(ll), 0, dy);
group.addAt(graphics().createImageLayer(lr), dx, dy);
group.addAt(graphics().createImageLayer(ctr), dx / 2, 2 * dy);
float xoff = image.width() + 20;
group.addAt(scaleLayer(graphics().createImageLayer(ul), 2), xoff, 0);
group.addAt(scaleLayer(graphics().createImageLayer(ur), 2), xoff + 2 * dx, 0);
group.addAt(scaleLayer(graphics().createImageLayer(ll), 2), xoff, 2 * dy);
group.addAt(scaleLayer(graphics().createImageLayer(lr), 2), xoff + 2 * dx, 2 * dy);
graphics().rootLayer().addAt(group, ox, oy);
addDescrip(source + " split into subimages, and scaled", ox, oy + image.height() * 2 + 25, 3 * image.width() + 40);
}
use of playn.core.Image 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.Image in project playn by threerings.
the class SurfaceTest method init.
@Override
public void init() {
final Image tile = assets().getImage("images/tile.png");
final Image orange = assets().getImage("images/orange.png");
AssetWatcher watcher = new AssetWatcher(new AssetWatcher.Listener() {
@Override
public void done() {
addTests(orange, tile);
}
@Override
public void error(Throwable err) {
addDescrip("Error: " + err.getMessage(), 10, errY, graphics().width() - 20);
errY += 30;
}
private float errY = 10;
});
watcher.add(tile);
watcher.add(orange);
watcher.start();
}
use of playn.core.Image in project playn by threerings.
the class AlphaLayerTest method init.
@Override
public void init() {
final GroupLayer rootLayer = graphics().rootLayer();
final float fullWidth = 6 * width, fullHeight = 3 * height;
// add a half white, half blue background
SurfaceImage bg = graphics().createSurface(fullWidth, fullHeight);
bg.surface().setFillColor(Color.rgb(255, 255, 255));
bg.surface().fillRect(0, 0, fullWidth, fullHeight);
bg.surface().setFillColor(Color.rgb(0, 0, 255));
bg.surface().fillRect(0, 2 * height, fullWidth, height);
rootLayer.add(graphics().createImageLayer(bg));
addDescrip("all layers contained in group layer with a=0.5\n" + "thus, fully composited a=0.25", offset, fullHeight + 5, fullWidth);
// add a 50% transparent group layer
final GroupLayer groupLayer = graphics().createGroupLayer();
groupLayer.setAlpha(0.5f);
rootLayer.add(groupLayer);
assets().getImage("images/alphalayertest.png").addCallback(new Callback<Image>() {
@Override
public void onSuccess(Image image) {
// add the layers over the white background
float x = offset;
groupLayer.addAt(graphics().createImageLayer(image).setAlpha(0.5f), x, offset);
addDescrip("image\nimg layer a=0.5", x, offset + height, width);
x += width;
SurfaceImage surf1 = graphics().createSurface(image.width(), image.height());
surf1.surface().setAlpha(0.5f).drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(surf1), x, offset);
addDescrip("surface a=0.5\nimg layer a=1", x, offset + height, width);
x += width;
SurfaceImage surf2 = graphics().createSurface(image.width(), image.height());
surf2.surface().drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(surf2).setAlpha(0.5f), x, offset);
addDescrip("surface a=1\nimg layer a=0.5", x, offset + height, width);
x += width;
CanvasImage canvas1 = graphics().createImage(image.width(), image.height());
canvas1.canvas().drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(canvas1).setAlpha(0.5f), x, offset);
addDescrip("canvas a=1\nimg layer a=0.5", x, offset + height, width);
x += width;
CanvasImage canvas2 = graphics().createImage(image.width(), image.height());
canvas2.canvas().setAlpha(0.5f).drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(canvas2), x, offset);
addDescrip("canvas a=0.5\nimg layer a=1", x, offset + height, width);
x += width;
// add the same layers over the blue background
x = offset;
groupLayer.addAt(graphics().createImageLayer(image).setAlpha(0.5f), x, offset + 2 * height);
x += width;
SurfaceImage surf1b = graphics().createSurface(image.width(), image.height());
surf1b.surface().setAlpha(0.5f).drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(surf1b), x, offset + 2 * height);
x += width;
SurfaceImage surf2b = graphics().createSurface(image.width(), image.height());
surf2b.surface().drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(surf2b).setAlpha(0.5f), x, offset + 2 * height);
x += width;
CanvasImage canvas1b = graphics().createImage(image.width(), image.height());
canvas1b.canvas().drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(canvas1b).setAlpha(0.5f), x, offset + 2 * height);
x += width;
CanvasImage canvas2b = graphics().createImage(image.width(), image.height());
canvas2b.canvas().setAlpha(0.5f).drawImage(image, 0, 0);
groupLayer.addAt(graphics().createImageLayer(canvas2b), x, offset + 2 * height);
// add some copies of the image at 1, 0.5, 0.25 and 0.125 alpha
x = offset + width;
for (float alpha : new float[] { 1, 1 / 2f, 1 / 4f, 1 / 8f }) {
float y = fullHeight + 50;
rootLayer.addAt(graphics().createImageLayer(image).setAlpha(alpha), x, y);
addDescrip("image a=" + alpha, x, y + height / 2, width / 2);
x += width;
}
}
@Override
public void onFailure(Throwable err) {
log().error("Error loading image", err);
}
});
// add ground truth of 25% opaque image
assets().getImage("images/alphalayertest_expected.png").addCallback(new Callback<Image>() {
@Override
public void onSuccess(Image image) {
rootLayer.addAt(graphics().createImageLayer(image), 5 * width, 0);
addDescrip("ground truth", 5 * width, offset + height, width);
}
@Override
public void onFailure(Throwable err) {
log().error("Error loading image", err);
}
});
}
use of playn.core.Image in project playn by threerings.
the class CanvasTest method addTestCanvas.
private void addTestCanvas(String descrip, int width, int height, String imagePath, final ImageDrawer drawer) {
final CanvasImage target = graphics().createImage(width, height);
assets().getImage(imagePath).addCallback(new Callback<Image>() {
public void onSuccess(Image image) {
drawer.draw(target.canvas(), image);
}
public void onFailure(Throwable err) {
System.err.println("Oops! " + err);
}
});
addTestLayer(descrip, width, height, graphics().createImageLayer(target));
}
Aggregations