
		Atari Application Developpment Service
		--------------------------------------
			
				A.A.D.S.
				--------
			  Pour l'Atari Falcon30

		 Copyright (c) FRANCE, FunShip 1994-1995
			  Tous droits rservs
			  --------------------


				Sommaire
				--------


 Introduction  A.A.D.S.
 -----------------------
	
		1/      Prsentation                                            Page 5
		2/      Machines cibles                                         Page 6
		3/      Structuration d'AADS                                    Page 6
		4/      Les limites de la librairie                             Page 7

 Chapitre I     Librairie PcXApp        
 -------------------------------
		
		1.1/    Gnralits                                             Page 8
		1.2/    Structure de donnes                                    Page 8
		1.3/    Variables globales                                      Page 11
		1.4/    Constantes d'erreurs                                    Page 11
		1.5 /   Primitives utilisateurs                                 Page 11

 Chapitre II    Librairie PcXWind
 --------------------------------

		2.1/    Gnralits                                             Page 25
		2.2/    Structures de donnes                                   Page 25
		2.3/    Variables globales                                      Page 26
		2.4/    Primitives utilisateurs                                 Page 27
		
 Chapitre III   Librairie PcXMenu
 --------------------------------
	
		3.1/    Gnralits                                             Page 46
		3.2/    Structures de donnes                                   Page 46
		3.3/    Constantes de listes                                    Page 47 
		3.4/    Variables globales                                      Page 47
		3.5/    Primitives utilisateurs                                 Page 47
 
 Chapitre IV    Librairie PcXForm
 --------------------------------
 
		4.1/    Gnralits                                            Page 61
		4.2/    Structures de donnes                                   Page 61
		4.3/    Constantes de listes et autres                          Page 62
		4.4/    Variables globales                                      Page 63
		4.5/    Primitives utilisateurs                                 Page 63
 
 
 Chapitre V     Librairie PcCookie
 ---------------------------------
	
		5.1/    Gnralits                                             Page 84
		5.2/    Les constantes                                          Page 84
		5.3/    Structures de donnes                                   Page 86
		5.4/    Primitives utilisateurs                                 Page 86
 
 Classement alphabtique des primitives 
 -------------------------------------- 
 
		Application, Evnements et Timer Event                          Page 96
		Formulaires, Pop-ups Menus et Desktop                           Page 96
		Menu principal et Sous-Menus hirarchiques                      Page 97
		Fentres                                                        Page 97
		Cookie Jar                                                      Page 98
 
 
	
 
				INTRODUCTION
				------------
 
 
 I/ Prsentation d'AADS
 ----------------------
 
	AADS est une librairie crite en langage C, permettant aux applications d'utiliser plus 
 facilement les possibilits du GEM. En effet, une fois l'criture d'un programme en lui-mme 
 termin, l'aspect interfae graphique reste entirement  construire. En gnral, il s'agit de
 choses globalement rptitives, comme la gestion d'un formulaire, d'un menu ou d'une fentre. 
	
	C'est pourquoi AADS est un outils d'aide, pour raliser cette programmation le plus
 rapidement et simplement possible. A l'origine conu pour un usage priv dans mes programmes,
 je livre ici la version 1.0 pour que chacun puisse ventuellement en tirer profit.
 
	Ces services ne s'arrtent d'ailleurs par l, puisque la gestion du Cookie Jar est offerte,
 ainsi que l'adaptation automatique  la langue active de l'ordinateur.
 
 
	1.1/ Principe
	-------------
 
	L'ide est de regrouper les traitements gnraux, crits une fois pour toutes. 
 Par exemple, les fentres sont compltements gres, il n'y a plus qu' indiquer au systme
 quelques traitements  effectuer pour de relles actions, et non lorsque la fentre est dplae,
 agrandie, passe en arrire plan, rafraichie (Redraws), etc...
 
	La fentre une fois ouverte par W_Open(), est directement oprationnelle sans aucun
 code d'attente de messages et de gestion du moindre vnements.
 
	Pour les Menus, seul l'assoiation de traitements aux options est  faire, les raccourcies
 claviers et autres vnements disparaissent totalement de la programmation, car grs.
 
	Pour un formulaire, on indiquera aussi uniquement les traitements. Le formulaire sera 
 alors, entirement pris en charge tel, ses dplaements, son iconification, ses redraws, ...
 Il en va de mme pour un bureau, o_ les icones seront pris en charge intgralement.
 
	Enfin, si la langue de l'Atari est l'Allemand, un fichier ressource Allemand sera 
 automatiquement recherch en priorit.
 
 
	1.2/ Exemples
	-------------
	
	Les programmes de dmonstrations AadsDemo.Prg et Fun30.Prg, avec leurs sources 
 complet en langage C, illustrent toutes ces caractristiques.
 
 
 II/ Machines cibles
 -------------------
 
 
	La librairie est dveloppe spcialement pour l'ATARI Falcon030 ou Compatibles, 
 c'est  dire, qu'elle est globalement compile en code 68030, et  ncessite un AES3.4 
 minimum, pour tre pleinement exploite.
 
	En effet, Sauf PcXapp et PcCookie, toutes les parties de AADS sont en code 68030.
 PcXApp pour permettre le test de la machine qui peut tre un simple ST et PcCookie car elle 
 est destine galement  ce type de machine.
 
	La librairie doit fonctionner sur TT, avec les restrictions de l'AES3.3 par rapport
 au 3.4., puisqu'il possde un 68030 galement.
 
	Elle supporte le TOS, MultiTOS ainsi que jusqu' l'AES 4.1 (Avec iconification, 
 opration sur fentres non actives,etc...).
 
	
 
 III/ Structurations
 -------------------
 
	Actuellement, AADSv1.0 est constitues de cinq librairies crites indpendement, 
 mais lies  cause de leur fonctionnalits, qui sont:
 
 
		- PcXApp:       Primitives session d'application
				Code 68000, Totalement indpendant
 
		- PcXWind:      Primitives de gestion de fentres
				Code 68030
 
		- PcXMenu:      Primitives de gestion des Menus et Menus-hirarchiques
				Code 68030
 
		- PcXForm:      Primitives de gestion des formulaires, pop-ups et d'un bureau
				Code 68030
 
		- PcCookie:     Primitives d'accs au Cookie Jar
				Code 68000, Totalement indpendant.
 
 
 IV/ Les limites de la librairie
 ------------------------------- 
 
	AADS n'a pas pour but de dispenser le programmeur d'appeler les fonctions du GEM,
 car il peut y avoir beaucoup de cas, o les possibilites offertes ne permettent pas au 
 programmeur d'atteindre ses objectifs. 
 
	Bon nombre de cas peuvent se prsenter, mais qui n'ont pas forment  tre
 intgrs dans AADS ou simplement parfaitement trait par le GEM. Par exemple, 
 un traitement trs " exotique " sur un objet, ou simplement obtenir la handle de la fentre active !
 
	C'est pourquoi, aucune restrictions n'est impose, et le programmeur reste au contraire
 libre d'utiliser directement le GEM,  chaque fois que AADS est incapable de rsoudre un 
 problme particulier.
 
 
 
	
	
				Chapitre I
				----------
			     Librairie PcXApp
			     ----------------
 
 
 
 
	Cette librairie se charge d'ouvrir un programme en tant qu'application au sens GEM. 
 Elle soutient particulirement la gestion automatique de la langue, des fichiers ressources et 
 de fourniture d'informations sur la machine. Cette librairie est compile en code 68000.
 
 Sa prsence est signale au pr-processeur par la macro __APPLICATION__
 
 1.1/ Gnralits
 ----------------

	La librairie permet de grer simplement la langue active, en choisissant 
 automatiquement le fichier ressource dsign pour. Elle offre la possibilit d'installer une 
 procdure appele  chaque vnement Timer GEM, ainsi que le support d'informations
 sur l'environnement logiciel et matriel de la machine.
 
	
 1.2/ Structures de donnes publiques
 ------------------------------------

 Cette structure correspond strictement  la dfinition de l'entte systme du TOS. 
 
	typedef struct  {
				int     inutile;                        A partir du TOS 1.0
				int     version;
				long    reseth;
				long    os_beg;
				long    os_end;
				long    os_rsvl;
				long    os_magic;
				long    os_date;
				int     os_conf;
				int     os_dosdate;    
				long    p_root;                         A partir du TOS 1.2
				long    pkbshift;
				long    p_run;
				long    p_rsv2;                         A partir du TOS 1.4
			} Type_SysEntete;
	 
 
 La structure suivante, retourne des informations sur le systme AES.
 
	typedef struct  {
				int             ap_version;
				int             ap_count;
				int             ap_id;
				long            ap_private;
				long            ap_ptree;
				long            ap_1res;
				long            ap_2res;
				long            ap_3res;
				long            ap_4res;
			} Type_Aes_Info;
 
 Cette structure retourne les informations sur la VDI et la station graphique actuelle.
 
	typedef struct  {
				int             LargeurStation;
				int             HauteurStation;
				int             Coordonnee;
				int             LargeurPoint;
				int             HauteurPoint;
				int             NombreHauteurCar;
				int             NombreTypeLigne;
				int             NombreLargeurLigne;
				int             NombreTypeMarqueur;
				int             NombreTailleMarqueur;
				int             JeuxCaracteres;
				int             NombreMotifs;
				int             NombreHachures;
				int             NombreCouleurs;
				int             NombreGdp;
				int             Fonct1;
				int             Fonct2;
				int             Fonct3;
				int             Fonct4;
				int             Fonct5;
				int             Fonct6;
				int             Fonct7;
				int             Fonct8;
				int             Fonct9;
				int             Fonct10;
				int             Attribut1;
				int             Attribut2;
				int             Attribut3;
				int             Attribut4;
				int             Attribut5;
				int             Attribut6;
				int             Attribut7;
				int             Attribut8;
				int             Attribut9;
				int             Attribut10;
				int             AffichageCouleur;
				int             RotationTexte;
				int             Remplissage;
				int             CellArray;
				int             NombrePalette;
				int             ControlCurseur;
				int             NbPeriphEntree;
				int             ToucheParticuliere;
				int             EntreeAlpha;
				int             TypeStation;
				int             LargeurCarMin;
				int             HauteurCarMin;
				int             LargeurCarMax;
				int             HauteurCarMax;
				int             LargeurLigneMin;
				int             Unknow1;
				int             HauteurLigneMax;
				int             Unknow2;
				int             LargeurMarqueurMin;
				int             HauteurMarqueurMin;
				int             LargeurMarqueurMax;
				int             HauteurMarqueurMax;
			} Type_Vdi_Info;
 
 La structure suivante, est un ensemble d'informations sur la machine, au niveau matriel et 
 version de certainnes composantes logicielles.
 
	typedef struct  {
				Calcul  partir du Cookies Jar
				int             Processor;              Processor type
				long            Machine;                Machine type
				int             Switch;                 Mother board switch
				long            Fdc;                    Floppy Disk Controler
				int             Keyboard;               Keyboard type
				int             Language;               Current Language
				long            Shifter;                Video circuit
				int             Sound;                  Sound System
				int             Fpu;                    Flotting Point Unit
				int             Separator;              Date separator
				int             Date;                   Date format
				int             Time;                   Time format
				Versions extraites  partir d'appel systme lgaux
				int             TosVersion;
				int             GemdosVersion;
				int             AesVersion; 
				Calcul  partir du Cookie Jar,  " MiNT "
				int             MultiTosVersion;
			} Type_Mch_Info;
 
 
 1.3/ Variables globales publiques:
 ----------------------------------               
 
 Les variables qui suivent donnent accs aux informations utiles pour l'exploitation normale.
 
	Type_Aes_Info   *AesInfo;                               Pointeur sur une structureAes Info
	Type_Vdi_Info   VdiInfo;                                Structure Vdi Informations
	Type_Mch_Info   MchInfo;                                Structure Machine Informations
	int                     VdiHandle;                      Handle VDI de la Virtual Workstation
	int                     AesHandle;                      Handle Aes de l'application
 
 Les variables suivantes, sont qualifies de stratgiques, car elles touchent la gestion
 vnementielle. L'utilisateur ne devrait pas en gnral s'en servir.
 
	
	int             A_Event,                                Indique le(s) type(s) d'vnement(s)
			A_Message[8],                           Tampon de message GEM
			A_Key,                                  Code Scan et ASCII d'une touche
			A_Clic,                                 Nombre de clics souris
			A_MouseX,                               Position X de la souris
			A_MouseY;                               Position Y de la souris
 
 1.4/ Les codes d'erreurs
 ------------------------

	Les codes d'erreurs ci-dessous, sont ceux ventuellement renvoy au Shell, lorsqu'une 
 erreur critique est survenue.
 
	#define ERROR_CODE_AES          -1
	#define ERROR_CODE_VDI          -2
	#define ERROR_CODE_APP          -3
 
 1.5/ Les primitives utilisateurs
 --------------------------------
	
	Les pages suivantes dcrivent en dtails chacune des procdures de la librairie.        
 
 Primitives de gestion d'application
 

 Syntaxe:                       int     A_Open(char *ressource_file);
	
 
 Description:
 
 
	Cette fonction dclare le programme en tant qu'application GEM et ouvre une station 
 graphique virtuelle  l'cran. Les variables AesHandle et VdiHandle sont alors initialises 
 ainsi que AesInfo, VdiInfo et MchInfo.
 
	Si il y a chec sur ouverture VDI ou dclaration  l'AES, l'excution du programme est 
 annul, et un code d'erreur ERROR_CODE_VDI ou ERROR_CODE_AES est renvoy.
 Au cas ou une autre erreur critique interne survient, le code ERROR_CODE_APP est retourn.
 
	La deuxime opration, est la gestion optionnelle d'un fichier ressource, quand
 ressource_file est diffrent de Null.
	Dans ce cas ressource_file pointe sur un nom de fichier, A_Open tentera de le charger.
 Si elle russit, elle retournera True, sinon elle tentera de charger le fichier version Anglais, puis 
 Franais et enfin Allemand, puis retournera True si russit. Sinon, si aucun fichier ne peut tre 
 charg, elle retournera False.
	
 Le nom d'un fichier ressource doit imprativement respecter cette convention d'criture:
 
	Nom_Fichier = [nom]7[pays]1
 
	O:     - nom est une suite de 7 caractres obligatoire
 
		- pays est un caractre tel que:        F       France, Suisse Franaise
							D       Deutschland, Suisse Allemande
							G       Great Britain, USA
							I       Italie
							S       Espagne
 
 Primitives de gestion d'application
 
 Syntaxe:                       void    A_Close(void);
 
 
 Description:
 
 
	Cette procdure permet de terminer un programme en tant qu'application GEM. 
 Elle ne provoque pas de retour au systme d'exploitation, mais libre le ressource de la mmoire, 
 ferme la station graphique virtuelle VDI et libre le handle d'application AES.
 
	Si une erreur survient, l'erreur ERROR_CODE_APP est retourne au Shell et le programme 
 est abandonn sans restrictions par un violent Pterm(Code).    
 
 Tools procdures
 
 Syntaxe:                       void    A_HeaderSystem(Type_SysEntete *type);
	
 
 Description:
 
 
	Cette fonction permet d'accder aux informations contenues dans l'ente systme du 
 TOS. Elle attend en paramtre un pointeur sur une structure de type Type_SysEntete, 
 dfinie dans PcXApp.h, et qui doit tre alloue avant l'appel.
	
	A la sortie, la structure contient les informations copies de l'entte systme TOS.
 
 
 Tools procdure
 
 Syntaxe:       int     A_FileSelector( char *pathname, char *nom_fichier, char *suffix,                                           char *prefix, char *label);
 Description:
 
	Cette procdure permet d'activer un slecteur de fichier normal ou tendu. Le
 choix est automatiquement fait suivant la version du TOS.
 
 
 Paramtres:    pathname:       Nom, extension et chemin d'accs du fichier choisi.
 
		nom_fichier:    Nom avec extension du fichier choisi
 
		suffix:         Extension des fichiers  choisir, exemple: *.doc.
				Cette extension peut tre modifie par l'utilisateur dans le 
				slecteur, pour en choisir un nouveau.
 
		prefix:         Chemin d'accs initial ou chaine vide si sans importance
 
		label:          Titre du slecteur de fichiers. Si le Tos est un 1.0 ou 1.2,
				le titre est ignor.
 
 Tools procdures
 
 Syntaxe:                       int     A_GFontHeigh(void);
 
 
 Description:
 
 
	Retourne la hauteur en pixels de la police d'criture actuelle sur la sation graphique 
 virtuelle courante, 
 ouverte par A_Open().
 
 
 Tools procdures
 
 Syntaxe:                       int     A_GFontWidth(void);
 
 
 Description:
 
 
	Retourne la largeur en pixels de la police d'criture actuelle sur la sation graphique virtuelle 
 courante, ouverte par A_Open().
 
 
 Tools procdures
 
 Syntaxe:                       int     A_GCellHeigh(void);
 
 
 Decription:
 
 
	Retourne la hauteur en pixels de la cellule de la police de caractres sur la sation graphique virtuelle 
 courante, ouverte par A_Open()..
 
 Tools procdures
 
 Syntaxe:                       int     A_GCellWidth(void);
 
 
 Decription:
 
 
	Retourne la largeur en pixels de la cellule de la police de caractres sur la sation graphique 
 virtuelle courante, ouverte par A_Open()..
 
 Gestion des vnements
 
 Syntaxe:                       void    A_WaitEvent(void);
 
 
 Description:
 
	
	Cette procdure est la procdure stratgique du mcanisme vnementiel. C'est elle qui
 reoit les diffrents vnements et assigne les variables globales stratgiques d'vnements.
 Elle permet aux procdures X_Event() de fonctionner.
	De plus, elle sa charge automatiquement de l'appel d'une routine utilisateur  chaque
 vnement Timer reu.
	
	Un appel  A_WaitEvent() provoque la mise en sommeil de l'application, jusqu' la
 rception d'un vnement la conernant.
 
 Les vnements soutenus sont ceux du Timer, du Clavier, de la Souris, des Fentres et des 
 Menus droulants. Les vnements Timer sont originellement inutiliss, car la routine
 Timer est suspendue et surtout inexistante pas dfaut. (Cf: Primitives Timer)
 
	Dans un programme, la procdure sera gnralement utilise telle que:
 
			Exit = False
			While(!Exit)
			{
				A_WaitEvent();          
				M_Event();
				W_Event();
				F_Event();
			}       
 
 Variables globales assignes:          
 
	A_WaitEvent() positionne les donnes suivantes:
 
	A_Event                         Masque de bits indiquant les vnements en cours
	A_Message[8]                            Tampon de message GEM standard de 8 Mots
	A_Key                                   Code Scan dans MSB et ASCII dans LSB d'une touche
	A_Clic                                  Nombre de clics souris
	A_MouseX                                Position X de la souris lors d'un vnement souris
	A_MouseY                                Position Y de la souris lors d'un vnement souris
 
 Gestion du Timer
 
 Syntaxe:                       void    A_CycleTimer(int TimeHi,int TimeLo);
 
 
 Description:
 
 
	Initialise le temps de cycle du Timer. La valeur est exprime en ms avec deux entiers
 pour respectivement le Mot Haut et Bas. Un cycle nul ne peut pas tre dfinie et provoque
 un choix par dfaut d'un temps  de 1 Seconde (TimeHi = 0 & TimeLo = 1000).
 
	La valeur de temps par dfaut, si aucun appel  A_CycleTimer n'est effectu, est 
 galement de 1 Seconde (Aprs appel  A_Open() ).
 
 
 
 Gestion du Timer
 
 Syntaxe:                       void    A_SetCodeTimer(void (*UserTimer)(void));
 
 
 Description:
 
 
	Cette procdure installe la routine utilisateur appele  chaque vnement Timer. Elle
 attend en paramtre l'adresse d'une procdure n'ayant aucun paramtres formels. 
 
	Aprs appel  cette primitive, l'excution de la routine utilisateur est toujours
 suspendue, il faudra encore appeler A_OnTimer() pour valider les vnements Timer.
 
 Gestion du Timer
 
 Syntaxe:                       void    A_OnTimer(void);
 
 
 Description:
 
	Cette procdure autorise l'excution de la procdure  chaque vnement Timer. Initialement,
 l'excution est interdite et aucune procdure par dfaut n'est installe. Avant tout appel  A_OnTimer(), 
 il est impratif d'installer la procdure utilisateur.
 Gestion du Timer
 
 Syntaxe:                       void    A_OffTimer(void);
 
 
 Description:
 
 
	A l'inverse de A_OnTimer, cette procdure suspend tout futur appel  la routine utilisateur Timer. 
 Cette primitive n'interdit pas en ralit les vnements Timer, mais plae un boolen qui indique d'ignorer
 la prise en compte des vnements.La suspension a un effet 
 immdiat.      
 
	Aprs cet appel, on peut modifier, changer la routine utilisateur, ou bien reprendre 
 l'excution avec un nouvel  A_OnTimer().
 

				Chapitre II
				-----------
			     Librairie PcXWind
			     -----------------
 
	
 
	La librairie PcXWind se charge de la gestion du Multi-fentrage. Elle supporte les vnements 
 Iconification, ainsi que l'utilisation de fentres en arrire plan de l'AES 4.1. Cette librairie est 
 compile en code 68030 et ne peut donc tre utilise qu'avec un TT ou un Falcon30.
 
 Sa prsence est signale par la macro __LIBXWIND__
 
 2.1/ Gnralits
 ----------------

	La gestion d'une fentre est automatique. Plus besoin de traiter soi-mme les vnements, la 
 liste des rectangles pour les redraws,etc...Dsormais, seul l'affectation de quelques paramtres lors 
 de l'ouverture est nssecaire pour qu'une fentre soit dj oprationnelle.
 
	En gnral, on dfinie l'affichage, et les clics ascenseurs. Le reste tant automatique.
 Par contre, la fermeture d'une fentre bien que dj prvue, peut tre dtourne sur une procdure 
 personnelle. Enfin, on pourra toujours rcuprer les autres vnements pour ventuellement prvoir un 
 traitements lorsqu'elle dplae, iconifie,etc...Mais cela ne change pas son fonctionnement.
 
	La librairie soutient les nouveaux vnements AES4.1, mais sans la ToolBar.
 
 
 
 2.2/ Structure de donnes
 -------------------------

	Cette structure est utilise pour crer et ouvrir une nouvelle fentre. Elle contient les 
 paramtres tel que la position, la taille, les organes de commandes souhaits, le titre et la ligne
 d'information.
	Une fonction de la librairie permet d'allouer directement un objet de ce type avec une
 initialisation au pralable de dfaut. 
 
	typedef struct  {        /* Donnes pour la fentre */
				 char titre[W_TITLE_MAX];               Le titre
				 char info[W_INFO_MAX];                 L'information
				 int x;                                 Position initiale
				 int y;
				 int w;                                 Taille initiale
				 int h;
				 int attributs;                         Attributs
				 /* Procdures utilisateurs vnementielles */
				 void (*op_close)(int);                 Fermeture
				 void (*op_redraw)(int);                Re-Dessin
				 void (*op_full)(int);                  Plein cran
				 void (*op_sized)(int);                 Modification de taille
				 void (*op_uppage)(int);                Page haut
				 void (*op_downpage)(int);              Page bas
				 void (*op_upline)(int);                Ligne haut
				 void (*op_downline)(int);              Ligne bas
				 void (*op_rightpage)(int);             Page droite
				 void (*op_leftpage)(int);              Page gauche
				 void (*op_rightcolum)(int);            Colonne droite
				 void (*op_leftcolum)(int);             Colonne gauche
				 void (*op_vslider)(int,int);           Ascenseur Vertical
				 void (*op_hslider)(int,int);           Ascenseur Horizontal
				 void (*op_iconify)(int);               Iconification
				 void (*op_uniconify)(int);             Annuler Iconifi
				 void (*op_topped)(int);                Premier plan
				 void (*op_moved)(int);                 Dplaement
			} Type_Parameter_Window;
 
	Dans cette structure, les procdures utilisateurs, reoivent systmatiquement en paramtre un int 
 qui est le Handle de la fentre, et pour Vslider() et Hslider, un deuxime int qui est la position 
 relative en " Pour Mille " du Slider.
 
 
 Exemple:       void MyClose(int handle)                void MySlider(int handle, int position)
 --------       {                                       {
			...                                     ...
		}                                       }
 
 
 Constantes:                    W_TITLE_MAX             255
 -----------                    W_INFO_MAX              255
 
 
 2.3/  Variables globales publiques
 ----------------------------------
 
 
	Trs peut de variables offertes  l'utilisateur, sinon quelques unes de service.
 
	- int   tabulation
 
		Dfinie la longueur d'une tabulation en nombre de caractres. Cette variable est
		utilise pour les sorties textes dans une fentre.              
 
	- int   DesktopMenu
		
		Indique la hauteur du Menu droulant en nombre de ligne graphique. Ceci peut            
		tre utile si l'on veut remplir l 'cran sans effaer le Menu du GEM.
 
 
 
 
	- int   DesktopW et DesktopH
 
		Indique la Largeur et Hauteur du bureau. Le bureau est la zone utilisable de 
		l'cran sans l'espace rserv au Menu.
 
	- int   Red_x,Red_y,Red_w,Red_h
 
		Indique la position et la taille de la zone graphique victime d'un vnement 
		Redraw. Ceci peut tre utilise de connaitre la rgion affecte, car le Redraw
		effectue un clipping de cette zone uniquement pour les sorties VDI, et non
		pour l'AES.
 
 
 2.4/ Les primitives utilisateurs
 --------------------------------

 Gestion des Fentres 
 
 Syntaxe:                       int     W_Init(void);
 
 
 Description:
 
 
	Cette procdure est primordiale et doit tre appele avant tout autre appel  la 
 librairie, car elle initialise le mcanisme de gestion de fentres. Elle retourne True si l'initialisation
 est correcte sinon False.
 
 
 Gestion des Fentres 
 
 Syntaxe:                       int     W_Exit(void);
 
 
 Description:
 
 
	Cette fonction termine l'utilisation de la sous-librairie en librant toutes les structures de donnes. 
 Elle retourne True si la terminaison est correcte sinon False.

 Gestion des Fentres 
 
 Syntaxe:                       Type_Parameter_Window *W_GetParameter(void);
 
 Description:
 
 
	Retourne un pointeur sur un objet de type Type_Parameter_Window, servant  la
 cration d'une nouvelle fentre.
 
	Le programme doit alors fixer l'attribut, x, y, w, h et les paramtres procdures
 utilisateurs, d'aprs les organes qu'il a choisi (Les autres sont laisss, car inutiliss).
 .
 
 typedef struct {
			 Donnes classiques pour une fentre
			 char titre[W_TITLE_MAX];               Le titre de la fentre
			 char info[W_INFO_MAX];                 L'information de la fentre
			 int x;                                 Position initiale
			 int y;                                         Position initiale
			 int w;                                 Taille initiale
			 int h;                                 Taille initiale
			 int attributs;                         Organes de commandes 
		 
			 Procdures utilisateurs vnementielles
			 void (*op_close)(int);                 Lors de la fermeture de la fentre
			 void (*op_redraw)(int);                Pour afficher le contenu et redraw.
			 void (*op_full)(int);                  Lors d'un plein cran
			 void (*op_sized)(int);                 Lors d'une modification de taille
			 void (*op_uppage)(int);                Clic Page haut
			 void (*op_downpage)(int);              Clic Page bas
			 void (*op_upline)(int);                Clic Ligne haut
			 void (*op_downline)(int);              Clic Ligne bas
			 void (*op_rightpage)(int);             Clic Page droite
			 void (*op_leftpage)(int);              Clic Page gauche
			 void (*op_rightcolum)(int);            Clic Colonne droite
			 void (*op_leftcolum)(int);             Clic Colonne gauche
			 void (*op_vslider)(int,int);           Ascenseur Vertical dpla
			 void (*op_hslider)(int,int);           Ascenseur Horizontal dpla
			 void (*op_iconify)(int);               Demande d'iconification
			 void (*op_uniconify)(int);             Annuler Iconifi
			 void (*op_topped)(int);                Demande de passer en premier plan
			 void (*op_moved)(int);                 Lors d'un dplaement
		} Type_Parameter_Window;
 
 
 
 
 
 
 Gestion des vnements fentres
 
 Syntaxe:                       void    W_Event(void);
 
 
 Description:
 
 
	Il s'agit ici de la procdure stratgique de gestion des vnements des fentres. C'est elle 
 qui lors de son appel, examine les variables globales vnementielles positionnes par PcXApp, pour 
 permettre les ractions des fentres aux actions de l'utilisateurs.
 
	Cette procdure utilise prcisment les variables A_Event et A_Message. En gnral,
 cette procdure sera place dans la mme boucle que celle o se trouve A_Event().
 
 
 Remarque:      Elle ne modifie pas les variables utilises, A_Event et A_Message.
 
 
 Gestion des Fentres
 
 Syntaxe:                       int     W_Open(Type_Parameter_Window *parameter);
 
 
 Description:
 
 
	Cette fonction cre et ouvre une fentre  l'cran. La fonction retourne le Handle 
 GEM de la fentre si l'ouverture a russie sinon la valeur -1.
 Le handle sera toujour un valeur suprieure ou gale  1, la valeur 0 dsignant le handle de la 
 fentre du bureau. (Constante DESKTOP)
 
	La fonction attend en paramtre un pointeur sur un objet Type_Parameter_Window,
 prcdement allou par W_GetParameter() et correctement initialis.
 
 
 
 Gestion des Fentres 
 
 Syntaxe:                       int     W_Close(int handle);
 
 
 Description:
 
 
	Cette fonction ferme et dtruit une fentre. La fermeture provoque sa disparition 
 l'cran et sa destruction entraine la suppression de sa prsence dans les structures de donnes,
 et la libration du Handle GEM qu'elle occupait.
 
	La fonction attend en paramtre, le handle de la fentre  dtruire. Elle retourne True
 si russit, False en cas d'chec.
 
 Gestion des Fentres 
 
 Syntaxe:                       void    W_Redraw(int handle);
 
 
 Description:
 
 
	Permet d'envoyer  n"tre propre application un message Redraw destin  la fentre 
 Handle. Ceci peut tre utile pour forer une fentre  redessiner son contenu, lorqu'on sait 
 qu'il faut la rafraichir, par exemple.
 
	L'vnement gnr a le mme effet que si c'tait le systme qui l'avait envoy.
 
 
 Tools procdures
 
 Syntaxe:                       void    W_OnClip(int pxyarray[]);
 
 
 Description:
 
 
	Cette procdure active un clipping de la rgion graphique dfinie par le tableau
 pxyarray[]. Le tableau correspond  pxyarray[0,1,2,3] = <x1,y1,x2,y2>.
 
	Le clipping dfinie est valable pour des sorties graphiques VDI, ce qui signifie que
 l'AES n'en est pas affect; un appel  l'AES pour un dessin d'objets ne sera pas clipp.
 
 
 Remarque:      La VDI travaille avec des couples de coordonnes (x1,y1) , (x2,y2)
		pour dfinir une rgion, contrairement  l'AES qui utilise la mthode
		(x,y,width,height) pour dfinir une mme rgion.
 
 
 Tools procdures
 
 Syntaxe:                       void    W_OffClip(int pxyarray[]);
 
 
 Description:
 
 
	Cette procdure dsactive le clipping de la rgion graphique dfinie par le tableau
 pxyarray[]. Le tableau correspond  pxyarray[0,1,2,3] = <x1,y1,x2,y2>.
 
 
 
 Tools procdures
 
 Syntaxe:                       int     W_GLine(int handle);
 
 
 Decription:
 
 
	Retourne la ligne graphique courante utilise pour la prochainne sortie texte dans la
 fentre identifie par handle.
 
 
 Tools procdures
 
 Syntaxe:                       int     W_GColums(int handle);
 
 
 Decription:
 
 
	Retourne la colonne graphique courante utilise pour la prochainne sortie texte dans la
 fentre identifie par handle.
 
 Tools procdures 
 
 Syntaxe:                       int     W_GMaxLine(int handle);
 
 
 Decription:
 
 
	Retourne le nombre maximum de ligne texte disponible actuellement dans la 
 fentre identifie par handle. Ce nombre varie suivant la taille courante de la fentre.
 
 Tools procdures
 
 Syntaxe:                       int     W_GMaxColum(int handle);
 
 
 Decription:
 
 
	Retourne le nombre maximum de colonne texte disponible actuellement dans la 
 fentre identifie par handle. Ce nombre varie suivant la taille courante de la fentre./*
 
 Tools procdures
 
 Syntaxe:                       void    W_SLine(int handle,int ligne);
 
 
 Decription:
 
 
	Place le curseur virtuel texte  la ligne ligne dans la fentre handle. Cette ligne
 doit tre comprise entre [1,GetMaxLine()].
 
 
 Tools procdures 
 
 Syntaxe:                       void    W_SColum(int handle,int colonne);
 
 
 Decription:
 
 
	Place le curseur virtuel texte  la colonne Colonne dans la fentre handle. Cette ligne
 doit tre comprise entre [1,GetMaxColum()].
 
 
 Tools procdures
 
 Syntaxe:                       void    W_HomeCursor(int handle);
 
 
 Decription:
 
 
	Place dans le coin suprieur gauche de la fentre handle le curseur virtuel texte.
 
 
 Tools procdures
 
 Syntaxe:                       int     W_ClrScr(int handle);
 
 
 Decription:
 
 
	Efface le contenu de la fentre handle. Retourne True si aucun problme, sinon False.
 La fonction ne ramne pas le curseur dans le coin suprieur gauche mais uniquement effae le
 contenu.
 
	Cette fonction peut tre utilise tant sur une fentre en premier plan, que sur une fentre 
 inactive partiellement visible.
 
 
 Tools procdures
 
 Syntaxe:                       int     W_Printf(int handle,char *string);
 
 
 Decription:
 
 
	Ecrit dans la fentre identifie handle, la chaine texte string. Cette chaine peut contenir
 le caractre " \t " du langage C pour spcifier une tabulation.
 
	La procdure effectue automatiquement un Cr/Lf sans spcificateur. Cette fonction peut tre 
 utilise tant sur une fentre en premier plan, que sur une fentre inactive (AES 4.1).
	La sortie texte sera toujour plae dans la fentre vise.
 
 
				Chapitre III
				------------

			     Libraririe PcXMenu
			     ------------------

 
 
	
 
	Cette librairie est charge de grer les Menus droulants et les Menus hirarchiques 
 attachs. Cette dernire caractristique est offerte sous rserve d'avoir un AES 3.4.
 PcXMenu est compil en code 68030 et ne peut donc tre utilis que sur TT ou Falcon030.
 
 Sa prsence est signale par la macro __PCXMENU__
 
 3.1/ Gnralits
 ----------------
 
	Le fonctionnement d'un Menu et des Sous-Menus hirarchiques repose maintenant
 simplement sur la description d'assoiations Procdures-Options. Aucune programmation n'est
 ncessaire, le Menu une fois ouvert sera exploitable. Des raccourcies claviers peuvent tre 
 insrs directement avec l'diteur de ressource dans le texte d'une option, et leur 
 fonctionnement sera alors immdiat. Simplement en crivant ^A pour CTRL-A, par exemple.
 
	Les Sous-Menus hirarchiques peuvent avoir galement un raccourcie clavier, gr au 
 mme niveau que le Menu racine. Un CheckMark peut tre automatiquement positionn sur l'entre 
 active, par AADS si on le veut. Le scrolling est inhrant.
 
 
 3.2/ Structures de donnes
 -------------------------- 
 
 Cette structure permet d'attacher  une entre du Menu Principal une procdure de traitement. 
 Elle sera utilise comme atome de base d'une liste de cration.
 
	typedef struct  {
			  int   Entry;                  Entre du Menu
			  int   State;                  Etat initial de l'entre (Disbaled,...)
			  void (*Procedure)(void);      Procdure associe
			} Type_Parameter_Menu;
	
 La structure qui suit, permet d'attacher un Sous_Menu  un Menu principal.
	
	typedef struct  {
			  int   SubMenu;                Arbre d'objets Sous-Menu
			  int   ParentEntry;            Entre o il sera attach
			  int   StartEntry;             Entre de Sous-Menu initial choisi
			  int   ScrollEntry;            Entre du Sous-Menu de dpart du Scroll
			  int   UseChecked;             Si utilise un check-mark automatique
			} Type_Parameter_SubAttach;
 
		
 Enfin, cette structure permet d'assoier un traitement  une entre d'un Sous-Menu. Elle sera 
 utilise comme atome de base d'une liste de cration
 
	typedef struct  {
			  int   SubMenu;                Sous-Menu conern
			  int   Entry;                  Entre du Sous-Menu
			  void (*Procedure)(void);      Procdure assoie
			} Type_Parameter_SubEvent;
 
 3.3/ Constantes de Listes
 -------------------------
 
	Ces constantes dont destines  failiter au programmeur la marque de fin d'une liste. 
 Au lieu d'crire les valeurs nulles adquates, pour marquer la fin, on plaera une de ces constantes 
 en fin de liste.
 
	#define MENU_END                {0,0,NULL}              Main Menu's list end
	#define SUBATTACH_END           {0,0,0,0,0}             SubMenu's list end
	#define SUBEVENT_END            {0,0,NULL}              SubMenuEvent's list end
 
 La constante suivnate est utilise pour signifier de ne pas changer l'tat d'une entre de Menu.
 
	#define INITIAL                 0                       No change entry's state
 
 3.4/ Les variables globables
 ---------------------------- 
 
	Lorsqu'une entre de Menu ou de Sous-Menu est slectionne, les variables suivantes donne 
 les informations suivantes.
  
	OBJECT          *M_Address;                             Adresse de de l'arbre d'objets menu
	int             M_Name;                                 Indice de l'arbre d'objets
	int             M_Entry;                                Indice de l'entre de menu slectionne
 
 3.5/  Les primitives utilisateurs
 --------------------------------- 
	
 
 Gestion de Menus
 
 Syntaxe:                       int     M_Init(void);
 
 
 Description:
 
 
	Cette fonction cre et initialise les structures de donnes interne  PcXMenu. Elle doit
 tre appele avant tout autre appel  d'une primitives de la librairie. La fonction retourne True
 si l'initialisation c'est bien passe, sinon False.
 
	
 Gestion de Menus
 
 Syntaxe:                       int     M_Exit(void);
 
 
 Description:
 
 
	Cette fonction termine l'utilisation de la sous-librairie en librant toutes les structures de donnes. 
 Elle retourne True si la terminaison est correcte sinon False.
 
 Gestion du Menu Principal (Root)
 
 Syntaxe:                       int     M_Open(int Tree,Type_Parameter_Menu *Liste);
 
 
 Description:
 
 
	Cette fonction ouvre un Menu droulant dans la barre de menu du GEM.Elle attend
 en paramtre Tree qui l'entier identifiant le Menu et une liste Liste qui associe les traitements 
  appeler lorsqu'une entre de Menu est slectionne.
 
	La liste prsente la forme suivante:
 
			<Nom_Entre><Etat_Initial><Procdure>
 
	O:     Nom_Entre      Est l'entier identifiant l'entre de Menu
		Etat_Initial    Qui indique si l'entre est dsactive, avec un CheckMark,...
		Procdure       Est le traitement qui  sera appel lors de la slection
 
 Exemple:
 
 
	Type_Parameter_Menu Liste[] =   {
							{ Nouveau,Initial,code1},
							{ Ouvrir,Disabled,code2},
							...
							MENU_END
					};

 
 
 
 
 Gestion du Menu Principal (Root)
 
 Syntaxe:                       int     M_Close(int Tree);
 
 
 Description:
 
	
	Ferme un Menu droulant racine ainsi que les sous-menus et vide toutes les structures de donnes 
 internes. Aprs, il est possible de faire un nouvel appel  M_Open(). La fonction attend en paramtre le 
 nom Tree du Menu  fermer.
 
	La fonction retourne True si tout est correct sinon False.
 Gestion des Sous-Menus hirarchiques
 
 Syntaxe:               int     M_SubAttach(int Tree,Type_Parameter_SubAttach *Liste);
 
 
 Description:
 
 
	Cette fonction permet d'attacher autant de Sous-Menus hirarchiques dsirs  un
 Menu pre nomm Tree. Le Menu pre sera le Menu droulant Racine, tandis que Liste 
 contiendra tout les Sous-Menus  rattacher.
 
	La fonction retourne False si un problme est survenue ou bien True.
 
 Exemple:
 
 
	Type_Parameter_SubAttach 
	Liste = {       {Popup1, Nouveau,OptionStart,OptionScroll,True },
			{Popup2,Ouvrir,OptionStart,OptionScroll,False },
			....
			SUBATTACH_END
		};
 
 Le premier argument est le nom du Popup-Menu, ensuite le nom de l'entre du Menu racine
 o l'attacher, le nom de l'option initiale active du Popup, Le nom de l'option o commenera
 le scrolling du menu si ncessaire et un indicateur si le Popup utilisera ou non un CheckMark
 automatique.
 
 
 Gestion des Sous-Menus hirarchiques
 
 Syntaxe:       int     M_SubEvent(int RootTree,Type_Parameter_SubEvent *Liste);
 
 
 Description:
 
 
	Cette fonction permet d'installer les traitements  appeler lorsqu'une entre de Sous-Menu est 
 choisie. Elle attend en paramtre le nom du Menu Racine, puis une liste de tout les traitements  assoier
 aux entres de tout les Popups Menus.
 
 Exemple:
 
	
	Type_Parameter_SubEvent
	Liste[]={       {Popup1,Option1,Code1},
			....
			{Popup2,Option2,Code2},
			...
			SUBEVENT_END
		};      
 Gestion des vnements Menus et Sous-Menus hirarchiques 
 
 Syntaxe:                       void    M_Event(void);
 
 
 Description:
 
 
	Cette procdure est charge de grer les vnements gnrs par un slection de Menu
 ou de Sous-Menu. C'est elle qui s'occupe de dterminer les traitements  appeler suivant
 les oprations de l'utilisateur par l'intermdiaire de la souris ou du clavier.
 
	En gnral, cette primitive sera insre dans la boucle de gestion d'vnement o
 se trouve A_Event().
 
	Cette procdure utilise les messages standards GEM se rapportant au Menu, ainsi que les vnements
 claviers pour les raccourcies. Dans le cas du clavier si une combinaison est reconnue, l'vnement sera 
 trait puis dtruit. Aucun autre ne pourra alors interprter ensuite ce mme vnement.
 
	Cette situation conerne cette procdure et F_Event(). L'ordre d'criture de ces
 procdures dans la boucle d'vnements, dterminera celle prioritaire pour les interprter.
 
	Surtout que, ds qu'un formulaire est ouvert et actif, F_Event() consomme les vnements clavier 
 sans restrictions, mme si il n'y a pas de champs ditables.

 Tools Procdures
 
 Syntaxe:                       int     M_Checked(int Tree,int Entry);
 
 
 Description:
 
 
	Place un Check Mark sur l'entre Entry du Menu Tree. La fonction retourne True si elle s'est 
 correctement excute sinon False.
 
 Tools Procdures
 
 Syntaxe:                       int     M_UnChecked(int Tree,int Entry);
 
 
 Description:
 
 
	Enlve un Check Mark sur l'entre Entry du Menu Tree. La fonction retourne True si elle s'est
 correctement excute sinon False.

 Tools Procdures
 
 Syntaxe:                       int     M_Enable(int Tree,int Entry);
 
 
 Description:
 
 
	Autorise la slection d'une entre Entry du Menu Tree en supprimant l'criture fantme (Ecriture grise).
 La fonction retourne True si elle s'est correctement excute sinon False.
 
 Tools Procdures
 
 Syntaxe:                       int     M_Disable(int Tree,int Entry);
 
 
 Description:
 
 
	Interdit la slection d'une entre Entry du Menu Tree en la rendant fantme (Ecriture grise).
 La fonction retourne True si elle s'est correctement excute sinon False.
 Tools Procdures
 
 Syntaxe:                       int     M_Change(int Tree,int Entry,char *string);
 
 
 Description:
 
 
	Cette fonction permet de modifier le texte d'une entre Entry de Menu Tree par le
 texte point par String. Le texte doit avoir obligatoirement une longueur infrieure ou gale
  celui d'origine de l'entre de Menu. 
	La fonction retourne True si elle s'est correctement excute sinon False.
 
 Tools Procdures 
 
 Syntaxe:                       void M_SetSubMenu(int size); 
 
 
 Description:
 
 
	Cette procdure permet de fixer la taille d'un sous-menu hirarchique en nombre d'entres 
 affiches  l'cran. Par dfaut l'AES3.4 la fixe  16, mais on pourra la modifier avec cette primitive.
 Les entres au-del qui ne sont pas affiche seront scrolles automatiquement.
 
 
				Chapitre IV
				-----------
			     Librairie PcXForm
			     -----------------
 
 
	
 
	Cette librairie soutient la gestion des Formulaires en fentres ou en mode GEM
 standard, des Menus Pop-ups attachs  des boutons et d'un bureau propre  l'application avec
 la gestion automatique de ses icones (Mouvements et clics).
	Les Menus pop-ups sont supports sous rserve d'avoir un AES 3.4, de plus PcXForm
 est compil en code 68030 et ne peut donc tre utilis que sur TT ou Falcon030.
 
 Sa prsence est signale par la macro __XFORM__
 
 
 4.1/ Gnralits
 ---------------- 
 
	Le fonctionnement d'un formulaire, qu'il soit en fentre ou classique GEM,icone de 
 bureau ou pop-up menu repose sur l'assoiation d'un traitement  un vnement de l'objet. 
 Un bouton sera assoi  une procdure lors d'un clic, un icone lors d'un clic ou mouvement 
 vers un autre icone et une entre de pop-up lors de son choix.
 
	Aucune programmation supplmentaire propre au problme graphique de l'interfae 
 n'est ncessaire.
 
	Malgr cela, la librairie offrira au programmeur des primitives de services, pour par
 exemple plaer un bouton dans un tat, afin qu'il puisse agir sur l'interfae graphique.
 
	Les Pop-ups Menus, peuvent utiliser automatiquement un CheckMark et le scrolling
 est inhrant. En revanche, les raccourcies claviers sont inexistants pour les Pop-ups comme
 pour les formulaires.
 
	Les formulaires sont iconifiables, on peut naturellement en ouvrir plusieurs mais
 jamais le mme en plusieurs exemplaires.
 
 4.2/ Les structures de donnes
 ------------------------------ 
 
 Cette structure permet de dfinir les listes lors de la cration des formulaires. Elle dfinie les
 associations entre un objet du formulaire est les traitements  effectuer lorsque l'objet est
 cliqu ou double cliqu.
 
 typedef struct {
		  int   Object;                         Entier identifiant l'objet 
		  void (*ProcClic)(void);               Procdure lorsqu'il est cliqu 
		  void (*ProcDbClic)(void);             Procdure lorsqu'il est Double-cliqu 
		}Type_Form_List;
 
 
 La structure qui suit permet d'assoier  chaque icone du bureau les traitements  appeler..
 
 typedef struct {
		  int   Object;                         Entier identifiant l'objet 
		  int   x;                              Position initiale sur le bureau 
		  int   y;
		  char  *Titre;                         Texte de l'icone, ex: " Disque C "
		  void (*ProcClic)(void);               Procdure quand est cliqu 
		  void (*ProcDbClic)(void);             Procdure quand est Double-cliqu 
							Procdure quand icone vers icone Object
		  void (*Move2Icon)(int movment,int Object);    
							Procdure quand icone vers fentre handle
		  void (*Move2Wind)(int movment,int Handle);    
		}Type_Bureau_List;
 
 La structure suivante permet d'attacher des pop-ups menus  des boutons de formulaires. 
 
 typedef struct {
		  int   Popup;                  Entier identifiant le pop-up menu
		  int   Button;         Entier identifiant le bouton o l'attacher
		  int   StartEntry;             Entre de pop-up menu slectionne
		  int   ScrollEntry;            Entre de pop-up menu o commene le scroll
		  int   UseChecked;             Indique si un checkMark automatique doit tre utilis
		} Type_Parameter_PopAttach;
 
 Cette dernire structure dfinie les traitements  assoier  chaque entre de menu, lorsqu 'elle
 est slectionne, pour tel pop-up menu. Elle contient de ce fait tous les traitements de tous les
 pop-ups menus.
		
 typedef struct {
		  int   PopMenu;                Entier identifiant le pop-up menu
		  int   Entry;                  Entier identifiant l'entre de menu
		  void (*Procedure)(void);      Procdure associe
		} Type_Parameter_PopEvent;
 
 
 4.3/ Les constantes de listes et autres
 --------------------------------------- 
 
 Les constantes qui suivent doivent tre plaes en fin de dclaration de liste pour en marquer
 correctement la fin.
 
	#define FORM_END        {0,NULL,NULL}                           Fin de liste cration formulaire
	#define BUREAU_END      {0,0,0,NULL,NULL,NULL,NULL,NULL}        Fin de liste Bureau
	#define POPATTACH_END   {0,0,0,0,0}                             Fin de liste cration pop-up
	#define POPEVENT_END    {0,0,NULL}                              Fin de liste venments pop-ups
 
 Indique lors de la cration d'un formulaire, qu'il ne contient pas de champ texte ditable.
 
	#define NOTEXT          0               
 
 Indique lors de la cration d'un formulaire, qu'il sera en fentre ou classique.
 
	#define F_WIND          1                       
	#define F_CLASSIC       0                       
 
 Cette constante indique que le formulaire est en mode classic, au retour de F_Open().
 
	#define NOWINDOW        -1                      
 
 Handle de la fentre du bureau.
 
	#define DESKTOP         0
		
  
 Type de mouvement survenue  un icone. Ces informations sont transmises en paramtres formels, aux 
 procdures de mouvement d'icones.
 
	#define MOVE2WIND
	#define MOVE2ICON
 
 4.4/ Les variables globales
 ---------------------------
 
 
	Ces trois variables fournissent au programme, l'entier identifiant l'objet activ, l'entier 
	identifiant l'arbre d'objets contenant cet objet ainsi que l'adresse de l'arbre d'objets.
 
	int             F_NameObject;           Objet activ
	int             F_Name;                 Arbre d'objets le contenant
	OBJECT  *F_Address;                     Adresse de l'arbre d'objets
 
	Ces deux variables fournissent respectivement l'adresse de l'arbre d'objet faisant office de 
	bureau (NULL si pas de bureau), et l'entier identifiant un icone ayant subie un vnement quelconque.
 
	OBJECT  *DesktopAddress;                Adresse de l'arbre d'objets desktop
	int             I_Name;                 Icone source de l'vnement
 
	Ces deux variables fournissent un entier identifiant le pop-up menu activ et l'entre de ce
 pop-up slectionne.
 
	int             F_PopupName;            Nom du menu pop-up
	int             F_PopupEntry;           Entre de pop-up menu choisie
 
 
 4.5/ Les primitives utilisateurs
 
 Gestion des formulaires 
 
 Syntaxe:                       int F_Init(void);
 
 
 Description:
 
 
	 Cette fonction initialise le gestionnaire de formulaire, elle doit tre appele avant tout
 autres appels aux primitives de PcXForm. 
	F_Init retourne True si l'initialisation est correct sinon False.
 
 Gestion des formulaires 
 
 Syntaxe:                       int F_Exit(void);
 
 
 Description:
 
 
	Cette fonction termine l'utilisation de la sous-librairie en librant toutes les structures de donnes. 
 Elle retourne True si la terminaison est correcte sinon False.

 Gestion des formulaires 
 
 Syntaxe:               int F_Open(     int TreeName,char *Title, int Mode,
					int FirstEdit,Type_Form_List *List);
 
 
 Description:
 
 
	Cette fonction permet d'ouvrir  l'cran un formulaire et d'activer son fonctionnement,
 en mode Classic GEM ou en fentre. Elle attend en paramtre les informations suivantes:
 
	- TreeName      Qui identifie l'arbre d'objets  ouvrir,
 
	- Title         Qui un pointeur sur une chaine qui sera copie dans le titre de la
			fentre du formulaire
 
	- Mode  Qui prend la valeur F_CLASSIC ou F_WIND pour ouvrir le formulaire
			en mode normal GEM ou en fentre.
 
	- FirstEdit     Qui est l'entier identifiant le premier champ ditable o positionner
			le curseur texte ou NOTEXT si il n'y en a pas.
 
	- List          Qui pointe sur un tableau assoiant les lments graphiques du 
			formulaire aux traitements.
 
 La fonction retourne le Handle GEM de la fentre si l'ouverture en fentre a russie, NOWINDOW si 
 l'ouverture en Classic  russie ou aprs un chec en ouverture fentre mais russie en Classic, ou bien 
 False pour un chec total.
 
 Exemple:
 
	Le premier paramtre est le nom de l'objet, le second l'adresse de la procdure appele lors 
 d'un clic et le dernier lors d'un double clic.
 
 void Quitter();        void Information();     void ...
 
 Type_Form_List
 Formulaire[]=  {       {QUITTER        ,Quitter        ,NULL},
			{ABOUTME        ,Information    ,NULL},
			{BDSP           ,Dsp            ,NULL},
			{BPLAY          ,Play           ,NULL},
			{BSTOP          ,Stop           ,NULL},
			{CURSORLI       ,CursorVolume   ,NULL},
			{CURSORRI       ,CursorVolume   ,NULL},
			{CURSORLO       ,CursorVolume   ,NULL},
			{CURSORRO       ,CursorVolume   ,NULL},
			{LEFT           ,CutChannel     ,NULL},
			{RIGHT          ,CutChannel     ,NULL},
			FORM_END
		};
 
		Handle = F_Open(FORM1,"Fun Falcon 030",F_WIND,NOTEXT,Formulaire);
 Gestion des formulaires 
 
 Syntaxe:                       int F_Close(int TreeName);
 
 
 Description:
 
 
	Cette fonction permet de fermer un formulaire quelque soit son mode d'ouverture. 
 Elle attend en paramtre l'entier identifiant l'arbre d'objets du formulaire et retourne True
 si la fermeture  russie sinon False. Un formulaire ferm est physiquement limin des structures de donnes.
 
	Si F_Close est appele sur un formulaire dj ferm, par exemple, elle retournera 
 False.
 
 
 Exemple:
 
 
	F_Close(FORM1);
	if(!F_Close(FORM2))
		form_alert(1,  "[1][ Formulaire dj ferm][ok] ");
 
 Gestion des formulaires 
 
 Syntaxe:                       void F_Event(void);
 
 
 Description:
 
 
	Cette procdure est charge de grer les vnements gnrs par une opration
 effectue dans un formulaire, un pop-up menu ou sur le bureau et ses icones.
	Elle s'occupe de dterminer les traitements  appeler suivant les oprations de 
 l'utilisateur par l'intermdiaire de la souris, ou de grer le clavier pour les champs ditables.
 
	En gnral, cette primitive sera insre dans la boucle de gestion d'vnement o
 se trouve A_Event().
 
	Un remarque importante est ds lors qu'un formulaire est ouvert et actif, F_Event() 
 consomme les vnements clavier sans restrictions, mme sans champs ditables. De ce
 fait, une primitive vnementielle qui la suivra sera en situation de famine, car plus aucun
 vnements claviers lui sera transmis tant qu'un formulaire sera ouvert et actif. C'est pourquoi
 l'ordre d'criture dans la boucle de F_Event n'est pas totalement laiss au hasard.
 Gestion des Pop-ups menus
 
 Syntaxe:               int F_PopAttach(int Formular,Type_Parameter_PopAttach *List);
 
 
 Description:
 
	Cette fonction permet d'attacher plusieurs Pop-ups menus aux diffrents boutons de 
 dclenchement d'un formulaire. La fonction retourne True si l'attachement a russie sinon False.
 
	F_PopAttach attend en paramtre les informations suivantes:
 
	- Formular      Qui est l'entier identifiant le formulaire d'accueil.
	
	- List          Qui dsigne une liste de description des pop-ups et boutons  assoier.
 
 
 Exemple:
 
 
	Cet exemple illustre, par exemple, l'attachement d'un pop-up appel POPUP3, sur le 
 bouton  FM4B1 du formulaire FORM4. L'entre initiale du pop-up choisie est PP3OBJ5, le
 scrolling du menu commenera en PP3OBJ5 et celui-ci utilisera automatiquement un CheckMark pour noter 
 l'entre active.
 
 
 Type_Parameter_PopAttach
 ListPopAttach[]=       {       {POPUP3,FM4B1,PP3OBJ2,PP3OBJ5,TRUE},
			{POPUP4,FM4B2,PP4OBJ6,PP4OBJ5,TRUE},
			 POPATTACH_END
		};
 
 F_PopAttach(FORM4,ListPopAttach); 
 
 Gestion des Pop-ups menus 
 
 Syntaxe:                       int F_PopEvent(Type_Parameter_PopEvent *List);
 
 
 Description:
 
 
	Cette primitive installe les traitements assois  toutes les entres de Pop-ups menus de 
 l'application. La fonction attend en paramtre List qui pointe sur un tableau assoiant une entre  un 
 traitement. Elle retourne True si l'installation est correcte sinon False.
 
 Exemple:
 
	Dans cet exemple on associe l'unique traitement popup()  chaque entre PPxOBJy du pop-up POPUP3 et POPUP4.
 
 void popup(void);                                                      /* Prototype de la procdure */
 
 Type_Parameter_PopEvent                        
 ListPopEvent[]={       {POPUP3,PP3OBJ1 ,popup},                        /* Premier pop-up menu */
			{POPUP3,PP3OBJ2 ,popup},
			{POPUP3,PP3OBJ3 ,popup},
			{POPUP3,PP3OBJ4 ,popup},
			{POPUP3,PP3OBJ5 ,popup},
			{POPUP3,PP3OBJ6 ,popup},
			{POPUP3,PP3OBJ7 ,popup},
 
			{POPUP4,PP4OBJ1 ,popup},                        /* Deuxime pop-up menu */
			{POPUP4,PP4OBJ2 ,popup},
			{POPUP4,PP4OBJ3 ,popup},
			{POPUP4,PP4OBJ4 ,popup},
			{POPUP4,PP4OBJ5 ,popup},
			{POPUP4,PP4OBJ6 ,popup},
			{POPUP4,PP4OBJ7 ,popup},
 
			POPEVENT_END                    
		};  
 
 F_PopEvent(ListPopEvent);
 Gestion des Pop-ups menus
 
 Syntaxe:                       void F_SetPopup(int size); 
 
 
 Description:
 
 
	Cette procdure permet de fixer la taille d'un menu pop-up en nombre d'entres affiches  l'cran. 
 Par dfaut l'AES3.4 la fixe  16, mais on pourra la modifier avec cette primitive. Les entres au-del 
 qui ne sont pas affiche seront scrolles automatiquement.

 Gestion d'un bureau d'application
 
 Syntaxe:                       int  D_Open(int TreeDesk,Type_Bureau_List *List);
 
 
 Description:
 
 
	Cette fonction installe un nouveau bureau pour l'application en cours,  partir de l'arbre d'objets 
 TreeDesk et en initialisant tout ses icones avec List qui pointe sur une liste de type Type_Bureau_List.
 
	Elle retourne True si l'ouverture est correcte sinon False.
 
 
 Exemple:
 
 
	L'exemple suivant installe pour chaque objets (Icones) du bureau les traitements possibles d'aprs 
 les actions autorises Clic, Double-Clic, dplaement icone vers icone et dplaement icone vers fentre. 
 Une position (x,y) originale et un titre est de plus fix.
 
	Les procdures associes aux mouvements reoivent obligatoirement en paramtre
 typemove qui indique le mouvement MOVE2ICON ou MOVE2WIND et target qui contient
 soit un handle, soit un indice d'objet (Icone).
 
 void clicicon(void);
 void dbicon(void);
 void toicone(int typemove,int target);
 void towind(int typemove,int target);
 
 Type_Bureau_List
 Bureau[]=      {       {DRAPEAU        ,0,0    ,NULL,NULL,NULL,NULL,NULL},
			{IFLOPPY        ,25,50  ,"Disque C\0",clicicon,dbicon, toicone, towind },
			{ICLIPBRD       ,25,100 ,"ClipBoard",clicicon,dbicon, toicone, towind },
			{IATARI         ,25,150 ,"Ordinateur",clicicon,dbicon, toicone, towind },
			{IECRAN         ,25,200 ,"Graphique",clicicon,dbicon, toicone, towind },
			{IMUSIC         ,25,250 ,"Son",clicicon,dbicon, toicone,v},
			{ITELEPHONE     ,25,300 ,"Communiquer",clicicon,dbicon, toicone , towind },
			{ITRASH         ,25,350 ,"Poubelle\0",clicicon,dbicon, toicone, towind },
 
			BUREAU_END
		};
 
 D_Open(BUREAU,Bureau);
 /*
	A partir de ce moment, le bureau est oprationnel...
 */
 ...
 D_Close();
 
 Gestion d'un bureau d'application 
 
 Syntaxe:                       void D_Close(void);
 
 
 Description:
 
 
	Cette procdure ferme le bureau de l'application avec ses icones et restitue le bureau du GEM.
 
 Tools procdures
 
 Syntaxe:                       void F_Select(int TreeName,int Object);
 
 
 Description:
 
 
	Place dans un tat slectionn un objet graphique Object du formulaire TreeName. En
 fait l'ob_state est modifi avec le bit SELECTED  un, puis l'objet est redessin.
 
 Tools procdures
 
 Syntaxe:                       void F_UnSelect(int TreeName,int Object);
 
 
 Description:
 
 
	Place dans un tat non slectionn un objet graphique Object du formulaire TreeName.L'ob_state
 est modifi avec le bit SELECTED  zro, puis l'objet est redessin.
 
 Tools procdures
 
 Syntaxe:                       void F_WriteText(int TreeName,int Object,char *string);
 
 
 Description:
 
 
	Cette procdure permet d'crire dans un champ ditable Object du formulaire TreeName,
 la chaine texte pointe par String. La chaine est copie dans les structures de l'objet. Le champ
 ditable est redessin pour permettre l'affichage de cette modification.
 
 
 
 Tools procdures
 
 Syntaxe:                       void F_ReadText(int TreeName,int Object,char *string);
 
 
 Description:
 
 
	Cette procdure permet de lire dans un champ ditable Object du formulaire TreeName, la
 chaine texte qui sera recopie dans la chaine  pointe par String. 

 Tools procdures
 
 Syntaxe:                       int F_LObject(int Tree,int Object);
 
 
 Description:
 
 
	Retourne la largeur en pixels d'un objet Object du formulaire Tree.
 Tools procdures
 
 Syntaxe:                       int F_HObject(int Tree,int Object);
 
 
 Description:
 
 
	Retourne la hauteur en pixels d'un objet Object du formulaire Tree.
 Tools procdures
 
 Syntaxe:                       void F_RedrawObject(OBJECT *Arbre,int Objet);
 
 
 Description:
 
 
	Cette procdure permet de redessiner localement un objet graphique sans affecter les
 autres. Le redessin  lieu sur un niveau de descendance de l'objet dsign par Objet de l'arbre 
 d'objets point par Arbre.
	
	Ici contrairement  beaucoup d'autres primitives, on attend bien l'adresse de l'arbre 
 d'objets et non son entier identifiant. En gnral, on devrait pas avoir besoin de cett procdure
 dans un cas de programmation normal.
 
 
 Exemple:
 
	
	Dans cet exemple, au lieu d'utiliser F_Select, on positionne le bit de ob_state et on redessine
 l'objet.
 
 rsrc_gaddr(FORM1,R_TREE,&Arbre);
 ...
 Arbre[BOUTON5].ob_state | = SELECTED;
 F_RedrawObject(Arbre,BOUTON5);
 Tools procdures
 
 Syntaxe:                       int F_EstIconifie(int Handle);
 
 
 Description:
 
 
	Cette fonction indique si une fentre porteuse d'un formulaire est actuellement iconifi.
 Elle attend en paramtre, le handle retourne par F_Open() d'un fentre, et retourne True si
 iconifie sinon False.
 
 Tools procdures
 
 Syntaxe:       void F_FreeDraw(int Handle,void (*UserDraw)(int x,int y,int w, int h);
 
 
 Description:
 
 
	Cette procdure permet de faire excuter une procdure utilisateur de dessin sous le contrle
 de la liste des rectangles sur une fentre formulaire. F_FreeDraw attend en paramtre le handle Handle
 de la fentre formulaire retourn par F_Open et une procdure de dessin.
 
 La procdure UserDraw reevra en paramtre la zone dlimitant le clipping AES
 actuel auquel on ne devra pas " sortir ". Le clipping ne conerne pas les sorties graphiques VDI. Dans 
 ce dernier cas, on devra activer nous mme ce clipping dans UserDraw, pour raliser ce type de sortie, 
 si ncessaire.
 
	Un exemple d'utilisation de F_FreeDraw est celui du cas o l'on redessine rgulirement un ensemble 
 d'objets d'un formulaire sous vnement Timer. Lors d'un vnement, le formulaire peut tre partiellement 
 cach par d'autres fentres, qui empchent un redessin " brutal " des ces objets, sans risquer d'endommager
 le contenu des autres fentres.
 
 
 Exemple:
 
 
	Cet exmple illustre l'appel de MyDraw par F_FreeDraw.
 
 void MyDraw(int x_clip,int y_clip,int w_clip,int h_clip)
 {
   int register Indice;
   
   Indice = NB_POINT;
   while(Indice)
   {
     if((long)Tampon[0] < gain[Indice])
       ArbreDisplay[OutLeftLevel[Indice]].ob_state &=~SELECTED;
     else
       ArbreDisplay[OutLeftLevel[Indice]].ob_state |=SELECTED;
 }
   objc_draw(ArbreDisplay,VUMETERL,2,x_clip,y_clip,w_clip,h_clip);
 }
 ...
 F_FreeDraw(Handle,MyDraw);
 Tools procdures
 
 Syntaxe:        int F_UserEvent(int TreeName,Type_UserEvent *UserEvent);
 
 
 Description:
 
 
	Cette primitive permet d'installer des traitements particulis pour un formulaire en fentre 
 lors de l'arrive d'vnements habituellement automatiquement grs.
 
	En effet, lorsqu'un formulaire est soumis  un message Redraw par exemple, celui-ci est automatiquement
 redessin sans l'aide du programme utilisateur. Pourtant, il se peut qu'une rgion graphique de ce formulaire
 soit un dessin indpendant cre par l'utilisateur. Dans ce cas le dessin ne sera pas rafraichie, car n'est pas
 un objet AES du formulaire.
 
	F_UserRedraw permettra donc de rcuprer un vnement survenue  une fentre et d'excuter un traitement
 personnel, sans pour autant liminer l'action de cet vnement sur le formulaire. La procdure utilisateur 
 sera appele aprs le traitement interne de AADS.
 
 Les vnements que l'on peut rcuprer sont:
 
			Moved, Redraw, Iconify et Uniconify.
 
 La fonction attend en paramtre l'entier TreeName identifiant le formulaire et une structure contenant les 
procdures utilisateurs  appeler. Un NULL indique qu'il n'y a pas de procdures  appeler. Les fonctions
reoivent le handle de la fentre porteuse.
 
 Exemple:
 
 /* Dfinie dans PcXForm .h */
 typedef struct {
			void (*moved)(int handle);
			void (*redraw)(int handle);
			void (*iconify)(int handle);
			void (*uniconify)(int handle);
		} Type_UserEvent;
 
 /* Prototype d'un fonction Redraw utilisateur supplmentaire- */
 void MyRedraw(int Handle);
 ...
 {
	Type_UserEvent User;
 
	User.iconify = NULL;
	User.moved = NULL;
	User.uniconify = NULL;
	User.redraw = MyRedraw;
	F_UserEvent(MAINFORM,&User);
 }
 

				Chapitre V
				---------- 
			    Librairie PcCookie
			    ------------------
 
 
	Cette librairie offre au programmeur un ensemble de primitives d'accs au Cookie Jar
 du systme. A l'origine, totalement indpendante de AADS, elle a t intgre  celle-ci pour
 lui permettre de dterminer le type de systme, la langue, etc...
	PcCookie reste toujours indpendante et compile en code 68000, pour continuer  
 tre excutable sur ATARI ST. On peut ansi linker AADS avec un programme pour utiliser la 
 sous-librairie Cookie uniquement.
 
 La librairie signale sa prsence avec la macro  __COOKIE__
 
 
 5.1/ Gnralits
 ---------------- 
	
	On peut avec cette librairie, accder au Cookie Jar du systme ou en crer un nouveau. L'intret
 initial est pour les machines ST la possibilit d'en crer un compltement et pour les TOS suprieur
 au 1.6, obtenir toutes informations utiles.
 
	Dveloppe initialement sur 1040ST, elle est donc parfaitement adapte pour ce type.
 
 5.2/ Les constantes
 ------------------- 
 
	Ces constantes permettent de tester la valeur du champ information d'un Cookie. Elles
 sont galement utilises pour tester la valeur des champs d'informations de la structure MchInfo
 de la librairie PcXApp, qui ont t extraites du Cookie Jar.
 
 
 #define        M68000          0x0000                  Type de processeurs
 #define        M68010          0x000A
 #define        M68020          0x0014
 #define        M68030          0x001E
 #define        M68040          0x0028
 #define        M68060          0x003C
 
 #define        ST              0x00000L                Type de machines
 #define        STE             0x10000L
 #define        MSTE            0x10010L
 #define        TT              0x20000L
 #define        FALCON30        0x30000L
 
 
 #define        KEYB_USA        0x0                     Type de clavier
 #define        KEYB_D          0x1
 #define        KEYB_F          0x2
 #define        KEYB_GB         0x3
 #define        KEYB_SP         0x4
 #define        KEYB_I          0x5
 #define        KEYB_CHD        0x7
 #define        KEYB_CHF        0x8
 
 #define        LG_USA          0x0                     Langue active
 #define        LG_D            0x1
 #define        LG_F            0x2
 #define        LG_GB           0x3
 #define        LG_SP           0x4
 #define        LG_I            0x5
 #define        LG_CHD          0x7
 #define        LG_CHF          0x8
 
 #define        SHIFTER_ST      0x00000L                Type de circuit Vido
 #define        SHIFTER_STE     0x10000L
 #define        SHIFTER_TT      0x20000L
 #define        VIDEL_FALCON    0x30000L
 
 #define        MATRICE         0x08                    Configuration du systme sonore
 #define        DSP             0x04
 #define        CODEC           0x02
 #define        PSG             0x01
 
 #define        NO_FPU          0                       Type de Copro. Mathmatiques
 #define        SFP004          1
 #define        C68881_2        2
 #define        C68881_2_SFP    3
 #define        C68881          4
 #define        C68881_SFP      5
 #define        C68882          6
 #define        C68882_SFP      7
 #define        C68040          8
 #define        C68040_SFP      9
 
 #define        DATE_MJA        0                       Format date utilis
 #define        DATE_JMA        1
 #define        DATE_AMJ        2
 #define        DATE_AJM        3
 
 #define        TIME_12         0                       Format horaire 12 ou 24 Heures
 #define        TIME_24         1
 
 
 
 5.3/ Structures de donnes
 --------------------------  
 
	Cette structure dfinie un type cookie, l'objet lmentaire du Cookie Jar. On peut 
 ensuite crer un tableau de cookies, ce qui correspond  un Cookie Jar.
 
 
 typedef struct {
		 char identification[4];        Identification du cookie
		 union {
			 long mot_long;         Champ information
			 int  mot[2];
			 char octet[4];
		       } information;
		} Type_Cookie;
			
    
 5.4/ Primitives utilisateurs
 ---------------------------- 
 
 Syntaxe:                       Type_Cookie *J_GetAdr(void);
 
 
 Description:
 
 
	Retourne l'adresse de dpart du Cookie Jar systme. Si le Cookie Jar existe, l'adresse
 correspond  l'adresse du premier cookie, sinon retourne la valeur Null.
 
	L'organisation d'un Cookie Jar en mmoire, est simplement un tableau, comprenant une suite de
 cookies, termin par un cookie nul.
	
 
 Syntaxe:                       int J_Exist(void);
 
 
 Description:
 
 
	Indique si il existe un Cookie Jar dans le TOS de la machine. Tous les TOS suprieurs 
 au TOS 1.6 doivent normallement avoir un Cookie Jar. La fonction retourne True si il existeou bien False.
 
	
 
 
 Syntaxe:                       int J_Read(Type_Cookie *liste);
 
 
 Description:
 
 
	Recopie dans la liste de cookies vide passe en paramtre, tout le Cookie Jar du 
 systme y compris le cookie nul. Si le Cookie Jar n'existe pas aucune opration n'est effectue.
 Liste pointe sur le premier Cookie du tableau, qui devra avoir une longueur suffisante pour 
 pouvoir y recopier tous les cookies du systme.
 
	La fonction retourne True si l'opration s'est bien droule, sinon False.
 
 
 
 Syntaxe:                       int J_Install(int nombre_slots);
 
 
 Description:
 
 
	Installe un nouveau cookie jar de nombre_slots slots. Si il existait dj un cookie jar, 
 la fonction recopie automatiquement tous les cookies prsents dans l'ancien Cookie Jar.
 
	 Si il n'y a plus assez de mmoire la fonction est abandonne. Pour les TOS antrieur au 1.6,
 la fonction installe galement une routine reset d'effaement de la variable systme long 0x5A0.
 
	La fonction attend en entre nombre_slots pour indiquer la taille du futur Cookie Jar,
 puis retourne True si l'opration s'est bien droule sinon False.
 
 
 Syntaxe:                       int J_Number(void);
 
 
 Description:
 
 
	Retourne le nombre de cookies effectivement prsent dans le Cookie Jar du systme 
 sans compter le cookie nul. Si il n'existe pas de Cookie Jar la fonction est abandonne et
 retourne 0.
	
 
 
 Syntaxe:                       long J_Size(void);
 
 
 Description:
 
 
	Retourne la taille du Cookie Jar systme en nombre de slots incluant le slot du cookie 
 Nul. Si il n'existe pas de Cookie Jar la fonction est abandonne et retourne 0L.
	
 
 Syntaxe:               int J_Search(char identification[4],Type_Cookie *cookie);
 
 
 Description:
 
 
	Recherche dans le Cookie Jar du systme, le cookie dont l'identification correspond  
 l'identification passe en paramtre. Si succs, retourne dans le cookie pass en paramtre la
 copie du cookie trouv en mmoire ainsi que True,  sinon False.
 
	La fonction ne retourne pas l'adresse du cookie dans le Cookie Jar systme.
 
 Syntaxe:                       int J_Insert(Type_Cookie *new_cookie);
 
 
 Description:
 
 
	Insre dans le Cookie Jar systme, le nouveau cookie pass en parametre. Le cookie 
 en paramtre est recopi dans le cookie jar systme.
	Si le cookie existe ou, si le Cookie Jar est plein ou n'existe pas, la fonction est abandonne.
Elle retournera True si l'insertion est russie sinon False.
 Syntaxe:                       int J_Delete(char identification[4]);
 
 
 Description:
 
 
	Supprime un cookie prsent dans le Cookie Jar systme, si le Cookie Jar existe et que 
 le cookie est effectivement trouv. La fonction attend en entre l'identification du cookie et 
 retourne True si la suppression a russie sinon False.
 
 
			Classement alphabtique des primitives
			-------------------------------------- 
 
 
 
 PcXApp: Application, Evnements et Timer Event
 ----------------------------------------------
 
	A_Close()                                                               P 13
	A_CycleTimer()                                                          P 21
	A_FileSelector()                                                        P 15
	A_GFontHeigh()                                                          P 16 
	A_GFontWidth()                                                          P 17
	A_GCellHeigh()                                                          P 18
	A_GCellWidth()                                                          P 19
	A_HeaderSystem()                                                        P 14
	A_OffTimer()                                                            P 24
	A_OnTimer()                                                             P 23
	A_Open()                                                                P 12
	A_SetCodeTimer()                                                        P 22
	A_WaitEvent()                                                           P 20
 
 PcXForm: Formulaires, Pop-ups Menus et Desktop
 ----------------------------------------------
 
	F_Close()                                                               P 67
	D_Close()                                                               P 73
	F_EstIconifie()                                                         P 81
	F_Event()                                                               P 68
	F_Exit()                                                                P 65
	F_FreeDraw()                                                            P 82
	F_HObject()                                                             P 79
	F_Init()                                                                P 64
	F_LObject()                                                             P 78
	F_Open()                                                                P 66
	D_Open()                                                                P 72
	F_PopAttach()                                                           P 69
	F_PopEvent()                                                            P 70
	F_ReadText()                                                            P 77
	F_RedrawObject()                                                        P 80
	F_SetPopup()                                                            P 71
	F_Select()                                                              P 74
	F_UnSelect()                                                            P 75
	F_UserEvent()                                                           P 84
	F_WriteText()                                                           P 76
	
 
 
 
 
 PcXMenu: Menu Principal et Sous-Menus hirarchiques
 --------------------------------------------------- 
 
	M_Change()                                                              P 59
	M_Checked()                                                             P 55
	M_Close()                                                               P 51
	M_Disable()                                                             P 58
	M_Enable()                                                              P 57
	M_Event()                                                               P 54
	M_Exit()                                                                P 49
	M_Init()                                                                P 48
	M_Open()                                                                P 50
	M_SetSubMenu()                                                          P 60
	M_SubAttach()                                                           P 52
	M_SubEvent()                                                            P 53
	M_UnChecked()                                                           P 56
 
 
 PcXWind: Fentres
 -----------------
 
	W_Close()                                                               P 33
	W_ClrScr()                                                              P 44
	W_Event()                                                               P 31
	W_Exit()                                                                P 29
	W_GetParameter()                                                        P 30
	W_HomeCursor()                                                          P 43
	W_Init()                                                                P 28
	W_OffClip()                                                             P 36
	W_OnClip()                                                              P 35
	W_Open()                                                                P 32
	W_Printf()                                                              P 45
	W_Redraw()                                                              P 34
	W_GLine()                                                               P 37
	W_GColums()                                                             P 38
	W_GMaxLine()                                                            P 39
	W_GMaxColum()                                                           P 40
	W_SLine()                                                               P 41
	W_SColum()                                                              P 42
 
 
 PcCookie: Cookie Jar 
 --------------------
 
	J_Delete()                                                              P 95
	J_Exist()                                                               P 88
	J_GetAdr()                                                              P 87
	J_Insert()                                                              P 94
	J_Install()                                                             P 90
	J_Number()                                                              P 91
	J_Read  ()                                                              P 89
	J_Search()                                                              P 93
	J_Size()                                                                P 92
	
 
 
		Atari Application Developpment Service 
		 Documentation Dveloppeur - A.A.D.S. 

		    Copyright (c) FRANCE 1994-95
 
