Subversion Repositories eFlore/Archives.chorologie

Rev

Rev 12 | Rev 33 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 12 Rev 18
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.3                                                                                    |
4
// | PHP version 4.3                                                                                    |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of Cartographie.                                                                   |
8
// | This file is part of Cartographie.                                                                   |
9
// |                                                                                                      |
9
// |                                                                                                      |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
11
// | it under the terms of the GNU General Public License as published by                                 |
11
// | it under the terms of the GNU General Public License as published by                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: carto_carte.class.php,v 1.3 2005-02-22 19:35:08 jpm Exp $
24
// CVS : $Id: carto_carte.class.php,v 1.4 2005-02-23 17:29:38 jpm Exp $
25
/**
25
/**
26
* Classe Carto_Carte.
26
* Classe Carto_Carte.
27
*
27
*
28
* Calsse permettant de réaliser des cartes.
28
* Calsse permettant de réaliser des cartes.
29
*
29
*
30
*@package Cartographie
30
*@package Cartographie
31
//Auteur original :
31
//Auteur original :
32
*@author        Nicolas MATHIEU
32
*@author        Nicolas MATHIEU
33
//Autres auteurs :
33
//Autres auteurs :
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
35
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
35
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
36
*@copyright     Tela-Botanica 2000-2004
36
*@copyright     Tela-Botanica 2000-2004
37
*@version       $Revision: 1.3 $ $Date: 2005-02-22 19:35:08 $
37
*@version       $Revision: 1.4 $ $Date: 2005-02-23 17:29:38 $
38
// +------------------------------------------------------------------------------------------------------+
38
// +------------------------------------------------------------------------------------------------------+
39
*/
39
*/
40
 
40
 
41
// +------------------------------------------------------------------------------------------------------+
41
// +------------------------------------------------------------------------------------------------------+
42
// |                                            ENTETE du PROGRAMME                                       |
42
// |                                            ENTETE du PROGRAMME                                       |
43
// +------------------------------------------------------------------------------------------------------+
43
// +------------------------------------------------------------------------------------------------------+
44
require 'carto_action.class.php';
44
require 'carto_action.class.php';
45
require 'carto_couleur.class.php';
45
require 'carto_couleur.class.php';
46
require 'carto_historique.class.php';
46
require 'carto_historique.class.php';
47
 
47
 
