Le modèle de document qui est à la base de l'éditeur Thot permet de manipuler des graphiques aussi bien que du texte, avec les mêmes outils. Il n'y a donc pas d'éditeur graphique à proprement parler dans Thot, bien qu'on puisse éditer et traiter des graphiques à l'intérieur des documents. Il suffit pour cela de définir des schémas de structure (voir section 1) représentant les graphiques à traiter et les schémas de présentation correspondants (voir section 8). De tels schémas sont disponibles dans la configuration standard de Thot. Ils permettent notamment de traiter des graphiques structurés et des arbres. C'est l'utilisation de ces schémas qui est présentée dans les deux sections suivantes. En développant d'autres schémas, on peut éditer d'autres types de graphiques (voir section 24).
Les graphiques structurés sont définis par le schéma de structure Draw2. Dans ce schéma, la structure représente l'emboîtement des éléments les uns dans les autres et les attributs définissent les relations géométriques entre éléments, comme les centrages, les alignements, etc. Avec ce schéma, les commandes de changement de position ou de dimension (Control-Clic, voir section 8.3.5) présentent un grand intérêt.
Le dessin de la 6 est construit selon le schéma Draw2. Dans ce dessin, on peut par exemple modifier la hauteur de la boîte « Schéma de structure » en positionnant le curseur dans la boîte et en déplaçant la souris en maintenant enfoncés la touche Control et le bouton du milieu de la souris ; cela entraîne le recentrage du texte contenu dans la boîte, le déplacement vertical de la boîte « Schéma de présentation », avec son texte, et l'ajustement des deux flèches. On peut aussi déplacer (Control + bouton gauche de la souris) la boîte « Éditeur Thot », ce qui entraîne le texte qu'elle contient et les deux flèches.
[Here is a Drawing]Figure 6 - un graphique structuré
Avec le schéma Draw2, un dessin est formé d'un ensemble d'Objets créés successivement. Un Objet est créé, comme tout élément dans Thot, par la commande « Insérer » du menu « Édition », par le bouton droit de la souris ou par la touche Return (voir section 4.3). Dès qu'il est créé, il doit être positionné et dimensionné à l'aide de la souris : tant qu'aucun bouton de la souris n'est pressé, le « fantôme » de l'objet suit les mouvements de la souris. Lorsqu'il est à la position souhaitée, on presse le bouton gauche de la souris et on déplace à nouveau la souris, en maintenant ce bouton enfoncé pour déterminer les dimensions de l'objet. Dès que le bouton est relâché, l'objet est figé, mais il peut encore être déplacé et retaillé par Control-Clic (voir section 8.3.5).
On choisit le type d'un Objet à travers un menu qui apparaît lors de la création. Un Objet peut être :
Le cas particulier des lignes courbes et brisées est traité section 18.1.6.
L'attribut Cadrage appliqué à un Objet_Texte détermine la position des lignes de texte dans la boîte.
La position du texte dans le cadre est déterminée par l'attribut Position_label appliqué à l'élément Label.
Lors de la création d'un Groupe, l'éditeur demande immédiatement le type du premier Objet du Groupe et il crée ce premier Objet, de la même façon que tout autre Objet. C'est la position de ce premier Objet (exactement, la position de son coin supérieur gauche) qui détermine celle du Groupe.
Les Objets du Groupe sont par défaut positionnés par rapport au coin supérieur gauche de l'élément Groupe (voir section 18.1.4). Après leur création, ils peuvent être déplacés à l'intérieur du Groupe, mais sans dépasser son côté gauche ou son côté supérieur. Pour contourner cette contrainte, on peut déplacer tout le Groupe.
Lorsqu'un lien est créé l'éditeur demande qu'on clique successivement sur les deux Objets qui marquent l'origine et la fin du lien. Un rectangle gris apparaît alors à la position du lien et on choisit le tracé du lien dans la palette des graphiques de base.
Après la création, il est toujours possible de changer l'un ou l'autre (ou les deux) des Objets auxquels le lien est attaché. Cela se fait en sélectionnant l'élément lien (pas le graphique de base, mais sa boîte englobante) et en modifiant l'un ou l'autre des deux attributs Org_lienX ou Fin_lienX.
Pour tous les types de liens disponibles, l'origine est au centre de l'Objet désigné par l'attribut Org_lienX (le premier désigné lors de la création du lien). La position de la fin du lien par rapport à l'objet désigné par l'attribut Fin_lienX dépend du type de lien :
Les attributs Hauteur et Largeur contrôlent les dimensions des Objets. Il y a deux façons de modifier la valeur de ces attributs :
Lors de leur création, les Objets sont positionnés à l'aide de la souris. Ils peuvent ensuite être déplacés par Control-clic (voir section 8.3.5). Les attributs PositionV et PositionH permettent d'afficher et de modifier la position de l'élément selon l'axe vertical et l'axe horizontal. Ces attributs indiquent la distance, exprimée en points typographiques, du coin supérieur gauche de l'Objet par rapport au coin supérieur gauche de l'élément englobant (l'élément Draw2 ou le Groupe). Ils sont automatiquement mis à jour lors du déplacement de l'Objet à l'aide de la souris.
Les positions des différents Objets sont indépendantes les unes des autres (sauf pour les Liens et les Objets d'un même Groupe), mais on peut aussi exprimer des relations de position entre Objets à l'aide des attributs suivants :
Les attributs qui fixent la position verticale sont exclusifs les uns des autres. Il en est de même des attributs qui fixent la position horizontale des éléments graphiques. Pour chaque élément, le menu des attributs visualise les attributs qui s'y appliquent par une étoile.
Quand l'utilisateur demande l'alignement d'un élément graphique sur un autre élément graphique (désigné après avoir choisi l'attribut), l'alignement est immédiatement appliqué et tout déplacement de l'élément de référence (celui qui est désigné) déplace en conséquence l'élément aligné. Après avoir aligné l'élément, l'utilisateur peut décaler l'élément aligné par control clic (voir section 8.3.5). Ce décalage entre les deux éléments est alors conservé lors des déplacements de l'élément de référence. Le décalage est perdu si l'utilisateur redemande l'alignement des éléments.
L'attribut Plan peut être appliqué à n'importe quel Objet. Cet attribut permet de régler le problème de la superposition des Objets, en déterminant la profondeur à laquelle les éléments graphiques sont affichés. Le plan 0 correspond au premier plan de l'écran. Les valeurs supérieures (1, 2, 3, etc.) correspondent à des profondeurs de plus en plus grandes. L'affichage et la sélection tiennent compte des plans affectés aux éléments. Les éléments dont la valeur de plan est la plus faible peuvent masquer (si ces éléments possèdent un fond opaque) les éléments dont la valeur de plan est plus élevée.
Les Boites, grâce à l'attribut Aspect, peuvent avoir un cadre avec un fond et une ombre. Le Label, le cadre et l'ombre sont chacun à une profondeur différente, de façon que la superposition donne le résultat recherché. Selon son attribut Plan, un autre Objet peut se glisser entre le Label et le cadre ou entre le cadre et l'ombre. Pour être sûr que cet autre Objet soit derrière l'ombre, en cas de superposition, il doit avoir une valeur de l'attribut Plan au moins supérieure de 3 à celle de la Boite.
Les liens aussi bien que les Objet_graphiques peuvent être des lignes brisées ou courbes, ouvertes ou fermées, terminées ou non par des flèches à leurs extrémités : la palette des éléments graphiques de base permet de créer de telles formes (douze dernières cellules de la palette). Ces lignes sont déterminées par des points par lesquels elles doivent passer : les points de contrôle.
On peut appliquer à ces lignes tous les changements d'aspect graphique et de couleur décrits en 8.3.2 et 8.3.3. Il y a en plus quelques opérations spécifiques :
Le dessin de la 7 est un dessin structuré, mais il n'est pas construit selon le schéma Draw2 (voir section 18.1) ; il utilise un schéma de structure plus spécialisé, celui des arbres (le schéma de structure s'appelle Arbre2).
Figure 7 - un arbre
Un élément Arbre2 est formé de deux éléments : un Noeud racine et un élément Descendants. L'élément Descendants contient un ou plusieurs éléments Sous_arbres, chacun ayant la même structure que Arbre2. La structure est donc récursive ; on peut s'en apercevoir en sélectionnant l'une des feuilles de l'arbre ci-dessus et en remontant dans la structure avec la touche Esc.
Comme un Objet_Texte d'un graphique, un Noeud contient une chaîne de caractères (TEXTE) ou une succession de chaînes de caractères et d'éléments, appelés Unités, qui peuvent être, selon le contexte où se trouve l'arbre, des références à d'autres éléments du document (sections, notes, figures, etc.). Cela permet notamment d'inclure des renvois à l'intérieur des textes qui apparaissent dans un arbre, comme dans le Troisième fils de la racine de la 7.
Cette structure est manipulée avec les mêmes commandes que le reste du document (voir section 4).
Un même arbre peut être présenté graphiquement de différentes façons. Pour cela, il suffit de sélectionner l'arbre entier (par exemple en cliquant à côté de l'élément racine) et de modifier un ou plusieurs des attributs Disposition, Largeur_noeuds ou Cadre_Noeuds.
L'organisation graphique de l'arbre change selon la valeur de l'attribut Disposition :
L'attribut Largeur_noeuds permet de contrôler la largeur des noeuds de l'arbre :
Lorsqu'on utilise une disposition en liste indentée, on peut supprimer cet attribut : chaque noeud utilise alors toute la largeur disponible pour l'arbre.
L'attribut Cadre_Noeuds permet de contrôler la présence et l'aspect du cadre tracé autour des noeuds. Cet attribut peut s'appliquer soit à l'arbre entier soit à un Sous_arbre. Différents sous-arbres peuvent ainsi être affichés avec des noeuds d'aspect différent.
On peut aussi modifier l'aspect graphique des noeuds d'un sous-arbre en sélectionnant ce sous-arbre et en lui appliquant une commande du menu « Présentation » (voir section 8).
La palette de couleurs (voir section 8.3.3) permet de changer la couleur de fond des noeuds d'un sous-arbre ou la couleur de ses textes et traits.
Un noeud ou un sous-arbre peut être déplacé à l'aide de la souris (en maintenant la touche Control enfoncée, comme expliqué section 8.3.5). La dimension d'un noeud peut aussi être changée par le même moyen, sauf dans le cas où on a choisi une largeur de noeuds variable.