29
Eric D’Hooghe GLUT & GNAT Portage du simulateur de trains miniatures sur le compilateur GNAT et utilisation de la librairie GLUT d’OpenGL r Professeur responsable : Pierre Breguet EIVD IL — Janvier 2001

OpenGL Gnat

  • Upload
    natyac

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

programming

Citation preview

Page 1: OpenGL Gnat

Eric D’Hooghe

GLUT & GNATPortage du simulateur de trains miniatures sur le compilateur GNAT et utilisation

de la librairie GLUT d’OpenGL r©

Professeur responsable : Pierre BreguetEIVD IL — Janvier 2001

Page 2: OpenGL Gnat
Page 3: OpenGL Gnat

Table des matieres Simulateur de trains sur compilateur GNAT – i

Table des matieres

Cahier des charges iiiBut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiiObjectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiiPlanification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii

Introduction v

I Documentation utilisateur 1

1 Informations generales 31.1 Configuration necessaire a l’installation . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Emplacement des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Variables d’environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.1 Windows NT/2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.2 Windows 95/98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Mode d’emploi 52.1 Configuration necessaire a l’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Materiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Presentation du simulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.1 Compilation et edition de lien . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.3 Interface utilisateur : le simulateur . . . . . . . . . . . . . . . . . . . . . . . 7

3 Presentation des nouveautes 93.1 Le menu contextuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Les raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3 La differenciation des locomotives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.4 Resolution des problemes eventuels . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

II Documentation technique 13

4 Utilisation de la librairie GLUT 154.1 Modification de P Maquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.1 Fonctions de Callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.1.2 Objet protege Objetpartager . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2 Modification de P Section et de P Train . . . . . . . . . . . . . . . . . . . . . . . . 164.3 Modification de P Couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5 Le menu contextuel 17

Page 4: OpenGL Gnat

ii – Simulateur de trains sur compilateur GNAT Table des matieres

6 Differenciation des locomotives 196.1 Procedure Demander Loco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.2 Paquetage P Couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Bibliographie 21

Page 5: OpenGL Gnat

Table des matieres Simulateur de trains sur compilateur GNAT – iii

Cahier des charges

But

Realiser le portage du simulateur de trains miniatures sur le compilateur GNAT en utilisantla librairie GLUT d’OpenGL r©.

Objectifs

GLUT Modifier les fichiers suivant afin d’utiliser la librairie GLUT d’OpenGL r© plutot que laglAux :• P\_Maquette.ads, -.adb ;• P\_Section.ads, -.adb ;• P\_Train.ads, -.adb ;• P\_Couleur.ads, -.adb.

Compilation avec GNAT Utiliser et configurer le compilateur GNAT pour permettre la com-pilation du programme de simulation.

Menu contextuel Ajouter un menu contextuel offrant plusieurs fonctionnalites et qui remplaceraa terme les icones de commande du simulateur. A noter que celles-ci ne seront pas supprimeesdu programme, elles seront disponibles a la demande de l’utilisateur grace a une option dumenu contextuel.

Differenciation des locomotives Faire en sorte que les locomotives aient chacune une couleurdistincte, permettant de les differencier rapidement. Dans la mesure du possible, une legendeindiquant la correspondance entre le numero de la locomotive et sa couleur sera disponible.

Planification

1. Etude des fichiers sources (et remise en forme du code).

2. Modifications des fichiers listes ci-dessus pour l’utilisation de la librairie GLUT d’OpenGL r©

et portage sur le complilateur GNAT.

3. Modifications et ajout des fonctionnalites.

Page 6: OpenGL Gnat

iv – Simulateur de trains sur compilateur GNAT Table des matieres

Page 7: OpenGL Gnat

Table des matieres Simulateur de trains sur compilateur GNAT – v

Introduction

Cette documentation comporte deux parties. La premiere est destinee aux utilisateurs du nou-veau simulateur. Elle comporte le mode d’emploi de ce dernier ainsi que la maniere d’utiliser lecompilateur GNAT et l’environnement de developpement AdaGIDE. La seconde partie decrit tech-niquement les modifications et les supplemements apportes au simulateur et doit etre considereecomme un complement au travail de M. P. Girardet[Gir98].

Il est important de savoir que cette version du simulateur ne peut fonctionner qu’avec cecompilateur, la librairie utilisee – a savoir la GLUT∗ – n’etant definie en Ada que pour celui-ci.

