source: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurRasterImg.java @ 68

Last change on this file since 68 was 68, checked in by cbipsl, 14 years ago

commit v1 eccad

  • Property svn:executable set to *
File size: 3.0 KB
Line 
1package org.medias.eccad.metier.generationRaster;
2
3import java.awt.Color;
4import java.awt.Graphics;
5import java.awt.image.BufferedImage;
6import java.io.FileOutputStream;
7import java.io.OutputStream;
8
9import javax.imageio.ImageIO;
10
11import org.medias.eccad.helpers.Donnees;
12import org.medias.eccad.helpers.LoggerPerso;
13import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
14import org.medias.eccad.metier.generationRaster.colorMap.ColorMappingJaune;
15import org.medias.eccad.modele.Zone;
16
17
18
19
20public class GenerateurRasterImg implements GenerateurMapRaster {
21        private float max;
22        private float min;
23        private Graphics image;
24        private BufferedImage buff_image;
25       
26        public void enregistrerRaster(String dossier, String fichier) {
27                try
28                {
29                        OutputStream fos = new FileOutputStream(dossier + "/" + fichier + ".png");
30                        ImageIO.write(buff_image, "png", fos);
31                }
32                catch(Exception e)
33                {
34                        e.printStackTrace();
35                }
36                LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin write");
37        }
38       
39        public void genereRaster(float[][] tab_valeur,  Zone zone, ColorMapping colormap) {
40                // TODO: aprÚs retourner un flow plutot
41                if (colormap == null)
42                        colormap = new ColorMappingJaune();
43                       
44                buff_image = new BufferedImage(Donnees.COLONNE, Donnees.LIGNE, BufferedImage.TYPE_INT_ARGB);
45                image = buff_image.getGraphics();
46                setMinMax(tab_valeur);
47
48                for (int i=0; i<Donnees.LIGNE; i++) {
49                        for (int j=0; j<Donnees.COLONNE; j++) {
50                                image.setColor(colormap.getCouleur(tab_valeur[i][j]));
51                                image.fillRect(j, Donnees.LIGNE-1-i, 1, 1);
52                        }
53                }
54               
55                if (zone != null) 
56                        dessineCadre(zone);
57        }
58       
59        private void dessineCadre(Zone zone) {
60                LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "generation cadre");
61                LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "zone :: " + zone);
62               
63                Double tmp = zone.getNorthbc();
64                int haut = (90-tmp.intValue())*2 - 3;
65                tmp = zone.getSouthbc();
66                int bas  = (90-tmp.intValue())*2 + 3;
67                tmp = zone.getWestbc();
68                int gauche = (tmp.intValue() + 180)*2 - 3;
69                tmp = zone.getEastbc();
70                int droite = (tmp.intValue() + 180)*2 + 3;
71               
72                LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "coord : " + haut + ":" + bas + ":" + droite  + ":" + gauche);
73               
74               
75                if (haut < 0) haut = 0;
76                if (bas >= 360) bas = 359;
77                if (gauche < 0) gauche = 0;
78                if (droite >= 720) droite = 719;
79               
80                if (haut == 0 && bas == 359 && gauche == 0 && droite == 719)
81                        return;
82               
83                image.setColor(new Color(255, 0, 0));
84                image.drawRect(gauche, haut, droite-gauche, bas-haut);
85                image.drawRect(gauche+1, haut+1, droite-gauche-2, bas-haut-2);
86               
87                LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin cadre");
88        }
89       
90        public void setMinMax(float[][] tab_valeur) {
91                // TODO faire quelque chose de plus propre avec une classe
92                max = Float.MIN_VALUE;
93                min = Float.MAX_VALUE;
94               
95                for (int i=0; i<Donnees.LIGNE; i++) {
96                        for (int j=0; j<Donnees.COLONNE; j++) {
97                                if (max < tab_valeur[i][j])
98                                        max = tab_valeur[i][j];
99                                if (min > tab_valeur[i][j])
100                                        min = tab_valeur[i][j];
101                        }
102                }
103        }
104}
Note: See TracBrowser for help on using the repository browser.