48
// +------------------------------------------------------------------------------------------------------+
48
// +------------------------------------------------------------------------------------------------------+
49
// |                                            CORPS du PROGRAMME                                        |
49
// |                                            CORPS du PROGRAMME                                        |
50
// +------------------------------------------------------------------------------------------------------+
50
// +------------------------------------------------------------------------------------------------------+
51
/**
51
/**
52
* Classe Carto_Carte() - Classe principale de la cartographie.
52
* Classe Carto_Carte() - Classe principale de la cartographie.
53
*
53
*
54
* La classe Carto_Carte permet de travailler les fichiers images des cartes.
54
* La classe Carto_Carte permet de travailler les fichiers images des cartes.
55
*/
55
*/
56
class Carto_Carte
56
class Carto_Carte
57
{
57
{
58
    // +--------------------------------------------------------------------------------------------------+
58
    // +--------------------------------------------------------------------------------------------------+
59
    //                                      LES ATTRIBUTS DE LA CLASSE                                    
59
    //                                      LES ATTRIBUTS DE LA CLASSE                                    
60
    var $id;
60
    var $id;
61
    var $_id_zone_geo_carte;
61
    var $_id_zone_geo_carte;
62
    var $nom;
62
    var $nom;
63
    var $masque;
63
    var $masque;
64
    var $fond;
64
    var $fond;
65
    var $chemin;
65
    var $chemin;
66
    var $image;
66
    var $image;
67
    var $fils;
67
    var $fils;
68
    var $url;
68
    var $url;
69
    var $_info_table_zg;
69
    var $_info_table_zg;
70
    var $filiation;
70
    var $filiation;
71
    var $image_x;
71
    var $image_x;
72
    var $image_y;
72
    var $image_y;
73
    var $historique_cartes;
73
    var $historique_cartes;
74
    var $liste_zone_carte;
74
    var $liste_zone_carte;
75
    var $historique;
75
    var $historique;
76
    // La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
76
    // La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
77
    // intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
77
    // intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
78
    //ecart entre les deux plus grandes valeurs.
78
    //ecart entre les deux plus grandes valeurs.
79
    var $_zeroR;
79
    var $_zeroR;
80
    var $_zeroV;
80
    var $_zeroV;
81
    var $_zeroB;
81
    var $_zeroB;
82
    var $_miniR;
82
    var $_miniR;
83
    var $_miniV;
83
    var $_miniV;
84
    var $_miniB;
84
    var $_miniB;
85
    var $_mediumR;
85
    var $_mediumR;
86
    var $_mediumV;
86
    var $_mediumV;
87
    var $_mediumB;
87
    var $_mediumB;
88
    var $_maxiR;
88
    var $_maxiR;
89
    var $_maxiV;
89
    var $_maxiV;
90
    var $_maxiB;
90
    var $_maxiB;
91
    //Le type de formule mathématique permettant de colorier la carte
91
    //Le type de formule mathématique permettant de colorier la carte
92
    var $_formule_coloriage;
92
    var $_formule_coloriage;
93
    //L'action à réaliser
93
    //L'action à réaliser
94
    var $_action;
94
    var $_action;
95
    
95
    
96
    // +--------------------------------------------------------------------------------------------------+
96
    // +--------------------------------------------------------------------------------------------------+
97
    // Conifugration de la carto
97
    // Conifugration de la carto
98
    var $_maxiB;
98
    var $_maxiB;
99
    
99
    
100
    
100
    
101
    // +--------------------------------------------------------------------------------------------------+
101
    // +--------------------------------------------------------------------------------------------------+
102
    //                                     LE CONSTRUCTEUR DE LA CLASSE                                    
102
    //                                     LE CONSTRUCTEUR DE LA CLASSE                                    
103
    function Carto_Carte($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table_zg, $info_table_action) 
103
    function Carto_Carte($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table_zg, $info_table_action) 
104
    {
104
    {
105
        $this->id = $id;
105
        $this->id = $id;
106
        $this->_id_zone_geo_carte = $id_zone_geo_carte;
106
        $this->_id_zone_geo_carte = $id_zone_geo_carte;
107
        $this->nom = $nom;
107
        $this->nom = $nom;
108
        $this->masque = $chemin.$masque;
108
        $this->masque = $chemin.$masque;
109
        $this->fond = $chemin.$fond;
109
        $this->fond = $chemin.$fond;
110
        $this->chemin = $chemin;
110
        $this->chemin = $chemin;
111
        $this->_info_table_zg = $info_table_zg;
111
        $this->_info_table_zg = $info_table_zg;
112
        
112
        
113
        $this->_action = new Carto_Action($info_table_zg, $info_table_action);
113
        $this->_action = new Carto_Action($info_table_zg, $info_table_action);
114
        $this->fils = array();
114
        $this->fils = array();
115
        $this->filiation = $id;
115
        $this->filiation = $id;
116
        $this->historique_cartes = '';
116
        $this->historique_cartes = '';
117
        $this->liste_zone_carte = '';
117
        $this->liste_zone_carte = '';
118
        $this->definirCouleurs();
118
        $this->definirCouleurs();
119
        $this->definirFormuleColoriage();
119
        $this->definirFormuleColoriage();
120
    }
120
    }
121
    
121
    
122
    // +--------------------------------------------------------------------------------------------------+
122
    // +--------------------------------------------------------------------------------------------------+
123
    //                                       LES METHODES PUBLIQUES                                       
123
    //                                       LES METHODES PUBLIQUES                                       
124
    function definirCouleurs (
124
    function definirCouleurs (
125
        $couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
125
        $couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
126
        $couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
126
        $couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
127
        $couleur_medium_R  = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
127
        $couleur_medium_R  = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
128
        $couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0') 
128
        $couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0') 
129
    {
129
    {
130
        $this->_zeroR = $couleur_zero_R;
130
        $this->_zeroR = $couleur_zero_R;
131
        $this->_zeroV = $couleur_zero_V;
131
        $this->_zeroV = $couleur_zero_V;
132
        $this->_zeroB = $couleur_zero_B;
132
        $this->_zeroB = $couleur_zero_B;
133
        $this->_miniR = $couleur_mini_R;
133
        $this->_miniR = $couleur_mini_R;
134
        $this->_miniV = $couleur_mini_V;
134
        $this->_miniV = $couleur_mini_V;
135
        $this->_miniB = $couleur_mini_B;
135
        $this->_miniB = $couleur_mini_B;
136
        $this->_mediumR = $couleur_medium_R;
136
        $this->_mediumR = $couleur_medium_R;
137
        $this->_mediumV = $couleur_medium_V;
137
        $this->_mediumV = $couleur_medium_V;
138
        $this->_mediumB = $couleur_medium_B;
138
        $this->_mediumB = $couleur_medium_B;
139
        $this->_maxiR = $couleur_maxi_R;
139
        $this->_maxiR = $couleur_maxi_R;
140
        $this->_maxiV = $couleur_maxi_V;
140
        $this->_maxiV = $couleur_maxi_V;
141
        $this->_maxiB = $couleur_maxi_B;
141
        $this->_maxiB = $couleur_maxi_B;
142
    }
142
    }
143
    
143
    
144
    function definirFormuleColoriage ($nomFormuleColoriage = 'defaut') 
144
    function definirFormuleColoriage ($nomFormuleColoriage = 'defaut') 
145
    {
145
    {
146
        $this->_formule_coloriage = $nomFormuleColoriage;
146
        $this->_formule_coloriage = $nomFormuleColoriage;
147
    }
147
    }
148
    
148
    
149
    //********************************************************************************************************
149
    //********************************************************************************************************
150
    // La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
150
    // La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
151
    //*********************************************************************************************************
151
    //*********************************************************************************************************
152
    
152
    
153
    function donnerImageSimple($objet) 
153
    function donnerImageSimple($objet) 
154
    {
154
    {
155
        $nom_fichier_image = $this->_donnerIdUnique();
155
        $nom_fichier_image = $this->_donnerIdUnique();
156
        $objet->_lancerColoriage('', $nom_fichier_image);
156
        $objet->_lancerColoriage('', $nom_fichier_image);
157
        $retour = '<img src="cartographie/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="Carte" />';
157
        $retour = '<img src="cartographie/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="Carte" />';
158
        return $retour;
158
        return $retour;
159
    }
159
    }
160
    
160
    
161
    //********************************************************************************************************
161
    //********************************************************************************************************
162
    // La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
162
    // La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
163
    // Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
163
    // Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
164
    // On a ainsi une inclusion d'objets les uns dans les autres.
164
    // On a ainsi une inclusion d'objets les uns dans les autres.
165
    //*********************************************************************************************************
165
    //*********************************************************************************************************
166
    
166
    
167
    function ajouterFils($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table) 
167
    function ajouterFils($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table) 
168
    {
168
    {
169
        $this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
169
        $this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
170
        //Si on ajoute à la carte du monde comme fils celle de l'europe, alors
170
        //Si on ajoute à la carte du monde comme fils celle de l'europe, alors
171
        //on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
171
        //on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
172
        $this->fils[$id]->filiation = $this->filiation.'*'.$id;
172
        $this->fils[$id]->filiation = $this->filiation.'*'.$id;
173
        $this->fils[$id]->url = $this->url;
173
        $this->fils[$id]->url = $this->url;
174
        //Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
174
        //Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
175
        //dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
175
        //dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
176
        $this->fils[$id]->nom = $this->nom.'*'.$nom;
176
        $this->fils[$id]->nom = $this->nom.'*'.$nom;
177
        $this->fils[$id]->historique_cartes = $this->historique_cartes;
177
        $this->fils[$id]->historique_cartes = $this->historique_cartes;
178
    }
178
    }
179
    
179
    
180
    //*********************************************************************************************************	
180
    //*********************************************************************************************************	
181
    // La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en 
181
    // La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en 
182
    // fonction de l'action de l'utilisateur.
182
    // fonction de l'action de l'utilisateur.
183
    // Trois cas se distinguent :
183
    // Trois cas se distinguent :
184
    //      -soit l'utilisateur a clique sur un point de la carte.
184
    //      -soit l'utilisateur a clique sur un point de la carte.
185
    //      -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
185
    //      -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
186
    //      -soit il a sélectionné une zone géographique dans la liste déroulante.
186
    //      -soit il a sélectionné une zone géographique dans la liste déroulante.
187
    // Elle renvoit a la fin: 
187
    // Elle renvoit a la fin: 
188
    //      -soit une nouvelle carte coloriée
188
    //      -soit une nouvelle carte coloriée
189
    //      -soit false.
189
    //      -soit false.
190
    //**********************************************************************************************************
190
    //**********************************************************************************************************
191
    function donnerFormulaireImage ()
191
    function donnerFormulaireImage ()
192
    {
192
    {
193
        //global $GS_GLOBAL;
193
        //global $GS_GLOBAL;
194
        $res = '';
194
        $res = '';
195
        
195
        
196
        // Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
196
        // Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
197
        // si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
197
        // si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
198
        // La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
198
        // La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
199
        // Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application  
199
        // Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application  
200
        // utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
200
        // utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
201
        // L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
201
        // L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
202
        // informations founit par une table de la base de données.
202
        // informations founit par une table de la base de données.
203
        // La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
203
        // La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
204
        // des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
204
        // des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
205
        // de la zone et l'action à entreprendre pour la zone conssidérée.
205
        // de la zone et l'action à entreprendre pour la zone conssidérée.
206
        // La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître 
206
        // La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître 
207
        // en fonction des coordonnées du clic l'action à entreprendre. 
207
        // en fonction des coordonnées du clic l'action à entreprendre. 
208
        
208
        
209
        
209
        
210
        // Quoi qu'il arrive, on ouvre la balise formulaire
210
        // Quoi qu'il arrive, on ouvre la balise formulaire
211
        $res = '<form action="'.$this->url.'" method="post">'."\n";
211
        $res = '<form id="cartographie" action="'.$this->url.'" method="post">'."\n";
212
        $res .= '<p>';
212
        $res .= '<p>';
213
        if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
213
        if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
214
            // on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
214
            // on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
215
            //a charger a la place de l'objet de plus haut niveau 
215
            //a charger a la place de l'objet de plus haut niveau 
216
            
216
            
217
            $var_session_retour = $_SESSION['carte'];
217
            $var_session_retour = $_SESSION['carte'];
218
            
218
            
219
            if ($var_session_retour) {
219
            if ($var_session_retour) {
220
                $image_x = $this->image_x;
220
                $image_x = $this->image_x;
221
                $image_y = $this->image_y;
221
                $image_y = $this->image_y;
222
                $liste_zone_carte = $this->liste_zone_carte;
222
                $liste_zone_carte = $this->liste_zone_carte;
223
                // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
223
                // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
224
 
224
 
225
                $historique_cartes = explode('*',$this->historique_cartes);
225
                $historique_cartes = explode('*',$this->historique_cartes);
226
                foreach ($historique_cartes as $key => $value) {
226
                foreach ($historique_cartes as $key => $value) {
227
                    if ($key != 0) {
227
                    if ($key != 0) {
228
                        $this = $this->fils[$value];
228
                        $this = $this->fils[$value];
229
                    }
229
                    }
230
                }
230
                }
231
                $this->image_x = $image_x;
231
                $this->image_x = $image_x;
232
                $this->image_y = $image_y;
232
                $this->image_y = $image_y;
233
                $this->liste_zone_carte = $liste_zone_carte;
233
                $this->liste_zone_carte = $liste_zone_carte;
234
                unset($_SESSION['carte']) ;
234
                unset($_SESSION['carte']) ;
235
            }
235
            }
236
            
236
            
237
            // on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
237
            // on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
238
           
238
           
239
            $action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
239
            $action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
240
            
240
            
241
            // Nous distinguons 2 cas :
241
            // Nous distinguons 2 cas :
242
            //le cas ou il faut afficher une nouvelle carte ... :
242
            //le cas ou il faut afficher une nouvelle carte ... :
243
            if ($action['type_action'] == 'Aller_a') {
243
            if ($action['type_action'] == 'Aller_a') {
244
                
244
                
245
                $id_carte_destination = $action['id_carte_destination'] ;
245
                $id_carte_destination = $action['id_carte_destination'] ;
246
                $this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
246
                $this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
247
                $res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
247
                $res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
248
                $res .= '<input type="image" src="';
248
                $res .= '<input type="image" src="';
249
                $id_image = $this->_donnerIdUnique();
249
                $id_image = $this->_donnerIdUnique();
250
                $this->fils[$id_carte_destination]->_lancerColoriage($id_image);
250
                $this->fils[$id_carte_destination]->_lancerColoriage($id_image);
251
                $obj = serialize($this->fils[$id_carte_destination]);
251
                $obj = serialize($this->fils[$id_carte_destination]);
252
                $_SESSION['carte'] = $obj;
252
                $_SESSION['carte'] = $obj;
253
                $this->historique = $this->fils[$id_carte_destination]->filiation;
253
                $this->historique = $this->fils[$id_carte_destination]->filiation;
254
                $this->id = $this->fils[$id_carte_destination]->id;
254
                $this->id = $this->fils[$id_carte_destination]->id;
255
                $this->nom = $this->fils[$id_carte_destination]->nom;
255
                $this->nom = $this->fils[$id_carte_destination]->nom;
256
            }
256
            }
257
            //Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
257
            //Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
258
            //soit la même que précédement.
258
            //soit la même que précédement.
259
            //Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
259
            //Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
260
            //Là, on recharge la carte précédente :
260
            //Là, on recharge la carte précédente :
261
            elseif ($action['type_action'] == 'Recharger') {
261
            elseif ($action['type_action'] == 'Recharger') {
262
                $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
262
                $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
263
                $res .= '<input type="image" src="';
263
                $res .= '<input type="image" src="';
264
                $id_image = $this->_donnerIdUnique();
264
                $id_image = $this->_donnerIdUnique();
265
                $this->_lancerColoriage($id_image);
265
                $this->_lancerColoriage($id_image);
266
                $obj = serialize($this);
266
                $obj = serialize($this);
267
                $_SESSION['carte'] = $obj ;
267
                $_SESSION['carte'] = $obj ;
268
                $this->historique = $this->filiation;
268
                $this->historique = $this->filiation;
269
            }
269
            }
270
            // ... et le cas ou il faut lancer le dernier niveau
270
            // ... et le cas ou il faut lancer le dernier niveau
271
            else if ($action['type_action'] == 'Stop') {
271
            else if ($action['type_action'] == 'Stop') {
272
                unset ($_SESSION['carte']) ;
272
                unset ($_SESSION['carte']) ;
273
                $this->historique = $this->filiation.'*'.$action['id_zone_geo'];
273
                $this->historique = $this->filiation.'*'.$action['id_zone_geo'];
274
                $obj = serialize($this);
274
                $obj = serialize($this);
275
                $_SESSION['carte'] = $obj ;
275
                $_SESSION['carte'] = $obj ;
276
                return false;
276
                return false;
277
            }
277
            }
278
        }
278
        }
279
        elseif ($this->liste_zone_carte != '') {
279
        elseif ($this->liste_zone_carte != '') {
280
            $liste_zone_carte = $this->liste_zone_carte;
280
            $liste_zone_carte = $this->liste_zone_carte;
281
            $historique_cartes = explode('*',$this->historique_cartes);
281
            $historique_cartes = explode('*',$this->historique_cartes);
282
            foreach ($historique_cartes as $key => $value) {
282
            foreach ($historique_cartes as $key => $value) {
283
                if ($key != 0) {
283
                if ($key != 0) {
284
                    $this = $this->fils[$value];
284
                    $this = $this->fils[$value];
285
                }
285
                }
286
            }
286
            }
287
            $this->liste_zone_carte = $liste_zone_carte;
287
            $this->liste_zone_carte = $liste_zone_carte;
288
            
288
            
289
            $res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
289
            $res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
290
            $res .= '<input type="image" src="';
290
            $res .= '<input type="image" src="';
291
            $id_image = $this->_donnerIdUnique();
291
            $id_image = $this->_donnerIdUnique();
292
            $this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
292
            $this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
293
            $this->historique = $this->historique_cartes;
293
            $this->historique = $this->historique_cartes;
294
            $obj = serialize($this);
294
            $obj = serialize($this);
295
            $_SESSION['carte'] = $obj ;
295
            $_SESSION['carte'] = $obj ;
296
        }
296
        }
297
        // On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument 
297
        // On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument 
298
        // qui nous donne la "genealogie" de la carte que l'on doit afficher 
298
        // qui nous donne la "genealogie" de la carte que l'on doit afficher 
299
        else if ($this->historique_cartes) {
299
        else if ($this->historique_cartes) {
300
            // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
300
            // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
301
            $historique_cartes = explode('*',$this->historique_cartes);
301
            $historique_cartes = explode('*',$this->historique_cartes);
302
            foreach ($historique_cartes as $key => $value) {
302
            foreach ($historique_cartes as $key => $value) {
303
                if ($key != 0) {
303
                if ($key != 0) {
304
                    $this = $this->fils[$value];
304
                    $this = $this->fils[$value];
305
                }
305
                }
306
            }
306
            }
307
            // une foit que l'on a charge le bon objet nous le colorions 
307
            // une foit que l'on a charge le bon objet nous le colorions 
308
            $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
308
            $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
309
            
309
            
310
            $res .= '<input type="image" src="';
310
            $res .= '<input type="image" src="';
311
            $id_image = $this->_donnerIdUnique();
311
            $id_image = $this->_donnerIdUnique();
312
            $this->_lancerColoriage($id_image);
312
            $this->_lancerColoriage($id_image);
313
            $this->historique = $this->historique_cartes;
313
            $this->historique = $this->historique_cartes;
314
            $obj = serialize($this);
314
            $obj = serialize($this);
315
            $_SESSION['carte'] = $obj ;
315
            $_SESSION['carte'] = $obj ;
316
        }
316
        }
317
        // Enfin si on ne vient pas d'une carte ou d'un lien c'est que l'on vient de l'onglet carto du menu
317
        // Enfin si on ne vient pas d'une carte ou d'un lien c'est que l'on vient de l'onglet carto du menu
318
        // et on affiche alors la premiere carte
318
        // et on affiche alors la premiere carte
319
        else {
319
        else {
320
            unset ($_SESSION['carte']) ;
320
            unset ($_SESSION['carte']) ;
321
            $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
321
            $res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
322
            
322
            
323
            $res .= '<input type="image" src="';
323
            $res .= '<input type="image" src="';
324
            $id_image = $this->_donnerIdUnique();
324
            $id_image = $this->_donnerIdUnique();
325
            $this->_lancerColoriage($id_image);
325
            $this->_lancerColoriage($id_image);
326
            $this->historique = $this->id;
326
            $this->historique = $this->id;
327
            $obj = serialize($this);
327
            $obj = serialize($this);
328
            
328
            
329
            $_SESSION['carte'] = $obj;
329
            $_SESSION['carte'] = $obj;
330
        }
330
        }
331
        $_SESSION['chemin'] = CAR_CHEMIN_TMP;
331
        $_SESSION['chemin'] = CAR_CHEMIN_TMP;
332
        $_SESSION['fichier'] = $this->id.$id_image;
332
        $_SESSION['fichier'] = $this->id.$id_image;
333
        $res .= CAR_CHEMIN_CARTE.'"';
333
        $res .= CAR_CHEMIN_CARTE.'"';
334
        $res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n";
334
        $res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n";
335
        $res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" />'."\n";
335
        $res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" />'."\n";
336
        $res .= '</p>'."\n";
336
        $res .= '</p>'."\n";
337
        $res .= '</form>'."\n";
337
        $res .= '</form>'."\n";
338
        return $res;
338
        return $res;
339
    }
339
    }
340
    
340
    
341
    // +--------------------------------------------------------------------------------------------------+
341
    // +--------------------------------------------------------------------------------------------------+
342
    //                                       LES METHODES PRIVÉES                                         
342
    //                                       LES METHODES PRIVÉES                                         
343
    function _donnerListeZoneCarte($zone_par_defaut = '')
343
    function _donnerListeZoneCarte($zone_par_defaut = '')
344
    {
344
    {
345
        $retour = '';
345
        $retour = '';
346
        
346
        
347
        $requete =
347
        $requete =
348
                    'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
348
                    'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
349
                    ' FROM '.$this->_info_table_zg['nom_table_zone'];
349
                    ' FROM '.$this->_info_table_zg['nom_table_zone'];
350
        if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
350
        if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
351
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
351
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
352
                $requete .=
352
                $requete .=
353
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
353
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
354
            }
354
            }
355
            else{
355
            else{
356
                $requete .=
356
                $requete .=
357
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
357
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
358
            }
358
            }
359
        }
359
        }
