1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
### Gérer les couleurs
from gestion_erreurs import warning
def rgb_vers_tuple(chaine,defaut,liste_err):
""" convertit une chaine rgb genre #00FF1B
vers un tuple python (entre 0 et 1)
En cas d'erreur, on met un warning et on renvoie
le defaut"""
chaine2 = chaine.lstrip("#")
try:
r = int(chaine2[0:2],16)/255
v = int(chaine2[2:4],16)/255
b = int(chaine2[4:6],16)/255
except:
warning("Impossible de convertir la couleur "+chaine,liste_err)
return defaut
return (r,v,b)
def tuple_vers_rgb( t):
""" conversion inverse : renvoie une chaine
de type #FF0045"""
(r,v,b) = t
if (r>1):
r=1
elif r<0:
r=0
if (v>1):
v=1
elif v<0:
v=0
if (b>1):
b=1
elif b<0:
b=0
r = int(r*255)
v = int(v*255)
b = int(b*255)
return '#%02x%02x%02x' % (r,v,b)
def progressif(x,y,nb):
""" renvoie x pour 0, y pour 50,
et entre deux pour les intermédiaires"""
return (x*(50-nb)/50 + y*nb/50)
def degrade_choix(col1,col2,col3,nb):
""" retourne un dégradé entre col1 et col2 (nb<50)
et entre col2 et col3 (nb>50)"""
if nb>100:
nb=100
elif nb<0:
nb = 0
if nb<50:
return tuple( progressif(col1[i],col2[i],nb) for i in (0,1,2) )
else:
return tuple( progressif(col2[i],col3[i],nb-50) for i in (0,1,2) )
|