private void step() { activeRuntime.setSourceImage(WORLD_NAME, curWorld); activeRuntime.setDestinationImage(NEXT_WORLD_NAME, nextWorld); activeRuntime.evaluateAll(null); TiledImage temp = curWorld; curWorld = nextWorld; nextWorld = temp; EventQueue.invokeLater(new Runnable() { public void run() { imagePane.setImage(curWorld); } }); }
/** * Compiles a script read from a file and submits it for execution. * * @param scriptFile file containing the Jiffle script * @throws Exception on problems compiling the script */ public void compileAndRun(File scriptFile) throws Exception { Map<String, Jiffle.ImageRole> imageParams = new HashMap<>(); imageParams.put("result", Jiffle.ImageRole.DEST); Jiffle jiffle = new Jiffle(scriptFile, imageParams); JiffleDirectRuntime runtime = jiffle.getRuntimeInstance(); WritableRenderedImage destImage = ImageUtilities.createConstantImage(WIDTH, HEIGHT, 0d); runtime.setDestinationImage("result", destImage); executor.submit(runtime, new NullProgressListener()); }
/** * Compiles a script read from a file and submits it for execution. * * @param scriptFile file containing the Jiffle script * @throws Exception on an error in the Jiffle compiler */ public void compileAndRun(File scriptFile) throws Exception { Map<String, Jiffle.ImageRole> imageParams = new HashMap<>(); imageParams.put("result", Jiffle.ImageRole.DEST); Jiffle jiffle = new Jiffle(scriptFile, imageParams); Map<String, RenderedImage> images = new HashMap<>(); images.put("result", ImageUtilities.createConstantImage(WIDTH, HEIGHT, Double.valueOf(0d))); if (jiffle.isCompiled()) { JiffleDirectRuntime runtime = jiffle.getRuntimeInstance(); final TiledImage destImg = ImageUtilities.createConstantImage(WIDTH, HEIGHT, 0d); runtime.setDestinationImage("result", destImg); runtime.evaluateAll(null); ImageFrame frame = new ImageFrame(destImg, "Jiffle image demo"); frame.setVisible(true); } }
/** * Setting an image with a transform without having previously set the world * bounds should throw a JiffleException. */ @Test(expected=JiffleException.class) public void forgetTheWorldBeforeImageWithTransform() throws Exception { System.out.println(" forget to set the world before setting image with transform"); JiffleDirectRuntime runtime = getRuntime("images {dest=write;} dest = 42;"); WritableRenderedImage destImage = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); CoordinateTransform tr = CoordinateTransforms.translation(10, 10); runtime.setDestinationImage("dest", destImage, tr); }
runtimeObj.setDestinationImage(destVar, destImage, transform);
protected void testDirectRuntime(RenderedImage srcImg, JiffleDirectRuntime runtime, Evaluator evaluator) { runtime.setSourceImage("src", srcImg); TiledImage destImg = ImageUtilities.createConstantImage( srcImg.getMinX(), srcImg.getMinY(), srcImg.getWidth(), srcImg.getHeight(), 0.0); runtime.setDestinationImage("dest", destImg); runtime.evaluateAll(nullListener); assertImage(srcImg, destImg, evaluator); }
private JiffleDirectRuntime getRuntime(String script) throws Exception { Jiffle jiffle = new Jiffle(); jiffle.setScript(script); Map<String, Jiffle.ImageRole> imageParams = new HashMap<>(); imageParams.put("dest", Jiffle.ImageRole.DEST); jiffle.setImageParams(imageParams); jiffle.compile(); JiffleDirectRuntime runtime = jiffle.getRuntimeInstance(); WritableRenderedImage destImg = ImageUtilities.createConstantImage(WIDTH, WIDTH, 0d); runtime.setDestinationImage("dest", destImg); return runtime; }
runtime.setDestinationImage("dest", destImg, tr); runtime.evaluateAll(null);
runtime.setDestinationImage("dest", destImg, tr); runtime.evaluateAll(null);
private void testInject(JiffleDirectRuntime runtime, final Double value) throws Exception { WritableRenderedImage destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); runtime.setDestinationImage("dest", destImg); if (value != null) { runtime.setVar("n", value); } runtime.evaluateAll(null); Evaluator e = new Evaluator() { public double eval(double val) { return value; } }; assertImage(null, destImg, e); }
@Test public void mappedSrcValue() throws Exception { String src = "dest = src[10];"; RenderedImage srcImg = createSequenceImage(); Evaluator evaluator = new Evaluator() { public double eval(double val) { return val; } }; imageParams = new HashMap<>(); imageParams.put("dest", Jiffle.ImageRole.DEST); imageParams.put("src", Jiffle.ImageRole.SOURCE); // test the direct runtime Jiffle jiffle = new Jiffle(src, imageParams); directRuntimeInstance = jiffle.getRuntimeInstance(); directRuntimeInstance.setSourceImage("src", srcImg); // map band 10 to band 0 directRuntimeInstance.setSourceImageBandTransform("src", (x, y, scriptBand) -> 0); TiledImage destImg = ImageUtilities.createConstantImage( srcImg.getMinX(), srcImg.getMinY(), srcImg.getWidth(), srcImg.getHeight(), 0.0); directRuntimeInstance.setDestinationImage("dest", destImg); directRuntimeInstance.evaluateAll(null); assertImage(srcImg, destImg, evaluator); }
runtime.setDestinationImage("dest", destImg);
private void testScript(String script, int numSrcBands, Evaluator evaluator) throws Exception { imageParams = new HashMap<>(); imageParams.put("dest", Jiffle.ImageRole.DEST); imageParams.put("src", Jiffle.ImageRole.SOURCE); Jiffle jiffle = new Jiffle(script, imageParams); JiffleDirectRuntime runtime = jiffle.getRuntimeInstance(); TiledImage srcImg = createSequenceImage(numSrcBands); runtime.setSourceImage("src", srcImg); TiledImage destImg = ImageUtilities.createConstantImage(WIDTH, WIDTH, 0d); runtime.setDestinationImage("dest", destImg); runtime.evaluateAll(null); double[] values = new double[numSrcBands]; for (int y = 0; y < WIDTH; y++) { for (int x = 0; x < WIDTH; x++) { for (int b = 0; b < numSrcBands; b++) { values[b] = srcImg.getSampleDouble(x, y, b); } assertEquals(evaluator.eval(values), destImg.getSampleDouble(x, y, 0), TOL); } } }
runtime.setSourceImage("src", srcImg, tr); WritableRenderedImage destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); runtime.setDestinationImage("dest", destImg, tr); runtime.evaluateAll(null);
private void assertScriptResult(String script, Evaluator e, String srcVarName, String destVarName) throws Exception { RenderedImage srcImg = null; WritableRenderedImage destImg = null; Jiffle jiffle = new Jiffle(); jiffle.setScript(script); jiffle.compile(); directRuntimeInstance = (JiffleDirectRuntime) jiffle.getRuntimeInstance(); if (srcVarName != null && srcVarName.length() > 0) { srcImg = createSequenceImage(); directRuntimeInstance.setSourceImage(srcVarName, srcImg); } if (destVarName != null && destVarName.length() > 0) { destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); directRuntimeInstance.setDestinationImage(destVarName, destImg); } directRuntimeInstance.evaluateAll(null); assertImage(srcImg, destImg, e); }
runtime.setDestinationImage("dest", destImg); runtime.evaluateAll(null);
@Test public void srcValueWithROI() throws Exception { String src = "dest = src;"; TiledImage srcImg = createSequenceImage(); RenderedImage triangleImage = createTriangleImage(); srcImg.setProperty("ROI", new ROI(triangleImage)); Evaluator evaluator = new Evaluator() { public double eval(double val) { return x > y ? val : Double.NaN; } }; imageParams = new HashMap<>(); imageParams.put("dest", Jiffle.ImageRole.DEST); imageParams.put("src", Jiffle.ImageRole.SOURCE); // test the direct runtime Jiffle jiffle = new Jiffle(src, imageParams); directRuntimeInstance = jiffle.getRuntimeInstance(); directRuntimeInstance.setSourceImage("src", srcImg); TiledImage destImg = ImageUtilities.createConstantImage( srcImg.getMinX(), srcImg.getMinY(), srcImg.getWidth(), srcImg.getHeight(), 0.0); directRuntimeInstance.setDestinationImage("dest", destImg); directRuntimeInstance.evaluateAll(null); assertImage(srcImg, destImg, evaluator); }
@Test public void injectThenDefault() throws Exception { System.out.println(" run with injected value then default value"); String script = "init { n = 42; } \n" + "dest = n;" ; JiffleDirectRuntime runtime = getRuntime(script); WritableRenderedImage destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); runtime.setDestinationImage("dest", destImg); runtime.setVar("n", -1.0); runtime.evaluateAll(null); assertImage(null, destImg, new Evaluator() { public double eval(double val) { return -1.0; } }); // set var back to default value (42) runtime.setVar("n", null); runtime.evaluateAll(null); assertImage(null, destImg, new Evaluator() { public double eval(double val) { return 42.0; } }); }
runtime.setDestinationImage("dest", destImage);
runtime.setDestinationImage("dest", dest); runtime.evaluateAll(null);