360
        $requete .=
360
        $requete .=
361
                    ' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
361
                    ' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
362
        
362
        
363
        $resultat = mysql_query ($requete) or die('
363
        $resultat = mysql_query ($requete) or die('
364
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
364
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
365
            '<b>Requete : </b>'.$requete.
365
            '<b>Requete : </b>'.$requete.
366
            '<br/><br/><b>Erreur : </b>'.mysql_error());
366
            '<br/><br/><b>Erreur : </b>'.mysql_error());
367
        
367
        
368
        $i=0;
368
        $i=0;
369
        
369
        
370
        $retour = '<select name="liste_zone_carte" onchange="javascript:this.form.submit();">'."\n";
370
        $retour = '<select id="liste_zone_carte" name="liste_zone_carte" onchange="javascript:this.form.submit();">'."\n";
371
        $retour .= '<option value="">Visualiser une zone :</option>'."\n";
371
        $retour .= '<option value="">Visualiser une zone :</option>'."\n";
372
        
372
        
373
        $nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
373
        $nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
374
        $nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
374
        $nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
375
        
375
        
376
        while ($ligne = mysql_fetch_object ($resultat)) {
376
        while ($ligne = mysql_fetch_object ($resultat)) {
377
            if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
377
            if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
378
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
378
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
379
            }
379
            }
