List of usage examples for java.awt Color getBlue
public int getBlue()
From source file:tarea1.controlador.java
public void seleccionOpcion(int z) throws IOException, Exception { switch (z) {// ww w . ja v a 2 s .c o m case 1: { //ELEGIR UN ARCHIVO// //EN CASO DE QUERER CAMBIAR EL TIPO DE ARCHIVO. FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "bmp"); JFileChooser abrir = new JFileChooser(); abrir.setFileSelectionMode(JFileChooser.FILES_ONLY); abrir.setFileFilter(filter); abrir.setCurrentDirectory(new File(System.getProperty("user.home"))); int result = abrir.showOpenDialog(inicio); if (result == JFileChooser.APPROVE_OPTION) { // se seleciona el archivo de imagen original File selectedFile = abrir.getSelectedFile(); ruta = selectedFile.getAbsolutePath(); System.out.println("El archivo es: " + ruta); //ruta img = ImageIO.read(new File(ruta)); //se lee el archivo rotate = false; zoomv = false; escalav = false; brillos = false; contrastes = false; undoDelete = false; undoIndex = 0; Change(); inicio.setTitle("PDI: Tarea 3 -" + ruta); } } break;//end case 1 case 2: //imagen en negativo { //se crea un buffer BufferedImage imagenNegativa = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); //se convierten los colores a negativo y se va guardando en el buffer for (int y = 0; y < alto; y++) { for (int x = 0; x < ancho; x++) { int p = img.getRGB(x, y); //obtenermos el valor r g b a de cada pixel // int a = (p>>24)&0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; //se resta el rbg r = truncate(255 - r); g = truncate(255 - g); b = truncate(255 - b); //se guarda el rgb p = (r << 16) | (g << 8) | b; imagenNegativa.setRGB(x, y, p); } } //PARA LOS ROTACIONES img = imagenNegativa; ancho = img.getWidth(); alto = img.getHeight(); //se crea un buffer imagenNegativa = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); //se convierten los colores a negativo y se va guardando en el buffer for (int y = 0; y < alto; y++) { for (int x = 0; x < ancho; x++) { int p = original.getRGB(x, y); //obtenermos el valor r g b a de cada pixel int a = (p >> 24) & 0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; //se resta el rbg r = 255 - r; g = 255 - g; b = 255 - b; //se guarda el rgb p = (a << 24) | (r << 16) | (g << 8) | b; imagenNegativa.setRGB(x, y, p); } } img = imagenNegativa; Change(); } break;//end case 2 case 3: //flip imagen vertical { //buffer para la imagen BufferedImage mirrorimgV = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); //recorremos pixel a pixel tooooooooooooodo el buffer for (int i = 0; i < alto; i++) { for (int izquierda = 0, derecha = ancho - 1; izquierda < alto; izquierda++, derecha--) { int p = img.getRGB(izquierda, i); mirrorimgV.setRGB(derecha, i, p); } } img = mirrorimgV; Change(); } break;//end case 3 case 4://flip imagen horizontal { BufferedImage mirrorimgH = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < ancho; i++) { for (int arriba = 0, abajo = alto - 1; arriba < alto; arriba++, abajo--) { int p = img.getRGB(i, arriba); mirrorimgH.setRGB(i, abajo, p); } } img = mirrorimgH; Change(); } break;//end case 4 case 5: { //boton de reset //RESET File f = null; //leer image try { f = new File(ruta); rotate = false; zoomv = false; escalav = false; brillos = false; contrastes = false; undoDelete = false; undoIndex = 0; img = ImageIO.read(f); } catch (IOException e) { System.out.println(e); } Change(); } break; //end case 5 case 6: { //leer en formato binario FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "bmp"); JFileChooser abrir = new JFileChooser(); abrir.setFileSelectionMode(JFileChooser.FILES_ONLY); abrir.setFileFilter(filter); //abrir.setCurrentDirectory(new File(System.getProperty("user.home"))); abrir.setCurrentDirectory(new File(System.getProperty("user.dir"))); int result = abrir.showOpenDialog(inicio); if (result == JFileChooser.APPROVE_OPTION) { try { File selectedFile = abrir.getSelectedFile(); ruta = selectedFile.getAbsolutePath(); FileInputStream is = null; is = new FileInputStream(ruta); bmp.read(is); System.out.println("aqui"); MemoryImageSource mis = bmp.crearImageSource(); System.out.println("hola"); Image im = Toolkit.getDefaultToolkit().createImage(mis); //Para poder colorcarlo en el label //Image image = createImage(new MemoryImageSource(bmp.crearImageSource())); BufferedImage newImage = new BufferedImage(im.getWidth(null), im.getHeight(null), BufferedImage.TYPE_INT_RGB); //obtenemos la imagen que si se puede desplgar Graphics2D g = newImage.createGraphics(); g.drawImage(im, 0, 0, null); g.dispose(); img = newImage; rotate = false; zoomv = false; escalav = false; brillos = false; contrastes = false; undoDelete = false; undoIndex = 0; Change(); //add img info inicio.setTitle("PDI: Tarea 3 -" + ruta); //dimensiones, profundidad de bits, Mb ocupados content = ("Size: " + (bmp.tamArchivo) / 1000 + "kb\nDimension: " + bmp.ancho + " x " + bmp.alto + "\nBpp: " + bmp.bitsPorPixel + "bits"); ancho = bmp.ancho; alto = bmp.alto; } catch (Exception ex) { Logger.getLogger(controlador.class.getName()).log(Level.SEVERE, null, ex); } } //end approval if } break; //end case 6 //girar CW case 7: { BufferedImage new_Image = new BufferedImage(alto, ancho, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < ancho; i++) { for (int j = 0; j < alto; j++) { int p = img.getRGB(i, j); new_Image.setRGB(alto - j - 1, i, p); } } img = new_Image; Change(); } break;//end case 7 //girar CCW case 8: { BufferedImage new_Image = new BufferedImage(alto, ancho, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < ancho; i++) { for (int j = 0; j < alto; j++) { int p = img.getRGB(i, j); new_Image.setRGB(j, ancho - i - 1, p); } } img = new_Image; Change(); } break;//end case 8 case 9: { //Guardar Imagen FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "bmp"); JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileFilter(filter); fileChooser.setDialogTitle("Save"); fileChooser.setCurrentDirectory(new File(System.getProperty("user.home"))); int userSelection = fileChooser.showSaveDialog(inicio); if (userSelection == JFileChooser.APPROVE_OPTION) { File fileToSave = fileChooser.getSelectedFile(); System.out.println("Save as file: " + fileToSave.getAbsolutePath() + ".bmp"); System.out.println("Save as: " + fileToSave.getName()); bmp.saveMyLifeTonight(fileToSave, img); } } break; case 10: { //free rotation double anguloCartesiano = inicio.optionr; double aux; if (rotate == false) { original = img; } //para la ilusion de rotar sobre la "misma imagen" if (anguloCartesiano < 0) { aux = anguloCartesiano; anguloCartesiano = anguloCartesiano + angulo; angulo = anguloCartesiano; } else if (anguloCartesiano > 0) { aux = anguloCartesiano; anguloCartesiano = angulo + anguloCartesiano; angulo = anguloCartesiano; } anguloCartesiano = anguloCartesiano * Math.PI / 180; //CC coordinates int x, y; double distance, anguloPolar; int pisoX, techoX, pisoY, techoY; double rasterX, rasterY; // colores de los pixeles Color colorTL = null, colorTR, colorBL, colorBR = null; // interpolaciones double intX, intY; double rojoT, verdeT, azulT; double rojoB, verdeB, azulB; int centroX, centroY; centroX = original.getWidth() / 2; centroY = original.getHeight() / 2; BufferedImage imagenRotada = new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_INT_ARGB);//fondo transparente for (int i = 0; i < original.getHeight(); ++i) for (int j = 0; j < original.getWidth(); ++j) { // convert raster to Cartesian x = j - centroX; y = centroY - i; // convert Cartesian to polar distance = Math.sqrt(x * x + y * y); anguloPolar = 0.0; if (x == 0) { if (y == 0) { // centre of image, no rotation needed imagenRotada.setRGB(j, i, original.getRGB(j, i)); continue; } else if (y < 0) anguloPolar = 1.5 * Math.PI; else anguloPolar = 0.5 * Math.PI; } else anguloPolar = Math.atan2((double) y, (double) x); // anguloPolar -= anguloCartesiano; //polr a carte rasterX = distance * Math.cos(anguloPolar); rasterY = distance * Math.sin(anguloPolar); // cartesiano a raster rasterX = rasterX + (double) centroX; rasterY = (double) centroY - rasterY; pisoX = (int) (Math.floor(rasterX)); pisoY = (int) (Math.floor(rasterY)); techoX = (int) (Math.ceil(rasterX)); techoY = (int) (Math.ceil(rasterY)); // check bounds /// AQUIWWIUEI if (pisoX < 0 || techoX < 0 || pisoX >= original.getWidth() || techoX >= original.getWidth() || pisoY < 0 || techoY < 0 || pisoY >= original.getHeight() || techoY >= original.getHeight()) continue; intX = rasterX - (double) pisoX; intY = rasterY - (double) pisoY; colorTL = new Color(original.getRGB(pisoX, pisoY)); colorTR = new Color(original.getRGB(techoX, pisoY)); colorBL = new Color(original.getRGB(pisoX, techoY)); colorBR = new Color(original.getRGB(techoX, techoY)); // interpolacion horizontal top rojoT = (1 - intX) * colorTL.getRed() + intX * colorTR.getRed(); verdeT = (1 - intX) * colorTL.getGreen() + intX * colorTR.getGreen(); azulT = (1 - intX) * colorTL.getBlue() + intX * colorTR.getBlue(); // interpolacion horizontal bot rojoB = (1 - intX) * colorBL.getRed() + intX * colorBR.getRed(); verdeB = (1 - intX) * colorBL.getGreen() + intX * colorBR.getGreen(); azulB = (1 - intX) * colorBL.getBlue() + intX * colorBR.getBlue(); // interpolacion vertical int p = original.getRGB(j, i); int a = (p >> 24) & 0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; r = truncate(Math.round((1 - intY) * rojoT + intY * rojoB)); g = truncate(Math.round((1 - intY) * verdeT + intY * verdeB)); b = truncate(Math.round((1 - intY) * azulT + intY * azulB)); p = (a << 24) | (r << 16) | (g << 8) | b; imagenRotada.setRGB(j, i, p); } img = imagenRotada; rotate = true; inicio.jLabel3.setBounds(0, 0, ancho, alto); ImageIcon icon = new ImageIcon(img); inicio.jLabel3.setIcon(icon); } break; //case 10 case 11: { //histogram //para recorrer todos los valores y obtener los samples /* for (y) { for (x) { pixel = raster.getDataElements(x, y, pixel); } } */ int BINS = 256; HistogramDataset dataset = new HistogramDataset(); Raster raster = img.getRaster(); double[] r = new double[ancho * alto]; ChartPanel panelB = null; ChartPanel panelG = null; ChartPanel panelR = null; ChartPanel panel; if (bmp.bitsPorPixel == 1) { r = raster.getSamples(0, 0, ancho, alto, 0, r); ColorModel ColorM = img.getColorModel(); dataset.addSeries("Grey", r, BINS); //de aqui para abajo es el plotting // chart all JFreeChart chart = ChartFactory.createHistogram("Histogram", "Value", "Count", dataset, PlotOrientation.VERTICAL, true, true, false); XYPlot plot = (XYPlot) chart.getPlot(); XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); renderer.setBarPainter(new StandardXYBarPainter()); Paint[] paintArray = { new Color(0x80ff0000, true) }; plot.setDrawingSupplier( new DefaultDrawingSupplier(paintArray, DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); panel = new ChartPanel(chart); panel.setMouseWheelEnabled(true); } else { r = raster.getSamples(0, 0, ancho, alto, 0, r); dataset.addSeries("Red", r, BINS); r = raster.getSamples(0, 0, ancho, alto, 1, r); dataset.addSeries("Green", r, BINS); r = raster.getSamples(0, 0, ancho, alto, 2, r); dataset.addSeries("Blue", r, BINS); //de aqui para abajo es el plotting // chart all JFreeChart chart = ChartFactory.createHistogram("Histogram", "Value", "Count", dataset, PlotOrientation.VERTICAL, true, true, false); XYPlot plot = (XYPlot) chart.getPlot(); XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); renderer.setBarPainter(new StandardXYBarPainter()); // translucent red, green & blue Paint[] paintArray = { new Color(0x80ff0000, true), new Color(0x8000ff00, true), new Color(0x800000ff, true) }; plot.setDrawingSupplier( new DefaultDrawingSupplier(paintArray, DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); panel = new ChartPanel(chart); panel.setMouseWheelEnabled(true); //CHART Red HistogramDataset datasetR = new HistogramDataset(); r = raster.getSamples(0, 0, ancho, alto, 0, r); datasetR.addSeries("Red", r, BINS); JFreeChart chartR = ChartFactory.createHistogram("Histogram B", "Value", "Count", datasetR, PlotOrientation.VERTICAL, true, true, false); XYPlot plotR = (XYPlot) chartR.getPlot(); XYBarRenderer rendererR = (XYBarRenderer) plotR.getRenderer(); rendererR.setBarPainter(new StandardXYBarPainter()); // translucent red, green & blue Paint[] paintArrayR = { new Color(0x80ff0000, true) }; plotR.setDrawingSupplier( new DefaultDrawingSupplier(paintArrayR, DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); panelR = new ChartPanel(chartR); panelR.setMouseWheelEnabled(true); //CHART GREEN HistogramDataset datasetG = new HistogramDataset(); r = raster.getSamples(0, 0, ancho, alto, 1, r); datasetG.addSeries("Green", r, BINS); JFreeChart chartG = ChartFactory.createHistogram("Histogram G ", "Value", "Count", datasetG, PlotOrientation.VERTICAL, true, true, false); XYPlot plotG = (XYPlot) chartG.getPlot(); XYBarRenderer rendererG = (XYBarRenderer) plotG.getRenderer(); rendererG.setBarPainter(new StandardXYBarPainter()); // translucent red, green & blue Paint[] paintArrayG = { new Color(0x8000ff00, true) }; plotG.setDrawingSupplier( new DefaultDrawingSupplier(paintArrayG, DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); panelG = new ChartPanel(chartG); panelG.setMouseWheelEnabled(true); //CHART BLUE HistogramDataset datasetB = new HistogramDataset(); r = raster.getSamples(0, 0, ancho, alto, 2, r); datasetB.addSeries("Blue", r, BINS); JFreeChart chartB = ChartFactory.createHistogram("Histogram B ", "Value", "Count", datasetB, PlotOrientation.VERTICAL, true, true, false); XYPlot plotB = (XYPlot) chartB.getPlot(); XYBarRenderer rendererB = (XYBarRenderer) plotB.getRenderer(); rendererB.setBarPainter(new StandardXYBarPainter()); // translucent red, green & blue Paint[] paintArrayB = { new Color(0x800000ff, true) }; plotB.setDrawingSupplier( new DefaultDrawingSupplier(paintArrayB, DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE)); panelB = new ChartPanel(chartB); panelB.setMouseWheelEnabled(true); } //JTabbedPane jtp=new JTabbedPane(); if (!viewH) { inicio.jTabbedPane1.addTab("Histogram", panel); inicio.jTabbedPane1.addTab("Histogram R", panelR); inicio.jTabbedPane1.addTab("Histogram G", panelG); inicio.jTabbedPane1.addTab("Histogram B", panelB); viewH = true; } else { inicio.jTabbedPane1.remove(inicio.jTabbedPane1.indexOfTab("Histogram")); inicio.jTabbedPane1.remove(inicio.jTabbedPane1.indexOfTab("Histogram R")); inicio.jTabbedPane1.remove(inicio.jTabbedPane1.indexOfTab("Histogram G")); inicio.jTabbedPane1.remove(inicio.jTabbedPane1.indexOfTab("Histogram B")); viewH = false; } } break; case 12: { //BRILLO int dif = inicio.brillo; if (brillos == false) { original = img; } int ancho = img.getWidth(); int alto = img.getHeight(); //se crea un buffer BufferedImage brillito = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); //se convierten los colores a negativo y se va guardando en el buffer for (int y = 0; y < alto; y++) { for (int x = 0; x < ancho; x++) { int p = original.getRGB(x, y); //obtenemos el valor r g b a de cada pixel int a = (p >> 24) & 0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; //se resta el rbg r = truncate(r + dif); g = truncate(g + dif); b = truncate(b + dif); //se guarda el rgb p = (r << 16) | (g << 8) | b; brillito.setRGB(x, y, p); } } img = brillito; brillos = true; inicio.jLabel3.setBounds(0, 0, ancho, alto); ImageIcon icon = new ImageIcon(img); inicio.jLabel3.setIcon(icon); } break; //end case 12 case 13: { //CONTRAST double dif = inicio.contraste; double level = Math.pow(((100.0 + dif) / 100.0), 2.0); if (contrastes == false) { original = img; } int ancho = original.getWidth(); int alto = original.getHeight(); BufferedImage contraste = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); for (int y = 0; y < alto; y++) { for (int x = 0; x < ancho; x++) { int p = original.getRGB(x, y); int a = (p >> 24) & 0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; b = truncate((int) ((((((double) b / 255.0) - 0.5) * level) + 0.5) * 255.0)); g = truncate((int) ((((((double) g / 255.0) - 0.5) * level) + 0.5) * 255.0)); r = truncate((int) ((((((double) r / 255.0) - 0.5) * level) + 0.5) * 255.0)); p = (r << 16) | (g << 8) | b; contraste.setRGB(x, y, p); } } img = contraste; contrastes = true; inicio.jLabel3.setBounds(0, 0, ancho, alto); ImageIcon icon = new ImageIcon(img); inicio.jLabel3.setIcon(icon); } break;// case 13 case 14: { //UMBRALIZACION double u = inicio.umbral; if (inicio.jCheckBox1.isSelected()) { int ancho = img.getWidth(); int alto = img.getHeight(); BufferedImage contraste = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); for (int y = 0; y < alto; y++) { for (int x = 0; x < ancho; x++) { int p = img.getRGB(x, y); int a = (p >> 24) & 0xff; int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; double mediana = (double) (r + b + g); mediana /= 3; int med = (int) Math.round(mediana); b = med; g = med; r = med; if (r <= u) r = 0; else r = 255; if (g <= u) g = 0; else g = 255; if (b <= u) b = 0; else b = 255; p = (r << 16) | (g << 8) | b; contraste.setRGB(x, y, p); } } img = contraste; Change(); } } break; case 15: { BufferedImage equalized = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); int r, g, b, a; int pixel = 0; //look up table rgb int[] rhist = new int[256]; int[] ghist = new int[256]; int[] bhist = new int[256]; for (int i = 0; i < rhist.length; i++) rhist[i] = 0; for (int i = 0; i < ghist.length; i++) ghist[i] = 0; for (int i = 0; i < bhist.length; i++) bhist[i] = 0; for (int i = 0; i < img.getWidth(); i++) { for (int j = 0; j < img.getHeight(); j++) { int red = new Color(img.getRGB(i, j)).getRed(); int green = new Color(img.getRGB(i, j)).getGreen(); int blue = new Color(img.getRGB(i, j)).getBlue(); rhist[red]++; ghist[green]++; bhist[blue]++; } } //histograma color ArrayList<int[]> imageHist = new ArrayList<int[]>(); imageHist.add(rhist); imageHist.add(ghist); imageHist.add(bhist); //lookup table ArrayList<int[]> imgLT = new ArrayList<int[]>(); // llenar rhist = new int[256]; ghist = new int[256]; bhist = new int[256]; for (int i = 0; i < rhist.length; i++) rhist[i] = 0; for (int i = 0; i < ghist.length; i++) ghist[i] = 0; for (int i = 0; i < bhist.length; i++) bhist[i] = 0; long rojosT = 0; long verdesT = 0; long azulT = 0; // float factorDeEscala = (float) (255.0 / (ancho * alto)); for (int i = 0; i < rhist.length; i++) { rojosT += imageHist.get(0)[i]; int valor = (int) (rojosT * factorDeEscala); if (valor > 255) { rhist[i] = 255; } else rhist[i] = valor; verdesT += imageHist.get(1)[i]; int valg = (int) (verdesT * factorDeEscala); if (valg > 255) { ghist[i] = 255; } else ghist[i] = valg; azulT += imageHist.get(2)[i]; int valb = (int) (azulT * factorDeEscala); if (valb > 255) { bhist[i] = 255; } else bhist[i] = valb; } imgLT.add(rhist); imgLT.add(ghist); imgLT.add(bhist); for (int i = 0; i < ancho; i++) { for (int j = 0; j < alto; j++) { // colores a = new Color(img.getRGB(i, j)).getAlpha(); r = new Color(img.getRGB(i, j)).getRed(); g = new Color(img.getRGB(i, j)).getGreen(); b = new Color(img.getRGB(i, j)).getBlue(); // nuevos valoooooores r = imgLT.get(0)[r]; g = imgLT.get(1)[g]; b = imgLT.get(2)[b]; // rgb otra vez pixel = colorToRGB(a, r, g, b); //imagen final equalized.setRGB(i, j, pixel); } } img = equalized; Change(); } break; case 16: { //zoom double du = inicio.zoom; double u = du / 100; if (zoomv == false) { original = img; } BufferedImage zoom = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < zoom.getHeight(); ++i) for (int j = 0; j < zoom.getWidth(); ++j) { //nearest if (tipo == 1) { int ax = (int) (Math.floor(i / u)); int ay = (int) (Math.floor(j / u)); int p = original.getRGB(ax, ay); zoom.setRGB(i, j, p); } //bilinear if (tipo == 2) { } //no loss if (tipo == 0) { int ax = (int) (i / u); int ay = (int) (j / u); int p = original.getRGB(ax, ay); zoom.setRGB(i, j, p); } } img = zoom; zoomv = true; inicio.jLabel3.setBounds(0, 0, ancho, alto); ImageIcon icon = new ImageIcon(img); inicio.jLabel3.setIcon(icon); } break; case 17: { //escala double du = inicio.escala; double u = du / 100; if (escalav == false) { original = img; } int escalaX = (int) (ancho * u); int escalaY = (int) (alto * u); BufferedImage escala = new BufferedImage(escalaX, escalaY, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < escala.getHeight(); ++i) for (int j = 0; j < escala.getWidth(); ++j) { //R(x,y):= A(x/ax, y/ay) //R(x,y):= A(Floor x/10 ,Floor /10) //nearest if (tipo == 1) { int ax = (int) (Math.floor(i / u)); int ay = (int) (Math.floor(j / u)); int p = original.getRGB(ax, ay); escala.setRGB(i, j, p); } //bilinear if (tipo == 2) { } //no loss if (tipo == 0) { int ax = (int) (i / u); int ay = (int) (j / u); int p = original.getRGB(ax, ay); escala.setRGB(i, j, p); } } img = escala; escalav = true; inicio.jLabel3.setBounds(0, 0, ancho, alto); ImageIcon icon = new ImageIcon(img); inicio.jLabel3.setIcon(icon); content = ("Dimension: " + img.getWidth() + " x " + img.getHeight() + "\nBpp: " + bmp.bitsPorPixel + "bits"); } break; case 18://prewitt both { BufferedImage aux = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); aux = img; BufferedImage y, x; float[][] arraya = { { -1, 0, 1 }, { -1, 0, 1 }, { -1, 0, 1 } }; float[][] arrayb = { { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, }; float[][] arrayc = { { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, }; float[][] array = { { -1, -1, -1 }, { 0, 0, 0 }, { 1, 1, 1 } }; float[][] array2 = { { -2, -2, -2, -2, -2 }, { -1, -1, -1, -1, -1 }, { 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2 }, }; float[][] array3 = { { -3, -3, -3, -3, -3, -3, -3 }, { -2, -2, -2, -2, -2, -2, -2 }, { -1, -1, -1, -1, -1, -1, -1 }, { 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2, 2, 2 }, { 3, 3, 3, 3, 3, 3, 3 }, }; if (inicio.size == 7) { y = generalKernel(array3, 7); img = aux; x = generalKernel(arrayc, 7); } else if (inicio.size == 5) { y = generalKernel(array2, 5); img = aux; x = generalKernel(arrayb, 5); } else { y = generalKernel(array, 3); img = aux; x = generalKernel(arraya, 3); } for (int i = 0; i < ancho; i++) { for (int j = 0; j < alto; j++) { int p = x.getRGB(i, j); int p2 = y.getRGB(i, j); //obtenemos el valor r g b a de cada pixel int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; int r2 = (p2 >> 16) & 0xff; int g2 = (p2 >> 8) & 0xff; int b2 = p2 & 0xff; //process int resR = truncate(Math.sqrt(Math.pow(r, 2) + Math.pow(r2, 2))); int resG = truncate(Math.sqrt(Math.pow(g, 2) + Math.pow(g2, 2))); int resB = truncate(Math.sqrt(Math.pow(b, 2) + Math.pow(b2, 2))); //se guarda el rgb p = (resR << 16) | (resG << 8) | resB; img.setRGB(i, j, p); } Change(); } } break; case 19://prewitt x { BufferedImage x; float[][] arraya = { { -1, 0, 1 }, { -1, 0, 1 }, { -1, 0, 1 } }; float[][] arrayb = { { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, { -2, -1, 0, 1, 2 }, }; float[][] arrayc = { { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, { -3, -2, -1, 0, 1, 2, 3 }, }; if (inicio.size == 7) { x = generalKernel(arrayc, 7); } else if (inicio.size == 5) { x = generalKernel(arrayb, 5); } else { x = generalKernel(arraya, 3); } img = x; Change(); } break; case 20://prewitt y { BufferedImage y; float[][] array = { { -1, -1, -1 }, { 0, 0, 0 }, { 1, 1, 1 } }; float[][] array2 = { { -2, -2, -2, -2, -2 }, { -1, -1, -1, -1, -1 }, { 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2 }, }; float[][] array3 = { { -3, -3, -3, -3, -3, -3, -3 }, { -2, -2, -2, -2, -2, -2, -2 }, { -1, -1, -1, -1, -1, -1, -1 }, { 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2, 2, 2 }, { 3, 3, 3, 3, 3, 3, 3 }, }; if (inicio.size == 7) { y = generalKernel(array3, 7); } else if (inicio.size == 5) { y = generalKernel(array2, 5); } else { y = generalKernel(array, 3); } img = y; Change(); } break; case 21://Sobel x { BufferedImage x; float[][] arraya = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } }; float[][] arrayb = { { -5, -4, 0, 4, 5 }, { -8, -10, 0, 10, 8 }, { -10, -20, 0, 20, 10 }, { -8, -10, 0, 10, 8 }, { -5, -4, 0, 4, 5 }, }; float[][] arrayc = { { 3, 2, 1, 0, -1, -2, -3 }, { 4, 3, 2, 0, -2, -3, -4 }, { 5, 4, 3, 0, -3, -4, -5 }, { 6, 5, 4, 0, -4, -5, -6 }, { 5, 4, 3, 0, -3, -4, -5 }, { 4, 3, 2, 0, -2, -3, -4 }, { 3, 2, 1, 0, -1, -2, -3 }, }; if (inicio.size == 7) { x = generalKernel(arrayc, 7); } else if (inicio.size == 5) { x = generalKernel(arrayb, 5); } else { x = generalKernel(arraya, 3); } img = x; Change(); } break; case 22://sobel y { BufferedImage y; float[][] array1 = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } }; float[][] array2 = { { 5, 8, 10, 8, 5 }, { 4, 10, 20, 10, 4 }, { 0, 0, 0, 0, 0 }, { -4, -10, -20, -10, -4 }, { -5, -8, -10, -8, -5 }, }; float[][] array3 = { { 3, 4, 5, 6, 5, 4, 3 }, { 2, 3, 4, 5, 4, 3, 2 }, { 1, 2, 3, 4, 3, 2, 1 }, { 0, 0, 0, 0, 0, 0, 0 }, { -1, -2, -3, -4, -3, -2, -1 }, { -2, -3, -4, -5, -4, -3, -2 }, { -3, -4, -5, -6, -5, -4, -3 }, }; if (inicio.size == 7) { y = generalKernel(array3, 7); } else if (inicio.size == 5) { y = generalKernel(array2, 5); } else { y = generalKernel(array1, 3); } img = y; Change(); } break; case 23://sobel both { BufferedImage aux = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB); aux = img; BufferedImage y, x; float[][] arraya = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } }; float[][] arrayb = { { -5, -4, 0, 4, 5 }, { -8, -10, 0, 10, 8 }, { -10, -20, 0, 20, 10 }, { -8, -10, 0, 10, 8 }, { -5, -4, 0, 4, 5 }, }; float[][] arrayc = { { 3, 2, 1, 0, -1, -2, -3 }, { 4, 3, 2, 0, -2, -3, -4 }, { 5, 4, 3, 0, -3, -4, -5 }, { 6, 5, 4, 0, -4, -5, -6 }, { 5, 4, 3, 0, -3, -4, -5 }, { 4, 3, 2, 0, -2, -3, -4 }, { 3, 2, 1, 0, -1, -2, -3 }, }; float[][] array1 = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } }; float[][] array2 = { { 5, 8, 10, 8, 5 }, { 4, 10, 20, 10, 4 }, { 0, 0, 0, 0, 0 }, { -4, -10, -20, -10, -4 }, { -5, -8, -10, -8, -5 }, }; float[][] array3 = { { 3, 4, 5, 6, 5, 4, 3 }, { 2, 3, 4, 5, 4, 3, 2 }, { 1, 2, 3, 4, 3, 2, 1 }, { 0, 0, 0, 0, 0, 0, 0 }, { -1, -2, -3, -4, -3, -2, -1 }, { -2, -3, -4, -5, -4, -3, -2 }, { -3, -4, -5, -6, -5, -4, -3 }, }; if (inicio.size == 7) { y = generalKernel(array3, 7); img = aux; x = generalKernel(arrayc, 7); } else if (inicio.size == 5) { y = generalKernel(array2, 5); img = aux; x = generalKernel(arrayb, 5); } else { y = generalKernel(array1, 3); img = aux; x = generalKernel(arraya, 3); } for (int i = 0; i < ancho; i++) { for (int j = 0; j < alto; j++) { int p = x.getRGB(i, j); int p2 = y.getRGB(i, j); //obtenermos el valor r g b a de cada pixel int r = (p >> 16) & 0xff; int g = (p >> 8) & 0xff; int b = p & 0xff; int r2 = (p2 >> 16) & 0xff; int g2 = (p2 >> 8) & 0xff; int b2 = p2 & 0xff; //process int resR = truncate(Math.sqrt(Math.pow(r, 2) + Math.pow(r2, 2))); int resG = truncate(Math.sqrt(Math.pow(g, 2) + Math.pow(g2, 2))); int resB = truncate(Math.sqrt(Math.pow(b, 2) + Math.pow(b2, 2))); //se guarda el rgb p = (resR << 16) | (resG << 8) | resB; img.setRGB(i, j, p); } Change(); } } break; case 24://Gauss { BufferedImage y; float[][] arraya = { { 1 / 16f, 1 / 8f, 1 / 16f }, { 1 / 8f, 1 / 4f, 1 / 8f }, { 1 / 16f, 1 / 8f, 1 / 16f }, }; float[][] arrayb = { { 1 / 273f, 4 / 273f, 7 / 273f, 4 / 273f, 1 / 273f }, { 4 / 273f, 16 / 273f, 26 / 273f, 16 / 273f, 4 / 273f }, { 7 / 273f, 26 / 273f, 41 / 273f, 26 / 273f, 7 / 273f }, { 4 / 273f, 16 / 273f, 26 / 273f, 16 / 273f, 4 / 273f }, { 1 / 273f, 4 / 273f, 7 / 273f, 4 / 273f, 1 / 273f }, }; float[][] arrayc = { { 0.00000067f, 0.00002292f, 0.00019117f, 0.00038771f, 0.00019117f, 0.00002292f, 0.00000067f }, { 0.00002292f, 0.00078634f, 0.00655965f, 0.01330373f, 0.00655965f, 0.00078633f, 0.00002292f }, { 0.00019117f, 0.00655965f, 0.05472157f, 0.11098164f, 0.05472157f, 0.00655965f, 0.00019117f }, { 0.00038771f, 0.01330373f, 0.11098164f, 0.22508352f, 0.11098164f, 0.01330373f, 0.00038771f }, { 0.00019117f, 0.00655965f, 0.05472157f, 0.11098164f, 0.05472157f, 0.00655965f, 0.00019117f }, { 0.00002292f, 0.00078634f, 0.00655965f, 0.01330373f, 0.00655965f, 0.00078633f, 0.00002292f }, { 0.00000067f, 0.00002292f, 0.00019117f, 0.00038771f, 0.00019117f, 0.00002292f, 0.00000067f } }; if (inicio.size == 7) { y = generalKernel(arrayc, 7); } else if (inicio.size == 5) { y = generalKernel(arrayb, 5); } else { y = generalKernel(arraya, 3); } img = y; Change(); } break; case 25: { BufferedImage y; float[][] arraya = { { 1 / 9f, 1 / 9f, 1 / 9f }, { 1 / 9f, 1 / 9f, 1 / 9f }, { 1 / 9f, 1 / 9f, 1 / 9f }, }; float[][] arrayb = { { 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f }, { 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f }, { 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f }, { 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f }, { 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f, 1 / 25f }, }; float[][] arrayc = { { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, { 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f, 1 / 49f }, }; if (inicio.size == 7) { y = generalKernel(arrayc, 7); } else if (inicio.size == 5) { y = generalKernel(arrayb, 5); } else { y = generalKernel(arraya, 3); } img = y; Change(); } break; case 26://sharpen { BufferedImage y; float[][] arraya = { { -1, -1, -1 }, { -1, 9, -1 }, { -1, -1, -1 }, }; float[][] arrayb = { { -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1 }, { -1, -1, 26, -1, -1 }, { -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1 }, }; float[][] arrayc = { { -1, -1, -1, -1, -1, -1, -1 }, { -1, -2, -2, -2, -2, -2, -1 }, { -1, -2, -3, -3, -3, -2, -1 }, { -1, -2, -3, 81, -3, -2, -1 }, { -1, -2, -3, -3, -3, -2, -1 }, { -1, -2, -2, -2, -2, -2, -1 }, { -1, -1, -1, -1, -1, -1, -1 }, }; if (inicio.size == 7) { y = generalKernel(arrayc, 7); } else if (inicio.size == 5) { y = generalKernel(arrayb, 5); } else { y = generalKernel(arraya, 3); } img = y; Change(); } break; case 27: { kernel = new Kernel(); kernel.show(); kernel.setTitle("Kernel"); kernel.setVisible(true); kernel.setLocationRelativeTo(null); kernel.setResizable(false); kernel.pack(); } break; case 28: //valores { float[][] floatdata = new float[kernel.dim][kernel.dim]; for (int i = 0; i < kernel.dim; i++) { for (int j = 0; j < kernel.dim; j++) { floatdata[i][j] = floatValue(kernel.tableData[i][j]); } } kernel.dispose(); BufferedImage y; y = generalKernel(floatdata, kernel.dim); img = y; Change(); } break; case 29://motion blur { BufferedImage y; float[][] array = { { 1 / 9f, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1 / 9f, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1 / 9f, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1 / 9f, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1 / 9f, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1 / 9f, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1 / 9f, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1 / 9f, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1 / 9f }, }; /* float[][] arrayb = { {1/3f, 0, 0}, {0, 1/3f, 0}, {0, 0, 1/3f}, };*/ y = generalKernel(array, 9); img = y; Change(); } break; } //end switch }
From source file:ome.formats.OMEROMetadataStoreClient.java
public void setWellColor(Integer color, int plateIndex, int wellIndex) { Well o = getWell(plateIndex, wellIndex); Color c = new Color(color); o.setRed(toRType(c.getRed()));/*w w w . j a v a 2s. c o m*/ o.setGreen(toRType(c.getGreen())); o.setBlue(toRType(c.getBlue())); o.setAlpha(toRType(c.getAlpha())); }
From source file:ome.formats.OMEROMetadataStoreClient.java
public void setChannelColor(Integer color, int imageIndex, int channelIndex) { Channel o = getChannel(imageIndex, channelIndex); // RGBA --> ARGB Color c = new Color((color >>> 8) | (color << (32 - 8))); o.setRed(toRType(c.getRed()));//from www.j a va 2 s . c o m o.setGreen(toRType(c.getGreen())); o.setBlue(toRType(c.getBlue())); o.setAlpha(toRType(c.getAlpha())); }
From source file:fr.amap.lidar.amapvox.gui.MainFrameController.java
/** * Initializes the controller class.// www . ja va 2 s . c o m */ @Override public void initialize(URL url, ResourceBundle rb) { this.resourceBundle = rb; viewer3DPanelController.setResourceBundle(rb); initStrings(rb); colorPickerSeries.valueProperty().addListener(new ChangeListener<javafx.scene.paint.Color>() { @Override public void changed(ObservableValue<? extends javafx.scene.paint.Color> observable, javafx.scene.paint.Color oldValue, javafx.scene.paint.Color newValue) { if (listViewVoxelsFilesChart.getSelectionModel().getSelectedItems().size() == 1) { listViewVoxelsFilesChart.getSelectionModel().getSelectedItem().getSeriesParameters() .setColor(new Color((float) newValue.getRed(), (float) newValue.getGreen(), (float) newValue.getBlue(), 1.0f)); } } }); comboboxScript.getItems().setAll("Daniel script"); vboxWeighting.disableProperty().bind(checkboxEnableWeighting.selectedProperty().not()); checkboxEnableWeighting.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (newValue && textAreaWeighting.getText().isEmpty()) { int selectedVoxTab = tabPaneVoxelisation.getSelectionModel().getSelectedIndex(); if (selectedVoxTab == 0) { //ALS fillWeightingData(EchoesWeightParams.DEFAULT_ALS_WEIGHTING); } else if (selectedVoxTab == 1) { //TLS fillWeightingData(EchoesWeightParams.DEFAULT_TLS_WEIGHTING); } } } }); /*comboboxTransMode.getItems().setAll(1, 2, 3); comboboxTransMode.getSelectionModel().selectFirst(); comboboxPathLengthMode.getItems().setAll("A", "B"); comboboxPathLengthMode.getSelectionModel().selectFirst();*/ helpButtonNaNsCorrection.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { helpButtonNaNsCorrectionController.showHelpDialog(resourceBundle.getString("help_NaNs_correction")); } }); helpButtonAutoBBox.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { helpButtonAutoBBoxController.showHelpDialog(resourceBundle.getString("help_bbox")); } }); helpButtonHemiPhoto.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { helpButtonHemiPhotoController.showHelpDialog(resourceBundle.getString("help_hemiphoto")); } }); buttonHelpEmptyShotsFilter.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { buttonHelpEmptyShotsFilterController .showHelpDialog(resourceBundle.getString("help_empty_shots_filter")); } }); /*work around, the divider positions values are defined in the fxml, but when the window is initialized the values are lost*/ Platform.runLater(new Runnable() { @Override public void run() { splitPaneMain.setDividerPositions(0.75f); splitPaneVoxelization.setDividerPositions(0.45f); } }); initValidationSupport(); initPostProcessTab(); listViewTransmittanceMapSensorPositions.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listViewTaskList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); MenuItem menuItemPadValue1m = new MenuItem("1m voxel size"); addMenuItemPadValue(menuItemPadValue1m, 3.536958f); MenuItem menuItemPadValue2m = new MenuItem("2m voxel size"); addMenuItemPadValue(menuItemPadValue2m, 2.262798f); MenuItem menuItemPadValue3m = new MenuItem("3m voxel size"); addMenuItemPadValue(menuItemPadValue3m, 1.749859f); MenuItem menuItemPadValue4m = new MenuItem("4m voxel size"); addMenuItemPadValue(menuItemPadValue4m, 1.3882959f); MenuItem menuItemPadValue5m = new MenuItem("5m voxel size"); addMenuItemPadValue(menuItemPadValue5m, 1.0848f); menuButtonAdvisablePADMaxValues.getItems().addAll(menuItemPadValue1m, menuItemPadValue2m, menuItemPadValue3m, menuItemPadValue4m, menuItemPadValue5m); fileChooserSaveCanopyAnalyserOutputFile = new FileChooserContext(); fileChooserSaveCanopyAnalyserCfgFile = new FileChooserContext(); fileChooserSaveTransmittanceSimCfgFile = new FileChooserContext(); fileChooserOpenCanopyAnalyserInputFile = new FileChooserContext(); listViewCanopyAnalyzerSensorPositions.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); ContextMenu contextMenuProductsList = new ContextMenu(); MenuItem openImageItem = new MenuItem(RS_STR_OPEN_IMAGE); openImageItem.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedFile = listViewProductsFiles.getSelectionModel().getSelectedItem(); showImage(selectedFile); } }); Menu menuEdit = new Menu(RS_STR_EDIT); MenuItem menuItemEditVoxels = new MenuItem("Remove voxels (delete key)"); MenuItem menuItemFitToContent = new MenuItem("Fit to content"); MenuItem menuItemCrop = new MenuItem("Crop"); menuEdit.getItems().setAll(menuItemEditVoxels, menuItemFitToContent, menuItemCrop); menuItemFitToContent.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { fitVoxelSpaceToContent(selectedItem); } } }); menuItemEditVoxels.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { editVoxelSpace(selectedItem); } } }); menuItemCrop.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { try { voxelSpaceCroppingFrameController.setVoxelFile(selectedItem); voxelSpaceCroppingFrame.show(); } catch (Exception ex) { showErrorDialog(ex); } } } }); Menu menuExport = new Menu(RS_STR_EXPORT); MenuItem menuItemExportDartMaket = new MenuItem("Dart (maket.txt)"); MenuItem menuItemExportDartPlots = new MenuItem("Dart (plots.xml)"); MenuItem menuItemExportMeshObj = new MenuItem("Mesh (*.obj)"); menuItemExportDartMaket.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { exportDartMaket(selectedItem); } } }); menuItemExportDartPlots.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { exportDartPlots(selectedItem); } } }); menuItemExportMeshObj.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { exportMeshObj(selectedItem); } } }); menuExport.getItems().setAll(menuItemExportDartMaket, menuItemExportDartPlots, menuItemExportMeshObj); MenuItem menuItemInfo = new MenuItem(RS_STR_INFO); menuItemInfo.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { Alert alert = new Alert(AlertType.INFORMATION); File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { VoxelFileReader reader; try { reader = new VoxelFileReader(selectedItem); VoxelSpaceInfos voxelSpaceInfos = reader.getVoxelSpaceInfos(); alert.setTitle("Information"); alert.setHeaderText("Voxel space informations"); alert.setContentText(voxelSpaceInfos.toString()); alert.show(); } catch (Exception ex) { showErrorDialog(ex); } } } }); final MenuItem menuItemOpenContainingFolder = new MenuItem(RS_STR_OPEN_CONTAINING_FOLDER); menuItemOpenContainingFolder.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { final File selectedItem = listViewProductsFiles.getSelectionModel().getSelectedItem(); if (selectedItem != null) { if (Desktop.isDesktopSupported()) { new Thread(() -> { try { Desktop.getDesktop().open(selectedItem.getParentFile()); } catch (IOException ex) { logger.error("Cannot open directory " + selectedItem); } }).start(); } } } }); listViewProductsFiles.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() { @Override public void handle(ContextMenuEvent event) { if (listViewProductsFiles.getSelectionModel().getSelectedIndices().size() == 1) { File selectedFile = listViewProductsFiles.getSelectionModel().getSelectedItem(); String extension = FileManager.getExtension(selectedFile); switch (extension) { case ".png": case ".bmp": case ".jpg": contextMenuProductsList.getItems().setAll(openImageItem, menuItemOpenContainingFolder); contextMenuProductsList.show(listViewProductsFiles, event.getScreenX(), event.getScreenY()); break; case ".vox": default: if (VoxelFileReader.isFileAVoxelFile(selectedFile)) { contextMenuProductsList.getItems().setAll(menuItemInfo, menuItemOpenContainingFolder, menuEdit, menuExport); contextMenuProductsList.show(listViewProductsFiles, event.getScreenX(), event.getScreenY()); } } } } }); ContextMenu contextMenuLidarScanEdit = new ContextMenu(); MenuItem editItem = new MenuItem("Edit"); editItem.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { filterFrameController.setFilters("Reflectance", "Deviation", "Amplitude"); filterFrame.show(); filterFrame.setOnHidden(new EventHandler<WindowEvent>() { @Override public void handle(WindowEvent event) { if (filterFrameController.getFilter() != null) { ObservableList<LidarScan> items = listViewHemiPhotoScans.getSelectionModel() .getSelectedItems(); for (LidarScan scan : items) { scan.filters.add(filterFrameController.getFilter()); } } } }); } }); contextMenuLidarScanEdit.getItems().add(editItem); listViewHemiPhotoScans.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listViewHemiPhotoScans.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() { @Override public void handle(ContextMenuEvent event) { contextMenuLidarScanEdit.show(listViewHemiPhotoScans, event.getScreenX(), event.getScreenY()); } }); /**LAD tab initialization**/ comboboxLADChoice.getItems().addAll(LeafAngleDistribution.Type.UNIFORM, LeafAngleDistribution.Type.SPHERIC, LeafAngleDistribution.Type.ERECTOPHILE, LeafAngleDistribution.Type.PLANOPHILE, LeafAngleDistribution.Type.EXTREMOPHILE, LeafAngleDistribution.Type.PLAGIOPHILE, LeafAngleDistribution.Type.HORIZONTAL, LeafAngleDistribution.Type.VERTICAL, LeafAngleDistribution.Type.ELLIPSOIDAL, LeafAngleDistribution.Type.ELLIPTICAL, LeafAngleDistribution.Type.TWO_PARAMETER_BETA); comboboxLADChoice.getSelectionModel().select(LeafAngleDistribution.Type.SPHERIC); comboboxLADChoice.getSelectionModel().selectedItemProperty() .addListener(new ChangeListener<LeafAngleDistribution.Type>() { @Override public void changed(ObservableValue<? extends LeafAngleDistribution.Type> observable, LeafAngleDistribution.Type oldValue, LeafAngleDistribution.Type newValue) { if (newValue == LeafAngleDistribution.Type.TWO_PARAMETER_BETA || newValue == LeafAngleDistribution.Type.ELLIPSOIDAL) { hboxTwoBetaParameters.setVisible(true); if (newValue == LeafAngleDistribution.Type.ELLIPSOIDAL) { labelLADBeta.setVisible(false); } else { labelLADBeta.setVisible(true); } } else { hboxTwoBetaParameters.setVisible(false); } } }); ToggleGroup ladTypeGroup = new ToggleGroup(); radiobuttonLADHomogeneous.setToggleGroup(ladTypeGroup); radiobuttonLADLocalEstimation.setToggleGroup(ladTypeGroup); /**CHART panel initialization**/ ToggleGroup profileChartType = new ToggleGroup(); radiobuttonPreDefinedProfile.setToggleGroup(profileChartType); radiobuttonFromVariableProfile.setToggleGroup(profileChartType); ToggleGroup profileChartRelativeHeightType = new ToggleGroup(); radiobuttonHeightFromAboveGround.setToggleGroup(profileChartRelativeHeightType); radiobuttonHeightFromBelowCanopy.setToggleGroup(profileChartRelativeHeightType); comboboxFromVariableProfile.disableProperty().bind(radiobuttonPreDefinedProfile.selectedProperty()); comboboxPreDefinedProfile.disableProperty().bind(radiobuttonFromVariableProfile.selectedProperty()); hboxMaxPADVegetationProfile.visibleProperty().bind(radiobuttonPreDefinedProfile.selectedProperty()); listViewVoxelsFilesChart.getSelectionModel().selectedIndexProperty() .addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { if (listViewVoxelsFilesChart.getSelectionModel().getSelectedItems().size() > 1) { colorPickerSeries.setDisable(true); } else if (listViewVoxelsFilesChart.getSelectionModel().getSelectedItems().size() == 1) { VoxelFileChart selectedItem = listViewVoxelsFilesChart.getSelectionModel() .getSelectedItem(); Color selectedItemColor = selectedItem.getSeriesParameters().getColor(); colorPickerSeries.setDisable(false); colorPickerSeries.setValue(new javafx.scene.paint.Color( selectedItemColor.getRed() / 255.0, selectedItemColor.getGreen() / 255.0, selectedItemColor.getBlue() / 255.0, 1.0)); if (newValue.intValue() >= 0) { textfieldLabelVoxelFileChart.setText( listViewVoxelsFilesChart.getItems().get(newValue.intValue()).label); } } } }); textfieldLabelVoxelFileChart.textProperty().addListener(new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (listViewVoxelsFilesChart.getSelectionModel().getSelectedIndex() >= 0) { listViewVoxelsFilesChart.getSelectionModel().getSelectedItem().label = newValue; } } }); listViewVoxelsFilesChart.getItems().addListener(new ListChangeListener<VoxelFileChart>() { @Override public void onChanged(ListChangeListener.Change<? extends VoxelFileChart> c) { while (c.next()) { } if (c.wasAdded() && c.getAddedSize() == c.getList().size()) { try { VoxelFileReader reader = new VoxelFileReader(c.getList().get(0).file); String[] columnNames = reader.getVoxelSpaceInfos().getColumnNames(); comboboxFromVariableProfile.getItems().clear(); comboboxFromVariableProfile.getItems().addAll(columnNames); comboboxFromVariableProfile.getSelectionModel().selectFirst(); } catch (Exception ex) { logger.error("Cannot read voxel file", ex); } } } }); anchorpaneQuadrats.disableProperty().bind(checkboxMakeQuadrats.selectedProperty().not()); comboboxSelectAxisForQuadrats.getItems().addAll("X", "Y", "Z"); comboboxSelectAxisForQuadrats.getSelectionModel().select(1); comboboxPreDefinedProfile.getItems().addAll("Vegetation (PAD)"); comboboxPreDefinedProfile.getSelectionModel().selectFirst(); radiobuttonSplitCountForQuadrats.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { textFieldSplitCountForQuadrats.setDisable(!newValue); textFieldLengthForQuadrats.setDisable(newValue); } }); ToggleGroup chartMakeQuadratsSplitType = new ToggleGroup(); radiobuttonLengthForQuadrats.setToggleGroup(chartMakeQuadratsSplitType); radiobuttonSplitCountForQuadrats.setToggleGroup(chartMakeQuadratsSplitType); /**Virtual measures panel initialization**/ comboboxHemiPhotoBitmapOutputMode.getItems().addAll("Pixel", "Color"); comboboxHemiPhotoBitmapOutputMode.getSelectionModel().selectFirst(); ToggleGroup virtualMeasuresChoiceGroup = new ToggleGroup(); toggleButtonLAI2000Choice.setToggleGroup(virtualMeasuresChoiceGroup); toggleButtonLAI2200Choice.setToggleGroup(virtualMeasuresChoiceGroup); comboboxChooseCanopyAnalyzerSampling.getItems().setAll(500, 4000, 10000); comboboxChooseCanopyAnalyzerSampling.getSelectionModel().selectFirst(); initEchoFiltering(); data = FXCollections.observableArrayList(); tableViewSimulationPeriods.setItems(data); tableViewSimulationPeriods.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); comboboxChooseDirectionsNumber.getItems().addAll(1, 6, 16, 46, 136, 406); comboboxChooseDirectionsNumber.getSelectionModel().select(4); ToggleGroup scannerPositionsMode = new ToggleGroup(); /*radiobuttonScannerPosSquaredArea.setToggleGroup(scannerPositionsMode); radiobuttonScannerPosFile.setToggleGroup(scannerPositionsMode);*/ tableColumnPeriod.setCellValueFactory( new Callback<TableColumn.CellDataFeatures<SimulationPeriod, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call( TableColumn.CellDataFeatures<SimulationPeriod, String> param) { return new SimpleStringProperty(param.getValue().getPeriod().toString()); } }); tableColumnClearness.setCellValueFactory( new Callback<TableColumn.CellDataFeatures<SimulationPeriod, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call( TableColumn.CellDataFeatures<SimulationPeriod, String> param) { return new SimpleStringProperty(String.valueOf(param.getValue().getClearnessCoefficient())); } }); checkboxMultiFiles.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { anchorpaneBoundingBoxParameters.setDisable(newValue); } }); hboxGenerateBitmapFiles.disableProperty().bind(checkboxGenerateBitmapFile.selectedProperty().not()); hboxGenerateTextFile.disableProperty().bind(checkboxGenerateTextFile.selectedProperty().not()); fileChooserOpenConfiguration = new FileChooser(); fileChooserOpenConfiguration.setTitle("Choose configuration file"); fileChooserSaveConfiguration = new FileChooserContext("cfg.xml"); fileChooserSaveConfiguration.fc.setTitle("Choose output file"); fileChooserOpenInputFileALS = new FileChooser(); fileChooserOpenInputFileALS.setTitle("Open input file"); fileChooserOpenInputFileALS.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Shot files", "*.sht"), new ExtensionFilter("Text Files", "*.txt"), new ExtensionFilter("Las Files", "*.las", "*.laz")); fileChooserOpenTrajectoryFileALS = new FileChooser(); fileChooserOpenTrajectoryFileALS.setTitle("Open trajectory file"); fileChooserOpenTrajectoryFileALS.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt")); fileChooserOpenOutputFileALS = new FileChooser(); fileChooserOpenOutputFileALS.setTitle("Choose output file"); fileChooserOpenInputFileTLS = new FileChooserContext(); fileChooserOpenInputFileTLS.fc.setTitle("Open input file"); fileChooserOpenInputFileTLS.fc.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt"), new ExtensionFilter("Rxp Files", "*.rxp"), new ExtensionFilter("Project Rsp Files", "*.rsp")); directoryChooserOpenOutputPathTLS = new DirectoryChooser(); directoryChooserOpenOutputPathTLS.setTitle("Choose output path"); directoryChooserOpenOutputPathALS = new DirectoryChooser(); directoryChooserOpenOutputPathALS.setTitle("Choose output path"); fileChooserSaveOutputFileTLS = new FileChooser(); fileChooserSaveOutputFileTLS.setTitle("Save voxel file"); fileChooserSaveTransmittanceTextFile = new FileChooser(); fileChooserSaveTransmittanceTextFile.setTitle("Save text file"); directoryChooserSaveTransmittanceBitmapFile = new DirectoryChooser(); directoryChooserSaveTransmittanceBitmapFile.setTitle("Choose output directory"); fileChooserSaveHemiPhotoOutputBitmapFile = new FileChooserContext("*.png"); fileChooserSaveHemiPhotoOutputBitmapFile.fc.setTitle("Save bitmap file"); directoryChooserSaveHemiPhotoOutputBitmapFile = new DirectoryChooser(); directoryChooserSaveHemiPhotoOutputBitmapFile.setTitle("Choose bitmap files output directory"); directoryChooserSaveHemiPhotoOutputTextFile = new DirectoryChooser(); directoryChooserSaveHemiPhotoOutputTextFile.setTitle("Choose text files output directory"); fileChooserSaveHemiPhotoOutputTextFile = new FileChooser(); fileChooserSaveHemiPhotoOutputTextFile.setTitle("Save text file"); fileChooserOpenVoxelFile = new FileChooser(); fileChooserOpenVoxelFile.setTitle("Open voxel file"); fileChooserOpenVoxelFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Voxel Files", "*.vox")); fileChooserOpenPopMatrixFile = new FileChooser(); fileChooserOpenPopMatrixFile.setTitle("Choose matrix file"); fileChooserOpenPopMatrixFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt")); fileChooserOpenSopMatrixFile = new FileChooser(); fileChooserOpenSopMatrixFile.setTitle("Choose matrix file"); fileChooserOpenSopMatrixFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt")); fileChooserOpenVopMatrixFile = new FileChooser(); fileChooserOpenVopMatrixFile.setTitle("Choose matrix file"); fileChooserOpenVopMatrixFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt")); fileChooserOpenPonderationFile = new FileChooser(); fileChooserOpenPonderationFile.setTitle("Choose ponderation file"); fileChooserOpenPonderationFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Text Files", "*.txt")); fileChooserOpenDTMFile = new FileChooser(); fileChooserOpenDTMFile.setTitle("Choose DTM file"); fileChooserOpenDTMFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("DTM Files", "*.asc")); fileChooserOpenPointCloudFile = new FileChooser(); fileChooserOpenPointCloudFile.setTitle("Choose point cloud file"); fileChooserOpenPointCloudFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("TXT Files", "*.txt")); fileChooserOpenMultiResVoxelFile = new FileChooser(); fileChooserOpenMultiResVoxelFile.setTitle("Choose voxel file"); fileChooserOpenMultiResVoxelFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Voxel Files", "*.vox")); fileChooserOpenOutputFileMultiRes = new FileChooser(); fileChooserOpenOutputFileMultiRes.setTitle("Save voxel file"); fileChooserAddTask = new FileChooser(); fileChooserAddTask.setTitle("Choose parameter file"); fileChooserAddTask.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("XML Files", "*.xml")); fileChooserSaveDartFile = new FileChooser(); fileChooserSaveDartFile.setTitle("Save dart file (.maket)"); fileChooserSaveDartFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Maket File", "*.maket")); fileChooserOpenOutputFileMerging = new FileChooser(); fileChooserOpenOutputFileMerging.setTitle("Choose voxel file"); fileChooserOpenOutputFileMerging.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("Voxel Files", "*.vox")); fileChooserOpenScriptFile = new FileChooser(); fileChooserOpenScriptFile.setTitle("Choose script file"); fileChooserSaveGroundEnergyOutputFile = new FileChooser(); fileChooserSaveGroundEnergyOutputFile.setTitle("Save ground energy file"); fileChooserOpenPointsPositionFile = new FileChooser(); fileChooserOpenPointsPositionFile.setTitle("Choose points file"); fileChooserOpenPointsPositionFile.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*"), new ExtensionFilter("TXT Files", "*.txt")); try { viewCapsSetupFrame = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/ViewCapsSetupFrame.fxml")); Parent root = loader.load(); viewCapsSetupFrameController = loader.getController(); viewCapsSetupFrame.setScene(new Scene(root)); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/FilteringPaneComponent.fxml")); anchorPaneEchoFilteringRxp = loader.load(); filteringPaneController = loader.getController(); filteringPaneController.setFiltersNames("Reflectance", "Amplitude", "Deviation"); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { positionImporterFrame = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/PositionImporterFrame.fxml")); Parent root = loader.load(); positionImporterFrameController = loader.getController(); positionImporterFrame.setScene(new Scene(root)); positionImporterFrameController.setStage(positionImporterFrame); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { voxelSpaceCroppingFrame = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/VoxelSpaceCroppingFrame.fxml")); Parent root = loader.load(); voxelSpaceCroppingFrameController = loader.getController(); voxelSpaceCroppingFrame.setScene(new Scene(root)); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { attributsImporterFrame = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/AttributsImporterFrame.fxml")); Parent root = loader.load(); attributsImporterFrameController = loader.getController(); attributsImporterFrame.setScene(new Scene(root)); attributsImporterFrameController.setStage(attributsImporterFrame); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { textFileParserFrameController = TextFileParserFrameController.getInstance(); } catch (Exception ex) { logger.error("Cannot load fxml file", ex); } try { transformationFrameController = TransformationFrameController.getInstance(); transformationFrame = transformationFrameController.getStage(); } catch (Exception ex) { logger.error("Cannot load fxml file", ex); } updaterFrame = new Stage(); try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/update/UpdaterFrame.fxml")); Parent root = loader.load(); updaterFrameController = loader.getController(); updaterFrame.setScene(new Scene(root)); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } riscanProjectExtractor = new RiscanProjectExtractor(); ptxProjectExtractor = new PTXProjectExtractor(); ptgProjectExtractor = new PTGProjectExtractor(); dateChooserFrame = new Stage(); try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DateChooserFrame.fxml")); Parent root = loader.load(); dateChooserFrameController = loader.getController(); dateChooserFrame.setScene(new Scene(root)); dateChooserFrameController.setStage(dateChooserFrame); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } comboboxModeALS.getItems().addAll(RS_STR_INPUT_TYPE_LAS, RS_STR_INPUT_TYPE_LAZ, /*RS_STR_INPUT_TYPE_XYZ, */RS_STR_INPUT_TYPE_SHOTS); comboboxModeALS.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue.equals(RS_STR_INPUT_TYPE_SHOTS)) { alsVoxValidationSupport.registerValidator(textFieldTrajectoryFileALS, false, Validators.unregisterValidator); } else { alsVoxValidationSupport.registerValidator(textFieldTrajectoryFileALS, false, Validators.fileExistValidator); } } }); comboboxModeTLS.getItems().setAll("Rxp scan", "Rsp project", "PTX", "PTG"/*, RS_STR_INPUT_TYPE_XYZ, RS_STR_INPUT_TYPE_SHOTS*/); comboboxGroundEnergyOutputFormat.getItems().setAll("txt", "png"); comboboxLaserSpecification.getItems().addAll(LaserSpecification.getPresets()); comboboxLaserSpecification.getSelectionModel().selectedItemProperty() .addListener(new ChangeListener<LaserSpecification>() { @Override public void changed(ObservableValue<? extends LaserSpecification> observable, LaserSpecification oldValue, LaserSpecification newValue) { DecimalFormatSymbols symb = new DecimalFormatSymbols(); symb.setDecimalSeparator('.'); DecimalFormat formatter = new DecimalFormat("#####.######", symb); textFieldBeamDiameterAtExit.setText(formatter.format(newValue.getBeamDiameterAtExit())); textFieldBeamDivergence.setText(formatter.format(newValue.getBeamDivergence())); } }); comboboxLaserSpecification.getSelectionModel().select(LaserSpecification.LMS_Q560); comboboxLaserSpecification.disableProperty().bind(checkboxCustomLaserSpecification.selectedProperty()); textFieldBeamDiameterAtExit.disableProperty() .bind(checkboxCustomLaserSpecification.selectedProperty().not()); textFieldBeamDivergence.disableProperty().bind(checkboxCustomLaserSpecification.selectedProperty().not()); listViewProductsFiles.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listViewProductsFiles.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { int size = listViewProductsFiles.getSelectionModel().getSelectedIndices().size(); if (size == 1) { viewer3DPanelController .updateCurrentVoxelFile(listViewProductsFiles.getSelectionModel().getSelectedItem()); } } }); listViewTaskList.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { int size = listViewTaskList.getSelectionModel().getSelectedIndices().size(); if (size == 1) { buttonLoadSelectedTask.setDisable(false); } else { buttonLoadSelectedTask.setDisable(true); } buttonExecute.setDisable(size == 0); } }); resetMatrices(); calculateMatrixFrame = new Stage(); try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/CalculateMatrixFrame.fxml")); Parent root = loader.load(); calculateMatrixFrameController = loader.getController(); calculateMatrixFrameController.setStage(calculateMatrixFrame); Scene scene = new Scene(root); calculateMatrixFrame.setScene(scene); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } filterFrame = new Stage(); try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/FilterFrame.fxml")); Parent root = loader.load(); filterFrameController = loader.getController(); filterFrameController.setStage(filterFrame); filterFrameController.setFilters("Angle"); filterFrame.setScene(new Scene(root)); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/export/ObjExporterDialog.fxml")); Parent root = loader.load(); objExporterController = loader.getController(); Stage s = new Stage(); objExporterController.setStage(s); s.setScene(new Scene(root)); } catch (IOException ex) { logger.error("Cannot load fxml file", ex); } textFieldResolution.textProperty().addListener(new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { voxelSpacePanelVoxelizationController.setResolution(Float.valueOf(newValue)); } }); textFieldResolution.textProperty().addListener(voxelSpacePanelVoxelizationController.getChangeListener()); checkboxUseDTMFilter.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (checkboxUseDTMFilter.isSelected()) { buttonOpenDTMFile.setDisable(false); textfieldDTMPath.setDisable(false); textfieldDTMValue.setDisable(false); checkboxApplyVOPMatrix.setDisable(false); labelDTMValue.setDisable(false); labelDTMPath.setDisable(false); } else { buttonOpenDTMFile.setDisable(true); textfieldDTMPath.setDisable(true); textfieldDTMValue.setDisable(true); checkboxApplyVOPMatrix.setDisable(true); labelDTMValue.setDisable(true); labelDTMPath.setDisable(true); } } }); checkboxUseVopMatrix.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { buttonSetVOPMatrix.setDisable(!newValue); } }); checkboxUsePopMatrix.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (newValue) { checkBoxUseDefaultPopMatrix.setDisable(false); buttonOpenPopMatrixFile.setDisable(false); } else { checkBoxUseDefaultPopMatrix.setDisable(true); buttonOpenPopMatrixFile.setDisable(true); } } }); checkboxUseSopMatrix.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (newValue) { checkBoxUseDefaultSopMatrix.setDisable(false); buttonOpenSopMatrixFile.setDisable(false); } else { checkBoxUseDefaultSopMatrix.setDisable(true); buttonOpenSopMatrixFile.setDisable(true); } } }); checkboxCalculateGroundEnergy.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (newValue) { anchorPaneGroundEnergyParameters.setDisable(false); } else { anchorPaneGroundEnergyParameters.setDisable(true); } } }); listviewRxpScans.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<LidarScan>() { @Override public void changed(ObservableValue<? extends LidarScan> observable, LidarScan oldValue, LidarScan newValue) { if (newValue != null) { sopMatrix = newValue.matrix; updateResultMatrix(); } } }); comboboxModeTLS.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { switch (newValue.intValue()) { case 1: case 2: case 3: listviewRxpScans.setDisable(false); checkboxMergeAfter.setDisable(false); textFieldMergedFileName.setDisable(false); disableSopMatrixChoice(false); labelTLSOutputPath.setText("Output path"); break; default: listviewRxpScans.setDisable(true); checkboxMergeAfter.setDisable(true); textFieldMergedFileName.setDisable(true); //disableSopMatrixChoice(true); labelTLSOutputPath.setText("Output file"); } if (newValue.intValue() == 0 || newValue.intValue() == 1) { checkboxEmptyShotsFilter.setDisable(false); } else { checkboxEmptyShotsFilter.setDisable(true); } } }); tabPaneVoxelisation.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { switch (newValue.intValue()) { case 1: disableSopMatrixChoice(false); disablePopMatrixChoice(false); checkboxEmptyShotsFilter.setDisable(false); break; default: disableSopMatrixChoice(true); disablePopMatrixChoice(true); checkboxEmptyShotsFilter.setDisable(true); } switch (newValue.intValue()) { case 0: checkboxCalculateGroundEnergy.setDisable(false); if (checkboxCalculateGroundEnergy.isSelected()) { anchorPaneGroundEnergyParameters.setDisable(true); checkboxCalculateGroundEnergy.setDisable(false); } anchorPaneEchoFiltering.getChildren().set(0, anchorPaneEchoFilteringClassifications); //anchorPaneEchoFilteringClassifications.setVisible(true); anchorpaneBoundingBoxParameters.setDisable(checkboxMultiFiles.isSelected()); hboxAutomaticBBox.setDisable(false); break; default: anchorPaneGroundEnergyParameters.setDisable(true); checkboxCalculateGroundEnergy.setDisable(true); anchorPaneEchoFiltering.getChildren().set(0, anchorPaneEchoFilteringRxp); //anchorPaneEchoFilteringClassifications.setVisible(false); anchorpaneBoundingBoxParameters.setDisable(false); hboxAutomaticBBox.setDisable(true); } } }); int availableCores = Runtime.getRuntime().availableProcessors(); sliderRSPCoresToUse.setMin(1); sliderRSPCoresToUse.setMax(availableCores); sliderRSPCoresToUse.setValue(availableCores); textFieldInputFileALS.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldTrajectoryFileALS.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldOutputFileALS.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldInputFileTLS.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldOutputFileMerging.setOnDragOver(DragAndDropHelper.dragOverEvent); textfieldDTMPath.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldOutputFileGroundEnergy.setOnDragOver(DragAndDropHelper.dragOverEvent); listViewTaskList.setOnDragOver(DragAndDropHelper.dragOverEvent); listViewProductsFiles.setOnDragOver(DragAndDropHelper.dragOverEvent); textfieldVoxelFilePathTransmittance.setOnDragOver(DragAndDropHelper.dragOverEvent); textfieldOutputTextFilePath.setOnDragOver(DragAndDropHelper.dragOverEvent); textfieldOutputBitmapFilePath.setOnDragOver(DragAndDropHelper.dragOverEvent); textFieldInputFileALS.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles() && db.getFiles().size() == 1) { success = true; for (File file : db.getFiles()) { if (file != null) { textFieldInputFileALS.setText(file.getAbsolutePath()); selectALSInputMode(file); } } } event.setDropCompleted(success); event.consume(); } }); textFieldTrajectoryFileALS.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles() && db.getFiles().size() == 1) { success = true; for (File file : db.getFiles()) { if (file != null) { onTrajectoryFileChoosed(file); } } } event.setDropCompleted(success); event.consume(); } }); textFieldInputFileTLS.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles() && db.getFiles().size() == 1) { success = true; for (File file : db.getFiles()) { if (file != null) { onInputFileTLSChoosed(file); } } } event.setDropCompleted(success); event.consume(); } }); setDragDroppedSingleFileEvent(textFieldOutputFileALS); setDragDroppedSingleFileEvent(textFieldOutputFileMerging); setDragDroppedSingleFileEvent(textfieldDTMPath); setDragDroppedSingleFileEvent(textFieldOutputFileGroundEnergy); setDragDroppedSingleFileEvent(textfieldVoxelFilePathTransmittance); setDragDroppedSingleFileEvent(textfieldOutputTextFilePath); setDragDroppedSingleFileEvent(textfieldOutputBitmapFilePath); listViewTaskList.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles()) { success = true; for (File file : db.getFiles()) { addFileToTaskList(file); } } event.setDropCompleted(success); event.consume(); } }); listViewProductsFiles.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles()) { success = true; for (File file : db.getFiles()) { addFileToProductsList(file); } } event.setDropCompleted(success); event.consume(); } }); listViewProductsFiles.setOnDragDetected(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { Dragboard db = listViewProductsFiles.startDragAndDrop(TransferMode.COPY); ClipboardContent content = new ClipboardContent(); content.putFiles(listViewProductsFiles.getSelectionModel().getSelectedItems()); db.setContent(content); event.consume(); } }); addPointcloudFilterComponent(); checkboxUsePointcloudFilter.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { hBoxPointCloudFiltering.setDisable(!newValue); ObservableList<Node> list = vBoxPointCloudFiltering.getChildren(); for (Node n : list) { if (n instanceof PointCloudFilterPaneComponent) { PointCloudFilterPaneComponent panel = (PointCloudFilterPaneComponent) n; panel.disableContent(!newValue); } } buttonAddPointcloudFilter.setDisable(!newValue); } }); //displayGThetaAllDistributions(); }
From source file:ECallCenter21.java
private void tabPaneMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabPaneMouseClicked if (tabPane.getSelectedIndex() == 8) { if (brandLabel.getForeground().getRGB() == aboutPanel.getBackground().getRGB()) { Thread aboutFadeThread = new Thread(new Runnable() { @Override/* w ww.j av a 2 s . co m*/ @SuppressWarnings({ "static-access" }) public void run() { Color textColor = aboutPanel.getBackground(); while (brandLabel.getForeground().getGreen() < 255) { textColor = new Color(textColor.getRed() + 1, textColor.getGreen() + 1, textColor.getBlue() + 1); brandLabel.setForeground(textColor); brandDescriptionLabel.setForeground(textColor); productLabel.setForeground(textColor); productDescriptionLabel.setForeground(textColor); copyrightLabel.setForeground(textColor); try { Thread.sleep(10); } catch (InterruptedException ex) { } } } }); aboutFadeThread.setName("aboutFadeThread"); aboutFadeThread.setDaemon(runThreadsAsDaemons); aboutFadeThread.start(); } } }
From source file:org.simmi.GeneSetHead.java
License:asdf
public String colorToRGBString(Color c) { int r = c.getRed(); int g = c.getGreen(); int b = c.getBlue(); return "rgba(" + r + "," + g + "," + b + ",0.0)"; }
From source file:org.simmi.GeneSetHead.java
License:asdf
public String colorToString(Color c) { int r = c.getRed(); int g = c.getGreen(); int b = c.getBlue(); String red = r < 16 ? 0 + Integer.toString(r, 16) : Integer.toString(r, 16); String green = g < 16 ? 0 + Integer.toString(g, 16) : Integer.toString(g, 16); String blue = b < 16 ? 0 + Integer.toString(b, 16) : Integer.toString(b, 16); return "#" + red + green + blue; }
From source file:ucar.unidata.idv.ui.ImageGenerator.java
/** * Process the image//from w ww .j av a 2 s .c o m * * @param image The image * @param filename File to write the image to * @param node Node to process * @param props Extra properties * @param viewManager The viewmanager this image came from * @param imageProps the image properties * * * @return The processed image * @throws Throwable On badness */ protected BufferedImage processImage(BufferedImage image, String filename, Element node, Hashtable props, ViewManager viewManager, Hashtable imageProps) throws Throwable { if (node == null) { return image; } if (props == null) { props = new Hashtable(); } if (viewManager != null) { Animation animation = viewManager.getAnimation(); props.put(PROP_ANIMATIONTIME, ""); if (animation != null) { if (animation.getAniValue() != null) { props.put(PROP_ANIMATIONTIME, animation.getAniValue()); } } } getProperties().putAll(props); NodeList elements = XmlUtil.getElements(node); Hashtable seenColorTable = new Hashtable(); for (int childIdx = 0; childIdx < elements.getLength(); childIdx++) { boolean shouldIterateChildren = true; BufferedImage newImage = null; int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); Element child = (Element) elements.item(childIdx); String tagName = child.getTagName(); if (tagName.equals(TAG_RESIZE)) { newImage = ImageUtils.toBufferedImage(resize(image, child)); } else if (tagName.equals(TAG_FILESET)) { //ignore } else if (tagName.equals(TAG_OUTPUT)) { processTagOutput(child); } else if (tagName.equals(TAG_DISPLAYLIST)) { if (viewManager != null) { newImage = ImageUtils.toBufferedImage(image, true); Graphics g = newImage.getGraphics(); String valign = applyMacros(child, ATTR_VALIGN, VALUE_BOTTOM); Font font = getFont(child); if (XmlUtil.hasAttribute(child, ATTR_MATTEBG)) { int height = viewManager.paintDisplayList((Graphics2D) g, null, imageWidth, imageHeight, valign.equals(VALUE_BOTTOM), null, font); int top = (valign.equals(VALUE_TOP) ? height : 0); int bottom = (valign.equals(VALUE_BOTTOM) ? height : 0); newImage = ImageUtils.matte(image, top, bottom, 0, 0, applyMacros(child, ATTR_MATTEBG, Color.white)); g = newImage.getGraphics(); imageHeight += height; } Color c = applyMacros(child, ATTR_COLOR, (Color) null); viewManager.paintDisplayList((Graphics2D) g, null, imageWidth, imageHeight, valign.equals(VALUE_BOTTOM), c, font); } } else if (tagName.equals(TAG_COLORBAR) || tagName.equals(TAG_KML_COLORBAR)) { // only do one colorbar if we are writing to kml Integer index = (Integer) props.get(PROP_IMAGEINDEX); if ((index != null) && (index.intValue() > 0) && tagName.equals(TAG_KML_COLORBAR)) { continue; } boolean showLines = applyMacros(child, ATTR_SHOWLINES, false); List<DisplayControlImpl> controls = (List<DisplayControlImpl>) ((viewManager != null) ? viewManager.getControls() : new ArrayList()); if (XmlUtil.hasAttribute(child, ATTR_DISPLAY)) { DisplayControlImpl display = ((controls.size() > 0) ? findDisplayControl(XmlUtil.getAttribute(child, ATTR_DISPLAY), controls) : findDisplayControl(child)); if (display == null) { error("Could not find display:" + XmlUtil.toString(node)); return null; } controls = Misc.newList(display); } int width = applyMacros(child, ATTR_WIDTH, 150); int height = applyMacros(child, ATTR_HEIGHT, 20); int ticks = applyMacros(child, ATTR_TICKMARKS, 0); double interval = applyMacros(child, ATTR_INTERVAL, -1.0); String valuesStr = applyMacros(child, ATTR_VALUES, (String) null); Color c = applyMacros(child, ATTR_COLOR, Color.black); Color lineColor = applyMacros(child, ATTR_LINECOLOR, c); Rectangle imageRect = new Rectangle(0, 0, imageWidth, imageHeight); Point pp = ImageUtils.parsePoint(applyMacros(child, ATTR_PLACE, "ll,10,-10"), imageRect); Point ap = ImageUtils.parsePoint(applyMacros(child, ATTR_ANCHOR, "ll"), new Rectangle(0, 0, width, height)); String orientation = applyMacros(child, ATTR_ORIENTATION, VALUE_BOTTOM); boolean vertical = orientation.equals(VALUE_RIGHT) || orientation.equals(VALUE_LEFT); int baseY = pp.y - ap.y + (vertical ? 0 : height); int baseX = pp.x - ap.x; List colorTables = new ArrayList(); List ranges = new ArrayList(); List units = new ArrayList(); boolean forKml = tagName.equals(TAG_KML_COLORBAR); for (int i = 0; i < controls.size(); i++) { DisplayControlImpl control = (DisplayControlImpl) controls.get(i); ColorTable colorTable = control.getColorTable(); if (colorTable == null) { continue; } Range range = control.getRangeForColorTable(); //only do unique color tables Object[] key = { colorTable, range }; if (seenColorTable.get(key) != null) { continue; } seenColorTable.put(key, key); colorTables.add(colorTable); ranges.add(range); units.add(control.getDisplayUnit()); } for (int i = 0; i < colorTables.size(); i++) { ColorTable colorTable = (ColorTable) colorTables.get(i); Range range = (Range) ranges.get(i); Unit unit = (Unit) units.get(i); Image imageToDrawIn; if (forKml) { if (vertical) { baseX = 0; baseY = 0; } else { baseX = 0; baseY = height; } int space = applyMacros(child, ATTR_SPACE, (vertical ? width : height)); imageToDrawIn = new BufferedImage(width + (vertical ? space : 0), height + (vertical ? 0 : space), BufferedImage.TYPE_INT_RGB); } else { imageToDrawIn = newImage = ImageUtils.toBufferedImage(image); } Graphics g = imageToDrawIn.getGraphics(); if (forKml) { Color bgColor = applyMacros(child, ATTR_BACKGROUND, Color.white); g.setColor(bgColor); g.fillRect(0, 0, imageToDrawIn.getWidth(null), imageToDrawIn.getHeight(null)); } boolean includeAlpha = applyMacros(child, ATTR_TRANSPARENCY, true); float[][] ctValues; if (includeAlpha) { ctValues = colorTable.getAlphaTable(); } else { ctValues = colorTable.getNonAlphaTable(); } ColorMap colorMap = new BaseRGBMap(ctValues); ColorPreview preview = new ColorPreview(colorMap, (vertical ? width : height)); if (vertical) { preview.setSize(new Dimension(height, width)); } else { preview.setSize(new Dimension(width, height)); } Image previewImage = ColorTableCanvas.getImage(colorTable, (vertical ? height : width), (vertical ? width : height), includeAlpha); if (vertical) { int imageType = includeAlpha ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB; BufferedImage tmpImage = new BufferedImage(width, height, imageType); Graphics2D tmpG = (Graphics2D) tmpImage.getGraphics(); tmpG.rotate(Math.toRadians(90.0)); tmpG.drawImage(previewImage, 0, 0 - width, null); previewImage = tmpImage; } if (forKml) { g.drawImage(previewImage, 0, 0, null); } else { g.drawImage(previewImage, baseX, (vertical ? baseY : baseY - height), null); } if (showLines) { g.setColor(lineColor); g.drawRect(baseX, (vertical ? baseY : baseY - height), width - 1, height - (vertical ? 1 : 0)); } setFont(g, child); FontMetrics fm = g.getFontMetrics(); List values = new ArrayList(); String suffixFrequency = XmlUtil.getAttribute(child, ATTR_SUFFIXFREQUENCY, XmlUtil.getAttribute(child, ATTR_SHOWUNIT, "false")).toLowerCase(); String unitDefault = (!suffixFrequency.equals("false")) ? " %unit%" : ""; String labelSuffix = applyMacros(child, ATTR_SUFFIX, unitDefault); if (unit != null) { labelSuffix = labelSuffix.replace("%unit%", "" + unit); } else { labelSuffix = labelSuffix.replace("%unit%", ""); } if (valuesStr != null) { double[] valueArray = Misc.parseDoubles(valuesStr, ","); for (int valueIdx = 0; valueIdx < valueArray.length; valueIdx++) { values.add(new Double(valueArray[valueIdx])); } } else if (ticks > 0) { int spacing = ((ticks == 1) ? 0 : (vertical ? height : width) / (ticks - 1)); for (int tickIdx = 0; tickIdx < ticks; tickIdx++) { double percent = ((ticks > 1) ? (double) tickIdx / (double) (ticks - 1) : 0.0); values.add(new Double(range.getValueOfPercent(percent))); } } else if (interval > 0) { double value = range.getMin(); double max = range.getMax(); while (value <= max) { values.add(new Double(value)); value += interval; } } for (int valueIdx = 0; valueIdx < values.size(); valueIdx++) { double value = ((Double) values.get(valueIdx)).doubleValue(); int x; int y; if (vertical) { if (orientation.equals(VALUE_RIGHT)) { x = baseX + width; } else { x = baseX; } y = baseY + (int) (range.getPercent(value) * height); if (y > baseY + height) { break; } } else { if (orientation.equals(VALUE_BOTTOM)) { y = baseY; } else { y = baseY - height; } if (range != null) { x = baseX + (int) (range.getPercent(value) * width); } else { x = baseX; } if (x > baseX + width) { break; } } String tickLabel = getIdv().getDisplayConventions().format(value); if (suffixFrequency.equals(VALUE_LAST) && (valueIdx == values.size() - 1)) { tickLabel += labelSuffix; } else if (suffixFrequency.equals(VALUE_FIRST) && (valueIdx == 0)) { tickLabel += labelSuffix; } else if (suffixFrequency.equals(VALUE_ALL) || suffixFrequency.equals("true")) { tickLabel += labelSuffix; } Rectangle2D rect = fm.getStringBounds(tickLabel, g); g.setColor(lineColor); if (orientation.equals(VALUE_RIGHT)) { g.drawLine(x + 1, y, x, y); if (showLines) { g.drawLine(x, y, x - width, y); } } else if (orientation.equals(VALUE_LEFT)) { g.drawLine(x - 1, y, x, y); if (showLines) { g.drawLine(x, y, x + width, y); } } else if (orientation.equals(VALUE_BOTTOM)) { g.drawLine(x, y + 1, x, y); if (showLines) { g.drawLine(x, y, x, y - height); } } else { g.drawLine(x, y - 1, x, y); if (showLines) { g.drawLine(x, y, x, y + height); } } g.setColor(c); if (orientation.equals(VALUE_RIGHT)) { int yLoc = y + (int) (rect.getHeight() / 2) - 2; if (forKml) { if (valueIdx == 0) { yLoc = y + (int) (rect.getHeight()) - 2; } else if (valueIdx == values.size() - 1) { yLoc = y - (int) (rect.getHeight()) + 6; } } g.drawString(tickLabel, x + 2, yLoc); } else if (orientation.equals(VALUE_LEFT)) { int xLoc = x - 2 - (int) rect.getWidth(); g.drawString(tickLabel, xLoc, y + (int) (rect.getHeight() / 2) - 2); } else if (orientation.equals(VALUE_BOTTOM)) { int xLoc = x - (int) (rect.getWidth() / 2); if (forKml) { if (valueIdx == 0) { xLoc = x + 2; } else if (valueIdx == values.size() - 1) { xLoc = x - (int) rect.getWidth() + 2; } } g.drawString(tickLabel, xLoc, y + (int) rect.getHeight() + 2); } else { g.drawString(tickLabel, x - (int) (rect.getWidth() / 2), y - 2); } } if (vertical) { baseX += width + 30; } else { baseY += height + 30; } if (forKml) { String tmpImageFile = applyMacros(child, ATTR_FILE, getIdv().getStore().getTmpFile("testcolorbar${viewindex}.png")); String template = "<ScreenOverlay><name>${kml.name}</name><Icon><href>${icon}</href></Icon>\n" + "<overlayXY x=\"${kml.overlayXY.x}\" y=\"${kml.overlayXY.y}\" xunits=\"${kml.overlayXY.xunits}\" yunits=\"${kml.overlayXY.yunits}\"/>\n" + "<screenXY x=\"${kml.screenXY.x}\" y=\"${kml.screenXY.y}\" xunits=\"${kml.screenXY.xunits}\" yunits=\"${kml.screenXY.yunits}\"/>\n" + "<size x=\"${kml.size.x}\" y=\"${kml.size.y}\" xunits=\"${kml.size.xunits}\" yunits=\"${kml.size.yunits}\"/>\n" + "</ScreenOverlay>\n"; String[] macros = { "kml.name", "kml.overlayXY.x", "kml.overlayXY.y", "kml.overlayXY.xunits", "kml.overlayXY.yunits", "kml.screenXY.x", "kml.screenXY.y", "kml.screenXY.xunits", "kml.screenXY.yunits", "kml.size.x", "kml.size.y", "kml.size.xunits", "kml.size.yunits" }; String[] macroValues = { "", "0", "1", "fraction", "fraction", "0", "1", "fraction", "fraction", "-1", "-1", "pixels", "pixels" }; for (int macroIdx = 0; macroIdx < macros.length; macroIdx++) { template = template.replace("${" + macros[macroIdx] + "}", applyMacros(child, macros[macroIdx], macroValues[macroIdx])); } template = template.replace("${icon}", IOUtil.getFileTail(tmpImageFile)); imageProps.put("kml", template); List kmlFiles = (List) imageProps.get("kmlfiles"); //TODO: Only do the first one for now if (kmlFiles == null) { kmlFiles = new ArrayList(); imageProps.put("kmlfiles", kmlFiles); } kmlFiles.add(tmpImageFile); // System.out.println(template); ImageUtils.writeImageToFile(imageToDrawIn, tmpImageFile); } } } else if (tagName.equals(TAG_TRANSPARENT) || tagName.equals(TAG_BGTRANSPARENT)) { Color c = null; if (tagName.equals(TAG_BGTRANSPARENT)) { c = viewManager.getBackground(); } else { c = applyMacros(child, ATTR_COLOR, (Color) null); } // System.err.println ("c:" + c); int[] redRange = { 0, 0 }; int[] greenRange = { 0, 0 }; int[] blueRange = { 0, 0 }; if (c != null) { // System.err.println("got color"); redRange[0] = redRange[1] = c.getRed(); greenRange[0] = greenRange[1] = c.getGreen(); blueRange[0] = blueRange[1] = c.getBlue(); } else { } newImage = ImageUtils.makeColorTransparent(image, redRange, greenRange, blueRange); } else if (tagName.equals(TAG_SHOW)) { JComponent contents = new JLabel(new ImageIcon(image)); String message = applyMacros(child, ATTR_MESSAGE, (String) null); if (message != null) { contents = GuiUtils.topCenter(new JLabel(message), contents); } if (!GuiUtils.askOkCancel("Continue?", contents)) { throw new MyQuitException(); } } else if (tagName.equals(TAG_MATTE)) { newImage = doMatte(image, child, 0); } else if (tagName.equals(TAG_LATLONLABELS)) { newImage = doLatLonLabels(child, viewManager, image, imageProps); } else if (tagName.equals(TAG_WRITE)) { ImageUtils.writeImageToFile(image, getImageFileName(applyMacros(child, ATTR_FILE))); } else if (tagName.equals(TAG_PUBLISH)) { getIdv().getPublishManager().publishIslImage(this, node, image); } else if (tagName.equals(TAG_CLIP)) { int[] ul; int[] lr; if (XmlUtil.hasAttribute(child, ATTR_DISPLAY)) { // System.err.println("Clipping from display"); DisplayControlImpl dc = findDisplayControl(child); if (dc == null) { throw new IllegalArgumentException("Could not find display:" + XmlUtil.toString(node)); } NavigatedDisplay display = (NavigatedDisplay) viewManager.getMaster(); MapProjection mapProjection = dc.getDataProjection(); java.awt.geom.Rectangle2D rect = mapProjection.getDefaultMapArea(); LatLonPoint llplr = mapProjection.getLatLon(new double[][] { { rect.getX() + rect.getWidth() }, { rect.getY() + rect.getHeight() } }); LatLonPoint llpul = mapProjection .getLatLon(new double[][] { { rect.getX() }, { rect.getY() } }); EarthLocation ulEl = new EarthLocationTuple(llpul, new Real(RealType.Altitude, 0)); EarthLocation lrEl = new EarthLocationTuple(llplr, new Real(RealType.Altitude, 0)); ul = display.getScreenCoordinates(display.getSpatialCoordinates(ulEl, null)); lr = display.getScreenCoordinates(display.getSpatialCoordinates(lrEl, null)); //System.err.println("ul:" + ulEl + " lr:" + lrEl); if (ul[0] > lr[0]) { int tmp = ul[0]; ul[0] = lr[0]; lr[0] = tmp; } if (ul[1] > lr[1]) { int tmp = ul[1]; ul[1] = lr[1]; lr[1] = tmp; } imageProps.put(ATTR_NORTH, new Double(ulEl.getLatitude().getValue())); imageProps.put(ATTR_WEST, new Double(ulEl.getLongitude().getValue())); imageProps.put(ATTR_SOUTH, new Double(lrEl.getLatitude().getValue())); imageProps.put(ATTR_EAST, new Double(lrEl.getLongitude().getValue())); } else if ((viewManager != null) && XmlUtil.hasAttribute(child, ATTR_NORTH)) { NavigatedDisplay display = (NavigatedDisplay) viewManager.getMaster(); EarthLocation el1 = DisplayControlImpl.makeEarthLocation(toDouble(child, ATTR_NORTH), toDouble(child, ATTR_WEST), 0); EarthLocation el2 = DisplayControlImpl.makeEarthLocation(toDouble(child, ATTR_SOUTH), toDouble(child, ATTR_EAST), 0); ul = display.getScreenCoordinates(display.getSpatialCoordinates(el1, null)); lr = display.getScreenCoordinates(display.getSpatialCoordinates(el2, null)); imageProps.put(ATTR_NORTH, new Double(el1.getLatitude().getValue())); imageProps.put(ATTR_WEST, new Double(el1.getLongitude().getValue())); imageProps.put(ATTR_SOUTH, new Double(el2.getLatitude().getValue())); imageProps.put(ATTR_EAST, new Double(el2.getLongitude().getValue())); } else if (XmlUtil.hasAttribute(child, ATTR_LEFT)) { ul = new int[] { (int) toDouble(child, ATTR_LEFT, imageWidth), (int) toDouble(child, ATTR_TOP, imageHeight) }; lr = new int[] { (int) toDouble(child, ATTR_RIGHT, imageWidth), (int) toDouble(child, ATTR_BOTTOM, imageHeight) }; } else if (viewManager != null) { //TODO: Clip on visad coordinates NavigatedDisplay display = (NavigatedDisplay) viewManager.getMaster(); ul = display.getScreenCoordinates(new double[] { -1, 1, 0 }); lr = display.getScreenCoordinates(new double[] { 1, -1, 0 }); int space = applyMacros(child, ATTR_SPACE, 0); int hspace = applyMacros(child, ATTR_HSPACE, space); int vspace = applyMacros(child, ATTR_VSPACE, space); ul[0] -= applyMacros(child, ATTR_SPACE_LEFT, hspace); ul[1] -= applyMacros(child, ATTR_SPACE_TOP, vspace); lr[0] += applyMacros(child, ATTR_SPACE_RIGHT, hspace); lr[1] += applyMacros(child, ATTR_SPACE_BOTTOM, vspace); } else { continue; } for (String attr : (List<String>) Misc.newList(ATTR_NORTH, ATTR_SOUTH, ATTR_EAST, ATTR_WEST)) { String kmlAttr = "kml." + attr; if (XmlUtil.hasAttribute(child, kmlAttr)) { imageProps.put(attr, new Double(applyMacros(child, kmlAttr, 0.0))); } } ul[0] = Math.max(0, ul[0]); ul[1] = Math.max(0, ul[1]); lr[0] = Math.min(lr[0], imageWidth); lr[1] = Math.min(lr[1], imageHeight); newImage = ImageUtils.clip(image, ul, lr); } else if (tagName.equals(TAG_SPLIT)) { shouldIterateChildren = false; int width = image.getWidth(null); int height = image.getHeight(null); int cols = applyMacros(child, ATTR_COLUMNS, 2); int rows = applyMacros(child, ATTR_ROWS, 2); String file = applyMacros(child, ATTR_FILE); int cnt = 0; int hSpace = width / cols; int vSpace = height / rows; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { pushProperties(); Hashtable myprops = new Hashtable(); putProperty("row", new Integer(row)); putProperty("column", new Integer(col)); putProperty("count", new Integer(++cnt)); String realFile = applyMacros(file, myprops); Image splitImage = image.getSubimage(hSpace * col, vSpace * row, hSpace, vSpace); processImage(ImageUtils.toBufferedImage(splitImage), realFile, child, myprops, viewManager, new Hashtable()); popProperties(); } } } else if (tagName.equals(TAG_THUMBNAIL)) { shouldIterateChildren = false; BufferedImage thumbImage = ImageUtils.toBufferedImage(resize(image, child)); String thumbFile = applyMacros(child, ATTR_FILE, (String) null); if (thumbFile == null) { thumbFile = IOUtil.stripExtension(filename) + "_thumb" + IOUtil.getFileExtension(filename); } processImage(thumbImage, thumbFile, child, null, viewManager, new Hashtable()); } else if (tagName.equals(TAG_KML)) { //NOOP } else if (tagName.equals(TAG_KMZFILE)) { //NOOP } else if (tagName.equals(TAG_OVERLAY)) { double transparency = applyMacros(child, ATTR_TRANSPARENCY, 0.0); Graphics2D g = image.createGraphics(); String imagePath = applyMacros(child, ATTR_IMAGE, (String) null); float scale = (float) applyMacros(child, ATTR_SCALE, 1.0); Rectangle imageRect = new Rectangle(0, 0, imageWidth, imageHeight); Point pp = ImageUtils.parsePoint(applyMacros(child, ATTR_PLACE, "lr,-10,-10"), imageRect); String text = applyMacros(child, ATTR_TEXT, (String) null); Color bg = applyMacros(child, ATTR_BACKGROUND, (Color) null); if (text != null) { double angle = Math.toRadians(applyMacros(child, ATTR_ANGLE, 0.0)); text = applyMacros(text); Color c = applyMacros(child, ATTR_COLOR, Color.white); if ((c != null) && (transparency > 0)) { c = new Color(c.getRed(), c.getGreen(), c.getBlue(), ImageUtils.toAlpha(transparency)); } //Color bg = applyMacros(child, ATTR_BACKGROUND, // (Color) null); if ((bg != null) && (transparency > 0)) { bg = new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), ImageUtils.toAlpha(transparency)); } setFont(g, child); FontMetrics fm = g.getFontMetrics(); Rectangle2D rect = fm.getStringBounds(text, g); int width = (int) rect.getWidth(); int height = (int) (rect.getHeight()); Point ap = ImageUtils.parsePoint(applyMacros(child, ATTR_ANCHOR, "lr,-10,-10"), new Rectangle(0, 0, width, height)); g.rotate(angle); if (bg != null) { g.setColor(bg); g.fillRect(pp.x - ap.x - 1, pp.y - ap.y - 1, (int) width + 2, (int) height + 2); } g.setColor(c); g.drawString(text, pp.x - ap.x, pp.y - ap.y + height); } if (imagePath != null) { Image overlay = ImageUtils.readImage(imagePath); if (overlay != null) { if (transparency > 0) { overlay = ImageUtils.setAlpha(overlay, transparency); } int width = overlay.getWidth(null); int height = overlay.getHeight(null); int scaledWidth = Math.round(width * scale); int scaledHeight = Math.round(height * scale); Image scaled = getScaledImage(overlay, scaledWidth, scaledHeight); Rectangle overlayRect = new Rectangle(0, 0, scaledWidth, scaledHeight); Point ap = ImageUtils.parsePoint(applyMacros(child, ATTR_ANCHOR, "lr,-10,-10"), overlayRect); g.drawImage(scaled, pp.x - ap.x, pp.y - ap.y, bg, null); } } } else { error("Unknown tag:" + tagName); } if (newImage != null) { String newFileName = applyMacros(child, ATTR_FILE, (String) null); if (shouldIterateChildren) { logger.trace("newFileName='{}' viewManager={} newImage={}", newFileName, viewManager, newImage); newImage = processImage(newImage, newFileName, child, null, viewManager, new Hashtable()); logger.trace("finished processImage; result: {}", newImage); } if (newFileName != null) { logger.trace("calling writeImageToFile..."); ImageUtils.writeImageToFile(newImage, getImageFileName(newFileName)); logger.trace("finished writeImageToFile"); debug("Writing image:" + newFileName); } if (!applyMacros(child, ATTR_COPY, false)) { image = newImage; } } } if (filename != null) { float quality = (float) applyMacros(node, ATTR_QUALITY, 1.0); List<String> fileToks = StringUtil.split(filename, ",", true, true); for (String file : fileToks) { file = getImageFileName(file); debug("Writing image:" + file); if (file.endsWith(FileManager.SUFFIX_KMZ) || file.endsWith(FileManager.SUFFIX_KML)) { GeoLocationInfo bounds = null; if (viewManager != null) { bounds = viewManager.getVisibleGeoBounds(); ImageSequenceGrabber.subsetBounds(bounds, imageProps); String tmpImageFile = getOutputPath(file); ImageUtils.writeImageToFile(image, tmpImageFile, quality); ImageWrapper imageWrapper = new ImageWrapper(tmpImageFile, null, bounds, null); imageWrapper.setProperties(imageProps); new ImageSequenceGrabber(file, getIdv(), this, node, (List<ImageWrapper>) Misc.newList(imageWrapper), null, 1); } } else { logger.trace("another writeImageToFile call..."); ImageUtils.writeImageToFile(image, file, quality); logger.trace("and it's done."); } } } logger.trace("result: {}", image); return image; }