Previous Next Up Title Contents General Index Functions Index Bookshelf

PRESENTATION DES GRADUATIONS CALENDAIRES

tset_axis_date_rep


SEQUENCE D'APPEL

int tset_axis_date_rep (strid, num_grad_rep, cal_grad_rep, times_period)

PARAMETRES EN ENTREE

Pint	strid;
Pint	num_grad_rep;
char	**cal_grad_rep;
char	*times_period;

ARGUMENTS

strid
Identificateur de structure
num_grad_rep
Nombre de représentations différentes des graduations calendaires.
cal_grad_rep
Liste de num_grad_rep représentations différentes des graduations calendaires
times_period
0 ou chaine contenant num_grad_rep-1 sous-chaines spécifiant chacune une durée servant au choix de la représentation des graduations calendaires. Si 0, PHIGURE effectue automatiquement ce choix

EFFET

Cette fonction définit une liste de différentes représentations des graduations calendaires d'un axe, associée à une éventuelle liste de durée. Si elle est donnée, la liste de durées doit contenir un élément de moins que la liste de représentations. Cette association entre ces 2 listes permet à tout axe généré par la fonction tx_time_axis ou ty_time_axis d'adapter la présentation des graduations en fonction de la durée séparant les dates origines et extrémités de l'axe.

soit [delta] la durée entre date1 et date2 (dates origine et extrémité de l'axe d'identificateur strid), et soit Di (0<=i<num_grad_rep-1) l'ensemble de toutes les durées définies par le paramètre times_period. Le choix du numéro de la représentation s'effectue comme suit :

si [delta] < D0 l'axe est construit avec la réprésentation cal_grad_rep[0]

si Di <= [delta] < Di+1 l'axe est construit avec la représentation cal_grad_rep[i+1]

si Dnum_grad_rep-2 < [delta] l'axe est construit avec la représentation cal_grad_rep[num_grad_rep-1]

Si la liste des durées n'est pas précisée (pointeur nul ou chaine vide), le numéro de la réprésentation n'est pas choisit en fonction de [delta]. Il est choisit en fonction des pas calendaires indiqués dans chaque représentation.

Syntaxe de la chaine times_period définissant l'ensemble des durées. C'est un langage rationnel défini par :

times_period = ([r]U)*

où <U> est l'unité de temps au choix entre SEC, MIN, HOU, DAY, YEA

où <[r]> est un réél positif optionnel précisant le nombre d'unités (=1 si r n'est pas précisé)

([r]U)* signifie que la séquence [r]U peut être répétée 0 ou plusieurs fois

les caractères "espace" sont systématiquement ignorés

exemples

times_period = "10SEC 20MIN HOU"

spécifie 3 durées : 10 secondes, 20 minutes et 1 heures

times_period = "0.2SEC 30MIN 10DAY 2YEA"

spécifie 4 durées : 0.2 secondes, 30 minutes, 10 jours et 2 ans

remarque : pour toute unité différente de SEC seule la partie entière de <r> est utilisée. Il est donc inutile de préciser une partie décimale.

Une représentation de graduations calendaires permet

Une représentation des graduations est définie par :

le nombre de niveaux de graduations

pour chaque niveau

le pas de graduations (nombre de secondes, de minutes, d'heures, de jours, de mois ou d'années)

une éventuelle chaine de caractères précédant le premier indicateur

une suite d'indicateurs de présentation d'une des composantes de date, suivi d'une éventuelle chaine de caractères

Les différents niveaux de graduations sont présentés les uns en dessous des autres si l'axe est horizontal et les uns à gauche des autres si l'axe est vertical. Le premier niveau est le plus prés du trait principal de l'axe, le dernier niveau étant le plus éloigné. Les composantes d'une date sont les secondes, les minutes, les heures, les jours, les mois et les années.

Syntaxe de la chaine cal_grad_rep[i] définissant la i-ième représentation de date. C'est un langage rationnel défini par :

cal_grad_rep[i] = R(/R)*

