Plugins : gestion RVB d'une couleur définie dans 4D

Thomas Schlumberger

- Titre : Plugins : gestion RVB d'une couleur définie dans 4D

- Auteur : Thomas Schlumberger

- Parution : 28 décembre 2006

- Licence : Copyright ® 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

Produit : 4D 2003, 4D 2004

Plateforme : Mac & Win ♪

Le format de la variable couleur des plug-ins 4D est différent du format de la variable couleur quand elle est définie dans 4D.

Les composants RVB Rouge et Bleu doivent dans ce cas être inversés.

Si dans du code 4D Chart, 4D Draw, 4D View, 4D Write, vous voulez utiliser une couleur définie dans 4D, il faudra donc inverser les résultats Rouge et Bleu obtenus avec les commandes des plugins telle que :

ch_COULEUR VERS RGB / ch_RGB vers couleur (4D Chart)
dr_COULEUR VERS RGB / dr_RGB vers couleur (4D Draw)
PV COULEUR VERS RVB / PV RVB vers couleur (4D View)
WR COULEUR VERS RGB / WR RGB vers couleur (4D Write)

On crée d'abord une petite méthode utilitaire :

` Methode: util_Chaine_Entier_Long_Hexa
` Retourne une chaine en Hexa de longueur 8 sur un entier long
` ----------------------------------------------------
C_ENTIER LONG($1)
C_TEXTE($0)

C_TEXTE($Defaut;$Resultat)
$Defaut:="0"*8

$Resultat:=Chaine($1;"&x")
$Resultat:=Sous chaine($Resultat;3)
$0:="0x"+Sous chaine($Defaut;1;(8-Longueur($Resultat)))+$Resultat
` ----------------------------------------------------

Puis un exemple de code avec 4D Chart : ` Méthode : ch_Couleur_Vers_RVB

` Méthode : ch_Couleur_Vers_RVB
` ch_COULEUR VERS RGB (couleur; rouge; vert; bleu)
` parametre $1 (entier long) couleur
` parametre opt $2 (booleen) vrai si couleur définie dans 4D (pas dans 4D Chart)

C_ENTIER LONG($1)
C_BOOLEEN($2)

C_ENTIER LONG($Couleur;RVB_Rouge;RVB_Vert;RVB_Bleu;$RVB_Temp)
C_BOOLEEN($b4D_couleur)
C_TEXTE($txt)

$Couleur:=$1
Si (Nombre de parametres>1)
$b4D_couleur:=$2
Fin de si

ch_COULEUR VERS RGB ($Couleur;RVB_Rouge;RVB_Vert;RVB_Bleu)
Si ($b4D_couleur)  `il faut inverser RVB_Rouge et RVB_Bleu
$RVB_Temp:=RVB_Rouge
RVB_Rouge:=RVB_Bleu
RVB_Bleu:=$RVB_Temp
Fin de si

$txt:="Couleur = "+util_Chaine_Entier_Long_Hexa ($Couleur)+Caractere(13)
$txt:=$txt+"Rouge = "+Chaine(RVB_Rouge)
$txt:=$txt+", Vert = "+Chaine(RVB_Vert)+", Bleu = "+Chaine(RVB_Bleu)
ALERTE($txt)

et methode de test (si on a une zone 4D Chart "Zone").

` Ces deux exemples vont donner une couleur équivalente aux deux rectangles
C_ENTIER LONG($Couleur;$Rect;$Rect2)
C_BOOLEEN($b4D_couleur)

` 1/ Si on passe une couleur exemple de 4D
$Couleur:=255  ` bleu dans 4D
$b4D_couleur:=Vrai

ch_Couleur_Vers_RVB ($Couleur;$b4D_couleur)
$Rect:=ch_Creer rectangle (Zone;5;5;200;200;5)
ch_FIXER TRAMAGE (Zone;$Rect;3;ch_RGB vers couleur (RVB_Rouge;RVB_Vert;RVB_Bleu))

` 2/ On définit une couleur dans 4D Chart
$Couleur:=ch_Index vers couleur (7)  `bleu dans 4D, voir valeur différente de $Couleur
ch_Couleur_Vers_RVB ($Couleur)
$Rect2:=ch_Creer rectangle (Zone;220;5;420;200;5)
ch_FIXER TRAMAGE (Zone;$Rect2;3;ch_RGB vers couleur (RVB_Rouge;RVB_Vert;RVB_Bleu))