From a158f3bc82b10d9e6a65af6ccbceeff311f17812 Mon Sep 17 00:00:00 2001 From: vinot Date: Fri, 2 Apr 2004 13:03:08 +0000 Subject: version initiale doc perl --- Perl/Zinc/Graphics.pod | 1749 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1749 insertions(+) create mode 100644 Perl/Zinc/Graphics.pod (limited to 'Perl/Zinc') diff --git a/Perl/Zinc/Graphics.pod b/Perl/Zinc/Graphics.pod new file mode 100644 index 0000000..579b6d7 --- /dev/null +++ b/Perl/Zinc/Graphics.pod @@ -0,0 +1,1749 @@ + +=head1 NAME + +Graphics : module Perl facilitant la creation d'objets graphiques complexes +par une description simplifiee. + + +=head1 SYNOPSIS + +use Graphics; + +&GraphicsFunction(@params, ?option => value?, ...); + +=head1 DESCRIPTION + +Z<> + +=head2 Fonctions exportées + +=head3 1. Création de composants graphiques + +=over + +=item B buildZincItem(Z<>) + +=item B repeatZincItem(Z<>) + +=item B buildTabBoxItem(Z<>) + +=back + +=head3 2. Calculs de formes géométriques complexes + +=over + +=item B roundedRectangleCoords(Z<>) + +=item B hippodromeCoords(Z<>) + +=item B ellipseCoords(Z<>) + +=item B roundedCurveCoords(Z<>) + +=item B polygonCoords(Z<>) + +=item B polylineCoords(Z<>) + +=item B curveLineCoords>(Z<>) + +=item B pathLineCoords(Z<>) + +=item B shiftPathCoords(Z<>) + +=item B tabBoxCoords(Z<>) + +=back + +=head3 3. Création de relief et ombre portée + +=over + +=item B graphicItemRelief(Z<>) + +=item B graphicItemShadow(Z<>) + +=back + +=head3 4. Fonctions géométriques de base + +=over + +=item B perpendicularPoint(Z<>) + +=item B lineAngle(Z<>) + +=item B vertexAngle(Z<>) + +=item B arc_pts(Z<>) + +=item B rad_point(Z<>) + +=item B bezierCompute(Z<>) + +=item B bezierSegment(Z<>) + +=item B bezierPoint(Z<>) + +=back + +=head3 5. Gestion des ressources images + +=over + +=item B getPattern(Z<>) + +=item B getTexture(Z<>) + +=item B getImage(Z<>) + +=item B init_pixmaps(Z<>) + +=back + +=head3 6. Gestion des couleurs + +=over + +=item B setGradiants(Z<>) + +=item B zincItemPredominantColor(Z<>) + +=item B ZnColorToRGB(Z<>) + +=item B hexaRGBcolor(Z<>) + +=item B createGraduate(Z<>) + +=item B MedianColor(Z<>) + +=item B LightingColor(Z<>) + +=item B RGBtoLCH(Z<>) + +=item B LCHtoRGB(Z<>) + +=item B RGBtoHLS(Z<>) + +=item B HLStoRGB(Z<>) + +=back + +Z<> + +=head2 1. Création de composants graphiques + + +=over + +=item B(widget, parentgroup, options); + +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. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + identifiant de l'item group parent. + + +=back + + +=item B : + + +=over + +=item B<-itemtype> => type + +Specifie le(s) type(s) d'item(s) souhaite(s). Peut etre celui d'un item +natif zinc (B, B, B, B, B, B), +ou un B<'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 : + +=over + +=item roundedrectangle + +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). + +=item hippodrome + +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). + +=item ellipse + +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). + +=item polygone + +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. + +=item roundedcurve + +curve multicontours a coins arrondis, de rayon raccord unique, +pour specifier une forme quelconque. + +=item polyline + +curve multicontours a coins arrondis. Le rayon de chaque raccord pouvant etre defini +specifiquement. + +=item pathline + +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). + +=back + + +=item B<-coords> => \@xy + + coordonnees geometriques ou de position de l'item. + +=item B<-metacoords> => \%metatype_params + + 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) + + coordonnees geometriques ou de position de l'item. + +=item B<-params> => \%zinc_attr + + parametres zinc de l'item. + +=item B<-contours> => \@list + + arguments zinc d'ajout de contours . + +=item B<-clip> + + clipping d'un item group. + +=item B<-items> + + table d'items contenus dans un item group. +provoque un appel récursif de la fonction buildZincItem(). + +=item B<-texture> + + ajout d'une texture a l'item. + +=item B<-pattern> + + ajout d'un pattern a l'item. + +=item B<-relief> + + creation d'un relief a l'item a l'aide d'item zinc triangles. +Invoque la fonction du module Graphics graphicItemRelief() + +=item B<-shadow> + + creation d'une ombre portee a l'item. +Invoque la fonction du module Graphics graphicItemShadow() + +=item B<-repeat> + + repetition de l'item. +Invoque la fonction du module Graphics repeatZincItem() + +=item B<-scale> => scale factor or [xscale, yscale] + +application d'une transformation zinc->scale a l'item + +=item B<-translate> => [dx,dy] + + application d'une transformation zinc->translate a l'item + +=item B<-rotate> => (en degré) + +application d'une transformation zinc->rotate a l'item + +=item B<-addtags> + + liste de tags specifiques a ajouter aux parametre item -tags. + +=item B<-name> + + nom de l'item. + +=back + +=back + +Z<> + +=item B(widget, item, options); + +Répétition (clonage) d'un objet Zinc de representation. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + identifiant de l'item zinc a dupliquer. + +=back + +=item B : + +=over + +=item B<-num> => integer + +Nombre de répétitions. + +=item B<-dxy> => [dx, dy] + +Paramètres de translation a appliquer entre 2 copies. + +=item B<-angle> => + +angle de rotation en degré a appliquer entre 2 copies. + +=item B<-copytag> => + +ajout d'un tag indexé pour chaque copie. + +=item B<-params> => \%zinc_attr + +Paramétrage specialises de chaque copie + + +=back + +=back + +Z<> + +=item B(widget, parentgroup, options); + +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. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + identifiant de l'item group parent. + +=back + +=item B : + +=over + +=item B<-coords> => [[x0,y0],[x1,y1]] + + coordonnées haut-gauche et bas-droite de la BoundingBox du tabBox. + +=item B<-numpages> + + nombre de pages du TabBox. + +=item B<-anchor> => 'n'|'e'|'s'|'w' + +ancrage nord, est, sud ou ouest des onglets (par défaut 'n') + +=item B<-alignment> => 'left'|'center'|'right' + +alignement gauche, centré ou droit des onglets sur l'ancrage (par défaut left) + +=item B<-tabwidth> => 'auto'|| + +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'). + +=item B<-tabheight> => 'auto'| + +hauteur des onglets (par défaut 'auto') + +=item B<-tabshift> => 'auto'| + +offset de biseau entre la base et le haut de l'onglet (par défaut 'auto'). + +=item B<-overlap> => 'auto'| + +offset de décalage entre 2 onglets (par défaut 'auto'). + +=item B<-radius> + + rayon des arrondis d'angle des onglets. (par défaut 0) + +=item B<-corners> + + liste d'application du raccord aux angles sous forme booleenne +0 = sans raccord 1 = avec raccord. + +=item B<-params> => \%zinc_attr + + parametres zinc de l'item. + +=item B<-texture> + + ajout d'une texture a l'item. + +=item B<-relief> + + creation d'un relief pour les pages du tabBox. +Invoque la fonction du module Graphics graphicItemRelief() + +=item B<-tabtitles> + + table de hash de définition des titres d'onglets (label, params). + +=item B<-pageitems> + + table d'items 'complémentaire' à réaliser pour chaque page. +provoque un appel récursif de la fonction buildZincItem(). + + +=back + +=back + +=back + +Z<> + +=head2 2. Calculs de formes géométriques complexes + +=over + +=item B(coords, options); + +Retourne les coordonnées (curve) d'un rectangle à coins arrondis + +=over + +=item B : + +=over + +=item B => [[x0,y0],[x1,y1]] + + coordonnées haut-gauche et bas-droite du rectangle. + +=back + +=item B : + +=over + +=item B<-radius> + + rayon de raccord circulaire des angles. + +=item B<-corners> => \@cornersList + +Liste de réalisation des raccords de sommets [0 = pad de raccord (droit)| 1 = raccord circulaire]. +(par défaut [1,1,1,1]). + +=back + +=back + +Z<> + +=item B(coords, options); + +Retourne les coordonnées (curve) d'un hippodrome + +=over + +=item B : + +=over + +=item B => [[x0,y0],[x1,y1]] + + coordonnées haut-gauche et bas-droite du rectangle exinscrit à l'hippodrome. + +=back + +=item B : + +=over + +=item B<-orientation> => + +orientation forcée de l'hippodrome (sinon hauteur = plus petit coté). + +=item B<-corners> => \@cornersList + +Liste de réalisation des raccords de sommets [0 = pad de raccord (droit)| 1 = raccord circulaire]. +(par défaut [1,1,1,1]). + +=item B<-trunc> => + +troncatures des cotés circulaires de l'hippodrome. + +=back + +=back + +Z<> + +=item B(coords, options); + +Retourne les coordonnées (curve) d'une ellipse + +=over + +=item B : + +=over + +=item B => [[x0,y0],[x1,y1]] + + coordonnées haut-gauche et bas-droite du rectangle exinscrit. + +=back + +=item B : + +=over + +=item B<-corners> => \@cornersList + +Liste de réalisation des quadrants [0 = angle droit| 1 = raccord d'ellipse]. +(par défaut [1,1,1,1]). + +=back + +=back + +Z<> + +=item B(coords, options); + +Retourne les coordonnées d'une curve à coins arrondis. + +=over + +=item B : + +=over + +=item B => [[x0,y0],...[xn,yn]] + + coordonnées de la curve + +=back + +=item B : + +=over + +B<-radius> : +rayon de raccord des angles. par defaut 0 + +B<-corners> : +liste d'application du raccord circulaire aux angles sous forme booleenne +0 = sans raccord 1 = avec raccord. par defaut [1,1,...,1]. + +=back + +=back + +Z<> + +=item B(coords, options); + +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 + +=over + +=item B : + +=over + +=item B => [x0,y0] + + coordonnées du centre du cercle exinscrit au polygone/étoile + +=back + +=item B : + +=over + +B<-numsides> : nombre de cote du polygone ou nombre de branches de l'etoile + +B<-radius> : rayon du cercle exinscrit au polygone + +B<-startangle> : angle de depart du trace de la figure + +B<-inner_radius> : rayon du cercle des points 'internes' de l'etoile + +B<-corner_radius> : rayon des raccords d'angles + +B<-corners> : liste d'application du raccord aux angles sous forme booleenne +0 = sans raccord 1 = avec raccord. par defaut [1,1,1,1]. + +=back + +=back + +Z<> + +=item B(coords, options); + +Retourne les coordonnées d'une polyline, ligne 'brisée' multi-segments +avec raccords angulaires optionnels. + +=over + +=item B : + +=over + +=item B => [[x0,y0],...[xn,yn]] + + liste de coordonnées des sommets de la polyline + +=back + +=item B : + +=over + +B<-radius> : +rayon global de raccord des angles. par defaut 0 + +B<-corners> : +liste d'application du raccord circulaire aux angles sous forme booleenne +0 = sans raccord 1 = avec raccord. par defaut [1,1,...,1]. + +B<-corners_radius> : +Liste des rayons de raccord des angles. + +=back + +=back + +Z<> + +=item B(coords, options); + +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...) + +=over + +=item B : + +=over + +=item B => [[x0,y0],...[xn,yn]] + + coordonnées de la curve + +=back + +=item B : + +=over + +B<-width> : +épaisseur de la ligne. par defaut 1 + +B<-linecap> : <'butt'|'round'|'square'> +Forme des extrémités des tracés ouverts. + +B<-linejoin> : <'miter'|'round'|'bevel'> +Forme des sommets des tracés. + +B<-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) + +B<-dashoffset> : +distance décalage de départ dans le dessin du tireté (par défaut 0) + +=back + +=back + +Z<> + +=item B(coords, %options); + +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). + +=over + +=item B : + +=over + +=item B => [[x0,y0],...[xn,yn]] + + liste de coordonnées du path + +=back + +=item B : + +=over + +B<-closed> : +fermeture du tracé. par defaut 0 + +B<-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'. + +B<-width> : +Largeur du décalage de ligne (par défaut 2). + +=back + +=back + +Z<> + +=item B(coords, %options); + +retourne les coordonnées curve de 'décalage' par rapport à un path donné. + +=over + +=item B : + +=over + +=item B => [[x0,y0],...[xn,yn]] + + liste de coordonnées du path + +=back + +=item B : + +=over + +B<-closed> : +fermeture du tracé. par defaut 0 + +B<-shifting> : <'out'|'in'> +sens de décalage du path : 'out' (décalage externe) 'in' (décalage interne) par défaut 'out'. + +B<-width> : +Largeur du décalage de ligne (par défaut 1). + +=back + +=back + +Z<> + +=item B(coords, options); + +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. + +=over + +=item B : + +=over + +=item B => [[x0,y0],[x1,y1]] + + coordonnées haut-gauche et bas-droite de la BoundingBox du tabBox. + +=back + +=item B : + +=over + +B<-numpages> : nombre de pages du TabBox. + +B<-anchor> : <'n'|'e'|'s'|'w'> ancrage nord, est, sud ou ouest des onglets (par défaut 'n') + +B<-alignment> : <'left'|'center'|'right'> alignement gauche, centré ou droit des onglets sur l'ancrage (par défaut left) + +B<-tabwidth> : 'auto'| 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'). + +B<-tabheight> : 'auto'| hauteur des onglets (par défaut 'auto') + +B<-tabshift> : 'auto' offset de biseau entre la base et le haut de l'onglet (par défaut 'auto'). + +B<-overlap> : 'auto' offset de décalage entre 2 onglets (par défaut 'auto'). + +B<-radius> : +rayon des arrondis d'angle des onglets. (par défaut 0) + +B<-corners> : liste d'application du raccord aux angles sous forme booleenne +0 = sans raccord 1 = avec raccord. + +=back + +=back + +=back + +Z<> + +=head2 3. Création de reliefs et ombre portée + +Z<> + +=over + +=item B(widget, item, %options); + +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é). + +=over + +=item B : + +=over + +=item B + +identifiant du widget zinc. + +=item B + +identifiant de l'item zinc à mettre en relief. + +=back + +=item B : + +=over + +B<-closed> : fermeture (de forme) du relief (par défaut 1). + +B<-profil> : <'flat'|'rounded'> type de profil du relief (par défaut 'rounded'). + +B<-relief> : <'raised'|'sunken'> sens de l'embossage (par defaut 'raised'). + +B<-side> : position externe ou interne du relief (defaut 'inside'). + +B<-color> : couleur de base du relief (défaut couleur dominante de l'item). + +B<-smoothed> : lissage des 'facettes' du relief (par defaut 1). + +B<-lightangle> : angle de la lumiere (par defaut attribut -lightangle du widget). + +B<-width> : largeur du 'contour' relief. + +B<-fine> : mode precision courbe de bezier (par defaut 0 : auto-ajustee). + +=back + +=back + +Z<> + +=item B(widget, item, %options); + +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. + +=over + +B : + +=over + +B : identifiant du widget zinc + +B : identifiant de l'item zinc + +=back + +B : + +=over + +B<-opacity> : poucentage d'opacite de l'ombre (par defaut 50). + +B<-distance> : distance de projection de l'ombre (par defaut 10). + +B<-enlarging> : 'grossissement' cone de projection (defaut 0). + +B<-color> : couleur de l'ombre (par defaut black). + +B<-lightangle> : angle de la lumiere (par defaut attribut -lightangle du widget). + +B<-width> : largeur du perimetre de diffusion/diffraction (par defaut 4). + +=back + +=back + +=back + +Z<> + +=head2 4. Fonctions géométriques de base + +Z<> + +=over + +=item B(point, line); + +retourne les coordonnées du point perpendiculaire abaissé d'un point sur une ligne. + +=over + +=item B : + +=over + +=item B => [x, y] + + coordonnées du point de référence. + +=item B => [[x0, y0],[x1, y1]] + + liste de coordonnées des deux points de la ligne de référence. + +=back + +=back + +Z<> + + +=item B(startpoint, endpoint); + +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. + +=over + +=item B : + +=over + +=item B => [x, y] + + coordonnées du point de départ du segment (ou centre de référence). + +=item B => [x, y] + + coordonnées du point de fin du segment (ou point 'circulaire' de référence). + +=back + +=back + +Z<> + +=item B(startpoint, endpoint); + +retourne la valeur d'angle perpendiculaire à un vecteur (utilisée par exemple +pour mesurer l'incidence de lumière d'une facette). + +=over + +=item B : + +=over + +=item B => [x, y] + + coordonnées du point de départ du segment (ou centre de référence). + +=item B => [x, y] + + coordonnées du point de fin du segment (ou point 'circulaire' de référence). + +=back + +=back + +Z<> + +=item B(point0, point1, point2); + +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. + +=over + +=item B : + +=over + +=item B => [x, y] + + coordonnées du premier point de définition de l'angle. + +=item B => [x, y] + + coordonnées du deuxième point de définition de l'angle (sommet). + +=item B => [x, y] + + coordonnées du troisième point de définition de l'angle. + + +=back + +=back + +Z<> + +=item B(center, radius, %options); + +Calcul des points constitutifs d'un arc + +=over + +=item B : + +=over + +=item B
=> [x0,y0] + + coordonnées du centre de l'arc. + +=item B + + rayon de l'arc. + +=back + +=item B : + +=over + +=item B<-angle> + + angle de départ (en degré) de l'arc (par défaut 0) + +=item B<-extent> + + delta angulaire (en degré) de l'arc (par défaut 360) + +=item B<-step> + + pas de progression angulaire (en degré) de calcul des points (par défaut 10). + +=back + +=back + +Z<> + +=item B(center, radius, angle); + +Retourne le point circulaire défini par centre-rayon-angle. + +=over + +=item B : + +=over + +=item B
=> [x0,y0] + + coordonnées du centre de l'arc. + +=item B + + rayon de l'arc. + +=item B + + angle (en degré) du point de circonférence avec le centre du cercle. + +=back + +=back + +Z<> + +=item B(coords, %options); + +Calcul d'une approximation de segment (Quadratique ou Cubique) de bezier. + +=over + +=item B : + +=over + +=item B + + Liste de coordonnées des points définissant le segment de bezier. + +=back + +=item B : + +=over + +=item B<-tunits> + + nombre pas de division des segments bezier (par défaut 20) + +=item B<-skipend> + + ne pas retourner le dernier point du segment (pour chaînage de segments). + +=back + +=back + +Z<> + +=item B(t, coords); + +Calcul d'un point du segment (Quadratique ou Cubique) de bezier. +t représentation du temps (de 0 à 1). +coords = (P1, 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 : 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 + +=over + +=item B : + +=over + +=item B + + (de 0 à 1) représentation du temps. + +=item B + + Liste de coordonnées des points définissant le segment de bezier. + +=back + +=back + +Z<> + + +=item B(coords, %options); + +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). + +=over + +=item B : + +=over + +=item B + + Liste de coordonnées des points définissant le segment de bezier. + +=back + +=item B : + +=over + +=item B<-precision> + + seuil limite du calcul d'approche de la courbe (par défaut .2) + +=item B<-skipend> + + ne pas retourner le dernier point du segment (pour chaînage de segments). + +=back + +=back + +=back + +Z<> + +=head2 5. Gestion des ressources images + +Z<> + +=over + +=item B(filename, %options); + +retourne et partage la ressource image bitmap en l'initialisant et la stockant si première utilisation. + +=over + +=item B : + +=over + +=item B + + non du fichier bitmap pattern + +=back + +=item B : + +=over + +=item B<-storage> + + référence de la table de stockage privée des patterns. + +=back + +=back + +Z<> + +=item B(widget, filename, %options); + +retourne et partage la ressource image texture en l'initialisant et la stockant si première utilisation. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + non du fichier image texture + +=back + +=item B : + +=over + +=item B<-storage> + + référence de la table de stockage privée des textures. + +=back + +=back + +Z<> + +=item B(widget, filename, %options); + +retourne et partage la ressource image en l'initialisant et la stockant si première utilisation. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + non du fichier image + +=back + +=item B : + +=over + +=item B<-storage> + + référence de la table de stockage privée des images. + +=back + +=back + +Z<> + +=item B(widget, filenames, %options); + +Initialise et stocke un ensemble d'images. + +=over + +=item B : + +=over + +=item B + + identifiant du widget zinc. + +=item B + + Liste des fichier images à initialiser. + +=back + +=item B : + +=over + +=item B<-storage> + + référence de la table de stockage privée des images. + +=back + +=back + +=back + +Z<> + +=head2 6. Gestion des couleurs + +Z<> + +=over + +=item B(widget, gradients); + +Création de gradiants nommés Zinc + +=over + +=item B : + +=over + +=item B + + identifiant du widget Zinc + +=item B + + référence de la table de définition des gradiants zinc ('non' => 'zincGradient'). + +=back + +=back + +Z<> + +=item B(widget, item); + +retourne la couleur dominante d'un item ('barycentre' gradiant fillcolor). + +=over + +=item B : + +=over + +=item B + + identifiant du widget Zinc + +=item B + + identifiant de l'item zinc. + +=back + +=back + +Z<> + +=item B(color1, color2, rate); + +calcul d'une couleur intermédiaire défini par un ratio ($rate) entre 2 couleurs. + +=over + +=item B : + +=over + +=item B + + première couleur + +=item B + + première couleur + +=item B + + (de 0 à 1) position de la couleur intermédiaire. + +=back + +=back + +Z<> + +=item B(widget, steps, refcolors, repeat); + +création d'un jeu de couleurs intermédiaires (dégradé) entre n couleurs. + +=over + +=item B : + +=over + +=item B + + identifiant du widget Zinc + +=item B + + nombre totale de couleurs retournées. + +=item B + + liste de couleurs servant à créer le dégradé. + +=item B + + 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). + +=back + +=back + +Z<> + +=item B(color, newL); + +Modification d'une couleur par sa composante luminosité (exemple relief). + +=over + +=item B : + +=over + +=item B + + couleur au format zinc. + +=item B + + (de 0 à 1) nouvelle valeur de luminosité. + +=back + +=back + +Z<> + +=item B(zncolor); + +conversion d'une couleur Zinc hexa au format RGBA (255,255,255,100). + +=over + +=item B : + +=over + +=item B + + couleur au format hexa zinc (#ffffff ou #ffffffffffff). + +=back + +=back + +Z<> + +=item B(r, g, b); + +conversion d'une couleur de l'espace RGB à l'espace CIE LCH°. + +=over + +=item B : + +=over + +=item B + + (de 0 à 1) valeur de la composante rouge de la couleur RGB. + +=item B + + (de 0 à 1) valeur de la composante verte de la couleur RGB. + +=item B + + (de 0 à 1) valeur de la composante bleue de la couleur RGB. + +=back + +=back + +Z<> + +=item B(L, C, H); + +conversion d'une couleur de l'espace CIE LCH° à l'espace RGB. + +=over + +=item B : + +=over + +=item B + + (de 0 à 1) valeur de la composante luminosité de la couleur CIE LCH. + +=item B + +C : (de 0 à 1) valeur de la composante saturation de la couleur CIE LCH + +=item B + +H : (de 0 à 1) valeur de la composante teinte de la couleur CIE LCH + +=back + +=back + +Z<> + +=item B(r, g, b); + +conversion d'une couleur de l'espace RGB à l'espace HLS. + +=over + +=item B : + +=over + +=item B + + (de 0 à 1) valeur de la composante rouge de la couleur RGB. + +=item B + + (de 0 à 1) valeur de la composante verte de la couleur RGB. + +=item B + + (de 0 à 1) valeur de la composante bleue de la couleur RGB. + +=back + +=back + +Z<> + +=item B(H, L, S); + +conversion d'une couleur de l'espace HLS à l'espace RGB. + +=over + +=item B : + +=over + +=item B + + (de 0 à 1) valeur de la composante teinte de la couleur HLS. + +=item B + +C : (de 0 à 1) valeur de la composante luminosité de la couleur HLS. + +=item B + +H : (de 0 à 1) valeur de la composante saturation de la couleur HLS. + +=back + +=back + +Z<> + +=item B(r, g, b, a); + +conversion d'une couleur RGBA (255,255,255,100) au format Zinc '#ffffff'. + +=over + +=item B : + +=over + +=item B + + (0 à 255) composante rouge de la couleur rgba. + +=item B + + (0 à 255) composante verte de la couleur rgba. + +=item B + + (0 à 255) composante bleue de la couleur rgba. + +=item B + + (0 à 255) composante alpha de la couleur rgba. + +=back + +=back + +Z<> + +=back + +Z<> + + +=head1 EXEMPLE + +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); + +=head1 AUTEURS + +Jean-Luc Vinot -- cgit v1.1