]> git.immae.eu Git - perso/Denise/oms.git/blobdiff - gestion_couleurs.py
couleurs personnalisables, affichage amélioré (on peut masquer notamment).
[perso/Denise/oms.git] / gestion_couleurs.py
diff --git a/gestion_couleurs.py b/gestion_couleurs.py
new file mode 100644 (file)
index 0000000..c1b3690
--- /dev/null
@@ -0,0 +1,62 @@
+#!/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