private void setPopulation(String patternName) { PatternInfo info = getPattern(patternName); String[] lines = info.data.split("\n"); final int h = lines.length; int maxLen = 0; for (String line : lines) { if (line.length() > maxLen) { maxLen = line.length(); } } final int w = maxLen; final int ox = curWorld.getMinX() + (curWorld.getWidth() - w) / 2; final int oy = curWorld.getMinY() + (curWorld.getHeight() - h) / 2; for (int y = oy, iy = 0; iy < h; y++, iy++) { String line = lines[iy]; int len = line.length(); for (int x = ox, ix = 0; ix < len; x++, ix++) { if (line.charAt(ix) != '.') { curWorld.setSample(x, y, 0, 1); } } } }
int numYTiles = image.getNumYTiles(); SampleModel sm = RasterFactory.createPixelInterleavedSampleModel(DataBuffer.TYPE_FLOAT, image.getWidth(), image.getHeight(), 1); TiledImage destImage = new TiledImage(0, 0, image.getWidth(), image.getHeight(), 0, 0, sm, new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false, Transparency.OPAQUE, DataBuffer.TYPE_FLOAT));
/** * Takes the 4-band ARGB image that we have been drawing into and * converts it to a single-band int image. */ private void flattenImageToInt() { int numXTiles = image.getNumXTiles(); int numYTiles = image.getNumYTiles(); SampleModel sm = RasterFactory.createPixelInterleavedSampleModel( DataBuffer.TYPE_INT, image.getWidth(), image.getHeight(), 1); TiledImage destImage = new TiledImage(0, 0, image.getWidth(), image.getHeight(), 0, 0, sm, new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false, Transparency.OPAQUE, DataBuffer.TYPE_INT)); for (int yt = 0; yt < numYTiles; yt++) { for (int xt = 0; xt < numXTiles; xt++) { Raster srcTile = image.getTile(xt, yt); WritableRaster destTile = destImage.getWritableTile(xt, yt); int[] data = new int[srcTile.getDataBuffer().getSize()]; srcTile.getDataElements(srcTile.getMinX(), srcTile.getMinY(), srcTile.getWidth(), srcTile.getHeight(), data); Rectangle bounds = destTile.getBounds(); destTile.setPixels(bounds.x, bounds.y, bounds.width, bounds.height, data); destImage.releaseWritableTile(xt, yt); } } image = destImage; }
@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); }
dataValue); for (int i = 0; i < image.getHeight(); i++) { for (int j = 0; j < image.getWidth(); j++) { for (int b = 0; b < image.getNumBands(); b++) { int value = b == image.getNumBands() - 1 ? 1 : 0;