∗GL Utility Toolkit

Page 8: OpenGL Gnat

vi – Simulateur de trains sur compilateur GNAT Table des matieres

Page 9: OpenGL Gnat

Simulateur de trains sur compilateur GNAT – 1

Premiere partie

Documentation utilisateur

Page 10: OpenGL Gnat
Page 11: OpenGL Gnat

Chapitre 1. Informations generales Simulateur de trains sur compilateur GNAT – 3

Chapitre 1

Informations generales

Nous supposons que vous avez pris connaissance de la documentation de M. P. Girardet [Gir98]decrivant de maniere complete l’utilisation du simulateur dans l’environnement de developpementObjectAda. Vous pouvez vous baser sur celle-ci pour tout ce qui concerne la presentation generaledu simulateur et la description des commandes de celui-ci. La configuration et l’utilisation de cettenouvelle version est decrite ci-apres.

1.1 Configuration necessaire a l’installation

Le simulateur se compose d’une serie de fichiers qui seront lies a votre programme lors de sacompilation. Contrairement a ObjectAda, il n’est pas necessaire de specifier la liaison de ces diffe-rents fichiers. En effet, GNAT est preconfigure (sect. 1.3) sur les postes de l’EIVD pour controlerl’utilisation du simulateur. Si toutefois le compilateur vous signale qu’il ne trouve pas les fichiers,referez-vous a la section 1.2.

1.2 Emplacement des fichiers

Le simulateur complet est telechargeable a l’adresse : http://www.eivd.ch/ina/Laboratoires/Ltr/Simu train.htm. Il s’agit d’une archive auto-extractable qui contient la librairie simulateur,ainsi que la documentation, un fichier exemple et les sources du simulateur, repartis dans plusieursrepertoires. La figure 1.1 decrit l’arborescence creee lors de la decompression de l’archive.

Les fichiers necessaire a l’utilisation du simulateur sont localises dans les repertoires suivants :

Repertoire destination la ou vous decompressez l’archive ;

↪→ SimulateurGNAT

↪→ Librairie contenant la librairie libtrain handler.a ;

↪→ Simulateur

↪→ Sources contenant les fichiers sources *.ads utilises lors de la compilation ;

↪→ Objects contenant les fichiers objets *.ali utilises lors de l’edition de liens ;

↪→ Maquettes contenant les fichiers Maquet a.txt et Maquet b.txt decrivant les maquettesutilisees lors de l’execution ;

↪→ OpenGL

↪→ Glut

↪→ Ada

↪→ Librairie contenant les fichiers sources glut.ads et glut.adb, les fichiersobjets glut.ali et glut.o et les librairies glut32.dll et libglut32.a.

Page 12: OpenGL Gnat

4 – Simulateur de trains sur compilateur GNAT 1.3. Variables d’environnement

Fig. 1.1 – Arborescence de l’archive

Remarque : il vous faudra imperativement copier le fichier decrivant la maquette que vousutilisez dans le repertoire contenant l’executable cree.

Pour l’EIVD :Ces fichiers sont egalement disponibles sur le reseau a l’adresse \\EINT0\Informatique\ProgrammationConcurrente\Simulateur\SimulateurGNAT et sur les disques durs des ma-chines des salles H06b, H06c, G07 et F06a dans les repertoires suivants :

Sources C:\Gnat\Bindings\Simulateur\Sources ;

Objets C:\Gnat\Bindings\Simulateur\Objects ;

Maquettes C:\Gnat\Bindings\Simulateur\Maquettes ;

Libs C:\Gnat\Lib.

1.3 Variables d’environnement

Afin que le compilateur puisse trouver les fichiers sources et objets necessaires, deux variablesd’environnement doivent etre definies.

1.3.1 Windows NT/2000

Accedez aux Proprietes du systeme → Environnement et controlez la presence des va-riables suivantes. Si elles n’existent pas, vous pouvez les ajouter, mais elles seront alors inscritesdans votre base de registre et pas dans celle de la machine locale.

Variable ValeurADA INCLUDE PATH C:\Gnat\Bindings\Simulateur\SourcesADA OBJECTS PATH C:\Gnat\Bindings\Simulateur\Objects

1.3.2 Windows 95/98

