Tk::Zinc, une extension openGL au canvas Tk

Tk::Zinc, une extension openGL au canvas Tk

Par Christophe Mertz de Toulouse.pm
Date : lundi 7 juin 2004 11h00
Durée : 40 minutes
Langue :


Le widget TkZinc est similaire par son usage à Tk::Canvas car ils supportent tous les deux des graphiques semi-structurés en 2D. Tout comme Tk::Canvas, Tk::Zinc propose des items pour afficher des entités graphiques. Ces items peuvent être modifiés, et des callbacks peuvent y être attachées pour réaliser des comportement interactifs.

Cependant, Tk::Zinc offre de nombreuses extensions à Tk::Canvas:
- Tk::Zinc permet de structurer plus fortement, sous forme arborescente, les objets graphiques grâce aux items "group".
- Tk::Zinc supporte les transformations affines 2D (i.e. translation, zoom, rotation), ainsi que le cisaillement (skew)
- TkZinc peut découper (clipper) une hiérarchie d'objets à travers le contour d'un item
- TkZinc offre des items "curve" qui peuvent avoir plusieurs contours, et qui mêlent segments de droite et courbes de bezier
- TkZinc peut utiliser openGL en 2D pour offrir de nouvelles fonctions comme l'anti-aliasing, la transparence, les gradients de couleur et de transparence, ainsi qu'un nouvel item: "triangles". L'utilisation des caractéristiques openGL se fait extrêmement simplement, de manière homogène et ne nécessite évidemment aucune compétence de programmation en openGL.
- Tk::Zinc propose aussi des items dédiés au contrôle aérien pour faciliter considérablement le prototypage d'Image Radar

Tk::Zinc permet ainsi d'utiliser des caractéristiques openGL pour des Interfaces Homme-Machine en 2D.

Pendant la présentation, nous présenterons aussi quelques démonstrations rapides de prototypes pour le contrôle aérien, mais aussi des IHMs plus générales. Ces démonstrations montreront les possiblilités graphiques de Tk::Zinc. Nous présenterons aussi rapidement un convertisseur SVG (format XML pour des graphiques vectoriels) vers Tk::Zinc.

Pour le plaisir et le fun, la présentation sera faite avec zpresenter, un portage de PPresenter en Tk::Zinc (en remplacement de Tk::Canvas) et qui tire parti des effets offert par openGL en 2D.

TkZinc fonctionne actuellement sous linux, et MacOSX en perl (mais aussi en Tcl) et sous windows (pour l'instant uniquement en Tcl, mais peut-être en Perl pour la conférence).

TkZinc est disponible sous licence LGPL (actuellement www.openatc.org/zinc, mais un wiki devrait petre ouvert sur www.tkzinc.org d'ici Juin 2004).

TkZinc est disponible avec un manuel de référence exhaustif (en anglais), ainsi qu'un ensemble de près de 40 petites démonstrations. Des modules Perl d'extension de Tk::Zinc sont également fournis comme :
- Tk::Zinc::ZincDebug, développé par D. Etienne pour butiner (browser en franglais) et modifier la hiérarchie d'items d'une application
- Tk::Zinc::TraceErrors, pour tracer des erreurs dans une application
- Tk::Zinc::graphics, développé par JL. Vinot, graphiste, pour générer facielment des objets graphiques de haut niveau et grande qualité

TkZinc a été utilisé avec succès pour le prototypage d'IHM pour le contrôle aérien au CENA (Centre d'Etudes de la Navigation Aérienne) à Athis-Mons et Toulouse. Actuellement près de 20 développeurs utilisent Tk::Zinc au CENA. IntuiLab, une startup toulousaine issue du CENA, et spécialisée dans les IHM innovantes utilise intensivement Tk::Zinc (près de 10 développeurs!)