Subversion Repositories eFlore/Archives.chorologie

Rev

Rev 4 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
9 jpm 4
// | PHP version 4.3                                                                                    |
4 jpm 5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of Cartographie.                                                                   |
9
// |                                                                                                      |
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                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
9 jpm 24
// CVS : $Id: carto_couleur.class.php,v 1.2 2005-02-22 16:35:16 jpm Exp $
4 jpm 25
/**
26
* Classe Carto_Couleur.
27
*
28
* Classe permettant de réaliser des cartes.
29
*
30
*@package Cartographie
31
//Auteur original :
32
*@author        Nicolas MATHIEU
33
//Autres auteurs :
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
35
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
36
*@copyright     Tela-Botanica 2000-2004
9 jpm 37
*@version       $Revision: 1.2 $ $Date: 2005-02-22 16:35:16 $
4 jpm 38
// +------------------------------------------------------------------------------------------------------+
39
*/
40
 
41
// +------------------------------------------------------------------------------------------------------+
42
// |                                            ENTETE du PROGRAMME                                       |
43
// +------------------------------------------------------------------------------------------------------+
44
 
45
 
46
// +------------------------------------------------------------------------------------------------------+
47
// |                                            CORPS du PROGRAMME                                        |
48
// +------------------------------------------------------------------------------------------------------+
49
 
9 jpm 50
/**
51
* Classe Carto_Couleur() - Info sur les couleurs.
52
*
53
* La classe Carto_Couleur n'est utilisée que par la classe carte.
54
* C'est une classe privée.
55
* Elle sert à stocker les informations (RVB et index) sur la couleur d'une
56
* zone d'une image.
57
*/
4 jpm 58
class Carto_Couleur
59
{
60
    // +--------------------------------------------------------------------------------------------------+
61
    //                                      LES ATTRIBUTS DE LA CLASSE
62
    var $id_zone;
63
    var $rouge;
64
    var $vert;
65
    var $bleu;
66
    var $index;
67
 
68
    // +--------------------------------------------------------------------------------------------------+
69
    //                                     LE CONSTRUCTEUR DE LA CLASSE
9 jpm 70
    /**
71
    * Constructeur Carto_Couleur()
72
    *
73
    * Constructeur initialisant les attributs de la classe Carto_Couleur().
74
    */
4 jpm 75
    function Carto_Couleur($id_zone, $rouge, $vert, $bleu)
76
    {
77
        $this->id_zone  = $id_zone;
78
        $this->rouge    = $rouge;
79
        $this->vert     = $vert;
80
        $this->bleu     = $bleu;
81
        $this->index    = -1;
82
    }
83
 
84
    // +--------------------------------------------------------------------------------------------------+
85
    //                                       LES METHODES PUBLIQUES
86
 
87
    /**
88
    * La fonction array couleur_hexadecimalAuRgb(string color) renvoie des valeurs de couleur en RGB.
89
    *
90
    *Cette fonction prend une valeur de couleur codée en hexadécimal et retourne
91
    *les valeurs RGB correspondantes sous forme de tableau.
92
    *Exemple d'utilisation:
93
    *$rgb = couleur_hexadecimalAuRgb("fffc49");
94
    *echo "<br>couleur_hexadecimalAuRgb de 'fffc49' : ".$rgb['R']." ".$rgb['V']." ".$rgb['B'];
95
    *
96
    *@author iubito <sylvain_machefert@yahoo.fr>
97
    *@copyright     iubito - http://iubito.free.fr/ - 2003
98
    *
99
    *@param string $couleur représente une couleur codée en héxadécimal.
100
    *
101
    *@return array tableau associatif contenant les 3 valeurs RGB, avec clé du rouge 'R',
102
    * du vert 'V' et enfin du bleu 'B'.
103
    */
104
    function couleur_hexadecimalAuRgb($couleur_html)
105
    {
106
        //gestion du #...
107
        if (substr($couleur_html, 0, 1) == "#") {
108
            $couleur_html = substr($couleur_html, 1, 6);
109
        }
110
 
111
        $tablo_rgb['R'] = hexdec(substr($couleur_html, 0, 2));
112
        $tablo_rgb['V'] = hexdec(substr($couleur_html, 2, 2));
113
        $tablo_rgb['B'] = hexdec(substr($couleur_html, 4, 2));
114
 
115
        return $tablo_rgb;
116
    }
117
 
118
 
119
    /**
120
    * La fonction string couleur_rgbAuHexadecimal(array tablo) renvoie la valeur d'une
121
    *couleur en héxadécimal.
122
    *
123
    *Cette fonction prend un tableau de valeurs d'une couleur codées en RGB et retourne
124
    *la valeur hexadécimal correspondante sous forme de chaîne.
125
    *C'est la réciproque exacte de la fonction couleur_hexadecimalAuRgb.
126
    *
127
    *@author iubito <sylvain_machefert@yahoo.fr>
128
    *@copyright     iubito - http://iubito.free.fr/ - 2003
129
    *
130
    *@param array $tablo_RGB représente un tableau associatif avec les valeurs RGB
131
    *d'une couleur.Les trois clés du tableau sont : R pour rouge, V pour vert et B pour bleu.
132
    *
133
    *@return string chaîne contenant la valeur de la couleur sous forme héxadécimale.
134
    */
135
    function couleur_rgbAuHexadecimal($tablo_rgb)
136
    {
137
        //Vérification des bornes...
138
        foreach($tablo_rgb as $cle => $valeur) {
139
            $tablo_rgb[$cle] = bornes($tablo_rgb[$cle],0,255);
140
        }
141
        //Le str_pad permet de remplir avec des 0
142
        //parce que sinon couleur_rgbAuHexadecimal(array(0,255,255)) retournerai #0ffff<=manque un 0 !
143
        return "#".str_pad(dechex(($tablo_rgb['R']<<16)|($tablo_rgb['V']<<8)|$tablo_rgb['B']),6,"0",STR_PAD_LEFT);
144
    }
145
 
146
    /**
147
    * La fonction int couleur_bornerNbre(int nb, int min, int max) borne des nombres.
148
    *
149
    *Cette fonction permet de borner la valeur d'un nombre entre un minimum $mini et
150
    *un maximum $maxi.
151
    *
152
    *@author iubito <sylvain_machefert@yahoo.fr>
153
    *@copyright     iubito - http://iubito.free.fr/ - 2003
154
    *
155
    *@param integer $nbre le nombre à borner.
156
    *@param integer $mini la borne minimum.
157
    *@param integer $maxi la borne maximum.
158
    *
159
    *@return integer le nombre limité aux bornes si nécessaire.
160
    */
161
    function couleur_bornerNbre($nbre, $mini, $maxi)
162
    {
163
        if ($nbre < $mini) {
164
            $nbre = $mini;
165
        }
166
 
167
        if ($nbre > $maxi) {
168
            $nbre = $maxi;
169
        }
170
 
171
        return $nbre;
172
    }
173
 
174
}//Fin de la classe Carto_Couleur
175
 
176
// +------------------------------------------------------------------------------------------------------+
177
// |                                            PIED du PROGRAMME                                         |
178
// +------------------------------------------------------------------------------------------------------+
179
 
180
 
181
/* +--Fin du code ----------------------------------------------------------------------------------------+
182
*
183
* $Log: not supported by cvs2svn $
9 jpm 184
* Revision 1.1  2005/02/22 12:02:57  jpm
185
* Ajout des fichiers de la bibliothèque cartographique.
4 jpm 186
*
187
* +-- Fin du code ----------------------------------------------------------------------------------------+
188
*/
189
?>