380
            else {
380
            else {
381
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
381
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
382
            }
382
            }
383
            $i++;
383
            $i++;
384
        }
384
        }
385
        
385
        
386
        $retour .= '</select>'."\n";
386
        $retour .= '</select>'."\n";
387
        
387
        
388
        return $retour;
388
        return $retour;
389
    }
389
    }
390
    //==============================================================================
390
    //==============================================================================
391
    // METHODE _lancerColoriage() 
391
    // METHODE _lancerColoriage() 
392
    // 
392
    // 
393
    // Elle lance le coloriage de l'image.
393
    // Elle lance le coloriage de l'image.
394
    // Elle est lancée toute seule par la méthode donnerFormulaireImage().
394
    // Elle est lancée toute seule par la méthode donnerFormulaireImage().
395
    // Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
395
    // Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
396
    //==============================================================================
396
    //==============================================================================
397
    
397
    
398
    function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '') 
398
    function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '') 
399
    {
399
    {
400
        $this->image = imagecreatefrompng($this->fond);
400
        $this->image = imagecreatefrompng($this->fond);
401
        $this->_colorierImage ($this->image, $this->_info_table_zg['nom_table_zone'], $this->_info_table_zg['nom_chp_id_zone'], $this->_info_table_zg['nom_chp_rouge'],
401
        $this->_colorierImage ($this->image, $this->_info_table_zg['nom_table_zone'], $this->_info_table_zg['nom_chp_id_zone'], $this->_info_table_zg['nom_chp_rouge'],
402
                                        $this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
402
                                        $this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
403
                                        $this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
403
                                        $this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
404
        if ($nom_fichier != '') {
404
        if ($nom_fichier != '') {
405
            imagepng(&$this->image, CAR_CHEMIN_TMP.$nom_fichier.'.png');
405
            imagepng(&$this->image, CAR_CHEMIN_TMP.$nom_fichier.'.png');
406
            //$this->image = imagepng(&$this->image);
406
            //$this->image = imagepng(&$this->image);
407
        }
407
        }
408
        else {
408
        else {
409
            imagepng(&$this->image, CAR_CHEMIN_TMP.$this->id.$id_image.'.png');
409
            imagepng(&$this->image, CAR_CHEMIN_TMP.$this->id.$id_image.'.png');
410
            //imagepng(&$this->image);
410
            //imagepng(&$this->image);
411
        }
411
        }
412
    }
412
    }
413
    
413
    
414
    //==============================================================================
414
    //==============================================================================
415
    // METHODE _colorierImage() 
415
    // METHODE _colorierImage() 
416
    // 
416
    // 
417
    // Elle réalise le coloriage de l'image.
417
    // Elle réalise le coloriage de l'image.
418
    //==============================================================================
418
    //==============================================================================
419
    
419
    
420
    function _colorierImage (&$image_fond, $table_zone_geo, $chp_id_zone_couleur, $chp_rouge, $chp_vert, $chp_bleu, $chp_zone_sup, $tableau_valeurs_zone, $id_zone_a_reperer) 
420
    function _colorierImage (&$image_fond, $table_zone_geo, $chp_id_zone_couleur, $chp_rouge, $chp_vert, $chp_bleu, $chp_zone_sup, $tableau_valeurs_zone, $id_zone_a_reperer) 
421
    {
421
    {
422
        //----------------------------------------------------------------------------
422
        //----------------------------------------------------------------------------
423
        // Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans 
423
        // Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans 
424
        //un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
424
        //un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
425
        
425
        
426
        $requete_01 =
426
        $requete_01 =
427
                    'SELECT *'.
427
                    'SELECT *'.
428
                    ' FROM '.$table_zone_geo;
428
                    ' FROM '.$table_zone_geo;
429
        if ($chp_zone_sup != ''){
429
        if ($chp_zone_sup != ''){
430
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
430
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
431
                $requete_01 .=
431
                $requete_01 .=
432
                    ' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
432
                    ' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
433
            }
433
            }
434
            else{
434
            else{
435
                $requete_01 .=
435
                $requete_01 .=
436
                    ' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
436
                    ' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
437
            }
437
            }
438
        }
438
        }
439
        $resultat_01 = mysql_query ($requete_01) or die('
439
        $resultat_01 = mysql_query ($requete_01) or die('
440
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
440
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
441
            '<b>Requete : </b>'.$requete_01.
441
            '<b>Requete : </b>'.$requete_01.
442
            '<br/><br/><b>Erreur : </b>'.mysql_error());
442
            '<br/><br/><b>Erreur : </b>'.mysql_error());
443
        $i=0;
443
        $i=0;
444
        $attachments = array();
444
        $attachments = array();
445
        while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
445
        while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
446
            $attachments[$i] = new Carto_Couleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
446
            $attachments[$i] = new Carto_Couleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
447
            $i++;
447
            $i++;
448
        }
448
        }
