Satimage Précédent | Suivant
La graphic window
Accueil Documentation SmileLab Scripting Les objets graphiques La graphic window  
Table des matières
Introduction
Smile vous permet de créer et d'utiliser différents types de fenêtres, par exemple des fenêtres de texte (de classe text window) ou encore des fenêtres de script (de classe script window).
La fenêtre graphique (de classe graphic window) est le type de fenêtres dans lesquelles Smile vous permet de réaliser tous les graphiques, notamment en exploitant la bibliothèque graphique d'ordres PDF. Smile ouvre les documents PDF dans des graphic windows et permet d'enregistrer une graphic window comme PDF.
Dans SmileLab les graphic windows jouent un rôle particulier : ce sont elles qui contiennent les objets que vous utiliserez pour visualiser les données numériques, objets regroupés dans la classe graphic views.
Le système de coordonnées
Une graphic window définit une page PDF, le rectangle blanc que vous voyez se détacher sur un fond gris quand vous agrandissez la fenêtre. La graphic window définit dans cette page PDF un système de coordonnées global (x,y) (vous verrez que certains objets graphiques définissent également un système de coordonnées locales) dont les valeurs sont réelles et dont l'échelle est le pixel (1/72 de pouce soit 0,353 mm). Les axes sont orientés vers le haut et vers la droite. Lorsqu'on clique dans une fenêtre graphique, les coordonnées du curseur dans ce repère s'affichent par défaut dans la barre d'outil de la fenêtre.

Les dimensions horizontale et verticale de la page PDF correspondent aux propriétés pagewidth et pageheight de la graphic window. Pour modifier les dimensions du PDF final, modifiez ces propriétés. Vous pouvez indiquer leurs valeurs, soit par défaut en pixels, soit en utilisant le mot-clé as en centimètres ou en pouces (cf exemple ci-dessous). La lecture des propriétés pagewidth et pageheight, elle, rend toujours un résultat exprimé en pixels.

set w to make new graphic window
-- definit un A5 au format paysage
set pagewidth of w to 20.9903 as centimeters
set pageheight of w to 14.8519 as centimeters

Bien que cela n'ait pas d'influence sur le PDF final, il est commode, quand on modifie les dimensions pagewidth et pageheight de la page PDF, d'adapter les dimensions width et height de la fenêtre en conséquence. Celles-ci sont également spécifiées en pixels. Compte tenu des dimensions standard des barres de défilement et de la barre de titre de la fenêtre, vous devez appliquer les décalages suivants :

set width of w to pagewidth of w + 16
set height of w to pageheight of w + 16 + 22

Quand le mode édition d'une fenêtre graphique est activé (menu Edition ▸ Mode édition) on peut déplacer le graphique qu'il contient en bloc, en appuyant sur la touche ⌥ (le curseur affiche alors une main). Quand on déplace le graphique, en réalité on ne modifie pas les coordonnées des objets graphiques, mais on modifie l'origine du repère de la page PDF. Par exemple si on déplace le graphique vers le coin supérieur droit, en réalité on fait rentrer l'origine à l'intérieur de la page PDF.
Pour modifier l'origine des coordonnées de la page PDF (ou pour restaurer la valeur par défaut {0, 0}), utilisez la propriété frame. Celle-ci est une liste de quatre nombre réels en pixels, {x0, y0, dx, dy} : {x0, y0} sont les coordonnées du coin inférieur gauche de la page PDF, et {dx, dy} sont en réalité pagewidth et pageheight.

