Graphics : module Perl facilitant la creation d'objets graphiques complexes par une description simplifiee.
use Graphics;
&GraphicsFunction(@params, ?option => value?, ...);
Creation d'items de representations Zinc. Les objets graphiques generes peuvent etre complexes (geometrie, multi contours, operateur de forme, empilage d'items, reliefs, ombre portee, repetition, transformations...) mais sont decrits par des options geometriques ou de surfacage 2D 1/2 de haut niveau.
<widget> identifiant du widget zinc.
<tagOrId> identifiant de l'item group parent.
Specifie le(s) type(s) d'item(s) souhaite(s). Peut etre celui d'un item natif zinc (group, rectangle, arc, curve, text, icon), ou un 'metatype' permettant de specifier des curves 'particulieres'. Les sections coniques de ces metatypes (raccords ou arcs) seront simulees par des segments quadratiques de bezier. Ces metatypes sont :
decrit par 2 cordonnees (haut-gauche et bas-droite du rectangle) et un rayon de raccord angulaire. Une liste optionnelle de realisation des raccords [0 = sans raccord|1 = avec raccord] permet de specifier pour chaque angle le type de raccord (angle ou arc).
decrit par 2 cordonnees (haut-gauche et bas-droite du rectangle englobant). Si l'orientation n'est pas specifiee, le rayon de raccord sera egal a la moitie du plus petit cote . Une liste optionnelle de realisation des raccords permet de specifier pour chaque angle le type de raccord (angle ou arc).
decrit par 2 cordonnees (haut-gauche et bas-droite du rectangle englobant). Une liste optionnelle de realisation des raccords permet de specifier pour chaque angle le type de raccord (angle ou arc).
polygone regulier a n cotes, (triangle equilateral, carre, pentagone, hexagone...) convexe ou en etoile. Le polygone sera inscrit dans un cercle dont le rayon est passe en parametres (un 2eme rayon 'interne' decrira un polygone etoile). Un rayon de raccord et une liste de realisation des raccords permettent des variantes interressantes.
curve multicontours a coins arrondis, de rayon raccord unique, pour specifier une forme quelconque.
curve multicontours a coins arrondis. Le rayon de chaque raccord pouvant etre defini specifiquement.
creation d'une ligne multisegments 'epaisse', realisee par 'decalage' par rapport a un path donne (largeur et sens de decalage [left|both|right] optionnels). Le contour transforme en surface avec l'item Zinc triangles permet d'appliquer un degrade de couleurs le long du trace (lineaire, transversal ou double).
<coords list> coordonnees geometriques ou de position de l'item.
<hashtable> calcul des coordonnées de l'item par passage d'un [meta]type d'item différent de celui décrit par -itemtype. (ex. un pathline défini par un polygone)
<hashtable> parametres zinc de l'item.
<contours list> arguments zinc d'ajout de contours .
<coords list or hashtable> clipping d'un item group.
<hashtable> table d'items contenus dans un item group. provoque un appel récursif de la fonction buildZincItem().
<imagefile> ajout d'une texture a l'item.
<imagefile> ajout d'un pattern a l'item.
<hash table> creation d'un relief a l'item a l'aide d'item zinc triangles. Invoque la fonction du module Graphics graphicItemRelief()
<hash table> creation d'une ombre portee a l'item. Invoque la fonction du module Graphics graphicItemShadow()
<hash table> repetition de l'item. Invoque la fonction du module Graphics repeatZincItem()
application d'une transformation zinc->scale a l'item
application d'une transformation zinc->translate a l'item
application d'une transformation zinc->rotate a l'item
<tags list> liste de tags specifiques a ajouter aux parametre item -tags.
<string> nom de l'item.
Répétition (clonage) d'un objet Zinc de representation.
<tagOrId> identifiant de l'item zinc a dupliquer.
Nombre de répétitions.
Paramètres de translation a appliquer entre 2 copies.
angle de rotation en degré a appliquer entre 2 copies.
ajout d'un tag indexé pour chaque copie.
Paramétrage specialises de chaque copie
Construit les items de représentation d'une boîte à onglets multi-pages. Le positionnement, la forme et la taille des onglets est définie automatiquement ou spécifiés par options. L'ajout de titres aux pages est possible. Des tags de base (intercalaires et titres) permettent de définir des interactions de sélection/navigation par bindings.
<coords> coordonnées haut-gauche et bas-droite de la BoundingBox du tabBox.
<integer> nombre de pages du TabBox.
ancrage nord, est, sud ou ouest des onglets (par défaut 'n')
alignement gauche, centré ou droit des onglets sur l'ancrage (par défaut left)
longeur des onglets : 'auto' longeur répartie sur le coté, longeur absolue ou liste de longeurs ces dimensions sont autoajustées si dépassement. (par défaut 'auto').
hauteur des onglets (par défaut 'auto')
offset de biseau entre la base et le haut de l'onglet (par défaut 'auto').
offset de décalage entre 2 onglets (par défaut 'auto').
<dimension> rayon des arrondis d'angle des onglets. (par défaut 0)
<booleanList> liste d'application du raccord aux angles sous forme booleenne 0 = sans raccord 1 = avec raccord.
<hash table> creation d'un relief pour les pages du tabBox. Invoque la fonction du module Graphics graphicItemRelief()
<hashtable> table de hash de définition des titres d'onglets (label, params).
<hashtable> table d'items 'complémentaire' à réaliser pour chaque page. provoque un appel récursif de la fonction buildZincItem().
Retourne les coordonnées (curve) d'un rectangle à coins arrondis
<coordList> coordonnées haut-gauche et bas-droite du rectangle.
<dimension> rayon de raccord circulaire des angles.
Liste de réalisation des raccords de sommets [0 = pad de raccord (droit)| 1 = raccord circulaire]. (par défaut [1,1,1,1]).
Retourne les coordonnées (curve) d'un hippodrome
<coordList> coordonnées haut-gauche et bas-droite du rectangle exinscrit à l'hippodrome.
orientation forcée de l'hippodrome (sinon hauteur = plus petit coté).
troncatures des cotés circulaires de l'hippodrome.
Retourne les coordonnées (curve) d'une ellipse
<coordList> coordonnées haut-gauche et bas-droite du rectangle exinscrit.
Liste de réalisation des quadrants [0 = angle droit| 1 = raccord d'ellipse]. (par défaut [1,1,1,1]).
Retourne les coordonnées d'une curve à coins arrondis.
<coordList> coordonnées de la curve
-radius : <dimension> rayon de raccord des angles. par defaut 0
-corners : <booleanList> liste d'application du raccord circulaire aux angles sous forme booleenne 0 = sans raccord 1 = avec raccord. par defaut [1,1,...,1].
Retourne les coordonnées d'un polygone régulier à n cotés ou d'une étoile à n branches. Le polygone sera inscrit dans un cercle de rayon -radius, un 2ème rayon interne décrira les sommets interne de l'étoile. Raccords circulaires optionnels des sommets du polygone/étoile
<coords> coordonnées du centre du cercle exinscrit au polygone/étoile
-numsides : <dimension> nombre de cote du polygone ou nombre de branches de l'etoile
-radius : <dimension> rayon du cercle exinscrit au polygone
-startangle : <angle> angle de depart du trace de la figure
-inner_radius : <dimension> rayon du cercle des points 'internes' de l'etoile
-corner_radius : <dimension> rayon des raccords d'angles
-corners : <booleanList> liste d'application du raccord aux angles sous forme booleenne 0 = sans raccord 1 = avec raccord. par defaut [1,1,1,1].
Retourne les coordonnées d'une polyline, ligne 'brisée' multi-segments avec raccords angulaires optionnels.
<coordList> liste de coordonnées des sommets de la polyline
-radius : <dimension> rayon global de raccord des angles. par defaut 0
-corners_radius : <dimensionList> Liste des rayons de raccord des angles.
ATTENTION FONCTION EN CHANTIER
Retourne les coordonnées curve (de surface) d'un stroke. la ligne est décrite le long d'un chemin et dessinée selon les attributs graphiques classiques 'stroke' (style d'épaisseur, d'extremité, de jointure, de tiret...)
-width : <dimension> épaisseur de la ligne. par defaut 1
-linecap : <'butt'|'round'|'square'> Forme des extrémités des tracés ouverts.
-linejoin : <'miter'|'round'|'bevel'> Forme des sommets des tracés.
-dasharray : <'none'|motifList> Spécification du tireté : none (aucun) ou liste de longueurs tiret,[espace],[tiret]... permettant de définir le dessin du tireté (par défaut none)
-dashoffset : <dimension> distance décalage de départ dans le dessin du tireté (par défaut 0)
retourne les coordonnées (triangles) d'une ligne multisegments 'epaisse', realisee par 'décalage' par rapport à un path donné (largeur et sens de décalage [out|center|in] optionnels).
<coordList> liste de coordonnées du path
-closed : <boolean> fermeture du tracé. par defaut 0
-shifting : <'out'|'center'|'in'> sens de décalage de l'épaisseur de contour : 'center' (1/2 décalage de chaque coté du path) 'out' (décalage externe) 'in' (décalage interne) par défaut 'center'.
-width : <dimension> Largeur du décalage de ligne (par défaut 2).
retourne les coordonnées curve de 'décalage' par rapport à un path donné.
-shifting : <'out'|'in'> sens de décalage du path : 'out' (décalage externe) 'in' (décalage interne) par défaut 'out'.
-width : <dimension> Largeur du décalage de ligne (par défaut 1).
Retourne les coordonnées de construction d'un TabBox (boîte à onglets) : liste de curve décrivant les 'pages' du TabBox et coordonnées de position des titres onglets.
-numpages : <integer> nombre de pages du TabBox.
-anchor : <'n'|'e'|'s'|'w'> ancrage nord, est, sud ou ouest des onglets (par défaut 'n')
-alignment : <'left'|'center'|'right'> alignement gauche, centré ou droit des onglets sur l'ancrage (par défaut left)
-tabwidth : 'auto'|<dimension|dimensionList> longeur des onglets : 'auto' longeur répartie sur le coté, longeur absolue ou liste de longeurs ces dimensions sont autoajustées si dépassement. (par défaut 'auto').
-tabheight : 'auto'|<dimension> hauteur des onglets (par défaut 'auto')
-tabshift : 'auto'<dimension> offset de biseau entre la base et le haut de l'onglet (par défaut 'auto').
-overlap : 'auto'<dimension> offset de décalage entre 2 onglets (par défaut 'auto').
-radius : <dimension> rayon des arrondis d'angle des onglets. (par défaut 0)
-corners : <booleanList> liste d'application du raccord aux angles sous forme booleenne 0 = sans raccord 1 = avec raccord.
Construit un relief à l'item géometrique (qui peut etre multicontours) en utilisant des items zinc triangles. Ce relief de type 'embossage' de forme possede un profil (flat ou rounded) et dérive en luminosite la couleur dominante de l'item (ou une couleur donnée) suivant l'orientation d'éclairage global zinc -lighangle (ou un angle de lumière donné).
identifiant du widget zinc.
identifiant de l'item zinc à mettre en relief.
-closed : <boolean> fermeture (de forme) du relief (par défaut 1).
-profil : <'flat'|'rounded'> type de profil du relief (par défaut 'rounded').
-relief : <'raised'|'sunken'> sens de l'embossage (par defaut 'raised').
-side : <outside|inside> position externe ou interne du relief (defaut 'inside').
-color : <color> couleur de base du relief (défaut couleur dominante de l'item).
-smoothed : <boolean> lissage des 'facettes' du relief (par defaut 1).
-lightangle : <angle> angle de la lumiere (par defaut attribut -lightangle du widget).
-width : <dimension> largeur du 'contour' relief.
-fine : <boolean> mode precision courbe de bezier (par defaut 0 : auto-ajustee).
Cree une ombre portee a l'item geometrique (qui peut etre multicontours) en utilisant des items zinc triangles et curve. Cette ombre correspond a une projection de la forme en fonction d'une distance (par defaut 10) d'une orientation lumineuse (par defaut la valeur globale -lightangle du widget) et d'un 'grossissement' (par defaut 0). Une largeur 'width' de perimetre de diffusion/diffraction lumineuse (par defaut 4) qui permet de lisser le passage de l'ombre au fond, une couleur (par defaut black) et une opacite (par defaut 50) completent la specification.
Parametres :
widget : <widget> identifiant du widget zinc
item : <tagOrId> identifiant de l'item zinc
Options :
-opacity : <percent> poucentage d'opacite de l'ombre (par defaut 50).
-distance : <dimension> distance de projection de l'ombre (par defaut 10).
-enlarging : <dimension> 'grossissement' cone de projection (defaut 0).
-color : <color> couleur de l'ombre (par defaut black).
-width : <dimension> largeur du perimetre de diffusion/diffraction (par defaut 4).
retourne les coordonnées du point perpendiculaire abaissé d'un point sur une ligne.
<coords> coordonnées du point de référence.
<coordsList> liste de coordonnées des deux points de la ligne de référence.
retourne l'angle formée par un vecteur, s'utilise aussi pour connaitre l'angle 'circulaire' d'un point par rapport à un centre de référence.
<coords> coordonnées du point de départ du segment (ou centre de référence).
<coords> coordonnées du point de fin du segment (ou point 'circulaire' de référence).
retourne la valeur d'angle perpendiculaire à un vecteur (utilisée par exemple pour mesurer l'incidence de lumière d'une facette).
retourne la valeur de l'angle formé par trois points ainsi que la valeur d'angle de la bisectrice de l'angle (fonction utilisé pour les calculs de décalages de path.
<coords> coordonnées du premier point de définition de l'angle.
<coords> coordonnées du deuxième point de définition de l'angle (sommet).
<coords> coordonnées du troisième point de définition de l'angle.
Calcul des points constitutifs d'un arc
<coords> coordonnées du centre de l'arc.
<dimension> rayon de l'arc.
<angle> angle de départ (en degré) de l'arc (par défaut 0)
<angle> delta angulaire (en degré) de l'arc (par défaut 360)
<angle> pas de progression angulaire (en degré) de calcul des points (par défaut 10).
Retourne le point circulaire défini par centre-rayon-angle.
<angle> angle (en degré) du point de circonférence avec le centre du cercle.
Calcul d'une approximation de segment (Quadratique ou Cubique) de bezier.
<coordsList> Liste de coordonnées des points définissant le segment de bezier.
<integer> nombre pas de division des segments bezier (par défaut 20)
<boolean> ne pas retourner le dernier point du segment (pour chaînage de segments).
Calcul d'un point du segment (Quadratique ou Cubique) de bezier. t représentation du temps (de 0 à 1). coords = (P1, C1, <C1>, P2) liste des points définissant le segment de bezier P1 et P2 : extémités du segment et pts situés sur la courbe C1 <C2> : point(s) de contrôle du segment
courbe bezier niveau 2 sur (P1, P2, P3) P(t) = (1-t)²P1 + 2t(1-t)P2 + t²P3
courbe bezier niveau 3 sur (P1, P2, P3, P4) P(t) = (1-t)³P1 + 3t(1-t)²P2 + 3t²(1-t)P3 + t³P4
<pourcent> (de 0 à 1) représentation du temps.
Calcul d'une approximation auto-ajustée de segment (Quadratique ou Cubique) de bezier. l'approximation se fait par subdivision successive de la courbe jusqu'à atteindre une distance avec la courbe théorique <= à la précision passée par option (par défaut 0.2).
<dimension> seuil limite du calcul d'approche de la courbe (par défaut .2)
retourne et partage la ressource image bitmap en l'initialisant et la stockant si première utilisation.
<image filename> non du fichier bitmap pattern
<hashtable> référence de la table de stockage privée des patterns.
retourne et partage la ressource image texture en l'initialisant et la stockant si première utilisation.
<imagefile> non du fichier image texture
<hashtable> référence de la table de stockage privée des textures.
retourne et partage la ressource image en l'initialisant et la stockant si première utilisation.
<imagefile> non du fichier image
<hashtable> référence de la table de stockage privée des images.
Initialise et stocke un ensemble d'images.
<imagefileList> Liste des fichier images à initialiser.
Création de gradiants nommés Zinc
<widget> identifiant du widget Zinc
<hashtable> référence de la table de définition des gradiants zinc ('non' => 'zincGradient').
retourne la couleur dominante d'un item ('barycentre' gradiant fillcolor).
<tagOrId> identifiant de l'item zinc.
calcul d'une couleur intermédiaire défini par un ratio ($rate) entre 2 couleurs.
<color> première couleur
<pourcent> (de 0 à 1) position de la couleur intermédiaire.
création d'un jeu de couleurs intermédiaires (dégradé) entre n couleurs.
<integer> nombre totale de couleurs retournées.
<colorList> liste de couleurs servant à créer le dégradé.
<integer> répétition de chaque couleur utilisé par exemple pour triangles path où la couleur est répétée 2 fois (par défaut 1).
Modification d'une couleur par sa composante luminosité (exemple relief).
<color> couleur au format zinc.
<pourcent> (de 0 à 1) nouvelle valeur de luminosité.
conversion d'une couleur Zinc hexa au format RGBA (255,255,255,100).
<color> couleur au format hexa zinc (#ffffff ou #ffffffffffff).
conversion d'une couleur de l'espace RGB à l'espace CIE LCH°.
<pourcent> (de 0 à 1) valeur de la composante rouge de la couleur RGB.
<pourcent> (de 0 à 1) valeur de la composante verte de la couleur RGB.
<pourcent> (de 0 à 1) valeur de la composante bleue de la couleur RGB.
conversion d'une couleur de l'espace CIE LCH° à l'espace RGB.
<pourcent> (de 0 à 1) valeur de la composante luminosité de la couleur CIE LCH.
C : <pourcent> (de 0 à 1) valeur de la composante saturation de la couleur CIE LCH
H : <pourcent> (de 0 à 1) valeur de la composante teinte de la couleur CIE LCH
conversion d'une couleur de l'espace RGB à l'espace HLS.
conversion d'une couleur de l'espace HLS à l'espace RGB.
<pourcent> (de 0 à 1) valeur de la composante teinte de la couleur HLS.
C : <pourcent> (de 0 à 1) valeur de la composante luminosité de la couleur HLS.
H : <pourcent> (de 0 à 1) valeur de la composante saturation de la couleur HLS.
conversion d'une couleur RGBA (255,255,255,100) au format Zinc '#ffffff'.
<colorComposant> (0 à 255) composante rouge de la couleur rgba.
<colorComposant> (0 à 255) composante verte de la couleur rgba.
<colorComposant> (0 à 255) composante bleue de la couleur rgba.
<colorComposant> (0 à 255) composante alpha de la couleur rgba.
my %gradset = ( 'gdlens' => '=radial -15 -20|#ffb7b7;70|#bd6622;90', 'gdstar' => '=radial -15 -20|#ffb7b7;50|#bd6622;90');
my %starstyle => ( # table hash parametres et options -itemtype => 'group', -coords => [250, 250], -params => {-priority => 90, -tags => ['starlens', 'move'], -sensitive => 1, -atomic => 1, }, -items => { 'lens' => {-itemtype => 'hippodrome', -coords => [[-200, -200], [200, 200]], -params => {-closed => 1, -filled => 1, -fillcolor => 'gdlens', -linewidth => 1.5, -linecolor => '#440000', -priority => 10, }, -relief => {-width => 14, -profil => 'rounded', -lightangle => 135, }, -shadow => {-distance => 20, -width => 18, -lightangle => 135, -opacity => 40, -enlarging => 6, }, }, 'star' => {-itemtype => 'polygone', -coords => [0, 0], -numsides => 5, -radius => 180, -inner_radius => 70, -corner_radius => 10, -startangle => 270, -corners => [0,1,0,1,0,1,0,1,0,1], -params => {-filled => 1, -fillcolor => 'gradstar', -linewidth => 1, -linecolor => '#330000', -priority => 20, }, -relief => {-width => 10, -profil => 'rounded', -side => 'outside', -relief => 'sunken', }, }, }, );
&setGradients($widget, \%gradset);
my $star = &buildZincItem($zinc, $topgroup, \%starstyle);
Jean-Luc Vinot <vinot@cena.fr>
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'exportées'. Assuming CP1252
To install Tk::Zinc, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Tk::Zinc
CPAN shell
perl -MCPAN -e shell install Tk::Zinc
For more information on module installation, please visit the detailed CPAN module installation guide.