package org.medias.eccad.metier.generationRaster; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import org.medias.eccad.helpers.LoggerPerso; import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping; import org.medias.eccad.modele.ColorTab; import org.medias.eccad.modele.Legende; public class GenerateurLegendeImg implements GenerateurLegendRaster { private Graphics2D image; private BufferedImage buff_image; private int longueur; private int hauteur; private int nbr_case; private int larg_image; private int haut_image; private List tab_unique; private List valeur; public GenerateurLegendeImg() { larg_image = 200; haut_image = 360; } public void enregistreLegend(String fichier) { try { OutputStream fos = new FileOutputStream(fichier); ImageIO.write(buff_image, "png", fos); } catch(Exception e) { e.printStackTrace(); } LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, "fin write"); } public void genereLegendVertical(ColorMapping colormap, Legende texte_legende, String infoSup) { ColorTab colortab = colormap.getColorTable(); init(colortab, texte_legende.getLegend()); initcolor(); genereCarre(); genereText(texte_legende.getType()); genereCadre(); genereInfoSup(infoSup); } private void init(ColorTab colortab, List texte_legende) { valeur = texte_legende; tab_unique = getTabCouleurUnique(colortab); nbr_case = tab_unique.size(); longueur = 15; //hauteur = haut_image/nbr_case; hauteur = 20; haut_image = hauteur*nbr_case+3 + 15; //larg_image = calculer le nombre de chiffre buff_image = new BufferedImage(larg_image, haut_image, BufferedImage.TYPE_INT_ARGB); image = buff_image.createGraphics(); } private void initcolor() { image.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0f )); image.setColor(new Color(255,255,255)); image.fillRect(0, 0, larg_image, haut_image); image.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f )); } private void genereInfoSup(String info) { image.setColor(new Color (0,0,0)); image.drawString(info, 1 , haut_image-1); LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, info); } private void genereCadre() { image.setColor(new Color(0, 0, 0)); image.drawRect(0, 0, longueur + 1, hauteur*nbr_case+1); } private void genereCarre() { for (int i=0; i valeur.size()+1) return; if (type_legend == Legende.TYPE_VALUE) for (int i=0; i getTabCouleurUnique(ColorTab colortab) { List list_unique = new ArrayList(); List valeur_unique = new ArrayList(); if (valeur.size() > 0) { list_unique.add(colortab.getColor(0)); valeur_unique.add(valeur.get(0)); } for (int i=0; i getValeur() { return valeur; } public void setValeur(List valeur) { this.valeur = valeur; } }