/** * Runs the script. Equivalent to calling * {@code builder.getRuntime().evaluateAll(null)}. * * @return the instance of this class to allow method chaining * * @throws JiffleException if the script has not been set yet or if * compilation errors occur */ public JiffleBuilder run() throws JiffleException { getRuntime().evaluateAll(null); return this; }
/** * Runs the script. Equivalent to calling * {@code builder.getRuntime().evaluateAll(null)}. * * @return the instance of this class to allow method chaining * * @throws JiffleException if the script has not been set yet or if * compilation errors occur */ public JiffleBuilder run() throws JiffleException { getRuntime().evaluateAll(null); return this; }
/** * Called by the system to execute this task on a thread provided by the * {@link JiffleExecutor}. * * @return a result object with references to the {@code Jiffle} object, * the images, and the job completion status */ public JiffleExecutorResult call() { boolean gotEx = false; try { runtime.evaluateAll(progressListener); } catch (Exception ex) { gotEx = true; } completed = !gotEx; return new JiffleExecutorResult(id, runtime, completed); }
/** * Called by the system to execute this task on a thread provided by the * {@link JiffleExecutor}. * * @return a result object with references to the {@code Jiffle} object, * the images, and the job completion status */ public JiffleExecutorResult call() { boolean gotEx = false; try { runtime.evaluateAll(progressListener); } catch (Exception ex) { gotEx = true; } completed = !gotEx; return new JiffleExecutorResult(id, runtime, completed); }
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 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); } }
runtimeObj.evaluateAll(null);
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 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 countValues() throws Exception { System.out.println(" counting pixels that meet a condition"); final int testVal = 10; String script = String.format( "images { src=read; } \n" + "init { count = 0; } \n" + "count += src > %d;", testVal); TestData testData = createTestData(testVal); Jiffle jiffle = getCompiledJiffle(script); JiffleDirectRuntime runtime = jiffle.getRuntimeInstance(); runtime.setSourceImage("src", testData.image); runtime.evaluateAll(null); Double count = runtime.getVar("count"); assertNotNull(count); assertEquals(testData.expectedCount, count.intValue()); }
/** * Compiles and runs the "ripple" script using {@link JiffleBuilder}. * @param args ignored * @throws Exception if there are errors compiling the script. */ public static void main(String[] args) throws Exception { JiffleBuilderDemo me = new JiffleBuilderDemo(); File f = JiffleDemoHelper.getScriptFile(args, ImageChoice.RIPPLES); String script = JiffleDemoHelper.readScriptFile(f); JiffleBuilder jb = new JiffleBuilder(); jb.script(script).dest("result", WIDTH, HEIGHT).getRuntime().evaluateAll(null); ImageFrame frame = new ImageFrame(jb.getImage("result"), "Jiffle image demo"); frame.setVisible(true); } }
@Test public void noDestImage() throws Exception { System.out.println(" destination-less script with images block"); String script = String.format( "images { inimage = read; } \n" + "init { n = 0; } \n" + "n += inimage >= %d;", NUM_PIXELS - 5); Jiffle jiffle = new Jiffle(); jiffle.setScript(script); jiffle.compile(); directRuntimeInstance = jiffle.getRuntimeInstance(); directRuntimeInstance.setSourceImage("inimage", createSequenceImage()); directRuntimeInstance.evaluateAll(null); Double var = directRuntimeInstance.getVar("n"); assertNotNull(var); assertEquals(5, var.intValue()); }
@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); }
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); } } }
WritableRenderedImage destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); runtime.setDestinationImage("dest", destImg, tr); runtime.evaluateAll(null);
runtime.setDestinationImage("dest", destImg); runtime.evaluateAll(null);
@Test public void runBasicScript() throws Exception { System.out.println(" basic script with provided dest image"); String script = "dest = con(src1 > 10, src1, null);" ; RenderedImage srcImg1 = createSequenceImage(); WritableRenderedImage destImg = ImageUtilities.createConstantImage(IMG_WIDTH, IMG_WIDTH, 0d); jb.script(script).source("src1", srcImg1).dest("dest", destImg); JiffleDirectRuntime runtime = jb.getRuntime(); runtime.evaluateAll(null); Evaluator e = new Evaluator() { public double eval(double val) { return val > 10 ? val : Double.NaN; } }; assertImage(srcImg1, destImg, e); }
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); }
@Test public void builderCreatesDestImage() throws Exception { System.out.println(" builder creating dest image"); String script = "init { n = 0; } dest = n++ ;" ; jb.dest("dest", IMG_WIDTH, IMG_WIDTH).script(script).getRuntime().evaluateAll(null); RenderedImage img = jb.getImage("dest"); assertNotNull(img); RandomIter iter = RandomIterFactory.create(img, null); int k = 0; for (int y = 0; y < IMG_WIDTH; y++) { for (int x = 0; x < IMG_WIDTH; x++) { assertEquals(k, iter.getSample(x, y, 0)); k++ ; } } }
@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); }