source: spip-zone/_core_/plugins/filtres_images/filtres/couleurs.php @ 93635

Last change on this file since 93635 was 93635, checked in by marcimat@…, 5 years ago

Meilleure compatibilité avec PSR-2 et nos règles d'écriture, en appliquant
différents fix avec php-cs-fixers. Fixers appliqués ici :

'encoding', utf8
'eof_ending',
un saut de ligne en fin de fichier
'elseif', elseif plutôt que else if
'function_call_space',
espaces sur fonctions
'function_declaration', espaces sur fonctions
'function_typehint_space',
espaces sur fonctions
'linefeed', sauts de ligne \n uniquement
'lowercase_constants',
true, false, null en munuscule
'lowercase_keywords', mots clés PHP en lowercase
'method_argument_space',
espaces sur appels de fonctions
'multiple_use', use unique sur fonctions anonymes
'newline_after_open_tag',
ouverture de php… et c'est tout sur cette ligne
'operators_spaces', espaces de part et d'autres des opérateurs binaires
'parenthesis',
pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', pas de fermeture de php
'short_tag',
tag PHP corrects
'trailing_spaces', pas d'espace qui traîne en fin de ligne
'visibility',
déclarer 'public / private / protected' sur les méthodes

File size: 5.0 KB
Line 
1<?php
2/***************************************************************************\
3 *  SPIP, Systeme de publication pour l'internet                           *
4 *                                                                         *
5 *  Copyright (c) 2001-2015                                                *
6 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16include_spip('inc/filtres_images_lib_mini');
17
18/**
19 * Toutes les fonctions couleur_xx de ce fichier :
20 *  - prennent une couleur hexa sur 6 caracteres en entree (les couleurs web nommees sont admises aussi)
21 *  - fournissent une couleur hexa en sortie
22 *  - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles
23 */
24
25// http://code.spip.net/@couleur_extraire
26function couleur_extraire($img, $x = 10, $y = 6) {
27        include_spip('filtres/images_lib');
28
29        return _image_couleur_extraire($img, $x, $y);
30}
31
32
33// http://code.spip.net/@couleur_web
34function couleur_web($couleur) {
35        include_spip('filtres/images_lib');
36        $rvb = _couleur_hex_to_dec($couleur);
37
38        $rvb = array_map('multiple_de_trois', $rvb);
39
40        return _couleur_dec_to_hex($rvb['red'], $rvb['green'], $rvb['blue']);
41}
42
43// http://code.spip.net/@couleur_4096
44function couleur_4096($couleur) {
45        $r = (substr($couleur, 0, 1));
46        $v = (substr($couleur, 2, 1));
47        $b = (substr($couleur, 4, 1));
48
49        return "$r$r$v$v$b$b";
50}
51
52
53// http://code.spip.net/@couleur_extreme
54function couleur_extreme($couleur, $limite = 0.5) {
55        // force la couleur au noir ou au blanc le plus proche
56        // -> donc couleur foncee devient noire
57        //    et couleur claire devient blanche
58        // -> la limite est une valeur de 0 a 255, permettant de regler le point limite entre le passage noir ou blanc
59
60        $couleurs = _couleur_hex_to_dec($couleur);
61        $red = $couleurs["red"];
62        $green = $couleurs["green"];
63        $blue = $couleurs["blue"];
64
65
66        /*     
67        $moyenne = round(($red+$green+$blue)/3);
68
69        if ($moyenne > $limite) $couleur_texte = "ffffff";
70        else $couleur_texte = "000000";
71        */
72
73        include_spip('filtres/images_lib');
74        $hsl = _couleur_rgb2hsl($red, $green, $blue);
75
76        if ($hsl["l"] > $limite) {
77                $couleur_texte = "ffffff";
78        } else {
79                $couleur_texte = "000000";
80        }
81
82        return $couleur_texte;
83}
84
85// http://code.spip.net/@couleur_inverser
86function couleur_inverser($couleur) {
87        $couleurs = _couleur_hex_to_dec($couleur);
88        $red = 255 - $couleurs["red"];
89        $green = 255 - $couleurs["green"];
90        $blue = 255 - $couleurs["blue"];
91
92        $couleur = _couleur_dec_to_hex($red, $green, $blue);
93
94        return $couleur;
95}
96
97// http://code.spip.net/@couleur_foncer_si_claire
98function couleur_foncer_si_claire($couleur, $seuil = 122) {
99        // ne foncer que les couleurs claires
100        // utile pour ecrire sur fond blanc,
101        // mais sans changer quand la couleur est deja foncee
102        $couleurs = _couleur_hex_to_dec($couleur);
103        $red = $couleurs["red"];
104        $green = $couleurs["green"];
105        $blue = $couleurs["blue"];
106
107        $moyenne = round(($red + $green + $blue) / 3);
108
109        if ($moyenne > $seuil) {
110                include_spip("inc/filtres_images_mini");
111
112                return couleur_foncer($couleur);
113        } else {
114                return $couleur;
115        }
116}
117
118// http://code.spip.net/@couleur_eclaircir_si_foncee
119function couleur_eclaircir_si_foncee($couleur, $seuil = 123) {
120        $couleurs = _couleur_hex_to_dec($couleur);
121        $red = $couleurs["red"];
122        $green = $couleurs["green"];
123        $blue = $couleurs["blue"];
124
125        $moyenne = round(($red + $green + $blue) / 3);
126
127        if ($moyenne < $seuil) {
128                include_spip("inc/filtres_images_mini");
129
130                return couleur_eclaircir($couleur);
131        } else {
132                return $couleur;
133        }
134}
135
136// http://code.spip.net/@couleur_saturation
137function couleur_saturation($couleur, $val) {
138        if ($couleur == "ffffff") {
139                $couleur = "eeeeee";
140        }
141
142        $couleurs = _couleur_hex_to_dec($couleur);
143        $r = 255 - $couleurs["red"];
144        $g = 255 - $couleurs["green"];
145        $b = 255 - $couleurs["blue"];
146
147        $max = max($r, $g, $b);
148
149        $r = 255 - $r / $max * 255 * $val;
150        $g = 255 - $g / $max * 255 * $val;
151        $b = 255 - $b / $max * 255 * $val;
152
153        $couleur = _couleur_dec_to_hex($r, $g, $b);
154
155        return $couleur;
156
157}
158
159// http://code.spip.net/@couleur_luminance
160function couleur_luminance($couleur, $val) {
161        include_spip('filtres/images_lib');
162
163        $couleurs = _couleur_hex_to_dec($couleur);
164        $r = $couleurs["red"];
165        $g = $couleurs["green"];
166        $b = $couleurs["blue"];
167
168        // Cas etonnant: quand gris parfait, la correction de HSL ne fonctionne pas
169        // en revanche, couleur_saturation retourne exactement la bonne valeur
170        if ($r == $g && $g == $b) {
171                return couleur_saturation($couleur, $val);
172        }
173
174
175        $couleur = _couleur_rgb2hsl($r, $g, $b);
176        $h = $couleur["h"];
177        $s = $couleur["s"];
178        $l = $couleur["l"];
179
180        $rgb = _couleur_hsl2rgb($h, $s, 1 - $val);
181        $r = $rgb["r"];
182        $g = $rgb["g"];
183        $b = $rgb["b"];
184
185        $retour = _couleur_dec_to_hex($r, $g, $b);
186
187        return $retour;
188}
Note: See TracBrowser for help on using the repository browser.