package org.protocoderrunner.apprunner.api.other; import android.os.Bundle; import android.os.Looper; import org.protocoderrunner.apidoc.annotation.APIMethod; import org.protocoderrunner.apidoc.annotation.APIParam; import org.protocoderrunner.apprunner.ProtocoderScript; import processing.core.PApplet; import processing.core.PGraphics; public class PProcessing extends PApplet { private PInterfaceDraw pfnDraw; private PInterfaceSetup pfnSetup; private String mode; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = this.getArguments(); mode = bundle.getString("mode", "p2d"); } public PGraphics getGraphics() { return g; } @Override public void setup() { if (pfnSetup != null) { pfnSetup.setup(this); } } @Override public void draw() { if (frameCount == 1) { Looper.prepare(); // tell activity Processing is ready } else { if (pfnDraw != null) { pfnDraw.draw(this); } } } public interface PInterfaceSetup { // void setup(PApplet p); void setup(PApplet p); } @ProtocoderScript @APIMethod(description = "Sets up the processing setup", example = "") @APIParam(params = { "function(p)" }) public void setup(PInterfaceSetup pIface) { pfnSetup = pIface; } public interface PInterfaceDraw { // void setup(PApplet p); void draw(PApplet p); } @ProtocoderScript @APIMethod(description = "Sets up the processing drawing loop", example = "") @APIParam(params = { "function(p)" }) public void draw(PInterfaceDraw pIface) { pfnDraw = pIface; } public String sketchRenderer() { String pMode; if (mode.toLowerCase().equals("p3d")) { pMode = P3D; } else { pMode = P2D; } return pMode; } }