Subversion Repositories eFlore/Archives.eflore-consultation-v2

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
153 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 5.0.3                                                                                    |
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
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: carto_couleur.class.php,v 1.1 2005-02-17 10:58:00 jpm Exp $
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
37
*@version       $Revision: 1.1 $ $Date: 2005-02-17 10:58:00 $
38
// +------------------------------------------------------------------------------------------------------+
39
*/
40
 
41
// +------------------------------------------------------------------------------------------------------+
42
// |                                            ENTETE du PROGRAMME                                       |
43
// +------------------------------------------------------------------------------------------------------+
44
 
45
 
46
// +------------------------------------------------------------------------------------------------------+
47
// |                                            CORPS du PROGRAMME                                        |
48
// +------------------------------------------------------------------------------------------------------+
49
 
50
//==============================================================================
51
// La classe Carto_Couleur n'est utilisée que par la classe carte.
52
// C'est une classe privée.
53
// Elle sert à stocker les informations (RVB et index) sur la couleur d'une
54
// zone d'une image.
55
//==============================================================================
56
 
57
class Carto_Couleur
58
{
59
    // +--------------------------------------------------------------------------------------------------+
60
    //                                      LES ATTRIBUTS DE LA CLASSE
61
 
62
    var $id_zone;
63
    var $rouge;
64
    var $vert;
65
    var $bleu;
66
    var $index;
67
 
68
    // +--------------------------------------------------------------------------------------------------+
69
    //                                     LE CONSTRUCTEUR DE LA CLASSE
70
 
71
    function _construct ($id_zone, $rouge, $vert, $bleu)
72
    {
73
        $this->id_zone  = $id_zone;
74
        $this->rouge    = $rouge;
75
        $this->vert     = $vert;
76
        $this->bleu     = $bleu;
77
        $this->index    = -1;
78
    }
79
 
80
    // +--------------------------------------------------------------------------------------------------+
81
    //                                       LES METHODES PUBLIQUES
82
 
83
    /**
84
    * La fonction array couleur_hexadecimalAuRgb(string color) renvoie des valeurs de couleur en RGB.
85
    *
86
    *Cette fonction prend une valeur de couleur codée en hexadécimal et retourne
87
    *les valeurs RGB correspondantes sous forme de tableau.
88
    *Exemple d'utilisation:
89
    *$rgb = couleur_hexadecimalAuRgb("fffc49");
90
    *echo "<br>couleur_hexadecimalAuRgb de 'fffc49' : ".$rgb['R']." ".$rgb['V']." ".$rgb['B'];
91
    *
92
    *@author iubito <sylvain_machefert@yahoo.fr>
93
    *@copyright     iubito - http://iubito.free.fr/ - 2003
94
    *
95
    *@param string $couleur représente une couleur codée en héxadécimal.
96
    *
97
    *@return array tableau associatif contenant les 3 valeurs RGB, avec clé du rouge 'R',
98
    * du vert 'V' et enfin du bleu 'B'.
99
    */
100
    function couleur_hexadecimalAuRgb($couleur_html)
101
    {
102
        //gestion du #...
103
        if (substr($couleur_html, 0, 1) == "#") {
104
            $couleur_html = substr($couleur_html, 1, 6);
105
        }
106
 
107
        $tablo_rgb['R'] = hexdec(substr($couleur_html, 0, 2));
108
        $tablo_rgb['V'] = hexdec(substr($couleur_html, 2, 2));
109
        $tablo_rgb['B'] = hexdec(substr($couleur_html, 4, 2));
110
 
111
        return $tablo_rgb;
112
    }
113
 
114
 
115
    /**
116
    * La fonction string couleur_rgbAuHexadecimal(array tablo) renvoie la valeur d'une
117
    *couleur en héxadécimal.
118
    *
119
    *Cette fonction prend un tableau de valeurs d'une couleur codées en RGB et retourne
120
    *la valeur hexadécimal correspondante sous forme de chaîne.
121
    *C'est la réciproque exacte de la fonction couleur_hexadecimalAuRgb.
122
    *
123
    *@author iubito <sylvain_machefert@yahoo.fr>
124
    *@copyright     iubito - http://iubito.free.fr/ - 2003
125
    *
126
    *@param array $tablo_RGB représente un tableau associatif avec les valeurs RGB
127
    *d'une couleur.Les trois clés du tableau sont : R pour rouge, V pour vert et B pour bleu.
128
    *
129
    *@return string chaîne contenant la valeur de la couleur sous forme héxadécimale.
130
    */
131
    function couleur_rgbAuHexadecimal($tablo_rgb)
132
    {
133
        //Vérification des bornes...
134
        foreach($tablo_rgb as $cle => $valeur) {
135
            $tablo_rgb[$cle] = bornes($tablo_rgb[$cle],0,255);
136
        }
137
        //Le str_pad permet de remplir avec des 0
138
        //parce que sinon couleur_rgbAuHexadecimal(array(0,255,255)) retournerai #0ffff<=manque un 0 !
139
        return "#".str_pad(dechex(($tablo_rgb['R']<<16)|($tablo_rgb['V']<<8)|$tablo_rgb['B']),6,"0",STR_PAD_LEFT);
140
    }
141
 
142
    /**
143
    * La fonction int couleur_bornerNbre(int nb, int min, int max) borne des nombres.
144
    *
145
    *Cette fonction permet de borner la valeur d'un nombre entre un minimum $mini et
146
    *un maximum $maxi.
147
    *
148
    *@author iubito <sylvain_machefert@yahoo.fr>
149
    *@copyright     iubito - http://iubito.free.fr/ - 2003
150
    *
151
    *@param integer $nbre le nombre à borner.
152
    *@param integer $mini la borne minimum.
153
    *@param integer $maxi la borne maximum.
154
    *
155
    *@return integer le nombre limité aux bornes si nécessaire.
156
    */
157
    function couleur_bornerNbre($nbre, $mini, $maxi)
158
    {
159
        if ($nbre < $mini) {
160
            $nbre = $mini;
161
        }
162
 
163
        if ($nbre > $maxi) {
164
            $nbre = $maxi;
165
        }
166
 
167
        return $nbre;
168
    }
169
 
170
}//Fin de la classe Carto_Couleur
171
 
172
 
173
// +------------------------------------------------------------------------------------------------------+
174
// |                                           LISTE de FONCTIONS                                         |
175
// +------------------------------------------------------------------------------------------------------+
176
 
177
    // +--------------------------------------------------------------------------------------------------+
178
 
179
 
180
// +------------------------------------------------------------------------------------------------------+
181
// |                                            PIED du PROGRAMME                                         |
182
// +------------------------------------------------------------------------------------------------------+
183
 
184
 
185
/* +--Fin du code ----------------------------------------------------------------------------------------+
186
*
187
* $Log: not supported by cvs2svn $
188
*
189
* +-- Fin du code ----------------------------------------------------------------------------------------+
190
*/
191
?>