où </> représente le caractère saut de ligne courant (cf tset_new_line_ctrl) (il précède la description d'un niveau supplémentaire)

où <R> est la représentation des dates d'un niveau. C'est aussi un langage rationnel définit par

R = [[r]U] ['string'] ([n]C['string'])*

où [[r]U] (optionnel) représente le pas entre 2 graduations calendaires consécutives du niveau

où ['string'] (optionnel) est une chaine de caractères quelconques entre quote

où [n]C spécifie la façon d'afficher une des composantes calendaires de la date

[n]C = <s> pour afficher le nombre de secondes (0 à 59.999...)

= <m> pour afficher le nombre de minutes (0 à 59)

= <H> pour afficher le nombre d'heures (0 à 23)

= <D> pour afficher le numéro du jour dans le mois (1 à 31)

= <nD> pour afficher les n premières lettres du jour de la semaine

= <M> pour afficher le numéro du mois (1 à 12)

= <nM> pour afficher les n premières lettres du mois de l'année

= <Y> ou <2Y>pour afficher les 2 derniers chiffres de l'année

= <4Y>pour afficher tous les chiffres de l'année

les lettres du jour dans le mois ou du mois de l'année sont affichées dans la langue couramment définie par le dernier appel à la fonction tset_language

n est un entier positif

Attention : Pour insérer le caractère quote <'> dans la chaine ['string'], il doit être doublé. Par conséquent si la chaine ne doit contenir que ce caractère <'> on doit écrire ''''. Pour insérer le caractère <"> dans la chaine string il faut le précéder d'un <\>

Exemples 1:

cal_grad_rep[i] = "20 SEC 'à'm''''s'sec' / 1MIN D 3M Y' ' H'h' m'''' "

définit 2 niveaux de graduations :

On obtient comme présentation des graduations par exemple :

à11'50sec à12'10sec à12'30sec à12'50sec à13'10sec à13'30sec

3MAR94 18h12' 3MAR94 18h13'

Exemples 2:

cal_grad_rep[i] = "5 MIN H'h'm'''' / DAY D'-'3M / YEA 4Y"

définit 3 niveaux de graduations :

On obtient comme présentation des graduations par exemple :

11h15' 11h20' 11h25' 11h30' 11h35' 11h40'

3-MAR

1995

Remarque 1:

Avec un pas en minute, chaque graduation est affichée à 0 seconde

Avec un pas en heure, chaque graduation est affichée à 0 minute, 0 seconde

Avec un pas en jour, chaque graduation est affichée à 0 heure, 0 minute, 0 seconde

Avec un pas en mois, chaque graduation est affichée au 1er du mois à 0 heure, 0 minute, 0 seconde

Avec un pas en année, chaque graduation est affichée au 1er janvier à 0 heure, 0 minute, 0 seconde

Lorsque pour un niveau toutes les graduations sont au dela des dates extrèmes de l'axe, alors une graduation est affichée au milieu de l'axe. L'exemple précédant le montre avec la graduation au niveau 2 <3-MARS> et la graduation au niveau 3 <1995>

Remarque 2:

Si num_grad_rep est nul, ou si le pointeur cal_grad_rep est nul, PHIGURE représente les graduations calendaires avec un nombre de niveaux et un pas le plus adequate possible. Le choix du nombre de niveaux et du pas est effectué uniquement en fonction de la durée [delta] entre les 2 dates extrèmes de l'axe. Le paramètre times_period est complétement ignoré.

Remarque 3:

Lorsque la représentation choisie ne précise pas la nature du pas au premier niveau (c'est à dire si le champ [[r]U] n'est pas spécifié), alors PHIGURE calcule ce pas en fonction de la durée [delta] entre les 2 dates extrèmes de l'axe. De plus une composante calendaire (type [n]C) est automatiquement choisie par PHIGURE et les composantes précisées dans la représentation, d'unité inférieure à celle choisie sont ignorées. Par exemple si la représentation choisie est " 3D'-'D':'H'h'm''''s / 3M 4Y", et si PHIGURE effectue le choix d'un pas horaire, les composantes minutes et secondes du 1er niveau ne seront pas affichées, c'est à dire que seules les composantes "3D'-'D':'H'h'" seront utilisées.

Si la représentation choisie précise l'unité du pas mais pas le nombre d'unité, (seul [r] n'est pas donné), PHIGURE calcule aussi ce nombre d'unités en fonction de [delta], mais toutes les composantes calendaires de la représentation sont utilisées.

Remarque 4:

Lorsque la représentation choisie ne précise pas la nature du pas aux niveaux 2, 3, ... (c'est à dire si le champ [[r]U] n'est pas spécifié), alors PHIGURE choisit l'unité du pas en fonction de l'unité du pas précédent. Si au niveau 1 le pas est en minutes alors au niveau 2 le pas est choisi en heures, etc. Le choix des composantes calendaires étant effectué conformément à la remarque 3 :

Par exemple si la représentation choisie est "5MIN 3D'-'D':'H'h'm'''' / m'min'H'h '3D'-'D", alors PHIGURE choisit un pas en heure au 2ième niveau et seule les composantes "'H'h '3D'-'D" sont utilisées pour ce niveau.

Remarque 5:

Donner plusieurs représentations des graduations associées à une liste de durées sert à construire correctement un axe calendaire dont les dates extrèmes varient au cours de l'exécution du programme. Dans le cas contraire (les dates extrèmes sont constantes), il suffit de définir une seule représentation de graduation sans préciser de liste de durées. On pourra par exemple programmer :

static char *grad_rep[] = {"5MIN H'h'm'''' / DAY D'-'3M 4Y" };

tset_axis_date_rep (strid, 1, grad_rep, 0);

pour un axe ayant un intervalle de date inférieur à une heure.


Previous Next Up Title Contents General Index Functions Index Bookshelf