449
        
449
        
450
        //Nous libérons toute la mémoire associée à l'identifiant de résultat.
450
        //Nous libérons toute la mémoire associée à l'identifiant de résultat.
451
        mysql_free_result ($resultat_01);
451
        mysql_free_result ($resultat_01);
452
        
452
        
453
        //----------------------------------------------------------------------------
453
        //----------------------------------------------------------------------------
454
        // On realide l'association entre l'index des couleurs et la zone de meme couleur
454
        // On realide l'association entre l'index des couleurs et la zone de meme couleur
455
        
455
        
456
        $attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
456
        $attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
457
        
457
        
458
        //----------------------------------------------------------------------------
458
        //----------------------------------------------------------------------------
459
        //Dans l'application qui utilise la classe carte, nous avons instancié un tableau
459
        //Dans l'application qui utilise la classe carte, nous avons instancié un tableau
460
        //associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
460
        //associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
461
        //un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
461
        //un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
462
        // Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
462
        // Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
463
        //puis une valeur conscidérée comme maximum 
463
        //puis une valeur conscidérée comme maximum 
464
        
464
        
465
        if (!is_array($tableau_valeurs_zone)) {
465
        if (!is_array($tableau_valeurs_zone)) {
466
            $mini = 0;
466
            $mini = 0;
467
            $medium = 0;
467
            $medium = 0;
468
            $maxi = 0;
468
            $maxi = 0;
469
            $nbre_valeurs = 0;
469
            $nbre_valeurs = 0;
470
        }
470
        }
471
        else {
471
        else {
472
            if (count($tableau_valeurs_zone) == 0) {
472
            if (count($tableau_valeurs_zone) == 0) {
473
                $mini=0;
473
                $mini=0;
474
                $medium = 0;
474
                $medium = 0;
475
                $maxi=0;
475
                $maxi=0;
476
            }
476
            }
477
            else {
477
            else {
478
                $i=0;
478
                $i=0;
479
                foreach ($tableau_valeurs_zone as $cle => $valeur) {
479
                foreach ($tableau_valeurs_zone as $cle => $valeur) {
480
                    //Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
480
                    //Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
481
                    if ($valeur != 0) {
481
                    if ($valeur != 0) {
482
                        $tablo_valeurs[$i] = $valeur;
482
                        $tablo_valeurs[$i] = $valeur;
483
                        $i++;
483
                        $i++;
484
                    }
484
                    }
485
                }
485
                }
486
                //Nombre d'entrées dans le tableau de valeurs non nulles :
486
                //Nombre d'entrées dans le tableau de valeurs non nulles :
487
                $nbre_valeurs = count($tablo_valeurs);
487
                $nbre_valeurs = count($tablo_valeurs);
488
                $somme_valeurs = array_sum($tablo_valeurs);
488
                $somme_valeurs = array_sum($tablo_valeurs);
489
                $tablo_frequences = array_count_values($tablo_valeurs);
489
                $tablo_frequences = array_count_values($tablo_valeurs);
490
                $nbre_frequences = count($tablo_frequences);
490
                $nbre_frequences = count($tablo_frequences);
491
                if ($nbre_valeurs > 0){
491
                if ($nbre_valeurs > 0){
492
                    //Nous trions le tableau dans l'ordre croissant :
492
                    //Nous trions le tableau dans l'ordre croissant :
493
                    sort($tablo_valeurs);
493
                    sort($tablo_valeurs);
494
                    //Nous récupérons la valeur la plus petite :
494
                    //Nous récupérons la valeur la plus petite :
495
                    $mini = $tablo_valeurs[0];
495
                    $mini = $tablo_valeurs[0];
496
                    $maxi = $tablo_valeurs[$nbre_valeurs-1];
496
                    $maxi = $tablo_valeurs[$nbre_valeurs-1];
497
                    isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
497
                    isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
498
                    $moyenne = $somme_valeurs/$nbre_valeurs;
498
                    $moyenne = $somme_valeurs/$nbre_valeurs;
499
                    $ecart_au_carre_moyen = 0;
499
                    $ecart_au_carre_moyen = 0;
500
                    for ($i = 0; $i < $nbre_valeurs; $i++) {
500
                    for ($i = 0; $i < $nbre_valeurs; $i++) {
501
                        $ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
501
                        $ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
502
                    }
502
                    }
503
                    $variance = $ecart_au_carre_moyen/$nbre_valeurs;
503
                    $variance = $ecart_au_carre_moyen/$nbre_valeurs;
504
                    $ecart_type = sqrt($variance);
504
                    $ecart_type = sqrt($variance);
505
                    
505
                    
506
                    $moyenne = round($moyenne, 0);
506
                    $moyenne = round($moyenne, 0);
507
                    $variance = round($variance, 0);
507
                    $variance = round($variance, 0);
508
                    $ecart_type = round($ecart_type, 0);
508
                    $ecart_type = round($ecart_type, 0);
509
                    
509
                    
510
                    /*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
510
                    /*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
511
                    echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
511
                    echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
512
                    echo 'Moyenne : '.$moyenne.'<br>';
512
                    echo 'Moyenne : '.$moyenne.'<br>';
513
                    echo 'Variance : '.$variance.'<br>';
513
                    echo 'Variance : '.$variance.'<br>';
514
                    echo 'Ecart-type : '.$ecart_type.'<br>';
514
                    echo 'Ecart-type : '.$ecart_type.'<br>';
515
                    echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
515
                    echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
516
                    echo "mini : $mini medium : $medium maxi : $maxi<br/>";
516
                    echo "mini : $mini medium : $medium maxi : $maxi<br/>";
517
            */
517
            */
518
                }
518
                }
519
            }
519
            }
520
        }
520
        }
521
 
521
 
522
        //----------------------------------------------------------------------------
522
        //----------------------------------------------------------------------------
523
        // Nous réalisons le coloriage de toutes les zones :
523
        // Nous réalisons le coloriage de toutes les zones :
524
        
524
        
525
        $requete_03 =
525
        $requete_03 =