Ajoutez ces deux lignes dans le fichier Autoexec.bat :set ADA INCLUDE PATH=C:\Gnat\Bindings\Simulateur\Sourcesset ADA OBJECTS PATH=C:\Gnat\Bindings\Simulateur\Objects

Page 13: OpenGL Gnat

Chapitre 2. Mode d’emploi Simulateur de trains sur compilateur GNAT – 5

Chapitre 2

Mode d’emploi

Comme cela a deja ete mentionne, le simulateur est compose d’une serie de fichiers qui serontlies a votre programme. Nous reviendrons sur son utilisation plus avant dans cette documentation.

2.1 Configuration necessaire a l’utilisation

Cette version du simulateur a ete developpee et testee pour le compilateur GNAT 3.13pet l’environnement de developpement AdaGIDE v. 6.30.3 diponibles a l’adresse suivante : ftp://cs.nyu.edu/pub/gnat/3.13p/winnt/ . Notez que cette version fonctionne sur les differents OSWindows (95/98/2000).

Les fichiers objets *.ali, *.o mis a votre disposition ont ete generes avec la version 3.13p deGNAT. Ceux-ci ont un format different des fichiers objets de la version 3.12p. Il est donc inutiled’essayer de compiler vote programme avec une version du compilateur GNAT anterieure a la3.13p.

Pour l’EIVD :� Le fichier d’installation du compilateur GNAT est egalement disponible a l’adresse suivante :\\EINT0\Informatique\Programmation\Ada\Compilateurs\Gnat.

2.1.1 Materiel

Le materiel requis est un ordinateur PC equipe d’un systeme d’exploitation 32 bits soit Win-dows 95, 98 ou Windows NT ou 2000. Il est egalement indispensable d’avoir une carte graphiquecompatible OpenGL r©.

2.1.2 Logiciel

La maniere la plus simple de compiler vos programmes est d’utiliser l’environnement de deve-loppement AdaGIDE v. 6.30.3. Les machines des salles citees dans la section 1.2 devraient etreconfigurees correctement pour son utilisation. Si vous rencontrez des problemes, referez-vous auxpoints 5 a 7 du processus d’installation presente ci-dessous. Si vous desirez l’utiliser chez vous,voici la marche a suivre :� Tous les fichiers cites ci-apres sont compris dans l’archive telechargeable a l’adresse sui-

vante : http://www.eivd.ch/ina/Laboratoires/Ltr/Simu train.htm. Les logiciels GNAT etAdaGIDE sont telechargeables sur Internet a cette adresse : ftp://cs.nyu.edu/pub/gnat/3.13p/winnt/ .

Processus d’installation :

1. Installer le compilateur GNAT.

2. Installer le logiciel AdaGIDE v. 6.30.3.

Page 14: OpenGL Gnat

6 – Simulateur de trains sur compilateur GNAT 2.2. Presentation du simulateur

3. Demarrer le programme Setup-Simualteur.exe (ou decompressez l’archive) que vous aveztelecharge : choisissez le repertoire destination (nomme plus loin DestDir).

4. Deplacer le repertoire Simulateur∗ dans C:\Gnat\Bindings.

5. Copier les librairies libtrain handler.a et libglut32.a dans le repertoire C:\Gnat\lib.

6. Copier les fichiers glut.ads, glut.adb, glut.ali et glut.o dans le repertoire C:\Gnat\Bindings\Win32Ada.

7. Copier la librairie glut32.dll dans le repertoire C:\Winnt\System32 (Windows NT/2000)ou C:\Windows\System (Windows 95/98) si celle-ci n’est pas deja presente.

Cette version du simulateur a ete realisee et testee avec la version 3.7 des librairies (glut32.dllet libglut32.a) et fichiers sources (glut.ads et glut.adb) de la GLUT. Ceux-ci sont egalement dis-ponibles sur Internet a l’adresse : http://www.opengl.org .

Pour l’EIVD :� Les logiciels GNAT et AdaGIDE sont disponibles sur le reseau de l’EIVD dans le repertoire

suivant : \\EINT0\Informatique\Programmation\Ada\Compilateurs\Gnat.� Les fichiers concernant le simulateur sont disponibles dans le repertoire suivant : \\EINT0\Informatique\ProgrammationConcurrente\Simulateur\SimulateurGNAT.� Les fichiers OpenGL r© sont disponibles dans le repertoire suivant : \\EINT0\Informatique\Infographie\OpenGL\Glut\Ada\Librairie.