Options d'affichage de la graphic window
  • Il est nécessaire d'appeler explicitement la commande draw pour rafraîchir une graphic window. Cette fonctionnalité permet de manipuler des graphiques contenant de gros volumes de données sans perdre du temps processeur à rafraîchir des fenêtres lorsque cela est inutile.
  • Pour donner à la fenêtre graphique un fond coloré à la place du fond blanc qu'elle a par défaut, réglez sa propriété fill color à une valeur de couleur RVB. Une couleur RVB est une liste de trois ou quatre nombres réels {r, g, b, a} entre 0 et 1, les composantes rouge, verte et bleue et l'opacité, optionnelle.
  • La fenêtre graphique possède deux propriétés susceptibles de contenir un graphique PDF (par exemple, le contenu d'un fichier PDF) et destinées à lui permettre d'afficher des graphiques personnalisés : front pdf et back pdf. Lorsque la fenêtre graphique rafraîchit son affichage, elle dessine --- dans cet ordre --- le fond de couleur fill color, le PDF stocké dans back pdf, les objets graphiques de visualisation de données (les graphic views) et enfin le PDF stocké dans front pdf.

    Pour afficher un document PDF dans une fenêtre graphique, mettez le contenu du fichier PDF dans une des propriétés back pdf ou front pdf puis appliquez à cette propriété le verbe close pour clôturer le PDF. Enfin, utilisez le verbe draw pour forcer l'affichage à se rafraîchir.

    set thepdf to read (choose file) -- choisir un fichier
    set w to make new graphic window
    set back pdf of w to thepdf
    close back pdf of w
    draw w
    Si un document PDF a plusieurs pages, Smile n'affiche par défaut que la première page.

  • au lieu d'utiliser un document PDF existant, vous pouvez réaliser le PDF par script, une fois pour toutes, ou bien dynamiquement par exemple pour les besoins d'une animation. La bibliothèque graphique de Smile (Graphic Library) permet cela. Pour réaliser un PDF par script dans back pdf, n'utilisez pas directement cette propriété. Utilisez --- comme indiqué dans la documentation --- les macro-commandes BeginFigure(w) ... EndFigure(), en passant dans w une référence à la fenêtre graphique. Entre ces commandes, rédigez les commandes graphiques qui définiront le graphique.
    L'exemple ci-dessous trace un cadre bleu clair.
    set w to make new graphic window
    BeginFigure(w)
    SetPenColor({0.8, 0.8, 1, 1})
    SetPenWidth(10)
    RectPath(frame of w)
    DrawPath(2) -- 2 = contours uniquement
    EndFigure()
    draw w

    Pour réaliser un PDF par script dans front pdf, encapsulez les commandes graphiques entre BeginFrontFigure(w) et EndFrontFigure().
    L'exemple ci-dessous affiche un message semi-transparent dans une nouvelle fenêtre graphique.

    set w to make new graphic window
    QuickCurve({}, randomarray 10, w)
    BeginFrontFigure(w)
    SetTextFont("Times New Roman")
    SetTextSize(72)
    SetFillColor({0, 0, 0, 0.3})
    SetPenColor({0, 0, 0, 0.3})
    TextMoveTo({100, 200})
    DrawString("Classified")
    EndFrontFigure()
    (L'exemple ci-dessus utilise QuickCurve, une commande de la bibliothèque QuickPlotLib)

  • Lorsque vous créez plusieurs graphiques (plusieurs graphic views) dans une fenêtre graphique, le premier graphique est centré dans la page PDF, et les suivants se créent avec des décalages croissants vers la droite et le bas.
    Pour positionner plusieurs graphiques sur la même page PDF de façon régulière, utilisez la propriété grid, une liste de deux entiers {i, j} ({1, 1} par défaut). La propriété grid spécifie que les i.j (premiers) graphiques seront disposés suivant un i colonnes de j rangées. Par exemple {3, 2} indique que si vous créez six graphiques ils seront disposés (par défaut) suivant deux rangées de trois.
    set w to make new graphic window with properties {grid: {2, 1}}
  • L'affichage des noms des différentes graphic views est assuré par la fenêtre graphique elle-même. Elle affiche le nom de chaque graphic view centré sur la graphic view. Vous pouvez modifier la hauteur à laquelle la fenêtre graphique affiche le nom de ses graphic views au moyen de la propriété title offset (11.0 par défaut). title offset indique, en pixels, à quelle distance au-dessus de son axe supérieur le nom de la graphic view s'affiche. Les propriétés text font et text size de la graphic window permettent de choisir la police utilisée pour afficher le nom des graphic view.
  • Lorsque vous créez une fenêtre graphique, puis lorsque vous y créez des graphic views, chacun de ces objets va prendre un ensemble de réglages par défaut, sous la forme de valeurs par défaut pour ses propriétés. Ces valeurs par défaut sont stockées dans un fichier, connu par la fenêtre graphique comme étant sa propriété template. Vous pouvez indiquer à la fenêtre graphique d'utiliser un autre fichier comme template. Ceci est à rechercher, par exemple si vous travaillez en couleurs mais que vous souhaitez produire un document en noir et blanc. La manipulation des templates est décrite dans la page Personnalisation des réglages par défaut.
  • Pour afficher une fenêtre graphique en plein écran, vous pouvez régler ses propriétés has title bar et toolbar visible à false pour cacher la barre de titre et la barre d'outils de la fenêtre, régler sa propriété autohide scroll bars à true pour cacher les scrollbars, et régler ses propriétés pageheight et pagewidth aux dimensions de l'écran (que vous pouvez obtenir avec get my screen bounds). Avant de créer cette fenêtre, vous pouvez cacher la barre de menu de l'application : set my menu bar visible to false (la barre de menu est toujours accessible en amenant la souris en haut de l'écran).
    L'exemple suivant crée une fenêtre graphique vide en plein écran.
    set my menu bar visible to false
    set {x, y, xx, yy} to get my screen bounds
    set w to make new graphic window with properties {toolbar visible:false, has title bar:false, autohide scroll bars:true, pagewidth:xx, pageheight:yy}
    -- pour faire revenir la barre de menu, exécutez la ligne suivante :
    -- set my menu bar visible to true
Autres options de la graphic window
  • Par défaut les graphic windows sont créées avec des barres de défilement vous permettant de faire défiler le contenu de la fenêtre. Vous pouvez régler la longueur des barres de défilement en utilisant la propriété margins.
  • Lors de tests, vous pouvez être amené à créer successivement --- puis à fermer --- de nombreuses fenêtres graphiques. Intéressez-vous alors à la propriété never save : quand vous fermez une fenêtre graphique dont la propriété never save est réglée sur true, Smile ferme immédiatement la fenêtre sans afficher l'alerte Enregistrer les modifications avant de fermer ?. Naturellement, c'est une propriété à ne pas utiliser systématiquement.
    set w to make new graphic window with properties {never save: true}
  • Vous pouvez régler un niveau de zoom des fenêtres graphiques grâce à la propriété scale.
  • La propriété movie file s'utilise pour réaliser une séquence vidéo (un movie QuickTime) à partir des graphiques affichés dans la fenêtre graphique. Vous trouverez plus d'information concernant la propriété movie file dans la page Enregistrement d'une séquence QuickTime.
  • Les graphic window ont une propriété eye position qui est modifiée lorsque vous déplacez la souris sur la fenêtre de la même façon que pour tourner les vues 3D. Vous pouvez utiliser cette propriété pour gérer la rotation d"un objet 3D que vous dessinez directement dans la fenêtre graphique.
English version
Copyright ©2008 Paris, Satimage