Previous Next Up Title Contents General Index Functions Index Bookshelf

1.3.6. L'AFFICHAGE D'UN RÉSEAU DE STRUCTURES SUR UN POSTE DE TRAVAIL

Une fois le réseau de structure créé, l'étape suivante consiste à afficher l'ensemble des structures de ce réseau. La fonction PPOST établit un lien entre un réseau de structures et un poste de travail. Si ce lien n'existe pas, aucune structure du réseau n'est affichée.

PPOST possède 3 paramètres : l'identificateur (WKID) du poste de travail , l'identificateur (STRID) de la structure racine du réseau, et une priorité spécifiant l'ordre relatif d'affichage lorsque plusieurs réseaux doivent être affichés. Lorsque on appelle la fonction PPOST (WKID, STRID, priority), on dit que la structure STRID est postée sur le poste de travail WKID.

Pour que toutes les structures d'un réseau soient affichées, il est nécessaire et suffisant de poster la structure racine de ce réseau (il ne faut pas poster toutes les structures du réseau). Si la CSS est composée de plusieurs réseaux (quand la CSS n'est pas connexe), il faut poster les racines de tous les réseaux afin d'afficher tous ces réseaux. L'ordre d'affichage de ces réseaux est alors déterminé par la priorité (3ième paramètre de la fonction PPOST).

Le lien entre un réseau de structures et un poste de travail reste établi même après une modification de ce réseau. Il est donc inutile de réappeler PPOST après une modification du réseau. Pour supprimer un lien entre un réseau et un poste de travail, il faut appeler PUPOST (qui rompt un lien d'un réseau) ou appeler PUPAST (qui rompt tous les liens d'un poste de travail) ou changer l'identificateur de structure de la racine du réseau.

Le traversal et la porté des attributs

Le fait de poster une structure n'implique pas en général son affichage sur le poste de travail. Pour réaliser cette affichage, il faut appeler la fonction PRST (WKID, ...). Celle ci se charge d'afficher toutes les structures de tous les réseaux postés sur le poste de travail.

PRST active un processus appelé traversal qui permet en parcourant un réseau de structures de générer sur le poste de travail, les éléments graphiques constituant le réseau.

Le traversal est le processus qui interprète et exécute les éléments de structure, applique les transformations géométriques, associe les attributs aux primitives et affiche l'image résultante. Le traversal d'un réseau commence à l'élément 1 de la structure racine, les éléments sont ensuite traités séquentiellement et l'analyse se termine au dernier élément de la structure racine. Lorsque le réseau est composé de plusieurs structures (la racine possède au moins un élément PEXST) le traversal interprète les premiers éléments de la structure racine jusqu'au premier élément PEXST(S). Le traversal de la structure racine est interrompu, et un traversal de la structure d'identificateur S est lancé. Lorsque ce dernier est fini, le traversal de la structure racine est relancé à partir de l'élément suivant le PEXST (S).

Le schéma suivant donne un exemple de CSS (les éléments e**) sont quelconques sauf de type PEXST

Si la fonction PPOST (WKID, S3, 0.) est appelée, le traversal déclenché par l'appel à PRST interprétera les éléments de structure e** dans l'ordre suivant :

e31 - e41 - e42 - e43 - e44 - e45 - e33 - e21- e22 - e41 - e42 - e43 - e44 - e45 - e24 - e25 - e35

On remarque que pour l'exemple précédent, si certains des éléments e4* sont des primitives graphiques, celles ci seront affichées 2 fois sur le poste de travail WKID.

Si ensuite la fonction PPOST (WKID, S2, 1.) est appelée, le traversal déclenché par l'appel à PRST interprétera les éléments de structure e** dans l'ordre suivant :

e31 - e41 - e42 - e43 - e44 - e45 - e33 - e21- e22 - e41 - e42 - e43 - e44 - e45 - e24 - e25 - e35

e21- e22 - e41 - e42 - e43 - e44 - e45 - e24 - e25 - e35

Deux réseaux de structures (un de racine S3 et l'autre de racine S2) ont été postés sur le poste de travail WKID, donc ici cela entraîne 3 parcours de la structure S4 par le traversal. Remarque : le traversal commence par afficher le réseau dont la priorité est la plus faible (c'est le 3ième paramètre de la fonction PPOST).

Pendant le traversal , le système garde une trace de la valeur courante des attributs. La valeur courante d'un attribut peut être une valeur par défaut, une valeur héritée, ou une valeur assignée qui est le résultat d'un élément d'assignation d'attribut. Chaque fois que le traversal analyse une primitive graphique, il lui applique la valeur courante des attributs et des transformations.

Lorsque le traversal d'une structure mère rencontre un élément PEXST (fille), ce traversal est suspendu, les attributs courants sont sauvegardés dans une pile et un traversal de la structure fille est lancé. Lorsque ce dernier est terminé, les attributs de la pile sont restitués et le traversal de la structure mère reprend là où il avait été suspendu.

Ce concept d'héritage des attributs permet d'appeler une structure à partir de plusieurs structures mères avec des valeurs d'attributs différentes à chaque fois. La structure fille peut également modifier la valeur des attributs et des transformations sans affecter l'environnement des structures mères.

Exemple d'héritage des attributs PSTXCI text colr index et PSPLCI line colr index avec la CSS suivante :

Si la fonction PPOST (WKID, S3, 0.) est appelée, les primitives sont affichées par le traversal dans l'ordre suivant et avec les attributs suivants :

la primitive PPL (nump1,...) est affichée avec un line colr index =1

la primitive PTX (...,'text1') est affichée avec un text colr index =3

la primitive PPL (nump3,...) est affichée avec un line colr index =1

la primitive PPL (nump5,...) est affichée avec un line colr index =2

la primitive PTX (...,'text2') est affichée avec un text colr index =3

la primitive PPL (nump6,...) est affichée avec un line colr index =4

la primitive PPL (nump7,...) est affichée avec un line colr index =4

la primitive PPL (nump4,...) est affichée avec un line colr index =2

la primitive PPL (nump2,...) est affichée avec un line colr index =1

Remarque : Dans cet exemple, la fonction PSTXCI étant présente uniquement au début de la structure racine S3, l'attribut couleur de texte est pris en compte par toutes les primitives text des 3 structures.


Previous Next Up Title Contents General Index Functions Index Bookshelf