2.2 Presentation du simulateur

Le simulateur est detaille dans la documentation de M. P. Girardet [Gir98]. Veuillez doncvous y referer pour ce qui concerne la presentation generale du simulateur et son utilisation. Lacompilation, l’edition de lien et l’execution du programme sont detaillees ci-apres.

2.2.1 Compilation et edition de lien

Contrairement a ObjectAda, AdaGIDE ne necessite pas de projet pour la compilation de votreprogramme, ce qui simplifie grandement les choses. La marche a suivre est la suivante :

1. Ouvrez votre programme dans l’environnement de developpement AdaGIDE.

2. Configurez les options du repertoire courant (menu Tools/Gnat Options in current di-rectory . . . ) comme presente a la figure 2.1 : ajoutez les options suivantes pour GnatMake :-largs -ltrain handler.

3. Compilez-le (bouton Compile)

4. Lancez l’edition de lien (bouton Build)

Remarque : la configuration des options de AdaGIDE (pt. 2 est a realiser lors de chaquedemarrage du logiciel.

Si tout se deroule bien, vous obtiendrez respectivement les messages suivants :

– Compilation :Compiling...(...)Completed successfully.

– Edition de lien :∗Localisation : \textit{DestDir}\SimulateurGNAT\Librairie\Simulateur

Page 15: OpenGL Gnat

Chapitre 2. Mode d’emploi Simulateur de trains sur compilateur GNAT – 7

Fig. 2.1 – Configuration des opions de compilation

Building...GNATMAKE 3.13p (20000509) Copyright 1995-2000 Free Software Foundation,Inc.(...)Completed successfully.

2.2.2 Execution

Pour que l’execution se deroule correctement, le fichier decrivant la maquette que vous utilisezdoit se trouver dans le meme repertoire que l’executable. Si ce n’est pas le cas, le programmerefusera de demarrer.

Pour lancer l’execution, cliquez sur le bouton Run .

2.2.3 Interface utilisateur : le simulateur

Pour les reponses aux premieres question de configuration, veillez vous referer a la documen-tation de M. P. Girardet [Gir98].

Une fois ces donnees fournies, le simulateur est en fonction et la fenetre textuelle precedemmentutilisee par le simulateur va servir a effectuer les affichages et les saisies du programme de gestiondes trains.

Deux fenetres graphiques OpenGL r© s’ouvrent alors. L’une presente une vue de la maquetteet l’aute est une fenetre de legende indiquant la correspondance entre la couleur et le numero deslocomotives.

Attention : ces deux fenetres peuvent etre cachees par d’autres fenetres ; il faut alors lesramener au premier plan en cliquant sur leurs icones respectives dans la barre des taches.

Les differentes caracteristiques concernant les commandes du simulateur sont entierement de-taillees dans la documentation de la version ObjectAda. Les nouveautes apportees sont detailleesdans le chapitre 3.

La figure 2.2 donne un apercu de ces fenetres graphiques. Notez que la fenetre de legendene comporte que les intitules Color et Number. Lorsque vous entrerez les caracteristiques d’unelocomotive, un rectangle de couleur et le numero de celle-ci s’y afficherons, etablissant ainsi unecorrespondance visuelle.

Page 16: OpenGL Gnat

8 – Simulateur de trains sur compilateur GNAT 2.2. Presentation du simulateur

Fig. 2.2 – Apercu du simulateur et de la legende

Page 17: OpenGL Gnat

Chapitre 3. Presentation des nouveautes Simulateur de trains sur compilateur GNAT – 9

Chapitre 3

Presentation des nouveautes

3.1 Le menu contextuel

L’utilisation de la librairie GLUT d’OpenGL r© a permi l’introduction d’un menu contextuel(fig. 3.1) simplifiant grandement l’utilisation du simulateur. En effet, les icones de controle pre-sentes dans l’ancienne version (et sur demande dans celle-ci) sont tres simples d’utilisation maisn’offrent que peu de possibilites quant a la manipulation du simulateur. Le menu contextuel apermi l’introduction de nouvelles fonctionnalites telles que le reaffichage du simulateur en positiond’origine ou les raccourcis clavier (sect. 3.2).

Pour acceder au menu, activez la fenetre OpenGL r© de simulation et cliquez sur le bouton droitde la souris en pointant n’importe ou dans cette fenetre. Ce menu comporte les fonctionnalitessuivantes :

Fig. 3.1 – Menu contextuel

Rotation de la maquette L’angle minimal est de 15◦, les autres valeurs permettant d’obtenirtous les multiples possibles de 15◦.

Inclinaison de la maquette Ici, la valeur maximale a ete fixee a 60◦, la maquette devenantpresque invisible au-dela.

Zoom simple ou double.Mode d’avance Rapide ou lent.Icones de controle Affichees ou pas.Pause Arrete ou redemarre la progression des locomotives.Remise a zero Annule les rotations et inclinaisons effectuees et reaffiche la maquette dans sa

position originale.Quitter Met fin au programme.

Notez que l’affichage du menu contextuel agit comme une pause sur l’execution du programme.

Page 18: OpenGL Gnat

10 – Simulateur de trains sur compilateur GNAT 3.2. Les raccourcis clavier

3.2 Les raccourcis clavier

Pour completer le menu contextuel, des raccourcis clavier ont ete ajoutes, dont voici la liste :

Touche Fonctionnalite↑ et ↓ Incliner la maquette← et → Pivoter la maquette+ et - Zoom avant et arriereR et L Mode d’avance des locomotives rapide ou lent

P Pause / Pas a pasQ Quitter le programmeI Affichage des icones de controle (version ObjectAda)

3.3 La differenciation des locomotives

Contrairement a l’ancienne version, les locomotives ont chacune une couleur propre, facilitantleur positionnement. Une legende (fig. 3.2) indique la correspondance entre la couleur et le numerode la locomotive. Les couleurs sont attribuees automatiquement et suivant un ordre predetermineet cyclique :• Magenta• Rouge• Orange• Vert• Bleu

Il est donc possible de differencier facilement jusqu’a cinq locomotives (fig. 3.2) de maniere cyclique,c’est-a-dire que la sixieme locomotive aura la meme couleur que la premiere et ainsi de suite.Notez que la taille de la fenetre de legende est prevue pour afficher initialement jusqu’a troisinformations (il faut bien choisir une valeur par defaut). Toutefois, la taille de cette fenetre varieautomatiquement en fonction du nombre de locomotives. Au dela de trois trains, chaque nouvelleintroduction entraine un agrandissement de la fenetre. Il vous est donc possible theoriquementde controler jusqu’a quatre-vingt trains simultanement, bien que la taille de la maquette ne lepermette pas.

Fig. 3.2 – Legende

Page 19: OpenGL Gnat

Chapitre 3. Presentation des nouveautes Simulateur de trains sur compilateur GNAT – 11

3.4 Resolution des problemes eventuels

Voici les solutions aux problemes rencontre durant les test :

gnatmake : « train handler.adb » not found Controler que les fichiers objets *.ali du reper-toire C:\Gnat\Bindings\Simulateur\Objects sont en lecture seule. Controler les variablesd’environnement.

gnatmake : « p afficher.adb » not found idem.

file : « train handler.ads » not found Controler les variables d’environnement. Faites atten-tion a respecter scrupuleusement la casse et l’orthographe de celles-ci.

Probleme de compilation en general Pensez a controler les options de compilation de Ada-GIDE.

Page 20: OpenGL Gnat

12 – Simulateur de trains sur compilateur GNAT 3.4. Resolution des problemes eventuels

Page 21: OpenGL Gnat

Simulateur de trains sur compilateur GNAT – 13

Deuxieme partie

Documentation technique

Page 22: OpenGL Gnat
Page 23: OpenGL Gnat

Chapitre 4. Utilisation de la librairie GLUT Simulateur de trains sur compilateur GNAT – 15

Chapitre 4

Utilisation de la librairie GLUT

L’utilisation de la librairie GLUT d’OpenGL r© en remplacement de la GLaux est motive enpartie par l’utilisation du compilateur GNAT. Plusieurs fichiers ont donc ete modifies afin deprofiter des nombreux avantages qu’offre la GLUT.

Une restructuration de certains paquetages a ete necessaire pour etre compatible avec lesfonctionnalites mises a disposition par cette librairie. Ainsi les paquetages gerant l’affichage et lesfonctions de callback ont etes modifies et decomposes.

Certains objets proteges ont egalement subit une modification voir un « deplacement » demaniere a minimiser les modifications du code. En effet, il a ete necessaire de rendre visiblescertaines fonctionnalites qui ne l’etaient pas.

4.1 Modification de P Maquette

4.1.1 Fonctions de Callback

La GLUT offre un mecanisme de callback plus simple a gerer que celui de la GLaux. En effet, latraduction des adresses de procedures Ada en adresses de procedures utilisables comme parametresn’est plus necessaire. Par contre, il est indispensable de definir les procedures de callback dans unpaquetage enfant de celui dans lequel l’appel a celles-ci est realise, ceci pour des raisons de dureesde vie de certaines variables.

Pour plus de lisibilite, la tache Fenetre gerant l’affichage du simulateur a ete deplacee dans unpaquetage enfant de P Maquette nomme P Maquette.Display. Les procedures de callback ont doncete implementees dans un enfant de ce dernier, soit P Maquette.Display.OpenGL Callback.

Il a egalement ete necessaire de deplacer les specifications des objets proteges Objetpartageret Protmaquette ainsi que les specifications des procedures Reinitialiseraffichage, AfficherMaquette,ModeContinu et AfficherLegende du corps de P Maquette vers la partie privee de la specification dece meme paquetage.

4.1.2 Objet protege Objetpartager

Objetpartager comporte une entree et trois procedures supplementaires necessaires a la mise ajour de la fenetre de legende (cf. section 3.3) :

MettreAJourLegende Entree bloquante tant qu’un affichage de la legende n’est pas necessaire.

LegendeModifiee Indique que la legende a ete modifiee pour que le nouvel affichage soit realise.

MemoriserNumeroEtCouleur Memorise le numero et la couleur de la nieme locomotive de-mandee par l’utilisateur,

NumeroEtCouleurDeLoco Fournir le numero et la couleur de la nieme locomotive demandeepar l’utilisateur.

Page 24: OpenGL Gnat

16 – Simulateur de trains sur compilateur GNAT 4.2. Modification de P Section et de P Train

4.2 Modification de P Section et de P Train

Dans ces fichiers, les modifications ne portent que sur les appels de fonctions OpenGL r©. Eneffet, l’utilisation de la GLUT a la place de la GLAux a necessite le remplacement de celles-ci, lesnoms et les parametres de ces fonctions n’etants pas strictement identiques.

4.3 Modification de P Couleur

Afin de rendre le simulateur plus attrayant et plus simple a visualiser, plusieurs couleurs ontete ajoutees. Ces modifications et ajouts sont lies a la volonte d’afficher les locomotives avec descouleurs differentes. En effet, il a ete necessaire de redefinir la couleur des sections (rails, aiguillages,. . .) pour augmenter le contraste entre celles-ci et les locomotives.

Voici l’extrait du code correspondant a la definition RGB des couleurs :

−− Table de conver s i on ent re une cou l eur et son equ iva l en t en RVBATablecou leur : constant T Table Couleur :=

60 ( ( 0 . 3 , 0 . 2 5 , 1 . 0 , 1 . 0 ) , −− Bleu Contact( 0 . 5 5 , 0 . 5 5 , 0 . 5 5 , 1 . 0 ) , −− Couleur Segment Inact i f( 0 . 0 , 0 . 3 5 , 0 . 0 , 1 . 0 ) , −− Couleur Segment Act i f( 1 . 0 , 0 . 0 , 0 . 0 , 1 . 0 ) , −− Couleur Risque Dera i l l ement( 1 . 0 , 1 . 0 , 1 . 0 , 1 . 0 ) , −− Blanc

65 ( 0 . 0 , 0 . 0 , 0 . 0 , 1 . 0 ) , −− Noir( 1 . 0 , 0 . 0 , 0 . 0 , 1 . 0 ) , −− Rouge( 0 . 0 , 1 . 0 , 0 . 0 , 1 . 0 ) , −− Vert( 0 . 0 , 0 . 0 , 1 . 0 , 1 . 0 ) , −− Bleu( 0 . 0 , 1 . 0 , 1 . 0 , 1 . 0 ) , −− Cyan

70 ( 1 . 0 , 1 . 0 , 0 . 0 , 1 . 0 ) , −− Jaune( 1 . 0 , 0 . 0 , 1 . 0 , 1 . 0 ) , −− Magenta −+( 1 . 0 , 0 . 2 5 , 0 . 2 5 , 1 . 0 ) , −− Rouge Loco +( 1 . 0 , 0 . 6 , 0 . 1 , 1 . 0 ) , −− Orange Loco +− Couleurs l o c o s( 0 . 2 5 , 0 . 7 5 , 0 . 2 , 1 . 0 ) , −− Vert Loco +

75 ( 0 . 1 5 , 0 . 5 5 , 1 . 0 , 1 . 0 ) −− Bleu Loco −+) ;

Les couleurs des locomotives sont codees a la fin de la liste afin de pouvoir etablir facilementun cycle de cinq couleurs differentes. Veuillez vour referer au chapitre 6 pour plus de details.

Page 25: OpenGL Gnat

Chapitre 5. Le menu contextuel Simulateur de trains sur compilateur GNAT – 17

Chapitre 5

Le menu contextuel

La GLUT offre la possibilite de definir un menu contextuel, outil fort utile dans une interfacetelle que ce simulateur. A terme, celui-ci devrait remplacer les icones de controle de la premiereversion du simulateur.

Voici un apercu de ce menu :

Fig. 5.1 – Apercu du menu contextuel

Les fichier P Maquette-Display contient la definition de ces menus et sous-menus, ainsi que laprocedure principale gerant l’affichage du simulateur.

Page 26: OpenGL Gnat

18 – Simulateur de trains sur compilateur GNAT

Page 27: OpenGL Gnat

Chapitre 6. Differenciation des locomotives Simulateur de trains sur compilateur GNAT – 19

Chapitre 6

Differenciation des locomotives

Plusieurs modifications ont ete apportees pour differencier les locomotives. Elles sont detailleesdans les sections qui suivent.

6.1 Procedure Demander Loco

La couleur de la locomotive est attribuee lors de l’appel a la procedure Demander Loco. Lavariable globale Last Color, locale au corps du paquetage Train Handler, a ete ajoutee afin dememoriser la derniere couleur utilisee. Au debut de la procedure, on selectionne la couleur suivante,qui sera plus tard affectee a la locomotive.

Les couleurs, au nombre de cinq, sont disponibles dans le paquetage P Couleur. Pour des raisonsde facilite de codage, la liste des couleurs a ete modifiee et augmentee (cf. section 6.2). Ainsi, lescouleurs des locomotives se trouvent en fin de liste, permettant une affectation cyclique grace aun simple test effectue au debut de la procedure Demander Loco.

6.2 Paquetage P Couleur

Plusieurs modifications ont ete apportees a ce paquetage. Tout d’abord, quatre couleurs utiliseespour le dessin des elements de la maquette ont ete ajoutees en debut de liste :• Bleu Contact,• Couleur Segment Inactif,• Couleur Segment Actif,• Couleur Risque Deraillement.Il sera dorenavant plus simple de modifier la couleur de ces elements sans effets de bord, tel que

la modification simultanee de la couleur d’un autre element. Il va de soi que toutes les proceduresutilisant ces couleurs ont ete modifiees en consequence.

On trouve ensuite dans la liste les huits couleurs elementaires, a savoir :• Blanc,• Noir,• Rouge,• Vert,• Bleu,• Cyan,• Jaune,• Magenta.Enfin on trouve la liste des couleurs attribuees aux locomotives. Le magenta, qui etait la couleur

unique choisie dans l’ancienne version du simulateur, correspond a la couleur affectee a la premierelocomotive, le bleu ciel (Bleu Loco) est la derniere.

Voici un apercu du simulateur avec cinq locomotives :

Page 28: OpenGL Gnat

20 – Simulateur de trains sur compilateur GNAT 6.3. Conclusion

Fig. 6.1 – Apercu des couleurs

6.3 Conclusion

Cette documentation technique succinte permet de se rendre compte que les modificationsliees au portage sur le compilateur GNAT decoulent en realite de l’utilisation de la librairie GLUTd’OpenGL r©. Celles-ci restent minimes mais necessitent tout de meme une restructuration du code.

L’introduction d’une seconde fenetre de legende quant a elle necessite plus de modifications.En effet, la gestion de l’affichage par les procedures de callback devient legerement plus com-plexe, celles-ci ne pouvant pas etre dedoublees, la definition d’une serie de procedures par fenetregraphique n’etant pas autorise par OpenGL r©.

Page 29: OpenGL Gnat

Bibliographie Simulateur de trains sur compilateur GNAT – 21

Bibliographie

[Gir98] Girardet P. Simulateur de trains miniature. Rapport technique, 1998.