526
            "SELECT $chp_id_zone_couleur ".
526
            "SELECT $chp_id_zone_couleur ".
527
            "FROM $table_zone_geo";
527
            "FROM $table_zone_geo";
528
        
528
        
529
        $resultat_03 = mysql_query ($requete_03) or die('
529
        $resultat_03 = mysql_query ($requete_03) or die('
530
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
530
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
531
            '<b>Requete : </b>'.$requete_03.
531
            '<b>Requete : </b>'.$requete_03.
532
            '<br/><br/><b>Erreur : </b>'.mysql_error());
532
            '<br/><br/><b>Erreur : </b>'.mysql_error());
533
        
533
        
534
        while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
534
        while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
535
            $id_zone_geo = $ligne_03->$chp_id_zone_couleur;
535
            $id_zone_geo = $ligne_03->$chp_id_zone_couleur;
536
            if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
536
            if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
537
                $tableau_valeurs_zone[$id_zone_geo] = 0;
537
                $tableau_valeurs_zone[$id_zone_geo] = 0;
538
            }
538
            }
539
            //Nous cherchons la couleur a afficher pour chaque zone.
539
            //Nous cherchons la couleur a afficher pour chaque zone.
540
            if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
540
            if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
541
                //echo 'ZONE:'.$id_zone_geo."<br/>";
541
                //echo 'ZONE:'.$id_zone_geo."<br/>";
542
                //echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
542
                //echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
543
                $theColor = $this->_donnerCouleur (
543
                $theColor = $this->_donnerCouleur (
544
                                        $this->_miniR, $this->_miniV, $this->_miniB,
544
                                        $this->_miniR, $this->_miniV, $this->_miniB,
545
                                        $this->_mediumR , $this->_mediumV , $this->_mediumB ,
545
                                        $this->_mediumR , $this->_mediumV , $this->_mediumB ,
546
                                        $this->_maxiR , $this->_maxiV , $this->_maxiB ,
546
                                        $this->_maxiR , $this->_maxiV , $this->_maxiB ,
547
                                        $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
547
                                        $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
548
                                        $tablo_frequences, $nbre_frequences, 
548
                                        $tablo_frequences, $nbre_frequences, 
549
                                        $tableau_valeurs_zone[$id_zone_geo],
549
                                        $tableau_valeurs_zone[$id_zone_geo],
550
                                        $this->_formule_coloriage);
550
                                        $this->_formule_coloriage);
551
                //echo $theColor['R'].'<br>';
551
                //echo $theColor['R'].'<br>';
552
                //echo $theColor['V'].'<br>';
552
                //echo $theColor['V'].'<br>';
553
                //echo $theColor['B'].'<br>';
553
                //echo $theColor['B'].'<br>';
554
            }
554
            }
555
            else {
555
            else {
556
                $theColor['R'] = $this->_zeroR;
556
                $theColor['R'] = $this->_zeroR;
557
                $theColor['V'] = $this->_zeroV;
557
                $theColor['V'] = $this->_zeroV;
558
                $theColor['B'] = $this->_zeroB;
558
                $theColor['B'] = $this->_zeroB;
559
            }
559
            }
560
            //Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
560
            //Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
561
            $this->_remplacerCouleur ($image_fond, $attachments, $id_zone_geo,  $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
561
            $this->_remplacerCouleur ($image_fond, $attachments, $id_zone_geo,  $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
562
        }
562
        }
563
        //Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
563
        //Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
564
        mysql_free_result ($resultat_03);
564
        mysql_free_result ($resultat_03);
565
    }
565
    }
566
    
566
    
567
    //==============================================================================
567
    //==============================================================================
568
    // METHODE  _construireAssociationIndexZone ($image, &$att)
568
    // METHODE  _construireAssociationIndexZone ($image, &$att)
569
    //
569
    //
570
    // Le tableau $att est passé par référence. La méthode modifie donc directement
570
    // Le tableau $att est passé par référence. La méthode modifie donc directement
571
    // le tableau et ne renvoit donc rien.
571
    // le tableau et ne renvoit donc rien.
572
    // Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
572
    // Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
573
    // les valeurs RVB des zones d'une image, la valeur de l'index correspondant 
573
    // les valeurs RVB des zones d'une image, la valeur de l'index correspondant 
574
    // à la couleur de la zone.
574
    // à la couleur de la zone.
575
    // Note : les images en question sont constituées de zones distincte possédant 
575
    // Note : les images en question sont constituées de zones distincte possédant 
576
    // chacune une couleur unique et unie.
576
    // chacune une couleur unique et unie.
577
    //==============================================================================
577
    //==============================================================================
578
    
578
    
579
    function _construireAssociationIndexZone (&$image_fond, &$att) 
579
    function _construireAssociationIndexZone (&$image_fond, &$att) 
580
    {
580
    {
581
        // Nous récupérons le nombre de couleur différentes contenues dans l'image.
581
        // Nous récupérons le nombre de couleur différentes contenues dans l'image.
582
        //echo $this->fond.'<BR>';
582
        //echo $this->fond.'<BR>';
583
        $image_fond = imagecreatefrompng($this->fond);
583
        $image_fond = imagecreatefrompng($this->fond);
584
        $taille_palette = imagecolorstotal ($image_fond);
584
        $taille_palette = imagecolorstotal ($image_fond);
585
        //echo $taille_palette.'<br>';
585
        //echo $taille_palette.'<br>';
586
        // Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
586
        // Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
587
        // dans le tableau $att, qui contient des informations sur chaque zone de l'image,
587
        // dans le tableau $att, qui contient des informations sur chaque zone de l'image,
588
        // et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
588
        // et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
589
        
589
        
590
        for ($i = 0; $i < $taille_palette; $i++) {
590
        for ($i = 0; $i < $taille_palette; $i++) {
591
            $valeurs_RVB = array();
591
            $valeurs_RVB = array();
592
            $valeurs_RVB = imagecolorsforindex ($image_fond, $i);
592
            $valeurs_RVB = imagecolorsforindex ($image_fond, $i);
593
            for ($j = 0; $j < count ($att); $j++) {
593
            for ($j = 0; $j < count ($att); $j++) {
594
                
594
                
595
                if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
595
                if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
596
                    $att[$j]->index = $i;
596
                    $att[$j]->index = $i;
597
                    //echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
597
                    //echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
598
                    break;
598
                    break;
599
                }
599
                }
600
            }
600
            }
601
        }
601
        }
602
        
602
        
603
        return $att;
603
        return $att;
604
    }//Fin méthode _construireAssociationIndexZone()
604
    }//Fin méthode _construireAssociationIndexZone()
605
 
605
 
606
    //==============================================================================
606
    //==============================================================================
607
    // METHODE _donnerCouleur()
607
    // METHODE _donnerCouleur()
608
    //------------------------------------------------------------------------------
608
    //------------------------------------------------------------------------------
609
    // Renvoie pour une valeur donnee la couleur a mettre
609
    // Renvoie pour une valeur donnee la couleur a mettre
610
    //------------------------------------------------------------------------------
610
    //------------------------------------------------------------------------------
611
    // ENTREE
611
    // ENTREE
612
    // $miniR : valeur rouge du minimum 
612
    // $miniR : valeur rouge du minimum 
613
    // $miniV : valeur vert du minimum 
613
    // $miniV : valeur vert du minimum 
614
    // $miniB : valeur blue du minimum
614
    // $miniB : valeur blue du minimum
615
    // $maxiR : valeur rouge du maximum 
615
    // $maxiR : valeur rouge du maximum 
