--- /dev/null
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+
+### Gérer les couleurs
+
+from gestion_erreurs import *
+
+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) )
\ No newline at end of file