public static SWTPlatform register (Config config) { SWTPlatform instance = new SWTPlatform(config); PlayN.setPlatform(instance); return instance; }
private int elapsed() { return (int)Math.round((currentTime() - start)/1000); }
/** * Returns the padding used by {@link #toImage} to ensure that anti-aliasing has room to do its * work. */ public static float pad() { return 1/graphics().scaleFactor(); }
@Override public void init() { // TODO: display some text saying shaders aren't supported if (graphics().ctx() == null) return; Image orange = assets().getImage("images/orange.png"); orange.addCallback(new Callback<Image>() { public void onSuccess(Image orange) { init(orange); } public void onFailure(Throwable err) { log().warn("Failed to load orange image", err); } }); }
@Override public void init() { setLifecycleListener(new LifecycleListener() { private double start = currentTime(); private int elapsed() { return (int)Math.round((currentTime() - start)/1000); } @Override public void onPause() { log().info("Paused " + elapsed()); notifications.add("Paused at " + elapsed() + "s"); } @Override public void onResume() { log().info("Resumed " + elapsed()); notifications.add("Resumed at " + elapsed() + "s"); updateDisplay(); } @Override public void onExit() {} // nada }); layer = graphics().createImageLayer(); updateDisplay(); graphics().rootLayer().addAt(layer, 15, 15); }
@Override public void init() { // display basic instructions log().info("Click or touch to go to the next test."); // add a listener for pointer (mouse, touch) input pointer().setListener(new Pointer.Adapter() { @Override public void onPointerStart(Pointer.Event event) { nextTest(); } }); currentTest = -1; nextTest(); }
@Override public void onProgress(XDomainRequest xdr) { if (LOG_XHR_SUCCESS) { PlayN.log().debug("xdr::onProgress[" + fullPath + "]()"); } }
void nextTest() { currentTest = (currentTest + 1) % tests.length; // setup root layer for next test graphics().rootLayer().clear(); ImmediateLayer bg = graphics().createImmediateLayer(new ImmediateLayer.Renderer() { public void render(Surface surf) { surf.setFillColor(Color.rgb(255, 255, 255)); surf.fillRect(0, 0, graphics().width(), graphics().height()); } }); bg.setDepth(Float.NEGATIVE_INFINITY); // render behind everything graphics().rootLayer().add(bg); log().info("Starting " + currentTest().getName()); log().info(" Description: " + currentTest().getDescription()); currentTest().init(); }
@Override public void init() { Image princess1 = assets().getImage("images/princess.png"); Image princess2 = assets().getImage("images/princess.png"); Image star1 = assets().getImage("images/star.png"); Image star2 = assets().getImage("images/star.png"); // configure the second princess and (64x64) star images as mipmapped princess2.setMipmapped(true); star2.setMipmapped(true); float phwidth = 101/2f, phheight = 171/2f; // avoid having to wait for images player1 = graphics().createImageLayer(princess1); player1.setOrigin(phwidth, phheight); graphics().rootLayer().addAt(player1, 100, 100); player2 = graphics().createImageLayer(princess2); player2.setOrigin(phwidth, phheight); graphics().rootLayer().addAt(player2, 250, 100); float shwidth = 64/2, shheight = 64/2; // avoid having to wait for images slayer1 = graphics().createImageLayer(star1); slayer1.setOrigin(shwidth, shheight); graphics().rootLayer().addAt(slayer1, 100, 250); slayer2 = graphics().createImageLayer(star2); slayer2.setOrigin(shwidth, shheight); graphics().rootLayer().addAt(slayer2, 250, 250); pointer().setListener(new Pointer.Adapter() { @Override public void onPointerStart(Pointer.Event event) { pointerPressed = true; } @Override public void onPointerEnd(Pointer.Event event) { pointerPressed = false; } @Override public void onPointerCancel(Pointer.Event event) { pointerPressed = false; } }); }
@Override public void init() { Image orange = assets().getImage("images/orange.png"); Image mdb = assets().getRemoteImage("https://graph.facebook.com/samskivert/picture"); final ImageLayer layer1 = graphics().createImageLayer(orange); layer1.setScale(2); layer1.setRotation(FloatMath.PI/8); layer1.setTranslation(50, 50); graphics().rootLayer().add(layer1); if (touch().hasTouch()) { layer1.addListener((Touch.LayerListener)new Mover(layer1)); } else { final ImageLayer layer2 = graphics().createImageLayer(orange); layer2.setScale(1.5f); layer2.setRotation(FloatMath.PI/4); layer2.setTranslation(150, 50); graphics().rootLayer().add(layer2); if (touch().hasTouch()) { layer2.addListener((Touch.LayerListener)new Mover(layer2)); } else { final ImageLayer layer3 = graphics().createImageLayer(mdb); layer3.setRotation(-FloatMath.PI/4); layer3.setTranslation(50, 150); graphics().rootLayer().add(layer3); if (touch().hasTouch()) { layer3.addListener((Touch.LayerListener)new Mover(layer3)); } else {
@Override public void init() { assets().getImage("images/orange.png").addCallback(new Callback<Image>() { public void onSuccess(Image orange) { addTests(orange); } public void onFailure(Throwable cause) { log().warn("Failed to load image", cause); } }); }
static <L, E extends Input.Impl> void tryInteract (AbstractLayer layer, Class<L> listenerType, Interaction<L, E> interaction, E event) { try { layer.interact(listenerType, interaction, event); } catch (Throwable t) { PlayN.reportError("Interaction failure [layer=" + layer + ", iact=" + interaction + ", event=" + event + "]", t); } }
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)); }
public void paint() { if (!dirty) { return; } image.canvas().clear(); image.canvas().setFillColor(0xFF202020); layout = graphics().layoutText(text, format, TextWrap.MANUAL); float yy = 0; for (int line = 0; line < layout.length; line++) { image.canvas().fillText(layout[line], 0, yy); yy += layout[line].height(); } if (yy > image.height()) { log().error("Clipped"); } dirty = false; } }
protected Sound loadSound(final String path) { Sound sound = assets().getSound(path); sound.addCallback(new Callback<Sound>() { public void onSuccess(Sound sound) {} // noop public void onFailure(Throwable cause) { log().warn("Sound loading error: " + path, cause); } }); return sound; }
@Override public void onSurfaceLost() { try { AndroidGLContext actx = (AndroidGLContext) ctx; bindFramebuffer(); ByteBuffer pixelBuffer = ByteBuffer.allocate(texWidth * texHeight * 4); actx.gl.glReadPixels(0, 0, texWidth, texHeight, GL20.GL_RGBA, GL20.GL_UNSIGNED_BYTE, pixelBuffer); actx.checkGLError("glReadPixels"); try { cachedPixels = new File(cacheDir, "surface-" + Integer.toHexString(hashCode())); FileOutputStream out = new FileOutputStream(cachedPixels); out.write(pixelBuffer.array()); out.close(); } catch (IOException e) { PlayN.reportError("IOException writing cached Surface to file.", e); cachedPixels = null; } pixelBuffer = null; } catch (OutOfMemoryError e) { PlayN.reportError("OutOfMemoryError reading cached Surface to buffer.", e); cachedPixels = null; } clearTexture(); } }
@Override public float width() { return graphics().width(); } @Override
@Override public void onFailure(Throwable err) { log().error("Error loading image", err); } });
private void addTestCanvas(int width, int height, String imagePath, final ImageDrawer drawer) { final CanvasImage target = graphics().createImage(width, height); assets().getImage(imagePath).addCallback(new ResourceCallback<Image>() { public void done(Image image) { drawer.draw(target.canvas(), image); } public void error(Throwable err) { System.err.println("Oops! " + err); } }); addTestLayer(width, height, graphics().createImageLayer(target)); } }