616
    // $maxiV : valeur vert du maximum 
616
    // $maxiV : valeur vert du maximum 
617
    // $maxiB : valeur bleu du maximum
617
    // $maxiB : valeur bleu du maximum
618
    // $mediumR : valeur rouge du deuxieme maximum 
618
    // $mediumR : valeur rouge du deuxieme maximum 
619
    // $mediumV : valeur vert du deuxieme maximum 
619
    // $mediumV : valeur vert du deuxieme maximum 
620
    // $mediumB : valeur bleu du deuxieme maximum
620
    // $mediumB : valeur bleu du deuxieme maximum
621
    // $mini  : valeur mini sur l'echelle 
621
    // $mini  : valeur mini sur l'echelle 
622
    // $medium  : valeur juste au dessous du maximum sur l'echelle 
622
    // $medium  : valeur juste au dessous du maximum sur l'echelle 
623
    // $maxi  : valeur maxi sur l'echelle 
623
    // $maxi  : valeur maxi sur l'echelle 
624
    // $val   : valeur dont on cherche la couleur
624
    // $val   : valeur dont on cherche la couleur
625
    //------------------------------------------------------------------------------
625
    //------------------------------------------------------------------------------
626
    // SORTIE 
626
    // SORTIE 
627
    // $couleur array donne la couleur pour la valeur demande ($val)
627
    // $couleur array donne la couleur pour la valeur demande ($val)
628
    //------------------------------------------------------------------------------
628
    //------------------------------------------------------------------------------
629
    
629
    
630
    function _donnerCouleur ($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR, 
630
    function _donnerCouleur ($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR, 
631
                            $maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage) 
631
                            $maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage) 
632
    {
632
    {
633
        if ($formuleColoriage == 'defaut'){
633
        if ($formuleColoriage == 'defaut'){
634
            if ($val == $maxi) {
634
            if ($val == $maxi) {
635
                $couleur['R'] = $maxiR;
635
                $couleur['R'] = $maxiR;
636
                $couleur['V'] = $maxiV;
636
                $couleur['V'] = $maxiV;
637
                $couleur['B'] = $maxiB;
637
                $couleur['B'] = $maxiB;
638
            }
638
            }
639
            if ($val == $mini && $val != $maxi) {
639
            if ($val == $mini && $val != $maxi) {
640
                $couleur['R'] = $miniR;
640
                $couleur['R'] = $miniR;
641
                $couleur['V'] = $miniV;
641
                $couleur['V'] = $miniV;
642
                $couleur['B'] = $miniB;
642
                $couleur['B'] = $miniB;
643
            }
643
            }
644
            if ($maxi/10 > $medium && $maxi/40 < $medium) {
644
            if ($maxi/10 > $medium && $maxi/40 < $medium) {
645
                $diff = $medium - $mini;
645
                $diff = $medium - $mini;
646
                if ($diff > 0 && $val != $medium && $val != $maxi) {
646
                if ($diff > 0 && $val != $medium && $val != $maxi) {
647
                    $diffR   = $mediumR - $miniR;
647
                    $diffR   = $mediumR - $miniR;
648
                    $diffV   = $mediumV - $miniV;
648
                    $diffV   = $mediumV - $miniV;
649
                    $diffB   = $mediumB - $miniB;
649
                    $diffB   = $mediumB - $miniB;
650
                    $variationR =  round ( ($diffR/$diff ), 0 );
650
                    $variationR =  round ( ($diffR/$diff ), 0 );
651
                    $variationV =  round ( ($diffV/$diff ), 0 );
651
                    $variationV =  round ( ($diffV/$diff ), 0 );
652
                    $variationB =  round ( ($diffB/$diff ), 0 );
652
                    $variationB =  round ( ($diffB/$diff ), 0 );
653
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
653
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
654
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
654
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
655
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
655
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
656
                }
656
                }
657
                else if ($val == $medium) {
657
                else if ($val == $medium) {
658
                    $couleur['R'] = $mediumR;
658
                    $couleur['R'] = $mediumR;
659
                    $couleur['V'] = $mediumV;
659
                    $couleur['V'] = $mediumV;
660
                    $couleur['B'] = $mediumB;
660
                    $couleur['B'] = $mediumB;
661
                }
661
                }
662
            }
662
            }
663
            else {
663
            else {
664
                $diff = $maxi - $mini;
664
                $diff = $maxi - $mini;
665
                if ($diff > 0 && $val != $maxi && $val != $mini) {
665
                if ($diff > 0 && $val != $maxi && $val != $mini) {
666
                    $diffR = $maxiR - $miniR;
666
                    $diffR = $maxiR - $miniR;
667
                    $diffV = $maxiV - $miniV;
667
                    $diffV = $maxiV - $miniV;
668
                    $diffB = $maxiB - $miniB;
668
                    $diffB = $maxiB - $miniB;
669
                    $variationR =  round ( ($diffR/$diff ), 0 );
669
                    $variationR =  round ( ($diffR/$diff ), 0 );
670
                    $variationV =  round ( ($diffV/$diff ), 0 );
670
                    $variationV =  round ( ($diffV/$diff ), 0 );
671
                    $variationB =  round ( ($diffB/$diff ), 0 );
671
                    $variationB =  round ( ($diffB/$diff ), 0 );
672
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
672
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
673
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
673
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
674
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
674
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
675
                }
675
                }
676
                else if ($diff == 0){
676
                else if ($diff == 0){
677
                    $couleur['R'] = $mediumR;
677
                    $couleur['R'] = $mediumR;
678
                    $couleur['V'] = $mediumV;
678
                    $couleur['V'] = $mediumV;
679
                    $couleur['B'] = $mediumB;
679
                    $couleur['B'] = $mediumB;
680
                }
680
                }
681
            }
681
            }
682
        }
682
        }
683
        elseif ($formuleColoriage == 'ecart_type') {
683
        elseif ($formuleColoriage == 'ecart_type') {
684
            if ($ecart_type == 0) {
684
            if ($ecart_type == 0) {
685
                    $couleur['R'] = $maxiR;
685
                    $couleur['R'] = $maxiR;
686
                    $couleur['V'] = $maxiV;
686
                    $couleur['V'] = $maxiV;
687
                    $couleur['B'] = $maxiB;
687
                    $couleur['B'] = $maxiB;
688
            }
688
            }
689
            elseif ($ecart_type >= 1 && $ecart_type <= 15) {
689
            elseif ($ecart_type >= 1 && $ecart_type <= 15) {
690
                if ($val == $mini) {
690
                if ($val == $mini) {
691
                    $couleur['R'] = $miniR;
691
                    $couleur['R'] = $miniR;
692
                    $couleur['V'] = $miniV;
692
                    $couleur['V'] = $miniV;
693
                    $couleur['B'] = $miniB;
693
                    $couleur['B'] = $miniB;
694
                }
694
                }
695
                elseif ($val == $medium) {
695
                elseif ($val == $medium) {
696
                    $couleur['R'] = $mediumR;
696
                    $couleur['R'] = $mediumR;
697
                    $couleur['V'] = $mediumV;
697
                    $couleur['V'] = $mediumV;
698
                    $couleur['B'] = $mediumB;
698
                    $couleur['B'] = $mediumB;
699
                }
699
                }
700
                elseif ($val == $maxi) {
700
                elseif ($val == $maxi) {
701
                    $couleur['R'] = $maxiR;
701
                    $couleur['R'] = $maxiR;
702
                    $couleur['V'] = $maxiV;
702
                    $couleur['V'] = $maxiV;
703
                    $couleur['B'] = $maxiB;
703
                    $couleur['B'] = $maxiB;
704
                }
704
                }
705
                else {
705
                else {
706
                    $dif_valeur_maxi_mini = $maxi - $mini;
706
                    $dif_valeur_maxi_mini = $maxi - $mini;
707
                    $diffR = $maxiR - $miniR;
707
                    $diffR = $maxiR - $miniR;
708
                    $diffV = $maxiV - $miniV;
708
                    $diffV = $maxiV - $miniV;
709
                    $diffB = $maxiB - $miniB;
709
                    $diffB = $maxiB - $miniB;
710
                    $variationR =  round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
710
                    $variationR =  round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
711
                    $variationV =  round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
711
                    $variationV =  round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
712
                    $variationB =  round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
712
                    $variationB =  round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
713
                    $couleur['R']=$miniR + ($val * $variationR);
713
                    $couleur['R']=$miniR + ($val * $variationR);
714
                    $couleur['V']=$miniV + ($val * $variationV);
714
                    $couleur['V']=$miniV + ($val * $variationV);
715
                    $couleur['B']=$miniB + ($val * $variationB);
715
                    $couleur['B']=$miniB + ($val * $variationB);
716
                }
716
                }
717
            }
717
            }
718
            elseif ($ecart_type > 15) {
718
            elseif ($ecart_type > 15) {
719
                //Le tableau est trié de la plus petite à la plus grande clé.
719
                //Le tableau est trié de la plus petite à la plus grande clé.
720
                ksort($tablo_frequences);
720
                ksort($tablo_frequences);
721
                $i = 0;
721
                $i = 0;
722
                foreach ($tablo_frequences as $cle => $valeur){
722
                foreach ($tablo_frequences as $cle => $valeur){
723
                    //Nous cherchons la correspondance entre la valeur et la clé.
723
                    //Nous cherchons la correspondance entre la valeur et la clé.
724
                    if ($cle == $val) {
724
                    if ($cle == $val) {
725
                        //Pour faire le Rouge, Vert, Bleu
725
                        //Pour faire le Rouge, Vert, Bleu
726
                        $couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
726
                        $couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
727
                        $couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
727
                        $couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
728
                        $couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
728
                        $couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
729
                    }
729
                    }
730
                    $i++;
730
                    $i++;
731
                }
731
                }
732
            }
732
            }
733
        }
733
        }
734
        
734
        
735
        return $couleur;
735
        return $couleur;
736
    
736
    
737
    }//Fin méthode _donnerCouleur()
737
    }//Fin méthode _donnerCouleur()
