convertir du TSL vers RGB et inversement.
Les résultats varieront de 0 à 255 si j'me plante pas

Je ne sais plus à qui appartienne ses procédure-ci dessous:
Code : Tout sélectionner
Procedure Teinte(Couleur.i) ; Donne la teinte d'une couleur (Hue)
Protected fTeinte.f, Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i, Difference.i
Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
If Rouge = Vert And Rouge = Bleu And Vert = Bleu
ProcedureReturn 160
EndIf
If Rouge < Vert And Rouge < Bleu
Minimum = Rouge
If Vert > Bleu
Maximum = Vert
Else
Maximum = Bleu
EndIf
ElseIf Vert < Bleu
Minimum = Vert
If Rouge > Bleu
Maximum = Rouge
Else
Maximum = Bleu
EndIf
Else
Minimum = Bleu
If Rouge > Vert
Maximum = Rouge
Else
Maximum = Vert
EndIf
EndIf
Difference = Maximum-Minimum
If Rouge = Maximum
fTeinte = (Vert-Bleu)/Difference
ElseIf Vert = Maximum
fTeinte = (Bleu-Rouge)/Difference + 2
Else
fTeinte = (Rouge-Vert)/Difference + 4
EndIf
If fTeinte< 0
ProcedureReturn 255+Round(Mod((1/6*(fTeinte*255)), 255), #PB_Round_Nearest)
Else
ProcedureReturn Round(Mod((1/6*(fTeinte*255)), 255), #PB_Round_Nearest)
EndIf
EndProcedure
Procedure Saturation(Couleur.i) ; retourne la saturation d'une couleur
Protected Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i
Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
If (Rouge = 0 And Vert = 0 And Bleu = 0) Or (Rouge = 255 And Vert = 255 And Bleu = 255)
ProcedureReturn 0
EndIf
If Rouge < Vert And Rouge < Bleu
Minimum = Rouge
If Vert > Bleu
Maximum = Vert
Else
Maximum = Bleu
EndIf
ElseIf Vert < Bleu
Minimum = Vert
If Rouge > Bleu
Maximum = Rouge
Else
Maximum = Bleu
EndIf
Else
Minimum = Bleu
If Rouge > Vert
Maximum = Rouge
Else
Maximum = Vert
EndIf
EndIf
If Maximum+Minimum =< 255
ProcedureReturn Round(((Maximum-Minimum)/(Maximum+Minimum)*255),#PB_Round_Nearest)
Else
ProcedureReturn Round(((Maximum-Minimum)/(510-(Maximum+Minimum))*255), #PB_Round_Nearest)
EndIf
EndProcedure
Procedure Luminosite(Couleur.i) ; Donne la luminosité d'une couleur
Protected Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i
Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
If Rouge < Vert And Rouge < Bleu
Minimum = Rouge
If Vert > Bleu
Maximum = Vert
Else
Maximum = Bleu
EndIf
ElseIf Vert < Bleu
Minimum = Vert
If Rouge > Bleu
Maximum = Rouge
Else
Maximum = Bleu
EndIf
Else
Minimum = Bleu
If Rouge > Vert
Maximum = Rouge
Else
Maximum = Vert
EndIf
EndIf
ProcedureReturn Round((255*(Maximum + Minimum)/510), #PB_Round_Nearest)
EndProcedure
