private static void doShowImage(RenderedImage img, String title) { ImageFrame f = new ImageFrame(img, title); f.setVisible(true); }
void setCursorInfo(Point imagePos, double[] imageValues) { Double[] values = new Double[imageValues.length]; for (int i = 0; i < values.length; i++) { values[i] = new Double(imageValues[i]); } doSetCursorInfo(imagePos, values, "%.4f"); }
public static void main(String[] args) { Ripples me = new Ripples(); TiledImage image = ImageUtilities.createConstantImage(300, 300, 0d); me.createRipplesImage(image); ImageFrame frame = new ImageFrame(image, "ripples"); frame.setSize(550, 550); frame.setVisible(true); }
/** * Constructor for separate display and data images. * * @param displayImg image to be displayed * * @param dataImg an image with bounds equal to, or enclosing, those of * displayImg and which contains data that will be reported in the status * bar; if null data will be drawn from the display image * * @param title title for the frame */ public ImageFrame(RenderedImage displayImg, RenderedImage dataImg, String title) { setTitle(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationByPlatform(true); ImagePane pane = new ImagePane(this, displayImg, dataImg); getContentPane().add(pane, BorderLayout.CENTER); sb = new StringBuilder(); statusBar = new JTextField(); statusBar.setEditable(false); statusBar.setMinimumSize(new Dimension(100, 30)); statusBar.setBorder(BorderFactory.createLoweredBevelBorder()); getContentPane().add(statusBar, BorderLayout.SOUTH); pack(); setSize(500, 500); }
/** * If the mouse cursor is over the image, get the value of the image * pixel from band 0 */ public void mouseMoved(MouseEvent ev) { if (dataImage != null) { Point imagePos = getImageCoords(ev.getPoint(), null); if (imageBounds.contains(imagePos)) { if (dataImageIter == null) { dataImageIter = RandomIterFactory.create(dataImage, imageBounds); } if (integralImageDataType) { dataImageIter.getPixel(imagePos.x, imagePos.y, intData); frame.setCursorInfo(imagePos, intData); } else { dataImageIter.getPixel(imagePos.x, imagePos.y, doubleData); frame.setCursorInfo(imagePos, doubleData); } } else { frame.setStatusText(""); } } }
/** * Displays the given image in a new ImageFrame. This method can be * safely called from any thread. The frame's closing behaviour will be * either {@linkplain #EXIT_ON_CLOSE} or {@linkplain #DISPOSE_ON_CLOSE} * depending on the {@code exitOnClose} argument. * * @param img image to display * @param title frame title * @param exitOnClose true for exit on close; false for dispose on close */ public static void showImage( final RenderedImage img, final String title, boolean exitOnClose) { if (SwingUtilities.isEventDispatchThread()) { doShowImage(img, title); } else { SwingUtilities.invokeLater(new Runnable() { public void run() { doShowImage(img, title); } }); } }
public static void main(String[] args) throws JiffleException { RunProportionalRipples self = new RunProportionalRipples(); String script = "init { C = M_PI * 8; }" + "dx = 2*(x() - 0.5); \n" + "dy = 2*(y() - 0.5); \n" + "d = sqrt(dx*dx + dy*dy); \n" + "destImg = sin(C * d);" ; WritableRenderedImage destImage = ImageUtilities.createConstantImage(500, 500, 0d); self.runScriptWithJiffle(script, "destImg", destImage); ImageFrame frame = new ImageFrame(destImage, "Ripples"); frame.setSize(550, 550); frame.setVisible(true); }
/** * Constructor for separate display and data images. * * @param displayImg image to be displayed * * @param dataImg an image with bounds equal to, or enclosing, those of * displayImg and which contains data that will be reported in the status * bar; if null data will be drawn from the display image * * @param title title for the frame */ public ImageFrame(RenderedImage displayImg, RenderedImage dataImg, String title) { setTitle(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationByPlatform(true); ImagePane pane = new ImagePane(this, displayImg, dataImg); getContentPane().add(pane, BorderLayout.CENTER); sb = new StringBuilder(); statusBar = new JTextField(); statusBar.setEditable(false); statusBar.setMinimumSize(new Dimension(100, 30)); statusBar.setBorder(BorderFactory.createLoweredBevelBorder()); getContentPane().add(statusBar, BorderLayout.SOUTH); pack(); setSize(500, 500); }
/** * If the mouse cursor is over the image, get the value of the image * pixel from band 0 */ public void mouseMoved(MouseEvent ev) { if (dataImage != null) { Point imagePos = getImageCoords(ev.getPoint(), null); if (imageBounds.contains(imagePos)) { if (dataImageIter == null) { dataImageIter = RandomIterFactory.create(dataImage, imageBounds); } if (integralImageDataType) { dataImageIter.getPixel(imagePos.x, imagePos.y, intData); frame.setCursorInfo(imagePos, intData); } else { dataImageIter.getPixel(imagePos.x, imagePos.y, doubleData); frame.setCursorInfo(imagePos, doubleData); } } else { frame.setStatusText(""); } } }
/** * Displays the given image in a new ImageFrame. This method can be * safely called from any thread. The frame's closing behaviour will be * either {@linkplain #EXIT_ON_CLOSE} or {@linkplain #DISPOSE_ON_CLOSE} * depending on the {@code exitOnClose} argument. * * @param img image to display * @param title frame title * @param exitOnClose true for exit on close; false for dispose on close */ public static void showImage( final RenderedImage img, final String title, boolean exitOnClose) { if (SwingUtilities.isEventDispatchThread()) { doShowImage(img, title); } else { SwingUtilities.invokeLater(new Runnable() { public void run() { doShowImage(img, title); } }); } }
private static void doShowImage(RenderedImage img, String title) { ImageFrame f = new ImageFrame(img, title); f.setVisible(true); }
void setCursorInfo(Point imagePos, int[] imageValues) { Integer[] values = new Integer[imageValues.length]; for (int i = 0; i < values.length; i++) { values[i] = Integer.valueOf(imageValues[i]); } doSetCursorInfo(imagePos, values, "%d"); }
/** * Called when the Jiffle task has been completed successfully. * * @param ev the event containing the task results */ private void onCompletion(JiffleEvent ev) { JiffleExecutorResult result = ev.getResult(); RenderedImage img = result.getImages().get("result"); ImageFrame frame = new ImageFrame(img, "Jiffle image demo"); frame.setVisible(true); }
void setCursorInfo(Point imagePos, double[] imageValues) { Double[] values = new Double[imageValues.length]; for (int i = 0; i < values.length; i++) { values[i] = new Double(imageValues[i]); } doSetCursorInfo(imagePos, values, "%.4f"); }
/** * 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); } }
void setCursorInfo(Point imagePos, int[] imageValues) { Integer[] values = new Integer[imageValues.length]; for (int i = 0; i < values.length; i++) { values[i] = Integer.valueOf(imageValues[i]); } doSetCursorInfo(imagePos, values, "%d"); }
/** * 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); } }