738
 
738
 
739
    //==============================================================================
739
    //==============================================================================
740
    // METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
740
    // METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
741
    //
741
    //
742
    // $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
742
    // $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
743
    // of an object of $att, ($r, $g, $b) the new color.
743
    // of an object of $att, ($r, $g, $b) the new color.
744
    //
744
    //
745
    // In the palette of $img, the color matching with $id_zone_geo is modified. 
745
    // In the palette of $img, the color matching with $id_zone_geo is modified. 
746
    //==============================================================================
746
    //==============================================================================
747
    
747
    
748
    function _remplacerCouleur (&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer) 
748
    function _remplacerCouleur (&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer) 
749
    {
749
    {
750
        // Nous recherchons la valeur de l'index.
750
        // Nous recherchons la valeur de l'index.
751
        
751
        
752
        $index = -1;
752
        $index = -1;
753
        for ($i = 0; $i < count ($atta); $i++) {
753
        for ($i = 0; $i < count ($atta); $i++) {
754
            if ($atta[$i]->id_zone == $id_zone_geo) {
754
            if ($atta[$i]->id_zone == $id_zone_geo) {
755
                $index = $atta[$i]->index;
755
                $index = $atta[$i]->index;
756
                //Dans le cas où nous voulons repérer une zone sur la carte :
756
                //Dans le cas où nous voulons repérer une zone sur la carte :
757
                if($id_zone_geo == $id_zone_a_reperer) {
757
                if($id_zone_geo == $id_zone_a_reperer) {
758
                    $rouge = 255;
758
                    $rouge = 255;
759
                    $vert = 0;
759
                    $vert = 0;
760
                    $bleu = 0;
760
                    $bleu = 0;
761
                }
761
                }
762
                break;
762
                break;
763
            }
763
            }
764
        }
764
        }
765
        
765
        
766
        // Nous mettons à jour l'image de la carte avec la valeur de l'index.
766
        // Nous mettons à jour l'image de la carte avec la valeur de l'index.
767
        
767
        
768
        if ($index >= 0) {
768
        if ($index >= 0) {
769
            imagecolorset (&$image, $index, $rouge, $vert, $bleu);
769
            imagecolorset (&$image, $index, $rouge, $vert, $bleu);
770
        }
770
        }
771
        
771
        
772
    }//Fin de la méthode _remplacerCouleur
772
    }//Fin de la méthode _remplacerCouleur
773
    
773
    
774
    //==============================================================================
774
    //==============================================================================
775
    // METHODE _donnerIdUnique ()
775
    // METHODE _donnerIdUnique ()
776
    //
776
    //
777
    // Cette méthode privée retourne un identifiant de 32 caractères unique.
777
    // Cette méthode privée retourne un identifiant de 32 caractères unique.
778
    //
778
    //
779
    //==============================================================================
779
    //==============================================================================
780
    
780
    
781
    function _donnerIdUnique () 
781
    function _donnerIdUnique () 
782
    {
782
    {
783
        $id = '';
783
        $id = '';
784
        $id = md5 (uniqid (rand()));
784
        $id = md5 (uniqid (rand()));
785
        
785
        
786
        return $id;
786
        return $id;
787
    }//Fin de la méthode _donnerIdUnique()
787
    }//Fin de la méthode _donnerIdUnique()
788
 
788
 
789
 
789
 
790
}//Fin de la classe Carto_Carte()
790
}//Fin de la classe Carto_Carte()
791
 
791
 
792
// +------------------------------------------------------------------------------------------------------+
792
// +------------------------------------------------------------------------------------------------------+
793
// |                                            PIED du PROGRAMME                                         |
793
// |                                            PIED du PROGRAMME                                         |
794
// +------------------------------------------------------------------------------------------------------+
794
// +------------------------------------------------------------------------------------------------------+
795
 
795
 
796
 
796
 
797
/* +--Fin du code ----------------------------------------------------------------------------------------+
797
/* +--Fin du code ----------------------------------------------------------------------------------------+
798
*
798
*
799
* $Log: not supported by cvs2svn $
799
* $Log: not supported by cvs2svn $
-
 
800
* Revision 1.3  2005/02/22 19:35:08  jpm
-
 
801
* Fin de gestion des variables via les sessions.
-
 
802
*
800
* Revision 1.2  2005/02/22 16:35:16  jpm
803
* Revision 1.2  2005/02/22 16:35:16  jpm
801
* Mise en forme.
804
* Mise en forme.
802
* Utilisation de  constantes pour les chemins d'accès aux fichiers.
805
* Utilisation de  constantes pour les chemins d'accès aux fichiers.
803
* Ajout de commentaires.
806
* Ajout de commentaires.
804
*
807
*
805
*
808
*
806
* +-- Fin du code ----------------------------------------------------------------------------------------+
809
* +-- Fin du code ----------------------------------------------------------------------------------------+
807
*/
810
*/
808
?>
811
?>