Subversion Repositories eFlore/Archives.chorologie

Rev

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

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