Premier commit
authorGreg Burri <greg.burri@gmail.com>
Fri, 31 Jul 2009 16:07:23 +0000 (18:07 +0200)
committerGreg Burri <greg.burri@gmail.com>
Fri, 31 Jul 2009 16:07:23 +0000 (18:07 +0200)
281 files changed:
ABout.TXT [new file with mode: 0644]
CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Cahier des Charges.doc [new file with mode: 0644]
CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Documentation Technique.doc [new file with mode: 0644]
CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Manuel d'utilisation.doc [new file with mode: 0644]
CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Principal.doc [new file with mode: 0644]
CD/Doc/Doc (word xp)/Que est qu'une fractal-.doc [new file with mode: 0644]
CD/Doc/GPL-licence FR.txt [new file with mode: 0644]
CD/Doc/Pdf/Projet de semestre - PowerFractal - Cahier des Charges.pdf [new file with mode: 0644]
CD/Doc/Pdf/Projet de semestre - PowerFractal - Documentation Technique.pdf [new file with mode: 0644]
CD/Doc/Pdf/Projet de semestre - PowerFractal - Manuel d'utilisation.pdf [new file with mode: 0644]
CD/Doc/Pdf/Projet de semestre - PowerFractal - Principal.pdf [new file with mode: 0644]
CD/Doc/Pdf/Que est qu'une fractal-.pdf [new file with mode: 0644]
CD/Install/PowerFractal 1.0 - Install.exe [new file with mode: 0644]
CD/LOGO - PowerFracral 02.bmp [new file with mode: 0644]
CD/LOGO - PowerFractal 01 1024x768.bmp [new file with mode: 0644]
CD/Lisez-moi.txt [new file with mode: 0644]
CD/Runable from CD/graphmin.dll [new file with mode: 0644]
CD/Samples - bmp - jof/01.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/01_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/02.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/02_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/03.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/03_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/04.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/04_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/05.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/05_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/06.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/06_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/07.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/07_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/08.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/08_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/09.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/09_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/10.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/10_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/11.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/11_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/12.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/12_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Pifou - Fractal1.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Pifou - Fractal2.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Pifou - Fractal3.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Pifou - fractal4.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Pifou - fractal5.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/Samples - bmp.zip [new file with mode: 0644]
CD/Samples - bmp - jof/others_01.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_01.jof [new file with mode: 0644]
CD/Samples - bmp - jof/others_01_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_02.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_02.jof [new file with mode: 0644]
CD/Samples - bmp - jof/others_02_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_03.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_03.jof [new file with mode: 0644]
CD/Samples - bmp - jof/others_03_big.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_04.bmp [new file with mode: 0644]
CD/Samples - bmp - jof/others_04.jof [new file with mode: 0644]
CD/Samples - bmp - jof/others_04_big.bmp [new file with mode: 0644]
CD/Src/Power_Bmp.adb [new file with mode: 0644]
CD/Src/Power_Bmp.ads [new file with mode: 0644]
CD/Src/Power_Colors.adb [new file with mode: 0644]
CD/Src/Power_Colors.ads [new file with mode: 0644]
CD/Src/Power_Console.adb [new file with mode: 0644]
CD/Src/Power_Console.ads [new file with mode: 0644]
CD/Src/Power_Draw.adb [new file with mode: 0644]
CD/Src/Power_Draw.ads [new file with mode: 0644]
CD/Src/Power_List.adb [new file with mode: 0644]
CD/Src/Power_List.ads [new file with mode: 0644]
CD/Src/Power_Tools.adb [new file with mode: 0644]
CD/Src/Power_Tools.ads [new file with mode: 0644]
CD/Src/Power_Types.ads [new file with mode: 0644]
CD/Src/Power_calculator.adb [new file with mode: 0644]
CD/Src/Power_calculator.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/Draw.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/Draw.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/Spider.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/Spider.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/User.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Ads/User.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Exemple/Test.cpp [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Exemple/test.ada [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Include/Spider.h [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Include/SpiderDraw.h [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Include/SpiderUser.h [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/ADA.LIB [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/Draw.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/Draw.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/Spider.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/Spider.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/UNIT.MAP [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/User.adb [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/User.ads [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/graphmin.lib [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/adb/draw.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/adb/spider.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/adb/user.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/ads/draw.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/ads/spider.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/ads/test.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/info/ads/user.iff [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/adb/draw.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/adb/spider.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/adb/user.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/ads/draw.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/ads/spider.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/ads/test.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Lib/xref/ads/user.xrf [new file with mode: 0644]
CD/Src/Spider - Graphic Library/Readme _25_10_00.txt [new file with mode: 0644]
CD/Src/Spider - Graphic Library/SpiderInstallationEtUtilisation.doc [new file with mode: 0644]
CD/Src/Spider - Graphic Library/graphmin.dll [new file with mode: 0644]
CD/Src/Spider - Graphic Library/graphmin.lib [new file with mode: 0644]
CD/Src/power_IO.adb [new file with mode: 0644]
CD/Src/power_IO.ads [new file with mode: 0644]
CD/Src/powerfractal.ada [new file with mode: 0644]
Documentation/GPL-licence FR.txt [new file with mode: 0644]
Documentation/Hiearchie.cdr [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Cahier des Charges.doc [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Documentation Technique.doc [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Documentation Technique.pdf [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Manuel d utilisation.pdf [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Manuel d'utilisation.doc [new file with mode: 0644]
Documentation/Projet de semestre - PowerFractal - Principal.doc [new file with mode: 0644]
Documentation/Que est qu une fractal-.pdf [new file with mode: 0644]
Documentation/Que est qu'une fractal-.doc [new file with mode: 0644]
Documentation/adadoc/Power_Bmp.html [new file with mode: 0644]
Documentation/adadoc/Power_Colors.html [new file with mode: 0644]
Documentation/adadoc/Power_Console.html [new file with mode: 0644]
Documentation/adadoc/Power_Draw.html [new file with mode: 0644]
Documentation/adadoc/Power_List.html [new file with mode: 0644]
Documentation/adadoc/Power_Tools.html [new file with mode: 0644]
Documentation/adadoc/Power_Types.html [new file with mode: 0644]
Documentation/adadoc/Power_calculator.html [new file with mode: 0644]
Documentation/adadoc/power_IO.html [new file with mode: 0644]
Documentation/koch1.jpg [new file with mode: 0644]
Documentation/koch2.jpg [new file with mode: 0644]
FRACTALE espionnage/EasyFractale.exe [new file with mode: 0644]
FRACTALE espionnage/fuck.ada [new file with mode: 0644]
FRACTALE espionnage/palette0.pal [new file with mode: 0644]
FRACTALE espionnage/palette1.pal [new file with mode: 0644]
FRACTALE espionnage/palette2.pal [new file with mode: 0644]
FRACTALE espionnage/palette3.pal [new file with mode: 0644]
FRACTALE espionnage/palette4.pal [new file with mode: 0644]
FRACTALE espionnage/palette5.pal [new file with mode: 0644]
FRACTALE espionnage/palette6.pal [new file with mode: 0644]
FRACTALE espionnage/palette7.pal [new file with mode: 0644]
FRACTALE espionnage/palette8.pal [new file with mode: 0644]
FRACTALE espionnage/palette9.pal [new file with mode: 0644]
Infos concernant la doc a rendre/Infos doc Page 1.jpg [new file with mode: 0644]
Infos concernant la doc a rendre/Infos doc Page 2.jpg [new file with mode: 0644]
Infos concernant la doc a rendre/Infos doc Page 3.jpg [new file with mode: 0644]
Infos concernant la doc a rendre/Infos doc Page 4.jpg [new file with mode: 0644]
Infos concernant la doc a rendre/Infos doc Page 5.jpg [new file with mode: 0644]
Install/GPL (license).txt [new file with mode: 0644]
Install/LOGO.bmp [new file with mode: 0644]
Install/LOGO.psd [new file with mode: 0644]
Install/Power Fractal.nsi [new file with mode: 0644]
Install/PowerFractal 1.0 - Install.exe [new file with mode: 0644]
Install/PowerFractal.exe [new file with mode: 0644]
Install/PowerFractal.zip [new file with mode: 0644]
Install/PowerFractal_Manuel_d_utilisation.pdf [new file with mode: 0644]
Install/Que_est_qu_une_fractal_.pdf [new file with mode: 0644]
Install/Source_PowerFractal.zip [new file with mode: 0644]
Install/button_off.bmp [new file with mode: 0644]
Install/button_on.bmp [new file with mode: 0644]
Install/graphmin.dll [new file with mode: 0644]
Install/icon.ico [new file with mode: 0644]
Introduction de Power Fractal.doc [new file with mode: 0644]
Logo/Dans Prog 01.bmp [new file with mode: 0644]
Logo/Dans Prog 01.psd [new file with mode: 0644]
Logo/LOGO.jpg [new file with mode: 0644]
Logo/LOGO.psd [new file with mode: 0644]
Logo/LOGO2.jpg [new file with mode: 0644]
Logo/LOGO2.psd [new file with mode: 0644]
Logo/LOGO3.jpg [new file with mode: 0644]
Logo/LOGO3.psd [new file with mode: 0644]
Logo/O_1 32 32.bmp [new file with mode: 0644]
Logo/O_1 800 600.bmp [new file with mode: 0644]
Logo/O_1.bmp [new file with mode: 0644]
Logo/O_1.max [new file with mode: 0644]
Logo/Thumbs.db [new file with mode: 0644]
PoFGui/ADA.LIB [new file with mode: 0644]
PoFGui/Icon 01.ico [new file with mode: 0644]
PoFGui/MSComCtl2_FlatScrollBar.ada [new file with mode: 0644]
PoFGui/MSComctlLib_Slider.ada [new file with mode: 0644]
PoFGui/Main.rsp [new file with mode: 0644]
PoFGui/Main_Win.ada [new file with mode: 0644]
PoFGui/Main_Win.ada.0 [new file with mode: 0644]
PoFGui/Main_Win.ada.1 [new file with mode: 0644]
PoFGui/Main_Win.ada.2 [new file with mode: 0644]
PoFGui/Main_Win.ada.3 [new file with mode: 0644]
PoFGui/Main_Win.rc [new file with mode: 0644]
PoFGui/NOTES.doc [new file with mode: 0644]
PoFGui/PROJECT1.RES [new file with mode: 0644]
PoFGui/Pkg_Outils_Fractals.adb [new file with mode: 0644]
PoFGui/Pkg_Outils_Fractals.ads [new file with mode: 0644]
PoFGui/PowerFractal.rsp [new file with mode: 0644]
PoFGui/Project1.gbp [new file with mode: 0644]
PoFGui/Project1.rc [new file with mode: 0644]
PoFGui/Public.ada [new file with mode: 0644]
PoFGui/TheEnd.dat [new file with mode: 0644]
PoFGui/UNIT.MAP [new file with mode: 0644]
PoFGui/gbBuild.bat [new file with mode: 0644]
PoFGui/gbList4.lst [new file with mode: 0644]
PoFGui/gbStgDoc.gbs [new file with mode: 0644]
PoFGui/gnat.ago [new file with mode: 0644]
PoFGui/info/ada/main_win.iff [new file with mode: 0644]
PoFGui/info/ada/mscomctl2_flatscrollbar.iff [new file with mode: 0644]
PoFGui/info/ada/mscomctllib_slider.iff [new file with mode: 0644]
PoFGui/info/ada/public.iff [new file with mode: 0644]
PoFGui/msg/ada/comctl2_animation.msg [new file with mode: 0644]
PoFGui/msg/ada/comctl3_coolbar.msg [new file with mode: 0644]
PoFGui/msg/ada/comctl_imagelist.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_directanimationintegratedmedia.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_directanimationwindowedintegratedmedia.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_path.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_sequencer.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_sprite.msg [new file with mode: 0644]
PoFGui/msg/ada/directanimation_structuredgraphics.msg [new file with mode: 0644]
PoFGui/msg/ada/dsstatusbar_dsstatusbar.msg [new file with mode: 0644]
PoFGui/msg/ada/microsoft_activexplugin.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomctl2_animation.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomctllib_imagecombo.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomctllib_imagelist.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomctllib_prog.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomctllib_sbar.msg [new file with mode: 0644]
PoFGui/msg/ada/mscomdlg_commondialog.msg [new file with mode: 0644]
PoFGui/msg/ada/picclip_pictureclip.msg [new file with mode: 0644]
PoFGui/powerfractal.exe [new file with mode: 0644]
PoFGui/xref/ada/main_win.xrf [new file with mode: 0644]
PoFGui/xref/ada/mscomctl2_flatscrollbar.xrf [new file with mode: 0644]
PoFGui/xref/ada/mscomctllib_slider.xrf [new file with mode: 0644]
PoFGui/xref/ada/public.xrf [new file with mode: 0644]
Presentation 3d/Affichage.bmp [new file with mode: 0644]
Presentation 3d/console.bmp [new file with mode: 0644]
Presentation 3d/presentation.max [new file with mode: 0644]
Presentation PF.ppt [new file with mode: 0644]
Presentation PPT/Pifou - fractal5.jpg [new file with mode: 0644]
Presentation PPT/Pifou - fractal6 - gris.jpg [new file with mode: 0644]
Presentation PPT/Presentation PF.ppt [new file with mode: 0644]
Presentation PPT/exemple_div_niv_gris.bmp [new file with mode: 0644]
Presentation PPT/liste.jpg [new file with mode: 0644]
Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/400x40.bmp [new file with mode: 0644]
Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/40x400.bmp [new file with mode: 0644]
Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/fenetre.jpg [new file with mode: 0644]
Screenshoots/interface/Interface - 2001-06-21 v0.1 001.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 01.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 03.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 04 - Antialiasing.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 05 - fin de developpement.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 06 - fin de developpement.jpg [new file with mode: 0644]
Screenshoots/test - PowerFractal 07 - limite des nombres reels.jpg [new file with mode: 0644]
Src/Power_Bmp.adb [new file with mode: 0644]
Src/Power_Bmp.ads [new file with mode: 0644]
Src/Power_Colors.adb [new file with mode: 0644]
Src/Power_Colors.ads [new file with mode: 0644]
Src/Power_Console.adb [new file with mode: 0644]
Src/Power_Console.ads [new file with mode: 0644]
Src/Power_Draw.adb [new file with mode: 0644]
Src/Power_Draw.ads [new file with mode: 0644]
Src/Power_Fractal.PRJ [new file with mode: 0644]
Src/Power_List.adb [new file with mode: 0644]
Src/Power_List.ads [new file with mode: 0644]
Src/Power_Tools.adb [new file with mode: 0644]
Src/Power_Tools.ads [new file with mode: 0644]
Src/Power_Types.ads [new file with mode: 0644]
Src/Power_calculator.adb [new file with mode: 0644]
Src/Power_calculator.ads [new file with mode: 0644]
Src/power_IO.adb [new file with mode: 0644]
Src/power_IO.ads [new file with mode: 0644]
Src/power_bmp.ali [new file with mode: 0644]
Src/powerfractal.ada [new file with mode: 0644]
bmps/Exemple 2.JPG [new file with mode: 0644]
bmps/Exemple 2.bmp [new file with mode: 0644]
bmps/Exemple 3.JPG [new file with mode: 0644]
bmps/Exemple 3.bmp [new file with mode: 0644]
bmps/Pifou - Fractal1.bmp [new file with mode: 0644]
bmps/Pifou - Fractal2.bmp [new file with mode: 0644]
bmps/Pifou - Fractal3.bmp [new file with mode: 0644]
bmps/fractal_defaut.rar [new file with mode: 0644]
bmps/others_samples.zip [new file with mode: 0644]

diff --git a/ABout.TXT b/ABout.TXT
new file mode 100644 (file)
index 0000000..6584b6d
--- /dev/null
+++ b/ABout.TXT
@@ -0,0 +1,18 @@
+ ____    ___ __        __ _____  ____
+|  _ \  / _ \\ \      / /| ____||  _ \ 
+| |_) || | | |\ \ /\ / / |  _|  | |_) |
+|  __/ | |_| | \ V  V /  | |___ |  _ <  
+|_|     \___/   \_/\_/   |_____||_| \_\ 
+
+ _____  ____      _     ____  _____   _     _
+|  ___||  _ \    / \   / ___||_   _| / \   | |
+| |_   | |_) |  / _ \ | |      | |  / _ \  | |
+|  _|  |  _ <  / ___ \| |___   | | / ___ \ | |___
+|_|    |_| \_\/_/   \_\\____|  |_|/_/   \_\|_____|
+                                      V 0.9 Beta
+      by G.Burri and A.Crivelli
+
+ e-mail : greg.burri@net2000.ch
+          powerkiki@urbanet.ch
+
+ Url    : http://pifou.servehttp.com/powerfractal
diff --git a/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Cahier des Charges.doc b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Cahier des Charges.doc
new file mode 100644 (file)
index 0000000..3b9f80d
Binary files /dev/null and b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Cahier des Charges.doc differ
diff --git a/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Documentation Technique.doc b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Documentation Technique.doc
new file mode 100644 (file)
index 0000000..7d41cfd
Binary files /dev/null and b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Documentation Technique.doc differ
diff --git a/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Manuel d'utilisation.doc b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Manuel d'utilisation.doc
new file mode 100644 (file)
index 0000000..b72ef87
Binary files /dev/null and b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Manuel d'utilisation.doc differ
diff --git a/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Principal.doc b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Principal.doc
new file mode 100644 (file)
index 0000000..7c9b045
Binary files /dev/null and b/CD/Doc/Doc (word xp)/Projet de semestre - PowerFractal - Principal.doc differ
diff --git a/CD/Doc/Doc (word xp)/Que est qu'une fractal-.doc b/CD/Doc/Doc (word xp)/Que est qu'une fractal-.doc
new file mode 100644 (file)
index 0000000..9760105
Binary files /dev/null and b/CD/Doc/Doc (word xp)/Que est qu'une fractal-.doc differ
diff --git a/CD/Doc/GPL-licence FR.txt b/CD/Doc/GPL-licence FR.txt
new file mode 100644 (file)
index 0000000..fc473fe
--- /dev/null
@@ -0,0 +1,197 @@
+GPL
+
+Introduction
+
+This is an unofficial translation of the GNU General Public License into French. It was not published by the Free Software Foundation, and does not legally
+state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this
+translation will help French speakers understand the GNU GPL better. 
+
+Voici (http://www.linux-france.org/article/these/gpl.html) une adaptation non officielle de la Licence Publique Générale du projet GNU. Elle n'a pas été
+publiée par la Free Software Foundation et son contenu n'a aucune portée légale car seule la version anglaise de ce document détaille le mode de distribution
+des logiciels sous GNU GPL. Nous espérons cependant qu'elle permettra aux francophones de mieux comprendre la GPL. 
+
+Licence Publique Générale GNU Version 2, Juin 1991
+
+Copyright © Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307
+États-Unis, 1989, 1991.
+La copie et la distribution de copies exactes de ce document sont autorisées, mais aucune modification n'est permise. 
+
+Préambule
+
+Les licences d'utilisation de la plupart des programmes sont définies pour limiter ou supprimer toute liberté à l'utilisateur. À l'inverse, la Licence Publique
+Générale (General Public License) est destinée à vous garantir la liberté de partager et de modifier les logiciels libres, et de s'assurer que ces logiciels sont
+effectivement accessibles à tout utilisateur.
+
+Cette Licence Publique Générale s'applique à la plupart des programmes de la Free Software Foundation, comme à tout autre programme dont l'auteur l'aura
+décidé (d'autres logiciels de la FSF sont couverts pour leur part par la Licence Publique Générale pour Bibliothèques GNU (LGPL)). Vous pouvez aussi
+appliquer les termes de cette Licence à vos propres programmes, si vous le désirez.
+
+Liberté des logiciels ne signifie pas nécessairement gratuité. Notre Licence est conçue pour vous assurer la liberté de distribuer des copies des programmes,
+gratuitement ou non, de recevoir le code source ou de pouvoir l'obtenir, de modifier les programmes ou d'en utiliser des éléments dans de nouveaux
+programmes libres, en sachant que vous y êtes autorisé.
+
+Afin de garantir ces droits, nous avons dû introduire des restrictions interdisant à quiconque de vous les refuser ou de vous demander d'y renoncer. Ces
+restrictions vous imposent en retour certaines obligations si vous distribuez ou modifiez des copies de programmes protégés par la Licence. En d'autre termes,
+il vous incombera en ce cas de : 
+
+    transmettre aux destinataires tous les droits que vous possédez, 
+    expédier aux destinataires le code source ou bien tenir celui-ci à leur disposition, 
+    leur remettre cette Licence afin qu'ils prennent connaissance de leurs droits. 
+
+Nous protégeons vos droits de deux façons : d'abord par le copyright du logiciel, ensuite par la remise de cette Licence qui vous autorise légalement à copier,
+distribuer et/ou modifier le logiciel.
+
+En outre, pour protéger chaque auteur ainsi que la FSF, nous affirmons solennellement que le programme concerné ne fait l'objet d'aucune garantie. Si un tiers
+le modifie puis le redistribue, tous ceux qui en recevront une copie doivent savoir qu'il ne s'agit pas de l'original afin qu'une copie défectueuse n'entache pas
+la réputation de l'auteur du logiciel.
+
+Enfin, tout programme libre est sans cesse menacé par des dépôts de brevets. Nous souhaitons à tout prix éviter que des distributeurs puissent déposer des
+brevets sur les Logiciels Libres pour leur propre compte. Pour éviter cela, nous stipulons bien que tout dépôt éventuel de brevet doit accorder expressément à
+tout un chacun le libre usage du produit.
+
+Les dispositions précises et les conditions de copie, de distribution et de modification de nos logiciels sont les suivantes : 
+
+Stipulations et conditions relatives à la copie, la distribution et la modification
+
+
+
+    Article 0
+    La présente Licence s'applique à tout Programme (ou autre travail) où figure une note, placée par le détenteur des droits, stipulant que ledit Programme
+    ou travail peut être distribué selon les termes de la présente Licence. Le terme Programme désigne aussi bien le Programme lui-même que tout travail
+    qui en est dérivé selon la loi, c'est-à-dire tout ouvrage reproduisant le Programme ou une partie de celui-ci, à l'identique ou bien modifié, et/ou traduit
+    dans une autre langue (la traduction est considérée comme une modification). Chaque personne concernée par la Licence Publique Générale sera
+    désignée par le terme Vous.
+
+    Les activités autres que copie, distribution et modification ne sont pas couvertes par la présente Licence et sortent de son cadre. Rien ne restreint
+    l'utilisation du Programme et les données issues de celui-ci ne sont couvertes que si leur contenu constitue un travail basé sur le logiciel
+    (indépendemment du fait d'avoir été réalisé en lançant le Programme). Tout dépend de ce que le Programme est censé produire.
+
+
+    Article 1.
+    Vous pouvez copier et distribuer des copies conformes du code source du Programme, tel que Vous l'avez reçu, sur n'importe quel support, à condition
+    de placer sur chaque copie un copyright approprié et une restriction de garantie, de ne pas modifier ou omettre toutes les stipulations se référant à la
+    présente Licence et à la limitation de garantie, et de fournir avec toute copie du Programme un exemplaire de la Licence.
+
+    Vous pouvez demander une rétribution financière pour la réalisation de la copie et demeurez libre de proposer une garantie assurée par vos soins,
+    moyennant finances.
+
+
+    Article 2.
+    Vous pouvez modifier votre copie ou vos copies du Programme ou partie de celui-ci, ou d'un travail basé sur ce Programme, et copier et distribuer ces
+    modifications selon les termes de l'article 1, à condition de Vous conformer également aux conditions suivantes : 
+        a) Ajouter aux fichiers modifiés l'indication très claire des modifications effectuées, ainsi que la date de chaque changement. 
+        b) Distribuer sous les termes de la Licence Publique Générale l'ensemble de toute réalisation contenant tout ou partie du Programme, avec ou sans
+        modifications. 
+        c) Si le Programme modifié lit des commandes de manière interactive lors de son exécution, faire en sorte qu'il affiche, lors d'une invocation
+        ordinaire, le copyright approprié en indiquant clairement la limitation de garantie (ou la garantie que Vous Vous engagez à fournir Vous-même),
+        qu'il stipule que tout utilisateur peut librement redistribuer le Programme selon les conditions de la Licence Publique Générale GNU, et qu'il montre
+        à tout utilisateur comment lire une copie de celle-ci (exception : si le Programme original est interactif mais n'affiche pas un tel message en temps
+        normal, tout travail dérivé de ce Programme ne sera pas non plus contraint de l'afficher). 
+
+    Toutes ces conditions s'appliquent à l'ensemble des modifications. Si des éléments identifiables de ce travail ne sont pas dérivés du Programme et
+    peuvent être raisonnablement considérés comme indépendants, la présente Licence ne s'applique pas à ces éléments lorsque Vous les distribuez seuls.
+    Mais, si Vous distribuez ces mêmes éléments comme partie d'un ensemble cohérent dont le reste est basé sur un Programme soumis à la Licence, ils lui
+    sont également soumis, et la Licence s'étend ainsi à l'ensemble du produit, quel qu'en soit l'auteur.
+
+    Cet article n'a pas pour but de s'approprier ou de contester vos droits sur un travail entièrement réalisé par Vous, mais plutôt d'ouvrir droit à un contrôle
+    de la libre distribution de tout travail dérivé ou collectif basé sur le Programme.
+
+    En outre, toute fusion d'un autre travail, non basé sur le Programme, avec le Programme (ou avec un travail dérivé de ce dernier), effectuée sur un
+    support de stockage ou de distribution, ne fait pas tomber cet autre travail sous le contrôle de la Licence.
+
+
+    Article 3.
+    Vous pouvez copier et distribuer le Programme (ou tout travail dérivé selon les conditions énoncées dans l'article 1) sous forme de code objet ou
+    exécutable, selon les termes des articles 0 et 1, à condition de respecter les clauses suivantes : 
+        a) Fournir le code source complet du Programme, sous une forme lisible par un ordinateur et selon les termes des articles 0 et 1, sur un support
+        habituellement utilisé pour l'échange de données ; ou, 
+        b) Faire une offre écrite, valable pendant au moins trois ans, prévoyant de donner à tout tiers qui en fera la demande une copie, sous forme lisible
+        par un ordinateur, du code source correspondant, pour un tarif n'excédant pas le coût de la copie, selon les termes des articles 0 et 1, sur un support
+        couramment utilisé pour l'échange de données informatiques ; ou, 
+        c) Informer le destinataire de l'endroit où le code source peut être obtenu (cette solution n'est recevable que dans le cas d'une distribution non
+        commerciale, et uniquement si Vous avez reçu le Programme sous forme de code objet ou exécutable avec l'offre prévue à l'alinéa b ci-dessus). 
+
+    Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications sont les plus aisées. Sont ainsi désignés la totalité du code
+    source de tous les modules composant un Programme exécutable, de même que tout fichier de définition associé, ainsi que les scripts utilisés pour
+    effectuer la compilation et l'installation du Programme exécutable. Toutefois, l'environnement standard de développement du système d'exploitation mis
+    en oeuvre (source ou binaire) -- compilateurs, bibliothèques, noyau, etc. -- constitue une exception, sauf si ces éléments sont diffusés en même temps que
+    le Programme exécutable.
+
+    Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de copier le Programme depuis un endroit particulier, l'offre d'un
+    accès équivalent pour se procurer le code source au même endroit est considéré comme une distribution de ce code source, même si l'utilisateur choisit
+    de ne pas profiter de cette offre.
+
+
+    Article 4.
+    Vous ne pouvez pas copier, modifier, céder, déposer ou distribuer le Programme d'une autre manière que l'autorise la Licence Publique Générale. Toute
+    tentative de ce type annule immédiatement vos droits d'utilisation du Programme sous cette Licence. Toutefois, les tiers ayant reçu de Vous des copies du
+    Programme ou le droit d'utiliser ces copies continueront à bénéficier de leur droit d'utilisation tant qu'ils respecteront pleinement les conditions de la
+    Licence.
+
+
+    Article 5.
+    Ne l'ayant pas signée, Vous n'êtes pas obligé d'accepter cette Licence. Cependant, rien d'autre ne Vous autorise à modifier ou distribuer le Programme ou
+    quelque travaux dérivés : la loi l'interdit tant que Vous n'acceptez pas les termes de cette Licence. En conséquence, en modifiant ou en distribuant le
+    Programme (ou tout travail basé sur lui), Vous acceptez implicitement tous les termes et conditions de cette Licence.
+
+
+    Article 6.
+    La diffusion d'un Programme (ou de tout travail dérivé) suppose l'envoi simultané d'une licence autorisant la copie, la distribution ou la modification du
+    Programme, aux termes et conditions de la Licence. Vous n'avez pas le droit d'imposer de restrictions supplémentaires aux droits transmis au
+    destinataire. Vous n'êtes pas responsable du respect de la Licence par un tiers.
+
+
+    Article 7.
+    Si, à la suite d'une décision de Justice, d'une plainte en contrefaçon ou pour toute autre raison (liée ou non à la contrefaçon), des conditions Vous sont
+    imposées (que ce soit par ordonnance, accord amiable ou autre) qui se révèlent incompatibles avec les termes de la présente Licence, Vous n'êtes pas
+    pour autant dégagé des obligations liées à celle-ci : si Vous ne pouvez concilier vos obligations légales ou autres avec les conditions de cette Licence,
+    Vous ne devez pas distribuer le Programme.
+
+    Si une partie quelconque de cet article est invalidée ou inapplicable pour quelque raison que ce soit, le reste de l'article continue de s'appliquer et
+    l'intégralité de l'article s'appliquera en toute autre circonstance.
+
+    Le présent article n'a pas pour but de Vous pousser à enfreindre des droits ou des dispositions légales ni en contester la validité ; son seul objectif est de
+    protéger l'intégrité du système de distribution du Logiciel Libre. De nombreuses personnes ont généreusement contribué à la large gamme de Programmes
+    distribuée de cette façon en toute confiance ; il appartient à chaque auteur/donateur de décider de diffuser ses Programmes selon les critères de son
+    choix.
+
+
+    Article 8.
+    Si la distribution et/ou l'utilisation du Programme est limitée dans certains pays par des brevets ou des droits sur des interfaces, le détenteur original des
+    droits qui place le Programme sous la Licence Publique Générale peut ajouter explicitement une clause de limitation géographique excluant ces pays.
+    Dans ce cas, cette clause devient une partie intégrante de la Licence.
+
+
+    Article 9.
+    La Free Software Foundation se réserve le droit de publier périodiquement des mises à jour ou de nouvelles versions de la Licence. Rédigées dans le
+    même esprit que la présente version, elles seront cependant susceptibles d'en modifier certains détails à mesure que de nouveaux problèmes se font jour.
+
+    Chaque version possède un numéro distinct. Si le Programme précise un numéro de version de cette Licence et « toute version ultérieure », Vous avez le
+    choix de suivre les termes et conditions de cette version ou de toute autre version plus récente publiée par la Free Software Foundation. Si le Programme
+    ne spécifie aucun numéro de version, Vous pouvez alors choisir l'une quelconque des versions publiées par la Free Software Foundation.
+
+
+    Article 10.
+    Si Vous désirez incorporer des éléments du Programme dans d'autres Programmes libres dont les conditions de distribution diffèrent, Vous devez écrire
+    à l'auteur pour lui en demander la permission. Pour ce qui est des Programmes directement déposés par la Free Software Foundation, écrivez-nous : une
+    exception est toujours envisageable. Notre décision sera basée sur notre volonté de préserver la liberté de notre Programme ou de ses dérivés et celle de
+    promouvoir le partage et la réutilisation du logiciel en général.
+
+                                                    LIMITATION DE GARANTIE
+
+    Article 11.
+    Parce que l'utilisation de ce Programme est libre et gratuite, aucune garantie n'est fournie, comme le permet la loi. Sauf mention écrite, les détenteurs du
+    copyright et/ou les tiers fournissent le Programme en l'état, sans aucune sorte de garantie explicite ou implicite, y compris les garanties de
+    commercialisation ou d'adaptation dans un but particulier. Vous assumez tous les risques quant à la qualité et aux effets du Programme. Si le Programme
+    est défectueux, Vous assumez le coût de tous les services, corrections ou réparations nécessaires.
+
+
+    Article 12.
+    Sauf lorsqu'explicitement prévu par la Loi ou accepté par écrit, ni le détenteur des droits, ni quiconque autorisé à modifier et/ou redistribuer le
+    Programme comme il est permis ci-dessus ne pourra être tenu pour responsable de tout dommage direct, indirect, secondaire ou accessoire (pertes
+    financières dues au manque à gagner, à l'interruption d'activités ou à la perte de données, etc., découlant de l'utilisation du Programme ou de
+    l'impossibilité d'utiliser celui-ci). 
+
+
+                                               FIN DES TERMES ET CONDITIONS
diff --git a/CD/Doc/Pdf/Projet de semestre - PowerFractal - Cahier des Charges.pdf b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Cahier des Charges.pdf
new file mode 100644 (file)
index 0000000..bc822e6
Binary files /dev/null and b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Cahier des Charges.pdf differ
diff --git a/CD/Doc/Pdf/Projet de semestre - PowerFractal - Documentation Technique.pdf b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Documentation Technique.pdf
new file mode 100644 (file)
index 0000000..fe4e6cb
Binary files /dev/null and b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Documentation Technique.pdf differ
diff --git a/CD/Doc/Pdf/Projet de semestre - PowerFractal - Manuel d'utilisation.pdf b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Manuel d'utilisation.pdf
new file mode 100644 (file)
index 0000000..220ae81
Binary files /dev/null and b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Manuel d'utilisation.pdf differ
diff --git a/CD/Doc/Pdf/Projet de semestre - PowerFractal - Principal.pdf b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Principal.pdf
new file mode 100644 (file)
index 0000000..5b20cc6
Binary files /dev/null and b/CD/Doc/Pdf/Projet de semestre - PowerFractal - Principal.pdf differ
diff --git a/CD/Doc/Pdf/Que est qu'une fractal-.pdf b/CD/Doc/Pdf/Que est qu'une fractal-.pdf
new file mode 100644 (file)
index 0000000..11f059f
Binary files /dev/null and b/CD/Doc/Pdf/Que est qu'une fractal-.pdf differ
diff --git a/CD/Install/PowerFractal 1.0 - Install.exe b/CD/Install/PowerFractal 1.0 - Install.exe
new file mode 100644 (file)
index 0000000..785fbe9
Binary files /dev/null and b/CD/Install/PowerFractal 1.0 - Install.exe differ
diff --git a/CD/LOGO - PowerFracral 02.bmp b/CD/LOGO - PowerFracral 02.bmp
new file mode 100644 (file)
index 0000000..d3cfebd
Binary files /dev/null and b/CD/LOGO - PowerFracral 02.bmp differ
diff --git a/CD/LOGO - PowerFractal 01 1024x768.bmp b/CD/LOGO - PowerFractal 01 1024x768.bmp
new file mode 100644 (file)
index 0000000..d990b99
Binary files /dev/null and b/CD/LOGO - PowerFractal 01 1024x768.bmp differ
diff --git a/CD/Lisez-moi.txt b/CD/Lisez-moi.txt
new file mode 100644 (file)
index 0000000..b8510bf
--- /dev/null
@@ -0,0 +1,23 @@
+>>Bienvenu sur le CD de Power_Fractal<<
+
+Voici les repertoires presents :
+
+
+Doc                : Toute la documentation au format pdf et doc (word xp)
+
+Install            : L'installation (setup) du programme
+Runable from CD    : une version de power fractal
+                     directement executable depuis le cd
+
+Sample - bmp - jof : quelques fichiers d'exmples bmp et
+                     jof (fichier contenant une fractal pour powerfractal)
+
+Src                : toute les sources ADA  + spider
+
+
+
+
+Amusez-vous bien!!
+
+Gregory Burri & Adrien Crivelli
\ No newline at end of file
diff --git a/CD/Runable from CD/graphmin.dll b/CD/Runable from CD/graphmin.dll
new file mode 100644 (file)
index 0000000..7e6838e
Binary files /dev/null and b/CD/Runable from CD/graphmin.dll differ
diff --git a/CD/Samples - bmp - jof/01.bmp b/CD/Samples - bmp - jof/01.bmp
new file mode 100644 (file)
index 0000000..846ae15
Binary files /dev/null and b/CD/Samples - bmp - jof/01.bmp differ
diff --git a/CD/Samples - bmp - jof/01_big.bmp b/CD/Samples - bmp - jof/01_big.bmp
new file mode 100644 (file)
index 0000000..f3e9b9e
Binary files /dev/null and b/CD/Samples - bmp - jof/01_big.bmp differ
diff --git a/CD/Samples - bmp - jof/02.bmp b/CD/Samples - bmp - jof/02.bmp
new file mode 100644 (file)
index 0000000..8d1b45c
Binary files /dev/null and b/CD/Samples - bmp - jof/02.bmp differ
diff --git a/CD/Samples - bmp - jof/02_big.bmp b/CD/Samples - bmp - jof/02_big.bmp
new file mode 100644 (file)
index 0000000..2655e67
Binary files /dev/null and b/CD/Samples - bmp - jof/02_big.bmp differ
diff --git a/CD/Samples - bmp - jof/03.bmp b/CD/Samples - bmp - jof/03.bmp
new file mode 100644 (file)
index 0000000..4dfb8e3
Binary files /dev/null and b/CD/Samples - bmp - jof/03.bmp differ
diff --git a/CD/Samples - bmp - jof/03_big.bmp b/CD/Samples - bmp - jof/03_big.bmp
new file mode 100644 (file)
index 0000000..03e4168
Binary files /dev/null and b/CD/Samples - bmp - jof/03_big.bmp differ
diff --git a/CD/Samples - bmp - jof/04.bmp b/CD/Samples - bmp - jof/04.bmp
new file mode 100644 (file)
index 0000000..8769a6c
Binary files /dev/null and b/CD/Samples - bmp - jof/04.bmp differ
diff --git a/CD/Samples - bmp - jof/04_big.bmp b/CD/Samples - bmp - jof/04_big.bmp
new file mode 100644 (file)
index 0000000..6b7bf5b
Binary files /dev/null and b/CD/Samples - bmp - jof/04_big.bmp differ
diff --git a/CD/Samples - bmp - jof/05.bmp b/CD/Samples - bmp - jof/05.bmp
new file mode 100644 (file)
index 0000000..7803209
Binary files /dev/null and b/CD/Samples - bmp - jof/05.bmp differ
diff --git a/CD/Samples - bmp - jof/05_big.bmp b/CD/Samples - bmp - jof/05_big.bmp
new file mode 100644 (file)
index 0000000..9097632
Binary files /dev/null and b/CD/Samples - bmp - jof/05_big.bmp differ
diff --git a/CD/Samples - bmp - jof/06.bmp b/CD/Samples - bmp - jof/06.bmp
new file mode 100644 (file)
index 0000000..086d31f
Binary files /dev/null and b/CD/Samples - bmp - jof/06.bmp differ
diff --git a/CD/Samples - bmp - jof/06_big.bmp b/CD/Samples - bmp - jof/06_big.bmp
new file mode 100644 (file)
index 0000000..3f22587
Binary files /dev/null and b/CD/Samples - bmp - jof/06_big.bmp differ
diff --git a/CD/Samples - bmp - jof/07.bmp b/CD/Samples - bmp - jof/07.bmp
new file mode 100644 (file)
index 0000000..3f750b3
Binary files /dev/null and b/CD/Samples - bmp - jof/07.bmp differ
diff --git a/CD/Samples - bmp - jof/07_big.bmp b/CD/Samples - bmp - jof/07_big.bmp
new file mode 100644 (file)
index 0000000..67b8e71
Binary files /dev/null and b/CD/Samples - bmp - jof/07_big.bmp differ
diff --git a/CD/Samples - bmp - jof/08.bmp b/CD/Samples - bmp - jof/08.bmp
new file mode 100644 (file)
index 0000000..cf5b5e4
Binary files /dev/null and b/CD/Samples - bmp - jof/08.bmp differ
diff --git a/CD/Samples - bmp - jof/08_big.bmp b/CD/Samples - bmp - jof/08_big.bmp
new file mode 100644 (file)
index 0000000..d3ee697
Binary files /dev/null and b/CD/Samples - bmp - jof/08_big.bmp differ
diff --git a/CD/Samples - bmp - jof/09.bmp b/CD/Samples - bmp - jof/09.bmp
new file mode 100644 (file)
index 0000000..10ed074
Binary files /dev/null and b/CD/Samples - bmp - jof/09.bmp differ
diff --git a/CD/Samples - bmp - jof/09_big.bmp b/CD/Samples - bmp - jof/09_big.bmp
new file mode 100644 (file)
index 0000000..ae7fffa
Binary files /dev/null and b/CD/Samples - bmp - jof/09_big.bmp differ
diff --git a/CD/Samples - bmp - jof/10.bmp b/CD/Samples - bmp - jof/10.bmp
new file mode 100644 (file)
index 0000000..cb7edbf
Binary files /dev/null and b/CD/Samples - bmp - jof/10.bmp differ
diff --git a/CD/Samples - bmp - jof/10_big.bmp b/CD/Samples - bmp - jof/10_big.bmp
new file mode 100644 (file)
index 0000000..32f3dec
Binary files /dev/null and b/CD/Samples - bmp - jof/10_big.bmp differ
diff --git a/CD/Samples - bmp - jof/11.bmp b/CD/Samples - bmp - jof/11.bmp
new file mode 100644 (file)
index 0000000..41ece46
Binary files /dev/null and b/CD/Samples - bmp - jof/11.bmp differ
diff --git a/CD/Samples - bmp - jof/11_big.bmp b/CD/Samples - bmp - jof/11_big.bmp
new file mode 100644 (file)
index 0000000..18d76f0
Binary files /dev/null and b/CD/Samples - bmp - jof/11_big.bmp differ
diff --git a/CD/Samples - bmp - jof/12.bmp b/CD/Samples - bmp - jof/12.bmp
new file mode 100644 (file)
index 0000000..219a32e
Binary files /dev/null and b/CD/Samples - bmp - jof/12.bmp differ
diff --git a/CD/Samples - bmp - jof/12_big.bmp b/CD/Samples - bmp - jof/12_big.bmp
new file mode 100644 (file)
index 0000000..f623920
Binary files /dev/null and b/CD/Samples - bmp - jof/12_big.bmp differ
diff --git a/CD/Samples - bmp - jof/Pifou - Fractal1.bmp b/CD/Samples - bmp - jof/Pifou - Fractal1.bmp
new file mode 100644 (file)
index 0000000..e0dcac8
Binary files /dev/null and b/CD/Samples - bmp - jof/Pifou - Fractal1.bmp differ
diff --git a/CD/Samples - bmp - jof/Pifou - Fractal2.bmp b/CD/Samples - bmp - jof/Pifou - Fractal2.bmp
new file mode 100644 (file)
index 0000000..54468db
Binary files /dev/null and b/CD/Samples - bmp - jof/Pifou - Fractal2.bmp differ
diff --git a/CD/Samples - bmp - jof/Pifou - Fractal3.bmp b/CD/Samples - bmp - jof/Pifou - Fractal3.bmp
new file mode 100644 (file)
index 0000000..6099ab0
Binary files /dev/null and b/CD/Samples - bmp - jof/Pifou - Fractal3.bmp differ
diff --git a/CD/Samples - bmp - jof/Pifou - fractal4.bmp b/CD/Samples - bmp - jof/Pifou - fractal4.bmp
new file mode 100644 (file)
index 0000000..88bf9b4
Binary files /dev/null and b/CD/Samples - bmp - jof/Pifou - fractal4.bmp differ
diff --git a/CD/Samples - bmp - jof/Pifou - fractal5.bmp b/CD/Samples - bmp - jof/Pifou - fractal5.bmp
new file mode 100644 (file)
index 0000000..b4f44e5
Binary files /dev/null and b/CD/Samples - bmp - jof/Pifou - fractal5.bmp differ
diff --git a/CD/Samples - bmp - jof/Samples - bmp.zip b/CD/Samples - bmp - jof/Samples - bmp.zip
new file mode 100644 (file)
index 0000000..a4ffc37
Binary files /dev/null and b/CD/Samples - bmp - jof/Samples - bmp.zip differ
diff --git a/CD/Samples - bmp - jof/others_01.bmp b/CD/Samples - bmp - jof/others_01.bmp
new file mode 100644 (file)
index 0000000..ed9a204
Binary files /dev/null and b/CD/Samples - bmp - jof/others_01.bmp differ
diff --git a/CD/Samples - bmp - jof/others_01.jof b/CD/Samples - bmp - jof/others_01.jof
new file mode 100644 (file)
index 0000000..d293e18
Binary files /dev/null and b/CD/Samples - bmp - jof/others_01.jof differ
diff --git a/CD/Samples - bmp - jof/others_01_big.bmp b/CD/Samples - bmp - jof/others_01_big.bmp
new file mode 100644 (file)
index 0000000..528fe11
Binary files /dev/null and b/CD/Samples - bmp - jof/others_01_big.bmp differ
diff --git a/CD/Samples - bmp - jof/others_02.bmp b/CD/Samples - bmp - jof/others_02.bmp
new file mode 100644 (file)
index 0000000..1ebc347
Binary files /dev/null and b/CD/Samples - bmp - jof/others_02.bmp differ
diff --git a/CD/Samples - bmp - jof/others_02.jof b/CD/Samples - bmp - jof/others_02.jof
new file mode 100644 (file)
index 0000000..702c956
Binary files /dev/null and b/CD/Samples - bmp - jof/others_02.jof differ
diff --git a/CD/Samples - bmp - jof/others_02_big.bmp b/CD/Samples - bmp - jof/others_02_big.bmp
new file mode 100644 (file)
index 0000000..a0d80b9
Binary files /dev/null and b/CD/Samples - bmp - jof/others_02_big.bmp differ
diff --git a/CD/Samples - bmp - jof/others_03.bmp b/CD/Samples - bmp - jof/others_03.bmp
new file mode 100644 (file)
index 0000000..e02736a
Binary files /dev/null and b/CD/Samples - bmp - jof/others_03.bmp differ
diff --git a/CD/Samples - bmp - jof/others_03.jof b/CD/Samples - bmp - jof/others_03.jof
new file mode 100644 (file)
index 0000000..09b4845
Binary files /dev/null and b/CD/Samples - bmp - jof/others_03.jof differ
diff --git a/CD/Samples - bmp - jof/others_03_big.bmp b/CD/Samples - bmp - jof/others_03_big.bmp
new file mode 100644 (file)
index 0000000..c7924c0
Binary files /dev/null and b/CD/Samples - bmp - jof/others_03_big.bmp differ
diff --git a/CD/Samples - bmp - jof/others_04.bmp b/CD/Samples - bmp - jof/others_04.bmp
new file mode 100644 (file)
index 0000000..7e3861f
Binary files /dev/null and b/CD/Samples - bmp - jof/others_04.bmp differ
diff --git a/CD/Samples - bmp - jof/others_04.jof b/CD/Samples - bmp - jof/others_04.jof
new file mode 100644 (file)
index 0000000..74f4ea9
Binary files /dev/null and b/CD/Samples - bmp - jof/others_04.jof differ
diff --git a/CD/Samples - bmp - jof/others_04_big.bmp b/CD/Samples - bmp - jof/others_04_big.bmp
new file mode 100644 (file)
index 0000000..ba14b2f
Binary files /dev/null and b/CD/Samples - bmp - jof/others_04_big.bmp differ
diff --git a/CD/Src/Power_Bmp.adb b/CD/Src/Power_Bmp.adb
new file mode 100644 (file)
index 0000000..0750bef
--- /dev/null
@@ -0,0 +1,108 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Bmp / fait partie du programme Power Fractal                               --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Mettre a diposition un outil pour ecrire des bmps                                --
+------------------------------------------------------------------------------------------------
+
+with Ada.Sequential_Io; --Pour la gestion de fichier binaire
+with Power_Types; use type Power_Types.Byte; --Le format d'une couleur 
+
+package body Power_Bmp is
+
+   --Instanciation du paquetage.
+   package Bmp_IO is new Ada.Sequential_Io(Byte); use Bmp_IO;
+   
+   --Pour stocker les info de l'entete
+   type T_Entete is array(1..54) of Byte;
+    
+   --Pour generer certaines partie de l'entete
+   function Split(A: Integer) return T_Entete is
+      R: T_Entete;
+   begin
+      R(1):= Byte(A mod 256);
+      R(2):= Byte(A / 256 mod 256);
+      R(3):= Byte(A / 256 / 256 mod 256);
+      R(4):= Byte(A / 256 / 256 / 256 mod 256);
+      return R;
+   end;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ecrire_Bmp                                                                       --
+   -- But     : Inverser une couleur RGB                                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Ecrire_Bmp (Matrice_Image : in T_Matrice_Tampon; Nom_Fichier : in String) is
+
+      Entete: T_Entete := (others => 0); --L'entete du fichier bmp
+
+      --Entiers-------------
+         Hauteur, --Hauteur de la matrice
+         Largeur, --Largeur de la matrice
+   
+         Nb_Byte_Fin, --Nombre de byte pour finir le fichier
+   
+         Taille_Fichier, --La taille du fichier (byte)
+         Taille_Image    --La taille de l'image (byte)
+      : Integer;------------
+
+      Fichier_Bmp: File_Type; --le fichier
+
+   begin --Ecrire_Bmp
+
+      --Definit la largeur et la hauteur de la matrice
+      Largeur := Matrice_Image'Length(1);
+      Hauteur := Matrice_Image'Length(2);
+      --
+
+      --Calcul le nombre de byte de fin de fichier
+      Nb_Byte_Fin := (Largeur * 8 rem 32) / 8;
+    
+     
+      Taille_Image := (Largeur * 3 + Nb_Byte_Fin) * Hauteur; --Calcul la taille de l'image
+      Taille_Fichier := 14 + 40 + Taille_Image;        --Calcul la taille du fichier
+
+      ---------------ECRITURE DE L'ENTETE---------------
+      Entete(1)      := Character'Pos('B');
+      Entete(2)      := Character'Pos('M');
+      Entete(3..6)   := Split(Taille_Fichier)(1..4);            
+      
+      Entete(11)     := 54;
+      Entete(15)     := 40;
+      Entete(19..22) := Split(Largeur)(1..4);
+      Entete(23..26) := Split(Hauteur)(1..4);
+      Entete(27)     := 1;
+      Entete(29)     := 24;
+      Entete(35..38) := Split(Taille_Image)(1..4);
+      Entete(39..42) := Split(2835)(1..4);
+      Entete(43..46) := Split(2835)(1..4); 
+      ---------------------------------------------------
+
+      --Cree le fichier
+      Create (Fichier_Bmp, Out_File, Nom_Fichier);
+
+      --Ecrit l'entete dans le fichier
+      for I in 1..54 loop
+         Write(Fichier_Bmp, Entete(I));
+      end loop;
+      --Ecrit toute la matrice (fractal) dans le fichier
+      for X in reverse Matrice_Image'range(2) loop
+         for Y in Matrice_Image'range(1) loop
+            Write(Fichier_Bmp, Matrice_Image(Y, X).B);
+            Write(Fichier_Bmp, Matrice_Image(Y, X).G);
+            Write(Fichier_Bmp, Matrice_Image(Y, X).R);
+         end loop;
+            
+         --Ecrit les bytes de fin de fichier
+         for Z in 1..Nb_Byte_Fin loop
+            Write(Fichier_Bmp, 0);
+         end loop;
+      end loop;
+   
+      Close(Fichier_Bmp);
+   end Ecrire_Bmp;
+   
+end Power_Bmp;
diff --git a/CD/Src/Power_Bmp.ads b/CD/Src/Power_Bmp.ads
new file mode 100644 (file)
index 0000000..9ef3469
--- /dev/null
@@ -0,0 +1,22 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Bmp / fait partie du programme Power Fractal                               --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Mettre a diposition un outil pour ecrire des bmps                                --
+------------------------------------------------------------------------------------------------
+
+--Pour les types, les constantes et les variables globales
+with Power_Types; use Power_Types;
+
+package Power_Bmp is
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ecrire_Bmp                                                                       --
+   -- But     : Inverser une couleur RGB                                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Ecrire_Bmp (Matrice_Image : in T_Matrice_Tampon; Nom_Fichier : in String);
+
+end Power_Bmp;
diff --git a/CD/Src/Power_Colors.adb b/CD/Src/Power_Colors.adb
new file mode 100644 (file)
index 0000000..e7618f8
--- /dev/null
@@ -0,0 +1,175 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Colors / fait partie du programme Power Fractal                            --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils servant a la gestion des couleurs et des degradés                         --
+------------------------------------------------------------------------------------------------
+
+
+--Enfant de spider Pour gerer la couleur et le dessin
+with Spider.Draw;
+
+with Power_Types; use Power_Types;
+
+package body Power_Colors is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Inverse_Couleur                                                                  --
+   -- But     : Inverser une couleur RGB                                                         --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Inverse_Couleur (Couleur : in out Spider.Draw.Tcolor) is
+      begin --Inverse_Couleur
+         Couleur.R := 255 - Couleur.R;
+         Couleur.G := 255 - Couleur.G;
+         Couleur.B := 255 - Couleur.B;
+      end Inverse_Couleur;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   --           * La longueur du degrade                                                         --
+   --  Out    : * Le degrade de couleur                                                          --
+   ------------------------------------------------------------------------------------------------
+   procedure Creer_Degrade (Fractal : in Cara_Fractal;
+                            Degrade : out T_Tab_Couleur; Longueur : in Integer) is
+
+      ---------------------------------------------------------------------------------------------
+      -- Nom      : Limite                                                                       --
+      -- But      : Empeche le depassement des limites fixées                                    --
+      ---------------------------------------------------------------------------------------------
+      function Limite ( Nombre : in Integer) return Byte is         
+         Limite_Min : constant  := 0;  -- Limite inferieure
+         Limite_Max : constant  := 255;-- Limite superieure
+      begin -- Limite
+         if Nombre < Limite_Min then 
+            return Byte(Limite_Min);
+         elsif Nombre > Limite_Max then
+            return Byte(Limite_Max);
+         else
+            return Byte(Nombre);
+         end if;         
+      end Limite;
+
+      Pas_R : Float; -- Pour le pas de la couleur rouge
+      Pas_G : Float; -- Pour le pas de la couleur verte
+      Pas_B : Float; -- Pour le pas de la couleur bleue
+
+      -- Numero de la couleur courante des couleurs choisie
+      Coul_Frac_Courant : Natural := Fractal.Couleur'First;
+      -- Numero de la couleur courante du degrade
+      Coul_Deg_Courant  : Natural := Degrade'First;       
+      -- Nombre de couleur dans une partie du degrade
+      Nb_Coul_Partie    : Natural := Longueur / (Fractal.Couleur'Length - 1);
+
+   begin -- Creer_Degrader
+      
+         
+         -- Tant que ca n'est pas la derniere partie du degrade
+         while Coul_Frac_Courant < Fractal.Couleur'Last loop
+
+            -- Definis le pas de la partie du degrade courante pour chaque composante
+            Pas_R := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).R) - 
+                      Float(Fractal.Couleur(Coul_Frac_Courant).R)) / Float(Nb_Coul_Partie);
+            Pas_G := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).G) - 
+                      Float(Fractal.Couleur(Coul_Frac_Courant).G)) / Float(Nb_Coul_Partie);
+            Pas_B := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).B) - 
+                      Float(Fractal.Couleur(Coul_Frac_Courant).B)) / Float(Nb_Coul_Partie);
+
+            -- Parcours de toute les couleurs dans la partie courante
+            while Coul_Deg_Courant /= Nb_Coul_Partie * Coul_Frac_Courant loop     
+            
+               -- Attribution de la couleur a la couleur courante en fonction du Pas
+               Degrade(Coul_Deg_Courant).R :=
+               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).R) + Integer(
+               Pas_R * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+               
+               Degrade(Coul_Deg_Courant).G := 
+               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).G) + Integer(
+               Pas_G * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+               
+               Degrade(Coul_Deg_Courant).B := 
+               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).B) + Integer(
+               Pas_B * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+
+               Coul_Deg_Courant := Coul_Deg_Courant + 1; -- Couleur du degrade suivante
+            end loop;  
+
+            Coul_Frac_Courant := Coul_Frac_Courant + 1;  -- Partie du degrade suivante
+         end loop;
+
+
+         -- Attribue la couleur jusqu'a la fin du degrade
+         while Coul_Deg_Courant < Degrade'Last loop
+
+            -- Attribution de la couleur a la couleur courante en fonction du Pas
+            Degrade(Coul_Deg_Courant).R :=
+            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).R) + Integer(
+            Pas_R * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+            
+            Degrade(Coul_Deg_Courant).G := 
+            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).G) + Integer(
+            Pas_G * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+            
+            Degrade(Coul_Deg_Courant).B := 
+            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).B) + Integer(
+            Pas_B * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+
+            Coul_Deg_Courant := Coul_Deg_Courant + 1;
+
+         end loop;
+
+         Degrade(Degrade'Last) := (0, 0, 0);
+   end Creer_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Fractal : in Cara_Fractal) is
+      Degrade : T_Tab_Couleur(Matrice_Tampon_Ecran'range(1));      
+   begin 
+      Creer_Degrade(Fractal, Degrade, Largeur_Ecran);
+      for X in Degrade'range loop
+         for Y in 0 .. Hauteur_Degrade loop
+            Matrice_Tampon_Ecran(X, Y) := Degrade(X);
+         end loop;
+      end loop;
+
+   end Affiche_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La matrice d'iteration                                                         --
+   --         : * Le degrade de couleur                                                          --
+   --  return : Une matrice de couleur                                                           --
+   ------------------------------------------------------------------------------------------------
+   function Conversion_Couleur (Matrice : in T_Matrice_Iteration;
+                                Degrade : in T_Tab_Couleur) 
+                                return T_Matrice_Tampon is
+
+      Matrice_Tampon :  T_Matrice_Tampon (Matrice'range(1), Matrice'range(2));
+   begin -- Conversion_Couleur
+      for X in Matrice'range(1) loop
+         for Y in  Matrice'range(2) loop
+            Matrice_Tampon(X, Y) := Degrade(Matrice(X, Y));
+         end loop;
+      end loop;
+      return Matrice_Tampon;
+   end Conversion_Couleur;
+
+end Power_Colors;
diff --git a/CD/Src/Power_Colors.ads b/CD/Src/Power_Colors.ads
new file mode 100644 (file)
index 0000000..a804153
--- /dev/null
@@ -0,0 +1,59 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Colors / fait partie du programme Power Fractal                            --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils servant a la gestion des couleurs et des degradés                         --
+------------------------------------------------------------------------------------------------
+
+--Enfant de spider Pour gerer la couleur et le dessin
+with Spider.Draw;
+with Power_Types;
+
+
+package  Power_Colors is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Inverse_Couleur                                                                  --
+   -- But     : Inverser une couleur RGB                                                         --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Inverse_Couleur (Couleur : in out Spider.Draw.Tcolor);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   --           * La longueur du degrade                                                         --
+   --  Out    : * Le degrade de couleur                                                          --
+   ------------------------------------------------------------------------------------------------
+   procedure Creer_Degrade (Fractal : in Power_Types.Cara_Fractal; 
+                            Degrade : out Power_Types.T_Tab_Couleur; Longueur : in Integer);
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Fractal : in Power_Types.Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La matrice d'iteration                                                         --
+   --         : * Le degrade de couleur                                                          --
+   --  return : Une matrice de couleur                                                           --
+   ------------------------------------------------------------------------------------------------
+   function Conversion_Couleur (Matrice : in Power_Types.T_Matrice_Iteration;
+                                Degrade : in Power_Types.T_Tab_Couleur)
+                                return Power_Types.T_Matrice_Tampon;
+
+end Power_Colors;
diff --git a/CD/Src/Power_Console.adb b/CD/Src/Power_Console.adb
new file mode 100644 (file)
index 0000000..c89f2ff
--- /dev/null
@@ -0,0 +1,1120 @@
+---------------------------------------------------------------------------------------------------
+-- Nom     : Power_console / fait partie du programme Power Fractal                              --
+--                                                                                               --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                     --
+---------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour mettre a disposition de l'utilisateur les               --
+--           differentes fonction du programme                                                   --
+---------------------------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Ada.Long_Float_Text_Io; use Ada.Long_Float_Text_Io;
+with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
+
+with Power_Tools; use Power_Tools;
+with Power_Types; use Power_Types;
+with Power_Io;
+with Ada.Numerics.Discrete_Random;
+
+
+package body Power_Console is
+
+   -- Type pour gerer un String de longueur indéfinie
+   type T_Chaine is 
+      record
+         Chaine : String(1 .. Longueur_Max) := (others => ' ');
+         Longueur : Integer := 0;
+      end record;
+
+   --Les commandes a diposition
+   type T_Commande is (Help, Info, Choose, Switch, Zoom, Zin, Zout, Center, Iteration, Limit,
+                       Cst, Angle, Color, Nbcolors, Random, Drawcolors, Default, Defaultlist, 
+                       Auto, Draw, Anti, Render, Create, Del, Save, Load, Savelist, Loadlist,
+                       About, Quit);
+
+   --Pour faire des entrees-sorties sur les commandes
+   package T_Commande_Io is new Ada.Text_IO.Enumeration_IO(T_Commande); use T_Commande_Io;
+
+
+   --Pour faire des entree-sortie sur le type byte
+   package Modulo_IO is new Modular_IO (Byte); use Modulo_IO; 
+   
+   --Pour faire des entrees-sorties sur le type T_Ensemble
+   package T_Ensemble_IO is new Ada.Text_IO.Enumeration_IO(T_Ensemble); use T_Ensemble_IO;
+
+   --Pour tirer une composante de couleur au hasard
+   package Random_Composante is new Ada.Numerics.Discrete_Random(Byte); use Random_Composante;
+
+   --La longeur d'une ligne d'aide
+   Longeur_Ligne : constant := 60;
+
+   --Contient l'aide pour une commande
+   type T_Type_Info_Commandes is
+      record
+         Info_Para : String(1..Longeur_Ligne); --Parametres des commandes
+         Info_Supp : String(1..Longeur_Ligne); --Decription des commandes
+      end record;
+
+   --Contient toute l'aide pour les commandes
+   type T_Commande_Aide is array (T_Commande'range) of T_Type_Info_Commandes;
+
+   Commande_Aide : constant T_Commande_Aide := 
+
+   (
+   Help =>
+   (" [<any commands>]  the stuff in brackets[] is not neccessary",
+    " Im So Happy Cuz I Found My Friends...                      "),
+
+    Info => 
+   ("                                                            ",
+    " View some informations about the current fractal           "),
+
+    Choose => 
+   (" [<number of a fractal in the list>]                        ",
+    " Select a fractal in the list and draw it                   "), 
+
+    Switch => 
+   ("                                                            ",
+    " Switch between Mandelbrot end Julia                        "), 
+
+    Zoom => 
+   (" [<Value of zoom>]                                          ",
+    " for zooming in the current fractal                         "), 
+
+    Zin => 
+   (" [<Factor>]                                                 ",
+    " Zoom in                                                    "), 
+
+    Zout => 
+   (" [<Factor>]                                                 ",
+    " Zoom out                                                   "),
+
+    Center => 
+   (" [<x> <y>]                                                  ",
+    " Center in a point of the fractal                           "), 
+
+    Iteration => 
+   (" <value>                                                    ",
+    " Set the number of iteration                                "), 
+
+    Limit => 
+   (" <value>                                                    ",
+    " Set the divergence limit                                   "), 
+
+    Cst => 
+   (" <a> <b>                                                    ",
+    " Set the complex number of 'c'  (only for Julia)            "), 
+
+    Angle => 
+   (" <value>                                                    ",
+    " Set the absolute value of angle                            "), 
+
+    Color => 
+   (" <number> (<r> <g> <b>)                                     ",
+    " Change one of colors. r, g and b are the channels          "),
+
+    Nbcolors =>
+   (" <number>                                                   ",
+    " Set numbers of colors                                      "), 
+
+    Random => 
+   ("                                                            ",
+    " Choice a randomize range of colors                         "), 
+
+    Drawcolors => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the drawing of the range of colors            "), 
+
+    Default => 
+   ("                                                            ",
+    " Reset the current fractal                                  "), 
+
+    Defaultlist => 
+   ("                                                            ",
+    " Reset all fractals in the list                             "),
+    Auto => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the autoredraw                                "),
+
+    Draw => 
+   ("                                                            ",
+    " Draw the fractal                                           "),
+
+    Anti => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the antialiasing                              "),
+
+    Render => 
+   (" <name of file> [<x> <y>]                                   ",
+    " Render the fractal in a bmp file. x y are the resolution   "),
+
+    Create => 
+   ("                                                            ",
+    " Create a new fractal in the list                           "),
+
+    Del => 
+   (" <number of a fractal in the list>                          ",
+    " View some informations about the curent fractal            "),
+
+    Save => 
+   (" <name of file>                                             ",
+    " Save the current fractal in a file                         "),
+
+    Load => 
+   (" <name of file>                                             ",
+    " Load a fractal from a file                                 "),
+
+    Savelist => 
+   (" <name of file>                                             ",
+    " Save the list of fractal in a file                         "),
+
+    Loadlist => 
+   (" <name of file>                                             ",
+    " Load a list of fractal from a file                         "),
+
+    About => 
+   ("                                                            ",
+    " ... and they're in my head                                 "),
+
+    Quit => 
+   ("                                                            ",
+    " Quit Power Fractal                                         ")
+    );
+    
+
+   -------------------------ERREURS------------------------
+   Erreur_Trop_Parametre   : exception; -- La commande n'as pas besoin de parametre
+   Erreur_Manque_Parametre : exception; -- La commande a besoin de parametre
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Verif_Extension                                                                  --
+   -- But     : Verifie si un string comporte une extension ou non, si non l'ajoute              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier a modifier : Nom_Fichier                                     --
+   --           * L'extension du fichier       : Extension                                       --
+   --                                                                                            --
+   --  Return : * Le string verifie, et modifier si il faut                                      --
+   ------------------------------------------------------------------------------------------------
+   function Verif_Extension (Nom_Fichier : String; Extension : String) return String is
+
+      ---------------------------------------------------------------------------------------------
+      -- Nom     : Tout_Minuscule                                                                --
+      -- But     : Mettre tout les lettres d'un texte passe en parametre en minuscule            --
+      ---------------------------------------------------------------------------------------------
+      function Tout_Minuscule (Texte : in String) return String is
+         
+         --Une variable temporaire egal au string en entree
+         Texte_Tmp : String (Texte'range) := Texte; --Variable Temporaire De 'Texte'
+   
+         --Le decalage entre les minuscules est les majuscules
+         Decal_Min_Maj : constant := Character'Pos('a') - Character'Pos('A');
+   
+      begin --Tout_Minuscule
+         
+         --Boucle parcourant tout les caracteres de Texte_Tmp
+         for I in Texte_Tmp'First..Texte_Tmp'Last loop
+   
+            if Texte_Tmp(I) in 'A'..'Z' then --Si il tombe sur une majuscule alors
+               
+               --Convertie la majuscule en minuscule
+               Texte_Tmp(I) := Character'Val( Character'Pos(Texte(I)) + Decal_Min_Maj );   
+            end if;
+   
+         end loop;
+   
+         return Texte_Tmp; --Retourne la valeur modifie de Texte
+   
+      end Tout_Minuscule;
+      --Nom du fichier plus l'ajout de l'extension
+      Nom_Fichier_Ajout_Extension : String (1..Nom_Fichier'Length + Extension'Length);
+
+   begin --Verif_Extension
+
+      --Si la longueur du fichier est superieur a 4 (il y a la possibilite qu'il y ai l'extension)
+      --et que l'extension est correct alors renvois le nom du fichier sans rien modifier
+      if Nom_Fichier'Length > 4 and then 
+                           Tout_Minuscule(Nom_Fichier(Nom_Fichier'Last - 3 .. Nom_Fichier'Last)) =
+                           "." & Tout_Minuscule(Extension) then
+
+         return Nom_Fichier;
+      else --Sinon ajoute l'extension
+         return Nom_Fichier & "." & Tout_Minuscule(Extension);
+      end if;
+
+   end Verif_Extension;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Parametre                                                                        --
+   -- But     : Determine si une commande est suivie d'un ou plusieurs parametre                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  return : * Si un (des) parametre existe : type : boolean                                  --
+   ------------------------------------------------------------------------------------------------
+   function Parametre return Boolean is
+      Cara : Character;
+      Fin_Ligne : Boolean;
+   begin -- Parametre
+      -- Cherche un parametre
+      Look_Ahead(Cara, Fin_Ligne);
+      -- Tant que rencontre que des espace sur la ligne
+      while Cara = Espace and not End_Of_Line loop
+         Get(Cara);
+         Look_Ahead(Cara, Fin_Ligne);
+      end loop;
+      return not Fin_Ligne;
+   end Parametre;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit un mot entier de caractere d'une longueur max de 50                          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Un mot : type : T_Chaine                                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Chaine : out T_Chaine) is
+      Cara : Character;    -- Caractere temporaire
+      Fin_Ligne : Boolean; -- Si fin de ligne ou non
+   begin
+      Chaine.Longueur := 0;
+      Look_Ahead(Cara, Fin_Ligne);
+      -- Tant que le mot ou la ligne est pas fini 
+      while Cara /= Espace and not End_Of_Line loop
+         Get(Cara);
+         Chaine.Longueur := Chaine.Longueur + 1;
+         Chaine.Chaine(Chaine.Longueur) := Cara;
+         Look_Ahead(Cara, Fin_Ligne);
+      end loop;
+      
+   end Get;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit une couleur en RGB selon le format:  ( R G B )                               --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Ue couleur : type : T_Couleur                                                  --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Couleur : out T_Couleur) is
+      Cara : Character;
+      Fin_Ligne : Boolean;
+   begin -- Get
+   
+      if Parametre then
+         Get(Cara);
+         if Cara = '(' then 
+
+            -- Si existe lit chaque composante de la couleur
+            if Parametre then
+            Look_Ahead(Cara, Fin_Ligne);
+               Get(Couleur.R);
+            else
+               raise Data_Error;
+            end if;
+            if Parametre then
+               Get(Couleur.G);
+            else
+               raise Data_Error;
+            end if;
+            if Parametre then
+               Get(Couleur.B);
+            else
+               raise Data_Error;
+            end if;
+            
+            -- Toute les composante trouvee -> cherche la parenthese fermante
+            if Parametre then 
+               -- Trouve la parenthese fermante               
+               Get(Cara);
+               if Cara /= ')' then
+                  -- Pas de ')'
+                  raise Data_Error;
+               end if;
+            else
+               -- Plus rien apres les 3 composante donc pas de ')'
+               raise Data_Error;
+            end if;
+         else
+            -- Pas de '('
+            raise Data_Error;
+         end if;
+      else
+         -- Plus rien apres la commande
+         raise Erreur_Manque_Parametre;
+      end if;
+   end Get;
+
+     
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit un boolean entre au clavier (1 / 0)                                          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Un booleen : type : boolean                                                    --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Flag : out Boolean) is
+      Tmp : Integer; -- Variable temporaire pour la lecture
+   begin -- Get
+      Get(Tmp);
+      Flag := Tmp = 1;
+      if  Tmp not in 0 .. 1 then
+         raise Data_Error;
+      end if;
+   end Get;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Console                                                                          --
+   -- But     : Gere une console avec commandes et parametre                                     --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * le prompt utilise dans la console                                              --
+   --                                                                                            --
+   --  In out : La liste des fractals                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Console(Liste : in out T_Liste_Fractals; Prompt : in String) is
+      Courant  : T_Lien := Fractal_Num(Liste, 1); -- Fractal courante de la liste
+  
+      Generateur_Composante : Generator; --Utilise pour tirer une composante au hasard
+
+      Commande : T_Commande;       -- La commande
+   
+      Facteur_Zoom : Long_Float;   -- facteur en parametre a zoom
+      Largeur : Integer;           -- Pour la resolution du BMP
+      Hauteur : Integer;           -- Pour la resolution du BMP
+      Nom     : T_Chaine;          -- Pour le nom du fichier BMP ou du POF
+      Couleur : T_Couleur;         -- Couleur (pour le changement de couleur)
+      Numero  : Positive;          -- Numero/nombre de la couleur ou de la fractale a selectionner
+      Long_Float_Tmp : Long_Float; -- Variable temporaire pour la saisie de 2 parametres long_float
+
+      Auto_Rafraichi : Boolean := True;   -- Si redessine a chaque changement de parametre
+      Fractal_Change : Boolean := False;  -- Si les parametres ont ete change par une commande
+      Couleur_Change : Boolean := False;  -- Si les couleurs ont change par une commande
+
+
+   begin
+      Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+      Power_Tools.Dessiner_Fractal(Courant.Fractal);
+
+      loop
+         begin
+
+            -- Saisie d'une commande correcte
+            loop
+               begin
+                  New_Line;
+                  Put(Prompt);
+                  Get(Commande);
+                  exit;
+               exception
+                  when Data_Error =>
+                     Skip_Line;
+                     New_Line;
+                     Put_Line(" Command unknown !");
+                     Put(" (");
+                     Put(T_Commande'First);
+                     Put_Line(" for details)");
+               end;
+            end loop;
+       
+         
+            case Commande is
+               -- Aide
+               when T_Commande'Val(0) =>
+                  if Parametre then 
+                     Get(Commande);
+                     Skip_Line;
+                     New_Line;
+                     Put(" ");
+                     Put(Commande);
+                     Put(Commande_Aide(Commande).Info_Para);
+                     New_Line;
+                     Put(Commande_Aide(Commande).Info_Supp);
+                     New_Line;
+
+                  else
+                     New_Line;               
+                     for I in T_Commande'range loop 
+                        Put(" ");  
+                        Put(I);
+                        Put(Commande_Aide(I).Info_Para);
+                        New_Line;            
+                     end loop;
+                  end if;
+                  
+
+               -- Info
+               when T_Commande'Val(1) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+   
+                  New_Line;
+                  Put(" ");
+                  Put(Courant.Fractal.Ensemble);
+                  New_Line;
+   
+                  Put(" Zoom              : ");
+                  Put(Courant.Fractal.Zoom,0, 6, 0);
+                  New_Line;
+            
+                  Put(" Divergence limit  : ");
+                  Put(Courant.Fractal.C_Diverge_Limite,0 ,6, 0);
+                  New_Line;
+               
+                  Put(" Iterations number : ");
+                  Put(Courant.Fractal.Nb_Iteration_Max, 0);
+                  New_Line;
+            
+                  Put(" Center            : (");
+                  Put(Courant.Fractal.Centre.X, 0,6,0);
+                  Put(", ");
+                  Put(Courant.Fractal.Centre.Y, 0,6,0);
+                  Put(")");
+                  New_Line;
+
+                  Put(" Angle             : ");
+                  Put(Courant.Fractal.Angle, 0, 6, 0);
+                  New_Line;
+
+            
+                  Put(" Antialiasing      : ");
+                  if Courant.Fractal.Antialiasing then
+                     Put("yes");
+                  else
+                     Put("no");
+                  end if;
+                  New_Line;
+                        
+                  if Courant.Fractal.Ensemble = Julia then
+                     Put(" Constant          : (");
+                     Put(Courant.Fractal.Cx, 0,6,0);
+                     Put(", ");
+                     Put(Courant.Fractal.Cy, 0,6,0);
+                     Put(")");
+                     New_Line;
+                  end if;
+
+                  Put(" Colors (");
+                  Put(Courant.Fractal.Nb_Couleur, 2);
+                  Put(")       :");
+                  for I in Courant.Fractal.Couleur'range loop                     
+                     Put(" (");
+                     Put(Courant.Fractal.Couleur(I).R, 3);
+                     Put(", ");
+                     Put(Courant.Fractal.Couleur(I).G, 3);
+                     Put(", ");
+                     Put(Courant.Fractal.Couleur(I).B, 3);
+                     Put(")");
+                     New_Line;
+                     Put("                    ");
+                  end loop;
+                  
+         
+               -- Choisir une fractal dans la liste
+               when T_Commande'Val(2) =>
+                  -- Si une seule fractale ne choisit pas
+                  if Nb_Fractals(Liste) > 1 then
+                     if Parametre then
+                        Get(Numero);
+                        Skip_Line;
+                        -- Si le numero existe: prends la fractal
+                        if Numero in 1 .. Nb_Fractals(Liste) then
+                           Courant := Fractal_Num(Liste, Numero);
+                           Fractal_Change:= True;
+                        else
+                           raise Data_Error;
+                        end if;
+                     else
+                        -- Aucun parametre: affiche le choix
+                        Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                        Fractal_Change:= True;
+                     end if;
+                  else
+                     
+                     New_Line;
+                     Put_Line("There is only one fractal !");
+                  end if;
+  
+
+               -- Echange entre les ensemblea
+               when T_Commande'Val(3) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  if Courant.Fractal.Ensemble = Julia then
+                     Courant.Fractal  := (Mandelbrot, Courant.Fractal.Nb_Couleur, 
+                                          Courant.Fractal.Nb_Iteration_Max, 
+                                          Courant.Fractal.C_Diverge_Limite, Courant.Fractal.Zoom, 
+                                          Courant.Fractal.Centre, Courant.Fractal.Angle, 
+                                          Courant.Fractal.Couleur, Courant.Fractal.Antialiasing, 
+                                          Courant.Fractal.Dessine_Degrade);                     
+                  else 
+                     Courant.Fractal  := (Julia, Courant.Fractal.Nb_Couleur, 
+                                          Courant.Fractal.Nb_Iteration_Max, 
+                                          Courant.Fractal.C_Diverge_Limite, Courant.Fractal.Zoom,
+                                          Courant.Fractal.Centre, Courant.Fractal.Angle,                     
+                                          Courant.Fractal.Couleur, Courant.Fractal.Antialiasing, 
+                                          Courant.Fractal.Dessine_Degrade, 
+                                          Fractal_Initial_Julia.Cx, Fractal_Initial_Julia.Cy);
+                  end if;
+                  Fractal_Change:= True;
+   
+  
+               -- Zoom
+               when T_Commande'Val(4) =>
+   
+                  -- si parametre trouve
+                  if Parametre then
+                     Get(Courant.Fractal.Zoom);
+   
+                     -- Le zoom ne depasse pas la limite inferieure
+                     if Courant.Fractal.Zoom < Zoom_Min then 
+                        Courant.Fractal.Zoom := Zoom_Min;
+                     end if;
+                     Fractal_Change := True;
+                  else
+                     Put_Line("Press ESC to return to console mode...");
+                     -- Si la fractal affichee n'est plus actuelle: la redessine
+                     if Fractal_Change then
+                        Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                        Fractal_Change := False;
+                        Couleur_Change := False;
+                     end if;
+                     Power_Tools.Zoom_Souris(Courant.Fractal);
+                  end if;
+                  Skip_Line;
+                        
+               -- Zoom avant
+               when T_Commande'Val(5) =>
+                  if Parametre then
+                     Get(Facteur_Zoom);
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom * Facteur_Zoom;
+                  else
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom * Facteur_Zin;
+                  end if;
+   
+                  -- Le zoom ne depasse pas la limite inferieure
+                  if Courant.Fractal.Zoom < Zoom_Min then 
+                     Courant.Fractal.Zoom := Zoom_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+   
+         
+               -- Zoom arriere
+               when T_Commande'Val(6) =>
+                  if Parametre then
+                     Get(Facteur_Zoom);
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom / Facteur_Zoom;
+                  else
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom / Facteur_Zout;
+                  end if;
+   
+                  -- Le zoom ne depasse pas la limite inferieure
+                  if Courant.Fractal.Zoom < Zoom_Min then 
+                     Courant.Fractal.Zoom := Zoom_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+   
+   
+               -- Centrer la fractal
+               when T_Commande'Val(7) =>
+   
+                  -- si parametre trouve
+                  if Parametre then
+                     Get(Long_Float_Tmp);
+                     if Parametre then 
+                        Get(Courant.Fractal.Centre.Y);
+                        Skip_Line;
+                        Courant.Fractal.Centre.X := Long_Float_Tmp;
+                        Fractal_Change := True;
+                     else   
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     Put_Line("Press ESC to return to console mode...");
+                     -- Si la fractal affichee n'est plus actuelle: la redessine
+                     if Fractal_Change then
+                        Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                        Fractal_Change := False;
+                        Couleur_Change := False;
+                     end if; 
+                     Power_Tools.Centrer(Courant.Fractal);
+                  end if;
+
+
+               -- Nombre d'iteration
+               when T_Commande'Val(8) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Nb_Iteration_Max);
+                  
+                  -- Le nb d'iteration ne depasse pas la limite inferieure
+                  if Courant.Fractal.Nb_Iteration_Max < Nb_Iteration_Min then
+                     Courant.Fractal.Nb_Iteration_Max := Nb_Iteration_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+      
+   
+               -- Limite de divergence
+               when T_Commande'Val(9) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;   
+                  Get(Courant.Fractal.C_Diverge_Limite);
+                  Skip_Line;
+                  -- Limite la valeur 
+                  if Courant.Fractal.C_Diverge_Limite < 0.0 then
+                     Courant.Fractal.C_Diverge_Limite := 0.0;
+                  elsif Courant.Fractal.C_Diverge_Limite > 4.0 then
+                     Courant.Fractal.C_Diverge_Limite := 4.0;
+                  end if;                  
+                  Fractal_Change := True;
+
+      
+   
+               -- Constante pour le calcul de Julia
+               when T_Commande'Val(10) =>
+                  if Courant.Fractal.Ensemble = Julia then
+                     if Parametre then
+                        Get(Long_Float_Tmp);
+                     else
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                     if Parametre then
+                        Get(Courant.Fractal.Cy);
+                        Courant.Fractal.Cx := Long_Float_Tmp;
+                        Fractal_Change := True;
+                     else
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     New_Line;
+                     Put_Line(" Only with Julia set !");
+                  end if;
+
+
+               -- Rotation de la fractale
+               when T_Commande'Val(11) =>
+                  if Parametre then 
+                     Get(Courant.Fractal.Angle);
+                     Skip_Line;
+
+                     if Courant.Fractal.Angle > 0.0 then                        
+                        while Courant.Fractal.Angle not in 0.0 .. 360.0 loop
+                           Courant.Fractal.Angle := Courant.Fractal.Angle - 360.0;
+                        end loop;
+                     else
+                        while Courant.Fractal.Angle not in 0.0 .. 360.0 loop
+                           Courant.Fractal.Angle := Courant.Fractal.Angle + 360.0;
+                        end loop;
+                     end if;
+
+                     Fractal_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+   
+               -- Couleur par numero de la couleur
+               when T_Commande'Val(12) =>
+                  if Parametre then
+                     Get(Numero);
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+                  -- Si le numero ne corespond a rien: erreur
+                  if Numero not in Courant.Fractal.Couleur'range then
+                     raise Data_Error;
+                  end if;
+
+                  if Parametre then
+                     Get(Courant.Fractal.Couleur(Numero));
+                     Couleur_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Le nombre de couleur definie du degrade
+               when T_Commande'Val(13) =>
+                  if Parametre then
+                     Get(Numero);
+                     Skip_Line;
+                     if Numero < 2 then 
+                        Numero := 2;
+                     elsif Numero > Nb_Couleur_Max then
+                        Numero := Nb_Couleur_Max;
+                     end if;
+                     -- Devient le nombre de couleur a ajouter (relatif, plus absolu)
+                     Numero := Numero - Courant.Fractal.Nb_Couleur;
+
+                     -- Redefinit la fractal avec le bon nombre de couleur
+                     if Courant.Fractal.Ensemble = Mandelbrot then
+                        Courant.Fractal  := (Mandelbrot, Courant.Fractal.Nb_Couleur + Numero, 
+                                             Courant.Fractal.Nb_Iteration_Max,
+                                             Courant.Fractal.C_Diverge_Limite,
+                                             Courant.Fractal.Zoom, Courant.Fractal.Centre, 
+                                             Courant.Fractal.Angle, Courant.Fractal.Couleur(
+                                             Courant.Fractal.Couleur'First .. 
+                                             Courant.Fractal.Nb_Couleur + Numero),
+                                             Courant.Fractal.Antialiasing, 
+                                             Courant.Fractal.Dessine_Degrade);  
+                     else 
+                        Courant.Fractal  := (Julia, Courant.Fractal.Nb_Couleur + Numero, 
+                                             Courant.Fractal.Nb_Iteration_Max,
+                                             Courant.Fractal.C_Diverge_Limite,
+                                             Courant.Fractal.Zoom, Courant.Fractal.Centre, 
+                                             Courant.Fractal.Angle, Courant.Fractal.Couleur(
+                                             Courant.Fractal.Couleur'First .. 
+                                             Courant.Fractal.Nb_Couleur + Numero),
+                                             Courant.Fractal.Antialiasing, 
+                                             Courant.Fractal.Dessine_Degrade,       
+                                             Courant.Fractal.Cx, Courant.Fractal.Cy);
+                     end if;
+
+                     -- Quand le nouveau nb de couleur est plus grand: repete la derniere
+                     -- couleur connue dans le reste des couleurs
+                     Courant.Fractal.Couleur(Courant.Fractal.Nb_Couleur - Numero + 1 .. 
+                     Courant.Fractal.Couleur'Last) := (others => 
+                     Courant.Fractal.Couleur(Courant.Fractal.Nb_Couleur - Numero));
+                     Couleur_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Tire les couleurs au hasard
+               when T_Commande'Val(14) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Reset(Generateur_Composante);
+                     -- Tire au hasard chaque couleur de la composante
+                     for I in Courant.Fractal.Couleur'range loop
+                        Courant.Fractal.Couleur(I) := (Random(Generateur_Composante),
+                        Random(Generateur_Composante), Random(Generateur_Composante));
+                     end loop;
+                     Couleur_Change := True;
+                  end if;
+
+
+               -- Si dessine le degrade de couleur
+               when T_Commande'Val(15) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Dessine_Degrade);
+                  Skip_Line;
+                  Couleur_Change := True;
+         
+
+               -- Reinitialise tous les parametres
+               when T_Commande'Val(16) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  -- Inialise selon l'ensebmle de la fractal
+                  if Courant.Fractal.Ensemble = Julia then
+                     Courant.Fractal := Fractal_Initial_Julia;
+                  else
+                     Courant.Fractal := Fractal_Initial_Mandel;
+                  end if;
+                  Fractal_Change := True;
+                  
+               
+               -- Reprends la liste par defaut
+               when T_Commande'Val(17) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Liste := Liste_Defaut;
+                     Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                     Fractal_Change:= True;
+                  end if;
+
+
+               -- Rafraichissement automatique
+               when T_Commande'Val(18) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Auto_Rafraichi);
+                  Skip_Line;
+   
+
+               -- Dessine la fractale
+               when T_Commande'Val(19) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                  Fractal_Change := False;
+                  Couleur_Change := False;
+   
+
+               -- Antialiasing
+               when T_Commande'Val(20) =>
+                  if not Parametre then 
+                     -- Aucun parametre: erreur
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Antialiasing);
+                  Skip_Line;
+                  Fractal_Change := True;
+
+
+               -- Rendre dans un fichier BMP
+               when T_Commande'Val(21) =>
+                  if Parametre then
+                     -- Prends le premier parametre
+                     Get(Nom);
+                  else
+                     -- Aucun parametre: erreur
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  
+                  if Parametre then
+                     -- Prends le 2eme parametre
+                     Get(Largeur);
+                     if Parametre then
+                        -- Prends 3eme parametre et balance le reste
+                        Get(Hauteur);
+                        Skip_Line;
+
+                        -- Ajuste la resolution a min 5 et max 10'000
+                        if Largeur < 5 then
+                           Largeur := 5;
+                        elsif Largeur > 10000 then
+                           Largeur := 10000;
+                        elsif Hauteur < 5 then
+                           Hauteur := 5;
+                        elsif Hauteur > 10000 then
+                           Hauteur := 10000;
+                        end if;
+
+                        -- 3 parametres lu correctement: crée le BMP avec la resolution demandée   
+                        Power_Io.Rendre_Bmp (Courant.Fractal, 
+                           Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "BMP"),
+                           Largeur, Hauteur);
+                     else
+                        -- 2 parametres
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     -- 1 seul parametre: cree le BMP avec valeur par defaut
+                     Power_Io.Rendre_Bmp ( Courant.Fractal,
+                     Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "BMP"));
+                  end if;
+
+   
+               -- Cree une nouvelle fractal 
+               when T_Commande'Val(22) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Ajouter(Liste, Fractal_Initial_Mandel);
+                     Courant := Fractal_Num(Liste, Nb_Fractals(Liste));
+                     Fractal_Change:= True;
+                  end if;
+             
+
+               -- Supprime une fractal de la liste
+               when T_Commande'Val(23) =>
+                  if Nb_Fractals(Liste) > 1 then
+                     if Parametre then 
+                        Get(Numero);
+                        Skip_Line;
+                        -- Si la fractal existe
+                        if Numero in 1 .. Nb_Fractals(Liste) then
+   
+                           --Si veut effacer la fractal courante: change la courante
+                           if Courant = Fractal_Num(Liste, Numero) and Numero > 1 then
+                              Courant := Fractal_Num(Liste, Numero - 1);
+                           Fractal_Change := True;
+                           elsif Courant = Fractal_Num(Liste, Numero) and Numero = 1 then
+                              Courant := Fractal_Num(Liste, 2);
+                           Fractal_Change := True;
+                           end if;
+   
+                           Effacer(Liste, Numero);
+                        else
+                           raise Data_Error;
+                        end if;
+                     -- Si aucun parametre
+                     else
+                        Numero := Choix_Mosaic(Liste);
+                        --Si veut effacer la fractal courante: change la courante
+                        if Courant = Fractal_Num(Liste, Numero) and Numero > 1 then
+                           Courant := Fractal_Num(Liste, Numero - 1);
+                        elsif Courant = Fractal_Num(Liste, Numero) and Numero = 1 then
+                           Courant := Fractal_Num(Liste, 2);
+                        end if;
+                        Effacer(Liste, Numero);
+                        Fractal_Change := True;
+                     end if;
+                  -- Si veux effacer la derniere fractal
+                  else                     
+                     New_Line;
+                     Put_Line("The last fractal can't be deleted !");
+                  end if;
+
+
+
+               -- Sauve les donnee de la fractale
+               when T_Commande'Val(24) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;
+                     Power_Io.Enregistrer_Fractal(Verif_Extension(Nom.Chaine(1 .. Nom.Longueur),
+                     "JOF"), Courant.Fractal);
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Charge les donnee de la fractale
+               when T_Commande'Val(25) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;                     
+                     -- Ajoute a la liste et la prend comme fractale courante
+                     Ajouter(Liste, Power_Io.Charger_Fractal
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "JOF")));
+
+                     Courant := Fractal_Num(Liste, Nb_Fractals(Liste));
+                     Fractal_Change := True;
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+   
+
+
+               -- Sauve les donnee de toute la liste
+               when T_Commande'Val(26) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;
+                     Power_Io.Enregistrer_Liste
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "LOF"), Liste);
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Charge les donnee de toute la liste
+               when T_Commande'Val(27) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;                     
+                     Power_Io.Charger_Liste
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "LOF"), Liste);
+                     
+                     Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                     Fractal_Change := True;
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- A propos du programme
+               when T_Commande'Val(28) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Skip_Line;                  
+                  Put_Line("           ____    ___ __        __ _____  ____");
+                  Put_Line("          |  _ \  / _ \\ \      / /| ____||  _ \ ");
+                  Put_Line("          | |_) || | | |\ \ /\ / / |  _|  | |_) |");
+                  Put_Line("          |  __/ | |_| | \ V  V /  | |___ |  _ < "); 
+                  Put_Line("          |_|     \___/   \_/\_/   |_____||_| \_\"); 
+                  New_Line;
+                  Put_Line("           _____  ____      _     ____  _____   _     _");
+                  Put_Line("          |  ___||  _ \    / \   / ___||_   _| / \   | |");
+                  Put_Line("          | |_   | |_) |  / _ \ | |      | |  / _ \  | |");
+                  Put_Line("          |  _|  |  _ <  / ___ \| |___   | | / ___ \ | |__");
+                  Put_Line("          |_|    |_| \_\/_/   \_\\____|  |_|/_/   \_\|____|");
+                  Put_Line("                                           V 1.0");
+                  Put_Line("                by G.Burri and A.Crivelli");
+                  New_Line;     
+                  Put_Line("           e-mail : greg.burri@net2000.ch");
+                  Put_Line("                    powerkiki@urbanet.ch");
+                  New_Line;     
+                  Put_Line("           Url    : http://pifou.servehttp.com/powerfractal");
+
+
+               -- Quitte le programme
+               when T_Commande'Val(29) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Skip_Line;
+                  exit;
+
+
+            end case;
+   
+            -- En mode auto: redessine la fractal si un ou plusieurs parametres ont change
+            if Auto_Rafraichi and Fractal_Change then
+               Power_Tools.Dessiner_Fractal(Courant.Fractal);
+               Fractal_Change := False;
+               Couleur_Change := False;
+            -- En mode auto: redessine la fractal si les couleurs ont changé
+            elsif Auto_Rafraichi and Couleur_Change then
+               Power_Tools.Rafraichir_Couleur(Courant.Fractal);
+               Couleur_Change := False;
+            end if;
+   
+         
+         exception 
+            when Erreur_Trop_Parametre =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Too much parameters !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+   
+            when Erreur_Manque_Parametre =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Parameter(s) missing !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+   
+            when Data_Error =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Bad parameter(s) !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+
+            when Power_Io.Erreur_Fichier =>
+               New_Line;
+               Put_Line(" File not found !");
+
+         end;
+      end loop;
+   end Console;
+
+
+end Power_Console;
diff --git a/CD/Src/Power_Console.ads b/CD/Src/Power_Console.ads
new file mode 100644 (file)
index 0000000..c034843
--- /dev/null
@@ -0,0 +1,30 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_console / fait partie du programme Power Fractal                           --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour mettre a disposition de l'utilisateur les            --
+--           differentes fonction du programme                                                --
+------------------------------------------------------------------------------------------------
+
+
+with Power_Types; use  Power_Types;
+with Power_List; use Power_List;
+
+package  Power_Console is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Console                                                                          --
+   -- But     : Gere une console avec commandes et parametre                                     --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * le prompt utilise dans la console                                              --
+   --                                                                                            --
+   --  In out : La liste des fractals                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Console(Liste : in out T_Liste_Fractals; Prompt : in String);
+
+
+
+
+end Power_Console;
+
diff --git a/CD/Src/Power_Draw.adb b/CD/Src/Power_Draw.adb
new file mode 100644 (file)
index 0000000..4618589
--- /dev/null
@@ -0,0 +1,201 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Draw / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de bas niveau pour le dessin a l'ecran.                                   --
+--           Comme dessiner un carre, une partie du tampon etc..                              --
+------------------------------------------------------------------------------------------------
+
+with Spider; use Spider; 
+with Spider.Draw; use Spider.Draw; --Enfant de spider Pour gerer la couleur et le dessin 
+with Power_Types; use Power_Types;
+with Power_Colors;
+
+package body Power_Draw is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Point_Fractal                                                             --
+   -- But     : Dessiner un point de la fractal a l'ecran depuis la Matrice Tampon               --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees x et y du point                                                --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Point_Fractal(X, Y : Natural) is
+      Color_Back : Spider.Draw.Tcolor; --La couleur au format spider
+   begin -- Dessin_Point_Fractal
+
+      --Copie les composantes RGB du point dans la variable au format spider
+      Color_Back.R := Integer(Matrice_Tampon_Ecran(X, Y).R);
+      Color_Back.G := Integer(Matrice_Tampon_Ecran(X, Y).G);
+      Color_Back.B := Integer(Matrice_Tampon_Ecran(X, Y).B);
+      --
+
+      Set_Color_Pen(Color_Back); --Defini la couleur du pinceau
+      Move_To(X,Y);              --Se deplace au coordonnees du point
+      Put_Pixel;                 --Affiche une pixel
+
+   end Dessin_Point_Fractal;
+      
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Boite                                                                            --
+   -- But     : dessiner un rectangle vide a l'ecran                                             --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees du point superieur gauche : X1, Y1                             --
+   --           * les coordonnees du point inferieur droit  : X2, Y2                             -- 
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Boite (X1, Y1, X2, Y2 : Natural; Couleur : Spider.Draw.Tcolor) is
+
+   begin --Boite
+
+
+      Spider.Draw.Set_Color_Pen(Couleur);  
+      --Dessine quatre traits pour former le rectangle
+      Line_To(X1, Y1, X2, Y1);
+      Line_To(X1, Y2, X2, Y2);
+      
+      
+      Line_To(X1, Y1, X1, Y2);
+      Line_To(X2, Y1, X2, Y2);
+      --
+
+   end Boite;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Hori                                                               --
+   -- But     : rafraichire une ligne horizontale de l'ecran depuis le tampon                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : X1                                       --
+   --           * La coordonnee de la fin             : X2                                       --
+   --           * La coordonnee de positionement en Y : Y                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Hori (X1, X2, Y : Natural) is
+
+      --Variable temporaire
+      X1_Tmp : Natural := X1;
+      X2_Tmp : Natural := X2;
+      --
+
+      Tmp : Natural; --Pour le swap de valeurs
+
+   begin --Ligne_Matrice_hori
+
+      --Si X1 est plus grand que X2 alors permute leur valeur
+      if X1_Tmp > X2_Tmp then
+         Tmp := X1_Tmp;
+         X1_Tmp := X2_Tmp;
+         X2_Tmp := Tmp;
+      end if;
+
+      --Boucle pour chaque point a dessiner
+      for I in X1_Tmp..X2_Tmp loop
+            Dessin_Point_Fractal(I, Y); --Affiche le point
+       end loop;
+
+   end Ligne_Matrice_Hori;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Vert                                                               --
+   -- But     : rafraichire une ligne verticale de l'ecran depuis le tampon                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : Y1                                       --
+   --           * La coordonnee de la fin             : Y2                                       --
+   --           * La coordonnee de positionement en X : X                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Vert (Y1, Y2, X : Natural) is
+
+      --Variable temporaire
+      Y1_Tmp : Natural := Y1;
+      Y2_Tmp : Natural := Y2;
+      Tmp : Natural; --Pour le swap de valeurs
+      --
+
+   begin --Ligne_Matrice_hori
+
+      --Si Y1 est plus grand que Y2 alors permute leur valeur
+      if Y1_Tmp > Y2_Tmp then
+         Tmp := Y1_Tmp;
+         Y1_Tmp := Y2_Tmp;
+         Y2_Tmp := Tmp;
+      end if;
+      
+      --Boucle pour chaque point a dessiner
+      for I in Y1_Tmp..Y2_Tmp loop
+            Dessin_Point_Fractal(X, I);
+      end loop;
+
+   end Ligne_Matrice_Vert;
+
+
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Croix                                                                     --
+   -- But     : dessiner une petite croix sur l'ecran                                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : Les coordonnees de la croix : X et Y                                             --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Croix (X, Y : Natural) is 
+      Color_Back : Spider.Draw.Tcolor; --La couleur au format spider
+   begin --Dessin_croix
+
+      --Si la croix peut-etre dessine (il faut tenir compte de son rayon : Rayon_Ext_Croix)
+      if X in 0 + Rayon_Ext_Croix..Largeur_Ecran - Rayon_Ext_Croix
+         and Y in 0 + Rayon_Ext_Croix ..Hauteur_Ecran - Rayon_Ext_Croix then
+         
+         --Copie les composantes RGB du point dans la variable au format spider
+         Color_Back.R := Integer(Matrice_Tampon_Ecran(X, Y).R);
+         Color_Back.G := Integer(Matrice_Tampon_Ecran(X, Y).G);
+         Color_Back.B := Integer(Matrice_Tampon_Ecran(X, Y).B);
+         --
+   
+         Power_Colors.Inverse_Couleur(Color_Back); --Inverse la couleur
+
+         Set_Color_Pen(Color_Back);   --Defini la couleur du pinceau
+
+         --Trace la croix en fonction de la constante du rayon interne : Rayon_Int_Croix
+         --et de la constante du rayon interne : Rayon_Int_Croix
+         Line_To(X - Rayon_Ext_Croix ,Y , X - Rayon_Int_Croix , Y);   
+         Line_To(X + Rayon_Ext_Croix ,Y , X + Rayon_Int_Croix , Y);        
+         Line_To(X ,Y - Rayon_Ext_Croix , X , Y - Rayon_Int_Croix);          
+         Line_To(X ,Y + Rayon_Ext_Croix , X , Y + Rayon_Int_Croix);
+         --
+      end if;
+      
+   end Dessin_Croix;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Efface_Croix                                                                     --
+   -- But     : Effacer la croix qui a au paravant ete dessine en X, Y                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les coordonnees de la croix a effacer  : X, Y                                  --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Efface_Croix (X, Y : Natural) is
+   begin -- Efface_Croix
+
+      --Si le point xy est un point ou une croix a put etre dessine
+      if X in 0 + Rayon_Ext_Croix..Largeur_Ecran - Rayon_Ext_Croix and Y in 0
+      + Rayon_Ext_Croix ..Hauteur_Ecran - Rayon_Ext_Croix then
+
+         --Efface la croix, en dessinant par dessus une nouvelle croix mais par rapport au tampon
+         Ligne_Matrice_Hori(X - Rayon_Ext_Croix, X - Rayon_Int_Croix, Y);
+         Ligne_Matrice_Hori(X + Rayon_Ext_Croix, X + Rayon_Int_Croix, Y);
+         Ligne_Matrice_Vert(Y - Rayon_Ext_Croix, Y - Rayon_Int_Croix, X);
+         Ligne_Matrice_Vert(Y + Rayon_Ext_Croix, Y + Rayon_Int_Croix, X);
+         --
+
+      end if;
+   end Efface_Croix;
+
+end Power_Draw;
diff --git a/CD/Src/Power_Draw.ads b/CD/Src/Power_Draw.ads
new file mode 100644 (file)
index 0000000..5300618
--- /dev/null
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Draw / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de bas niveau pour le dessin a l'ecran.                                   --
+--           Comme dessiner un carre, une partie du tampon etc..                              --
+------------------------------------------------------------------------------------------------
+
+with Spider.Draw;
+
+package Power_Draw is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Boite                                                                            --
+   -- But     : dessiner un rectangle vide a l'ecran                                             --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees du point superieur gauche : X1, Y1                             --
+   --           * les coordonnees du point inferieur droit  : X2, Y2                             -- 
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Boite (X1, Y1, X2, Y2 : Natural; Couleur : Spider.Draw.Tcolor);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Hori                                                               --
+   -- But     : rafraichire une ligne horizontale de l'ecran depuis le tampon                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : X1                                       --
+   --           * La coordonnee de la fin             : X2                                       --
+   --           * La coordonnee de positionement en Y : Y                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Hori (X1, X2, Y : Natural);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Vert                                                               --
+   -- But     : rafraichire une ligne verticale de l'ecran depuis le tampon                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : Y1                                       --
+   --           * La coordonnee de la fin             : Y2                                       --
+   --           * La coordonnee de positionement en X : X                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Vert (Y1, Y2, X : Natural);
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Croix                                                                     --
+   -- But     : dessiner une petite croix sur l'ecran                                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : Les coordonnees de la croix : X et Y                                             --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Croix (X, Y : Natural);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Efface_Croix                                                                     --
+   -- But     : Effacer la croix qui a au paravant ete dessine en X, Y                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les coordonnees de la croix a effacer  : X, Y                                  --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Efface_Croix (X, Y : Natural);
+
+end Power_Draw;
\ No newline at end of file
diff --git a/CD/Src/Power_List.adb b/CD/Src/Power_List.adb
new file mode 100644 (file)
index 0000000..ea1bda7
--- /dev/null
@@ -0,0 +1,226 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_List / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils pour creer et gerer des liste de fractals                                 --
+------------------------------------------------------------------------------------------------
+
+with Power_Types; use Power_Types;
+with Ada.Unchecked_Deallocation;
+
+package body Power_List is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ajouter                                                                          --
+   -- But     : Ajouter une fractal a la suite de la liste                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * La Fractal A Ajouter                                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Ajouter (Liste_Fractals : in out T_Liste_Fractals; Fractal : Cara_Fractal) is
+
+      --Pour pouvoir parcourir la liste
+      Pointeur : T_Lien := Liste_Fractals.Tete;
+   
+   begin --Ajouter
+
+      if Liste_Fractals.Tete = null then
+         
+         Liste_Fractals.Tete := new T_Fractal'(Fractal, null);
+   
+      else
+
+         while Pointeur.Suiv /= null loop
+            Pointeur := Pointeur.Suiv;
+         end loop;
+   
+         Pointeur.Suiv := new T_Fractal'(Fractal, null);
+
+      end if;
+
+      Liste_Fractals.Nb_Fractals := Liste_Fractals.Nb_Fractals  + 1;
+
+   end Ajouter;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Effacer                                                                          --
+   -- But     : Effacer une fractal de la liste                                                  --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a effacer : Num                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Effacer (Liste_Fractals : in out T_Liste_Fractals; Num : Natural) is
+
+      --Pour pouvoir parcourir la liste
+      Pointeur : T_Lien := Liste_Fractals.Tete;
+      Pointeur_Avant : T_Lien :=  Liste_Fractals.Tete;
+
+      procedure Liberer is new Ada.Unchecked_Deallocation ( T_Fractal , T_Lien);
+
+   begin --Effacer
+
+      --Si la liste ne comporte qu'un seul element alors propage une erreur
+      if Liste_Fractals.Nb_Fractals = 1 then
+         raise Liste_Une_Fractal;
+      end if;
+
+      --Si l'element a supprimer est le premier de la liste alors
+      if Num = 1 then
+         Liste_Fractals.Tete := Liste_Fractals.Tete.Suiv; --La tete pointe sur le deuxieme element
+         Liberer(Pointeur);
+      else
+         
+         --Pointeur pointe sur le deuxieme element de la liste
+         Pointeur := Liste_Fractals.Tete.Suiv;
+
+         --Cherche l'element numero 'num'
+         for I in 3..Num loop
+            
+            --Decale les pointeurs
+            Pointeur_Avant := Pointeur;
+            Pointeur := Pointeur.Suiv;
+            --
+
+            --Si pas trouve alors propage une erreur
+            if Pointeur = null then raise Fractal_Inexistante; end if; 
+
+         end loop;         
+
+         Pointeur_Avant.Suiv := Pointeur.Suiv; --Refais le lien en sautant l'element a supprimer
+         Liberer(Pointeur); --Efface de la memoire l'element a supprimer
+
+      end if;
+
+      --Un element a ete enleve :
+      Liste_Fractals.Nb_Fractals := Liste_Fractals.Nb_Fractals - 1; 
+
+   end Effacer;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Fractal_Num                                                                      --
+   -- But     : Retourner un pointeur sur la fractal correspondante a un numeros                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a chercher : Num                                      --
+   --                                                                                            --
+   --  return : * Le pointeur sur La fractal correspondante au numero                            --
+   ------------------------------------------------------------------------------------------------
+   function Fractal_Num (Liste_Fractals :  T_Liste_Fractals;  Num : Natural) return T_Lien is
+
+      Pointeur : T_Lien := Liste_Fractals.Tete;      --Pour pouvoir parcourir la liste
+
+   begin --Fractal_Num
+
+      for I in 2..Num loop
+
+         --Si pas trouve alors propage une erreur
+         if Pointeur = null then raise Fractal_Inexistante; end if;         
+         Pointeur := Pointeur.Suiv; --Decale le pointeur
+
+      end loop;
+    
+      return Pointeur; --Retourne la fractal trouvee
+
+   end Fractal_Num;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Vider_Liste                                                                      --
+   -- But     : vider completement la liste des fractals                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a vider                                                   --
+   ------------------------------------------------------------------------------------------------
+   procedure Vider_Liste(Liste_Fractals : in out T_Liste_Fractals) is
+
+      Pointeur : T_Lien;      --Pour pouvoir parcourir la liste
+      procedure Liberer is new Ada.Unchecked_Deallocation ( T_Fractal , T_Lien);
+
+   begin --Vider_Liste
+
+      --Efface tout les elements de la liste
+      while Liste_Fractals.Tete /= null loop
+         Pointeur := Liste_Fractals.Tete;
+         Liste_Fractals.Tete := Liste_Fractals.Tete.Suiv;
+         Liberer (Pointeur);
+      end loop;      
+   
+      Liste_Fractals.Nb_Fractals := 0;
+
+   end Vider_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Liste_Defaut                                                                     --
+   -- But     : Mettre dans la liste en parametre des fractals d'exemple                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a remplir                                                 --
+   ------------------------------------------------------------------------------------------------
+   function Liste_Defaut return T_Liste_Fractals is
+      Liste : T_Liste_Fractals;
+
+   begin --Liste_Defaut
+
+      --Les fractales par defaut
+      Ajouter(Liste, Fractal_Initial_Mandel);
+      Ajouter(Liste, Fractal_Initial_Julia);
+
+   
+      --D'autre fractal exemple
+      Ajouter(Liste, (Mandelbrot, 4, 30, 4.0, 1.0/4.0,       (-0.6, 0.0),  60.0, 
+                     (  (2,203,253),     (0,0,255),  (255,255,0),     (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      40, 4.0, 1.0/4.0,        (0.0, 0.0), -40.0,
+                     (      (0,0,0),   (247,91,43), (209,207,30),  (255,12,0) ),
+                     False, False, -0.277, 0.968));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 70, 4.0, 1.0/4.0,       (-0.6, 0.0), -90.0, 
+                     ((180,200,255),   (200,250,0),    (0,0,255),   (0,0,140) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      40, 4.0, 1.0/4.0,        (0.0, 0.0),   0.0, 
+                     (    (255,0,0),     (0,255,0),    (0,0,255), (255,255,0) ),
+                     False, False, 0.4, 0.02));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 33, 4.0, 87.0634,  (0.4147, 0.1589), -46.0, 
+                     (      (0,0,0),     (0,255,0),   (0,0,255),      (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      30, 1.2, 1.0/4.0,        (0.0, 0.0),   0.0, 
+                     ( (237,89,173), (138,164,237),   (0,0,255),   (22,23,23) ),
+                     False, False, 0.44, 0.2));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 180, 3.2, 10.2903,    (-1.761, -0.0), -26.0, 
+                     (      (0,0,0),     (0,255,0), (255,20,20),      (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      80, 4.0, 1.0/4.0,        (0.0, 0.0),  10.0, 
+                     (    (255,0,0),     (0,255,0),   (0,0,255),  (255,255,0) ),
+                     False, False, -0.757, -0.08));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 50, 2.3, 1.0/4.0,       (-0.6, 0.0), 180.0, 
+                     (    (0,100,0),     (34,55,0),   (0,0,255),   (0,32,244) ),
+                     False, False));
+
+      Ajouter(Liste, (Julia, 4,      50, 4.0,   1.026, (-0.3471, 0.4628),   0.0, 
+                     (    (255,0,0),     (0,255,0),   (0,0,255),  (255,255,0) ),
+                     False, False, 0.44, -0.14));
+
+      return Liste;
+
+       end Liste_Defaut;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nb_Fractals                                                                                --
+   ------------------------------------------------------------------------------------------------
+   function Nb_Fractals (Liste_Fractals : in T_Liste_Fractals) return Natural is
+
+   begin --Nb_Fractals
+
+      return Liste_Fractals.Nb_Fractals;
+
+   end Nb_Fractals;
+
+end Power_List;
\ No newline at end of file
diff --git a/CD/Src/Power_List.ads b/CD/Src/Power_List.ads
new file mode 100644 (file)
index 0000000..071acc9
--- /dev/null
@@ -0,0 +1,68 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_List / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils pour creer et gerer des liste de fractals                                 --
+------------------------------------------------------------------------------------------------
+
+with Power_Types; use Power_Types;
+
+package Power_List is
+
+   --Les exceptions
+   Liste_Une_Fractal : exception;
+   Fractal_Inexistante : exception;
+   --
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ajouter                                                                          --
+   -- But     : Ajouter une fractal a la suite de la liste                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La Fractal A Ajouter                                                           --
+   --  In out : * La liste de fractals                                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Ajouter (Liste_Fractals : in out T_Liste_Fractals; Fractal : Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Effacer                                                                          --
+   -- But     : Effacer une fractal de la liste                                                  --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a effacer : Num                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Effacer (Liste_Fractals : in out T_Liste_Fractals; Num : Natural);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Fractal_Num                                                                      --
+   -- But     : Retourner un pointeur sur la fractal correspondante a un numeros                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a chercher : Num                                      --
+   --                                                                                            --
+   --  return : * Le pointeur sur La fractal correspondante au numero                            --
+   ------------------------------------------------------------------------------------------------
+   function Fractal_Num (Liste_Fractals :  T_Liste_Fractals;  Num : Natural) return T_Lien;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Vider_Liste                                                                      --
+   -- But     : vider completement la liste des fractals                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a vider                                                   --
+   ------------------------------------------------------------------------------------------------
+   procedure Vider_Liste(Liste_Fractals : in out T_Liste_Fractals);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Liste_Defaut                                                                     --
+   -- But     : Mettre dans la liste en parametre des fractals d'exemple                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a remplir                                                 --
+   ------------------------------------------------------------------------------------------------
+   function Liste_Defaut return T_Liste_Fractals;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nb_Fractals                                                                                --
+   ------------------------------------------------------------------------------------------------
+   function Nb_Fractals (Liste_Fractals : in T_Liste_Fractals) return Natural;
+
+end Power_List;
diff --git a/CD/Src/Power_Tools.adb b/CD/Src/Power_Tools.adb
new file mode 100644 (file)
index 0000000..8a9f97c
--- /dev/null
@@ -0,0 +1,691 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Tools / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour le tracage, le recadrage et le centrage              --
+--           sur la fractal a l'Ecran.                                                        --
+------------------------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Power_Calculator;
+with Power_Colors;
+with Power_Draw;  use Power_Draw;
+
+with Spider;
+with Spider.Draw;
+with Spider.User;  use Spider.User; --Enfant gerant la souris et le clavier
+
+with Power_List;
+
+with Ada.Numerics; use Ada.Numerics;
+with Ada.Numerics.Generic_Elementary_Functions;
+
+
+package body Power_Tools is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessiner_Fractal                                                                 --
+   -- But     : Dessiner la fracal a l'ecran                                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessiner_Fractal (Fractal : in Cara_Fractal; X, Y : Natural := 0;
+                               Largeur_Zone : Natural := Largeur_Ecran;
+                               Hauteur_Zone : Natural := Hauteur_Ecran) is
+
+      use Power_Calculator;
+      use Power_Colors;
+
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le deegrade de couleur
+
+     
+      -------------------------------------------tests----------------------------------------
+       --2 si la matrice doit etre calcule quatre fois plus grande sinon 1
+      Quadruple : Natural := Boolean'Pos(Fractal.Antialiasing) + 1;   
+
+      --les dimensions de la zone de calcul, elles sont double si l'antialiasing est active
+      Largeur_Zone_Anti : Natural := Largeur_Zone * Quadruple + Boolean'Pos(Fractal.Antialiasing);
+      Hauteur_Zone_Anti : Natural := Hauteur_Zone * Quadruple + Boolean'Pos(Fractal.Antialiasing);
+      --
+
+      --La matrice d'iteration
+      Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Zone_Anti, 0..Hauteur_Zone_Anti);
+
+   begin -- Dessiner_Fractal
+
+      New_Line;
+      Put(" Matrix...     ");
+
+      --Si la fractal est de type mandelbrot alors
+      if Fractal.Ensemble = Mandelbrot then
+         --Calcul la fractal sur l'ensemble de mandelbrot
+         Matrice_Iteration := Mandel_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      else --sinon (Julia)
+         --Calcul la fractal sur l'ensemble de julia
+         Matrice_Iteration := Julia_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      end if;
+
+
+
+      --Si la procedure a ete appelle avec les parametres par defaut
+      if Largeur_Zone = Largeur_Ecran and Hauteur_Zone = Hauteur_Ecran then
+
+         --Si l'antialiasing est active alors
+         if Fractal.Antialiasing then
+             --Utilise la matrice qui fait le quadruple de taille de l'ecran
+            Matrice_Iteration_Global := (True, Matrice_Iteration);
+         else 
+            --Utilise la matrice normale
+            Matrice_Iteration_Global := (False, Matrice_Iteration);
+         end if;
+
+      else --sinon (dimension arbitraire)
+
+         --Si l'antialiasing est actif alors
+         if Fractal.Antialiasing then
+
+            --Copie la 'petite' matrice dans la grande globale
+            --Le coin de la petite est au coordonnees xy
+            for I in Matrice_Iteration'range(1) loop
+               for J in Matrice_Iteration'range(2) loop
+                  
+                  --Dessine la sous matrice calcule de la matrice tampon sur l'ecran
+                  Matrice_Iteration_Global.Matrice_Iteration_Anti(I + 2 * X, J + 2 * Y)
+                  := Matrice_Iteration(I, J);
+                                          
+               end loop;
+            end loop;
+
+         else
+
+            --Copie la 'petite' matrice dans la grande globale
+            --Le coin de la petite est au coordonnees xy
+            for I in Matrice_Iteration'range(1) loop
+               for J in Matrice_Iteration'range(2) loop
+   
+                  Matrice_Iteration_Global.Matrice_Iteration(I + X, J + Y)
+                  := Matrice_Iteration(I, J);
+                                          
+               end loop;
+            end loop;
+         end if;
+      end if;
+
+
+      Put_Line("OK");
+      Put(" Colors...     ");
+      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max); --Calcul le degrade
+      Put_Line("OK");
+      Put(" Conversion... ");
+
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon_Ecran :=Calcul_Antialiasing(Conversion_Couleur
+              (Matrice_Iteration_Global.Matrice_Iteration_Anti, Degrade));  
+      else
+         --Calcul la matrice de sortie (sans antialiasing)
+         Matrice_Tampon_Ecran := Conversion_Couleur
+         (Matrice_Iteration_Global.Matrice_Iteration, Degrade);
+      end if;
+
+
+      --Si l'affichage du degrade est actif alors
+      if Fractal.Dessine_Degrade and Largeur_Zone = Largeur_Ecran
+         and Hauteur_Zone = Hauteur_Ecran then
+
+         Affiche_Degrade(Fractal); --Affiche le degrade (dans le tampon)
+
+      end if;     
+      
+      Put_Line("OK");
+      Put(" Drawing...    ");
+      
+      -- Parcours chaque colonne de l'ecran
+      for I in Largeur_Zone / 2 + X..Largeur_Zone + X loop
+
+         --Dessine un colonne depuis le tampon a droite du cantre
+         Ligne_Matrice_Vert (Y, Y + Hauteur_Zone, I);
+
+         --Dessine un colonne depuis le tampon a gauche du centre
+         Ligne_Matrice_Vert (Y, Y + Hauteur_Zone, 2 * X - I + Largeur_Zone);
+
+      end loop;
+
+      Put_Line("OK");
+
+   end Dessiner_Fractal;
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rafraichir_couleur                                                               --
+   -- But     : Mets a jour les couleur et dessinne la fractal                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Rafraichir_Couleur (Fractal : in Cara_Fractal) is
+      use Power_Calculator;
+      use Power_Colors;
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le deegrade de couleur
+   begin -- Rafraichir_Couleur
+      New_Line;
+      Put(" Colors...     ");
+      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max); --Calcul le degrade
+      Put_Line("OK");
+      Put(" Conversion... ");
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon_Ecran := Calcul_Antialiasing
+         (Conversion_Couleur(Matrice_Iteration_Global.Matrice_Iteration_Anti, Degrade));  
+      else
+         --Calcul la matrice de sortie (sans antialiasing)
+         Matrice_Tampon_Ecran := Conversion_Couleur
+         (Matrice_Iteration_Global.Matrice_Iteration, Degrade);
+      end if;
+
+      --Si l'affichage du degrade est actif alors
+      if Fractal.Dessine_Degrade then
+         Affiche_Degrade(Fractal); --Affiche le degrade (dans le tampon)
+      end if;     
+      
+      Put_Line("OK");
+      Put(" Drawing...    ");
+      
+      -- Parcours chaque colonne de l'ecran
+      for X in Largeur_Ecran / 2..Largeur_Ecran loop
+
+         --Dessine un colonne depuis le tampon a droite du cantre
+         Ligne_Matrice_Vert (0, Hauteur_Ecran, X);
+
+         --Dessine un colonne depuis le tampon a gauche du centre
+         Ligne_Matrice_Vert (0, Hauteur_Ecran, Largeur_Ecran - X);
+
+      end loop;
+
+      Put_Line("OK");
+
+   end Rafraichir_Couleur;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Zoom_Souris                                                                      --
+   -- But     : Tracer un cadre a la souris pour zoomer                                          --
+   --           et clic-droit pour dezoomer (recentre au coordonnees de la sourris)              --                                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * la fractal sur laquelle zoomer                                                 --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Zoom_Souris(Fractal : in out Cara_Fractal) is
+
+      --La distance [px] entre le haut de la croix et l'arete superieur du cadre de zoom
+      --si cette distance est inferieur a une certaine valeur alors efface la croix, sinon affiche
+      --la croix
+      Distance_Visible : constant := 10 + Rayon_Ext_Croix; 
+         
+      X1, Y1,      --Coordonnees du centre du cadre                     
+      X2, Y2,      --Coordonnees de la souris lors du tracage du cadre
+      X2_Avant, Y2_Avant : Integer := 0;  --Pour sauvegarder des coordonnees
+      Clic_Droit       : Boolean;  --Si un clic droit a lieu
+      Clic_Gauche      : Boolean;  --Si un clic Gauche a lieu
+
+      Clic_Clavier : Boolean; --Si une touche est pressee
+      Touche : Character;     --La touche presse
+
+      X1_Float, Y1_Float ,    --Les coordonnees du centre par rapport au unite reel
+
+      --Les coordonnees du coin inferieur droit ou gauche du cadre de zoom en unite reel
+      X2_Float, Y2_Float : Long_Float;     
+     
+      --La Largeur et la longueur en float (evite de devoir faire plusieurs fois la convertion 
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Ecran);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Ecran);
+      --
+
+      Pre_Calcul : Long_Float; --Precalcul d'un partie du calcul
+
+      Croix : Boolean; --Pour savoir si la croix est affiche ou non
+     
+   begin -- Zoom_Souris
+     
+      --Boucle pour pouvoir zoomer ou dezoomer plusieur fois de suite sans taper la commande
+      loop
+
+         --Initialise les flags pour le clavier et la souris
+         Touche := Vide;
+         Clic_Clavier     := False;
+         Clic_Droit       := False;
+         Clic_Gauche      := False;
+         --
+
+         Croix := False; --ne dessine pas la croix
+
+         --Boucle s'executant jusqu'a qu'un clic soit fait ou que la touche ESC soit presses
+         while not Clic_Droit and not Clic_Gauche and not (Clic_Clavier and Touche = Echape) loop
+      
+            Right_Clic(X2, Y2, Clic_Droit);   --Lorsque un clic-droit arrive 
+            Left_Clic(X1, Y1, Clic_Gauche);   --Lorsque un clic-gauche arrive
+            Key_Pressed(Touche, Clic_Clavier); --Lorsque une touche est presse
+            Sleep(10); --Redonne la main au systeme pendant 10ms
+
+         end loop;
+
+   
+         --Si il y a eu la touche ESC presse alors quitte la procedure
+         if Clic_Clavier and Touche = Echape then
+            return;
+         end if;
+      
+         Clic_Clavier := False; --Remet a faux le flag du clavier
+
+         --Si un clic gauche a est effectue
+         if Clic_Gauche then   
+         
+            Clic_Gauche := False; --Remet a faux le flag du clic gauche
+            Spider.Move_To(X1, Y1); --Lit les coordonnees de la souris
+      
+            --Copie des coordonnees de la souris dans XY2
+            X2 := X1;
+            Y2 := Y1;
+
+            --Sauvegarde Les coordonnees XY2
+            X2_Avant := X2;
+            Y2_Avant := Y2;
+      
+            --Attends un autre clic-Gauche
+            while not Clic_Gauche loop
+            
+               Mouse(X2, Y2); --Lit les coordonnees de la souris
+               
+               --Calcul Y2 en fonction de X1 en tenant compte des proportion de la zone de dessin
+               Y2 := Y1 + ((X2-X1) * Hauteur_Ecran  /  Largeur_Ecran); 
+
+               --Si le cadre vient a depasser de l'ecran (impossible a afficher) alors
+               if X2 not in 0..Largeur_Ecran or (-X2 + 2*X1) not in 0..Largeur_Ecran
+               or Y2 not in 0..Hauteur_Ecran or (-Y2 + 2*Y1) not in 0..Hauteur_Ecran then
+
+                  --Remets les coordonnes du passage precedant
+                  Y2 := Y2_Avant;
+                  X2 := X2_Avant;
+                  --
+
+               end if;      
+      
+               --Si le bord superieur est plus bas que la hauteur de la croix + 'Distance_Visible'
+               --et que la croix est affichee alors
+               if Y2 in (Y1 - Distance_Visible)..(Y1 + Distance_Visible) and Croix then
+
+                  Efface_Croix(X1, Y1); --Efface la croix
+                  Croix := False;       --La croix n'est pas affichee
+
+               --Si le bord superieur est plus haut que la hauteur de la croix + 'Distance_Visible'
+               --et que la croix n'est pas affichee alors
+               elsif Y2 not in (Y1 - Distance_Visible)..(Y1 + Distance_Visible) and not Croix then
+
+                  Dessin_Croix(X1, Y1); --Efface la croix
+                  Croix := True;        --La croix est affichee
+
+               end if;
+                   ---------------------------------
+
+               --Dessine une boite : avec le point XY1 au centre
+               Boite((-X2 + 2*X1), (-Y2 + 2*Y1), X2, Y2, Couleur_Cadre);
+               
+               --Si les lignes verticales du cadre ont bougees
+               --par rapport au passage d'avant alors
+               if X2 /= X2_Avant then
+                  
+                  --Efface les lignes verticales au coordonnees d'avant (XY2_Avant)
+                  Ligne_Matrice_Vert((-Y2_Avant + 2*Y1),Y2_Avant, X2_Avant);
+                  Ligne_Matrice_Vert((-Y2_Avant + 2*Y1),Y2_Avant, (-X2_Avant + 2*X1));
+      
+               end if;
+      
+               --Si les lignes horizontales du cadre ont bougees
+               --par rapport au passage d'avant alors
+               if Y2 /= Y2_Avant then
+                  
+                  --Efface les lignes horizontales au coordonnees d'avant (XY2_Avant)
+                  Ligne_Matrice_Hori((-X2_Avant + 2*X1),X2_Avant, Y2_Avant);
+                  Ligne_Matrice_Hori((-X2_Avant + 2*X1),X2_Avant, (-Y2_Avant + 2*Y1));
+      
+               end if;
+      
+               Sleep(10);      --Redonne la main au system pendant 10ms
+               
+               --Sauvegarde les coordonnees courantes
+               X2_Avant := X2; 
+               Y2_Avant := Y2;
+               --
+                  
+               Key_Pressed(Touche, Clic_Clavier); --Lorsqu'une touche est pressee
+
+               --Si la touche ESC est pressee
+               if Clic_Clavier and Touche = Echape then
+   
+
+                  --Efface le cadre
+                  Ligne_Matrice_Hori((-X2 + 2*X1),X2, Y2);
+                  Ligne_Matrice_Hori((-X2 + 2*X1),X2, (-Y2 + 2 * Y1));
+   
+                  Ligne_Matrice_Vert((-Y2 + 2*Y1),Y2, X2);
+                  Ligne_Matrice_Vert((-Y2 + 2*Y1),Y2, (-X2 + 2 * X1));
+                  --
+                  
+                  --Si la croix est presente a l'ecran alors l'efface
+                  if Croix then
+                     Efface_Croix(X1, Y1);
+                  end if;
+
+                  return; --Sort de la procedure
+               end if;
+   
+               Left_Clic(X2, Y2, Clic_Gauche); --Lorsque un clic-gauche arrive
+
+            end loop;
+      
+               --Les coordonnees XY1 sont ajuste au coin superieur droit au gauche
+               X1 := (-X2 + 2 * X1);
+               Y1 := (-Y2 + 2 * Y1);
+         
+               --Si la largeur du cadre est nulle alors reajuste X1
+               if X1 = X2 then 
+                 X1 := X1 + 1;
+               end if;
+   
+               --Si la largeur du cadre est nulle alors reajuste X1
+               if Y1 = Y2 then 
+                 Y1 := Y1 + 1;
+               end if;
+
+        end if;
+   
+            Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+            --Convertie la valeur X2 du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations 
+            X2_Float :=  ( (Long_Float(X2) / Largeur_Zone_Tmp_Float) - 0.5 )   
+                           / Fractal.Zoom   +   Fractal.Centre.X ;
+
+            --Convertie la valeur Y2 du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations 
+            Y2_Float :=  (-2.0 * Long_Float(Y2) + Hauteur_Zone_Tmp_Float)
+                              / Pre_Calcul +  Fractal.Centre.Y; -- de 0 a 1
+
+            --Corrige les valeurs par rapport a l'angle (fractal.angle)
+            Power_Calculator.Change_Angle(X2_Float, Y2_Float, Fractal);
+
+      
+            --Si le bouton droit de la souris a ete presse => dezoom
+            if Clic_Droit then
+               
+               --Ajuste le centre de la fractal a l'endroit clique
+               Fractal.Centre.X := X2_Float;
+               Fractal.Centre.Y := Y2_Float;
+               
+               --Si le nouveau zoom n'est pas inferieur a la limte alors
+               if Fractal.Zoom / Facteur_Zout >= Zoom_Min then
+                  --Calcul le nouveau zoom
+                  Fractal.Zoom := Fractal.Zoom / Facteur_Zout;
+               else --si il depasse la limite
+                  Fractal.Zoom := Zoom_Min; --le remene au zoom minimum
+               end if;
+                          
+            else --sinon (c'est le bouton de gauche qui a ete presse)
+      
+               --Convertie la valeur X2 du point a l'ecran(pixel) en valeur reel sur la fractal
+               --Voir la doc pour plus d'informations 
+               X1_Float :=  ( (Long_Float(X1) / Largeur_Zone_Tmp_Float) - 0.5 )   
+                             / Fractal.Zoom   +   Fractal.Centre.X ;
+
+               --Convertie la valeur Y1 du point a l'ecran(pixel) en valeur reel sur la fractal
+               --Voir la doc pour plus d'informations 
+               Y1_Float :=  (-2.0 * Long_Float(Y1) + Hauteur_Zone_Tmp_Float) 
+                                / Pre_Calcul +  Fractal.Centre.Y;
+
+               --Corrige les valeurs par rapport a l'angle (fractal.angle)
+               Power_Calculator.Change_Angle(X1_Float, Y1_Float, Fractal);
+
+               --Le nouveau zoom est egal au rapport entre la fenetre total est le cadre trace
+               Fractal.Zoom := Fractal.Zoom * abs(Largeur_Zone_Tmp_Float / Long_Float(X2 - X1));
+         
+               --Le centre est egal au centre du cadre
+               Fractal.Centre.X := (X1_Float + X2_Float) / 2.0;
+               Fractal.Centre.Y := (Y1_Float + Y2_Float) / 2.0;
+            end if;
+      
+            Dessiner_Fractal(Fractal); --Dessine la fractale
+
+         end loop;
+   
+   end Zoom_Souris;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Centrer                                                                          --
+   -- But     : Recentrer le point choisi a l'aide de la souris                                  --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In out : * La fractal                                                                     --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Centrer (Fractal : in out Cara_Fractal) is
+      
+      
+      Clic_Clavier : Boolean := False; --Savoir si une touche du clavier a ete presse
+      Clic_Souris  : Boolean := False; --Savoir si il y a eu un clic de souris
+
+      Touche : Character := Vide;      --La touche presse
+
+
+      X, Y ,                         --Coordonnees de la souris (avant le clic)
+      X_Clic, Y_Clic : Natural := 0; --Coordonnees de la souris au moment du clic
+
+      --Sauvegarde des coordonnees de la souris (pour pouvoir effacer la croix)
+      X_Avant, Y_Avant : Natural := 0;
+
+      Pre_Calcul : Long_Float; --Un precalcul
+
+      Centre : T_Centre; --Centre du zoom sans le calcul de l'angle
+
+   begin -- Centrer
+
+      --Boucle s'executant jusqu'a qu'un clic soit fait ou que la touche ESC soit presses
+      while not Clic_Souris  and not (Clic_Clavier and Touche = Echape) loop
+         
+         Mouse(X, Y);        --Lit la position de la souris     
+         Dessin_Croix(X, Y); --Dessine une croix a l'emplacement de la souris
+
+         Key_Pressed(Touche, Clic_Clavier); --Lit si une touche est presse
+       
+         --Dessine une croix au milieu de l'ecran
+         Dessin_Croix(Largeur_Ecran / 2, Hauteur_Ecran / 2); 
+
+         Sleep(10); --Redonne la main au systeme pendant 10ms
+
+         --Si la souris a bougee par rapport a la position precedante alors
+         --efface la croix a la position precedante
+         if X /= X_Avant or Y /= Y_Avant then
+            Efface_Croix(X_Avant, Y_Avant);
+         end if;
+
+         --Sauvegarde la position courante
+         X_Avant := X;
+         Y_Avant := Y;
+
+         --Si un clic est fait => sauvegarde les coordonnees du clic dans X_Clic et Y_Clic
+         --Et Clic_Souris devient vrai (true)
+         Left_Clic(X_Clic, Y_Clic, Clic_Souris);
+
+      end loop;
+
+      --Si la touche ESC du clavier a ete presse alors 
+      if Touche = Echape and Clic_Clavier then
+
+         Efface_Croix(X, Y); --Efface la croix sous la souris
+
+         --Efface la croix au milieu de l'ecran
+         Efface_Croix(Largeur_Ecran / 2, Hauteur_Ecran / 2); 
+
+         return;  --Sort de la procedure
+      end if;
+      
+      Pre_Calcul := (2.0 * Long_Float(Largeur_Ecran)) * Fractal.Zoom;
+
+      --Convertie la valeur x du point a l'ecran(pixel) en valeur reel sur la fractal
+      --Voir la doc pour plus d'informations
+      Centre.X := (Long_Float(X_Clic) / Long_Float(Largeur_Ecran) - 0.5) 
+                  / Fractal.Zoom   +   Fractal.Centre.X;
+
+      --Convertie la valeur y du point a l'ecran(pixel) en valeur reel sur la fractal
+      --Voir la doc pour plus d'informations
+      Centre.Y := (-2.0 * Long_Float(Y_Clic) + Long_Float(Hauteur_Ecran))
+                   / Pre_Calcul +  Fractal.Centre.Y;
+
+      --Corrige les valeurs par rapport a l'angle (fractal.angle)
+      Power_Calculator.Change_Angle(Centre.X, Centre.Y, Fractal);
+
+      Fractal.Centre.X := Centre.X;
+      Fractal.Centre.Y := Centre.Y;
+
+      Dessiner_Fractal(Fractal); --Dessine la fractal a l'ecran
+
+   end Centrer;
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Choix_Mosaic                                                                     --
+   -- But     : Choisir a l'aide la souris la fractal courante                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste des farctals a dessiner en vue du chois de l'utilisateur              --
+   --                                                                                            --
+   --  return : * Le numeros de la fractal                                                       --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Choix_Mosaic (Liste_Fractals : Power_Types.T_Liste_Fractals) return Natural is
+
+---------------a enlever apres---------------
+      --Nb_Fractals_Max : Positive := 200;
+---------------------------------------------
+       use Power_Types;
+       use Power_List;
+
+      --Pour les fonctions avancees sur le type float
+      package Elementary_Functions_Long_Float
+      is new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
+      use Elementary_Functions_Long_Float;
+      --
+   
+      use Spider.User;
+      
+      Nb_Fractals : Natural := 0; --Initialise le nombre de farctals dessine a 0
+     
+      Nb_Case_X : Positive; --Le nombre de colonne
+      Nb_Case_Y : Positive; --Le nombre de ligne
+
+      Largeur_Case : Long_Float; --La largeur des colonnes
+      Hauteur_Case : Long_Float; --la hauteur des lignes
+
+      X, Y : Long_Float := 0.0; --Pour parcourir toute les cases
+
+      Clic_Souris : Boolean := False; --Savoir si le bouton de la souris a ete presse
+      X_Souris, Y_Souris : Natural;   --Les coordonnees de la souris au moment du clic
+      No_Fractal : Positive;          --Le numeros de la fractal selectionne lors du clic
+
+   begin --Choix_Mosaic
+
+      --Calcul le nombre de colonne en fonction du nombre de fractals de la liste
+      Nb_Case_X := Integer(Sqrt(Long_Float(Liste_Fractals.Nb_Fractals))) + 1;
+
+      --Calcul le nombre de ligne en fonction du nombre de frctals de la liste
+      Nb_Case_Y := Integer(Long_Float'Truncation(Sqrt(Long_Float(Liste_Fractals.Nb_Fractals))));
+
+      --Calcul la largeur des colonne                                                                            
+      Largeur_Case := Long_Float(Largeur_Ecran) / Long_Float(Nb_Case_X);
+
+      --calcul la hauteur des lignes
+      Hauteur_Case := Long_Float(Hauteur_Ecran) / Long_Float(Nb_Case_Y);
+
+      --Reinitialise le contenue de la fenetre graphique
+      Spider.Draw.Set_Color_Background(Spider.Draw.Black);
+      Spider.Clear_Window;
+      --
+
+      --Parcour les lignes
+      while Y <= Long_Float(Hauteur_Ecran) - Hauteur_Case / 2.0 loop
+         X:= 0.0;
+
+         --Parcours les colonnes et sort si le nombre de fractal affiche 
+         --correspond au nombre de fractal de la liste
+         while X <= Long_Float(Largeur_Ecran) - Largeur_Case / 2.0 and
+               Nb_Fractals /= Liste_Fractals.Nb_Fractals loop
+
+
+            Nb_Fractals := Nb_Fractals + 1; --incremente le nombre de fractal dessine 
+            --Dessine la fractal a la bonne place
+            Dessiner_Fractal (Fractal_Num(Liste_Fractals,  Nb_Fractals).Fractal ,
+            Integer(X), Integer(Y), Integer(Largeur_Case)-1, Integer(Hauteur_Case)-1);
+            
+            --Affiche en haut a gauche de la case son numeros
+            Spider.Draw.Set_Color_Text(Couleur_Numeros);
+            Spider.Move_To(Integer(X),  Integer(Y));
+            Spider.Draw.Display_Text(Integer'Image(Nb_Fractals));
+  
+           
+            X := X + Largeur_Case; --Increment la valeur x
+
+
+         end loop;
+         Y := Y + Hauteur_Case; --Increment la valeur y
+      end loop;
+
+
+      -------------------------------souris clic-----------------------
+      New_Line;
+      Put_Line(" Choose one of them");
+
+      --Boucle qui se repete si l'utilisateur a clique la ou il n'y avait pas de fractal affiche
+      loop
+         --Attends par une boucle le clic de souris
+         loop
+            
+   
+            Left_Clic(X_Souris, Y_Souris, Clic_Souris); --Si un clic-gauche survient
+            exit when Clic_Souris;    --Sort si un clic-gauche est survenu
+
+             --Redonne la main au system pendant 10 ms (il ne faut pas saturer le proc pour rien)
+            Sleep(10);
+         end loop;
+   
+         --Calcul la colonne cliquee
+         X_Souris := Integer(Long_Float'Truncation(Long_Float(X_Souris * Nb_Case_X)
+                             / Long_Float(Largeur_Ecran))) + 1;
+
+         --Calcul la Ligne cliquee
+         Y_Souris := Integer(Long_Float'Truncation(Long_Float(Y_Souris * Nb_Case_Y)
+                             / Long_Float(Hauteur_Ecran))) + 1;
+   
+         --Calcul le numeros de la case correspondant a la colonne et a la ligne
+         No_Fractal := X_Souris + (Y_Souris - 1) * Nb_Case_X;
+   
+         --Si la case existe alors
+         if No_Fractal <= Liste_Fractals.Nb_Fractals then
+            return No_Fractal;--retourne le numeros de la fractal choisie
+         end if;
+      end loop;
+
+
+   end Choix_Mosaic;
+
+end Power_Tools;
diff --git a/CD/Src/Power_Tools.ads b/CD/Src/Power_Tools.ads
new file mode 100644 (file)
index 0000000..cbf6836
--- /dev/null
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Tools / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour le tracage, le recadrage et le centrage              --
+--           sur la fractal a l'Ecran.                                                        --
+------------------------------------------------------------------------------------------------
+
+with Power_Types;
+use  Power_Types;
+
+package  Power_Tools is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessiner_Fractal                                                                 --
+   -- But     : Dessiner la fracal a l'ecran                                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessiner_Fractal (Fractal : in Cara_Fractal; X, Y : Natural := 0;
+                               Largeur_Zone : Natural := Largeur_Ecran;
+                               Hauteur_Zone : Natural := Hauteur_Ecran);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rafraichir_couleur                                                               --
+   -- But     : Mets a jour les couleur et dessinne la fractal                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Rafraichir_Couleur (Fractal : in Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Zoom_Souris                                                                      --
+   -- But     : Tracer un cadre a la souris pour zoomer                                          --
+   --           et clic-droit pour dezoomer (recentre au coordonnees de la sourris)              --                                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * la fractal sur laquelle zoomer                                                 --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Zoom_Souris(Fractal : in out Cara_Fractal);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Centrer                                                                          --
+   -- But     : Recentrer le point choisi a l'aide de la souris                                  --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In out : * La fractal                                                                     --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Centrer (Fractal : in out Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Choix_Mosaic                                                                     --
+   -- But     : Choisir a l'aide la souris la fractal courante                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste des farctals a dessiner en vue du chois de l'utilisateur              --
+   --                                                                                            --
+   --  return : * Le numeros de la fractal                                                       --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Choix_Mosaic (Liste_Fractals : T_Liste_Fractals) return Natural;
+
+end Power_Tools;
\ No newline at end of file
diff --git a/CD/Src/Power_Types.ads b/CD/Src/Power_Types.ads
new file mode 100644 (file)
index 0000000..34b5181
--- /dev/null
@@ -0,0 +1,157 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Types / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Declaration des types, des constantes et des variables globales                  --
+------------------------------------------------------------------------------------------------
+
+with Ada.Characters.Latin_1;   --Table de caractere LATIN 1
+with Spider.Draw;
+
+
+package Power_Types is
+
+   ------------------------CONSTANTES-----------------------
+
+   Hauteur_Ecran    : constant := 399;  -- Hauteur de la zone de dessin (fenetre spider)
+   Largeur_Ecran    : constant := 639;  -- Largeur de la zone de dessin (fenetre spider)
+   Rayon_Int_Croix  : constant := 2; -- Le rayon interieur de la croix (lors du 'center' et 'zoom') 
+   Rayon_Ext_Croix  : constant := 6;    -- le rayon superieur de la croix
+   Hauteur_Degrade  : constant := 5;    -- la hauteur du degrade de couleur
+   Facteur_Zin      : constant := 4.0;  -- facteur par defaut pour le zoom in
+   Facteur_Zout     : constant := 4.0;  -- facteur par defaut pour le zoom our
+   Zoom_Min         : constant := 0.1;  -- valeur de zoom minimale   
+   Nb_Iteration_Min : constant := 6;    -- Nombre minimum d'iteration
+   Longueur_Max     : constant := 50;   -- Longueur max d'un mot (nom de fichier)
+   Nb_Couleur_Max   : constant := 10;   -- Nombre de couleur maximum
+   Prompt           : constant String := "> ";                        --Le prompt de la console
+   Couleur_Cadre    : constant Spider.Draw.Tcolor := (255, 255, 200); --La couleur du cadre de zoom
+   Couleur_Numeros  : constant Spider.Draw.Tcolor := (255, 255, 200); --La couleur des numeros
+
+
+
+   Echape : constant Character := Ada.Characters.Latin_1.Esc;-- Le caractere ascii de la touche esc
+   Vide   : constant Character := Ada.Characters.Latin_1.Nul;-- Le carcatere ascii vide
+   Espace : constant Character := Ada.Characters.Latin_1.Space;-- Le caractere ascii espace
+
+
+
+   -- Pour les couleurs, de 0 a 255
+   type Byte is mod 256;
+
+   -- Type article pour la couleur
+   type T_Couleur is
+      record
+                -- Les trois couleurs : rouge, bleu, vert
+         R, G, B: Byte;
+      end record;
+   -- La surface de l'image (pixels sur pixels)
+   type T_Matrice_Tampon is array(Natural range <>, Natural range <>) of T_Couleur;
+
+
+
+   --Les types possibles de fractal
+   type T_Ensemble is (Julia, Mandelbrot);
+
+   --Type Contenant les couleurs qui forme le degrade
+   type T_Tab_Couleur is array (Natural range <>) of T_Couleur;
+
+   --Type pour connaitre le point de la fractal qui doit se trouver au milieu de la fenetre
+   type T_Centre is record
+      X : Long_Float := 0.6;
+      Y : Long_Float := 0.0;
+   end record;
+
+   subtype T_Nb_Couleur is Integer range 2 .. Nb_Couleur_Max;
+
+
+   --Type representant toutes les carcateristiques d'un fractal et de son affichage
+   type Cara_Fractal (Ensemble : T_Ensemble := Mandelbrot; Nb_Couleur : T_Nb_Couleur := 4) is
+   record
+      
+      NB_Iteration_Max : Positive   := 50;  -- Nombre d'iteration
+      
+      -- La limit de divergence (voir doc : Que est ce qu'une fractal)
+      C_Diverge_Limite : Long_Float := 4.0; 
+      Zoom    : Long_Float := 1.0 / 4.0;    -- Facteur du zoom a l'affichage
+      
+      -- Le point de la fractal qui sera affiche au centre de l'ecran
+      Centre  : T_Centre   := (-0.6, 0.0);  
+      Angle   : Long_Float := 0.0;          -- Angle de la fractal
+
+      --Les couleurs de la fractal (4 couleurs)
+      Couleur : T_Tab_Couleur(1 .. Nb_Couleur) := ((255,0,0), (0,255,0), (0,0,255), (255,255,0) );   
+
+      Antialiasing : Boolean := False;    -- Si l'antialiasing doit etre applique
+      Dessine_Degrade : Boolean := False; -- Si la palette de couleur doit etre dessinee
+
+      --Suivant l'ensemble
+      case Ensemble is
+         when Julia => --pour l'ensemble julia il faut encore definir une constant c
+            Cx : Long_Float := -0.577;
+            Cy : Long_Float := 0.468;
+
+         when Mandelbrot => --Pas besoin d'infos supplementaires pour l'ensemble de mandelbrot
+            null;
+      end case;
+   end record;
+
+
+   --Type matrice 2D contant la fractal sous forme de nombre dnatural'iteration
+   type T_Matrice_Iteration is array (Integer range <>, Integer range <>) of Natural;
+
+   --Contient une matrice pour la fractal avec antialiasing (4 X plus grande) et une sans
+   type T_Matrice_Iteration_2 (Antialiasing : Boolean := False) is
+      record
+      
+      case Antialiasing is
+         when False =>
+            Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Ecran, 0..Hauteur_Ecran);
+         when True =>
+
+            --La taille de la matrice est le quadruple de l'affichage
+            Matrice_Iteration_Anti : T_Matrice_Iteration
+            (0..Largeur_Ecran * 2 + 1, 0..Hauteur_Ecran * 2 + 1);
+
+         end case;
+      end record;
+
+   type T_Fractal;
+
+   --Lien vers le prochain element de la liste
+   type T_Lien is access T_Fractal;
+   
+   --Le type des cellule
+   type T_Fractal is 
+      record
+         Fractal : Cara_Fractal;
+         Suiv    : T_Lien; --Pointe vers l'element suivant
+      end record;
+
+   --Le type de la liste dynamique
+   type T_Liste_Fractals is
+      record
+         Tete : T_Lien := null; --pointe sur le premier element
+         Nb_Fractals : Natural := 0; --le nombre de fractals que contient la liste
+      end record;
+
+
+   -- Fractal avec valeur par defaut pour Mandelbrot et Julia
+   Fractal_Initial_Julia  : constant Cara_Fractal :=
+   (Julia, 4, 50, 4.0, 1.0/4.0,(0.0, 0.0), 0.0,
+   ((255,50,50), (200,254,120), (123,78,100), (0,23,100) ), False, False, -0.577, 0.468);
+
+   Fractal_Initial_Mandel : constant Cara_Fractal := 
+   (Mandelbrot, 4, 50, 4.0, 1.0/4.0,(-0.6, 0.0), 0.0, 
+   ((100,100,255), (120,230,255), (123,78,100), (0,23,100) ), False, False);
+
+   -------------------------VARIABLES-----------------------
+   --La matrice global contant la fractal qui est qui va etre affiche a l'ecran
+   Matrice_Iteration_Global : T_Matrice_Iteration_2;
+
+   --Le tampon contant la fractal en mode RGB, utilise pour rafraichir le dessin a l'ecran
+   --par exemple lors du tracage du cadre de zoom
+   Matrice_Tampon_Ecran : T_Matrice_Tampon (0 .. Largeur_Ecran, 0 .. Hauteur_Ecran);
+
+end Power_Types;
diff --git a/CD/Src/Power_calculator.adb b/CD/Src/Power_calculator.adb
new file mode 100644 (file)
index 0000000..c8998cb
--- /dev/null
@@ -0,0 +1,309 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Calculator / fait partie du programme Power Fractal                        --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de calculs des fractals ainsi que de l'antialiasing                       --
+------------------------------------------------------------------------------------------------
+
+with Ada.Numerics; use Ada.Numerics; 
+with Ada.Numerics.Generic_Elementary_Functions; --Fonctions mathematiques avancees
+
+package body Power_Calculator is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Calcul_Antialiasing                                                              --
+   -- But     : Contracter une matrice en une autre 4 fois plus petite                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : La matrice a antialiasinger                                                      --
+   --                                                                                            --
+   --  return : La matrice traitee                                                               --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Tampon) return T_Matrice_Tampon is
+
+      X, Y : Natural; --Variables pour le parcours de la matrice
+
+      --La matrice de retour, qui est evidement 2 fois plus petite que celle en entrer
+      Matrice_Retour : T_Matrice_Tampon ( 0..(Matrice_Antialiasing'Last(1) - 1) / 2,
+                                          0..(Matrice_Antialiasing'Last(2) - 1) / 2 );   
+   begin --Calcul_Antialiasing  
+       
+         X := 0; 
+         --Parcours toutes les colonnes impaires
+         while X <= Matrice_Antialiasing'Last(1) - 1 loop
+            Y:=0;
+            --Parcours toutes les lignes impaires
+            while Y <= Matrice_Antialiasing'Last(2) - 1 loop
+      
+               --Fait la moyenne de quatre points pour n'en former qu'un seul
+               Matrice_Retour(X/2, Y/2).R := Byte ((Integer(Matrice_Antialiasing(X, Y).R)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).R)
+                                                  + Integer(Matrice_Antialiasing(X, Y + 1).R)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).R))
+                                                  / 4);
+
+               Matrice_Retour(X/2, Y/2).G := Byte ((Integer(Matrice_Antialiasing(X, Y).G)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).G)
+                                                  + Integer(Matrice_Antialiasing(X,Y + 1).G)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).G))
+                                                  / 4);
+
+               Matrice_Retour(X/2, Y/2).B := Byte ((Integer(Matrice_Antialiasing(X, Y).B)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).B)
+                                                  + Integer(Matrice_Antialiasing(X, Y + 1).B)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).B))
+                                                  / 4);
+               Y:=Y+2;
+            end loop;
+
+            X:=X+2;
+         end loop;
+
+      return Matrice_Retour; --retourne la matrice quatre fois plus petite
+   end;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Change_Angle                                                                     --
+   -- But     : Changer l'angle d'un nombre complexe par rapport au centre de l'ecran            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal,                                                                    --
+   --                                                                                            --
+   --  In out : * Partie reel du nb complexe       : A                                           --
+   --           * Partie imaginaire du nb complexe : B                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Change_Angle (A, B : in out Long_Float; Fractal : Cara_Fractal) is
+
+      Rayon : Long_Float; --Le rayon du nombre complexe
+      Phi   : Long_Float; --Le nouvel angle calcule
+
+      --L'angle en parametre est converti en radian
+      Angle_Rad : Long_Float := Pi * Fractal.Angle / 180.0;
+
+      --Pour pouvoir faire des operations (sin cos etc..) sur des Long_Float
+      package Elementary_Functions_Long_Float
+      is new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
+      use Elementary_Functions_Long_Float; 
+
+   begin
+      
+         --Ramene l'origine du nombre complexe au centre de l'ecran
+         A := A - Fractal.Centre.X;
+         B := B - Fractal.Centre.Y;
+         --
+      --Pour eviter la division par zero
+      if A /= 0.0 then
+
+         --Si 'A' est negatif => (l'angle est compris entre : 90 < angle < -90)
+         if A < 0.0  then
+            --Calcul de l'angle en additionnant a l'angle de base l'angle que l'on veut
+            Phi := Arctan( B / A ) + Angle_Rad + Pi;
+         else
+            Phi := Arctan( B / A ) + Angle_Rad;
+            --
+         end if;
+
+      else
+         
+         --si l'angle est compris entre : 180 < angle < 360 alors
+         if B < 0.0 then          
+            --Calcul de l'angle en additionnant a Pi/2.0 l'angle que l'on veut
+            Phi := Pi / 2.0 + Angle_Rad + Pi;
+         else
+            Phi := Pi / 2.0 + Angle_Rad;
+            --
+         end if;
+
+      end if;   
+
+         Rayon := Sqrt( A**2 + B**2 ); --Calcul le rayon (module)
+         A     := Rayon * Cos( Phi );  --Calcul la partie reel
+         B     := Rayon * Sin( Phi );  --Calcul la partie imaginaire
+
+         --Ramene l'origine du nombre comples au centre (0,0)
+         A := A + Fractal.Centre.X;
+         B := B + Fractal.Centre.Y;
+         --
+
+   end Change_Angle;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Mandel_Gen                                                                       --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Mandelbrot                   --
+   --               Z(n+1) = Z(n)^2 + Z(o)                                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_Zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                        return T_Matrice_Iteration is
+
+      ------Nombre complexe : Z = A + Bj------
+
+      A,B,  -- La valeur reel et imaginaire courante lors du calcul Z en fonction de n : Z(n)
+      Ao,Bo,-- la valeur reel et imaginaire du point en cours de traitement            : Z(o)
+
+      Temp : Long_Float; --Une variable temporaire
+      Nb_Iteration : Natural; --Pour compter le nombre d'iteration
+
+      --La matrice est cree et retournee
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+
+      --la hauteur et la largeur en long float
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      --Variable precalculee pour ne pas avoir a la calculer a chaque iteration 
+      Pre_Calcul : Long_Float; 
+
+   begin -- Mandel_Gen
+
+      Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+      --Parcours toute la dimension X de l'affichage (pixel)
+      for X in 0..Largeur_Zone loop
+
+         --Parcours toute la dimension Y de l'affichage (pixel)
+         for Y in 0..Hauteur_Zone loop  
+          
+            --Convertie la valeur x du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations
+            Ao := ((Long_Float(X) / Largeur_Zone_Tmp_Float) - 0.5 ) / 
+                     Fractal.Zoom + Fractal.Centre.X ;
+
+            --Convertie la valeur y du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations            
+            Bo := (-2.0 * Long_Float(Y) + Hauteur_Zone_Tmp_Float) / Pre_Calcul + Fractal.Centre.Y;
+           
+            Change_Angle(Ao, Bo, Fractal);
+            
+            Nb_Iteration := 0; --Initialise le compteur d'iteration a 0
+
+            --initialise le nombre complexe avec Z(o)
+            A:=Ao;             
+            B:=Bo;            
+            --
+   
+            --Boucle calculant la divergence d'un point du plan
+            loop
+
+               --Calcul effectue sur le nombre complexe : Z(n+1)   = Z(n)^2     +    Z(o)
+               --Nos variables                            A + Bj   = (A + Bj)^2 + (Ao + Boj) 
+               Temp := A**2 - B**2 + Ao;
+               B := 2.0 * A * B + Bo;
+               A := Temp;            
+               --
+
+               --Le compteur d'iteration est incemente
+               Nb_Iteration := Integer'Succ(Nb_Iteration);   
+         
+               --Sort si le nombre maximale d'iteration a ete atteind
+               --ou si le module du nb complexe a dapasse la limite de divergence.
+               --Astuce : la limite represente en fait le carre du module,
+               --ce qui permet de faire moins de calculs 
+               exit when Nb_Iteration = Fractal.NB_Iteration_Max or else (A**2 + B**2)
+                                        > Fractal.C_Diverge_Limite ;      
+            end loop;
+            
+            --Enregistre le point calcule dans la matrice d'iteration (Global)
+            Matrice_Retour(X,Y) := Nb_Iteration;
+   
+         end loop;
+      end loop;
+
+      return Matrice_Retour; --Retourne la matrice
+
+   end Mandel_Gen;  
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Julia_Gen                                                                        --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Julia                        --
+   --               Z(n+1) = Z(n)^2 + c              'c' etant une constante arbitraire          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal) 
+                       return T_Matrice_Iteration is
+   
+      A, B,  -- La valeur reel et imaginaire courante lors du calcul Z en fonction de n     : Z(n)
+
+      Temp : Long_Float; --Une variable temporaire
+      Nb_Iteration : Natural; --Pour compter le nombre d'iteration
+
+      --La matrice est cree et retournee
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+
+      --la hauteur et la largeur en long float
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      --Variable precalculee pour ne pas avoir a la calculer a chaque iteration 
+      Pre_Calcul : Long_Float; 
+
+   begin -- Julia_Gen
+
+      Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+      --Parcours toute la dimension X de l'affichage (pixel)
+      for X in 0..Largeur_Zone loop 
+      
+         --Parcours toute la dimension Y de l'affichage (pixel)
+         for Y in 0..Hauteur_Zone loop
+
+            --Convertie la valeur X du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations           
+            A := ( (Long_Float(X) / Largeur_Zone_Tmp_Float) - 0.5 ) /
+                   Fractal.Zoom   +   Fractal.Centre.X ;
+
+            --Convertie la valeur Y du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations
+            B := ( -2.0 * Long_Float(Y) + Hauteur_Zone_Tmp_Float) / Pre_Calcul + Fractal.Centre.Y;
+
+            Change_Angle(A, B, Fractal); --Change l'angle de la fractal
+
+            Nb_Iteration := 0; --Initialise le compteur d'iteration a 0    
+    
+            --Boucle calculant la divergence d'un point du plan
+            loop
+
+               --Calcul effectue sur le nombre complexe : Z(n+1)   = Z(n)^2     +    c
+               --Nos variables                            A + Bj   = (A + Bj)^2 + (c.x + c.yj) 
+               Temp := A**2 - B**2 + Fractal.Cx;
+               B := 2.0 * A * B + Fractal.Cy;
+               A := Temp;
+               --
+
+               --Le compteur d'iteration est incemente
+               Nb_Iteration := Integer'Succ(Nb_Iteration);
+
+               --Sort si le nombre maximale d'iteration a ete atteind
+               --ou si le module du nb complexe a dapasse la limite de divergence.
+               --Astuce : la limite represente en fait le carre du module,
+               --ce qui permet de faire moins de calculs 
+               exit when Nb_Iteration = Fractal.NB_Iteration_Max or else (A**2 + B**2)
+                                        > Fractal.C_Diverge_Limite ;
+         
+            end loop;
+   
+            --Enregistre le point calcule dans la matrice d'iteration (Global)
+            Matrice_Retour(X,Y) := Nb_Iteration;
+   
+         end loop;
+      end loop;
+
+      return Matrice_Retour;--Retourne la matrice
+   
+   end Julia_Gen;  
+end Power_Calculator;
diff --git a/CD/Src/Power_calculator.ads b/CD/Src/Power_calculator.ads
new file mode 100644 (file)
index 0000000..64d4a98
--- /dev/null
@@ -0,0 +1,63 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Calculator / fait partie du programme Power Fractal                        --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de calculs des fractals ainsi que de l'antialiasing                       --
+------------------------------------------------------------------------------------------------
+with Power_Types; use Power_Types; --Pour les types, les constantes et les variables globales
+
+package Power_Calculator is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Calcul_Antialiasing                                                              --
+   -- But     : Contracter une matrice en une autre 4 fois plus petite                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : La matrice a antialiasinger                                                      --
+   --                                                                                            --
+   --  return : La matrice traitee                                                               --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Tampon) return  T_Matrice_Tampon;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Change_Angle                                                                     --
+   -- But     : Changer l'angle d'un nombre complexe par rapport au centre de l'ecran            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal,                                                                    --
+   --                                                                                            --
+   --  In out : * Partie reel du nb complexe       : A                                           --
+   --           * Partie imaginaire du nb complexe : B                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Change_Angle (A, B : in out Long_Float; Fractal : Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Mandel_Gen                                                                       --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Mandelbrot                   --
+   --               Z(n+1) = Z(n)^2 + Z(o)                                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                        return T_Matrice_Iteration;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Julia_Gen                                                                        --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Julia                        --
+   --               Z(n+1) = Z(n)^2 + c              'c' etant une constante arbitraire          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                       return T_Matrice_Iteration;
+
+end Power_Calculator;
\ No newline at end of file
diff --git a/CD/Src/Spider - Graphic Library/Ads/Draw.adb b/CD/Src/Spider - Graphic Library/Ads/Draw.adb
new file mode 100644 (file)
index 0000000..258ef3a
--- /dev/null
@@ -0,0 +1,271 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Draw.adb                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions graphiques       --
+--                      permettant de:                                      --
+--                      - gerer la couleur sous Spider                      --
+--                      - dessiner des cercles                              --
+--                      - dessiner des rectangles                           --
+--                      - changer la couleur d'un pixel                     --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider.Draw is
+
+
+
+  procedure ADA_Get_Color_Pen(R : out Integer;
+                              G : out Integer;
+                              B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Pen,"ADA_getColorPen");
+  
+  function Get_Color_Pen return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Pen(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Pen;
+
+
+
+  procedure ADA_Get_Color_Background(R : out Integer;
+                                     G : out Integer;
+                                     B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Background,"ADA_getColorBackground");
+
+  function Get_Color_Background return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Background(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Background;
+
+
+
+  procedure ADA_Get_Color_Text(R : out Integer;
+                               G : out Integer;
+                               B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Text,"ADA_getColorText");
+
+  function Get_Color_Text return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Text(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Text;
+
+
+
+  procedure ADA_Get_Width_Char(Width_Car : out Natural;
+                               Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Width_Char,"ADA_getWidthChar");
+
+  function Get_Width_Char return Natural is
+     Width_Car : Natural;
+     Err       : Natural;
+  begin
+    ADA_Get_Width_Char(Width_Car,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return Width_Car;
+  end Get_Width_Char;
+
+
+  
+  procedure ADA_Get_Height_Char(HeightCar : out Natural;
+                                Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Height_Char,"ADA_getHeightChar");
+
+  function Get_Height_Char return Natural is
+    HeightCar : Natural;
+    Err       : Natural;
+  begin
+    ADA_Get_Height_Char(HeightCar,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return HeightCar;
+  end Get_Height_Char;
+
+
+
+  procedure ADA_Set_Color_Pen(R : in Integer;
+                              G : in Integer;
+                              B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Pen,"ADA_setColorPen");
+
+  procedure Set_Color_Pen(Color : in tColor) is
+  begin
+    ADA_Set_Color_Pen(Color.R,Color.G,Color.B);
+  end Set_Color_Pen;        
+
+
+
+  procedure ADA_Set_Color_Background(R : in Integer;
+                                     G : in Integer;
+                                     B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Background,"ADA_setColorBackground");
+
+  procedure Set_Color_Background(Color : in tColor) is
+  begin
+    ADA_Set_Color_Background(Color.R,Color.G,Color.B);
+  end Set_Color_Background;
+
+
+
+  procedure ADA_Set_Color_Text(R : in Integer;
+                               G : in Integer;
+                               B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Text,"ADA_setColorText");
+
+  procedure Set_Color_Text(Color : in tColor) is
+  begin
+    ADA_Set_Color_Text(Color.G,Color.G,Color.B);
+  end Set_Color_Text;
+
+
+
+  procedure ADA_Display_Text(Text : in  String;
+                             Err  : out Natural);
+
+  pragma import(DLL,ADA_Display_Text,"ADA_displayText");
+
+  procedure Display_Text(Text : in String) is
+    ADA_Text : String := Text & Character'Val(0);
+    Err : Natural;
+  begin
+    ADA_Display_Text(ADA_Text,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Display_Text;
+
+
+  
+  procedure ADA_Circle(Radius : in  Natural;
+                       Filled : in  Natural;
+                       Err    : out Natural);
+
+  pragma import(DLL,ADA_Circle,"ADA_circle");
+
+  procedure Circle(Radius : in Natural;
+                   Filled : in tFill) is
+      ADA_filled : Natural;
+      Err        : Natural;
+  begin
+    if Filled=Fill then
+      ADA_filled := 0;
+    else
+      ADA_filled := 1;
+    end if;
+
+    ADA_Circle(Radius,ADA_Filled,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Circle;
+
+
+
+  procedure ADA_Box(Width  : in  Integer;
+                    Height : in  Integer;
+                    Filled : in  Natural;
+                    Err    : out Natural);
+
+  pragma import(DLL,ADA_Box,"ADA_box");
+
+  procedure Box(Width  : in Integer;
+                Height : in Integer;
+                Filled : in tFill) is
+     ADA_filled : Natural;
+     Err        : Natural;
+  begin
+    if Filled=Fill then
+      ADA_filled := 0;
+    else
+      ADA_filled := 1;
+    end if;
+
+    ADA_Box(Width,Height,ADA_Filled,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Box;
+
+
+
+  procedure ADA_Put_Pixel(Err : out Natural);
+
+  pragma import(DLL,ADA_Put_Pixel,"ADA_putPixel");
+
+  procedure Put_Pixel is
+      Err : Natural;
+  begin
+    ADA_Put_Pixel(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Put_Pixel;
+
+
+
+  procedure ADA_Get_Pixel(Couleur_R : out Natural;
+                          Couleur_G : out Natural;
+                          Couleur_B : out Natural;
+                          Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Pixel,"ADA_getPixel");
+
+  function Get_Pixel return tColor is
+    Couleur_R : Natural;
+    Couleur_G : Natural;
+    Couleur_B : Natural;  
+    Err       : Natural;
+  begin
+    ADA_Get_Pixel(Couleur_R,Couleur_G,Couleur_B,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return tColor'(Couleur_R,Couleur_G,Couleur_B);
+
+  end Get_Pixel;
+
+
+
+end Spider.Draw;
+
+
+
diff --git a/CD/Src/Spider - Graphic Library/Ads/Draw.ads b/CD/Src/Spider - Graphic Library/Ads/Draw.ads
new file mode 100644 (file)
index 0000000..135b35c
--- /dev/null
@@ -0,0 +1,271 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Draw.ads                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions graphiques       --
+--                      permettant de:                                      --
+--                      - gerer la couleur sous Spider                      --
+--                      - dessiner des cercles                              --
+--                      - dessiner des rectangles                           --
+--                      - changer la couleur d'un pixel                     --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider.Draw is
+
+
+
+  -- Type de remplissage pour les formes.
+  type tFill is (fill, noFill);
+
+  -- Type pour les couleur.
+  type tColor is record
+                    R : Integer;
+                    G : Integer;
+                    B : Integer;
+                  end record;
+
+  black        : constant tColor := (  0,  0,  0);
+  blue         : constant tColor := (  0,  0,255);
+  green        : constant tColor := (  0,255,  0);
+  cyan         : constant tColor := (  0,255,255);
+  red          : constant tColor := (255,  0,  0);
+  magenta      : constant tColor := (255,  0,255);
+  brown        : constant tColor := (128, 64,  0);
+  lightGray    : constant tColor := (192,192,192);
+  darkGray     : constant tColor := (128,128,128);
+  lightBlue    : constant tColor := (128,128,255);
+  lightGreen   : constant tColor := (128,255,128);
+  lightCyan    : constant tColor := (128,255,255);
+  lightRed     : constant tColor := (255,128,128);
+  lightMagenta : constant tColor := (255,128,255);
+  yellow       : constant tColor := (255,255,  0);
+  white        : constant tColor := (255,255,255);
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorPen                                                  --
+  --                                                                        --
+  -- But     : Indique la couleur utilisee pour les dessins.                --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur utilisee.                                       --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Pen return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorBackground                                           --
+  --                                                                        --
+  -- But     : Indique la couleur de l'arriere plan.                        --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur de l'arriere plan.                              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Background return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorText                                                 --
+  --                                                                        --
+  -- But     : Indique la couleur du texte.                                 --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur du texte.                                       --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Text return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getWidthChar                                                 --
+  --                                                                        --
+  -- But     : Indique la largeur max en pixel des caracteres de la font    --
+  --           utilisee.                                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la largeur max                                             --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Width_Char return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getHeightChar                                                --
+  --                                                                        --
+  -- But     : Indique la hauteur max en pixel des caracteres de la font    --
+  --           utilisee.                                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la hauteur max                                             --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Height_Char return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorPen                                                  --
+  --                                                                        --
+  -- But     : Defini la couleur pour les dessins.                          --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Pen(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorBackground                                           --
+  --                                                                        --
+  -- But     : Defini la couleur de l'arriere plan.                         --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Background(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorText                                                 --
+  --                                                                        --
+  -- But     : Defini la couleur du texte.                                  --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Text(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : displayText                                                  --
+  --                                                                        --
+  -- But     : Affiche un texte dans la fenetre graphique a partir de la    --
+  --           position courante.                                           --
+  --                                                                        --
+  -- Entrees : - text: chaine de caracteres a afficher                      --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Display_Text(Text : in String);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : circle                                                       --
+  --                                                                        --
+  -- But     : Dessine un cercle dans la fenetre graphique dont le centre   --
+  --           est a la position courante.                                  --
+  --                                                                        --
+  -- Entrees : - radius : Rayon du cercle                                   --
+  --           - filled : Indique si il est plein ou si il n'y a que le     --
+  --                      contour                                           --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Circle(Radius : in Natural;
+                   Filled : in tFill);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : box                                                          --
+  --                                                                        --
+  -- But     : Dessine un rectangle dans la fenetre graphique dont le coin  --
+  --           superieur gauche est a la position courante.                 --
+  --                                                                        --
+  -- Entrees : - width  : Longueur du rectangle                             --
+  --           - height : Largeur du rectangle                              --
+  --           - filled : Indique si il est plein ou si il n'y a que le     --
+  --                      contour                                           --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Box(Width  : in Integer;
+                Height : in Integer;
+                Filled : in tFill);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : putPixel                                                     --
+  --                                                                        --
+  -- But     :                                                              --
+  --                                                                        --
+  -- Entrees : - Dessine un point dans la fenetre graphique a la position   --
+  --             courante.                                                  --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Put_Pixel;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getPixel                                                     --
+  --                                                                        --
+  -- But     : Indique la couleur du point dans la fenetre graphique a la   --
+  --           position courante.                                           --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur du pixel                                        --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Pixel return tColor;
+
+
+
+end Spider.Draw;
diff --git a/CD/Src/Spider - Graphic Library/Ads/Spider.adb b/CD/Src/Spider - Graphic Library/Ads/Spider.adb
new file mode 100644 (file)
index 0000000..3401ddf
--- /dev/null
@@ -0,0 +1,180 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Spider.adb                                          --
+--                                                                          --
+--  Auteur(s)         : Livio Righetti                                      --
+--                                                                          --
+--  Date de creation  : 26-MARS-97                                          --
+--                                                                          --
+--  But               : Mettre a disposition des fonctions graphiques       --
+--                      minimales.                                          --
+--                                                                          --
+--  Date de modif.    : 18-SEPT-97 (G.corbaz)                               --
+--  Raison            : Utilisation du paquetage Adagraph                   --
+--                                                                          --
+--  Date de modif.    : 7-AVRIL-99 (P.Girardet)                             --
+--  Raison            : Pour creer une librairie                            --
+--                                                                          --
+--  Date de modif.    : 28 avril 2000 (SALAMIN Michel)                      --
+--  Raison            : Suppression de AdaGraph et utilisation d'une DLL    --
+--                      faisant des appels directs aux API de Windows.      --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider is
+
+
+
+  procedure Traiter_Erreur(Valeur : in Natural) is
+  begin
+    case Valeur is
+      when 1      => raise Fenetre_Non_Init;
+      when 2      => raise Fenetre_Deja_Init;
+      when 3      => raise Pixel_Invalid;
+      when others => raise Erreur_Inconnue;
+    end case;
+  end Traiter_Erreur;
+
+
+
+  function ADA_Get_Max_X return Natural;
+  
+  pragma import(DLL,ADA_Get_Max_X,"ADA_getMaxX");
+  
+  function Get_Max_X return Natural is
+  begin
+    return ADA_Get_Max_X;
+  end Get_Max_X;
+
+
+
+  function ADA_Get_Max_Y return Natural;
+  
+  pragma import(DLL,ADA_Get_Max_Y,"ADA_getMaxY");
+  
+  function Get_Max_Y return Natural is
+  begin
+    return ADA_Get_Max_Y;
+  end Get_Max_Y;
+
+
+
+  procedure ADA_Move_To(X : in Natural;
+                        Y : in Natural);
+
+  pragma import(DLL,ADA_Move_To,"ADA_moveTo");
+  
+  procedure Move_To(X : in Natural;Y : in Natural) is
+  begin
+    ADA_Move_To(X,Y);
+  end Move_To;
+
+
+
+  procedure ADA_Move(DX : in Integer;
+                     DY : in Integer);
+
+  pragma import(DLL,ADA_Move,"ADA_move");
+
+  procedure Move(DX : in Integer;DY : in Integer) is
+  begin
+    ADA_Move(DX,DY);
+  end Move;
+
+
+
+  procedure ADA_Line_To(X1  : in  Natural;
+                        Y1  : in  Natural;
+                        X2  : in  Natural;
+                        Y2  : in  Natural;
+                        Err : out Natural);
+
+  pragma import(DLL,ADA_Line_To,"ADA_lineTo");
+  
+  procedure Line_To(X1 : in Natural;
+                    Y1 : in Natural;
+                    X2 : in Natural;
+                    Y2 : in Natural) is
+    Err : Integer;
+  begin
+    ADA_Line_To(X1,Y1,X2,Y2,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Line_To;
+
+
+
+  procedure ADA_Line(DX  : in  Integer;
+                     DY  : in  Integer;
+                     ERR : out Natural);
+
+  pragma import(DLL,ADA_Line,"ADA_line");
+
+  procedure Line(DX : in Integer;
+                 DY : in Integer) is
+    Err : Integer;
+  begin
+    ADA_Line(DX,DY,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Line;
+
+
+
+  procedure ADA_Clear_Window(Err : out Natural);
+
+  pragma import(DLL,ADA_Clear_Window,"ADA_clearWindow");
+
+  procedure Clear_Window is
+    Err : Integer;
+  begin
+    ADA_Clear_Window(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Clear_Window;
+
+
+
+  procedure ADA_Init_Window(Title : in  String;
+                            Err   : out Natural);
+
+  pragma import(DLL,ADA_Init_Window,"ADA_initWindow");
+
+  procedure Init_Window(Title : in String) is
+    ADA_Title : String := Title & Character'Val(0);
+    Err : Integer;
+  begin
+    ADA_Init_Window(ADA_Title,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Init_Window;
+
+
+
+  procedure ADA_Close_Window(Err : out Natural);
+
+  pragma import(DLL,ADA_Close_Window,"ADA_closeWindow");
+
+  procedure Close_Window is
+    Err : Integer;
+  begin
+    ADA_Close_Window(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Close_Window;
+
+
+
+end Spider;
diff --git a/CD/Src/Spider - Graphic Library/Ads/Spider.ads b/CD/Src/Spider - Graphic Library/Ads/Spider.ads
new file mode 100644 (file)
index 0000000..ec5f086
--- /dev/null
@@ -0,0 +1,195 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Spider.ads                                          --
+--                                                                          --
+--  Auteur(s)         : Livio Righetti                                      --
+--                                                                          --
+--  Date de creation  : 26-MARS-97                                          --
+--                                                                          --
+--  But               : Mettre a disposition des fonctions graphiques       --
+--                      minimales.                                          --
+--                                                                          --
+--  Date de modif.    : 18-SEPT-97 (G.corbaz)                               --
+--  Raison            : Utilisation du paquetage Adagraph                   --
+--                                                                          --
+--  Date de modif.    : 7-AVRIL-99 (P.Girardet)                             --
+--  Raison            : Pour creer une librairie                            --
+--                                                                          --
+--  Date de modif.    : 28 avril 2000 (SALAMIN Michel)                      --
+--  Raison            : Suppression de AdaGraph et utilisation d'une DLL    --
+--                      faisant des appels directs aux API de Windows.      --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider is
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getMaxX                                                      --
+  --                                                                        --
+  -- But     : Retourne la taille maximale de l'ecran graphique en X.       --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - La taille maximale de l'ecran graphique en X.              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Max_X return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getMaxY                                                      --
+  --                                                                        --
+  -- But     : Retourne la taille maximale de l'ecran graphique en Y.       --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - La taille maximale de l'ecran graphique en Y.              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Max_Y return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : moveTo                                                       --
+  --                                                                        --
+  -- But     : Placer le curseur a une position (absolue) de l'ecran.       --
+  --                                                                        --
+  -- Entrees : - X : Nouvel position (absolue) du point en X dans l'ecran.  --
+  --           - Y : Nouvel position (absolue) du point en Y dans l'ecran.  --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Move_To(X : in Natural;
+                    Y : in Natural);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : move                                                         --
+  --                                                                        --
+  -- But     : Placer le curseur a une position en specifiant le            --
+  --           deplacement.                                                 --
+  --                                                                        --
+  -- Entrees : - DX : deplacement reltatif en X dans l'ecran.               --
+  --           - DY : deplacement reltatif en Y dans l'ecran.               --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Move(DX : in Integer;
+                 DY : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : lineTo                                                       --
+  --                                                                        --
+  -- But     : Dessiner une ligne du point(X1,Y1) au point (X2,Y2).         --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) initiale du seg. en X dans l'ecran. --
+  --           - Y1: Position (absolue) initiale du seg. en Y dans l'ecran. --
+  --         : - X2: Position (absolue) finale du segment en X dans l'ecran.--
+  --           - Y2: Position (absolue) finale du segment en Y dans l'ecran.--
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Line_To(X1 : in Natural;
+                    Y1 : in Natural;
+                    X2 : in Natural;
+                    Y2 : in Natural);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : line                                                         --
+  --                                                                        --
+  -- But     : Dessiner une ligne de la position courante du curseur au     --
+  --           point specifie en connaissant le deplacement DX,DY.          --
+  --                                                                        --
+  -- Entrees : - DX : deplacement relatif en X dans l'ecran.                --
+  --           - DY : deplacement relatif en Y dans l'ecran.                --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Line(DX : in Integer;
+                 DY : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : clearWindow                                                  --
+  --                                                                        --
+  -- But     : Efface l'ecran graphique.                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Clear_Window;
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : initWindow                                                   --
+  --                                                                        --
+  -- But     : Ouvre la fenetre graphique de l'application.                 --
+  --                                                                        --
+  -- Entrees : - Le titre de la fenetre (apparait dans la barre de titre)   --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Init_Window(Title : in String);
+  
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : closeWindow                                                  --
+  --                                                                        --
+  -- But     : ferme la fenetre graphique.                                  --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Close_Window;
+
+
+
+  Fenetre_Non_Init  : exception;
+  Fenetre_Deja_Init : exception;
+  Pixel_Invalid     : exception;
+  Erreur_Inconnue   : exception;
+
+
+
+private
+
+  procedure Traiter_Erreur(Valeur : in Natural);
+
+end Spider;
diff --git a/CD/Src/Spider - Graphic Library/Ads/User.adb b/CD/Src/Spider - Graphic Library/Ads/User.adb
new file mode 100644 (file)
index 0000000..42cb3ec
--- /dev/null
@@ -0,0 +1,154 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : User.adb                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions permettant de:   --
+--                      - gerer la souris dans la fenetre graphique         --
+--                      - gerer le clavier lorsque la fenetre graphique     --
+--                        est active                                        --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider.User is
+
+
+
+  procedure ADA_Delay_Time(Delay_Time : in Integer);
+  
+  pragma import(DLL,ADA_Delay_Time,"ADA_delay");
+  
+  procedure Sleep(Delay_Time : in Integer) is
+  begin
+    ADA_Delay_Time(Delay_Time);
+  end Sleep;
+
+
+
+  procedure ADA_keyPressed(Key  : out Integer;
+                           Item : out Character;
+                           Err  : out Natural);
+
+  pragma import(DLL,ADA_keyPressed,"ADA_keyPressed");
+
+  procedure key_Pressed(Item : out Character;
+                        Key  : out Boolean) is
+      ADA_Key : Integer;
+      Err     : Integer;
+  begin
+    ADA_keyPressed(ADA_Key,Item,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+    
+    if ADA_Key = 0 then
+      Key := false;
+    else
+      Key := true;
+    end if;
+  end key_Pressed;
+
+
+
+
+  procedure ADA_beep;
+
+  pragma import(DLL,ADA_beep,"ADA_beep");
+
+  procedure Beep is
+  begin
+    ADA_beep;
+  end Beep;
+
+
+
+  procedure ADA_leftClic(Clic : out Integer;
+                         X1   : out Natural;
+                         Y1   : out Natural;
+                         Err  : out Natural);
+
+  pragma import(DLL,ADA_leftClic,"ADA_leftClic");
+  
+  procedure Left_Clic(X1   : out Natural;
+                      Y1   : out Natural;
+                      Clic : out Boolean) is
+    ADA_Clic : Integer;
+    Err      : Natural;
+  begin
+    ADA_leftClic(ADA_Clic,X1,Y1,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+    
+    if ADA_Clic = 0 then
+      Clic := false;
+    else
+      Clic := true;
+    end if;
+  end Left_Clic;
+
+
+
+  procedure ADA_Right_Clic(Clic : out Integer;
+                           X1   : out Natural;
+                           Y1   : out Natural;
+                           Err  : out Natural);
+
+  pragma import(DLL,ADA_Right_Clic,"ADA_rightClic");
+  
+  procedure Right_Clic(X1   : out Natural;
+                       Y1   : out Natural;
+                       Clic : out Boolean) is
+    ADA_Clic : Integer;
+    Err      : Integer;
+  begin
+    ADA_Right_Clic(ADA_Clic,X1,Y1,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    if ADA_Clic = 0 then
+      Clic := false;
+    else
+      Clic := true;
+    end if;
+  end Right_Clic;
+
+
+
+  procedure ADA_mouse(X1  : out Natural;
+                      Y1  : out Natural ;
+                      Err : out Natural);
+                      
+  pragma import(DLL,ADA_mouse,"ADA_mouse");
+  
+  procedure Mouse(X1 : out Natural;
+                  Y1 : out Natural) is
+    Err : Integer;
+  begin
+    ADA_mouse(X1,Y1,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Mouse;
+
+
+
+end Spider.User;
diff --git a/CD/Src/Spider - Graphic Library/Ads/User.ads b/CD/Src/Spider - Graphic Library/Ads/User.ads
new file mode 100644 (file)
index 0000000..c4409f7
--- /dev/null
@@ -0,0 +1,131 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : User.ads                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions permettant de:   --
+--                      - gerer la souris dans la fenetre graphique         --
+--                      - gerer le clavier lorsque la fenetre graphique     --
+--                        est active                                        --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider.User is
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Sleep                                                        --
+  --                                                                        --
+  -- But     : Suspendre le programme durant un temps determine.            --
+  --                                                                        --
+  -- Entrees : - delay_Time: Duree en ms pendant laquelle il faut suspendre --
+  --                         l'execution du programme                       --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Sleep(Delay_Time : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Key_Pressed                                                  --
+  --                                                                        --
+  -- But     : Lire un caractere au clavier.                                --
+  --                                                                        --
+  -- Entrees : - Item: Le caractere qui a ete lu au clavier.                --
+  -- Sorties : - Vrai si un caractere a pu etre lu au clavier.              --
+  --                                                                        --
+  -- Remarque: Attention a l'exclusion mutuelle sur le tampon.              --
+  ----------------------------------------------------------------------------
+
+  procedure Key_Pressed(Item : out Character;
+                        Key  : out Boolean);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Beep                                                         --
+  --                                                                        --
+  -- But     : Faire entendre un son "beep".                                --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Beep;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Left_Clic                                                    --
+  --                                                                        --
+  -- But     : Verifie si le bouton de gauche de la souris a ete presse.    --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : - Vrai si le bouton de gauche de la souris a ete presse      --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Left_Clic(X1   : out Natural;
+                      Y1   : out Natural;
+                      Clic : out Boolean);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Right_Clic                                                   --
+  --                                                                        --
+  -- But     : Verifie si le bouton de gauche de la souris a ete presse.    --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : - Vrai si le bouton de gauche de la souris a ete presse      --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Right_Clic(X1   : out Natural;
+                       Y1   : out Natural;
+                       Clic : out Boolean);
+
+  
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Mouse                                                        --
+  --                                                                        --
+  -- But     : Lire la position de la souris.                               --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Mouse(X1 : out Natural;
+                  Y1 : out Natural);
+
+
+
+end Spider.User;
diff --git a/CD/Src/Spider - Graphic Library/Exemple/Test.cpp b/CD/Src/Spider - Graphic Library/Exemple/Test.cpp
new file mode 100644 (file)
index 0000000..4640820
--- /dev/null
@@ -0,0 +1,109 @@
+// Librairie a utiliser:
+//
+// D:\Michel\MesAppl\Spider_DLL\Spider\Debug\Spider.lib
+
+#include <windows.h>
+#include <iostream.h>
+#include "Spider.h"
+#include "SpiderDraw.h"
+#include "SpiderUser.h"
+
+
+int main(int argc,char *argv[],char *envp[])
+    {
+    cout << "Hello" << endl << endl;
+
+
+    cout << "Ouverture fenetre..." << endl;
+
+    Spider::initWindow("Programme de test");
+
+    Spider::moveTo(700,700);
+    Spider::Draw::Color color = Spider::Draw::getPixel();
+    Spider::moveTo( 50, 50); Spider::Draw::displayText("0");
+    Spider::moveTo(100,100); Spider::Draw::displayText("1");
+    Spider::moveTo(150, 50); Spider::Draw::displayText("2");
+    Spider::moveTo(200,100); Spider::Draw::displayText("3");
+    Spider::moveTo(250, 50); Spider::Draw::displayText("4");
+    Spider::moveTo(300,100); Spider::Draw::displayText("5");
+    Spider::moveTo(350, 50); Spider::Draw::displayText("6");
+    Spider::moveTo(400,100); Spider::Draw::displayText("7");
+    Spider::moveTo(450, 50); Spider::Draw::displayText("8");
+    Spider::moveTo(500,100); Spider::Draw::displayText("9");
+
+
+  //  Spider::Draw::Color color;
+
+    color.r = 0;
+    color.g = 0;
+    color.b = 0;
+    for(color.r=0;(color.r<256);(color.r)++)
+        {
+        Spider::Draw::setColorPen(color);
+        Spider::lineTo(50+color.r,250,
+                       50+color.r,300);
+        }
+
+    color.r = 0;
+    color.g = 0;
+    color.b = 0;
+    for(color.g=0;(color.g<256);(color.g)++)
+        {
+        Spider::Draw::setColorPen(color);
+        Spider::lineTo(50+color.g,300,
+                       50+color.g,350);
+        }
+
+    color.r = 0;
+    color.g = 0;
+    color.b = 0;
+    for(color.b=0;(color.b)<256;(color.b)++)
+        {
+        Spider::Draw::setColorPen(color);
+        Spider::lineTo(50+color.b,350,
+                       50+color.b,400);
+        }
+
+
+    color.r = 255; color.g = 255; color.b =   0; Spider::Draw::setColorPen(color);
+    Spider::moveTo(260,300); Spider::Draw::circle(10,Spider::Draw::noFill);
+    Spider::moveTo(260,350); Spider::Draw::circle(10,Spider::Draw::fill);
+
+    color.r =   0; color.g = 255; color.b = 255; Spider::Draw::setColorPen(color);
+
+
+    int  x=0, y=0;
+    int ax=0,ay=0;
+    char car_temp;
+    char car[2]; car[1] = 0x00;
+    while(1)
+        {
+        if(Spider::User::keyPressed(&car_temp))
+            car[0] = car_temp;
+
+        if(Spider::User::leftClic(x,y))
+            {
+            Spider::lineTo(ax,ay,x,y);
+            cout << "Ajout du point (" << x << "," << y << ")." << endl;
+
+            Spider::Draw::displayText(car);
+            
+            ax = x;
+            ay = y;
+            }
+        else
+            {
+            Spider::User::delay(50);
+            }
+        }
+
+    Spider::User::delay(50000);
+
+    Spider::closeWindow();
+
+
+    while(1)
+        ;
+
+    return 0;
+    }
\ No newline at end of file
diff --git a/CD/Src/Spider - Graphic Library/Exemple/test.ada b/CD/Src/Spider - Graphic Library/Exemple/test.ada
new file mode 100644 (file)
index 0000000..7d28727
--- /dev/null
@@ -0,0 +1,136 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Test.ads                                            --
+--                                                                          --
+--  Auteur(s)         : Livio Righetti                                      --
+--                                                                          --
+--  Date de creation  : 26-MARS-97                                          --
+--                                                                          --
+--  But               : Mettre a disposition des fonctions graphiques       --
+--                      minimales.                                          --
+--                                                                          --
+--  Date de modif.    : 18-SEPT-97 (G.corbaz)                               --
+--  Raison            : Utilisation du paquetage Adagraph                   --
+--                                                                          --
+--  Date de modif.    : 7-AVRIL-99 (P.Girardet)                             --
+--  Raison            : Pour creer une librairie                            --
+--                                                                          --
+--  Date de modif.    : 28 avril 2000 (SALAMIN Michel)                      --
+--  Raison            : Suppression de AdaGraph et utilisation d'une DLL    --
+--                      faisant des appels directs aux API de Windows.      --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Text_Io;
+use Ada.Text_IO;
+
+with Spider;
+with Spider.Draw;
+with Spider.User;
+     
+procedure Test is
+  car_Temp : Character;
+  car : Character := ' ';
+  tailleX : Natural;
+  color : Spider.Draw.tColor;
+  X : Integer := 0;
+  Y : Integer := 0;
+  AX : Integer := 0;
+  AY : Integer := 0;
+  Clic : Boolean := false;
+begin
+    
+  Spider.Init_Window("Programme de test");
+
+  Spider.move_To(700,700);
+  Spider.move_To( 50, 50); Spider.Draw.display_Text("0");
+  Spider.move_To(100,100); Spider.Draw.display_Text("1");
+  Spider.move_To(150, 50); Spider.Draw.display_Text("2");
+  Spider.move_To(200,100); Spider.Draw.display_Text("3");
+  Spider.move_To(250, 50); Spider.Draw.display_Text("4");
+  Spider.move_To(300,100); Spider.Draw.display_Text("5");
+  Spider.move_To(350, 50); Spider.Draw.display_Text("6");
+  Spider.move_To(400,100); Spider.Draw.display_Text("7");
+  Spider.move_To(450, 50); Spider.Draw.display_Text("8");
+  Spider.move_To(500,100); Spider.Draw.display_Text("9");
+
+
+
+  color.r := 0;
+  color.g := 0;
+  color.b := 0;
+  for I in 0..255 loop
+    color.r := I;
+    Spider.Draw.set_Color_Pen(color);
+    Spider.line_To(50+I,250,
+                   50+I,300);
+  end loop;
+
+  color.r := 0;
+  color.g := 0;
+  color.b := 0;
+  for I in 0..255 loop
+    color.g := I;
+    Spider.Draw.set_Color_Pen(color);
+    Spider.line_To(50+I,300,
+                   50+I,350);
+  end loop;
+
+  color.r := 0;
+  color.g := 0;
+  color.b := 0;
+  for I in 0..255 loop
+    color.b := I;
+    Spider.Draw.set_Color_Pen(color);
+    Spider.line_To(50+I,350,
+                   50+I,400);
+  end loop;
+
+
+  color.r := 255;
+  color.g := 255;
+  color.b :=   0;
+  Spider.Draw.set_Color_Pen(color);
+  
+  Spider.move_To(260,300); Spider.Draw.circle(10,Spider.Draw.noFill);
+  Spider.move_To(260,350); Spider.Draw.circle(10,Spider.Draw.fill);
+
+  color.r :=   0;
+  color.g := 255;
+  color.b := 255;
+  Spider.Draw.set_Color_Pen(color);
+
+
+  while true loop
+      Spider.User.key_Pressed(car_Temp,Clic);
+      if Clic then
+        Car := Car_Temp;
+      end if;
+      
+      Spider.User.left_Clic(x,y,Clic);
+   
+    if Clic then
+      Spider.line_To(ax,ay,x,y);
+      Spider.Draw.Display_Text((1=>Car));
+      
+      Put("Ajout du point (");
+      Put(Integer'image(X));
+      Put(",");
+      Put(Integer'image(Y));
+      Put_Line(").");
+      
+      ax := x;
+      ay := y;
+    else
+      Spider.User.Sleep(50);
+    end if;
+  end loop;
+  
+  Spider.close_Window;
+      
+end Test;
diff --git a/CD/Src/Spider - Graphic Library/Include/Spider.h b/CD/Src/Spider - Graphic Library/Include/Spider.h
new file mode 100644 (file)
index 0000000..e34da73
--- /dev/null
@@ -0,0 +1,135 @@
+// A AJOUTER AUX SPECIFICATIONS INITIALES
+
+/*
+A rajouter afin d'eviter l'inclusion multiple.
+
+#ifndef NOM_UNIQUE
+    #define NOM_UNIQUE
+
+#endif
+*/
+
+// Fonction "lineTo" deplace le point courant.
+
+
+
+/****************************************************************************/
+/*  Nom du fichier    : Spider.h                                            */
+/*                                                                          */
+/*  Auteur(s)         : Philippe Girardet, de l'Ecole d'ingenieurs du       */
+/*                      canton de Vaud (eivd).                              */
+/*                                                                          */
+/*  A l'aide des                                                            */
+/*  travaux de        : L.Righetti, G.Corba, P.Breguet, P.Girardet,         */
+/*                      M.Salamin, A.Jossevel, H.Roethlisberger             */
+/*                      de l'Ecole d'ingenieurs du canton de Vaud (eivd)    */
+/*                                                                          */
+/*  Version           : 3.0                                                 */
+/*  Date de creation  : 31 mars 2000                                        */
+/*                                                                          */
+/*  But               : Mise a disposition de fonctions graphiques          */
+/*                      minimale.                                           */
+/*                                                                          */
+/*                                                                          */
+/*  Date de modif.    :                                                     */
+/*  Raison            :                                                     */
+/*                                                                          */
+/*                                                                          */
+/*  Modules appeles   : Dependant de l'implementation                       */
+/*  Mat. particulier  : Dependant de l'implementation                  .    */
+/*                                                                          */
+/*  Compilation       : Dependant de l'implementation                  .    */
+/*  Edition de liens  : Dependant de l'implementation                  .    */
+/*                                                                          */
+/****************************************************************************/
+
+
+/* ATTENTION : Pour l'implementation UNIX (XWindows) plusieurs procedures   */
+/*             ou fonctions de la librairie Spider envoient des requetes    */
+/*             au serveur X actif, mais leur terminaison ne signifie pas    */
+/*             que la ou les requêtes ont abouti.                           */
+
+/* Remarque: Attention la barre de titre de la fenetre fait partie de la    */
+/*           zone couverte par le systeme d'axes                            */
+
+namespace Spider
+{
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : getMaxX                                                        */
+  /* But     : Retourne la taille maximale de l'ecran graphique en X.         */
+  /* Entrees : -                                                              */
+  /* Sorties : - La taille maximale de l'ecran graphique en X.                */
+  /*--------------------------------------------------------------------------*/
+  extern "C" int getMaxX(void);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : getMaxY                                                        */
+  /* But     : Retourne la taille maximale de l'ecran graphique en Y.         */
+  /* Entrees : -                                                              */
+  /* Sorties : - La taille maximale de l'ecran graphique en Y.                */
+  /*--------------------------------------------------------------------------*/
+  extern "C" int getMaxY(void);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : moveTo                                                         */
+  /* But     : Placer le curseur a une position (absolue) de l'ecran.         */
+  /* Entrees : - x : Nouvel position (absolue) du point en X dans l'ecran.    */
+  /*           - y : Nouvel position (absolue) du point en Y dans l'ecran.    */
+  /* Sorties : -                                                              */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void moveTo(int x,int y);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : move                                                           */
+  /* But     : Placer le curseur a une position en specifiant le deplacement  */
+  /* Entrees : - dx : deplacement reltatif en X dans l'ecran.                 */
+  /*           - dy : deplacement reltatif en Y dans l'ecran.                 */
+  /* Sorties : -                                                              */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void move(int dx,int dy);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : lineTo                                                         */
+  /* But     : Dessiner une ligne du point(X1,Y1) au point (X2,Y2)            */
+  /* Entrees : - x1: Position (absolue) initiale du segment en X dans l'ecran.*/
+  /*           - y1: Position (absolue) initiale du segment en Y dans l'ecran.*/
+  /*         : - x2: Position (absolue) finale du segment en X dans l'ecran.  */
+  /*           - y2: Position (absolue) finale du segment en Y dans l'ecran.  */
+  /* Sorties : -                                                              */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void lineTo(int x1,int y1,int x2,int y2);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : line                                                           */
+  /* But     : Dessiner une ligne de la position courante du curseur au point */
+  /*           specifie en connaissant le deplacement DX,DY.                  */
+  /* Entrees : - dx : deplacement relatif en X dans l'ecran.                  */
+  /*           - dy : deplacement relatif en Y dans l'ecran.                  */
+  /* Sorties : -                                                              */
+  /* Remarque:                                                                */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void line(int dx,int dy);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : clearWindow                                                    */
+  /* But     : Efface l'ecran graphique.                                      */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void clearWindow(void);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : initWindow                                                     */
+  /* But     : Ouvre la fenetre graphique de l'application.                   */
+  /* Entrees : - Le titre de la fenetre (apparait dans la barre de titre)     */
+  /* Sorties : -                                                              */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void initWindow(char *title);
+
+  /*--------------------------------------------------------------------------*/
+  /* Nom     : closeWindow                                                    */
+  /* But     : ferme la fenetre graphique.                                    */
+  /* Entrees : -                                                              */
+  /* Sorties : -                                                              */
+  /*--------------------------------------------------------------------------*/
+  extern "C" void closeWindow(void);
+};
+
diff --git a/CD/Src/Spider - Graphic Library/Include/SpiderDraw.h b/CD/Src/Spider - Graphic Library/Include/SpiderDraw.h
new file mode 100644 (file)
index 0000000..91d0c55
--- /dev/null
@@ -0,0 +1,190 @@
+/****************************************************************************/
+/*  Nom du fichier    : SpiderDraw.h                                        */
+/*                                                                          */
+/*  Auteur(s)         : Philippe Girardet, de l'Ecole d'ingenieurs du       */
+/*                      canton de Vaud (eivd).                              */
+/*                                                                          */
+/*  A l'aide des                                                            */
+/*  travaux de        : L.Righetti, G.Corba, P.Breguet, P.Girardet,         */
+/*                      M.Salamin, A.Jossevel, H.Roethlisberger             */
+/*                      de l'Ecole d'ingenieurs du canton de Vaud (eivd)    */
+/*                                                                          */
+/*  Version           : 3.0                                                 */
+/*  Date de creation  : 31 mars 2000                                        */
+/*                                                                          */
+/*  But               : Outils graphiques completant Spider.                */
+/*                                                                          */
+/*                                                                          */
+/*  Date de modif.    :                                                     */
+/*  Raison            :                                                     */
+/*                                                                          */
+/*                                                                          */
+/*  Modules appeles   : Spider.h et dependant de l'implementation           */
+/*  Mat. particulier  : Dependant de l'implementation                       */
+/*                                                                          */
+/*  Compilation       : Dependant de l'implementation                  .    */
+/*  Edition de liens  : Dependant de l'implementation                       */
+/*                                                                          */
+/****************************************************************************/
+
+
+/* ATTENTION : Pour l'implementation UNIX (XWindows) plusieurs procedures   */
+/*             ou fonctions de la librairie Spider envoient des requetes    */
+/*             au serveur X actif, mais leur terminaison ne signifie pas    */
+/*             que la ou les requêtes ont abouti.                           */
+
+/* Remarque: Attention la barre de titre de la fenetre fait partie de la    */
+/*           zone couverte par le systeme d'axes                            */
+
+#include "Spider.h"
+
+namespace Spider
+{
+  namespace Draw
+  {
+    /* Type de remplissage pour les formes */
+    enum Fill {fill, noFill};
+    
+    /* Type pour les couleur */
+    struct Color
+    {
+      int r;
+      int g;
+      int b;
+    };
+    
+    const Color black        = {  0,  0,  0};
+    const Color blue         = {  0,  0,255};
+    const Color green        = {  0,255,  0};
+    const Color cyan         = {  0,255,255};
+    const Color red          = {255,  0,  0};
+    const Color magenta      = {255,  0,255};
+    const Color brown        = {128, 64,  0};
+    const Color lightGray    = {192,192,192};
+    const Color darkGray     = {128,128,128};
+    const Color lightBlue    = {128,128,255};
+    const Color lightGreen   = {128,255,128};
+    const Color lightCyan    = {128,255,255};
+    const Color lightRed     = {255,128,128};
+    const Color lightMagenta = {255,128,255};
+    const Color yellow       = {255,255,  0};
+    const Color white        = {255,255,255};
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getColorPen                                                    */
+    /* But     : Indique la couleur utilisee pour les dessins.                  */
+    /* Entrees : -                                                              */
+    /* Sorties : - la couleur utilisee.                                         */
+    /*--------------------------------------------------------------------------*/
+    extern "C" Color getColorPen(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getColorBackground                                             */
+    /* But     : Indique la couleur de l'arriere plan.                          */
+    /* Entrees : -                                                              */
+    /* Sorties : - la couleur de l'arriere plan.                                */
+    /*--------------------------------------------------------------------------*/
+    extern "C" Color getColorBackground(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getColorText                                                   */
+    /* But     : Indique la couleur du texte.                                   */
+    /* Entrees : -                                                              */
+    /* Sorties : - la couleur du texte.                                         */
+    /*--------------------------------------------------------------------------*/
+    extern "C" Color getColorText(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getWidthChar                                                   */
+    /* But     : Indique la largeur max en pixel des caracteres de la font      */
+    /*           utilisee.                                                      */
+    /* Entrees : -                                                              */
+    /* Sorties : -  la largeur max                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" int getWidthChar(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getHeightChar                                                  */
+    /* But     : Indique la hauteur max en pixel des caracteres de la font      */
+    /*           utilisee.                                                      */
+    /* Entrees : -                                                              */
+    /* Sorties : -  la hauteur max                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" int getHeightChar(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : setColorPen                                                    */
+    /* But     : Defini la couleur pour les dessins.                            */
+    /* Entrees : - color: la couleur a appliquer                                */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void setColorPen(Color color);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : setColorBackground                                             */
+    /* But     : Defini la couleur de l'arriere plan.                           */
+    /* Entrees : - color: la couleur a appliquer                                */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void setColorBackground(Color color);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : setColorText                                                   */
+    /* But     : Defini la couleur du texte.                                    */
+    /* Entrees : - color: la couleur a appliquer                                */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void setColorText(Color color);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : displayText                                                    */
+    /* But     : Affiche un texte dans la fenetre graphique a partir de la      */
+    /*           position courante.                                             */
+    /* Entrees : - text: chaine de caracteres a afficher                        */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void displayText(char *text);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : circle                                                         */
+    /* But     : Dessine un cercle dans la fenetre graphique dont le centre     */
+    /*           est a la position courante.                                    */
+    /* Entrees : radius : Rayon du cercle                                       */
+    /*           filled : Indique si il est plein ou si il n'y a que le         */
+    /*                    contour                                               */
+    /* Sorties :                                                                */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void circle(int radius, Fill filled = noFill);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : box                                                            */
+    /* But     : Dessine un rectangle dans la fenetre graphique dont le coin    */
+    /*           superieur gauche est a la position courante                    */
+    /* Entrees : - width  : Longueur du rectangle                               */
+    /*           - height : Largeur du rectangle                                */
+    /*           - filled : Indique si il est plein ou si il n'y a que le       */
+    /*                      contour                                             */
+    /* Sorties :                                                                */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void box(int width, int height, Fill filled = noFill);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : putPixel                                                       */
+    /* But     : Dessine un point dans la fenetre graphique a la position       */
+    /*           courante.                                                      */
+    /* Entrees :                                                                */
+    /* Sorties :                                                                */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void putPixel(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : getPixel                                                       */
+    /* But     : Indique la couleur du point dans la fenetre graphique a la     */
+    /*           position courante.                                             */
+    /* Entrees :                                                                */
+    /* Sorties : la couleur du pixel                                            */
+    /*--------------------------------------------------------------------------*/
+    extern "C" Color getPixel(void);
+  };
+};
+
diff --git a/CD/Src/Spider - Graphic Library/Include/SpiderUser.h b/CD/Src/Spider - Graphic Library/Include/SpiderUser.h
new file mode 100644 (file)
index 0000000..9b3f247
--- /dev/null
@@ -0,0 +1,109 @@
+// MODIF A FAIRE:
+
+
+// Verifie qu'il y a eu un clic et non pas que le bouton de la souris est appuye:
+// - bool leftClic(int &x1, int &y1);
+// - bool rightClic(int &x1, int &y1);
+
+// Fonction : keyPressed
+// Lire un caractere au clavier lorsque la fenetre graphique est activee (premier plan).
+
+
+/****************************************************************************/
+/*  Nom du fichier    : SpiderUser.h                                        */
+/*                                                                          */
+/*  Auteur(s)         : Philippe Girardet, de l'Ecole d'ingenieurs du       */
+/*                      canton de Vaud (eivd).                              */
+/*                                                                          */
+/*  A l'aide des                                                            */
+/*  travaux de        : L.Righetti, G.Corba, P.Breguet, P.Girardet,         */
+/*                      M.Salamin, A.Jossevel, H.Roethlisberger             */
+/*                      de l'Ecole d'ingenieurs du canton de Vaud (eivd)    */
+/*                                                                          */
+/*  Version           : 3.0                                                 */
+/*  Date de creation  : 31 mars 2000                                        */
+/*                                                                          */
+/*  But               : Outils minimum de gestion du clavier et de la       */
+/*                      souris completant Spider.                           */
+/*                                                                          */
+/*  Date de modif.    :                                                     */
+/*  Raison            :                                                     */
+/*                                                                          */
+/*                                                                          */
+/*  Modules appeles   : Spider.h et dependant de l'implementation           */
+/*  Mat. particulier  : Dependant de l'implementation                       */
+/*                                                                          */
+/*  Compilation       : Dependant de l'implementation                  .    */
+/*  Edition de liens  : Dependant de l'implementation                       */
+/*                                                                          */
+/****************************************************************************/
+
+
+/* ATTENTION : Pour l'implementation UNIX (XWindows) plusieurs procedures   */
+/*             ou fonctions de la librairie Spider envoient des requetes    */
+/*             au serveur X actif, mais leur terminaison ne signifie pas    */
+/*             que la ou les requêtes ont abouti.                           */
+
+/* Remarque: Attention la barre de titre de la fenetre fait partie de la    */
+/*           zone couverte par le systeme d'axes                            */
+
+#include "Spider.h"
+
+namespace Spider
+{
+  namespace User
+  {
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : delay                                                          */
+    /* But     : Suspendre le programme durant un temps determine               */
+    /* Entrees : - delayTime: Duree en ms pendant laquelle il faut suspendre    */
+    /*             l'execution du programme                                     */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void delay(int delayTime);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : keyPressed                                                     */
+    /* But     : Lire un caractere au clavier.                                  */
+    /* Entrees : - Item: Le caractere qui a ete lu au clavier                   */
+    /* Sorties : - Vrai si un caractere a pu etre lu au clavier.                */
+    /*--------------------------------------------------------------------------*/
+    extern "C" bool keyPressed(char *Item);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : beep                                                           */
+    /* But     : faire entendre un son "beep"                                   */
+    /* Entrees : -                                                              */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void beep(void);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : leftClic                                                       */
+    /* But     : verifie si le bouton de gauche de la souris est presse.        */
+    /* Entrees : - x1: Position (absolue) en X du curseur associe a la souris.  */
+    /*           - y1: Position (absolue) en Y du curseur associe a la souris   */
+    /* Sorties : - Vrai si le bouton de gauche de la souris est presse          */
+    /*--------------------------------------------------------------------------*/
+    extern "C" bool leftClic(int &x1, int &y1);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : rightClic                                                      */
+    /* But     : verifie si le bouton de droite de la souris est presse.        */
+    /* Entrees : - x1: Position (absolue) en X du curseur associe a la souris.  */
+    /*           - y1: Position (absolue) en Y du curseur associe a la souris   */
+    /* Sorties : - Vrai si le bouton de droite de la souris est presse          */
+    /*--------------------------------------------------------------------------*/
+    extern "C" bool rightClic(int &x1, int &y1);
+
+    /*--------------------------------------------------------------------------*/
+    /* Nom     : mouse                                                          */
+    /* But     : Lire la position de la souris                                  */
+    /* Entrees : - x1: Position (absolue) en X du curseur associe a la souris.  */
+    /*           - y1: Position (absolue) en Y du curseur associe a la souris.  */
+    /* Sorties : -                                                              */
+    /*--------------------------------------------------------------------------*/
+    extern "C" void mouse(int &x1, int &y1);
+  };
+};
+
diff --git a/CD/Src/Spider - Graphic Library/Lib/ADA.LIB b/CD/Src/Spider - Graphic Library/Lib/ADA.LIB
new file mode 100644 (file)
index 0000000..4667c43
--- /dev/null
@@ -0,0 +1,10 @@
+NOSUFFIX: True
+ILSUB: il
+XILSUB: xil
+OBJSUB: obj
+INFSUB: info
+XREFSUB: xref
+MSGSUB: msg
+PATH
+  PATHNAME: d:\program files\aonix\objectada\lib
+ENDPATH
diff --git a/CD/Src/Spider - Graphic Library/Lib/Draw.adb b/CD/Src/Spider - Graphic Library/Lib/Draw.adb
new file mode 100644 (file)
index 0000000..258ef3a
--- /dev/null
@@ -0,0 +1,271 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Draw.adb                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions graphiques       --
+--                      permettant de:                                      --
+--                      - gerer la couleur sous Spider                      --
+--                      - dessiner des cercles                              --
+--                      - dessiner des rectangles                           --
+--                      - changer la couleur d'un pixel                     --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider.Draw is
+
+
+
+  procedure ADA_Get_Color_Pen(R : out Integer;
+                              G : out Integer;
+                              B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Pen,"ADA_getColorPen");
+  
+  function Get_Color_Pen return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Pen(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Pen;
+
+
+
+  procedure ADA_Get_Color_Background(R : out Integer;
+                                     G : out Integer;
+                                     B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Background,"ADA_getColorBackground");
+
+  function Get_Color_Background return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Background(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Background;
+
+
+
+  procedure ADA_Get_Color_Text(R : out Integer;
+                               G : out Integer;
+                               B : out Integer);
+
+  pragma import(DLL,ADA_Get_Color_Text,"ADA_getColorText");
+
+  function Get_Color_Text return tColor is
+    R,G,B : Integer;
+  begin
+    ADA_Get_Color_Text(R,G,B);
+    return tColor'(R,G,B);
+  end Get_Color_Text;
+
+
+
+  procedure ADA_Get_Width_Char(Width_Car : out Natural;
+                               Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Width_Char,"ADA_getWidthChar");
+
+  function Get_Width_Char return Natural is
+     Width_Car : Natural;
+     Err       : Natural;
+  begin
+    ADA_Get_Width_Char(Width_Car,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return Width_Car;
+  end Get_Width_Char;
+
+
+  
+  procedure ADA_Get_Height_Char(HeightCar : out Natural;
+                                Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Height_Char,"ADA_getHeightChar");
+
+  function Get_Height_Char return Natural is
+    HeightCar : Natural;
+    Err       : Natural;
+  begin
+    ADA_Get_Height_Char(HeightCar,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return HeightCar;
+  end Get_Height_Char;
+
+
+
+  procedure ADA_Set_Color_Pen(R : in Integer;
+                              G : in Integer;
+                              B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Pen,"ADA_setColorPen");
+
+  procedure Set_Color_Pen(Color : in tColor) is
+  begin
+    ADA_Set_Color_Pen(Color.R,Color.G,Color.B);
+  end Set_Color_Pen;        
+
+
+
+  procedure ADA_Set_Color_Background(R : in Integer;
+                                     G : in Integer;
+                                     B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Background,"ADA_setColorBackground");
+
+  procedure Set_Color_Background(Color : in tColor) is
+  begin
+    ADA_Set_Color_Background(Color.R,Color.G,Color.B);
+  end Set_Color_Background;
+
+
+
+  procedure ADA_Set_Color_Text(R : in Integer;
+                               G : in Integer;
+                               B : in Integer);
+
+  pragma import(DLL,ADA_Set_Color_Text,"ADA_setColorText");
+
+  procedure Set_Color_Text(Color : in tColor) is
+  begin
+    ADA_Set_Color_Text(Color.G,Color.G,Color.B);
+  end Set_Color_Text;
+
+
+
+  procedure ADA_Display_Text(Text : in  String;
+                             Err  : out Natural);
+
+  pragma import(DLL,ADA_Display_Text,"ADA_displayText");
+
+  procedure Display_Text(Text : in String) is
+    ADA_Text : String := Text & Character'Val(0);
+    Err : Natural;
+  begin
+    ADA_Display_Text(ADA_Text,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Display_Text;
+
+
+  
+  procedure ADA_Circle(Radius : in  Natural;
+                       Filled : in  Natural;
+                       Err    : out Natural);
+
+  pragma import(DLL,ADA_Circle,"ADA_circle");
+
+  procedure Circle(Radius : in Natural;
+                   Filled : in tFill) is
+      ADA_filled : Natural;
+      Err        : Natural;
+  begin
+    if Filled=Fill then
+      ADA_filled := 0;
+    else
+      ADA_filled := 1;
+    end if;
+
+    ADA_Circle(Radius,ADA_Filled,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Circle;
+
+
+
+  procedure ADA_Box(Width  : in  Integer;
+                    Height : in  Integer;
+                    Filled : in  Natural;
+                    Err    : out Natural);
+
+  pragma import(DLL,ADA_Box,"ADA_box");
+
+  procedure Box(Width  : in Integer;
+                Height : in Integer;
+                Filled : in tFill) is
+     ADA_filled : Natural;
+     Err        : Natural;
+  begin
+    if Filled=Fill then
+      ADA_filled := 0;
+    else
+      ADA_filled := 1;
+    end if;
+
+    ADA_Box(Width,Height,ADA_Filled,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Box;
+
+
+
+  procedure ADA_Put_Pixel(Err : out Natural);
+
+  pragma import(DLL,ADA_Put_Pixel,"ADA_putPixel");
+
+  procedure Put_Pixel is
+      Err : Natural;
+  begin
+    ADA_Put_Pixel(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Put_Pixel;
+
+
+
+  procedure ADA_Get_Pixel(Couleur_R : out Natural;
+                          Couleur_G : out Natural;
+                          Couleur_B : out Natural;
+                          Err       : out Natural);
+
+  pragma import(DLL,ADA_Get_Pixel,"ADA_getPixel");
+
+  function Get_Pixel return tColor is
+    Couleur_R : Natural;
+    Couleur_G : Natural;
+    Couleur_B : Natural;  
+    Err       : Natural;
+  begin
+    ADA_Get_Pixel(Couleur_R,Couleur_G,Couleur_B,Err);
+
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    return tColor'(Couleur_R,Couleur_G,Couleur_B);
+
+  end Get_Pixel;
+
+
+
+end Spider.Draw;
+
+
+
diff --git a/CD/Src/Spider - Graphic Library/Lib/Draw.ads b/CD/Src/Spider - Graphic Library/Lib/Draw.ads
new file mode 100644 (file)
index 0000000..135b35c
--- /dev/null
@@ -0,0 +1,271 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Draw.ads                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions graphiques       --
+--                      permettant de:                                      --
+--                      - gerer la couleur sous Spider                      --
+--                      - dessiner des cercles                              --
+--                      - dessiner des rectangles                           --
+--                      - changer la couleur d'un pixel                     --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider.Draw is
+
+
+
+  -- Type de remplissage pour les formes.
+  type tFill is (fill, noFill);
+
+  -- Type pour les couleur.
+  type tColor is record
+                    R : Integer;
+                    G : Integer;
+                    B : Integer;
+                  end record;
+
+  black        : constant tColor := (  0,  0,  0);
+  blue         : constant tColor := (  0,  0,255);
+  green        : constant tColor := (  0,255,  0);
+  cyan         : constant tColor := (  0,255,255);
+  red          : constant tColor := (255,  0,  0);
+  magenta      : constant tColor := (255,  0,255);
+  brown        : constant tColor := (128, 64,  0);
+  lightGray    : constant tColor := (192,192,192);
+  darkGray     : constant tColor := (128,128,128);
+  lightBlue    : constant tColor := (128,128,255);
+  lightGreen   : constant tColor := (128,255,128);
+  lightCyan    : constant tColor := (128,255,255);
+  lightRed     : constant tColor := (255,128,128);
+  lightMagenta : constant tColor := (255,128,255);
+  yellow       : constant tColor := (255,255,  0);
+  white        : constant tColor := (255,255,255);
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorPen                                                  --
+  --                                                                        --
+  -- But     : Indique la couleur utilisee pour les dessins.                --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur utilisee.                                       --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Pen return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorBackground                                           --
+  --                                                                        --
+  -- But     : Indique la couleur de l'arriere plan.                        --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur de l'arriere plan.                              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Background return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getColorText                                                 --
+  --                                                                        --
+  -- But     : Indique la couleur du texte.                                 --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur du texte.                                       --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Color_Text return tColor;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getWidthChar                                                 --
+  --                                                                        --
+  -- But     : Indique la largeur max en pixel des caracteres de la font    --
+  --           utilisee.                                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la largeur max                                             --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Width_Char return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getHeightChar                                                --
+  --                                                                        --
+  -- But     : Indique la hauteur max en pixel des caracteres de la font    --
+  --           utilisee.                                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la hauteur max                                             --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Height_Char return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorPen                                                  --
+  --                                                                        --
+  -- But     : Defini la couleur pour les dessins.                          --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Pen(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorBackground                                           --
+  --                                                                        --
+  -- But     : Defini la couleur de l'arriere plan.                         --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Background(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : setColorText                                                 --
+  --                                                                        --
+  -- But     : Defini la couleur du texte.                                  --
+  --                                                                        --
+  -- Entrees : - color: la couleur a appliquer                              --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Set_Color_Text(Color : in tColor);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : displayText                                                  --
+  --                                                                        --
+  -- But     : Affiche un texte dans la fenetre graphique a partir de la    --
+  --           position courante.                                           --
+  --                                                                        --
+  -- Entrees : - text: chaine de caracteres a afficher                      --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Display_Text(Text : in String);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : circle                                                       --
+  --                                                                        --
+  -- But     : Dessine un cercle dans la fenetre graphique dont le centre   --
+  --           est a la position courante.                                  --
+  --                                                                        --
+  -- Entrees : - radius : Rayon du cercle                                   --
+  --           - filled : Indique si il est plein ou si il n'y a que le     --
+  --                      contour                                           --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Circle(Radius : in Natural;
+                   Filled : in tFill);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : box                                                          --
+  --                                                                        --
+  -- But     : Dessine un rectangle dans la fenetre graphique dont le coin  --
+  --           superieur gauche est a la position courante.                 --
+  --                                                                        --
+  -- Entrees : - width  : Longueur du rectangle                             --
+  --           - height : Largeur du rectangle                              --
+  --           - filled : Indique si il est plein ou si il n'y a que le     --
+  --                      contour                                           --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Box(Width  : in Integer;
+                Height : in Integer;
+                Filled : in tFill);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : putPixel                                                     --
+  --                                                                        --
+  -- But     :                                                              --
+  --                                                                        --
+  -- Entrees : - Dessine un point dans la fenetre graphique a la position   --
+  --             courante.                                                  --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Put_Pixel;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getPixel                                                     --
+  --                                                                        --
+  -- But     : Indique la couleur du point dans la fenetre graphique a la   --
+  --           position courante.                                           --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - la couleur du pixel                                        --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Pixel return tColor;
+
+
+
+end Spider.Draw;
diff --git a/CD/Src/Spider - Graphic Library/Lib/Spider.adb b/CD/Src/Spider - Graphic Library/Lib/Spider.adb
new file mode 100644 (file)
index 0000000..3401ddf
--- /dev/null
@@ -0,0 +1,180 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Spider.adb                                          --
+--                                                                          --
+--  Auteur(s)         : Livio Righetti                                      --
+--                                                                          --
+--  Date de creation  : 26-MARS-97                                          --
+--                                                                          --
+--  But               : Mettre a disposition des fonctions graphiques       --
+--                      minimales.                                          --
+--                                                                          --
+--  Date de modif.    : 18-SEPT-97 (G.corbaz)                               --
+--  Raison            : Utilisation du paquetage Adagraph                   --
+--                                                                          --
+--  Date de modif.    : 7-AVRIL-99 (P.Girardet)                             --
+--  Raison            : Pour creer une librairie                            --
+--                                                                          --
+--  Date de modif.    : 28 avril 2000 (SALAMIN Michel)                      --
+--  Raison            : Suppression de AdaGraph et utilisation d'une DLL    --
+--                      faisant des appels directs aux API de Windows.      --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider is
+
+
+
+  procedure Traiter_Erreur(Valeur : in Natural) is
+  begin
+    case Valeur is
+      when 1      => raise Fenetre_Non_Init;
+      when 2      => raise Fenetre_Deja_Init;
+      when 3      => raise Pixel_Invalid;
+      when others => raise Erreur_Inconnue;
+    end case;
+  end Traiter_Erreur;
+
+
+
+  function ADA_Get_Max_X return Natural;
+  
+  pragma import(DLL,ADA_Get_Max_X,"ADA_getMaxX");
+  
+  function Get_Max_X return Natural is
+  begin
+    return ADA_Get_Max_X;
+  end Get_Max_X;
+
+
+
+  function ADA_Get_Max_Y return Natural;
+  
+  pragma import(DLL,ADA_Get_Max_Y,"ADA_getMaxY");
+  
+  function Get_Max_Y return Natural is
+  begin
+    return ADA_Get_Max_Y;
+  end Get_Max_Y;
+
+
+
+  procedure ADA_Move_To(X : in Natural;
+                        Y : in Natural);
+
+  pragma import(DLL,ADA_Move_To,"ADA_moveTo");
+  
+  procedure Move_To(X : in Natural;Y : in Natural) is
+  begin
+    ADA_Move_To(X,Y);
+  end Move_To;
+
+
+
+  procedure ADA_Move(DX : in Integer;
+                     DY : in Integer);
+
+  pragma import(DLL,ADA_Move,"ADA_move");
+
+  procedure Move(DX : in Integer;DY : in Integer) is
+  begin
+    ADA_Move(DX,DY);
+  end Move;
+
+
+
+  procedure ADA_Line_To(X1  : in  Natural;
+                        Y1  : in  Natural;
+                        X2  : in  Natural;
+                        Y2  : in  Natural;
+                        Err : out Natural);
+
+  pragma import(DLL,ADA_Line_To,"ADA_lineTo");
+  
+  procedure Line_To(X1 : in Natural;
+                    Y1 : in Natural;
+                    X2 : in Natural;
+                    Y2 : in Natural) is
+    Err : Integer;
+  begin
+    ADA_Line_To(X1,Y1,X2,Y2,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Line_To;
+
+
+
+  procedure ADA_Line(DX  : in  Integer;
+                     DY  : in  Integer;
+                     ERR : out Natural);
+
+  pragma import(DLL,ADA_Line,"ADA_line");
+
+  procedure Line(DX : in Integer;
+                 DY : in Integer) is
+    Err : Integer;
+  begin
+    ADA_Line(DX,DY,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Line;
+
+
+
+  procedure ADA_Clear_Window(Err : out Natural);
+
+  pragma import(DLL,ADA_Clear_Window,"ADA_clearWindow");
+
+  procedure Clear_Window is
+    Err : Integer;
+  begin
+    ADA_Clear_Window(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Clear_Window;
+
+
+
+  procedure ADA_Init_Window(Title : in  String;
+                            Err   : out Natural);
+
+  pragma import(DLL,ADA_Init_Window,"ADA_initWindow");
+
+  procedure Init_Window(Title : in String) is
+    ADA_Title : String := Title & Character'Val(0);
+    Err : Integer;
+  begin
+    ADA_Init_Window(ADA_Title,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Init_Window;
+
+
+
+  procedure ADA_Close_Window(Err : out Natural);
+
+  pragma import(DLL,ADA_Close_Window,"ADA_closeWindow");
+
+  procedure Close_Window is
+    Err : Integer;
+  begin
+    ADA_Close_Window(Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Close_Window;
+
+
+
+end Spider;
diff --git a/CD/Src/Spider - Graphic Library/Lib/Spider.ads b/CD/Src/Spider - Graphic Library/Lib/Spider.ads
new file mode 100644 (file)
index 0000000..ec5f086
--- /dev/null
@@ -0,0 +1,195 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : Spider.ads                                          --
+--                                                                          --
+--  Auteur(s)         : Livio Righetti                                      --
+--                                                                          --
+--  Date de creation  : 26-MARS-97                                          --
+--                                                                          --
+--  But               : Mettre a disposition des fonctions graphiques       --
+--                      minimales.                                          --
+--                                                                          --
+--  Date de modif.    : 18-SEPT-97 (G.corbaz)                               --
+--  Raison            : Utilisation du paquetage Adagraph                   --
+--                                                                          --
+--  Date de modif.    : 7-AVRIL-99 (P.Girardet)                             --
+--  Raison            : Pour creer une librairie                            --
+--                                                                          --
+--  Date de modif.    : 28 avril 2000 (SALAMIN Michel)                      --
+--  Raison            : Suppression de AdaGraph et utilisation d'une DLL    --
+--                      faisant des appels directs aux API de Windows.      --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider is
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getMaxX                                                      --
+  --                                                                        --
+  -- But     : Retourne la taille maximale de l'ecran graphique en X.       --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - La taille maximale de l'ecran graphique en X.              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Max_X return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : getMaxY                                                      --
+  --                                                                        --
+  -- But     : Retourne la taille maximale de l'ecran graphique en Y.       --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : - La taille maximale de l'ecran graphique en Y.              --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  function Get_Max_Y return Natural;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : moveTo                                                       --
+  --                                                                        --
+  -- But     : Placer le curseur a une position (absolue) de l'ecran.       --
+  --                                                                        --
+  -- Entrees : - X : Nouvel position (absolue) du point en X dans l'ecran.  --
+  --           - Y : Nouvel position (absolue) du point en Y dans l'ecran.  --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Move_To(X : in Natural;
+                    Y : in Natural);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : move                                                         --
+  --                                                                        --
+  -- But     : Placer le curseur a une position en specifiant le            --
+  --           deplacement.                                                 --
+  --                                                                        --
+  -- Entrees : - DX : deplacement reltatif en X dans l'ecran.               --
+  --           - DY : deplacement reltatif en Y dans l'ecran.               --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Move(DX : in Integer;
+                 DY : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : lineTo                                                       --
+  --                                                                        --
+  -- But     : Dessiner une ligne du point(X1,Y1) au point (X2,Y2).         --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) initiale du seg. en X dans l'ecran. --
+  --           - Y1: Position (absolue) initiale du seg. en Y dans l'ecran. --
+  --         : - X2: Position (absolue) finale du segment en X dans l'ecran.--
+  --           - Y2: Position (absolue) finale du segment en Y dans l'ecran.--
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Line_To(X1 : in Natural;
+                    Y1 : in Natural;
+                    X2 : in Natural;
+                    Y2 : in Natural);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : line                                                         --
+  --                                                                        --
+  -- But     : Dessiner une ligne de la position courante du curseur au     --
+  --           point specifie en connaissant le deplacement DX,DY.          --
+  --                                                                        --
+  -- Entrees : - DX : deplacement relatif en X dans l'ecran.                --
+  --           - DY : deplacement relatif en Y dans l'ecran.                --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Line(DX : in Integer;
+                 DY : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : clearWindow                                                  --
+  --                                                                        --
+  -- But     : Efface l'ecran graphique.                                    --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Clear_Window;
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : initWindow                                                   --
+  --                                                                        --
+  -- But     : Ouvre la fenetre graphique de l'application.                 --
+  --                                                                        --
+  -- Entrees : - Le titre de la fenetre (apparait dans la barre de titre)   --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Init_Window(Title : in String);
+  
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : closeWindow                                                  --
+  --                                                                        --
+  -- But     : ferme la fenetre graphique.                                  --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Close_Window;
+
+
+
+  Fenetre_Non_Init  : exception;
+  Fenetre_Deja_Init : exception;
+  Pixel_Invalid     : exception;
+  Erreur_Inconnue   : exception;
+
+
+
+private
+
+  procedure Traiter_Erreur(Valeur : in Natural);
+
+end Spider;
diff --git a/CD/Src/Spider - Graphic Library/Lib/UNIT.MAP b/CD/Src/Spider - Graphic Library/Lib/UNIT.MAP
new file mode 100644 (file)
index 0000000..ca2821b
--- /dev/null
@@ -0,0 +1,77 @@
+SOURCE: ..\user.adb
+  SRCTIME: 957214736    Mon May 01 22:58:56 2000
+  INVALID: True
+  UNIT: Spider.User
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: user.adb
+  SRCTIME: 957214736    Mon May 01 22:58:56 2000
+  UNIT: Spider.User
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: ..\user.ads
+  SRCTIME: 957214424    Mon May 01 22:53:44 2000
+  INVALID: True
+  UNIT: Spider.User
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: user.ads
+  SRCTIME: 957214424    Mon May 01 22:53:44 2000
+  UNIT: Spider.User
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: ..\test.ads
+  SRCTIME: 957214434    Mon May 01 22:53:54 2000
+  INVALID: True
+  UNIT: Test
+    UKIND: 2    SUBP_BODY
+ENDSOURCE
+SOURCE: test.ads
+  SRCTIME: 957214434    Mon May 01 22:53:54 2000
+  UNIT: Test
+    UKIND: 2    SUBP_BODY
+ENDSOURCE
+SOURCE: ..\spider.adb
+  SRCTIME: 957214496    Mon May 01 22:54:56 2000
+  INVALID: True
+  UNIT: Spider
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: spider.adb
+  SRCTIME: 957214496    Mon May 01 22:54:56 2000
+  UNIT: Spider
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: ..\draw.adb
+  SRCTIME: 957214720    Mon May 01 22:58:40 2000
+  INVALID: True
+  UNIT: Spider.Draw
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: draw.adb
+  SRCTIME: 957214720    Mon May 01 22:58:40 2000
+  UNIT: Spider.Draw
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: ..\spider.ads
+  SRCTIME: 957214706    Mon May 01 22:58:26 2000
+  INVALID: True
+  UNIT: Spider
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: spider.ads
+  SRCTIME: 957214706    Mon May 01 22:58:26 2000
+  UNIT: Spider
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: ..\draw.ads
+  SRCTIME: 957214624    Mon May 01 22:57:04 2000
+  INVALID: True
+  UNIT: Spider.Draw
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: draw.ads
+  SRCTIME: 957214624    Mon May 01 22:57:04 2000
+  UNIT: Spider.Draw
+    UKIND: 7    PKG_DECL
+ENDSOURCE
diff --git a/CD/Src/Spider - Graphic Library/Lib/User.adb b/CD/Src/Spider - Graphic Library/Lib/User.adb
new file mode 100644 (file)
index 0000000..42cb3ec
--- /dev/null
@@ -0,0 +1,154 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : User.adb                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions permettant de:   --
+--                      - gerer la souris dans la fenetre graphique         --
+--                      - gerer le clavier lorsque la fenetre graphique     --
+--                        est active                                        --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package body Spider.User is
+
+
+
+  procedure ADA_Delay_Time(Delay_Time : in Integer);
+  
+  pragma import(DLL,ADA_Delay_Time,"ADA_delay");
+  
+  procedure Sleep(Delay_Time : in Integer) is
+  begin
+    ADA_Delay_Time(Delay_Time);
+  end Sleep;
+
+
+
+  procedure ADA_keyPressed(Key  : out Integer;
+                           Item : out Character;
+                           Err  : out Natural);
+
+  pragma import(DLL,ADA_keyPressed,"ADA_keyPressed");
+
+  procedure key_Pressed(Item : out Character;
+                        Key  : out Boolean) is
+      ADA_Key : Integer;
+      Err     : Integer;
+  begin
+    ADA_keyPressed(ADA_Key,Item,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+    
+    if ADA_Key = 0 then
+      Key := false;
+    else
+      Key := true;
+    end if;
+  end key_Pressed;
+
+
+
+
+  procedure ADA_beep;
+
+  pragma import(DLL,ADA_beep,"ADA_beep");
+
+  procedure Beep is
+  begin
+    ADA_beep;
+  end Beep;
+
+
+
+  procedure ADA_leftClic(Clic : out Integer;
+                         X1   : out Natural;
+                         Y1   : out Natural;
+                         Err  : out Natural);
+
+  pragma import(DLL,ADA_leftClic,"ADA_leftClic");
+  
+  procedure Left_Clic(X1   : out Natural;
+                      Y1   : out Natural;
+                      Clic : out Boolean) is
+    ADA_Clic : Integer;
+    Err      : Natural;
+  begin
+    ADA_leftClic(ADA_Clic,X1,Y1,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+    
+    if ADA_Clic = 0 then
+      Clic := false;
+    else
+      Clic := true;
+    end if;
+  end Left_Clic;
+
+
+
+  procedure ADA_Right_Clic(Clic : out Integer;
+                           X1   : out Natural;
+                           Y1   : out Natural;
+                           Err  : out Natural);
+
+  pragma import(DLL,ADA_Right_Clic,"ADA_rightClic");
+  
+  procedure Right_Clic(X1   : out Natural;
+                       Y1   : out Natural;
+                       Clic : out Boolean) is
+    ADA_Clic : Integer;
+    Err      : Integer;
+  begin
+    ADA_Right_Clic(ADA_Clic,X1,Y1,Err);
+    
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+
+    if ADA_Clic = 0 then
+      Clic := false;
+    else
+      Clic := true;
+    end if;
+  end Right_Clic;
+
+
+
+  procedure ADA_mouse(X1  : out Natural;
+                      Y1  : out Natural ;
+                      Err : out Natural);
+                      
+  pragma import(DLL,ADA_mouse,"ADA_mouse");
+  
+  procedure Mouse(X1 : out Natural;
+                  Y1 : out Natural) is
+    Err : Integer;
+  begin
+    ADA_mouse(X1,Y1,Err);
+    if Err /= 0 then
+      Traiter_Erreur(Err);
+    end if;
+  end Mouse;
+
+
+
+end Spider.User;
diff --git a/CD/Src/Spider - Graphic Library/Lib/User.ads b/CD/Src/Spider - Graphic Library/Lib/User.ads
new file mode 100644 (file)
index 0000000..c4409f7
--- /dev/null
@@ -0,0 +1,131 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--  Nom du fichier    : User.ads                                            --
+--                                                                          --
+--  Auteur(s)         : SALAMIN Michel / Assistant HEV                      --
+--                      Ecole d'ingenieurs du canton de Vaud (EIVD)         --
+--                                                                          --
+--  Date de creation  : 20 avril 2000                                       --
+--                                                                          --
+--  But               : Mettre a disposition les fonctions permettant de:   --
+--                      - gerer la souris dans la fenetre graphique         --
+--                      - gerer le clavier lorsque la fenetre graphique     --
+--                        est active                                        --
+--                                                                          --
+--  Date de modif.    :                                                     --
+--  Raison            :                                                     --
+--                                                                          --
+--  Modules appeles   :                                                     --
+--  Mat. particulier  : Graphmin.dll                                        --
+--                                                                          --
+--  Compilateur       :                                                     --
+--                                                                          --
+------------------------------------------------------------------------------
+
+
+
+package Spider.User is
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Sleep                                                        --
+  --                                                                        --
+  -- But     : Suspendre le programme durant un temps determine.            --
+  --                                                                        --
+  -- Entrees : - delay_Time: Duree en ms pendant laquelle il faut suspendre --
+  --                         l'execution du programme                       --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Sleep(Delay_Time : in Integer);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Key_Pressed                                                  --
+  --                                                                        --
+  -- But     : Lire un caractere au clavier.                                --
+  --                                                                        --
+  -- Entrees : - Item: Le caractere qui a ete lu au clavier.                --
+  -- Sorties : - Vrai si un caractere a pu etre lu au clavier.              --
+  --                                                                        --
+  -- Remarque: Attention a l'exclusion mutuelle sur le tampon.              --
+  ----------------------------------------------------------------------------
+
+  procedure Key_Pressed(Item : out Character;
+                        Key  : out Boolean);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Beep                                                         --
+  --                                                                        --
+  -- But     : Faire entendre un son "beep".                                --
+  --                                                                        --
+  -- Entrees : -                                                            --
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Beep;
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Left_Clic                                                    --
+  --                                                                        --
+  -- But     : Verifie si le bouton de gauche de la souris a ete presse.    --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : - Vrai si le bouton de gauche de la souris a ete presse      --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Left_Clic(X1   : out Natural;
+                      Y1   : out Natural;
+                      Clic : out Boolean);
+
+
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Right_Clic                                                   --
+  --                                                                        --
+  -- But     : Verifie si le bouton de gauche de la souris a ete presse.    --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : - Vrai si le bouton de gauche de la souris a ete presse      --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Right_Clic(X1   : out Natural;
+                       Y1   : out Natural;
+                       Clic : out Boolean);
+
+  
+
+  ----------------------------------------------------------------------------
+  -- Nom     : Mouse                                                        --
+  --                                                                        --
+  -- But     : Lire la position de la souris.                               --
+  --                                                                        --
+  -- Entrees : - X1: Position (absolue) en X du curseur associe a la souris.--
+  --           - Y1: Position (absolue) en Y du curseur associe a la souris.--
+  -- Sorties : -                                                            --
+  --                                                                        --
+  -- Remarque:                                                              --
+  ----------------------------------------------------------------------------
+
+  procedure Mouse(X1 : out Natural;
+                  Y1 : out Natural);
+
+
+
+end Spider.User;
diff --git a/CD/Src/Spider - Graphic Library/Lib/graphmin.lib b/CD/Src/Spider - Graphic Library/Lib/graphmin.lib
new file mode 100644 (file)
index 0000000..461fd25
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/graphmin.lib differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/adb/draw.iff b/CD/Src/Spider - Graphic Library/Lib/info/adb/draw.iff
new file mode 100644 (file)
index 0000000..e1e7b61
--- /dev/null
@@ -0,0 +1,32 @@
+SOURCE: draw.adb
+  SRCTIME: 957214720    Mon May 01 22:58:40 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+SRCDEP: draw.ads
+  SRCDEPTIME: 957214624    Mon May 01 22:57:04 2000
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848396650    Tue Nov 19 10:44:10 1996
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918038590    Wed Feb 03 11:43:10 1999
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857447180    Tue Mar 04 04:46:20 1997
+SRCDEP: src\rts.spc
+  SRCDEPTIME: 918038620    Wed Feb 03 11:43:40 1999
+SRCDEP: src\sys_config.ads
+  SRCDEPTIME: 902816480    Tue Aug 11 08:21:20 1998
+UNIT: Spider.Draw
+  UKIND: 8    PKG_BODY
+  DEP: Spider.Draw
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: draw.ads
+    DEPSRCTIME: 957214624    Mon May 01 22:57:04 2000
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  ELABLINKNAME: spider.draw__elab_body
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/adb/spider.iff b/CD/Src/Spider - Graphic Library/Lib/info/adb/spider.iff
new file mode 100644 (file)
index 0000000..524416f
--- /dev/null
@@ -0,0 +1,17 @@
+SOURCE: spider.adb
+  SRCTIME: 957214496    Mon May 01 22:54:56 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+UNIT: Spider
+  UKIND: 8    PKG_BODY
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  FEATURES: 16#8000000002000#(-1,-1,-1,-1,-1,-1)
+  ELABLINKNAME: spider__elab_body
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/adb/user.iff b/CD/Src/Spider - Graphic Library/Lib/info/adb/user.iff
new file mode 100644 (file)
index 0000000..0045b90
--- /dev/null
@@ -0,0 +1,20 @@
+SOURCE: user.adb
+  SRCTIME: 957214736    Mon May 01 22:58:56 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+SRCDEP: user.ads
+  SRCDEPTIME: 957214424    Mon May 01 22:53:44 2000
+UNIT: Spider.User
+  UKIND: 8    PKG_BODY
+  DEP: Spider.User
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: user.ads
+    DEPSRCTIME: 957214424    Mon May 01 22:53:44 2000
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  ELABLINKNAME: spider.user__elab_body
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/ads/draw.iff b/CD/Src/Spider - Graphic Library/Lib/info/ads/draw.iff
new file mode 100644 (file)
index 0000000..3c6beb3
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE: draw.ads
+  SRCTIME: 957214624    Mon May 01 22:57:04 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+UNIT: Spider.Draw
+  UKIND: 7    PKG_DECL
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  NEED: Spider.Draw
+    NEEDKIND: 8    PKG_BODY
+  ELABLINKNAME: spider.draw__elab_spec
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/ads/spider.iff b/CD/Src/Spider - Graphic Library/Lib/info/ads/spider.iff
new file mode 100644 (file)
index 0000000..5f9f3a1
--- /dev/null
@@ -0,0 +1,10 @@
+SOURCE: spider.ads
+  SRCTIME: 957214706    Mon May 01 22:58:26 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+UNIT: Spider
+  UKIND: 7    PKG_DECL
+  NEED: Spider
+    NEEDKIND: 8    PKG_BODY
+  ELABLINKNAME: spider__elab_spec
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/ads/test.iff b/CD/Src/Spider - Graphic Library/Lib/info/ads/test.iff
new file mode 100644 (file)
index 0000000..63ebfed
--- /dev/null
@@ -0,0 +1,53 @@
+SOURCE: test.ads
+  SRCTIME: 957214434    Mon May 01 22:53:54 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918038590    Wed Feb 03 11:43:10 1999
+SRCDEP: src\text_io.spc
+  SRCDEPTIME: 886743450    Fri Feb 06 06:37:30 1998
+SRCDEP: src\io_exceptions.dat
+  SRCDEPTIME: 848396630    Tue Nov 19 10:43:50 1996
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+SRCDEP: draw.ads
+  SRCDEPTIME: 957214624    Mon May 01 22:57:04 2000
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848396650    Tue Nov 19 10:44:10 1996
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857447180    Tue Mar 04 04:46:20 1997
+SRCDEP: src\rts.spc
+  SRCDEPTIME: 918038620    Wed Feb 03 11:43:40 1999
+SRCDEP: src\sys_config.ads
+  SRCDEPTIME: 902816480    Tue Aug 11 08:21:20 1998
+SRCDEP: user.ads
+  SRCDEPTIME: 957214424    Mon May 01 22:53:44 2000
+UNIT: Test
+  UKIND: 2    SUBP_BODY
+  DEP: Spider.User
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: user.ads
+    DEPSRCTIME: 957214424    Mon May 01 22:53:44 2000
+  DEP: Spider.Draw
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: draw.ads
+    DEPSRCTIME: 957214624    Mon May 01 22:57:04 2000
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  DEP: Ada.Text_IO
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\text_io.spc
+    DEPSRCTIME: 886743450    Fri Feb 06 06:37:30 1998
+  DEP: Ada
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\ada.ada
+    DEPSRCTIME: 918038590    Wed Feb 03 11:43:10 1999
+  NEED: system.rts.Integer_Image_And_Value_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  FEATURES: 16#100000#(-1,-1,-1,-1,-1,-1)
+  MAINLINKNAME: test
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/info/ads/user.iff b/CD/Src/Spider - Graphic Library/Lib/info/ads/user.iff
new file mode 100644 (file)
index 0000000..769bc17
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE: user.ads
+  SRCTIME: 957214424    Mon May 01 22:53:44 2000
+  COMPSW: adacomp SRC -eo -s -e 50 -m n -mr n
+COMPVER: 3.273
+SRCDEP: spider.ads
+  SRCDEPTIME: 957214706    Mon May 01 22:58:26 2000
+UNIT: Spider.User
+  UKIND: 7    PKG_DECL
+  DEP: Spider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: spider.ads
+    DEPSRCTIME: 957214706    Mon May 01 22:58:26 2000
+  NEED: Spider.User
+    NEEDKIND: 8    PKG_BODY
+  ELABLINKNAME: spider.user__elab_spec
+ENDUNIT
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/adb/draw.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/adb/draw.xrf
new file mode 100644 (file)
index 0000000..26a5dc7
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/adb/draw.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/adb/spider.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/adb/spider.xrf
new file mode 100644 (file)
index 0000000..90efd41
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/adb/spider.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/adb/user.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/adb/user.xrf
new file mode 100644 (file)
index 0000000..315c7f8
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/adb/user.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/ads/draw.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/ads/draw.xrf
new file mode 100644 (file)
index 0000000..7e21152
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/ads/draw.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/ads/spider.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/ads/spider.xrf
new file mode 100644 (file)
index 0000000..2f03455
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/ads/spider.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/ads/test.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/ads/test.xrf
new file mode 100644 (file)
index 0000000..6d1474c
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/ads/test.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Lib/xref/ads/user.xrf b/CD/Src/Spider - Graphic Library/Lib/xref/ads/user.xrf
new file mode 100644 (file)
index 0000000..b2d8bee
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/Lib/xref/ads/user.xrf differ
diff --git a/CD/Src/Spider - Graphic Library/Readme _25_10_00.txt b/CD/Src/Spider - Graphic Library/Readme _25_10_00.txt
new file mode 100644 (file)
index 0000000..0584476
--- /dev/null
@@ -0,0 +1,18 @@
+
+Ads                    : Fichiers de spécification de la librairie Spider en Ada
+
+Exemple                : Fichiers sources (ada, c++) exemples utilisant Spider
+Include                : Fichiers de spécification de la librairie Spider en C++
+
+Lib                    : Fichiers à copier sous "...\Aonix\ObjectAda\Spider"
+                         lors d\92une installation de la librairie spider (contient
+                         le fichier "lib" et les fichiers spécifications compilés)
+
+graphmin.dll           : Librairie dynamique de spider
+
+graphmin.lib           : Fichier précompilé d\92accès à la librairie dynamique
+
+SpiderInstallation\
+EtUtilisation.doc      : Notice d\92installation et d\92utilisation de la librairie Spider
\ No newline at end of file
diff --git a/CD/Src/Spider - Graphic Library/SpiderInstallationEtUtilisation.doc b/CD/Src/Spider - Graphic Library/SpiderInstallationEtUtilisation.doc
new file mode 100644 (file)
index 0000000..706899e
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/SpiderInstallationEtUtilisation.doc differ
diff --git a/CD/Src/Spider - Graphic Library/graphmin.dll b/CD/Src/Spider - Graphic Library/graphmin.dll
new file mode 100644 (file)
index 0000000..7e6838e
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/graphmin.dll differ
diff --git a/CD/Src/Spider - Graphic Library/graphmin.lib b/CD/Src/Spider - Graphic Library/graphmin.lib
new file mode 100644 (file)
index 0000000..461fd25
Binary files /dev/null and b/CD/Src/Spider - Graphic Library/graphmin.lib differ
diff --git a/CD/Src/power_IO.adb b/CD/Src/power_IO.adb
new file mode 100644 (file)
index 0000000..8942da5
--- /dev/null
@@ -0,0 +1,217 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_IO / fait partie du programme Power Fractal                                --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils Pour Rendre une fractal au format .bmp ou                                 --
+--           Enregistrer et charger au format .pof                                            --
+------------------------------------------------------------------------------------------------
+
+with Ada.Sequential_IO;  --Pour ecrire en binaire dans un fichier
+with Power_Types; use Power_Types;
+with Ada.Text_IO;
+with Power_Calculator;
+with Power_Bmp;
+with Power_Colors;
+with Power_List;
+
+package body Power_IO is
+
+   --Instentie pour faire ecrire le type Cara_Fractal dans un fichier
+   package Fractal_IO is new Ada.Sequential_IO (Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Fractal                                                              --
+   -- But     : Enregistrer les caracteristiques d'un fractal dans un fichier                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * Les caracteristiques de la fractal : Fractal                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Fractal (Nom_Fichier : String; Fractal : Cara_Fractal) is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+
+   begin --Enregistrer_Fractal
+         
+      Fractal_IO.Create (Fichier_Fractal, Fractal_IO.Out_File, Nom_Fichier); --Cree le fichier
+      Fractal_IO.Write (Fichier_Fractal, Fractal);    --Ecrit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --Ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Enregistrer_Fractal;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_Fractal                                                                  --
+   -- But     : Charger les caracteristiques d'un fractal depuis un fichier                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  return    :  * Les caracteristiques de la fractal                                         --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Charger_Fractal (Nom_Fichier : String) return  Cara_Fractal is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+      Fractal : Cara_Fractal;
+   begin --Enregistrer_Fractal
+
+      Fractal_IO.Open (Fichier_Fractal, Fractal_IO.In_File, Nom_Fichier); --Ouvre le fichier
+      Fractal_IO.Read (Fichier_Fractal, Fractal);   --Lit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --ferme le fichier
+      return Fractal;
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Charger_Fractal;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Liste                                                                --
+   -- But     : Enregistrer une liste contenant des fractals                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * La liste de fractals : Liste                                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Liste (Nom_Fichier : String; Liste : Power_Types.T_Liste_Fractals) is
+
+      use Power_List;
+      Fichier_Liste : Fractal_IO.File_Type; --Le fichier    
+
+   begin --Enregistrer_Liste
+      Fractal_IO.Create (Fichier_Liste, Fractal_IO.Out_File, Nom_Fichier); --Cree le fichier
+
+      for I in 1..Nb_Fractals(Liste) loop
+         Fractal_IO.Write (Fichier_Liste, Fractal_Num(Liste, I).Fractal); --Ecrit une fractal
+      end loop;
+
+      Fractal_IO.Close (Fichier_Liste);    --Ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;      
+
+   end Enregistrer_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_List                                                                     --
+   -- But     : Charger toutes les fractals contenues dans un fichier                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  In out : * La liste de fractals                                                           --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Charger_Liste (Nom_Fichier : String; Liste : in out Power_Types.T_Liste_Fractals) is
+
+      use Power_List;
+      Fichier_Liste : Fractal_IO.File_Type; --Le fichier  
+      Fractal_Tmp : Cara_Fractal;
+
+   begin --Charger_Liste
+
+      Fractal_IO.Open (Fichier_Liste, Fractal_IO.In_File, Nom_Fichier); --Ouvre le fichier
+
+      Vider_Liste(Liste);
+
+      while not Fractal_IO.End_Of_File(Fichier_Liste) loop
+
+         Fractal_IO.Read (Fichier_Liste, Fractal_Tmp);   --Lit les informations
+         Ajouter(Liste, Fractal_Tmp);
+
+      end loop;
+
+      Fractal_IO.Close (Fichier_Liste);    --ferme le fichier
+
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Charger_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rendre_Bmp                                                                       --
+   -- But     : Rendre un fichier image au format bmp (a l'aide de la library BMPLib)            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les dimensions du bmp : Largeur_Zone et Hauteur_Zone                           --
+   --           * La fractal a rendre   : Cara_Fractal                                           --
+   --           * Le nom du fichier bmp : Nom_Fichier                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------  
+procedure Rendre_Bmp (Fractal : Power_Types.Cara_Fractal; Nom_Fichier : String;
+          Largeur_Zone : Natural := 1024; Hauteur_Zone : Natural := 768) is
+
+      use Power_Calculator;
+      use Ada.Text_IO;
+      use Power_Bmp;
+      use Power_Colors;
+
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le degrade de couleur
+
+      --2 si la matrice doit etre calcule quatre fois plus grande sinon 1
+      Quadruple : Natural := Boolean'Pos(Fractal.Antialiasing) + 1;   
+
+      --les dimensions de la zone de calcul, elles sont double si l'antialiasing est active
+      Largeur_Zone_Anti : Natural := (Largeur_Zone - 1) * Quadruple
+      + Boolean'Pos(Fractal.Antialiasing);
+
+      Hauteur_Zone_Anti : Natural := (Hauteur_Zone - 1) * Quadruple
+      + Boolean'Pos(Fractal.Antialiasing);
+      --
+
+      --La matrice d'iteration
+      Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Zone_Anti, 0..Hauteur_Zone_Anti);
+
+      --La matrice de sortie
+      Matrice_Tampon :  T_Matrice_Tampon (0 .. Largeur_Zone - 1, 0 .. Hauteur_Zone - 1);
+
+   begin -- Rendre_Bmp   
+
+      New_Line;
+      Put(" Matrix...     ");
+
+      --Si la fractal est de type mandelbrot alors
+      if Fractal.Ensemble = Mandelbrot then
+         --Calcul la fractal sur l'ensemble de mandelbrot
+         Matrice_Iteration := Mandel_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      else --sinon (Julia)
+         --Calcul la fractal sur l'ensemble de julia
+         Matrice_Iteration := Julia_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      end if;
+
+      Put_Line("OK");
+
+      Put(" Colors...     ");
+      --Calcul le degrade de couleur
+      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max);
+      Put_Line("OK");
+      Put(" Conversion... ");
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon := Calcul_Antialiasing(Conversion_Couleur(Matrice_Iteration, Degrade));
+      else
+
+         Matrice_Tampon := Conversion_Couleur(Matrice_Iteration, Degrade);
+      end if;
+
+      Put_Line("OK");
+  
+      Put(" Saving...     ");
+      Ecrire_Bmp (Matrice_Tampon, Nom_Fichier); --Enregistre le bmp
+      Put_Line("OK");
+
+   end Rendre_Bmp;
+
+end Power_IO;
diff --git a/CD/Src/power_IO.ads b/CD/Src/power_IO.ads
new file mode 100644 (file)
index 0000000..d614bad
--- /dev/null
@@ -0,0 +1,79 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_IO / fait partie du programme Power Fractal                                --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils Pour Rendre une fractal au format .bmp ou                                 --
+--           Enregistrer et charger au format .pof                                            --
+------------------------------------------------------------------------------------------------
+
+with Power_Types;
+use type Power_Types.Cara_Fractal;
+
+package Power_IO is
+
+   Erreur_Fichier : exception; -- Erreur propre au fichier (enregistrement et lecture)
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Fractal                                                              --
+   -- But     : Enregistrer les caracteristiques d'un fractal dans un fichier                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * Les caracteristiques de la fractal : Fractal                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Fractal (Nom_Fichier : String; Fractal : Power_Types.Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_Fractal                                                                  --
+   -- But     : Charger les caracteristiques d'un fractal depuis un fichier                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  return :  * Les caracteristiques de la fractal                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Charger_Fractal (Nom_Fichier : String) return Power_Types.Cara_Fractal;
+
+  
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Liste                                                                --
+   -- But     : Enregistrer une liste contenant des fractals                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * La liste de fractals : Liste                                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Liste (Nom_Fichier : String; Liste : Power_Types.T_Liste_Fractals);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_List                                                                     --
+   -- But     : Charger toutes les fractals contenues dans un fichier                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  In out : * La liste de fractals                                                           --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Charger_Liste (Nom_Fichier : String; Liste : in out Power_Types.T_Liste_Fractals);
+
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rendre_Bmp                                                                       --
+   -- But     : Rendre un fichier image au format bmp (a l'aide de la library BMPLib)            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les dimensions du bmp : Largeur_Zone et Hauteur_Zone                           --
+   --           * La fractal a rendre   : Cara_Fractal                                           --
+   --           * Le nom du fichier bmp : Nom_Fichier                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------  
+   procedure Rendre_Bmp (Fractal : Power_Types.Cara_Fractal;
+             Nom_Fichier : String; Largeur_Zone : Natural := 1024; Hauteur_Zone : Natural := 768);
+
+
+end Power_IO;
\ No newline at end of file
diff --git a/CD/Src/powerfractal.ada b/CD/Src/powerfractal.ada
new file mode 100644 (file)
index 0000000..0aaa630
--- /dev/null
@@ -0,0 +1,74 @@
+------------------------------------------------------------------------------------------------
+-- Nom         : Power Fractal                                                                --
+-- Auteurs     : Gregory Burri & Adrien Crivelli                                              --
+-- Date        : 12.07.2001                                                                   --
+-- Version     : 1.0                                                                          --
+--                                                                                            --
+-- Outils de compilation  : ObjectAda V7.2                                                    --
+-- Outils supplementaires : Spider, bibliotheque de dessin rudimetaire                        --
+--                                                                                            --
+-- Platformes  : Windows 4 et nt                                                              --
+--                                                                                            --
+-- Description : Programme permettant le dessin de fractals de l'ensemble de Mandelbrot       --
+--               et de l'ensemble de Julia, il met a diposition plusieurs outils              --
+--               permattant de zoomer, de centrer de definir certains parametres propres aux  --
+--               fractals et de sauvegarder au format pof un fractal ou encore de la rendre   --
+--               dans un fichier bmp. De plus il permet de definir un degrade de couleur      --
+--               qui sera applique a la fractal.                                              --
+--                                                                                            --
+--               Pour plus de renseignement veuillez consulter la doc, ou le site officiel :  --
+--                      http://pifou.servehttp.com/powerfractal                               --
+--                                                                                            --
+------------------------------------------------------------------------------------------------
+
+with Spider; --Bibliotheque de dessin spider
+with Spider.Draw;
+
+with Ada.Text_IO; use Ada.Text_IO;  --Entree-sortie de texte
+
+with Power_Types; use Power_Types;
+with Power_Console;
+with Power_List;
+
+
+-------------------------------------------------------------------------------------------------
+--Procedure principale                                                                         --
+-------------------------------------------------------------------------------------------------
+procedure Power_Fractal_Main is
+
+   --La liste de fractals initialisee avec des exemple
+   Liste : T_Liste_Fractals := Power_List.Liste_Defaut;
+
+----------------------------------------------------------------------------------------------
+--MAIN                                                                                      --
+----------------------------------------------------------------------------------------------
+begin -- Power_Fractal_Main
+
+   Put_Line("                   -=-=-=-=-=-Power Fractal 1.0-=-=-=-=-=- ");
+   Put_Line("                                                     -=by pifou and kiki=-");
+   New_Line;
+   Put_Line("Press 'return' and choose a fractal");
+   New_Line(3);
+   Put_Line(" When you are on command line :");
+   Put_Line("  HELP           => to view the list of all commands");
+   Put_Line("  HELP <command> => to view a short description about the command");
+   Skip_Line;
+
+   Spider.Init_Window("Power Fractal"); --Ouverture de la fenetre spider
+
+   --Reinitialise le contenu de la fenetre graphique
+   Spider.Draw.Set_Color_Background(Spider.Draw.Black); Spider.Clear_Window;
+
+   Power_Console.Console(Liste, Prompt);
+
+   Power_List.Vider_Liste(Liste);
+
+   New_Line(4);
+   Put_Line("                    Thanks for use this program    :-)");
+   New_Line(5);
+   Put("                            Press 'return' to quit");
+   Skip_Line;
+   
+end Power_Fractal_Main;
+
+
diff --git a/Documentation/GPL-licence FR.txt b/Documentation/GPL-licence FR.txt
new file mode 100644 (file)
index 0000000..fc473fe
--- /dev/null
@@ -0,0 +1,197 @@
+GPL
+
+Introduction
+
+This is an unofficial translation of the GNU General Public License into French. It was not published by the Free Software Foundation, and does not legally
+state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this
+translation will help French speakers understand the GNU GPL better. 
+
+Voici (http://www.linux-france.org/article/these/gpl.html) une adaptation non officielle de la Licence Publique Générale du projet GNU. Elle n'a pas été
+publiée par la Free Software Foundation et son contenu n'a aucune portée légale car seule la version anglaise de ce document détaille le mode de distribution
+des logiciels sous GNU GPL. Nous espérons cependant qu'elle permettra aux francophones de mieux comprendre la GPL. 
+
+Licence Publique Générale GNU Version 2, Juin 1991
+
+Copyright © Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307
+États-Unis, 1989, 1991.
+La copie et la distribution de copies exactes de ce document sont autorisées, mais aucune modification n'est permise. 
+
+Préambule
+
+Les licences d'utilisation de la plupart des programmes sont définies pour limiter ou supprimer toute liberté à l'utilisateur. À l'inverse, la Licence Publique
+Générale (General Public License) est destinée à vous garantir la liberté de partager et de modifier les logiciels libres, et de s'assurer que ces logiciels sont
+effectivement accessibles à tout utilisateur.
+
+Cette Licence Publique Générale s'applique à la plupart des programmes de la Free Software Foundation, comme à tout autre programme dont l'auteur l'aura
+décidé (d'autres logiciels de la FSF sont couverts pour leur part par la Licence Publique Générale pour Bibliothèques GNU (LGPL)). Vous pouvez aussi
+appliquer les termes de cette Licence à vos propres programmes, si vous le désirez.
+
+Liberté des logiciels ne signifie pas nécessairement gratuité. Notre Licence est conçue pour vous assurer la liberté de distribuer des copies des programmes,
+gratuitement ou non, de recevoir le code source ou de pouvoir l'obtenir, de modifier les programmes ou d'en utiliser des éléments dans de nouveaux
+programmes libres, en sachant que vous y êtes autorisé.
+
+Afin de garantir ces droits, nous avons dû introduire des restrictions interdisant à quiconque de vous les refuser ou de vous demander d'y renoncer. Ces
+restrictions vous imposent en retour certaines obligations si vous distribuez ou modifiez des copies de programmes protégés par la Licence. En d'autre termes,
+il vous incombera en ce cas de : 
+
+    transmettre aux destinataires tous les droits que vous possédez, 
+    expédier aux destinataires le code source ou bien tenir celui-ci à leur disposition, 
+    leur remettre cette Licence afin qu'ils prennent connaissance de leurs droits. 
+
+Nous protégeons vos droits de deux façons : d'abord par le copyright du logiciel, ensuite par la remise de cette Licence qui vous autorise légalement à copier,
+distribuer et/ou modifier le logiciel.
+
+En outre, pour protéger chaque auteur ainsi que la FSF, nous affirmons solennellement que le programme concerné ne fait l'objet d'aucune garantie. Si un tiers
+le modifie puis le redistribue, tous ceux qui en recevront une copie doivent savoir qu'il ne s'agit pas de l'original afin qu'une copie défectueuse n'entache pas
+la réputation de l'auteur du logiciel.
+
+Enfin, tout programme libre est sans cesse menacé par des dépôts de brevets. Nous souhaitons à tout prix éviter que des distributeurs puissent déposer des
+brevets sur les Logiciels Libres pour leur propre compte. Pour éviter cela, nous stipulons bien que tout dépôt éventuel de brevet doit accorder expressément à
+tout un chacun le libre usage du produit.
+
+Les dispositions précises et les conditions de copie, de distribution et de modification de nos logiciels sont les suivantes : 
+
+Stipulations et conditions relatives à la copie, la distribution et la modification
+
+
+
+    Article 0
+    La présente Licence s'applique à tout Programme (ou autre travail) où figure une note, placée par le détenteur des droits, stipulant que ledit Programme
+    ou travail peut être distribué selon les termes de la présente Licence. Le terme Programme désigne aussi bien le Programme lui-même que tout travail
+    qui en est dérivé selon la loi, c'est-à-dire tout ouvrage reproduisant le Programme ou une partie de celui-ci, à l'identique ou bien modifié, et/ou traduit
+    dans une autre langue (la traduction est considérée comme une modification). Chaque personne concernée par la Licence Publique Générale sera
+    désignée par le terme Vous.
+
+    Les activités autres que copie, distribution et modification ne sont pas couvertes par la présente Licence et sortent de son cadre. Rien ne restreint
+    l'utilisation du Programme et les données issues de celui-ci ne sont couvertes que si leur contenu constitue un travail basé sur le logiciel
+    (indépendemment du fait d'avoir été réalisé en lançant le Programme). Tout dépend de ce que le Programme est censé produire.
+
+
+    Article 1.
+    Vous pouvez copier et distribuer des copies conformes du code source du Programme, tel que Vous l'avez reçu, sur n'importe quel support, à condition
+    de placer sur chaque copie un copyright approprié et une restriction de garantie, de ne pas modifier ou omettre toutes les stipulations se référant à la
+    présente Licence et à la limitation de garantie, et de fournir avec toute copie du Programme un exemplaire de la Licence.
+
+    Vous pouvez demander une rétribution financière pour la réalisation de la copie et demeurez libre de proposer une garantie assurée par vos soins,
+    moyennant finances.
+
+
+    Article 2.
+    Vous pouvez modifier votre copie ou vos copies du Programme ou partie de celui-ci, ou d'un travail basé sur ce Programme, et copier et distribuer ces
+    modifications selon les termes de l'article 1, à condition de Vous conformer également aux conditions suivantes : 
+        a) Ajouter aux fichiers modifiés l'indication très claire des modifications effectuées, ainsi que la date de chaque changement. 
+        b) Distribuer sous les termes de la Licence Publique Générale l'ensemble de toute réalisation contenant tout ou partie du Programme, avec ou sans
+        modifications. 
+        c) Si le Programme modifié lit des commandes de manière interactive lors de son exécution, faire en sorte qu'il affiche, lors d'une invocation
+        ordinaire, le copyright approprié en indiquant clairement la limitation de garantie (ou la garantie que Vous Vous engagez à fournir Vous-même),
+        qu'il stipule que tout utilisateur peut librement redistribuer le Programme selon les conditions de la Licence Publique Générale GNU, et qu'il montre
+        à tout utilisateur comment lire une copie de celle-ci (exception : si le Programme original est interactif mais n'affiche pas un tel message en temps
+        normal, tout travail dérivé de ce Programme ne sera pas non plus contraint de l'afficher). 
+
+    Toutes ces conditions s'appliquent à l'ensemble des modifications. Si des éléments identifiables de ce travail ne sont pas dérivés du Programme et
+    peuvent être raisonnablement considérés comme indépendants, la présente Licence ne s'applique pas à ces éléments lorsque Vous les distribuez seuls.
+    Mais, si Vous distribuez ces mêmes éléments comme partie d'un ensemble cohérent dont le reste est basé sur un Programme soumis à la Licence, ils lui
+    sont également soumis, et la Licence s'étend ainsi à l'ensemble du produit, quel qu'en soit l'auteur.
+
+    Cet article n'a pas pour but de s'approprier ou de contester vos droits sur un travail entièrement réalisé par Vous, mais plutôt d'ouvrir droit à un contrôle
+    de la libre distribution de tout travail dérivé ou collectif basé sur le Programme.
+
+    En outre, toute fusion d'un autre travail, non basé sur le Programme, avec le Programme (ou avec un travail dérivé de ce dernier), effectuée sur un
+    support de stockage ou de distribution, ne fait pas tomber cet autre travail sous le contrôle de la Licence.
+
+
+    Article 3.
+    Vous pouvez copier et distribuer le Programme (ou tout travail dérivé selon les conditions énoncées dans l'article 1) sous forme de code objet ou
+    exécutable, selon les termes des articles 0 et 1, à condition de respecter les clauses suivantes : 
+        a) Fournir le code source complet du Programme, sous une forme lisible par un ordinateur et selon les termes des articles 0 et 1, sur un support
+        habituellement utilisé pour l'échange de données ; ou, 
+        b) Faire une offre écrite, valable pendant au moins trois ans, prévoyant de donner à tout tiers qui en fera la demande une copie, sous forme lisible
+        par un ordinateur, du code source correspondant, pour un tarif n'excédant pas le coût de la copie, selon les termes des articles 0 et 1, sur un support
+        couramment utilisé pour l'échange de données informatiques ; ou, 
+        c) Informer le destinataire de l'endroit où le code source peut être obtenu (cette solution n'est recevable que dans le cas d'une distribution non
+        commerciale, et uniquement si Vous avez reçu le Programme sous forme de code objet ou exécutable avec l'offre prévue à l'alinéa b ci-dessus). 
+
+    Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications sont les plus aisées. Sont ainsi désignés la totalité du code
+    source de tous les modules composant un Programme exécutable, de même que tout fichier de définition associé, ainsi que les scripts utilisés pour
+    effectuer la compilation et l'installation du Programme exécutable. Toutefois, l'environnement standard de développement du système d'exploitation mis
+    en oeuvre (source ou binaire) -- compilateurs, bibliothèques, noyau, etc. -- constitue une exception, sauf si ces éléments sont diffusés en même temps que
+    le Programme exécutable.
+
+    Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de copier le Programme depuis un endroit particulier, l'offre d'un
+    accès équivalent pour se procurer le code source au même endroit est considéré comme une distribution de ce code source, même si l'utilisateur choisit
+    de ne pas profiter de cette offre.
+
+
+    Article 4.
+    Vous ne pouvez pas copier, modifier, céder, déposer ou distribuer le Programme d'une autre manière que l'autorise la Licence Publique Générale. Toute
+    tentative de ce type annule immédiatement vos droits d'utilisation du Programme sous cette Licence. Toutefois, les tiers ayant reçu de Vous des copies du
+    Programme ou le droit d'utiliser ces copies continueront à bénéficier de leur droit d'utilisation tant qu'ils respecteront pleinement les conditions de la
+    Licence.
+
+
+    Article 5.
+    Ne l'ayant pas signée, Vous n'êtes pas obligé d'accepter cette Licence. Cependant, rien d'autre ne Vous autorise à modifier ou distribuer le Programme ou
+    quelque travaux dérivés : la loi l'interdit tant que Vous n'acceptez pas les termes de cette Licence. En conséquence, en modifiant ou en distribuant le
+    Programme (ou tout travail basé sur lui), Vous acceptez implicitement tous les termes et conditions de cette Licence.
+
+
+    Article 6.
+    La diffusion d'un Programme (ou de tout travail dérivé) suppose l'envoi simultané d'une licence autorisant la copie, la distribution ou la modification du
+    Programme, aux termes et conditions de la Licence. Vous n'avez pas le droit d'imposer de restrictions supplémentaires aux droits transmis au
+    destinataire. Vous n'êtes pas responsable du respect de la Licence par un tiers.
+
+
+    Article 7.
+    Si, à la suite d'une décision de Justice, d'une plainte en contrefaçon ou pour toute autre raison (liée ou non à la contrefaçon), des conditions Vous sont
+    imposées (que ce soit par ordonnance, accord amiable ou autre) qui se révèlent incompatibles avec les termes de la présente Licence, Vous n'êtes pas
+    pour autant dégagé des obligations liées à celle-ci : si Vous ne pouvez concilier vos obligations légales ou autres avec les conditions de cette Licence,
+    Vous ne devez pas distribuer le Programme.
+
+    Si une partie quelconque de cet article est invalidée ou inapplicable pour quelque raison que ce soit, le reste de l'article continue de s'appliquer et
+    l'intégralité de l'article s'appliquera en toute autre circonstance.
+
+    Le présent article n'a pas pour but de Vous pousser à enfreindre des droits ou des dispositions légales ni en contester la validité ; son seul objectif est de
+    protéger l'intégrité du système de distribution du Logiciel Libre. De nombreuses personnes ont généreusement contribué à la large gamme de Programmes
+    distribuée de cette façon en toute confiance ; il appartient à chaque auteur/donateur de décider de diffuser ses Programmes selon les critères de son
+    choix.
+
+
+    Article 8.
+    Si la distribution et/ou l'utilisation du Programme est limitée dans certains pays par des brevets ou des droits sur des interfaces, le détenteur original des
+    droits qui place le Programme sous la Licence Publique Générale peut ajouter explicitement une clause de limitation géographique excluant ces pays.
+    Dans ce cas, cette clause devient une partie intégrante de la Licence.
+
+
+    Article 9.
+    La Free Software Foundation se réserve le droit de publier périodiquement des mises à jour ou de nouvelles versions de la Licence. Rédigées dans le
+    même esprit que la présente version, elles seront cependant susceptibles d'en modifier certains détails à mesure que de nouveaux problèmes se font jour.
+
+    Chaque version possède un numéro distinct. Si le Programme précise un numéro de version de cette Licence et « toute version ultérieure », Vous avez le
+    choix de suivre les termes et conditions de cette version ou de toute autre version plus récente publiée par la Free Software Foundation. Si le Programme
+    ne spécifie aucun numéro de version, Vous pouvez alors choisir l'une quelconque des versions publiées par la Free Software Foundation.
+
+
+    Article 10.
+    Si Vous désirez incorporer des éléments du Programme dans d'autres Programmes libres dont les conditions de distribution diffèrent, Vous devez écrire
+    à l'auteur pour lui en demander la permission. Pour ce qui est des Programmes directement déposés par la Free Software Foundation, écrivez-nous : une
+    exception est toujours envisageable. Notre décision sera basée sur notre volonté de préserver la liberté de notre Programme ou de ses dérivés et celle de
+    promouvoir le partage et la réutilisation du logiciel en général.
+
+                                                    LIMITATION DE GARANTIE
+
+    Article 11.
+    Parce que l'utilisation de ce Programme est libre et gratuite, aucune garantie n'est fournie, comme le permet la loi. Sauf mention écrite, les détenteurs du
+    copyright et/ou les tiers fournissent le Programme en l'état, sans aucune sorte de garantie explicite ou implicite, y compris les garanties de
+    commercialisation ou d'adaptation dans un but particulier. Vous assumez tous les risques quant à la qualité et aux effets du Programme. Si le Programme
+    est défectueux, Vous assumez le coût de tous les services, corrections ou réparations nécessaires.
+
+
+    Article 12.
+    Sauf lorsqu'explicitement prévu par la Loi ou accepté par écrit, ni le détenteur des droits, ni quiconque autorisé à modifier et/ou redistribuer le
+    Programme comme il est permis ci-dessus ne pourra être tenu pour responsable de tout dommage direct, indirect, secondaire ou accessoire (pertes
+    financières dues au manque à gagner, à l'interruption d'activités ou à la perte de données, etc., découlant de l'utilisation du Programme ou de
+    l'impossibilité d'utiliser celui-ci). 
+
+
+                                               FIN DES TERMES ET CONDITIONS
diff --git a/Documentation/Hiearchie.cdr b/Documentation/Hiearchie.cdr
new file mode 100644 (file)
index 0000000..d8cb55c
Binary files /dev/null and b/Documentation/Hiearchie.cdr differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Cahier des Charges.doc b/Documentation/Projet de semestre - PowerFractal - Cahier des Charges.doc
new file mode 100644 (file)
index 0000000..3b9f80d
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Cahier des Charges.doc differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Documentation Technique.doc b/Documentation/Projet de semestre - PowerFractal - Documentation Technique.doc
new file mode 100644 (file)
index 0000000..7d41cfd
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Documentation Technique.doc differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Documentation Technique.pdf b/Documentation/Projet de semestre - PowerFractal - Documentation Technique.pdf
new file mode 100644 (file)
index 0000000..8913a84
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Documentation Technique.pdf differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Manuel d utilisation.pdf b/Documentation/Projet de semestre - PowerFractal - Manuel d utilisation.pdf
new file mode 100644 (file)
index 0000000..25fc0f9
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Manuel d utilisation.pdf differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Manuel d'utilisation.doc b/Documentation/Projet de semestre - PowerFractal - Manuel d'utilisation.doc
new file mode 100644 (file)
index 0000000..b72ef87
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Manuel d'utilisation.doc differ
diff --git a/Documentation/Projet de semestre - PowerFractal - Principal.doc b/Documentation/Projet de semestre - PowerFractal - Principal.doc
new file mode 100644 (file)
index 0000000..7c9b045
Binary files /dev/null and b/Documentation/Projet de semestre - PowerFractal - Principal.doc differ
diff --git a/Documentation/Que est qu une fractal-.pdf b/Documentation/Que est qu une fractal-.pdf
new file mode 100644 (file)
index 0000000..fca422b
Binary files /dev/null and b/Documentation/Que est qu une fractal-.pdf differ
diff --git a/Documentation/Que est qu'une fractal-.doc b/Documentation/Que est qu'une fractal-.doc
new file mode 100644 (file)
index 0000000..369e2c1
Binary files /dev/null and b/Documentation/Que est qu'une fractal-.doc differ
diff --git a/Documentation/adadoc/Power_Bmp.html b/Documentation/adadoc/Power_Bmp.html
new file mode 100644 (file)
index 0000000..d07f3f6
--- /dev/null
@@ -0,0 +1,118 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Bmp (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Bmp</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Clauses USE-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses USE</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_Types</td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Ecrire_Bmp<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Ecrire_Bmp<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Matrice_Image</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Matrice_Tampon">T_Matrice_Tampon</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_Colors.html b/Documentation/adadoc/Power_Colors.html
new file mode 100644 (file)
index 0000000..555a726
--- /dev/null
@@ -0,0 +1,196 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Colors (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Colors</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Spider.Draw </td></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Inverse_Couleur<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Inverse_Couleur<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Couleur</td>
+    <td width=" 100" class="Clr4" ><a href="#Spider.Draw.Tcolor">Spider.Draw.Tcolor</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Creer_Degrade<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Creer_Degrade<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.Cara_Fractal">Power_Types.Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Degrade</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Tab_Couleur">Power_Types.T_Tab_Couleur</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Longueur</td>
+    <td width=" 100" class="Clr4" ><a href="#Integer">Integer</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Affiche_Degrade<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Affiche_Degrade<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.Cara_Fractal">Power_Types.Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Conversion_Couleur<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Conversion_Couleur<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Matrice</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Matrice_Iteration">Power_Types.T_Matrice_Iteration</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Degrade</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Tab_Couleur">Power_Types.T_Tab_Couleur</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Matrice_Tampon">Power_Types.T_Matrice_Tampon</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_Console.html b/Documentation/adadoc/Power_Console.html
new file mode 100644 (file)
index 0000000..2f3c6d6
--- /dev/null
@@ -0,0 +1,124 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Console (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Console</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_List </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Clauses USE-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses USE</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_Types</td></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_List</td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Console<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Console<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Liste</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Prompt</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_Draw.html b/Documentation/adadoc/Power_Draw.html
new file mode 100644 (file)
index 0000000..3be68f5
--- /dev/null
@@ -0,0 +1,247 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Draw (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Draw</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Spider.Draw </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Boite<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Boite<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X1</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y1</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X2</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y2</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Ligne_Matrice_Hori<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Ligne_Matrice_Hori<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X1</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X2</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Ligne_Matrice_Vert<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Ligne_Matrice_Vert<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y1</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y2</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Dessin_Croix<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Dessin_Croix<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Efface_Croix<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Efface_Croix<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_List.html b/Documentation/adadoc/Power_List.html
new file mode 100644 (file)
index 0000000..2a9d5ef
--- /dev/null
@@ -0,0 +1,291 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_List (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_List</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Clauses USE-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses USE</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_Types</td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>D&eacute;clarations<a name="declaration"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Exceptions-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Exceptions</b>
+    </th></tr>
+
+<tr><td width=" 100" class="Clr4" >Liste_Une_Fractal</td>
+    <td width=" 0" class="Clr5" > </td></tr>
+
+<tr><td width=" 100" class="Clr4" >Fractal_Inexistante</td>
+    <td width=" 0" class="Clr5" > </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Ajouter<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Ajouter<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Effacer<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Effacer<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Num</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Fractal_Num<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Fractal_Num<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Num</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#T_Lien">T_Lien</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Vider_Liste<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Vider_Liste<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Liste_Defaut<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Liste_Defaut<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Nb_Fractals<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Nb_Fractals<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_Tools.html b/Documentation/adadoc/Power_Tools.html
new file mode 100644 (file)
index 0000000..e417781
--- /dev/null
@@ -0,0 +1,226 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Tools (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Tools</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Clauses USE-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses USE</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_Types</td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Dessiner_Fractal<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Dessiner_Fractal<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >X</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" >0 </td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Y</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" >0 </td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Rafraichir_Couleur<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Rafraichir_Couleur<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Zoom_Souris<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Zoom_Souris<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Centrer<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Centrer<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Choix_Mosaic<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Choix_Mosaic<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Liste_Fractals</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Liste_Fractals">T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_Types.html b/Documentation/adadoc/Power_Types.html
new file mode 100644 (file)
index 0000000..f0608f5
--- /dev/null
@@ -0,0 +1,525 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Types (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Types</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Ada.Characters.Latin_1 </td></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Spider.Draw </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>D&eacute;clarations<a name="declaration"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Constantes-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Constantes</b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>Initialisation</i></b></td></tr>
+
+<tr><td width=" 100" class="Clr3" >Hauteur_Ecran</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >399 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Largeur_Ecran</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >639 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Rayon_Int_Croix</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >2 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Rayon_Ext_Croix</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >6 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Hauteur_Degrade</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >5 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Facteur_Zin</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >4.0 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Facteur_Zout</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >4.0 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Zoom_Min</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >0.1 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Nb_Iteration_Min</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >6 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Longueur_Max</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >50 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Nb_Couleur_Max</td>
+    <td width=" 200" class="Clr4" ></td>
+    <td width=" 195" class="Clr5" >10 </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Prompt</td>
+    <td width=" 200" class="Clr4" >String </td>
+    <td width=" 195" class="Clr5" >"> " </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Couleur_Cadre</td>
+    <td width=" 200" class="Clr4" >Spider.Draw.Tcolor </td>
+    <td width=" 195" class="Clr5" >( 255 , 255 , 200 ) </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Couleur_Numeros</td>
+    <td width=" 200" class="Clr4" >Spider.Draw.Tcolor </td>
+    <td width=" 195" class="Clr5" >( 255 , 255 , 200 ) </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Echape</td>
+    <td width=" 200" class="Clr4" >Character </td>
+    <td width=" 195" class="Clr5" >Ada.Characters.Latin_1.Esc </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Vide</td>
+    <td width=" 200" class="Clr4" >Character </td>
+    <td width=" 195" class="Clr5" >Ada.Characters.Latin_1.Nul </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Espace</td>
+    <td width=" 200" class="Clr4" >Character </td>
+    <td width=" 195" class="Clr5" >Ada.Characters.Latin_1.Space </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Fractal_Initial_Julia</td>
+    <td width=" 200" class="Clr4" >Cara_Fractal </td>
+    <td width=" 195" class="Clr5" >( Julia , 4 , 50 , 4.0 , 1.0 / 4.0 , ( 0.0 , 0.0 ) , 0.0 , ( ( 255 , 50 , 50 ) , ( 200 , 254 , 120 ) , ( 123 , 78 , 100 ) , ( 0 , 23 , 100 ) ) , False , False , 0.577 , 0.468 ) </td></tr>
+
+<tr><td width=" 100" class="Clr3" >Fractal_Initial_Mandel</td>
+    <td width=" 200" class="Clr4" >Cara_Fractal </td>
+    <td width=" 195" class="Clr5" >( Mandelbrot , 4 , 50 , 4.0 , 1.0 / 4.0 , ( 0.6 , 0.0 ) , 0.0 , ( ( 100 , 100 , 255 ) , ( 120 , 230 , 255 ) , ( 123 , 78 , 100 ) , ( 0 , 23 , 100 ) ) , False , False ) </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Variables-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Variables</b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>Initialisation</i></b></td></tr>
+
+<tr><td width=" 100" class="Clr3" >Matrice_Iteration_Global</td>
+    <td width=" 200" class="Clr4" >T_Matrice_Iteration_2</td>
+    <td width=" 195" class="Clr5" ></td></tr>
+
+<tr><td width=" 100" class="Clr3" >Matrice_Tampon_Ecran</td>
+    <td width=" 200" class="Clr4" >T_Matrice_Tampon( 0 .. Largeur_Ecran , 0 .. Hauteur_Ecran ) </td>
+    <td width=" 195" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Types-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Types</b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>D&eacute;claration</i></b></td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Byte<a name="Byte"></a></td>
+    <td width=" 400" class="Clr4" >mod 256 </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Matrice_Tampon<a name="T_Matrice_Tampon"></a></td>
+    <td width=" 400" class="Clr4" >array ( Natural range <> , Natural range <> ) of T_Couleur </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Ensemble<a name="T_Ensemble"></a></td>
+    <td width=" 400" class="Clr4" >( Julia , Mandelbrot ) </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Tab_Couleur<a name="T_Tab_Couleur"></a></td>
+    <td width=" 400" class="Clr4" >array ( Natural range <> ) of T_Couleur </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Matrice_Iteration<a name="T_Matrice_Iteration"></a></td>
+    <td width=" 400" class="Clr4" >array ( Integer range <> , Integer range <> ) of Natural </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Lien<a name="T_Lien"></a></td>
+    <td width=" 400" class="Clr4" >access T_Fractal </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Sous types-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Sous types</b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>D&eacute;claration</i></b></td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >T_Nb_Couleur<a name="T_Nb_Couleur"></a></td>
+    <td width=" 400" class="Clr4" >Integer range 2 .. Nb_Couleur_Max </td>
+    <td width=" 0" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau T_Couleur<i> (article)</i><a name="T_Couleur"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>T_Couleur<i> (article)</i><a name="T_Couleur"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >R</td>
+    <td width=" 150" class="Clr4" ><a href="#Byte">Byte</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >G</td>
+    <td width=" 150" class="Clr4" ><a href="#Byte">Byte</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >B</td>
+    <td width=" 150" class="Clr4" ><a href="#Byte">Byte</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau T_Centre<i> (article)</i><a name="T_Centre"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>T_Centre<i> (article)</i><a name="T_Centre"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >X</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >0.6 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Y</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >0.0 </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Cara_Fractal<i> (article)</i><a name="Cara_Fractal"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Cara_Fractal<i> (article)</i><a name="Cara_Fractal"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Discriminant</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Ensemble</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Ensemble">T_Ensemble</a></td>
+    <td width=" 150" class="Clr5" >Mandelbrot </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Nb_Couleur</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Nb_Couleur">T_Nb_Couleur</a></td>
+    <td width=" 150" class="Clr5" >4 </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >NB_Iteration_Max</td>
+    <td width=" 150" class="Clr4" ><a href="#Positive">Positive</a></td>
+    <td width=" 150" class="Clr5" >50 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >C_Diverge_Limite</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >4.0 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Zoom</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >1.0 / 4.0 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Centre</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Centre">T_Centre</a></td>
+    <td width=" 150" class="Clr5" >( 0.6 , 0.0 ) Angle : Long_Float 0.0 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Couleur</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Tab_Couleur(1..Nb_Couleur)">T_Tab_Couleur(1..Nb_Couleur)</a></td>
+    <td width=" 150" class="Clr5" >( ( 255 , 0 , 0 ) ( 0 , 255 , 0 ) ( 0 , 0 , 255 ) ( 255 , 255 , 0 ) </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Antialiasing</td>
+    <td width=" 150" class="Clr4" ><a href="#Boolean">Boolean</a></td>
+    <td width=" 150" class="Clr5" >False </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Dessine_Degrade</td>
+    <td width=" 150" class="Clr4" ><a href="#Boolean">Boolean</a></td>
+    <td width=" 150" class="Clr5" >False </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b>Partie variante</b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Ensemble = Julia</i></b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Cx</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >0.577 </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Cy</td>
+    <td width=" 150" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 150" class="Clr5" >0.468 </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Ensemble = Mandelbrot</i></b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" >null</td>
+    <td width=" 150" class="Clr4" ><a href="#"></a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau T_Matrice_Iteration_2<i> (article)</i><a name="T_Matrice_Iteration_2"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>T_Matrice_Iteration_2<i> (article)</i><a name="T_Matrice_Iteration_2"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Discriminant</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Antialiasing</td>
+    <td width=" 150" class="Clr4" ><a href="#Boolean">Boolean</a></td>
+    <td width=" 150" class="Clr5" >False </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b>Partie variante</b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Antialiasing = False</i></b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Matrice_Iteration</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Matrice_Iteration(0..Largeur_Ecran,0..Hauteur_Ecran)">T_Matrice_Iteration(0..Largeur_Ecran,0..Hauteur_Ecran)</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" > </td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Antialiasing = True</i></b></td>
+    <td width=" 150" class="Clr4" > </td>
+    <td width=" 150" class="Clr5" > </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Matrice_Iteration_Anti</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Matrice_Iteration(0..Largeur_Ecran*2+1,0..Hauteur_Ecran*2+1)">T_Matrice_Iteration(0..Largeur_Ecran*2+1,0..Hauteur_Ecran*2+1)</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau T_Fractal<i> (article)</i><a name="T_Fractal"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>T_Fractal<i> (article)</i><a name="T_Fractal"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Fractal</td>
+    <td width=" 150" class="Clr4" ><a href="#Cara_Fractal">Cara_Fractal</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Suiv</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Lien">T_Lien</a></td>
+    <td width=" 150" class="Clr5" ></td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau T_Liste_Fractals<i> (article)</i><a name="T_Liste_Fractals"></a>-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>T_Liste_Fractals<i> (article)</i><a name="T_Liste_Fractals"></a></b>
+    </th></tr>
+
+<tr><td width=" 150" class="Clr3" ><b><i>Champ</i></b></td>
+    <td width=" 150" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 150" class="Clr5" ><b><i>par d&eacute;faut</i></b></td></tr>
+
+<tr><td width=" 150" class="Clr3" >Tete</td>
+    <td width=" 150" class="Clr4" ><a href="#T_Lien">T_Lien</a></td>
+    <td width=" 150" class="Clr5" >null </td></tr>
+
+<tr><td width=" 150" class="Clr3" >Nb_Fractals</td>
+    <td width=" 150" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 150" class="Clr5" >0 </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+&nbsp;
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/Power_calculator.html b/Documentation/adadoc/Power_calculator.html
new file mode 100644 (file)
index 0000000..96b9020
--- /dev/null
@@ -0,0 +1,220 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_Calculator (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_Calculator</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Clauses USE-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses USE</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>use</i></td>
+    <td width=" 200" class="Clr5" >Power_Types</td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Calcul_Antialiasing<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Calcul_Antialiasing<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Matrice_Antialiasing</td>
+    <td width=" 100" class="Clr4" ><a href="#T_Matrice_Tampon">T_Matrice_Tampon</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#T_Matrice_Tampon">T_Matrice_Tampon</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Change_Angle<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Change_Angle<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >A</td>
+    <td width=" 100" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >B</td>
+    <td width=" 100" class="Clr4" ><a href="#Long_Float">Long_Float</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Mandel_Gen<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Mandel_Gen<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Largeur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Hauteur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#T_Matrice_Iteration">T_Matrice_Iteration</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Julia_Gen<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Julia_Gen<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Largeur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Hauteur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#T_Matrice_Iteration">T_Matrice_Iteration</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/adadoc/power_IO.html b/Documentation/adadoc/power_IO.html
new file mode 100644 (file)
index 0000000..74a6a8a
--- /dev/null
@@ -0,0 +1,261 @@
+<html><head>
+
+<!--  Généré par AdaDoc le 18. 7. 2001  -->
+<!--  AdaDoc créé par Vincent Decorges et Julien Burdy  -->
+<!--  http://sourceforge.net/projects/adadoc            -->
+
+<title>Power_IO (Paquetage ADA95)</title>
+
+
+<!-- StyleSheet par defaut -->
+<style type="text/css">
+Body {font-size : medium;font-family : 'Arial Ce';background-color : white;}
+H1 {font-size : large;font-family : 'Arial Black';}
+H2 {font-size : small;font-family : 'Arial Narow';}
+Th {font-size : small;font-weight : bold;text-align : left;}
+Td {font-size : x-small;border : 0.1em solid ;border-color : #aaaaff;}
+A:link {color : #2d37ff;text-decoration : none;}
+A:visited {color : #2d37ff;text-decoration : none;}
+A:hover {color : #696dff;text-decoration : none;}
+.Clr0 {background : #696dff;}
+.Clr1 {background : #aaaaff;}
+.Clr2 {background : #bbbbff;}
+.Clr3 {background : #ccccff;}
+.Clr4 {background : #ddddff;}
+.Clr5 {background : #eeeeff;}
+</style>
+
+
+</head><body>
+
+
+<h1>Paquetage Power_IO</h1>
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Clauses<a name="clause"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Clauses de contextes-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Clauses de contextes</b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr4" ><i>with</i></td>
+    <td width=" 200" class="Clr5" >Power_Types </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>D&eacute;clarations<a name="declaration"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Exceptions-->
+<table>
+<tr><th width=" 150" class="Clr1"><b>Exceptions</b>
+    </th></tr>
+
+<tr><td width=" 100" class="Clr4" >Erreur_Fichier</td>
+    <td width=" 0" class="Clr5" > </td></tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Titre + menu direct -->
+<h1>&nbsp;</h1>
+<h1>Sous programmes<a name="sousprogramme"></a></h1>
+<h2>Acc&egrave;s direct :  
+<a href="#clause">Clauses</a> -&nbsp;
+<a href="#generique">Partie g&eacute;n&eacute;rique</a> -&nbsp;
+<a href="#declaration">D&eacute;clarations</a> -&nbsp;
+<a href="#sousprogramme">Sous programmes</a></h2><hr>
+
+
+
+<!-- Tableau Enregistrer_Fractal<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Enregistrer_Fractal<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.Cara_Fractal">Power_Types.Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Charger_Fractal<i> (fonction)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Charger_Fractal<i> (fonction)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><b><i>RETOUR</i></b></td>
+    <td width=" 100" class="Clr3" ></td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.Cara_Fractal">Power_Types.Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Enregistrer_Liste<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Enregistrer_Liste<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Liste</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Liste_Fractals">Power_Types.T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Charger_Liste<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Charger_Liste<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE_SORTIE</i></td>
+    <td width=" 100" class="Clr3" >Liste</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.T_Liste_Fractals">Power_Types.T_Liste_Fractals</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+
+
+<!-- Tableau Rendre_Bmp<i> (proc&eacute;dure)</i>-->
+<table>
+<tr><th width=" 200" class="Clr1"><b>Rendre_Bmp<i> (proc&eacute;dure)</i></b>
+    </th></tr>
+
+<tr><td width=" 200" class="Clr2" ><b><i>Param&egrave;tres</i></b></td>
+    <td width=" 175" class="Clr3" ><b><i>Nom</i></b></td>
+    <td width=" 175" class="Clr4" ><b><i>Type</i></b></td>
+    <td width=" 100" class="Clr5" ><b><i>par d&eacute;faut</i></b></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Fractal</td>
+    <td width=" 100" class="Clr4" ><a href="#Power_Types.Cara_Fractal">Power_Types.Cara_Fractal</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Nom_Fichier</td>
+    <td width=" 100" class="Clr4" ><a href="#String">String</a></td>
+    <td width=" 100" class="Clr5" ></td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Largeur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" >1024 </td>
+    <td > </td> </tr>
+
+<tr><td width=" 100" class="Clr2" ><i>ENTREE</i></td>
+    <td width=" 100" class="Clr3" >Hauteur_Zone</td>
+    <td width=" 100" class="Clr4" ><a href="#Natural">Natural</a></td>
+    <td width=" 100" class="Clr5" >768 </td>
+    <td > </td> </tr>
+
+</table>
+&nbsp;
+<!-- Fin du tableau -->
+
+
+<!-- Fin -->
+<p align="right">g&eacute;n&eacute;r&eacute; par <a href="http://sourceforge.net/projects/adadoc/">AdaDoc</a> le  18. 7. 2001</p>
+</body> </html>
diff --git a/Documentation/koch1.jpg b/Documentation/koch1.jpg
new file mode 100644 (file)
index 0000000..f25bf7c
Binary files /dev/null and b/Documentation/koch1.jpg differ
diff --git a/Documentation/koch2.jpg b/Documentation/koch2.jpg
new file mode 100644 (file)
index 0000000..15c24d5
Binary files /dev/null and b/Documentation/koch2.jpg differ
diff --git a/FRACTALE espionnage/EasyFractale.exe b/FRACTALE espionnage/EasyFractale.exe
new file mode 100644 (file)
index 0000000..500ec11
Binary files /dev/null and b/FRACTALE espionnage/EasyFractale.exe differ
diff --git a/FRACTALE espionnage/fuck.ada b/FRACTALE espionnage/fuck.ada
new file mode 100644 (file)
index 0000000..2dcdf72
--- /dev/null
@@ -0,0 +1,50 @@
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Fractal                                                              --
+   -- But     : Enregistrer les caracteristiques d'un fractal dans un fichier                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * Les caracteristiques de la fractal : Fractal                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Fractal (Nom_Fichier : String; Fractal : Cara_Fractal) is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+
+   begin --Enregistrer_Fractal
+
+      Fractal_IO.Create (Fichier_Fractal, Fractal_IO.Out_File, Nom_Fichier); --Cree le fichier
+      Fractal_IO.Write (Fichier_Fractal, Fractal);    --Ecrit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --Ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;
+
+   end Enregistrer_Fractal;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_Fractal                                                                  --
+   -- But     : Charger les caracteristiques d'un fractal depuis un fichier                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  out    :  * Les caracteristiques de la fractal                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Charger_Fractal (Nom_Fichier : String; Fractal : out Cara_Fractal) is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+
+   begin --Enregistrer_Fractal
+
+      Fractal_IO.Open (Fichier_Fractal, Fractal_IO.In_File, Nom_Fichier); --Ouvre le fichier
+      Fractal_IO.Read (Fichier_Fractal, Fractal);   --Lit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;
+
+   end Charger_Fractal;
\ No newline at end of file
diff --git a/FRACTALE espionnage/palette0.pal b/FRACTALE espionnage/palette0.pal
new file mode 100644 (file)
index 0000000..d26278e
--- /dev/null
@@ -0,0 +1,257 @@
+Num  R   G   B
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
+1    255 255 255
+2    255 255 255
+3    255 255 255
+4    255 255 255
+5    0   0   0
+6    0   0   0
+7    0   0   0
+8    0   0   0
\ No newline at end of file
diff --git a/FRACTALE espionnage/palette1.pal b/FRACTALE espionnage/palette1.pal
new file mode 100644 (file)
index 0000000..5d5da1f
--- /dev/null
@@ -0,0 +1,260 @@
+Num  R   G   B
+1  38 52 229
+2  62 75 204
+3  86 97 178
+4  110 120 153
+5  134 142 127
+6  157 165 102
+7  181 187 76
+8  205 210 51
+9  229 232 25
+10  253 255 0
+11  255 255 0
+11  247 242 6
+12  242 229 12
+13  237 216 19
+14  232 204 25
+15  227 191 32
+16  222 178 38
+17  217 165 45
+18  211 153 51
+19  206 140 58
+20  201 127 64
+21  196 114 71
+22  191 102 77
+23  186 89 84
+24  180 76 90
+25  175 63 97
+26  170 51 103
+27  165 38 109
+28  160 25 116
+29  155 12 122
+30  150 0 129
+31  144 0 135
+31  153 8 133
+32  156 17 137
+33  160 25 141
+34  163 34 145
+35  167 42 149
+36  170 51 153
+37  174 59 156
+38  177 68 160
+39  180 76 164
+40  184 85 168
+41  187 93 172
+42  191 102 176
+43  194 110 180
+44  198 119 184
+45  201 127 188
+46  205 136 192
+47  208 144 196
+48  211 153 200
+49  215 161 204
+50  218 170 208
+51  222 178 212
+52  225 187 216
+53  229 195 219
+54  232 204 223
+55  235 212 227
+56  239 221 231
+57  242 229 235
+58  246 238 239
+59  249 246 243
+60  253 255 247
+61  255 255 251
+61  251 253 246
+62  250 252 244
+63  249 251 243
+64  248 250 242
+65  247 249 241
+66  245 248 239
+67  244 246 238
+68  243 245 237
+69  242 244 236
+70  240 243 234
+71  239 242 233
+72  238 241 232
+73  237 240 231
+74  236 238 229
+75  234 237 228
+76  233 236 227
+77  232 235 225
+78  231 234 224
+79  229 233 223
+80  228 231 222
+81  227 230 220
+82  226 229 219
+83  225 228 218
+84  223 227 217
+85  222 226 215
+86  221 225 214
+87  220 223 213
+88  218 222 211
+89  217 221 210
+90  216 220 209
+91  215 219 208
+92  214 218 206
+93  212 216 205
+94  211 215 204
+95  210 214 203
+96  209 213 201
+97  207 212 200
+98  206 211 199
+99  205 210 198
+100  204 208 196
+101  203 207 195
+102  201 206 194
+103  200 205 192
+104  199 204 191
+105  198 203 190
+106  196 201 189
+107  195 200 187
+108  194 199 186
+109  193 198 185
+110  192 197 184
+111  190 196 182
+112  189 195 181
+113  188 193 180
+114  187 192 178
+115  185 191 177
+116  184 190 176
+117  183 189 175
+118  182 188 173
+119  181 186 172
+120  179 185 171
+121  178 184 170
+122  177 183 168
+123  176 182 167
+124  174 181 166
+125  173 180 165
+126  172 178 163
+127  171 177 162
+128  170 176 161
+129  168 175 159
+130  167 174 158
+131  166 173 157
+132  165 171 156
+133  163 170 154
+134  162 169 153
+135  161 168 152
+136  160 167 151
+137  159 166 149
+138  157 165 148
+139  156 163 147
+140  155 162 145
+141  154 161 144
+142  152 160 143
+143  151 159 142
+144  150 158 140
+145  149 156 139
+146  148 155 138
+147  146 154 137
+148  145 153 135
+149  144 152 134
+150  143 151 133
+151  141 150 132
+152  140 148 130
+153  139 147 129
+154  138 146 128
+155  137 145 126
+156  135 144 125
+157  134 143 124
+158  133 141 123
+159  132 140 121
+160  131 139 120
+161  129 138 119
+162  128 137 118
+163  127 136 116
+164  126 135 115
+165  124 133 114
+166  123 132 112
+167  122 131 111
+168  121 130 110
+169  120 129 109
+170  118 128 107
+171  117 126 106
+172  116 125 105
+173  115 124 104
+174  113 123 102
+175  112 122 101
+176  111 121 100
+177  110 120 99
+178  109 118 97
+179  107 117 96
+180  106 116 95
+181  105 115 93
+182  104 114 92
+183  102 113 91
+184  101 111 90
+185  100 110 88
+186  99 109 87
+187  98 108 86
+188  96 107 85
+189  95 106 83
+190  94 105 82
+191  93 103 81
+192  91 102 79
+193  90 101 78
+194  89 100 77
+195  88 99 76
+196  87 98 74
+197  85 96 73
+198  84 95 72
+199  83 94 71
+200  82 93 69
+201  80 92 68
+202  79 91 67
+203  78 90 66
+204  77 88 64
+205  76 87 63
+206  74 86 62
+207  73 85 60
+208  72 84 59
+209  71 83 58
+210  69 81 57
+211  68 80 55
+212  67 79 54
+213  66 78 53
+214  65 77 52
+215  63 76 50
+216  62 75 49
+217  61 73 48
+218  60 72 46
+219  58 71 45
+220  57 70 44
+221  56 69 43
+222  55 68 41
+223  54 66 40
+224  52 65 39
+225  51 64 38
+226  50 63 36
+227  49 62 35
+228  47 61 34
+229  46 60 33
+230  45 58 31
+231  44 57 30
+232  43 56 29
+233  41 55 27
+234  40 54 26
+235  39 53 25
+236  38 51 24
+237  36 50 22
+238  35 49 21
+239  34 48 20
+240  33 47 19
+241  32 46 17
+242  30 45 16
+243  29 43 15
+244  28 42 13
+245  27 41 12
+246  25 40 11
+247  24 39 10
+248  23 38 8
+249  22 36 7
+250  21 35 6
+251  19 34 5
+252  18 33 3
+253  17 32 2
+254  16 31 1
+255  14 30 0
+256  13 28 0
diff --git a/FRACTALE espionnage/palette2.pal b/FRACTALE espionnage/palette2.pal
new file mode 100644 (file)
index 0000000..394c926
--- /dev/null
@@ -0,0 +1,260 @@
+Num  R   G   B
+1  27 40 242
+2  39 51 229
+3  51 61 216
+4  63 72 204
+5  75 82 191
+6  87 93 178
+7  99 103 165
+8  111 114 153
+9  123 124 140
+10  135 135 127
+11  147 145 114
+12  159 156 102
+13  171 166 89
+14  183 177 76
+15  195 187 63
+16  207 198 51
+17  219 208 38
+18  231 219 25
+19  243 229 12
+20  255 240 0
+21  255 250 0
+21  255 232 4
+22  255 224 9
+23  255 216 13
+24  255 208 18
+25  255 200 22
+26  255 192 27
+27  255 184 31
+28  255 176 36
+29  255 168 40
+30  255 160 45
+31  255 152 49
+32  255 144 54
+33  255 136 58
+34  255 128 63
+35  255 120 67
+36  255 113 72
+37  255 105 76
+38  255 97 81
+39  255 89 85
+40  255 81 90
+41  255 73 94
+42  255 65 99
+43  255 57 103
+44  255 49 108
+45  255 41 112
+46  255 33 117
+47  255 25 121
+48  255 17 126
+49  255 9 130
+50  255 1 135
+51  255 0 139
+51  252 6 132
+52  250 11 129
+53  248 16 126
+54  246 20 124
+55  244 25 121
+56  242 30 118
+57  240 35 116
+58  238 39 113
+59  236 44 110
+60  233 49 108
+61  231 54 105
+62  229 59 102
+63  227 63 99
+64  225 68 97
+65  223 73 94
+66  221 78 91
+67  219 82 89
+68  217 87 86
+69  215 92 83
+70  212 97 81
+71  210 101 78
+72  208 106 75
+73  206 111 72
+74  204 116 70
+75  202 120 67
+76  200 125 64
+77  198 130 62
+78  196 135 59
+79  194 139 56
+80  191 144 54
+81  189 149 51
+82  187 154 48
+83  185 159 45
+84  183 163 43
+85  181 168 40
+86  179 173 37
+87  177 178 35
+88  175 182 32
+89  173 187 29
+90  170 192 27
+91  168 197 24
+92  166 201 21
+93  164 206 18
+94  162 211 16
+95  160 216 13
+96  158 220 10
+97  156 225 8
+98  154 230 5
+99  152 235 2
+100  149 239 0
+101  147 244 0
+101  149 238 0
+102  148 237 0
+103  147 235 0
+104  146 234 0
+105  145 233 0
+106  144 231 0
+107  143 230 0
+108  143 229 0
+109  142 227 0
+110  141 226 0
+111  140 225 0
+112  139 223 0
+113  138 222 0
+114  137 221 0
+115  136 219 0
+116  136 218 0
+117  135 216 0
+118  134 215 0
+119  133 214 0
+120  132 212 0
+121  131 211 0
+122  130 210 0
+123  129 208 0
+124  129 207 0
+125  128 206 0
+126  127 204 0
+127  126 203 0
+128  125 202 0
+129  124 200 0
+130  123 199 0
+131  122 197 0
+132  122 196 0
+133  121 195 0
+134  120 193 0
+135  119 192 0
+136  118 191 0
+137  117 189 0
+138  116 188 0
+139  116 187 0
+140  115 185 0
+141  114 184 0
+142  113 183 0
+143  112 181 0
+144  111 180 0
+145  110 179 0
+146  109 177 0
+147  109 176 0
+148  108 174 0
+149  107 173 0
+150  106 172 0
+151  105 170 0
+152  104 169 0
+153  103 168 0
+154  102 166 0
+155  102 165 0
+156  101 164 0
+157  100 162 0
+158  99 161 0
+159  98 160 0
+160  97 158 0
+161  96 157 0
+162  96 155 0
+163  95 154 0
+164  94 153 0
+165  93 151 0
+166  92 150 0
+167  91 149 0
+168  90 147 0
+169  89 146 0
+170  89 145 0
+171  88 143 0
+172  87 142 0
+173  86 141 0
+174  85 139 0
+175  84 138 0
+176  83 137 0
+177  82 135 0
+178  82 134 0
+179  81 132 0
+180  80 131 0
+181  79 130 0
+182  78 128 0
+183  77 127 0
+184  76 126 0
+185  75 124 0
+186  75 123 0
+187  74 122 0
+188  73 120 0
+189  72 119 0
+190  71 118 0
+191  70 116 0
+192  69 115 0
+193  69 113 0
+194  68 112 0
+195  67 111 0
+196  66 109 0
+197  65 108 0
+198  64 107 0
+199  63 105 0
+200  62 104 0
+201  62 103 0
+202  61 101 0
+203  60 100 0
+204  59 99 0
+205  58 97 0
+206  57 96 0
+207  56 95 0
+208  55 93 0
+209  55 92 0
+210  54 90 0
+211  53 89 0
+212  52 88 0
+213  51 86 0
+214  50 85 0
+215  49 84 0
+216  48 82 0
+217  48 81 0
+218  47 80 0
+219  46 78 0
+220  45 77 0
+221  44 76 0
+222  43 74 0
+223  42 73 0
+224  42 71 0
+225  41 70 0
+226  40 69 0
+227  39 67 0
+228  38 66 0
+229  37 65 0
+230  36 63 0
+231  35 62 0
+232  35 61 0
+233  34 59 0
+234  33 58 0
+235  32 57 0
+236  31 55 0
+237  30 54 0
+238  29 53 0
+239  28 51 0
+240  28 50 0
+241  27 48 0
+242  26 47 0
+243  25 46 0
+244  24 44 0
+245  23 43 0
+246  22 42 0
+247  21 40 0
+248  21 39 0
+249  20 38 0
+250  19 36 0
+251  18 35 0
+252  17 34 0
+253  16 32 0
+254  15 31 0
+255  15 29 0
+256  14 28 0
diff --git a/FRACTALE espionnage/palette3.pal b/FRACTALE espionnage/palette3.pal
new file mode 100644 (file)
index 0000000..7cf4bb4
--- /dev/null
@@ -0,0 +1,260 @@
+Num  R   G   B
+1  40 146 0
+2  64 132 0
+3  88 117 0
+4  112 103 0
+5  135 89 0
+6  159 74 0
+7  183 60 0
+8  207 45 0
+9  231 31 0
+10  255 16 0
+11  255 2 0
+11  243 16 6
+12  231 15 13
+13  219 14 19
+14  207 13 26
+15  195 12 33
+16  184 11 39
+17  172 10 46
+18  160 10 53
+19  148 9 59
+20  136 8 66
+21  125 7 73
+22  113 6 79
+23  101 5 86
+24  89 5 93
+25  77 4 99
+26  66 3 106
+27  54 2 113
+28  42 1 119
+29  30 0 126
+30  18 0 133
+31  6 0 139
+31  26 8 128
+32  34 16 124
+33  42 24 119
+34  50 32 115
+35  58 40 110
+36  66 48 106
+37  73 56 102
+38  81 64 97
+39  89 72 93
+40  97 80 88
+41  105 88 84
+42  113 96 79
+43  121 104 75
+44  129 112 71
+45  136 120 66
+46  144 128 62
+47  152 136 57
+48  160 144 53
+49  168 152 48
+50  176 160 44
+51  184 168 39
+52  192 176 35
+53  199 184 31
+54  207 192 26
+55  215 200 22
+56  223 208 17
+57  231 216 13
+58  239 224 8
+59  247 232 4
+60  255 240 0
+61  255 248 0
+61  253 238 0
+62  252 237 0
+63  251 236 0
+64  250 235 0
+65  248 234 0
+66  247 233 0
+67  246 232 0
+68  245 231 0
+69  243 230 0
+70  242 229 0
+71  241 228 0
+72  240 227 0
+73  238 226 0
+74  237 224 0
+75  236 223 0
+76  235 222 0
+77  234 221 0
+78  232 220 0
+79  231 219 0
+80  230 218 0
+81  229 217 0
+82  227 216 0
+83  226 215 0
+84  225 214 0
+85  224 213 0
+86  222 212 0
+87  221 210 0
+88  220 209 0
+89  219 208 0
+90  218 207 0
+91  216 206 0
+92  215 205 0
+93  214 204 0
+94  213 203 0
+95  211 202 0
+96  210 201 0
+97  209 200 0
+98  208 199 0
+99  206 198 0
+100  205 196 0
+101  204 195 0
+102  203 194 0
+103  202 193 0
+104  200 192 0
+105  199 191 0
+106  198 190 0
+107  197 189 0
+108  195 188 0
+109  194 187 0
+110  193 186 0
+111  192 185 0
+112  190 184 0
+113  189 182 0
+114  188 181 0
+115  187 180 0
+116  186 179 0
+117  184 178 0
+118  183 177 0
+119  182 176 0
+120  181 175 0
+121  179 174 0
+122  178 173 0
+123  177 172 0
+124  176 171 0
+125  174 170 0
+126  173 168 0
+127  172 167 0
+128  171 166 0
+129  170 165 0
+130  168 164 0
+131  167 163 0
+132  166 162 0
+133  165 161 0
+134  163 160 0
+135  162 159 0
+136  161 158 0
+137  160 157 0
+138  158 156 0
+139  157 154 0
+140  156 153 0
+141  155 152 0
+142  154 151 0
+143  152 150 0
+144  151 149 0
+145  150 148 0
+146  149 147 0
+147  147 146 0
+148  146 145 0
+149  145 144 0
+150  144 143 0
+151  142 142 0
+152  141 140 0
+153  140 139 0
+154  139 138 0
+155  138 137 0
+156  136 136 0
+157  135 135 0
+158  134 134 0
+159  133 133 0
+160  131 132 0
+161  130 131 0
+162  129 130 0
+163  128 129 0
+164  126 128 0
+165  125 126 0
+166  124 125 0
+167  123 124 0
+168  122 123 0
+169  120 122 0
+170  119 121 0
+171  118 120 0
+172  117 119 0
+173  115 118 0
+174  114 117 0
+175  113 116 0
+176  112 115 0
+177  110 114 0
+178  109 112 0
+179  108 111 0
+180  107 110 0
+181  106 109 0
+182  104 108 0
+183  103 107 0
+184  102 106 0
+185  101 105 0
+186  99 104 0
+187  98 103 0
+188  97 102 0
+189  96 101 0
+190  94 100 0
+191  93 98 0
+192  92 97 0
+193  91 96 0
+194  90 95 0
+195  88 94 0
+196  87 93 0
+197  86 92 0
+198  85 91 0
+199  83 90 0
+200  82 89 0
+201  81 88 0
+202  80 87 0
+203  78 86 0
+204  77 84 0
+205  76 83 0
+206  75 82 0
+207  74 81 0
+208  72 80 0
+209  71 79 0
+210  70 78 0
+211  69 77 0
+212  67 76 0
+213  66 75 0
+214  65 74 0
+215  64 73 0
+216  62 72 0
+217  61 70 0
+218  60 69 0
+219  59 68 0
+220  58 67 0
+221  56 66 0
+222  55 65 0
+223  54 64 0
+224  53 63 0
+225  51 62 0
+226  50 61 0
+227  49 60 0
+228  48 59 0
+229  46 58 0
+230  45 56 0
+231  44 55 0
+232  43 54 0
+233  42 53 0
+234  40 52 0
+235  39 51 0
+236  38 50 0
+237  37 49 0
+238  35 48 0
+239  34 47 0
+240  33 46 0
+241  32 45 0
+242  30 44 0
+243  29 42 0
+244  28 41 0
+245  27 40 0
+246  26 39 0
+247  24 38 0
+248  23 37 0
+249  22 36 0
+250  21 35 0
+251  19 34 0
+252  18 33 0
+253  17 32 0
+254  16 31 0
+255  14 30 0
+256  13 28 0
diff --git a/FRACTALE espionnage/palette4.pal b/FRACTALE espionnage/palette4.pal
new file mode 100644 (file)
index 0000000..bf2e7a8
--- /dev/null
@@ -0,0 +1,260 @@
+Num  R   G   B
+1  116 13 119
+2  123 25 113
+3  130 37 106
+4  138 49 100
+5  145 61 94
+6  152 73 87
+7  159 85 81
+8  167 97 75
+9  174 109 69
+10  181 120 62
+11  189 132 56
+12  196 144 50
+13  203 156 43
+14  211 168 37
+15  218 180 31
+16  225 192 25
+17  233 204 18
+18  240 216 12
+19  247 228 6
+20  255 240 0
+21  255 251 0
+21  248 240 8
+22  241 241 16
+23  235 241 24
+24  228 242 32
+25  221 242 40
+26  215 243 49
+27  208 243 57
+28  202 244 65
+29  195 244 73
+30  188 245 81
+31  182 245 90
+32  175 246 98
+33  168 246 106
+34  162 247 114
+35  155 247 122
+36  149 248 131
+37  142 248 139
+38  135 249 147
+39  129 249 155
+40  122 250 163
+41  115 250 171
+42  109 251 180
+43  102 251 188
+44  96 252 196
+45  89 252 204
+46  82 253 212
+47  76 253 221
+48  69 254 229
+49  62 254 237
+50  56 255 245
+51  49 255 253
+51  60 250 240
+52  64 245 235
+53  68 240 230
+54  72 235 225
+55  76 231 221
+56  80 226 216
+57  84 221 211
+58  88 216 206
+59  92 212 201
+60  95 207 196
+61  99 202 191
+62  103 197 186
+63  107 193 181
+64  111 188 176
+65  115 183 171
+66  119 178 167
+67  123 174 162
+68  127 169 157
+69  131 164 152
+70  135 159 147
+71  139 154 142
+72  143 150 137
+73  147 145 132
+74  151 140 127
+75  155 135 122
+76  159 131 117
+77  163 126 112
+78  167 121 108
+79  171 116 103
+80  175 112 98
+81  179 107 93
+82  183 102 88
+83  187 97 83
+84  191 93 78
+85  195 88 73
+86  199 83 68
+87  203 78 63
+88  207 74 58
+89  211 69 54
+90  215 64 49
+91  219 59 44
+92  223 54 39
+93  227 50 34
+94  231 45 29
+95  235 40 24
+96  239 35 19
+97  243 31 14
+98  247 26 9
+99  251 21 4
+100  255 16 0
+101  258 12 0
+101  254 18 1
+102  254 19 3
+103  254 21 4
+104  254 23 6
+105  254 24 7
+106  254 26 9
+107  254 27 10
+108  254 29 12
+109  254 30 14
+110  254 32 15
+111  254 33 17
+112  254 35 18
+113  254 36 20
+114  254 38 21
+115  254 39 23
+116  254 41 24
+117  254 42 26
+118  254 44 28
+119  254 46 29
+120  254 47 31
+121  254 49 32
+122  254 50 34
+123  254 52 35
+124  254 53 37
+125  254 55 39
+126  254 56 40
+127  254 58 42
+128  253 59 43
+129  253 61 45
+130  253 62 46
+131  253 64 48
+132  253 66 49
+133  253 67 51
+134  253 69 53
+135  253 70 54
+136  253 72 56
+137  253 73 57
+138  253 75 59
+139  253 76 60
+140  253 78 62
+141  253 79 63
+142  253 81 65
+143  253 82 67
+144  253 84 68
+145  253 86 70
+146  253 87 71
+147  253 89 73
+148  253 90 74
+149  253 92 76
+150  253 93 78
+151  253 95 79
+152  253 96 81
+153  253 98 82
+154  253 99 84
+155  253 101 85
+156  252 102 87
+157  252 104 88
+158  252 105 90
+159  252 107 92
+160  252 109 93
+161  252 110 95
+162  252 112 96
+163  252 113 98
+164  252 115 99
+165  252 116 101
+166  252 118 102
+167  252 119 104
+168  252 121 106
+169  252 122 107
+170  252 124 109
+171  252 125 110
+172  252 127 112
+173  252 129 113
+174  252 130 115
+175  252 132 117
+176  252 133 118
+177  252 135 120
+178  252 136 121
+179  252 138 123
+180  252 139 124
+181  252 141 126
+182  252 142 127
+183  251 144 129
+184  251 145 131
+185  251 147 132
+186  251 148 134
+187  251 150 135
+188  251 152 137
+189  251 153 138
+190  251 155 140
+191  251 156 142
+192  251 158 143
+193  251 159 145
+194  251 161 146
+195  251 162 148
+196  251 164 149
+197  251 165 151
+198  251 167 152
+199  251 168 154
+200  251 170 156
+201  251 172 157
+202  251 173 159
+203  251 175 160
+204  251 176 162
+205  251 178 163
+206  251 179 165
+207  251 181 166
+208  251 182 168
+209  251 184 170
+210  251 185 171
+211  250 187 173
+212  250 188 174
+213  250 190 176
+214  250 192 177
+215  250 193 179
+216  250 195 181
+217  250 196 182
+218  250 198 184
+219  250 199 185
+220  250 201 187
+221  250 202 188
+222  250 204 190
+223  250 205 191
+224  250 207 193
+225  250 208 195
+226  250 210 196
+227  250 211 198
+228  250 213 199
+229  250 215 201
+230  250 216 202
+231  250 218 204
+232  250 219 205
+233  250 221 207
+234  250 222 209
+235  250 224 210
+236  250 225 212
+237  250 227 213
+238  249 228 215
+239  249 230 216
+240  249 231 218
+241  249 233 220
+242  249 235 221
+243  249 236 223
+244  249 238 224
+245  249 239 226
+246  249 241 227
+247  249 242 229
+248  249 244 230
+249  249 245 232
+250  249 247 234
+251  249 248 235
+252  249 250 237
+253  249 251 238
+254  249 253 240
+255  249 254 241
+256  249 256 243
diff --git a/FRACTALE espionnage/palette5.pal b/FRACTALE espionnage/palette5.pal
new file mode 100644 (file)
index 0000000..2c3f5b8
--- /dev/null
@@ -0,0 +1,260 @@
+Num  R   G   B
+1  138 40 0
+2  151 62 0
+3  164 84 0
+4  177 106 0
+5  190 128 0
+6  203 150 0
+7  216 172 0
+8  229 194 0
+9  242 216 0
+10  255 238 0
+11  255 260 0
+11  255 227 0
+12  255 216 0
+13  255 205 0
+14  255 195 0
+15  255 184 0
+16  255 173 0
+17  255 162 0
+18  255 151 0
+19  255 141 0
+20  255 130 0
+21  255 119 0
+22  255 108 0
+23  255 97 0
+24  255 87 0
+25  255 76 0
+26  255 65 0
+27  255 54 0
+28  255 44 0
+29  255 33 0
+30  255 22 0
+31  255 11 0
+31  255 26 0
+32  255 29 1
+33  255 33 2
+34  255 36 2
+35  255 40 3
+36  255 43 4
+37  255 47 4
+38  255 50 5
+39  255 54 6
+40  255 57 6
+41  255 61 7
+42  255 64 8
+43  255 68 8
+44  255 71 9
+45  255 75 10
+46  255 78 11
+47  255 82 11
+48  255 85 12
+49  255 89 13
+50  255 92 13
+51  255 96 14
+52  255 99 15
+53  255 103 15
+54  255 106 16
+55  255 110 17
+56  255 113 17
+57  255 117 18
+58  255 120 19
+59  255 124 19
+60  255 127 20
+61  255 131 21
+61  255 128 20
+62  255 128 20
+63  255 129 20
+64  255 129 20
+65  255 130 20
+66  255 131 19
+67  255 131 19
+68  255 132 19
+69  255 132 19
+70  255 133 19
+71  255 134 19
+72  255 134 19
+73  255 135 19
+74  255 135 19
+75  255 136 19
+76  255 137 18
+77  255 137 18
+78  255 138 18
+79  255 139 18
+80  255 139 18
+81  255 140 18
+82  255 140 18
+83  255 141 18
+84  255 142 18
+85  255 142 17
+86  255 143 17
+87  255 143 17
+88  255 144 17
+89  255 145 17
+90  255 145 17
+91  255 146 17
+92  255 146 17
+93  255 147 17
+94  255 148 17
+95  255 148 16
+96  255 149 16
+97  255 149 16
+98  255 150 16
+99  255 151 16
+100  255 151 16
+101  255 152 16
+102  255 152 16
+103  255 153 16
+104  255 154 15
+105  255 154 15
+106  255 155 15
+107  255 155 15
+108  255 156 15
+109  255 157 15
+110  255 157 15
+111  255 158 15
+112  255 159 15
+113  255 159 15
+114  255 160 14
+115  255 160 14
+116  255 161 14
+117  255 162 14
+118  255 162 14
+119  255 163 14
+120  255 163 14
+121  255 164 14
+122  255 165 14
+123  255 165 13
+124  255 166 13
+125  255 166 13
+126  255 167 13
+127  255 168 13
+128  255 168 13
+129  255 169 13
+130  255 169 13
+131  255 170 13
+132  255 171 13
+133  255 171 12
+134  255 172 12
+135  255 172 12
+136  255 173 12
+137  255 174 12
+138  255 174 12
+139  255 175 12
+140  255 175 12
+141  255 176 12
+142  255 177 11
+143  255 177 11
+144  255 178 11
+145  255 178 11
+146  255 179 11
+147  255 180 11
+148  255 180 11
+149  255 181 11
+150  255 182 11
+151  255 182 10
+152  255 183 10
+153  255 183 10
+154  255 184 10
+155  255 185 10
+156  255 185 10
+157  255 186 10
+158  255 186 10
+159  255 187 10
+160  255 188 10
+161  255 188 9
+162  255 189 9
+163  255 189 9
+164  255 190 9
+165  255 191 9
+166  255 191 9
+167  255 192 9
+168  255 192 9
+169  255 193 9
+170  255 194 8
+171  255 194 8
+172  255 195 8
+173  255 195 8
+174  255 196 8
+175  255 197 8
+176  255 197 8
+177  255 198 8
+178  255 198 8
+179  255 199 8
+180  255 200 7
+181  255 200 7
+182  255 201 7
+183  255 202 7
+184  255 202 7
+185  255 203 7
+186  255 203 7
+187  255 204 7
+188  255 205 7
+189  255 205 6
+190  255 206 6
+191  255 206 6
+192  255 207 6
+193  255 208 6
+194  255 208 6
+195  255 209 6
+196  255 209 6
+197  255 210 6
+198  255 211 6
+199  255 211 5
+200  255 212 5
+201  255 212 5
+202  255 213 5
+203  255 214 5
+204  255 214 5
+205  255 215 5
+206  255 215 5
+207  255 216 5
+208  255 217 4
+209  255 217 4
+210  255 218 4
+211  255 218 4
+212  255 219 4
+213  255 220 4
+214  255 220 4
+215  255 221 4
+216  255 222 4
+217  255 222 4
+218  255 223 3
+219  255 223 3
+220  255 224 3
+221  255 225 3
+222  255 225 3
+223  255 226 3
+224  255 226 3
+225  255 227 3
+226  255 228 3
+227  255 228 2
+228  255 229 2
+229  255 229 2
+230  255 230 2
+231  255 231 2
+232  255 231 2
+233  255 232 2
+234  255 232 2
+235  255 233 2
+236  255 234 2
+237  255 234 1
+238  255 235 1
+239  255 235 1
+240  255 236 1
+241  255 237 1
+242  255 237 1
+243  255 238 1
+244  255 238 1
+245  255 239 1
+246  255 240 0
+247  255 240 0
+248  255 241 0
+249  255 241 0
+250  255 242 0
+251  255 243 0
+252  255 243 0
+253  255 244 0
+254  255 245 0
+255  255 245 0
+256  255 246 0
diff --git a/FRACTALE espionnage/palette6.pal b/FRACTALE espionnage/palette6.pal
new file mode 100644 (file)
index 0000000..0944663
--- /dev/null
@@ -0,0 +1,265 @@
+Num  R   G   B
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
+1  249 251 214
+2  250 251 190
+3  251 251 166
+4  251 251 142
+5  252 251 119
+6  252 251 95
+7  253 251 71
+8  253 251 47
+9  254 251 23
+10  255 251 0
+11  255 251 0
+11  255 227 0
+12  255 204 0
+13  255 180 0
+14  255 157 0
+15  255 134 0
+16  255 110 0
+17  255 87 0
+18  255 63 0
+19  255 40 0
+20  255 16 0
+21  255 0 0
+21  244 17 25
+22  233 17 51
+23  222 18 76
+24  211 18 102
+25  200 18 127
+26  189 19 153
+27  178 19 178
+28  168 19 204
+29  157 20 229
+30  146 20 255
+31  135 21 280
+31  133 21 229
+32  120 22 204
+33  106 23 178
+34  93 24 153
+35  80 25 127
+36  67 26 102
+37  54 27 76
+38  41 28 51
+39  28 29 25
+40  15 30 0
+41  1 30 0
diff --git a/FRACTALE espionnage/palette7.pal b/FRACTALE espionnage/palette7.pal
new file mode 100644 (file)
index 0000000..5ea3b1a
--- /dev/null
@@ -0,0 +1,307 @@
+Num  R   G   B
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
+1  189 252 51
+2  142 249 102
+3  95 246 153
+4  48 243 204
+5  1 240 255
+6  0 237 255
+6  52 192 246
+7  103 145 237
+8  153 98 228
+9  204 51 219
+10  255 3 210
+11  255 0 201
+11  253 54 168
+12  251 104 126
+13  249 154 84
+14  247 204 42
+15  245 255 0
\ No newline at end of file
diff --git a/FRACTALE espionnage/palette8.pal b/FRACTALE espionnage/palette8.pal
new file mode 100644 (file)
index 0000000..4eadac0
--- /dev/null
@@ -0,0 +1,265 @@
+Num  R   G   B
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
+1  33 177 0
+2  52 159 0
+3  71 141 0
+4  90 123 0
+5  108 105 0
+6  127 88 0
+7  146 70 0
+8  165 52 0
+9  183 34 0
+10  202 16 0
+11  221 0 0
+11  183 15 19
+12  165 14 39
+13  146 13 59
+14  128 12 79
+15  109 11 99
+16  91 10 119
+17  72 9 139
+18  54 7 159
+19  35 6 178
+20  16 5 198
+21  0 4 218
+21  15 24 180
+22  13 43 162
+23  11 61 144
+24  10 80 126
+25  8 99 108
+26  6 118 90
+27  5 136 72
+28  3 155 54
+29  1 174 36
+30  0 193 18
+31  0 211 0
diff --git a/FRACTALE espionnage/palette9.pal b/FRACTALE espionnage/palette9.pal
new file mode 100644 (file)
index 0000000..8376c88
--- /dev/null
@@ -0,0 +1,145 @@
+Num  R   G   B
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
+1    255 0   0
+2    255 0   0
+3    0   0   255
+4    0   0   255
\ No newline at end of file
diff --git a/Infos concernant la doc a rendre/Infos doc Page 1.jpg b/Infos concernant la doc a rendre/Infos doc Page 1.jpg
new file mode 100644 (file)
index 0000000..90f69da
Binary files /dev/null and b/Infos concernant la doc a rendre/Infos doc Page 1.jpg differ
diff --git a/Infos concernant la doc a rendre/Infos doc Page 2.jpg b/Infos concernant la doc a rendre/Infos doc Page 2.jpg
new file mode 100644 (file)
index 0000000..afe4b1d
Binary files /dev/null and b/Infos concernant la doc a rendre/Infos doc Page 2.jpg differ
diff --git a/Infos concernant la doc a rendre/Infos doc Page 3.jpg b/Infos concernant la doc a rendre/Infos doc Page 3.jpg
new file mode 100644 (file)
index 0000000..00d690c
Binary files /dev/null and b/Infos concernant la doc a rendre/Infos doc Page 3.jpg differ
diff --git a/Infos concernant la doc a rendre/Infos doc Page 4.jpg b/Infos concernant la doc a rendre/Infos doc Page 4.jpg
new file mode 100644 (file)
index 0000000..e530391
Binary files /dev/null and b/Infos concernant la doc a rendre/Infos doc Page 4.jpg differ
diff --git a/Infos concernant la doc a rendre/Infos doc Page 5.jpg b/Infos concernant la doc a rendre/Infos doc Page 5.jpg
new file mode 100644 (file)
index 0000000..91b48ae
Binary files /dev/null and b/Infos concernant la doc a rendre/Infos doc Page 5.jpg differ
diff --git a/Install/GPL (license).txt b/Install/GPL (license).txt
new file mode 100644 (file)
index 0000000..524a46d
--- /dev/null
@@ -0,0 +1,133 @@
+GNU GENERAL PUBLIC LICENSE
+Version 2, June 1991 
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.  
+59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+Preamble
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. 
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. 
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. 
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. 
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. 
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. 
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. 
+
+The precise terms and conditions for copying, distribution and modification follow. 
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". 
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. 
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: 
+
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. 
+
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. 
+
+c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) 
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. 
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. 
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: 
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, 
+
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, 
+
+c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) 
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. 
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. 
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. 
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. 
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. 
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. 
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
+
+
+END OF TERMS AND CONDITIONS
+How to Apply These Terms to Your New Programs
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. 
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. 
+
+one line to give the program's name and an idea of what it does.
+Copyright (C) yyyy  name of author
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail. 
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode: 
+
+Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'.  This is free software, and you are welcome
+to redistribute it under certain conditions; type `show c' 
+for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. 
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: 
+
+Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision'
+(which makes passes at compilers) written 
+by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. 
diff --git a/Install/LOGO.bmp b/Install/LOGO.bmp
new file mode 100644 (file)
index 0000000..7f9dbab
Binary files /dev/null and b/Install/LOGO.bmp differ
diff --git a/Install/LOGO.psd b/Install/LOGO.psd
new file mode 100644 (file)
index 0000000..91f94c7
Binary files /dev/null and b/Install/LOGO.psd differ
diff --git a/Install/Power Fractal.nsi b/Install/Power Fractal.nsi
new file mode 100644 (file)
index 0000000..4abaadb
--- /dev/null
@@ -0,0 +1,137 @@
+; Install_Mode_Index.nsi
+;
+; Installation du programme 'Mode d'adressage' 
+; Avec la possibilité de désinstallation et d'ajout (optinel)
+; d'un racourci dans le menu 'Démarrer'
+;
+;
+
+Function .onInit
+  SetOutPath $TEMP
+  File /oname=spltmp.dat "LOGO.bmp"
+  File /oname=spltmp.exe "C:\program files\nsis\splash.exe"
+  ExecWait '"$TEMP\spltmp.exe" 3000 $HWNDPARENT spltmp.dat'
+  Delete $TEMP\spltmp.exe
+  Delete $TEMP\spltmp.dat
+FunctionEnd
+
+
+ShowInstDetails show
+
+; Le nom de l'installation
+Name "Power Fractal - Installation"
+
+; Le nom du fichier d'installation
+OutFile "PowerFractal  1.0 - Install.exe"
+
+; Le repertoire d'installation par défaut
+InstallDir $PROGRAMFILES\Powerfractal
+
+#--------------------------------------------------------
+; l'icon
+Icon F:\Eivd-Data\Projet_Fractal\Install\icon.ico
+
+;Les petits boutons
+EnabledBitmap button_on.bmp
+
+
+DisabledBitmap button_off.bmp
+
+#--------------------------------------------------------
+
+; Clef inscrit dans le registre correspondant au reprtoire d'installation
+; (Si une nouvelle installation est lancé, elle sera ecrasé)
+InstallDirRegKey HKLM SOFTWARE\PowerFractal "Install_Dir"
+
+
+; Le texte d'acceuil
+ComponentText "This will install Power Fractal on your computer. Select which optional things you want installed."
+
+; le texte qui propose à l'utilisateur un repertoire
+DirText "Choose a directory to install in to:"
+
+;----------------------------------COPIE DES FICHIERS------------------------------
+; La section de copie de fichier
+Section "Fractal (required)"
+  ; Indique le repertoire d'installation
+  SetOutPath $INSTDIR
+  ; Y met ces fichiers :
+  File PowerFractal.exe
+  File PowerFractal_Manuel_d_utilisation.pdf
+  File Que_est_qu_une_fractal_.pdf
+  File icon.ico
+  SetOutPath $SYSDIR
+  File graphmin.dll
+  SetOutPath $INSTDIR
+
+  ; Inscrit l'installation dans le registre :
+  WriteRegStr HKLM SOFTWARE\Powerfractal "Install_Dir" "$INSTDIR"
+  ; Inscrit les clefs de desinstallation
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PowerFractal" "DisplayName" "Mode_Adressage (Remove only)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PowerFractal" "UninstallString" '"$INSTDIR\uninstall.exe"'
+SectionEnd
+
+SectionDivider
+
+;-----------------------------------OPTIONS---------------------------------------
+; section concernant les options
+Section "Start Menu Shortcuts"
+  CreateDirectory "$SMPROGRAMS\PowerFractal"
+  CreateShortCut "$SMPROGRAMS\PowerFractal\Uninstall.lnk" "$INSTDIR\uninstall.exe" #"" "$INSTDIR\uninstall.exe" 
+  CreateShortCut "$SMPROGRAMS\PowerFractal\PowerFractal.lnk" "$INSTDIR\PowerFractal.exe" "" "$INSTDIR\icon.ico" #"" "$INSTDIR\PowerFractal.exe" 0
+  CreateShortCut "$SMPROGRAMS\PowerFractal\Manuel d'utilisation.lnk" "$INSTDIR\PowerFractal_Manuel_d_utilisation.pdf"
+  CreateShortCut "$SMPROGRAMS\PowerFractal\Que est qu'une fractal-.lnk" "$INSTDIR\Que_est_qu_une_fractal_.pdf"
+SectionEnd
+
+Section "Desktop Shortcut"
+  CreateShortCut "$DESKTOP\PowerFractal.lnk" "$INSTDIR\PowerFractal.exe" "" "$INSTDIR\icon.ico" # """$INSTDIR\PowerFractal.exe" 0
+SectionEnd
+
+Section "ADA Source and Documentation (in french)"
+  CreateDirectory "$INSTDIR\Src"
+  SetOutPath $INSTDIR\Src
+  file Source_PowerFractal.zip
+SectionEnd
+
+#---------------------------------------------------------------------------------
+
+; Désinstallation
+
+UninstallText "This will uninstall Power_fractal. Hit next to continue."
+UninstallExeName "uninstall.exe"
+
+; Section spéciale de désinstallation.
+Section "Uninstall"
+
+  ; Enleve la clef du registre
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PowerFractal"
+  DeleteRegKey HKLM SOFTWARE\PowerFractal
+
+
+  ; Enleve le prog
+  Delete $INSTDIR\PowerFractal.exe
+  ; Enleve le desinstaller (exe)
+  Delete $INSTDIR\uninstall.exe
+  ;Enleve l'icon
+
+  Delete $INSTDIR\Icon.ico
+
+  Delete $INSTDIR\Manuel_d_utilisation.pdf
+
+  Delete $INSTDIR\Que_est_qu_une_fractal_.pdf
+
+  Delete $INSTDIR\PowerFractal_Manuel_d_utilisation.pdf
+
+  Delete $INSTDIR\src\Source_PowerFractal.zip
+
+  Delete $SYSDIR\graphmin.dll
+
+  Delete "$SMPROGRAMS\PowerFractal\*.*"
+
+  Delete "$DESKTOP\PowerFractal.lnk"
+
+  RMDir "$SMPROGRAMS\PowerFractal"
+  RMDir "$INSTDIR"
+SectionEnd
+
+; eof
diff --git a/Install/PowerFractal 1.0 - Install.exe b/Install/PowerFractal 1.0 - Install.exe
new file mode 100644 (file)
index 0000000..eb45773
Binary files /dev/null and b/Install/PowerFractal 1.0 - Install.exe differ
diff --git a/Install/PowerFractal.exe b/Install/PowerFractal.exe
new file mode 100644 (file)
index 0000000..8f56e93
Binary files /dev/null and b/Install/PowerFractal.exe differ
diff --git a/Install/PowerFractal.zip b/Install/PowerFractal.zip
new file mode 100644 (file)
index 0000000..ea9d6b6
Binary files /dev/null and b/Install/PowerFractal.zip differ
diff --git a/Install/PowerFractal_Manuel_d_utilisation.pdf b/Install/PowerFractal_Manuel_d_utilisation.pdf
new file mode 100644 (file)
index 0000000..1e1ad94
Binary files /dev/null and b/Install/PowerFractal_Manuel_d_utilisation.pdf differ
diff --git a/Install/Que_est_qu_une_fractal_.pdf b/Install/Que_est_qu_une_fractal_.pdf
new file mode 100644 (file)
index 0000000..bb10f82
Binary files /dev/null and b/Install/Que_est_qu_une_fractal_.pdf differ
diff --git a/Install/Source_PowerFractal.zip b/Install/Source_PowerFractal.zip
new file mode 100644 (file)
index 0000000..1f20934
Binary files /dev/null and b/Install/Source_PowerFractal.zip differ
diff --git a/Install/button_off.bmp b/Install/button_off.bmp
new file mode 100644 (file)
index 0000000..3ef107f
Binary files /dev/null and b/Install/button_off.bmp differ
diff --git a/Install/button_on.bmp b/Install/button_on.bmp
new file mode 100644 (file)
index 0000000..3d6f081
Binary files /dev/null and b/Install/button_on.bmp differ
diff --git a/Install/graphmin.dll b/Install/graphmin.dll
new file mode 100644 (file)
index 0000000..7e6838e
Binary files /dev/null and b/Install/graphmin.dll differ
diff --git a/Install/icon.ico b/Install/icon.ico
new file mode 100644 (file)
index 0000000..dfc2b32
Binary files /dev/null and b/Install/icon.ico differ
diff --git a/Introduction de Power Fractal.doc b/Introduction de Power Fractal.doc
new file mode 100644 (file)
index 0000000..b0a6075
Binary files /dev/null and b/Introduction de Power Fractal.doc differ
diff --git a/Logo/Dans Prog 01.bmp b/Logo/Dans Prog 01.bmp
new file mode 100644 (file)
index 0000000..46bdb9d
Binary files /dev/null and b/Logo/Dans Prog 01.bmp differ
diff --git a/Logo/Dans Prog 01.psd b/Logo/Dans Prog 01.psd
new file mode 100644 (file)
index 0000000..55a93ea
Binary files /dev/null and b/Logo/Dans Prog 01.psd differ
diff --git a/Logo/LOGO.jpg b/Logo/LOGO.jpg
new file mode 100644 (file)
index 0000000..be1909c
Binary files /dev/null and b/Logo/LOGO.jpg differ
diff --git a/Logo/LOGO.psd b/Logo/LOGO.psd
new file mode 100644 (file)
index 0000000..df4141b
Binary files /dev/null and b/Logo/LOGO.psd differ
diff --git a/Logo/LOGO2.jpg b/Logo/LOGO2.jpg
new file mode 100644 (file)
index 0000000..4c82446
Binary files /dev/null and b/Logo/LOGO2.jpg differ
diff --git a/Logo/LOGO2.psd b/Logo/LOGO2.psd
new file mode 100644 (file)
index 0000000..eac6b49
Binary files /dev/null and b/Logo/LOGO2.psd differ
diff --git a/Logo/LOGO3.jpg b/Logo/LOGO3.jpg
new file mode 100644 (file)
index 0000000..33ea66b
Binary files /dev/null and b/Logo/LOGO3.jpg differ
diff --git a/Logo/LOGO3.psd b/Logo/LOGO3.psd
new file mode 100644 (file)
index 0000000..459813b
Binary files /dev/null and b/Logo/LOGO3.psd differ
diff --git a/Logo/O_1 32 32.bmp b/Logo/O_1 32 32.bmp
new file mode 100644 (file)
index 0000000..474f55c
Binary files /dev/null and b/Logo/O_1 32 32.bmp differ
diff --git a/Logo/O_1 800 600.bmp b/Logo/O_1 800 600.bmp
new file mode 100644 (file)
index 0000000..e2ca550
Binary files /dev/null and b/Logo/O_1 800 600.bmp differ
diff --git a/Logo/O_1.bmp b/Logo/O_1.bmp
new file mode 100644 (file)
index 0000000..94d3fed
Binary files /dev/null and b/Logo/O_1.bmp differ
diff --git a/Logo/O_1.max b/Logo/O_1.max
new file mode 100644 (file)
index 0000000..164270f
Binary files /dev/null and b/Logo/O_1.max differ
diff --git a/Logo/Thumbs.db b/Logo/Thumbs.db
new file mode 100644 (file)
index 0000000..fb3908f
Binary files /dev/null and b/Logo/Thumbs.db differ
diff --git a/PoFGui/ADA.LIB b/PoFGui/ADA.LIB
new file mode 100644 (file)
index 0000000..199a419
--- /dev/null
@@ -0,0 +1,13 @@
+NOSUFFIX: True
+ILSUB: il
+XILSUB: xil
+OBJSUB: obj
+INFSUB: info
+XREFSUB: xref
+MSGSUB: msg
+PATH
+  PATHNAME: c:\PROGRA~1\aonix\OBJECT~1\lib
+  PATHNAME: c:\PROGRA~1\aonix\OBJECT~1\GUIBuild\lib
+  PATHNAME: c:\PROGRA~1\aonix\OBJECT~1\Win32ada\Binding\lib
+  LINKPATH: c:\PROGRA~1\aonix\OBJECT~1\APILib
+ENDPATH
diff --git a/PoFGui/Icon 01.ico b/PoFGui/Icon 01.ico
new file mode 100644 (file)
index 0000000..39badf5
Binary files /dev/null and b/PoFGui/Icon 01.ico differ
diff --git a/PoFGui/MSComCtl2_FlatScrollBar.ada b/PoFGui/MSComCtl2_FlatScrollBar.ada
new file mode 100644 (file)
index 0000000..c5d4565
--- /dev/null
@@ -0,0 +1,741 @@
+
+with gb;
+
+package MSComCtl2_FlatScrollBar is
+
+
+  -- ######  OLEDropConstants{D8898461-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Accepts no OLE drag/drop operations.
+  cc2OLEDropNone : constant := 0;
+  -- Accepts an OLE drag/drop under programmatic control only.
+  cc2OLEDropManual : constant := 1;
+
+  -- ######  DragOverConstants{D8898464-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Source control dragged into target.
+  cc2Enter : constant := 0;
+  -- Source control dragged out of target.
+  cc2Leave : constant := 1;
+  -- Source control dragged from one position in target to another.
+  cc2Over : constant := 2;
+
+  -- ######  ClipBoardConstants{D8898462-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Text (.txt file).
+  cc2CFText : constant := 1;
+  -- Bitmap (.bmp file).
+  cc2CFBitmap : constant := 2;
+  -- Metafile (.wmf file).
+  cc2CFMetafile : constant := 3;
+  -- Device-independent bitmap.
+  cc2CFDIB : constant := 8;
+  -- Color palette.
+  cc2CFPalette : constant := 9;
+  -- Enhanced metafile (.emf file).
+  cc2CFEMetafile : constant := 14;
+  -- Filename list (Microsoft Windows Explorer)
+  cc2CFFiles : constant := 15;
+  -- Rich Text Format (.rtf file).
+  cc2CFRTF : constant := -16639;
+
+  -- ######  OLEDropEffectConstants{D8898463-742F-11CF-8AEA-00AA00C00905}  ######
+  -- No OLE drag/drop operation has taken place/would take place.
+  cc2OLEDropEffectNone : constant := 0;
+  -- A mask to indicate that a copy has taken place/would take place.
+  cc2OLEDropEffectCopy : constant := 1;
+  -- A mask to indicate that a move has take place/would take place.
+  cc2OLEDropEffectMove : constant := 2;
+  -- A mask to indicate that the drop target window has scrolled/would scroll.
+  cc2OLEDropEffectScroll : constant := -2147483648;
+
+  -- ######  ErrorConstants{79311D2C-87C0-11D1-8BE3-0000F8754DA1}  ######
+  -- Bad file name or number
+  cc2BadFileNameOrNumber : constant := 52;
+  -- File not found
+  cc2FileNotFound : constant := 53;
+  -- Invalid property value
+  cc2InvalidPropertyValue : constant := 380;
+  -- Property cannot be set at run time
+  cc2SetNotSupportedAtRuntime : constant := 382;
+  -- Property is read-only
+  cc2SetNotSupported : constant := 383;
+  -- Property is write-only
+  cc2GetNotSupported : constant := 394;
+  -- DataObject formats list may not be cleared or expanded outside of the OLEStartDrag event
+  cc2DataObjectLocked : constant := 672;
+  -- Expected at least one argument.
+  cc2ExpectedAnArgument : constant := 673;
+  -- Invalid procedure call
+  cc2InvalidProcedureCall : constant := 5;
+  -- Invalid object use
+  cc2InvalidObjectUse : constant := 425;
+  -- Specified format doesn't match format of data
+  cc2WrongClipboardFormat : constant := 461;
+  -- Illegal recursive invocation of OLE drag and drop
+  cc2RecursiveOleDrag : constant := 674;
+  -- Non-intrinsic OLE drag and drop formats used with SetData require Byte 
+  -- array data.  GetData may return more bytes than were given to SetData.
+  cc2FormatNotByteArray : constant := 675;
+  -- Requested data was not supplied to the DataObject during the OLESetData event.
+  cc2DataNotSetForFormat : constant := 676;
+  -- Internal state of the control has become corrupted
+  cc2InconsistentObject : constant := 35750;
+  -- Unable to set property
+  cc2ErrorDuringSet : constant := 35751;
+  -- Unable to open AVI file
+  cc2ErrorOpeningVideo : constant := 35752;
+  -- Unable to play AVI file
+  cc2ErrorPlayingVideo : constant := 35753;
+  -- Must open AVI file first
+  cc2VideoNotOpen : constant := 35755;
+  -- Error trying to stop playing AVI file
+  cc2ErrorStoppingVideo : constant := 35757;
+  -- Error closing open AVI file
+  cc2ErrorClosingVideo : constant := 35758;
+  -- Stop method does not effect AutoPlay property
+  cc2CantStopAutoPlay : constant := 35759;
+  -- BuddyControl property must be set first
+  cc2NoValidBuddyCtl : constant := 35754;
+  -- AutoBuddy not set, no potential buddy controls found
+  cc2AutoBuddyNotSet : constant := 35756;
+  -- BuddyControl must be a separate control within the same container
+  cc2BuddyNotASibling : constant := 35760;
+  -- An UpDown control cannot be buddied with another UpDown control
+  cc2NoUpDownAsBuddy : constant := 35761;
+  -- An invalid date range was specified.
+  cc2InvalidRange : constant := 35770;
+  -- An invalid date was specified for the MaxDate property.
+  cc2InvalidMaxDate : constant := 35771;
+  -- An invalid date was specified for the MinDate property.
+  cc2InvalidMinDate : constant := 35772;
+  -- A date was specified that does not fall within the MinDate and MaxDate properties.
+  cc2DateOutOfRange : constant := 35773;
+  -- A value was specified for the MaxDate property that is lower than the current 
+  -- value of MinDate.
+  cc2InvalidMaxDateMin : constant := 35774;
+  -- A value was specified for the MinDate property that is higher than the 
+  -- current value of MaxDate.
+  cc2InvalidMinDateMax : constant := 35775;
+  -- A value was specified for MonthRows or MonthColumns that is not between 1 and 12.
+  cc2InvalidRowColValue : constant := 35776;
+  -- A value was specified for MonthRows or MonthColumns that would cause the 
+  -- total number of months (i.e. MonthRows * MonthCols) to be greater than 12.
+  cc2InvalidRowColTotal : constant := 35777;
+  -- An error occurred in a call to the Windows MonthView control.
+  cc2MonthViewError : constant := 35778;
+  -- Can't set Day property when MultiSelect = True.
+  cc2SetDayMultiSelectOn : constant := 35779;
+  -- Can't set DayOfWeek property when MultiSelect = True.
+  cc2SetDayOfWeekMultiSelectOn : constant := 35780;
+  -- Can't set Month property when MultiSelect = True.
+  cc2SetMonthMultiSelectOn : constant := 35781;
+  -- Can't set Week property when MultiSelect = True.
+  cc2SetWeekMultiSelectOn : constant := 35782;
+  -- Can't set Year property when MultiSelect = True.
+  cc2SetYearMultiSelectOn : constant := 35783;
+  -- Can't set MaxSelCount property when MultiSelect = False.
+  cc2SetMaxSelCountMultiSelectOff : constant := 35784;
+  -- Can't set SelEnd property when MultiSelect = False.
+  cc2SetSelEndMultiSelectOff : constant := 35785;
+  -- Can't set SelStart property when MultiSelect = False.
+  cc2SetSelStartMultiSelectOff : constant := 35786;
+  -- Can't set Value to NULL when CheckBox property = FALSE.
+  cc2NullValueNotAllowed : constant := 35787;
+  -- An error occurred in a call to the Windows Date and Time Picker control.
+  cc2DTPickerError : constant := 35788;
+  -- Scroll value is out of range.
+  cc2ScrollValueOutOfRange : constant := 35789;
+
+  -- ######  AppearanceConstants{79311D2D-87C0-11D1-8BE3-0000F8754DA1}  ######
+  -- Flat
+  cc2Flat : constant := 0;
+  -- 3D
+  cc23D : constant := 1;
+
+  -- ######  BorderStyleConstants{79311D2E-87C0-11D1-8BE3-0000F8754DA1}  ######
+  -- None
+  cc2None : constant := 0;
+  -- Fixed Single
+  cc2FixedSingle : constant := 1;
+
+  -- ######  MousePointerConstants{79311D2F-87C0-11D1-8BE3-0000F8754DA1}  ######
+  -- Default
+  cc2Default : constant := 0;
+  -- Arrow mouse pointer
+  cc2Arrow : constant := 1;
+  -- Cross mouse pointer
+  cc2Cross : constant := 2;
+  -- I-Beam mouse pointer
+  cc2IBeam : constant := 3;
+  -- Icon mouse pointer
+  cc2Icon : constant := 4;
+  -- Size mouse pointer
+  cc2Size : constant := 5;
+  -- Size NE SW mouse pointer
+  cc2SizeNESW : constant := 6;
+  -- Size N S mouse pointer
+  cc2SizeNS : constant := 7;
+  -- Size NW SE mouse pointer
+  cc2SizeNWSE : constant := 8;
+  -- Size W E mouse pointer
+  cc2SizeEW : constant := 9;
+  -- Up arrow mouse pointer
+  cc2UpArrow : constant := 10;
+  -- Hourglass mouse pointer
+  cc2Hourglass : constant := 11;
+  -- No drop mouse pointer
+  cc2NoDrop : constant := 12;
+  -- Arrow and Hourglass mouse pointer
+  cc2ArrowHourglass : constant := 13;
+  -- Arrow and Question mark mouse pointer
+  cc2ArrowQuestion : constant := 14;
+  -- Size all mouse pointer
+  cc2SizeAll : constant := 15;
+  -- Custom mouse pointer icon specified by the MouseIcon property
+  cc2Custom : constant := 99;
+
+  -- ######  OrientationConstants{603C7E7D-87C2-11D1-8BE3-0000F8754DA1}  ######
+  -- Vertical
+  cc2OrientationVertical : constant := 0;
+  -- Horizontal
+  cc2OrientationHorizontal : constant := 1;
+
+  -- ######  BackStyleConstants{B09DE712-87C1-11D1-8BE3-0000F8754DA1}  ######
+  -- Transparent
+  cc2BackstyleTransparent : constant := 0;
+  -- Opaque
+  cc2BackstyleOpaque : constant := 1;
+
+  -- ######  AlignmentConstants{603C7E7C-87C2-11D1-8BE3-0000F8754DA1}  ######
+  -- Left Align
+  cc2AlignmentLeft : constant := 0;
+  -- Right Align
+  cc2AlignmentRight : constant := 1;
+
+  -- ######  DayConstants{232E4566-87C3-11D1-8BE3-0000F8754DA1}  ######
+  -- Sunday
+  mvwSunday : constant := 1;
+  -- Monday
+  mvwMonday : constant := 2;
+  -- Tuesday
+  mvwTuesday : constant := 3;
+  -- Wednesday
+  mvwWednesday : constant := 4;
+  -- Thursday
+  mvwThursday : constant := 5;
+  -- Friday
+  mvwFriday : constant := 6;
+  -- Saturday
+  mvwSaturday : constant := 7;
+
+  -- ######  MonthConstants{232E4567-87C3-11D1-8BE3-0000F8754DA1}  ######
+  -- January
+  mvwJanuary : constant := 1;
+  -- February
+  mvwFebruary : constant := 2;
+  -- March
+  mvwMarch : constant := 3;
+  -- April
+  mvwApril : constant := 4;
+  -- May
+  mvwMay : constant := 5;
+  -- June
+  mvwJune : constant := 6;
+  -- July
+  mvwJuly : constant := 7;
+  -- August
+  mvwAugust : constant := 8;
+  -- September
+  mvwSeptember : constant := 9;
+  -- October
+  mvwOctober : constant := 10;
+  -- November
+  mvwNovember : constant := 11;
+  -- December
+  mvwDecember : constant := 12;
+
+  -- ######  MonthViewHitTestAreas{232E4568-87C3-11D1-8BE3-0000F8754DA1}  ######
+  -- Calendar Background
+  mvwCalendarBack : constant := 0;
+  -- Calendar Date
+  mvwCalendarDate : constant := 1;
+  -- Calendar Date Next Month
+  mvwCalendarDateNext : constant := 2;
+  -- Calendar Date Previous Month
+  mvwCalendarDatePrev : constant := 3;
+  -- Calendar Day
+  mvwCalendarDay : constant := 4;
+  -- Calendar Week Number
+  mvwCalendarWeekNum : constant := 5;
+  -- Nowhere
+  mvwNoWhere : constant := 6;
+  -- Title Background
+  mvwTitleBack : constant := 7;
+  -- Title Button Next
+  mvwTitleBtnNext : constant := 8;
+  -- Title Button Previous
+  mvwTitleBtnPrev : constant := 9;
+  -- Title Month
+  mvwTitleMonth : constant := 10;
+  -- Title Year
+  mvwTitleYear : constant := 11;
+  -- Today Link
+  mvwTodayLink : constant := 12;
+
+  -- ######  FormatConstants{20DD1B9C-87C4-11D1-8BE3-0000F8754DA1}  ######
+  -- Display date in long format, e.g. 'Friday, Sept 2, 1974'.
+  dtpLongDate : constant := 0;
+  -- Display date in short format, e.g. '9/2/74'.
+  dtpShortDate : constant := 1;
+  -- Display time in standard format, e.g. '5:31:42 PM'.
+  dtpTime : constant := 2;
+  -- Display date and time using the format string specified in the 'CustomFormat' property.
+  dtpCustom : constant := 3;
+
+  -- ######  FlatScrollBarAppearanceConstants{FE387535-44A3-11D1-B5B7-0000C09000C4}  ######
+  -- A normal, non-flat scrollbar is displayed.  No special visual effects are applied.
+  fsb3D : constant := 0;
+  -- A standard flat scrollbar is displayed.  When the mouse moves over a direction 
+  -- button or the thumb, that portion of the scrollbar will be displayed in 
+  -- inverted colors.
+  fsbFlat : constant := 1;
+  -- A flat scrollbar is displayed.  When the mouse moves over a direction button 
+  -- or the thumb, that portion of the scrollbar will be displayed in 3D.
+  fsbTrack3D : constant := 2;
+
+  -- ######  ArrowsConstants{FE387536-44A3-11D1-B5B7-0000C09000C4}  ######
+  -- Enables both direction buttons.
+  cc2Both : constant := 0;
+  -- Enables only the left or up button, depending on whether the orientation 
+  -- is vertical or horizontal.
+  cc2LeftUp : constant := 1;
+  -- Enables only the right or down button, depending on whether the orientation 
+  -- is vertical or horizontal.
+  cc2RightDown : constant := 2;
+
+  -- ######  Events  ######
+  -- Change:  Occurs when the user causes the Value property of the scroll bar to change.
+  procedure Change_Proc;
+  type Change_Access is access procedure;
+
+  -- Scroll:  Occurs when the scroll box is being dragged by the user.
+  procedure Scroll_Proc;
+  type Scroll_Access is access procedure;
+
+  -- ######  Object Declaration  ######
+  type FlatScrollBarCtrl(Parent : access gb.Object'class) is
+    new gb.OleControl(Parent) with
+  record
+    Change : Change_Access := Change_Proc'access;
+    Scroll : Scroll_Access := Scroll_Proc'access;
+  end record;
+  type FlatScrollBarCtrlRef is access all FlatScrollBarCtrl'class;
+
+  procedure Initialize(Obj : in out FlatScrollBarCtrl);
+
+  -- ######  Methods  ######
+  -- QueryInterface
+  procedure QueryInterface(Obj : FlatScrollBarCtrl; riid : gb.LPDISPATCH; ppvObj : gb.PVOID);
+
+  -- AddRef
+  function AddRef(Obj : FlatScrollBarCtrl) return gb.ULONG;
+
+  -- Release
+  function Release(Obj : FlatScrollBarCtrl) return gb.ULONG;
+
+  -- GetTypeInfoCount
+  procedure GetTypeInfoCount(Obj : FlatScrollBarCtrl; pctinfo : gb.PUINT);
+
+  -- GetTypeInfo
+  procedure GetTypeInfo(Obj : FlatScrollBarCtrl; itinfo : gb.UINT; lcid : gb.ULONG; 
+      pptinfo : gb.PVOID);
+
+  -- GetIDsOfNames
+  procedure GetIDsOfNames(Obj : FlatScrollBarCtrl; riid : gb.LPDISPATCH; rgszNames : gb.PCHAR; 
+      cNames : gb.UINT; lcid : gb.ULONG; rgdispid : gb.PLONG);
+
+  -- Invoke
+  procedure Invoke(Obj : FlatScrollBarCtrl; dispidMember : gb.LONG; riid : gb.LPDISPATCH; 
+      lcid : gb.ULONG; wFlags : gb.USHORT; pdispparams : gb.LPDISPATCH; 
+      pvarResult : gb.LPVARIANT; pexcepinfo : gb.LPDISPATCH; puArgErr : gb.PUINT);
+
+  -- Appearance:  Returns/sets whether or not controls, Forms or an MDIForm 
+  -- are painted at run time with 3-D effects.
+  function Appearance(Obj : FlatScrollBarCtrl) return gb.INT;
+
+  -- Appearance:  Returns/sets whether or not controls, Forms or an MDIForm 
+  -- are painted at run time with 3-D effects.
+  procedure Appearance(Obj : FlatScrollBarCtrl; Param1 : gb.INT);
+
+  -- Arrows:  Returns/sets which direction buttons will be enabled.
+  function Arrows(Obj : FlatScrollBarCtrl) return gb.INT;
+
+  -- Arrows:  Returns/sets which direction buttons will be enabled.
+  procedure Arrows(Obj : FlatScrollBarCtrl; Param1 : gb.INT);
+
+  -- Enabled:  Returns/sets a value that determines whether a form or control 
+  -- can respond to user-generated events.
+  function Enabled(Obj : FlatScrollBarCtrl) return gb.BOOL;
+
+  -- Enabled:  Returns/sets a value that determines whether a form or control 
+  -- can respond to user-generated events.
+  procedure Enabled(Obj : FlatScrollBarCtrl; Param1 : gb.BOOL);
+
+  -- hWnd:  Returns a handle to a form or control.
+  function hWnd(Obj : FlatScrollBarCtrl) return gb.INT;
+
+  -- hWnd:  Returns a handle to a form or control.
+  procedure hWnd(Obj : FlatScrollBarCtrl; Param1 : gb.INT);
+
+  -- LargeChange:  Returns/sets a value that determines the amount of change 
+  -- to the Value property when the user clicks the area between the scroll 
+  -- box and the scroll arrow.
+  function LargeChange(Obj : FlatScrollBarCtrl) return gb.SHORT;
+
+  -- LargeChange:  Returns/sets a value that determines the amount of change 
+  -- to the Value property when the user clicks the area between the scroll 
+  -- box and the scroll arrow.
+  procedure LargeChange(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT);
+
+  -- Min:  Returns/sets the scrollbar's minimum Value property setting.
+  function Min(Obj : FlatScrollBarCtrl) return gb.SHORT;
+
+  -- Min:  Returns/sets the scrollbar's minimum Value property setting.
+  procedure Min(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT);
+
+  -- Max:  Returns/sets the scrollbar's maximum Value property setting.
+  function Max(Obj : FlatScrollBarCtrl) return gb.SHORT;
+
+  -- Max:  Returns/sets the scrollbar's maximum Value property setting.
+  procedure Max(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT);
+
+  -- MouseIcon:  Sets a custom mouse icon.
+  function MouseIcon(Obj : FlatScrollBarCtrl) return gb.LPDISPATCH;
+
+  -- MouseIcon:  Sets a custom mouse icon.
+  procedure MouseIcon(Obj : FlatScrollBarCtrl; Param1 : gb.LPDISPATCH);
+
+  -- MousePointer:  Returns/sets the type of mouse pointer displayed when over 
+  -- part of an object.
+  function MousePointer(Obj : FlatScrollBarCtrl) return gb.INT;
+
+  -- MousePointer:  Returns/sets the type of mouse pointer displayed when over 
+  -- part of an object.
+  procedure MousePointer(Obj : FlatScrollBarCtrl; Param1 : gb.INT);
+
+  -- Orientation:  Returns/sets a value that determines whether the scrollbar 
+  -- is vertical or horizontal.
+  function Orientation(Obj : FlatScrollBarCtrl) return gb.INT;
+
+  -- Orientation:  Returns/sets a value that determines whether the scrollbar 
+  -- is vertical or horizontal.
+  procedure Orientation(Obj : FlatScrollBarCtrl; Param1 : gb.INT);
+
+  -- SmallChange:  Returns/sets a value that determines the amount of change 
+  -- to the Value property when the user clicks a scroll arrow.
+  function SmallChange(Obj : FlatScrollBarCtrl) return gb.SHORT;
+
+  -- SmallChange:  Returns/sets a value that determines the amount of change 
+  -- to the Value property when the user clicks a scroll arrow.
+  procedure SmallChange(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT);
+
+  -- Value:  Returns/sets the current position of the scroll bar.
+  function Value(Obj : FlatScrollBarCtrl) return gb.SHORT;
+
+  -- Value:  Returns/sets the current position of the scroll bar.
+  procedure Value(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT);
+
+  -- AboutBox
+  procedure AboutBox(Obj : FlatScrollBarCtrl);
+
+  -- Refresh:  Forces a complete repaint of a form or control.
+  procedure Refresh(Obj : FlatScrollBarCtrl);
+
+end MSComCtl2_FlatScrollBar;
+
+
+package body MSComCtl2_FlatScrollBar is
+
+  pragma Suppress(Discriminant_Check);
+
+  use type gb.DISPID;
+  use type gb.VARTYPE;
+
+  -- ######  Methods  ######
+  procedure QueryInterface(Obj : FlatScrollBarCtrl; riid : gb.LPDISPATCH; ppvObj : gb.PVOID) is
+    myVariants : array (1..2) of gb.Variant;
+  begin
+    myVariants(2) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_VOID, 0, 0, 0, (gb.VT_BYREF or gb.VT_VOID, ppvObj));
+    gb.DoMethod(Obj, 1610612736, 1, 2, gb.Convert(myVariants'address));
+  end QueryInterface;
+
+  function AddRef(Obj : FlatScrollBarCtrl) return gb.ULONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1610612737, 1, 0, null, myResult'unchecked_access);
+    return myResult.u.ulVal;
+  end AddRef;
+
+  function Release(Obj : FlatScrollBarCtrl) return gb.ULONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1610612738, 1, 0, null, myResult'unchecked_access);
+    return myResult.u.ulVal;
+  end Release;
+
+  procedure GetTypeInfoCount(Obj : FlatScrollBarCtrl; pctinfo : gb.PUINT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BYREF or gb.VT_UINT, 0, 0, 0, (gb.VT_BYREF or gb.VT_UINT, pctinfo));
+    gb.DoMethod(Obj, 1610678272, 1, 1, gb.Convert(myVariants'address));
+  end GetTypeInfoCount;
+
+  procedure GetTypeInfo(Obj : FlatScrollBarCtrl; itinfo : gb.UINT; lcid : gb.ULONG; 
+      pptinfo : gb.PVOID) is
+    myVariants : array (1..3) of gb.Variant;
+  begin
+    myVariants(3) := (gb.VT_UINT, 0, 0, 0, (gb.VT_UINT, itinfo));
+    myVariants(2) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_VOID, 0, 0, 0, (gb.VT_BYREF or gb.VT_VOID, pptinfo));
+    gb.DoMethod(Obj, 1610678273, 1, 3, gb.Convert(myVariants'address));
+  end GetTypeInfo;
+
+  procedure GetIDsOfNames(Obj : FlatScrollBarCtrl; riid : gb.LPDISPATCH; rgszNames : gb.PCHAR; 
+      cNames : gb.UINT; lcid : gb.ULONG; rgdispid : gb.PLONG) is
+    myVariants : array (1..5) of gb.Variant;
+  begin
+    myVariants(5) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(4) := (gb.VT_BYREF or gb.VT_I1, 0, 0, 0, (gb.VT_BYREF or gb.VT_I1, rgszNames));
+    myVariants(3) := (gb.VT_UINT, 0, 0, 0, (gb.VT_UINT, cNames));
+    myVariants(2) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_I4, 0, 0, 0, (gb.VT_BYREF or gb.VT_I4, rgdispid));
+    gb.DoMethod(Obj, 1610678274, 1, 5, gb.Convert(myVariants'address));
+  end GetIDsOfNames;
+
+  procedure Invoke(Obj : FlatScrollBarCtrl; dispidMember : gb.LONG; riid : gb.LPDISPATCH; 
+      lcid : gb.ULONG; wFlags : gb.USHORT; pdispparams : gb.LPDISPATCH; 
+      pvarResult : gb.LPVARIANT; pexcepinfo : gb.LPDISPATCH; puArgErr : gb.PUINT) is
+    myVariants : array (1..8) of gb.Variant;
+  begin
+    myVariants(8) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, dispidMember));
+    myVariants(7) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(6) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(5) := (gb.VT_UI2, 0, 0, 0, (gb.VT_UI2, wFlags));
+    myVariants(4) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, pdispparams));
+    myVariants(3) := pvarResult.all;
+    myVariants(2) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, pexcepinfo));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_UINT, 0, 0, 0, (gb.VT_BYREF or gb.VT_UINT, puArgErr));
+    gb.DoMethod(Obj, 1610678275, 1, 8, gb.Convert(myVariants'address));
+  end Invoke;
+
+  function Appearance(Obj : FlatScrollBarCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end Appearance;
+
+  procedure Appearance(Obj : FlatScrollBarCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 1, 4, 1, gb.Convert(myVariants'address));
+  end Appearance;
+
+  function Arrows(Obj : FlatScrollBarCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 2, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end Arrows;
+
+  procedure Arrows(Obj : FlatScrollBarCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 2, 4, 1, gb.Convert(myVariants'address));
+  end Arrows;
+
+  function Enabled(Obj : FlatScrollBarCtrl) return gb.BOOL is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, -514, 2, 0, null, myResult'unchecked_access);
+    return gb.Convert(myResult.u.bool);
+  end Enabled;
+
+  procedure Enabled(Obj : FlatScrollBarCtrl; Param1 : gb.BOOL) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BOOL, 0, 0, 0, (gb.VT_BOOL, gb.Convert(Param1)));
+    gb.DoMethod(Obj, -514, 4, 1, gb.Convert(myVariants'address));
+  end Enabled;
+
+  function hWnd(Obj : FlatScrollBarCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, -515, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end hWnd;
+
+  procedure hWnd(Obj : FlatScrollBarCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, -515, 4, 1, gb.Convert(myVariants'address));
+  end hWnd;
+
+  function LargeChange(Obj : FlatScrollBarCtrl) return gb.SHORT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 3, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.iVal;
+  end LargeChange;
+
+  procedure LargeChange(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I2, 0, 0, 0, (gb.VT_I2, Param1));
+    gb.DoMethod(Obj, 3, 4, 1, gb.Convert(myVariants'address));
+  end LargeChange;
+
+  function Min(Obj : FlatScrollBarCtrl) return gb.SHORT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 4, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.iVal;
+  end Min;
+
+  procedure Min(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I2, 0, 0, 0, (gb.VT_I2, Param1));
+    gb.DoMethod(Obj, 4, 4, 1, gb.Convert(myVariants'address));
+  end Min;
+
+  function Max(Obj : FlatScrollBarCtrl) return gb.SHORT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 5, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.iVal;
+  end Max;
+
+  procedure Max(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I2, 0, 0, 0, (gb.VT_I2, Param1));
+    gb.DoMethod(Obj, 5, 4, 1, gb.Convert(myVariants'address));
+  end Max;
+
+  function MouseIcon(Obj : FlatScrollBarCtrl) return gb.LPDISPATCH is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 6, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.pdispVal;
+  end MouseIcon;
+
+  procedure MouseIcon(Obj : FlatScrollBarCtrl; Param1 : gb.LPDISPATCH) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, Param1));
+    gb.DoMethod(Obj, 6, 4, 1, gb.Convert(myVariants'address));
+  end MouseIcon;
+
+  function MousePointer(Obj : FlatScrollBarCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 7, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end MousePointer;
+
+  procedure MousePointer(Obj : FlatScrollBarCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 7, 4, 1, gb.Convert(myVariants'address));
+  end MousePointer;
+
+  function Orientation(Obj : FlatScrollBarCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 8, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end Orientation;
+
+  procedure Orientation(Obj : FlatScrollBarCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 8, 4, 1, gb.Convert(myVariants'address));
+  end Orientation;
+
+  function SmallChange(Obj : FlatScrollBarCtrl) return gb.SHORT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 9, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.iVal;
+  end SmallChange;
+
+  procedure SmallChange(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I2, 0, 0, 0, (gb.VT_I2, Param1));
+    gb.DoMethod(Obj, 9, 4, 1, gb.Convert(myVariants'address));
+  end SmallChange;
+
+  function Value(Obj : FlatScrollBarCtrl) return gb.SHORT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 10, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.iVal;
+  end Value;
+
+  procedure Value(Obj : FlatScrollBarCtrl; Param1 : gb.SHORT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I2, 0, 0, 0, (gb.VT_I2, Param1));
+    gb.DoMethod(Obj, 10, 4, 1, gb.Convert(myVariants'address));
+  end Value;
+
+  procedure AboutBox(Obj : FlatScrollBarCtrl) is
+  begin
+    gb.DoMethod(Obj, -552, 1);
+  end AboutBox;
+
+  procedure Refresh(Obj : FlatScrollBarCtrl) is
+  begin
+    gb.DoMethod(Obj, -550, 1);
+  end Refresh;
+
+  -- ######  Event Dispatch  ######
+  procedure DispatchEvent_Proc(Obj : gb.OleControlRef; dispidMember : gb.DISPID;
+      pdispparams : access gb.DISPPARAMS) is
+    hr         : gb.HRESULT;
+    u          : aliased gb.UINT;
+  begin
+    if dispidMember = 1 then
+      FlatScrollBarCtrl(Obj.all).Change.all;
+    elsif dispidMember = 2 then
+      FlatScrollBarCtrl(Obj.all).Scroll.all;
+    end if;
+  end DispatchEvent_Proc;
+
+  procedure Initialize(Obj : in out FlatScrollBarCtrl) is
+  begin
+    Obj.i_DispatchEvent := DispatchEvent_Proc'access;
+    Obj.i_ProgID(1..26) := gb.To_OleChar("MSComCtl2.FlatScrollBar.2");
+    Obj.i_EventDispatchIID(1..39) := gb.To_OleChar("{FE387539-44A3-11D1-B5B7-0000C09000C4}");
+  end Initialize;
+
+  -- ######  Events  ######
+  procedure Change_Proc is
+  begin
+    null;
+  end Change_Proc;
+
+  procedure Scroll_Proc is
+  begin
+    null;
+  end Scroll_Proc;
+
+end MSComCtl2_FlatScrollBar;
+
+
diff --git a/PoFGui/MSComctlLib_Slider.ada b/PoFGui/MSComctlLib_Slider.ada
new file mode 100644 (file)
index 0000000..1c888f0
--- /dev/null
@@ -0,0 +1,1313 @@
+
+with gb;
+
+package MSComctlLib_Slider is
+
+
+  -- ######  BorderStyleConstants{76B523C0-8579-11D1-B16A-00C0F0283628}  ######
+  -- None
+  ccNone : constant := 0;
+  -- Fixed Single
+  ccFixedSingle : constant := 1;
+
+  -- ######  MousePointerConstants{76B523C1-8579-11D1-B16A-00C0F0283628}  ######
+  -- Default
+  ccDefault : constant := 0;
+  -- Arrow mouse pointer
+  ccArrow : constant := 1;
+  -- Cross mouse pointer
+  ccCross : constant := 2;
+  -- I-Beam mouse pointer
+  ccIBeam : constant := 3;
+  -- Icon mouse pointer
+  ccIcon : constant := 4;
+  -- Size mouse pointer
+  ccSize : constant := 5;
+  -- Size NE SW mouse pointer
+  ccSizeNESW : constant := 6;
+  -- Size N S mouse pointer
+  ccSizeNS : constant := 7;
+  -- Size NW SE mouse pointer
+  ccSizeNWSE : constant := 8;
+  -- Size W E mouse pointer
+  ccSizeEW : constant := 9;
+  -- Up arrow mouse pointer
+  ccUpArrow : constant := 10;
+  -- Hourglass mouse pointer
+  ccHourglass : constant := 11;
+  -- No drop mouse pointer
+  ccNoDrop : constant := 12;
+  -- Arrow and Hourglass mouse pointer
+  ccArrowHourglass : constant := 13;
+  -- Arrow and Question mark mouse pointer
+  ccArrowQuestion : constant := 14;
+  -- Size all mouse pointer
+  ccSizeAll : constant := 15;
+  -- Custom mouse pointer icon specified by the MouseIcon property
+  ccCustom : constant := 99;
+
+  -- ######  AppearanceConstants{76B523C2-8579-11D1-B16A-00C0F0283628}  ######
+  -- Flat
+  ccFlat : constant := 0;
+  -- 3D
+  cc3D : constant := 1;
+
+  -- ######  VB4AppearanceConstants{00000000-0000-0000-0000-000000000000}  ######
+  -- Flat
+  vbFlat : constant := 0;
+  -- 3D
+  vb3D : constant := 1;
+
+  -- ######  ScrollingConstants{76B523C3-8579-11D1-B16A-00C0F0283628}  ######
+  -- Standard Scrolling
+  ccScrollingStandard : constant := 0;
+  -- Smooth Scrolling
+  ccScrollingSmooth : constant := 1;
+
+  -- ######  OrientationConstants{76B523C4-8579-11D1-B16A-00C0F0283628}  ######
+  -- Horizontal
+  ccOrientationHorizontal : constant := 0;
+  -- Vertical
+  ccOrientationVertical : constant := 1;
+
+  -- ######  OLEDragConstants{D8898460-742F-11CF-8AEA-00AA00C00905}  ######
+  -- OLE drag/drop will be initialized only under programmatic control.
+  ccOLEDragManual : constant := 0;
+  -- OLE drag/drop will be initialized when the user drags 'out' of the control, 
+  -- or under programmatic control.
+  ccOLEDragAutomatic : constant := 1;
+
+  -- ######  OLEDropConstants{D8898461-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Accepts no OLE drag/drop operations.
+  ccOLEDropNone : constant := 0;
+  -- Accepts an OLE drag/drop under programmatic control only.
+  ccOLEDropManual : constant := 1;
+
+  -- ######  DragOverConstants{D8898464-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Source control dragged into target.
+  ccEnter : constant := 0;
+  -- Source control dragged out of target.
+  ccLeave : constant := 1;
+  -- Source control dragged from one position in target to another.
+  ccOver : constant := 2;
+
+  -- ######  ClipBoardConstants{D8898462-742F-11CF-8AEA-00AA00C00905}  ######
+  -- Text (.txt file).
+  ccCFText : constant := 1;
+  -- Bitmap (.bmp file).
+  ccCFBitmap : constant := 2;
+  -- Metafile (.wmf file).
+  ccCFMetafile : constant := 3;
+  -- Device-independent bitmap.
+  ccCFDIB : constant := 8;
+  -- Color palette.
+  ccCFPalette : constant := 9;
+  -- Enhanced metafile (.emf file).
+  ccCFEMetafile : constant := 14;
+  -- Filename list (Microsoft Windows Explorer)
+  ccCFFiles : constant := 15;
+  -- Rich Text Format (.rtf file).
+  ccCFRTF : constant := -16639;
+
+  -- ######  OLEDropEffectConstants{D8898463-742F-11CF-8AEA-00AA00C00905}  ######
+  -- No OLE drag/drop operation has taken place/would take place.
+  ccOLEDropEffectNone : constant := 0;
+  -- A mask to indicate that a copy has taken place/would take place.
+  ccOLEDropEffectCopy : constant := 1;
+  -- A mask to indicate that a move has taken place/would take place.
+  ccOLEDropEffectMove : constant := 2;
+  -- A mask to indicate that the drop target window has scrolled/would scroll.
+  ccOLEDropEffectScroll : constant := -2147483648;
+
+  -- ######  ErrorConstants{76B523C5-8579-11D1-B16A-00C0F0283628}  ######
+  -- Invalid procedure call
+  ccInvalidProcedureCall : constant := 5;
+  -- Out of memory
+  ccOutOfMemory : constant := 7;
+  -- Type mismatch
+  ccTypeMismatch : constant := 13;
+  -- Object variable or With block variable not set
+  ccObjectVariableNotSet : constant := 91;
+  -- Invalid property value
+  ccInvalidPropertyValue : constant := 380;
+  -- Property cannot be set at runtime
+  ccSetNotSupportedAtRuntime : constant := 382;
+  -- Property is read-only
+  ccSetNotSupported : constant := 383;
+  -- Property can't be set on this control
+  ccSetNotPermitted : constant := 387;
+  -- Property is write-only
+  ccGetNotSupported : constant := 394;
+  -- Invalid picture
+  ccInvalidPicture : constant := 481;
+  -- Invalid object use
+  ccInvalidObjectUse : constant := 425;
+  -- Specified format doesn't match format of data
+  ccWrongClipboardFormat : constant := 461;
+  -- DataObject formats list may not be cleared or expanded outside of the OLEStartDrag event
+  ccDataObjectLocked : constant := 672;
+  -- Expected at least one argument.
+  ccExpectedAnArgument : constant := 673;
+  -- Illegal recursive invocation of OLE drag and drop
+  ccRecursiveOleDrag : constant := 674;
+  -- Non-intrinsic OLE drag and drop formats used with SetData require Byte 
+  -- array data.  GetData may return more bytes than were given to SetData.
+  ccFormatNotByteArray : constant := 675;
+  -- Requested data was not supplied to the DataObject during the OLESetData event.
+  ccDataNotSetForFormat : constant := 676;
+  -- Index out of bounds
+  ccIndexOutOfBounds : constant := 35600;
+  -- Element not found
+  ccElemNotFound : constant := 35601;
+  -- Key is not unique in collection
+  ccNonUniqueKey : constant := 35602;
+  -- Invalid key
+  ccInvalidKey : constant := 35603;
+  -- This item's control has been deleted
+  ccElemNotPartOfCollection : constant := 35605;
+  -- Control's collection has been modified
+  ccCollectionChangedDuringEnum : constant := 35606;
+  -- This would introduce a cycle
+  ccWouldIntroduceCycle : constant := 35614;
+  -- Required argument is missing
+  ccMissingRequiredArg : constant := 35607;
+  -- Invalid object
+  ccBadObjectReference : constant := 35610;
+  -- Circular object referencing is not allowed
+  ccCircularReference : constant := 35700;
+  -- The first column in a ListView control must be left aligned
+  ccCol1MustBeLeftAligned : constant := 35604;
+  -- Property is read-only if image list contains images
+  ccReadOnlyIfHasImages : constant := 35611;
+  -- ImageList must be initialized before it can be used
+  ccImageListMustBeInitialized : constant := 35613;
+  -- All images in list must be same size
+  ccNotSameSize : constant := 35615;
+  -- ImageList cannot be modified while another control is bound to it
+  ccImageListLocked : constant := 35617;
+  -- Maximum Panels Exceeded
+  ccMaxPanelsExceeded : constant := 35616;
+  -- Maximum Buttons Exceeded
+  ccMaxButtonsExceeded : constant := 35619;
+  -- Invalid procedure call in safe mode
+  ccInvalidSafeModeProcCall : constant := 680;
+
+  -- ######  TabWidthStyleConstants{1EFB6590-857C-11D1-B16A-00C0F0283628}  ######
+  -- Justified
+  tabJustified : constant := 0;
+  -- Non-Justified
+  tabNonJustified : constant := 1;
+  -- Fixed
+  tabFixed : constant := 2;
+
+  -- ######  TabStyleConstants{1EFB6591-857C-11D1-B16A-00C0F0283628}  ######
+  -- Tabs
+  tabTabs : constant := 0;
+  -- Buttons
+  tabButtons : constant := 1;
+  -- Flat Buttons
+  tabFlatButtons : constant := 2;
+
+  -- ######  PlacementConstants{1EFB6592-857C-11D1-B16A-00C0F0283628}  ######
+  -- Top
+  tabPlacementTop : constant := 0;
+  -- Bottom
+  tabPlacementBottom : constant := 1;
+  -- Left
+  tabPlacementLeft : constant := 2;
+  -- Right
+  tabPlacementRight : constant := 3;
+
+  -- ######  TabSelStyleConstants{1EFB6593-857C-11D1-B16A-00C0F0283628}  ######
+  -- Standard
+  tabTabStandard : constant := 0;
+  -- Opposite
+  tabTabOpposite : constant := 1;
+
+  -- ######  ButtonStyleConstants{66833FE0-8583-11D1-B16A-00C0F0283628}  ######
+  -- Default
+  tbrDefault : constant := 0;
+  -- Check
+  tbrCheck : constant := 1;
+  -- ButtonGroup
+  tbrButtonGroup : constant := 2;
+  -- Separator
+  tbrSeparator : constant := 3;
+  -- Placeholder
+  tbrPlaceholder : constant := 4;
+  -- Dropdown
+  tbrDropdown : constant := 5;
+
+  -- ######  ValueConstants{66833FE1-8583-11D1-B16A-00C0F0283628}  ######
+  -- Unpressed
+  tbrUnpressed : constant := 0;
+  -- Pressed
+  tbrPressed : constant := 1;
+
+  -- ######  ToolbarStyleConstants{66833FE2-8583-11D1-B16A-00C0F0283628}  ######
+  -- Standard
+  tbrStandard : constant := 0;
+  -- Transparent
+  tbrFlat : constant := 1;
+
+  -- ######  ToolbarTextAlignConstants{66833FE3-8583-11D1-B16A-00C0F0283628}  ######
+  -- Bottom
+  tbrTextAlignBottom : constant := 0;
+  -- Right
+  tbrTextAlignRight : constant := 1;
+
+  -- ######  SbarStyleConstants{8E3867A0-8586-11D1-B16A-00C0F0283628}  ######
+  -- Multiple panels
+  sbrNormal : constant := 0;
+  -- Single panel simple text
+  sbrSimple : constant := 1;
+
+  -- ######  PanelAlignmentConstants{8E3867A6-8586-11D1-B16A-00C0F0283628}  ######
+  -- Left
+  sbrLeft : constant := 0;
+  -- Center
+  sbrCenter : constant := 1;
+  -- Right
+  sbrRight : constant := 2;
+
+  -- ######  PanelAutoSizeConstants{8E3867A7-8586-11D1-B16A-00C0F0283628}  ######
+  -- None
+  sbrNoAutoSize : constant := 0;
+  -- Spring
+  sbrSpring : constant := 1;
+  -- Contents
+  sbrContents : constant := 2;
+
+  -- ######  PanelBevelConstants{8E3867A8-8586-11D1-B16A-00C0F0283628}  ######
+  -- None
+  sbrNoBevel : constant := 0;
+  -- Inset
+  sbrInset : constant := 1;
+  -- Raised
+  sbrRaised : constant := 2;
+
+  -- ######  PanelStyleConstants{8E3867A9-8586-11D1-B16A-00C0F0283628}  ######
+  -- Text
+  sbrText : constant := 0;
+  -- Caps
+  sbrCaps : constant := 1;
+  -- Num
+  sbrNum : constant := 2;
+  -- Ins
+  sbrIns : constant := 3;
+  -- Scrl
+  sbrScrl : constant := 4;
+  -- Time
+  sbrTime : constant := 5;
+  -- Date
+  sbrDate : constant := 6;
+  -- Kana
+  sbrKana : constant := 7;
+
+  -- ######  LabelEditConstants{C74190B0-8589-11D1-B16A-00C0F0283628}  ######
+  -- Automatic
+  tvwAutomatic : constant := 0;
+  -- Manual
+  tvwManual : constant := 1;
+
+  -- ######  TreeLineStyleConstants{C74190B1-8589-11D1-B16A-00C0F0283628}  ######
+  -- TreeLines
+  tvwTreeLines : constant := 0;
+  -- RootLines
+  tvwRootLines : constant := 1;
+
+  -- ######  TreeStyleConstants{C74190B2-8589-11D1-B16A-00C0F0283628}  ######
+  -- Text Only
+  tvwTextOnly : constant := 0;
+  -- Picture and Text
+  tvwPictureText : constant := 1;
+  -- Plus/Minus and Text
+  tvwPlusMinusText : constant := 2;
+  -- Plus/Minus, Picture and Text
+  tvwPlusPictureText : constant := 3;
+  -- Treelines and Text
+  tvwTreelinesText : constant := 4;
+  -- Treelines, Picture and Text
+  tvwTreelinesPictureText : constant := 5;
+  -- Treelines, Plus/Minus and Text
+  tvwTreelinesPlusMinusText : constant := 6;
+  -- Treelines, Plus/Minus, Picture and Text
+  tvwTreelinesPlusMinusPictureText : constant := 7;
+
+  -- ######  TreeRelationshipConstants{C74190B3-8589-11D1-B16A-00C0F0283628}  ######
+  -- First sibling
+  tvwFirst : constant := 0;
+  -- Last sibling
+  tvwLast : constant := 1;
+  -- Next sibling
+  tvwNext : constant := 2;
+  -- Previous sibling
+  tvwPrevious : constant := 3;
+  -- Child
+  tvwChild : constant := 4;
+
+  -- ######  ListTextBackgroundConstants{BDD1F040-858B-11D1-B16A-00C0F0283628}  ######
+  -- Draws ListItem text with transparent background
+  lvwTransparent : constant := 0;
+  -- Draws ListItem text with opaque background using Background color property
+  lvwOpaque : constant := 1;
+
+  -- ######  ListArrangeConstants{BDD1F041-858B-11D1-B16A-00C0F0283628}  ######
+  -- None
+  lvwNone : constant := 0;
+  -- Left
+  lvwAutoLeft : constant := 1;
+  -- Top
+  lvwAutoTop : constant := 2;
+
+  -- ######  ListPictureAlignmentConstants{BDD1F042-858B-11D1-B16A-00C0F0283628}  ######
+  -- Aligns background picture to the upper left.
+  lvwTopLeft : constant := 0;
+  -- Aligns background picture to the upper right.
+  lvwTopRight : constant := 1;
+  -- Aligns background picture to the lower left.
+  lvwBottomLeft : constant := 2;
+  -- Aligns background picture to the lower right.
+  lvwBottomRight : constant := 3;
+  -- Aligns background picture to the center.
+  lvwCenter : constant := 4;
+  -- Tiles the picture to fill the ListView background.
+  lvwTile : constant := 5;
+
+  -- ######  ListLabelEditConstants{BDD1F043-858B-11D1-B16A-00C0F0283628}  ######
+  -- Automatic
+  lvwAutomatic : constant := 0;
+  -- Manual
+  lvwManual : constant := 1;
+
+  -- ######  ListSortOrderConstants{BDD1F044-858B-11D1-B16A-00C0F0283628}  ######
+  -- Ascending
+  lvwAscending : constant := 0;
+  -- Descending
+  lvwDescending : constant := 1;
+
+  -- ######  ListViewConstants{BDD1F045-858B-11D1-B16A-00C0F0283628}  ######
+  -- Icon
+  lvwIcon : constant := 0;
+  -- SmallIcon
+  lvwSmallIcon : constant := 1;
+  -- List
+  lvwList : constant := 2;
+  -- Report
+  lvwReport : constant := 3;
+
+  -- ######  ListColumnAlignmentConstants{BDD1F046-858B-11D1-B16A-00C0F0283628}  ######
+  -- Left
+  lvwColumnLeft : constant := 0;
+  -- Right
+  lvwColumnRight : constant := 1;
+  -- Center
+  lvwColumnCenter : constant := 2;
+
+  -- ######  ListFindItemWhereConstants{BDD1F047-858B-11D1-B16A-00C0F0283628}  ######
+  -- Text
+  lvwText : constant := 0;
+  -- SubItem
+  lvwSubItem : constant := 1;
+  -- Tag
+  lvwTag : constant := 2;
+
+  -- ######  ListFindItemHowConstants{BDD1F048-858B-11D1-B16A-00C0F0283628}  ######
+  -- Whole
+  lvwWhole : constant := 0;
+  -- Partial
+  lvwPartial : constant := 1;
+
+  -- ######  ImageDrawConstants{2C247F20-8591-11D1-B16A-00C0F0283628}  ######
+  -- Normal
+  imlNormal : constant := 0;
+  -- Transparent
+  imlTransparent : constant := 1;
+  -- Selected
+  imlSelected : constant := 2;
+  -- Focus
+  imlFocus : constant := 3;
+
+  -- ######  TickStyleConstants{F08DF950-8592-11D1-B16A-00C0F0283628}  ######
+  -- Bottom/Right
+  sldBottomRight : constant := 0;
+  -- Top/Left
+  sldTopLeft : constant := 1;
+  -- Both
+  sldBoth : constant := 2;
+  -- No Ticks
+  sldNoTicks : constant := 3;
+
+  -- ######  TextPositionConstants{F08DF951-8592-11D1-B16A-00C0F0283628}  ######
+  -- Above/Left
+  sldAboveLeft : constant := 0;
+  -- Below/Right
+  sldBelowRight : constant := 1;
+
+  -- ######  Events  ######
+  -- Click:  Occurs when the user presses and then releases a mouse button over an object.
+  procedure Click_Proc;
+  type Click_Access is access procedure;
+
+  -- KeyDown:  Occurs when the user presses a key while an object has the focus.
+  procedure KeyDown_Proc(KeyCode : gb.PSHORT; Shift : gb.SHORT);
+  type KeyDown_Access is access procedure (KeyCode : gb.PSHORT; Shift : gb.SHORT);
+
+  -- KeyPress:  Occurs when the user presses and releases an ANSI key.
+  procedure KeyPress_Proc(KeyAscii : gb.PSHORT);
+  type KeyPress_Access is access procedure (KeyAscii : gb.PSHORT);
+
+  -- KeyUp:  Occurs when the user releases a key while an object has the focus.
+  procedure KeyUp_Proc(KeyCode : gb.PSHORT; Shift : gb.SHORT);
+  type KeyUp_Access is access procedure (KeyCode : gb.PSHORT; Shift : gb.SHORT);
+
+  -- MouseDown:  Occurs when the user presses the mouse button while an object has the focus.
+  procedure MouseDown_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+  type MouseDown_Access is access procedure (Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+
+  -- MouseMove:  Occurs when the user moves the mouse.
+  procedure MouseMove_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+  type MouseMove_Access is access procedure (Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+
+  -- MouseUp:  Occurs when the user releases the mouse button while an object has the focus.
+  procedure MouseUp_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+  type MouseUp_Access is access procedure (Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG);
+
+  -- Scroll:  Slider scroll event
+  procedure Scroll_Proc;
+  type Scroll_Access is access procedure;
+
+  -- Change:  Indicates that the contents of a control have changed.
+  procedure Change_Proc;
+  type Change_Access is access procedure;
+
+  -- OLEStartDrag:  OLEStartDrag event
+  procedure OLEStartDrag_Proc(Data : gb.LPDISPATCH; AllowedEffects : gb.PLONG);
+  type OLEStartDrag_Access is access procedure (Data : gb.LPDISPATCH; AllowedEffects : gb.PLONG);
+
+  -- OLEGiveFeedback:  OLEGiveFeedback event
+  procedure OLEGiveFeedback_Proc(Effect : gb.PLONG; DefaultCursors : gb.PVARIANT_BOOL);
+  type OLEGiveFeedback_Access is access procedure (Effect : gb.PLONG; DefaultCursors : gb.PVARIANT_BOOL);
+
+  -- OLESetData:  OLESetData event
+  procedure OLESetData_Proc(Data : gb.LPDISPATCH; DataFormat : gb.PSHORT);
+  type OLESetData_Access is access procedure (Data : gb.LPDISPATCH; DataFormat : gb.PSHORT);
+
+  -- OLECompleteDrag:  OLECompleteDrag event
+  procedure OLECompleteDrag_Proc(Effect : gb.PLONG);
+  type OLECompleteDrag_Access is access procedure (Effect : gb.PLONG);
+
+  -- OLEDragOver:  OLEDragOver event
+  procedure OLEDragOver_Proc(Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT; State : gb.PSHORT);
+  type OLEDragOver_Access is access procedure (Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT; State : gb.PSHORT);
+
+  -- OLEDragDrop:  OLEDragDrop event
+  procedure OLEDragDrop_Proc(Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT);
+  type OLEDragDrop_Access is access procedure (Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT);
+
+  -- ######  Object Declaration  ######
+  type SliderCtrl(Parent : access gb.Object'class) is
+    new gb.OleControl(Parent) with
+  record
+    Click : Click_Access := Click_Proc'access;
+    KeyDown : KeyDown_Access := KeyDown_Proc'access;
+    KeyPress : KeyPress_Access := KeyPress_Proc'access;
+    KeyUp : KeyUp_Access := KeyUp_Proc'access;
+    MouseDown : MouseDown_Access := MouseDown_Proc'access;
+    MouseMove : MouseMove_Access := MouseMove_Proc'access;
+    MouseUp : MouseUp_Access := MouseUp_Proc'access;
+    Scroll : Scroll_Access := Scroll_Proc'access;
+    Change : Change_Access := Change_Proc'access;
+    OLEStartDrag : OLEStartDrag_Access := OLEStartDrag_Proc'access;
+    OLEGiveFeedback : OLEGiveFeedback_Access := OLEGiveFeedback_Proc'access;
+    OLESetData : OLESetData_Access := OLESetData_Proc'access;
+    OLECompleteDrag : OLECompleteDrag_Access := OLECompleteDrag_Proc'access;
+    OLEDragOver : OLEDragOver_Access := OLEDragOver_Proc'access;
+    OLEDragDrop : OLEDragDrop_Access := OLEDragDrop_Proc'access;
+  end record;
+  type SliderCtrlRef is access all SliderCtrl'class;
+
+  procedure Initialize(Obj : in out SliderCtrl);
+
+  -- ######  Methods  ######
+  -- QueryInterface
+  procedure QueryInterface(Obj : SliderCtrl; riid : gb.LPDISPATCH; ppvObj : gb.PVOID);
+
+  -- AddRef
+  function AddRef(Obj : SliderCtrl) return gb.ULONG;
+
+  -- Release
+  function Release(Obj : SliderCtrl) return gb.ULONG;
+
+  -- GetTypeInfoCount
+  procedure GetTypeInfoCount(Obj : SliderCtrl; pctinfo : gb.PUINT);
+
+  -- GetTypeInfo
+  procedure GetTypeInfo(Obj : SliderCtrl; itinfo : gb.UINT; lcid : gb.ULONG; 
+      pptinfo : gb.PVOID);
+
+  -- GetIDsOfNames
+  procedure GetIDsOfNames(Obj : SliderCtrl; riid : gb.LPDISPATCH; rgszNames : gb.PCHAR; 
+      cNames : gb.UINT; lcid : gb.ULONG; rgdispid : gb.PLONG);
+
+  -- Invoke
+  procedure Invoke(Obj : SliderCtrl; dispidMember : gb.LONG; riid : gb.LPDISPATCH; 
+      lcid : gb.ULONG; wFlags : gb.USHORT; pdispparams : gb.LPDISPATCH; 
+      pvarResult : gb.LPVARIANT; pexcepinfo : gb.LPDISPATCH; puArgErr : gb.PUINT);
+
+  -- LargeChange:  Returns/sets the increment value when the PageDown or PageUp 
+  -- key is pressed.
+  function LargeChange(Obj : SliderCtrl) return gb.LONG;
+
+  -- LargeChange:  Returns/sets the increment value when the PageDown or PageUp 
+  -- key is pressed.
+  procedure LargeChange(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- SmallChange:  Returns/sets the increment value when the left or right arrow 
+  -- key is pressed.
+  function SmallChange(Obj : SliderCtrl) return gb.LONG;
+
+  -- SmallChange:  Returns/sets the increment value when the left or right arrow 
+  -- key is pressed.
+  procedure SmallChange(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- Max:  Returns/sets the maximum value of a control.
+  function Max(Obj : SliderCtrl) return gb.LONG;
+
+  -- Max:  Returns/sets the maximum value of a control.
+  procedure Max(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- Min:  Returns/sets the minimum value of a control.
+  function Min(Obj : SliderCtrl) return gb.LONG;
+
+  -- Min:  Returns/sets the minimum value of a control.
+  procedure Min(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- Orientation:  Returns/sets the orientation of a Slider control, horizontal or vertical.
+  function Orientation(Obj : SliderCtrl) return gb.INT;
+
+  -- Orientation:  Returns/sets the orientation of a Slider control, horizontal or vertical.
+  procedure Orientation(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- SelectRange:  Returns/sets whether or not a Slider control can have a select range.
+  function SelectRange(Obj : SliderCtrl) return gb.BOOL;
+
+  -- SelectRange:  Returns/sets whether or not a Slider control can have a select range.
+  procedure SelectRange(Obj : SliderCtrl; Param1 : gb.BOOL);
+
+  -- SelStart:  Returns/sets the value where a selection starts.
+  function SelStart(Obj : SliderCtrl) return gb.LONG;
+
+  -- SelStart:  Returns/sets the value where a selection starts.
+  procedure SelStart(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- SelLength:  Returns/sets the length of a selection.
+  function SelLength(Obj : SliderCtrl) return gb.LONG;
+
+  -- SelLength:  Returns/sets the length of a selection.
+  procedure SelLength(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- TickStyle:  Returns/sets where ticks appear on a Slider control.
+  function TickStyle(Obj : SliderCtrl) return gb.INT;
+
+  -- TickStyle:  Returns/sets where ticks appear on a Slider control.
+  procedure TickStyle(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- TickFrequency:  Returns/sets the ratio of ticks on a Slider control; 1tick 
+  -- every n increments.
+  function TickFrequency(Obj : SliderCtrl) return gb.LONG;
+
+  -- TickFrequency:  Returns/sets the ratio of ticks on a Slider control; 1tick 
+  -- every n increments.
+  procedure TickFrequency(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- Value:  Returns/sets the value of an object.
+  function Value(Obj : SliderCtrl) return gb.LONG;
+
+  -- Value:  Returns/sets the value of an object.
+  procedure Value(Obj : SliderCtrl; Param1 : gb.LONG);
+
+  -- MouseIcon:  Sets a custom mouse icon.
+  function MouseIcon(Obj : SliderCtrl) return gb.LPDISPATCH;
+
+  -- MouseIcon:  Sets a custom mouse icon.
+  procedure MouseIcon(Obj : SliderCtrl; Param1 : gb.LPDISPATCH);
+
+  -- MousePointer:  Returns/sets the type of mouse pointer displayed when over 
+  -- part of an object.
+  function MousePointer(Obj : SliderCtrl) return gb.INT;
+
+  -- MousePointer:  Returns/sets the type of mouse pointer displayed when over 
+  -- part of an object.
+  procedure MousePointer(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- Enabled:  Returns/sets a value that determines whether a form or control 
+  -- can respond to user-generated events.
+  function Enabled(Obj : SliderCtrl) return gb.BOOL;
+
+  -- Enabled:  Returns/sets a value that determines whether a form or control 
+  -- can respond to user-generated events.
+  procedure Enabled(Obj : SliderCtrl; Param1 : gb.BOOL);
+
+  -- hWnd:  Returns a handle to a form or control.
+  function hWnd(Obj : SliderCtrl) return gb.INT;
+
+  -- hWnd:  Returns a handle to a form or control.
+  procedure hWnd(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- BorderStyle:  Returns/sets the border style for an object.
+  function BorderStyle(Obj : SliderCtrl) return gb.INT;
+
+  -- BorderStyle:  Returns/sets the border style for an object.
+  procedure BorderStyle(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- OLEDropMode:  Returns/Sets whether this control can act as an OLE drop target.
+  function OLEDropMode(Obj : SliderCtrl) return gb.INT;
+
+  -- OLEDropMode:  Returns/Sets whether this control can act as an OLE drop target.
+  procedure OLEDropMode(Obj : SliderCtrl; Param1 : gb.INT);
+
+  -- Refresh:  Forces a complete repaint of a form or control.
+  procedure Refresh(Obj : SliderCtrl);
+
+  -- ClearSel:  Sets the SelLength to 0.
+  procedure ClearSel(Obj : SliderCtrl);
+
+  -- DoClick:  Hidden method that can be used to invoke the Click event
+  procedure DoClick(Obj : SliderCtrl);
+
+  -- GetNumTicks:  Returns the number of visible ticks on a Slider control.
+  function GetNumTicks(Obj : SliderCtrl) return gb.LONG;
+
+  -- OLEDrag:  Starts an OLE drag/drop event with the given control as the source.
+  procedure OLEDrag(Obj : SliderCtrl);
+
+  -- AboutBox
+  procedure AboutBox(Obj : SliderCtrl);
+
+  -- Text:  Returns/sets the string displayed in the ToolTip as the slider's position changes.
+  function Text(Obj : SliderCtrl) return String;
+
+  -- Text:  Returns/sets the string displayed in the ToolTip as the slider's position changes.
+  procedure Text(Obj : SliderCtrl; Param1 : String);
+
+  -- TextPosition:  Returns/sets a value that determines where the tooltip displaying 
+  -- the Slider's changing position is displayed.
+  function TextPosition(Obj : SliderCtrl) return gb.INT;
+
+  -- TextPosition:  Returns/sets a value that determines where the tooltip displaying 
+  -- the Slider's changing position is displayed.
+  procedure TextPosition(Obj : SliderCtrl; Param1 : gb.INT);
+
+end MSComctlLib_Slider;
+
+
+package body MSComctlLib_Slider is
+
+  pragma Suppress(Discriminant_Check);
+
+  use type gb.DISPID;
+  use type gb.VARTYPE;
+
+  -- ######  Methods  ######
+  procedure QueryInterface(Obj : SliderCtrl; riid : gb.LPDISPATCH; ppvObj : gb.PVOID) is
+    myVariants : array (1..2) of gb.Variant;
+  begin
+    myVariants(2) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_VOID, 0, 0, 0, (gb.VT_BYREF or gb.VT_VOID, ppvObj));
+    gb.DoMethod(Obj, 1610612736, 1, 2, gb.Convert(myVariants'address));
+  end QueryInterface;
+
+  function AddRef(Obj : SliderCtrl) return gb.ULONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1610612737, 1, 0, null, myResult'unchecked_access);
+    return myResult.u.ulVal;
+  end AddRef;
+
+  function Release(Obj : SliderCtrl) return gb.ULONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1610612738, 1, 0, null, myResult'unchecked_access);
+    return myResult.u.ulVal;
+  end Release;
+
+  procedure GetTypeInfoCount(Obj : SliderCtrl; pctinfo : gb.PUINT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BYREF or gb.VT_UINT, 0, 0, 0, (gb.VT_BYREF or gb.VT_UINT, pctinfo));
+    gb.DoMethod(Obj, 1610678272, 1, 1, gb.Convert(myVariants'address));
+  end GetTypeInfoCount;
+
+  procedure GetTypeInfo(Obj : SliderCtrl; itinfo : gb.UINT; lcid : gb.ULONG; 
+      pptinfo : gb.PVOID) is
+    myVariants : array (1..3) of gb.Variant;
+  begin
+    myVariants(3) := (gb.VT_UINT, 0, 0, 0, (gb.VT_UINT, itinfo));
+    myVariants(2) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_VOID, 0, 0, 0, (gb.VT_BYREF or gb.VT_VOID, pptinfo));
+    gb.DoMethod(Obj, 1610678273, 1, 3, gb.Convert(myVariants'address));
+  end GetTypeInfo;
+
+  procedure GetIDsOfNames(Obj : SliderCtrl; riid : gb.LPDISPATCH; rgszNames : gb.PCHAR; 
+      cNames : gb.UINT; lcid : gb.ULONG; rgdispid : gb.PLONG) is
+    myVariants : array (1..5) of gb.Variant;
+  begin
+    myVariants(5) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(4) := (gb.VT_BYREF or gb.VT_I1, 0, 0, 0, (gb.VT_BYREF or gb.VT_I1, rgszNames));
+    myVariants(3) := (gb.VT_UINT, 0, 0, 0, (gb.VT_UINT, cNames));
+    myVariants(2) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_I4, 0, 0, 0, (gb.VT_BYREF or gb.VT_I4, rgdispid));
+    gb.DoMethod(Obj, 1610678274, 1, 5, gb.Convert(myVariants'address));
+  end GetIDsOfNames;
+
+  procedure Invoke(Obj : SliderCtrl; dispidMember : gb.LONG; riid : gb.LPDISPATCH; 
+      lcid : gb.ULONG; wFlags : gb.USHORT; pdispparams : gb.LPDISPATCH; 
+      pvarResult : gb.LPVARIANT; pexcepinfo : gb.LPDISPATCH; puArgErr : gb.PUINT) is
+    myVariants : array (1..8) of gb.Variant;
+  begin
+    myVariants(8) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, dispidMember));
+    myVariants(7) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, riid));
+    myVariants(6) := (gb.VT_UI4, 0, 0, 0, (gb.VT_UI4, lcid));
+    myVariants(5) := (gb.VT_UI2, 0, 0, 0, (gb.VT_UI2, wFlags));
+    myVariants(4) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, pdispparams));
+    myVariants(3) := pvarResult.all;
+    myVariants(2) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, pexcepinfo));
+    myVariants(1) := (gb.VT_BYREF or gb.VT_UINT, 0, 0, 0, (gb.VT_BYREF or gb.VT_UINT, puArgErr));
+    gb.DoMethod(Obj, 1610678275, 1, 8, gb.Convert(myVariants'address));
+  end Invoke;
+
+  function LargeChange(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end LargeChange;
+
+  procedure LargeChange(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 1, 4, 1, gb.Convert(myVariants'address));
+  end LargeChange;
+
+  function SmallChange(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 2, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end SmallChange;
+
+  procedure SmallChange(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 2, 4, 1, gb.Convert(myVariants'address));
+  end SmallChange;
+
+  function Max(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 3, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end Max;
+
+  procedure Max(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 3, 4, 1, gb.Convert(myVariants'address));
+  end Max;
+
+  function Min(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 4, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end Min;
+
+  procedure Min(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 4, 4, 1, gb.Convert(myVariants'address));
+  end Min;
+
+  function Orientation(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 5, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end Orientation;
+
+  procedure Orientation(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 5, 4, 1, gb.Convert(myVariants'address));
+  end Orientation;
+
+  function SelectRange(Obj : SliderCtrl) return gb.BOOL is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 6, 2, 0, null, myResult'unchecked_access);
+    return gb.Convert(myResult.u.bool);
+  end SelectRange;
+
+  procedure SelectRange(Obj : SliderCtrl; Param1 : gb.BOOL) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BOOL, 0, 0, 0, (gb.VT_BOOL, gb.Convert(Param1)));
+    gb.DoMethod(Obj, 6, 4, 1, gb.Convert(myVariants'address));
+  end SelectRange;
+
+  function SelStart(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 7, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end SelStart;
+
+  procedure SelStart(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 7, 4, 1, gb.Convert(myVariants'address));
+  end SelStart;
+
+  function SelLength(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 8, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end SelLength;
+
+  procedure SelLength(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 8, 4, 1, gb.Convert(myVariants'address));
+  end SelLength;
+
+  function TickStyle(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 9, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end TickStyle;
+
+  procedure TickStyle(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 9, 4, 1, gb.Convert(myVariants'address));
+  end TickStyle;
+
+  function TickFrequency(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 10, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end TickFrequency;
+
+  procedure TickFrequency(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 10, 4, 1, gb.Convert(myVariants'address));
+  end TickFrequency;
+
+  function Value(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 11, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end Value;
+
+  procedure Value(Obj : SliderCtrl; Param1 : gb.LONG) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_I4, 0, 0, 0, (gb.VT_I4, Param1));
+    gb.DoMethod(Obj, 11, 4, 1, gb.Convert(myVariants'address));
+  end Value;
+
+  function MouseIcon(Obj : SliderCtrl) return gb.LPDISPATCH is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 12, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.pdispVal;
+  end MouseIcon;
+
+  procedure MouseIcon(Obj : SliderCtrl; Param1 : gb.LPDISPATCH) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_DISPATCH, 0, 0, 0, (gb.VT_DISPATCH, Param1));
+    gb.DoMethod(Obj, 12, 4, 1, gb.Convert(myVariants'address));
+  end MouseIcon;
+
+  function MousePointer(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 13, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end MousePointer;
+
+  procedure MousePointer(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 13, 4, 1, gb.Convert(myVariants'address));
+  end MousePointer;
+
+  function Enabled(Obj : SliderCtrl) return gb.BOOL is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, -514, 2, 0, null, myResult'unchecked_access);
+    return gb.Convert(myResult.u.bool);
+  end Enabled;
+
+  procedure Enabled(Obj : SliderCtrl; Param1 : gb.BOOL) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BOOL, 0, 0, 0, (gb.VT_BOOL, gb.Convert(Param1)));
+    gb.DoMethod(Obj, -514, 4, 1, gb.Convert(myVariants'address));
+  end Enabled;
+
+  function hWnd(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, -515, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end hWnd;
+
+  procedure hWnd(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, -515, 4, 1, gb.Convert(myVariants'address));
+  end hWnd;
+
+  function BorderStyle(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, -504, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end BorderStyle;
+
+  procedure BorderStyle(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, -504, 4, 1, gb.Convert(myVariants'address));
+  end BorderStyle;
+
+  function OLEDropMode(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 1551, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end OLEDropMode;
+
+  procedure OLEDropMode(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 1551, 4, 1, gb.Convert(myVariants'address));
+  end OLEDropMode;
+
+  procedure Refresh(Obj : SliderCtrl) is
+  begin
+    gb.DoMethod(Obj, -550, 1);
+  end Refresh;
+
+  procedure ClearSel(Obj : SliderCtrl) is
+  begin
+    gb.DoMethod(Obj, 14, 1);
+  end ClearSel;
+
+  procedure DoClick(Obj : SliderCtrl) is
+  begin
+    gb.DoMethod(Obj, -551, 1);
+  end DoClick;
+
+  function GetNumTicks(Obj : SliderCtrl) return gb.LONG is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 15, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.lVal;
+  end GetNumTicks;
+
+  procedure OLEDrag(Obj : SliderCtrl) is
+  begin
+    gb.DoMethod(Obj, 1552, 1);
+  end OLEDrag;
+
+  procedure AboutBox(Obj : SliderCtrl) is
+  begin
+    gb.DoMethod(Obj, -552, 1);
+  end AboutBox;
+
+  function Text(Obj : SliderCtrl) return String is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 16, 2, 0, null, myResult'unchecked_access);
+    return gb.To_ASCII(myResult.u.bstrVal);
+  end Text;
+
+  procedure Text(Obj : SliderCtrl; Param1 : String) is
+    myBSTR1 : aliased gb.BSTR := gb.AllocBSTR(Param1);
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_BSTR, 0, 0, 0, (gb.VT_BSTR, myBSTR1));
+    gb.DoMethod(Obj, 16, 4, 1, gb.Convert(myVariants'address));
+    gb.FreeBSTR(myBSTR1);
+  end Text;
+
+  function TextPosition(Obj : SliderCtrl) return gb.INT is
+    myResult   : aliased gb.Variant;
+  begin
+    gb.DoMethod(Obj, 17, 2, 0, null, myResult'unchecked_access);
+    return myResult.u.intVal;
+  end TextPosition;
+
+  procedure TextPosition(Obj : SliderCtrl; Param1 : gb.INT) is
+    myVariants : array (1..1) of gb.Variant;
+  begin
+    myVariants(1) := (gb.VT_INT, 0, 0, 0, (gb.VT_INT, Param1));
+    gb.DoMethod(Obj, 17, 4, 1, gb.Convert(myVariants'address));
+  end TextPosition;
+
+  -- ######  Event Dispatch  ######
+  procedure DispatchEvent_Proc(Obj : gb.OleControlRef; dispidMember : gb.DISPID;
+      pdispparams : access gb.DISPPARAMS) is
+    hr         : gb.HRESULT;
+    u          : aliased gb.UINT;
+    myVariant1 : aliased gb.VARIANT;
+    myVariant2 : aliased gb.VARIANT;
+    myVariant3 : aliased gb.VARIANT;
+    myVariant4 : aliased gb.VARIANT;
+    myVariant5 : aliased gb.VARIANT;
+    myVariant6 : aliased gb.VARIANT;
+    myVariant7 : aliased gb.VARIANT;
+  begin
+    if dispidMember = -600 then
+      SliderCtrl(Obj.all).Click.all;
+    elsif dispidMember = -602 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_BYREF or gb.VT_I2, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_I2, myVariant2'access, u'access);
+      SliderCtrl(Obj.all).KeyDown(myVariant1.u.iVal'unchecked_access, myVariant2.u.iVal);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+    elsif dispidMember = -603 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_BYREF or gb.VT_I2, myVariant1'access, u'access);
+      SliderCtrl(Obj.all).KeyPress(myVariant1.u.iVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+    elsif dispidMember = -604 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_BYREF or gb.VT_I2, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_I2, myVariant2'access, u'access);
+      SliderCtrl(Obj.all).KeyUp(myVariant1.u.iVal'unchecked_access, myVariant2.u.iVal);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+    elsif dispidMember = -605 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_I2, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_I2, myVariant2'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 2, gb.VT_I4, myVariant3'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 3, gb.VT_I4, myVariant4'access, u'access);
+      SliderCtrl(Obj.all).MouseDown(myVariant1.u.iVal, myVariant2.u.iVal, 
+        myVariant3.u.lVal, myVariant4.u.lVal);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+      hr := gb.VariantClear(myVariant3'access);
+      hr := gb.VariantClear(myVariant4'access);
+    elsif dispidMember = -606 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_I2, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_I2, myVariant2'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 2, gb.VT_I4, myVariant3'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 3, gb.VT_I4, myVariant4'access, u'access);
+      SliderCtrl(Obj.all).MouseMove(myVariant1.u.iVal, myVariant2.u.iVal, 
+        myVariant3.u.lVal, myVariant4.u.lVal);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+      hr := gb.VariantClear(myVariant3'access);
+      hr := gb.VariantClear(myVariant4'access);
+    elsif dispidMember = -607 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_I2, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_I2, myVariant2'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 2, gb.VT_I4, myVariant3'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 3, gb.VT_I4, myVariant4'access, u'access);
+      SliderCtrl(Obj.all).MouseUp(myVariant1.u.iVal, myVariant2.u.iVal, 
+        myVariant3.u.lVal, myVariant4.u.lVal);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+      hr := gb.VariantClear(myVariant3'access);
+      hr := gb.VariantClear(myVariant4'access);
+    elsif dispidMember = 1 then
+      SliderCtrl(Obj.all).Scroll.all;
+    elsif dispidMember = 2 then
+      SliderCtrl(Obj.all).Change.all;
+    elsif dispidMember = 1550 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_DISPATCH, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_BYREF or gb.VT_I4, myVariant2'access, u'access);
+      SliderCtrl(Obj.all).OLEStartDrag(myVariant1.u.pdispVal, myVariant2.u.lVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+    elsif dispidMember = 1551 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_BYREF or gb.VT_I4, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_BYREF or gb.VT_BOOL, myVariant2'access, u'access);
+      SliderCtrl(Obj.all).OLEGiveFeedback(myVariant1.u.lVal'unchecked_access, myVariant2.u.bool'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+    elsif dispidMember = 1552 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_DISPATCH, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_BYREF or gb.VT_I2, myVariant2'access, u'access);
+      SliderCtrl(Obj.all).OLESetData(myVariant1.u.pdispVal, myVariant2.u.iVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+    elsif dispidMember = 1553 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_BYREF or gb.VT_I4, myVariant1'access, u'access);
+      SliderCtrl(Obj.all).OLECompleteDrag(myVariant1.u.lVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+    elsif dispidMember = 1554 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_DISPATCH, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_BYREF or gb.VT_I4, myVariant2'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 2, gb.VT_BYREF or gb.VT_I2, myVariant3'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 3, gb.VT_BYREF or gb.VT_I2, myVariant4'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 4, gb.VT_BYREF or gb.VT_R4, myVariant5'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 5, gb.VT_BYREF or gb.VT_R4, myVariant6'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 6, gb.VT_BYREF or gb.VT_I2, myVariant7'access, u'access);
+      SliderCtrl(Obj.all).OLEDragOver(myVariant1.u.pdispVal, myVariant2.u.lVal'unchecked_access, 
+        myVariant3.u.iVal'unchecked_access, myVariant4.u.iVal'unchecked_access, myVariant5.u.fltVal'unchecked_access, 
+        myVariant6.u.fltVal'unchecked_access, myVariant7.u.iVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+      hr := gb.VariantClear(myVariant3'access);
+      hr := gb.VariantClear(myVariant4'access);
+      hr := gb.VariantClear(myVariant5'access);
+      hr := gb.VariantClear(myVariant6'access);
+      hr := gb.VariantClear(myVariant7'access);
+    elsif dispidMember = 1555 then
+      hr := gb.DispGetParam(pdispparams, 0, gb.VT_DISPATCH, myVariant1'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 1, gb.VT_BYREF or gb.VT_I4, myVariant2'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 2, gb.VT_BYREF or gb.VT_I2, myVariant3'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 3, gb.VT_BYREF or gb.VT_I2, myVariant4'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 4, gb.VT_BYREF or gb.VT_R4, myVariant5'access, u'access);
+      hr := gb.DispGetParam(pdispparams, 5, gb.VT_BYREF or gb.VT_R4, myVariant6'access, u'access);
+      SliderCtrl(Obj.all).OLEDragDrop(myVariant1.u.pdispVal, myVariant2.u.lVal'unchecked_access, 
+        myVariant3.u.iVal'unchecked_access, myVariant4.u.iVal'unchecked_access, myVariant5.u.fltVal'unchecked_access, 
+        myVariant6.u.fltVal'unchecked_access);
+      hr := gb.VariantClear(myVariant1'access);
+      hr := gb.VariantClear(myVariant2'access);
+      hr := gb.VariantClear(myVariant3'access);
+      hr := gb.VariantClear(myVariant4'access);
+      hr := gb.VariantClear(myVariant5'access);
+      hr := gb.VariantClear(myVariant6'access);
+    end if;
+  end DispatchEvent_Proc;
+
+  procedure Initialize(Obj : in out SliderCtrl) is
+  begin
+    Obj.i_DispatchEvent := DispatchEvent_Proc'access;
+    Obj.i_ProgID(1..21) := gb.To_OleChar("MSComctlLib.Slider.2");
+    Obj.i_EventDispatchIID(1..39) := gb.To_OleChar("{F08DF953-8592-11D1-B16A-00C0F0283628}");
+  end Initialize;
+
+  -- ######  Events  ######
+  procedure Click_Proc is
+  begin
+    null;
+  end Click_Proc;
+
+  procedure KeyDown_Proc(KeyCode : gb.PSHORT; Shift : gb.SHORT) is
+  begin
+    null;
+  end KeyDown_Proc;
+
+  procedure KeyPress_Proc(KeyAscii : gb.PSHORT) is
+  begin
+    null;
+  end KeyPress_Proc;
+
+  procedure KeyUp_Proc(KeyCode : gb.PSHORT; Shift : gb.SHORT) is
+  begin
+    null;
+  end KeyUp_Proc;
+
+  procedure MouseDown_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG) is
+  begin
+    null;
+  end MouseDown_Proc;
+
+  procedure MouseMove_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG) is
+  begin
+    null;
+  end MouseMove_Proc;
+
+  procedure MouseUp_Proc(Button : gb.SHORT; Shift : gb.SHORT; 
+        x : gb.LONG; y : gb.LONG) is
+  begin
+    null;
+  end MouseUp_Proc;
+
+  procedure Scroll_Proc is
+  begin
+    null;
+  end Scroll_Proc;
+
+  procedure Change_Proc is
+  begin
+    null;
+  end Change_Proc;
+
+  procedure OLEStartDrag_Proc(Data : gb.LPDISPATCH; AllowedEffects : gb.PLONG) is
+  begin
+    null;
+  end OLEStartDrag_Proc;
+
+  procedure OLEGiveFeedback_Proc(Effect : gb.PLONG; DefaultCursors : gb.PVARIANT_BOOL) is
+  begin
+    null;
+  end OLEGiveFeedback_Proc;
+
+  procedure OLESetData_Proc(Data : gb.LPDISPATCH; DataFormat : gb.PSHORT) is
+  begin
+    null;
+  end OLESetData_Proc;
+
+  procedure OLECompleteDrag_Proc(Effect : gb.PLONG) is
+  begin
+    null;
+  end OLECompleteDrag_Proc;
+
+  procedure OLEDragOver_Proc(Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT; State : gb.PSHORT) is
+  begin
+    null;
+  end OLEDragOver_Proc;
+
+  procedure OLEDragDrop_Proc(Data : gb.LPDISPATCH; Effect : gb.PLONG; 
+        Button : gb.PSHORT; Shift : gb.PSHORT; x : gb.PFLOAT; 
+        y : gb.PFLOAT) is
+  begin
+    null;
+  end OLEDragDrop_Proc;
+
+end MSComctlLib_Slider;
+
+
diff --git a/PoFGui/Main.rsp b/PoFGui/Main.rsp
new file mode 100644 (file)
index 0000000..0efb370
--- /dev/null
@@ -0,0 +1,89 @@
+/NOLOGO
+/VERSION:3.273
+/STACK:65536,8192
+/SUBSYSTEM:WINDOWS
+/OPT:REF
+/PDB:NONE
+/DEBUG
+/DEBUGTYPE:cv
+/OUT:main.exe
+obj\elt\main.obj
+main.compopts.obj
+obj\ada\mscomctllib_slider.obj
+obj\ada\main_win.obj
+project1.res
+c:\progra~1\aonix\object~1\lib\crtpexe.obj
+c:\progra~1\aonix\object~1\lib\adamain.lib
+c:\progra~1\aonix\object~1\lib\kernel32.lib
+c:\progra~1\aonix\object~1\lib\ntstub.lib
+c:\progra~1\aonix\object~1\guibuild\lib\gui.lib
+c:\progra~1\aonix\object~1\win32ada\binding\lib\win32.lib
+c:\progra~1\aonix\object~1\apilib\advapi32.lib
+c:\progra~1\aonix\object~1\apilib\comctl32.lib
+c:\progra~1\aonix\object~1\apilib\comdlg32.lib
+c:\progra~1\aonix\object~1\apilib\dlcapi.lib
+c:\progra~1\aonix\object~1\apilib\gdi32.lib
+c:\progra~1\aonix\object~1\apilib\glu32.lib
+c:\progra~1\aonix\object~1\apilib\glaux.lib
+c:\progra~1\aonix\object~1\apilib\lz32.lib
+c:\progra~1\aonix\object~1\apilib\mgmtapi.lib
+c:\progra~1\aonix\object~1\apilib\msacm32.lib
+c:\progra~1\aonix\object~1\apilib\netapi32.lib
+c:\progra~1\aonix\object~1\apilib\ole32.lib
+c:\progra~1\aonix\object~1\apilib\oleaut32.lib
+c:\progra~1\aonix\object~1\apilib\opengl32.lib
+c:\progra~1\aonix\object~1\apilib\rpcns4.lib
+c:\progra~1\aonix\object~1\apilib\rpcrt4.lib
+c:\progra~1\aonix\object~1\apilib\shell32.lib
+c:\progra~1\aonix\object~1\apilib\user32.lib
+c:\progra~1\aonix\object~1\apilib\vfw32.lib
+c:\progra~1\aonix\object~1\apilib\winmm.lib
+c:\progra~1\aonix\object~1\apilib\wsock32.lib
+c:\progra~1\aonix\object~1\apilib\winspool.lib
+c:\progra~1\aonix\object~1\apilib\advapi32.lib
+c:\progra~1\aonix\object~1\apilib\cap.lib
+c:\progra~1\aonix\object~1\apilib\comctl32.lib
+c:\progra~1\aonix\object~1\apilib\comdlg32.lib
+c:\progra~1\aonix\object~1\apilib\ctl3d32.lib
+c:\progra~1\aonix\object~1\apilib\dlcapi.lib
+c:\progra~1\aonix\object~1\apilib\dsound.lib
+c:\progra~1\aonix\object~1\apilib\gdi32.lib
+c:\progra~1\aonix\object~1\apilib\glaux.lib
+c:\progra~1\aonix\object~1\apilib\glu32.lib
+c:\progra~1\aonix\object~1\apilib\largeint.lib
+c:\progra~1\aonix\object~1\apilib\lz32.lib
+c:\progra~1\aonix\object~1\apilib\mgmtapi.lib
+c:\progra~1\aonix\object~1\apilib\mpr.lib
+c:\progra~1\aonix\object~1\apilib\msacm32.lib
+c:\progra~1\aonix\object~1\apilib\nddeapi.lib
+c:\progra~1\aonix\object~1\apilib\netapi32.lib
+c:\progra~1\aonix\object~1\apilib\odbc32.lib
+c:\progra~1\aonix\object~1\apilib\oldnames.lib
+c:\progra~1\aonix\object~1\apilib\ole32.lib
+c:\progra~1\aonix\object~1\apilib\oleaut32.lib
+c:\progra~1\aonix\object~1\apilib\opengl32.lib
+c:\progra~1\aonix\object~1\apilib\penter.lib
+c:\progra~1\aonix\object~1\apilib\rasapi32.lib
+c:\progra~1\aonix\object~1\apilib\rpcdce4.lib
+c:\progra~1\aonix\object~1\apilib\rpcndr.lib
+c:\progra~1\aonix\object~1\apilib\rpcns4.lib
+c:\progra~1\aonix\object~1\apilib\rpcrt4.lib
+c:\progra~1\aonix\object~1\apilib\scrnsave.lib
+c:\progra~1\aonix\object~1\apilib\shell32.lib
+c:\progra~1\aonix\object~1\apilib\snmpapi.lib
+c:\progra~1\aonix\object~1\apilib\tapi32.lib
+c:\progra~1\aonix\object~1\apilib\user32.lib
+c:\progra~1\aonix\object~1\apilib\uuid.lib
+c:\progra~1\aonix\object~1\apilib\vdmdbg.lib
+c:\progra~1\aonix\object~1\apilib\version.lib
+c:\progra~1\aonix\object~1\apilib\vfw32.lib
+c:\progra~1\aonix\object~1\apilib\win32spl.lib
+c:\progra~1\aonix\object~1\apilib\wininet.lib
+c:\progra~1\aonix\object~1\apilib\winmm.lib
+c:\progra~1\aonix\object~1\apilib\winspool.lib
+c:\progra~1\aonix\object~1\apilib\winstrm.lib
+c:\progra~1\aonix\object~1\apilib\wsock32.lib
+c:\progra~1\aonix\object~1\apilib\wst.lib
+c:\progra~1\aonix\object~1\apilib\libcmtd.lib
+rts.lib
+/LIBPATH:c:\progra~1\aonix\object~1\lib
diff --git a/PoFGui/Main_Win.ada b/PoFGui/Main_Win.ada
new file mode 100644 (file)
index 0000000..033bcad
--- /dev/null
@@ -0,0 +1,227 @@
+with Gb; use Gb;
+with Gb.OleInterfaces;
+
+with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System;
+with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C;
+use  Win32, Win32.WinError, Interfaces.C, System;
+
+with MSComctlLib_Slider; use MSComctlLib_Slider;
+package Main_Win is
+  Form            : aliased Gb.MainWindow;
+  Frm_Ensembles   : aliased Gb.Frame;
+  Rad_Mandel      : aliased Gb.RadioButton;
+  Rad_Julia       : aliased Gb.RadioButton;
+  Txt_Cx          : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => Gb.False, Password => Gb.False, 
+                                       ReadOnly => Gb.False);
+  Txt_Cy          : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => Gb.False, Password => Gb.False, 
+                                       ReadOnly => Gb.False);
+  Ch_Antialiasing       : aliased Gb.CheckBox;
+  Txt_Iterations  : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => Gb.False, Password => Gb.False, 
+                                       ReadOnly => Gb.False);
+  But_Redraw      : aliased Gb.Button;
+  Lab_Cx          : aliased Gb.Label;
+  Lab_Cy          : aliased Gb.Label;
+  Pic_Draw        : aliased Gb.Picture;
+  Img_Logo        : aliased Gb.Image;
+  Frm_Iterations  : aliased Gb.Frame;
+  Frm_Part_Droite       : aliased Gb.Frame;
+  Frm_Part_Bas    : aliased Gb.Frame;
+  Slid_Iterations       : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access);
+  package Slid_Iterations_Interfaces is new Gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations");
+  procedure Initialize_Form;
+end Main_Win;
+
+with GbOBJECTs; use GbOBJECTs;
+with Public;
+
+package body Main_Win is
+  procedure Rad_Mandel_Click is
+  begin
+  
+    if Gb.Value(Rad_Mandel) = 1 then
+       Gb.Value(Rad_Julia, 0);
+       Gb.Enabled(Txt_Cx, 0);
+       Gb.Enabled(Txt_Cy, 0);
+    else
+       Gb.Value(Rad_Julia, 1);
+       Gb.Enabled(Txt_Cx, 1);
+       Gb.Enabled(Txt_Cy, 1);
+    end if;
+  
+  end Rad_Mandel_Click;
+
+  procedure Rad_Julia_Click is
+  begin
+    if Gb.Value(Rad_Julia) = 1 then
+       Gb.Value(Rad_Mandel, 0);
+       Gb.Enabled(Txt_Cx, 1);
+       Gb.Enabled(Txt_Cy, 1);
+    else
+       Gb.Value(Rad_Mandel, 1);
+       Gb.Enabled(Txt_Cx, 0);
+       Gb.Enabled(Txt_Cy, 0);
+    end if;
+  end Rad_Julia_Click;
+
+  procedure Txt_Iterations_Changed is
+  
+   Nb_Iterations : Gb.Long;
+   Nb_Iteration_Min : constant := 10;
+   Nb_Iteration_Max : constant := 1000;
+  
+  begin
+  
+    Nb_Iterations := Gb.Long'Value(Text(Txt_Iterations));
+  
+    if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then
+  
+      Value(Slid_Iterations, Nb_Iterations);
+    
+    end if;
+  
+  end Txt_Iterations_Changed;
+
+  procedure But_Redraw_Click is
+  
+  begin
+  
+       null;
+   --line(Image2, 10, 10,  100,  100 ,  Color(122, 122, 122), 0,1);
+  
+  end But_Redraw_Click;
+
+  procedure Slid_Iterations_Scroll is
+  begin
+  
+  
+      Text(Txt_Iterations,Gb.Long'Image(Value(Slid_Iterations)));
+  
+  
+  end Slid_Iterations_Scroll;
+
+  procedure Form_WindowResized(Flag : Gb.INT; Width : Gb.INT; Height : Gb.INT) is
+  
+  begin
+  --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16
+     if Gb.Width(Main_Win.Form) < 542  then
+        Gb.Width(Main_Win.Form, 542);
+     end if;
+  
+     if Gb.Height(Main_Win.Form) < 369 then
+        Gb.Height(Main_Win.Form, 369);
+     end if;
+  
+  
+     --redimmensionnement de la zone de dessin
+     Gb.Width(Pic_Draw, Gb.Width(Main_Win.Form) - Gb.Width(Frm_Part_Droite) - 16 );
+     Gb.Height(Pic_Draw, Gb.Height(Main_Win.Form) - Gb.Height(Frm_Part_Bas) - 35 );
+     
+     --Deplacement de la frame de droite
+     Gb.Left(Frm_Part_Droite, Gb.Width(Main_Win.Form) - Gb.Width(Frm_Part_Droite) - 9 ); 
+  
+     --Deplacement de la frame du bas
+     Gb.Top(Frm_Part_Bas, Gb.Height(Main_Win.Form) - Gb.Height(Frm_Part_Bas) - 30);
+  
+     --Deplacement du logo (en bas a gauche)
+  
+  
+  
+  
+  end Form_WindowResized;
+
+  procedure Initialize_Form is
+  begin
+    Caption(Frm_Ensembles, "Ensembles");
+    Move(Frm_Ensembles, 6, 10, 89, 134);
+    Parent(Frm_Ensembles, Frm_Part_Droite);
+
+    Rad_Mandel.Click := Rad_Mandel_Click'access;
+    Caption(Rad_Mandel, "Mandelbrot");
+    Value(Rad_Mandel, Gb.True);
+    Move(Rad_Mandel, 8, 18, 77, 13);
+    Parent(Rad_Mandel, Frm_Ensembles);
+
+    Rad_Julia.Click := Rad_Julia_Click'access;
+    Caption(Rad_Julia, "Julia");
+    TabStop(Rad_Julia, Gb.False);
+    Move(Rad_Julia, 8, 59, 61, 13);
+    Parent(Rad_Julia, Frm_Ensembles);
+
+    Enabled(Txt_Cx, Gb.False);
+    Text(Txt_Cx, "0");
+    Move(Txt_Cx, 31, 86, 51, 21);
+    Parent(Txt_Cx, Frm_Ensembles);
+
+    Enabled(Txt_Cy, Gb.False);
+    Text(Txt_Cy, "0");
+    Move(Txt_Cy, 31, 107, 51, 21);
+    Parent(Txt_Cy, Frm_Ensembles);
+
+    Caption(Ch_Antialiasing, "Antialiasing");
+    Move(Ch_Antialiasing, 12, 206, 74, 13);
+    Parent(Ch_Antialiasing, Frm_Part_Droite);
+
+    Txt_Iterations.Changed := Txt_Iterations_Changed'access;
+    Text(Txt_Iterations, "0");
+    Move(Txt_Iterations, 3, 30, 84, 19);
+    Parent(Txt_Iterations, Frm_Iterations);
+
+    But_Redraw.Click := But_Redraw_Click'access;
+    Caption(But_Redraw, "REDRAW");
+    Move(But_Redraw, 7, 244, 88, 20);
+    Parent(But_Redraw, Frm_Part_Droite);
+
+    Caption(Lab_Cx, "Cx");
+    SetFont(Lab_Cx, "MS Sans Serif", 8, Gb.False, Gb.False, Gb.False);
+    Move(Lab_Cx, 14, 89, 14, 21);
+    Parent(Lab_Cx, Frm_Ensembles);
+
+    Caption(Lab_Cy, "Cy");
+    SetFont(Lab_Cy, "MS Sans Serif", 8, Gb.False, Gb.False, Gb.False);
+    Move(Lab_Cy, 14, 109, 16, 21);
+    Parent(Lab_Cy, Frm_Ensembles);
+
+    Cursor(Pic_Draw, Gb.CrossCursor);
+    Move(Pic_Draw, 3, 4, 422, 259);
+
+    Bitmap(Img_Logo, Gb.LoadBitmapResource("Img_Logo_Bitmap"));
+    Border(Img_Logo, Gb.False);
+    Move(Img_Logo, 1, 287, 100, 48);
+    Parent(Img_Logo, Frm_Part_Droite);
+
+    Caption(Frm_Iterations, "Iterations");
+    Move(Frm_Iterations, 7, 145, 89, 51);
+    Parent(Frm_Iterations, Frm_Part_Droite);
+
+    Caption(Frm_Part_Droite, "");
+    Move(Frm_Part_Droite, 429, -2, 104, 341);
+
+    Caption(Frm_Part_Bas, "");
+    Move(Frm_Part_Bas, 3, 264, 423, 75);
+
+    Slid_Iterations.Scroll := Slid_Iterations_Scroll'access;
+    Move(Slid_Iterations, 2, 14, 84, 14);
+
+    Form.WindowResized := Form_WindowResized'access;
+    Icon(Form, Gb.LoadIconResource("Main_Win_Icon"));
+    Caption(Form, "Power Fractal 0.1");
+    MaxButton(Form, Gb.False);
+    Move(Form, 149, 269, 542, 369);
+    Visible(Form, Gb.True);
+  end Initialize_Form;
+begin
+  Initialize_Form;
+end Main_Win;
+
+
+with Gb;
+with Main_Win;
+
+procedure PowerFractal is begin
+  Gb.StartApplication;
+end PowerFractal;
+
+
diff --git a/PoFGui/Main_Win.ada.0 b/PoFGui/Main_Win.ada.0
new file mode 100644 (file)
index 0000000..53aaaca
--- /dev/null
@@ -0,0 +1,229 @@
+with gb; use gb;
+with gb.OleInterfaces;
+with gbOBJECTs; use gbOBJECTs;
+with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System;
+with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C;
+use  Win32, Win32.WinError, Interfaces.C, System;
+
+with MSComctlLib_Slider; use MSComctlLib_Slider;
+package Main_Win is
+  Form            : aliased gb.MainWindow;
+  Frm_Ensembles   : aliased gb.Frame;
+  Rad_Mandel      : aliased gb.RadioButton;
+  Rad_Julia       : aliased gb.RadioButton;
+  Txt_Cx          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Txt_Cy          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Ch_Antialiasing : aliased gb.CheckBox;
+  Txt_Iterations  : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  But_Redraw      : aliased gb.Button;
+  Lab_Cx          : aliased gb.Label;
+  Lab_Cy          : aliased gb.Label;
+  Pic_Draw        : aliased gb.Picture;
+  Img_Logo        : aliased gb.Image;
+  Frm_Iterations  : aliased gb.Frame;
+  Frm_Part_Droite : aliased gb.Frame;
+  Frm_Part_Bas    : aliased gb.Frame;
+  Image2          : aliased gb.Image;
+  Slid_Iterations       : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access);
+  package Slid_Iterations_Interfaces is new gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations");
+  procedure Initialize_Form;
+end Main_Win;
+
+with gbOBJECTs; use gbOBJECTs;
+with Public;
+
+package body Main_Win is
+  procedure Rad_Mandel_Click is
+  begin
+  
+    if gb.Value(Rad_Mandel) = 1 then
+       gb.Value(Rad_Julia, 0);
+       gb.Enabled(Txt_Cx, 0);
+       gb.Enabled(Txt_Cy, 0);
+    else
+       gb.Value(Rad_Julia, 1);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    end if;
+  
+  end Rad_Mandel_Click;
+
+  procedure Rad_Julia_Click is
+  begin
+    if gb.Value(Rad_Julia) = 1 then
+       gb.Value(Rad_Mandel, 0);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    else
+       gb.Value(Rad_Mandel, 1);
+       gb.enabled(Txt_Cx, 0);
+       gb.enabled(Txt_Cy, 0);
+    end if;
+  end Rad_Julia_Click;
+
+  procedure Txt_Iterations_Changed is
+  
+   Nb_Iterations : gb.Long;
+   Nb_Iteration_Min : Constant := 10;
+   Nb_Iteration_Max : Constant := 1000;
+  
+  begin
+  
+    Nb_Iterations := gb.Long'value(Text(Txt_Iterations));
+  
+    if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then
+  
+      Value(Slid_Iterations, Nb_Iterations);
+    
+    end if;
+  
+  end Txt_Iterations_Changed;
+
+  procedure But_Redraw_Click is
+  
+  begin
+  
+  
+        Line(Image2, 10, 10,  100,  100 ,  Color(122, 122, 122), 0,1);
+  
+  end But_Redraw_Click;
+
+  procedure Slid_Iterations_Scroll is
+  begin
+  
+  
+      Text(Txt_Iterations,gb.Long'Image(Value(Slid_Iterations)));
+  
+  
+  end Slid_Iterations_Scroll;
+
+  procedure Form_WindowResized(Flag : gb.INT; Width : gb.INT; Height : gb.INT) is
+  
+  begin
+  --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16
+     if gb.Width(Main_win.Form) < 542  then
+        gb.Width(Main_win.Form, 542);
+     end if;
+  
+     if gb.Height(Main_win.Form) < 369 then
+        gb.Height(Main_win.Form, 369);
+     end if;
+  
+  
+     --redimmensionnement de la zone de dessin
+     gb.Width(Pic_Draw, gb.width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 16 );
+     gb.Height(Pic_Draw, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 35 );
+     
+     --Deplacement de la frame de droite
+     gb.Left(Frm_Part_Droite, gb.Width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 9 ); 
+  
+     --Deplacement de la frame du bas
+     gb.Top(Frm_Part_Bas, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 30);
+  
+     --Deplacement du logo (en bas a gauche)
+  
+  
+  
+  
+  end Form_WindowResized;
+
+  procedure Initialize_Form is
+  begin
+    Caption(Frm_Ensembles, "Ensembles");
+    Move(Frm_Ensembles, 6, 10, 89, 134);
+    Parent(Frm_Ensembles, Frm_Part_Droite);
+
+    Rad_Mandel.Click := Rad_Mandel_Click'Access;
+    Caption(Rad_Mandel, "Mandelbrot");
+    Value(Rad_Mandel, gb.True);
+    Move(Rad_Mandel, 8, 18, 77, 13);
+    Parent(Rad_Mandel, Frm_Ensembles);
+
+    Rad_Julia.Click := Rad_Julia_Click'Access;
+    Caption(Rad_Julia, "Julia");
+    TabStop(Rad_Julia, gb.False);
+    Move(Rad_Julia, 8, 59, 61, 13);
+    Parent(Rad_Julia, Frm_Ensembles);
+
+    Enabled(Txt_Cx, gb.False);
+    Text(Txt_Cx, "0");
+    Move(Txt_Cx, 31, 86, 51, 21);
+    Parent(Txt_Cx, Frm_Ensembles);
+
+    Enabled(Txt_Cy, gb.False);
+    Text(Txt_Cy, "0");
+    Move(Txt_Cy, 31, 107, 51, 21);
+    Parent(Txt_Cy, Frm_Ensembles);
+
+    Caption(Ch_Antialiasing, "Antialiasing");
+    Move(Ch_Antialiasing, 12, 206, 74, 13);
+    Parent(Ch_Antialiasing, Frm_Part_Droite);
+
+    Txt_Iterations.Changed := Txt_Iterations_Changed'Access;
+    Text(Txt_Iterations, "0");
+    Move(Txt_Iterations, 3, 30, 84, 19);
+    Parent(Txt_Iterations, Frm_Iterations);
+
+    But_Redraw.Click := But_Redraw_Click'Access;
+    Caption(But_Redraw, "REDRAW");
+    Move(But_Redraw, 7, 244, 88, 20);
+    Parent(But_Redraw, Frm_Part_Droite);
+
+    Caption(Lab_Cx, "Cx");
+    SetFont(Lab_Cx, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cx, 14, 89, 14, 21);
+    Parent(Lab_Cx, Frm_Ensembles);
+
+    Caption(Lab_Cy, "Cy");
+    SetFont(Lab_Cy, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cy, 14, 109, 16, 21);
+    Parent(Lab_Cy, Frm_Ensembles);
+
+    Cursor(Pic_Draw, gb.CrossCursor);
+    Move(Pic_Draw, 3, 4, 422, 259);
+
+    Border(Img_Logo, gb.False);
+    Move(Img_Logo, 1, 287, 100, 48);
+    Parent(Img_Logo, Frm_Part_Droite);
+
+    Caption(Frm_Iterations, "Iterations");
+    Move(Frm_Iterations, 7, 145, 89, 51);
+    Parent(Frm_Iterations, Frm_Part_Droite);
+
+    Caption(Frm_Part_Droite, "");
+    Move(Frm_Part_Droite, 429, -2, 104, 341);
+
+    Caption(Frm_Part_Bas, "");
+    Move(Frm_Part_Bas, 3, 264, 423, 75);
+
+    Move(Image2, 197, 15, 109, 51);
+    Parent(Image2, Frm_Part_Bas);
+
+    Slid_Iterations.Scroll := Slid_Iterations_Scroll'Access;
+    Move(Slid_Iterations, 2, 14, 84, 14);
+
+    Form.WindowResized := Form_WindowResized'Access;
+    Caption(Form, "Power Fractal 0.1");
+    MaxButton(Form, gb.False);
+    Move(Form, 203, 205, 542, 369);
+    Visible(Form, gb.True);
+  end Initialize_Form;
+begin
+  Initialize_Form;
+end Main_Win;
+
+
+with gb;
+with Main_Win;
+
+procedure PowerFractal is begin
+  gb.StartApplication;
+end PowerFractal;
+
+
diff --git a/PoFGui/Main_Win.ada.1 b/PoFGui/Main_Win.ada.1
new file mode 100644 (file)
index 0000000..5910ab8
--- /dev/null
@@ -0,0 +1,229 @@
+with gb; use gb;
+with gb.OleInterfaces;
+
+with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System;
+with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C;
+use  Win32, Win32.WinError, Interfaces.C, System;
+
+with MSComctlLib_Slider; use MSComctlLib_Slider;
+package Main_Win is
+  Form            : aliased gb.MainWindow;
+  Frm_Ensembles   : aliased gb.Frame;
+  Rad_Mandel      : aliased gb.RadioButton;
+  Rad_Julia       : aliased gb.RadioButton;
+  Txt_Cx          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Txt_Cy          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Ch_Antialiasing : aliased gb.CheckBox;
+  Txt_Iterations  : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  But_Redraw      : aliased gb.Button;
+  Lab_Cx          : aliased gb.Label;
+  Lab_Cy          : aliased gb.Label;
+  Pic_Draw        : aliased gb.Picture;
+  Img_Logo        : aliased gb.Image;
+  Frm_Iterations  : aliased gb.Frame;
+  Frm_Part_Droite : aliased gb.Frame;
+  Frm_Part_Bas    : aliased gb.Frame;
+  Image2          : aliased gb.Image;
+  Slid_Iterations       : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access);
+  package Slid_Iterations_Interfaces is new gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations");
+  procedure Initialize_Form;
+end Main_Win;
+
+with gbOBJECTs; use gbOBJECTs;
+with Public;
+
+package body Main_Win is
+  procedure Rad_Mandel_Click is
+  begin
+  
+    if gb.Value(Rad_Mandel) = 1 then
+       gb.Value(Rad_Julia, 0);
+       gb.Enabled(Txt_Cx, 0);
+       gb.Enabled(Txt_Cy, 0);
+    else
+       gb.Value(Rad_Julia, 1);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    end if;
+  
+  end Rad_Mandel_Click;
+
+  procedure Rad_Julia_Click is
+  begin
+    if gb.Value(Rad_Julia) = 1 then
+       gb.Value(Rad_Mandel, 0);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    else
+       gb.Value(Rad_Mandel, 1);
+       gb.enabled(Txt_Cx, 0);
+       gb.enabled(Txt_Cy, 0);
+    end if;
+  end Rad_Julia_Click;
+
+  procedure Txt_Iterations_Changed is
+  
+   Nb_Iterations : gb.Long;
+   Nb_Iteration_Min : Constant := 10;
+   Nb_Iteration_Max : Constant := 1000;
+  
+  begin
+  
+    Nb_Iterations := gb.Long'value(Text(Txt_Iterations));
+  
+    if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then
+  
+      Value(Slid_Iterations, Nb_Iterations);
+    
+    end if;
+  
+  end Txt_Iterations_Changed;
+
+  procedure But_Redraw_Click is
+  
+  begin
+  
+  
+        Line(Image2, 10, 10,  100,  100 ,  Color(122, 122, 122), 0,1);
+  
+  end But_Redraw_Click;
+
+  procedure Slid_Iterations_Scroll is
+  begin
+  
+  
+      Text(Txt_Iterations,gb.Long'Image(Value(Slid_Iterations)));
+  
+  
+  end Slid_Iterations_Scroll;
+
+  procedure Form_WindowResized(Flag : gb.INT; Width : gb.INT; Height : gb.INT) is
+  
+  begin
+  --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16
+     if gb.Width(Main_win.Form) < 542  then
+        gb.Width(Main_win.Form, 542);
+     end if;
+  
+     if gb.Height(Main_win.Form) < 369 then
+        gb.Height(Main_win.Form, 369);
+     end if;
+  
+  
+     --redimmensionnement de la zone de dessin
+     gb.Width(Pic_Draw, gb.width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 16 );
+     gb.Height(Pic_Draw, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 35 );
+     
+     --Deplacement de la frame de droite
+     gb.Left(Frm_Part_Droite, gb.Width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 9 ); 
+  
+     --Deplacement de la frame du bas
+     gb.Top(Frm_Part_Bas, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 30);
+  
+     --Deplacement du logo (en bas a gauche)
+  
+  
+  
+  
+  end Form_WindowResized;
+
+  procedure Initialize_Form is
+  begin
+    Caption(Frm_Ensembles, "Ensembles");
+    Move(Frm_Ensembles, 6, 10, 89, 134);
+    Parent(Frm_Ensembles, Frm_Part_Droite);
+
+    Rad_Mandel.Click := Rad_Mandel_Click'Access;
+    Caption(Rad_Mandel, "Mandelbrot");
+    Value(Rad_Mandel, gb.True);
+    Move(Rad_Mandel, 8, 18, 77, 13);
+    Parent(Rad_Mandel, Frm_Ensembles);
+
+    Rad_Julia.Click := Rad_Julia_Click'Access;
+    Caption(Rad_Julia, "Julia");
+    TabStop(Rad_Julia, gb.False);
+    Move(Rad_Julia, 8, 59, 61, 13);
+    Parent(Rad_Julia, Frm_Ensembles);
+
+    Enabled(Txt_Cx, gb.False);
+    Text(Txt_Cx, "0");
+    Move(Txt_Cx, 31, 86, 51, 21);
+    Parent(Txt_Cx, Frm_Ensembles);
+
+    Enabled(Txt_Cy, gb.False);
+    Text(Txt_Cy, "0");
+    Move(Txt_Cy, 31, 107, 51, 21);
+    Parent(Txt_Cy, Frm_Ensembles);
+
+    Caption(Ch_Antialiasing, "Antialiasing");
+    Move(Ch_Antialiasing, 12, 206, 74, 13);
+    Parent(Ch_Antialiasing, Frm_Part_Droite);
+
+    Txt_Iterations.Changed := Txt_Iterations_Changed'Access;
+    Text(Txt_Iterations, "0");
+    Move(Txt_Iterations, 3, 30, 84, 19);
+    Parent(Txt_Iterations, Frm_Iterations);
+
+    But_Redraw.Click := But_Redraw_Click'Access;
+    Caption(But_Redraw, "REDRAW");
+    Move(But_Redraw, 7, 244, 88, 20);
+    Parent(But_Redraw, Frm_Part_Droite);
+
+    Caption(Lab_Cx, "Cx");
+    SetFont(Lab_Cx, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cx, 14, 89, 14, 21);
+    Parent(Lab_Cx, Frm_Ensembles);
+
+    Caption(Lab_Cy, "Cy");
+    SetFont(Lab_Cy, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cy, 14, 109, 16, 21);
+    Parent(Lab_Cy, Frm_Ensembles);
+
+    Cursor(Pic_Draw, gb.CrossCursor);
+    Move(Pic_Draw, 3, 4, 422, 259);
+
+    Border(Img_Logo, gb.False);
+    Move(Img_Logo, 1, 287, 100, 48);
+    Parent(Img_Logo, Frm_Part_Droite);
+
+    Caption(Frm_Iterations, "Iterations");
+    Move(Frm_Iterations, 7, 145, 89, 51);
+    Parent(Frm_Iterations, Frm_Part_Droite);
+
+    Caption(Frm_Part_Droite, "");
+    Move(Frm_Part_Droite, 429, -2, 104, 341);
+
+    Caption(Frm_Part_Bas, "");
+    Move(Frm_Part_Bas, 3, 264, 423, 75);
+
+    Move(Image2, 197, 15, 109, 51);
+    Parent(Image2, Frm_Part_Bas);
+
+    Slid_Iterations.Scroll := Slid_Iterations_Scroll'Access;
+    Move(Slid_Iterations, 2, 14, 84, 14);
+
+    Form.WindowResized := Form_WindowResized'Access;
+    Caption(Form, "Power Fractal 0.1");
+    MaxButton(Form, gb.False);
+    Move(Form, 203, 205, 542, 369);
+    Visible(Form, gb.True);
+  end Initialize_Form;
+begin
+  Initialize_Form;
+end Main_Win;
+
+
+with gb;
+with Main_Win;
+
+procedure PowerFractal is begin
+  gb.StartApplication;
+end PowerFractal;
+
+
diff --git a/PoFGui/Main_Win.ada.2 b/PoFGui/Main_Win.ada.2
new file mode 100644 (file)
index 0000000..5910ab8
--- /dev/null
@@ -0,0 +1,229 @@
+with gb; use gb;
+with gb.OleInterfaces;
+
+with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System;
+with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C;
+use  Win32, Win32.WinError, Interfaces.C, System;
+
+with MSComctlLib_Slider; use MSComctlLib_Slider;
+package Main_Win is
+  Form            : aliased gb.MainWindow;
+  Frm_Ensembles   : aliased gb.Frame;
+  Rad_Mandel      : aliased gb.RadioButton;
+  Rad_Julia       : aliased gb.RadioButton;
+  Txt_Cx          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Txt_Cy          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Ch_Antialiasing : aliased gb.CheckBox;
+  Txt_Iterations  : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  But_Redraw      : aliased gb.Button;
+  Lab_Cx          : aliased gb.Label;
+  Lab_Cy          : aliased gb.Label;
+  Pic_Draw        : aliased gb.Picture;
+  Img_Logo        : aliased gb.Image;
+  Frm_Iterations  : aliased gb.Frame;
+  Frm_Part_Droite : aliased gb.Frame;
+  Frm_Part_Bas    : aliased gb.Frame;
+  Image2          : aliased gb.Image;
+  Slid_Iterations       : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access);
+  package Slid_Iterations_Interfaces is new gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations");
+  procedure Initialize_Form;
+end Main_Win;
+
+with gbOBJECTs; use gbOBJECTs;
+with Public;
+
+package body Main_Win is
+  procedure Rad_Mandel_Click is
+  begin
+  
+    if gb.Value(Rad_Mandel) = 1 then
+       gb.Value(Rad_Julia, 0);
+       gb.Enabled(Txt_Cx, 0);
+       gb.Enabled(Txt_Cy, 0);
+    else
+       gb.Value(Rad_Julia, 1);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    end if;
+  
+  end Rad_Mandel_Click;
+
+  procedure Rad_Julia_Click is
+  begin
+    if gb.Value(Rad_Julia) = 1 then
+       gb.Value(Rad_Mandel, 0);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    else
+       gb.Value(Rad_Mandel, 1);
+       gb.enabled(Txt_Cx, 0);
+       gb.enabled(Txt_Cy, 0);
+    end if;
+  end Rad_Julia_Click;
+
+  procedure Txt_Iterations_Changed is
+  
+   Nb_Iterations : gb.Long;
+   Nb_Iteration_Min : Constant := 10;
+   Nb_Iteration_Max : Constant := 1000;
+  
+  begin
+  
+    Nb_Iterations := gb.Long'value(Text(Txt_Iterations));
+  
+    if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then
+  
+      Value(Slid_Iterations, Nb_Iterations);
+    
+    end if;
+  
+  end Txt_Iterations_Changed;
+
+  procedure But_Redraw_Click is
+  
+  begin
+  
+  
+        Line(Image2, 10, 10,  100,  100 ,  Color(122, 122, 122), 0,1);
+  
+  end But_Redraw_Click;
+
+  procedure Slid_Iterations_Scroll is
+  begin
+  
+  
+      Text(Txt_Iterations,gb.Long'Image(Value(Slid_Iterations)));
+  
+  
+  end Slid_Iterations_Scroll;
+
+  procedure Form_WindowResized(Flag : gb.INT; Width : gb.INT; Height : gb.INT) is
+  
+  begin
+  --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16
+     if gb.Width(Main_win.Form) < 542  then
+        gb.Width(Main_win.Form, 542);
+     end if;
+  
+     if gb.Height(Main_win.Form) < 369 then
+        gb.Height(Main_win.Form, 369);
+     end if;
+  
+  
+     --redimmensionnement de la zone de dessin
+     gb.Width(Pic_Draw, gb.width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 16 );
+     gb.Height(Pic_Draw, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 35 );
+     
+     --Deplacement de la frame de droite
+     gb.Left(Frm_Part_Droite, gb.Width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 9 ); 
+  
+     --Deplacement de la frame du bas
+     gb.Top(Frm_Part_Bas, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 30);
+  
+     --Deplacement du logo (en bas a gauche)
+  
+  
+  
+  
+  end Form_WindowResized;
+
+  procedure Initialize_Form is
+  begin
+    Caption(Frm_Ensembles, "Ensembles");
+    Move(Frm_Ensembles, 6, 10, 89, 134);
+    Parent(Frm_Ensembles, Frm_Part_Droite);
+
+    Rad_Mandel.Click := Rad_Mandel_Click'Access;
+    Caption(Rad_Mandel, "Mandelbrot");
+    Value(Rad_Mandel, gb.True);
+    Move(Rad_Mandel, 8, 18, 77, 13);
+    Parent(Rad_Mandel, Frm_Ensembles);
+
+    Rad_Julia.Click := Rad_Julia_Click'Access;
+    Caption(Rad_Julia, "Julia");
+    TabStop(Rad_Julia, gb.False);
+    Move(Rad_Julia, 8, 59, 61, 13);
+    Parent(Rad_Julia, Frm_Ensembles);
+
+    Enabled(Txt_Cx, gb.False);
+    Text(Txt_Cx, "0");
+    Move(Txt_Cx, 31, 86, 51, 21);
+    Parent(Txt_Cx, Frm_Ensembles);
+
+    Enabled(Txt_Cy, gb.False);
+    Text(Txt_Cy, "0");
+    Move(Txt_Cy, 31, 107, 51, 21);
+    Parent(Txt_Cy, Frm_Ensembles);
+
+    Caption(Ch_Antialiasing, "Antialiasing");
+    Move(Ch_Antialiasing, 12, 206, 74, 13);
+    Parent(Ch_Antialiasing, Frm_Part_Droite);
+
+    Txt_Iterations.Changed := Txt_Iterations_Changed'Access;
+    Text(Txt_Iterations, "0");
+    Move(Txt_Iterations, 3, 30, 84, 19);
+    Parent(Txt_Iterations, Frm_Iterations);
+
+    But_Redraw.Click := But_Redraw_Click'Access;
+    Caption(But_Redraw, "REDRAW");
+    Move(But_Redraw, 7, 244, 88, 20);
+    Parent(But_Redraw, Frm_Part_Droite);
+
+    Caption(Lab_Cx, "Cx");
+    SetFont(Lab_Cx, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cx, 14, 89, 14, 21);
+    Parent(Lab_Cx, Frm_Ensembles);
+
+    Caption(Lab_Cy, "Cy");
+    SetFont(Lab_Cy, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cy, 14, 109, 16, 21);
+    Parent(Lab_Cy, Frm_Ensembles);
+
+    Cursor(Pic_Draw, gb.CrossCursor);
+    Move(Pic_Draw, 3, 4, 422, 259);
+
+    Border(Img_Logo, gb.False);
+    Move(Img_Logo, 1, 287, 100, 48);
+    Parent(Img_Logo, Frm_Part_Droite);
+
+    Caption(Frm_Iterations, "Iterations");
+    Move(Frm_Iterations, 7, 145, 89, 51);
+    Parent(Frm_Iterations, Frm_Part_Droite);
+
+    Caption(Frm_Part_Droite, "");
+    Move(Frm_Part_Droite, 429, -2, 104, 341);
+
+    Caption(Frm_Part_Bas, "");
+    Move(Frm_Part_Bas, 3, 264, 423, 75);
+
+    Move(Image2, 197, 15, 109, 51);
+    Parent(Image2, Frm_Part_Bas);
+
+    Slid_Iterations.Scroll := Slid_Iterations_Scroll'Access;
+    Move(Slid_Iterations, 2, 14, 84, 14);
+
+    Form.WindowResized := Form_WindowResized'Access;
+    Caption(Form, "Power Fractal 0.1");
+    MaxButton(Form, gb.False);
+    Move(Form, 203, 205, 542, 369);
+    Visible(Form, gb.True);
+  end Initialize_Form;
+begin
+  Initialize_Form;
+end Main_Win;
+
+
+with gb;
+with Main_Win;
+
+procedure PowerFractal is begin
+  gb.StartApplication;
+end PowerFractal;
+
+
diff --git a/PoFGui/Main_Win.ada.3 b/PoFGui/Main_Win.ada.3
new file mode 100644 (file)
index 0000000..5910ab8
--- /dev/null
@@ -0,0 +1,229 @@
+with gb; use gb;
+with gb.OleInterfaces;
+
+with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System;
+with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C;
+use  Win32, Win32.WinError, Interfaces.C, System;
+
+with MSComctlLib_Slider; use MSComctlLib_Slider;
+package Main_Win is
+  Form            : aliased gb.MainWindow;
+  Frm_Ensembles   : aliased gb.Frame;
+  Rad_Mandel      : aliased gb.RadioButton;
+  Rad_Julia       : aliased gb.RadioButton;
+  Txt_Cx          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Txt_Cy          : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  Ch_Antialiasing : aliased gb.CheckBox;
+  Txt_Iterations  : aliased gb.TextBox(Alignment => Right, AutoScroll => Both, 
+                                       MultiLine => gb.False, Password => gb.False, 
+                                       ReadOnly => gb.False);
+  But_Redraw      : aliased gb.Button;
+  Lab_Cx          : aliased gb.Label;
+  Lab_Cy          : aliased gb.Label;
+  Pic_Draw        : aliased gb.Picture;
+  Img_Logo        : aliased gb.Image;
+  Frm_Iterations  : aliased gb.Frame;
+  Frm_Part_Droite : aliased gb.Frame;
+  Frm_Part_Bas    : aliased gb.Frame;
+  Image2          : aliased gb.Image;
+  Slid_Iterations       : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access);
+  package Slid_Iterations_Interfaces is new gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations");
+  procedure Initialize_Form;
+end Main_Win;
+
+with gbOBJECTs; use gbOBJECTs;
+with Public;
+
+package body Main_Win is
+  procedure Rad_Mandel_Click is
+  begin
+  
+    if gb.Value(Rad_Mandel) = 1 then
+       gb.Value(Rad_Julia, 0);
+       gb.Enabled(Txt_Cx, 0);
+       gb.Enabled(Txt_Cy, 0);
+    else
+       gb.Value(Rad_Julia, 1);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    end if;
+  
+  end Rad_Mandel_Click;
+
+  procedure Rad_Julia_Click is
+  begin
+    if gb.Value(Rad_Julia) = 1 then
+       gb.Value(Rad_Mandel, 0);
+       gb.enabled(Txt_Cx, 1);
+       gb.enabled(Txt_Cy, 1);
+    else
+       gb.Value(Rad_Mandel, 1);
+       gb.enabled(Txt_Cx, 0);
+       gb.enabled(Txt_Cy, 0);
+    end if;
+  end Rad_Julia_Click;
+
+  procedure Txt_Iterations_Changed is
+  
+   Nb_Iterations : gb.Long;
+   Nb_Iteration_Min : Constant := 10;
+   Nb_Iteration_Max : Constant := 1000;
+  
+  begin
+  
+    Nb_Iterations := gb.Long'value(Text(Txt_Iterations));
+  
+    if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then
+  
+      Value(Slid_Iterations, Nb_Iterations);
+    
+    end if;
+  
+  end Txt_Iterations_Changed;
+
+  procedure But_Redraw_Click is
+  
+  begin
+  
+  
+        Line(Image2, 10, 10,  100,  100 ,  Color(122, 122, 122), 0,1);
+  
+  end But_Redraw_Click;
+
+  procedure Slid_Iterations_Scroll is
+  begin
+  
+  
+      Text(Txt_Iterations,gb.Long'Image(Value(Slid_Iterations)));
+  
+  
+  end Slid_Iterations_Scroll;
+
+  procedure Form_WindowResized(Flag : gb.INT; Width : gb.INT; Height : gb.INT) is
+  
+  begin
+  --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16
+     if gb.Width(Main_win.Form) < 542  then
+        gb.Width(Main_win.Form, 542);
+     end if;
+  
+     if gb.Height(Main_win.Form) < 369 then
+        gb.Height(Main_win.Form, 369);
+     end if;
+  
+  
+     --redimmensionnement de la zone de dessin
+     gb.Width(Pic_Draw, gb.width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 16 );
+     gb.Height(Pic_Draw, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 35 );
+     
+     --Deplacement de la frame de droite
+     gb.Left(Frm_Part_Droite, gb.Width(Main_Win.Form) - gb.Width(Frm_Part_Droite) - 9 ); 
+  
+     --Deplacement de la frame du bas
+     gb.Top(Frm_Part_Bas, gb.Height(Main_Win.Form) - gb.Height(Frm_Part_Bas) - 30);
+  
+     --Deplacement du logo (en bas a gauche)
+  
+  
+  
+  
+  end Form_WindowResized;
+
+  procedure Initialize_Form is
+  begin
+    Caption(Frm_Ensembles, "Ensembles");
+    Move(Frm_Ensembles, 6, 10, 89, 134);
+    Parent(Frm_Ensembles, Frm_Part_Droite);
+
+    Rad_Mandel.Click := Rad_Mandel_Click'Access;
+    Caption(Rad_Mandel, "Mandelbrot");
+    Value(Rad_Mandel, gb.True);
+    Move(Rad_Mandel, 8, 18, 77, 13);
+    Parent(Rad_Mandel, Frm_Ensembles);
+
+    Rad_Julia.Click := Rad_Julia_Click'Access;
+    Caption(Rad_Julia, "Julia");
+    TabStop(Rad_Julia, gb.False);
+    Move(Rad_Julia, 8, 59, 61, 13);
+    Parent(Rad_Julia, Frm_Ensembles);
+
+    Enabled(Txt_Cx, gb.False);
+    Text(Txt_Cx, "0");
+    Move(Txt_Cx, 31, 86, 51, 21);
+    Parent(Txt_Cx, Frm_Ensembles);
+
+    Enabled(Txt_Cy, gb.False);
+    Text(Txt_Cy, "0");
+    Move(Txt_Cy, 31, 107, 51, 21);
+    Parent(Txt_Cy, Frm_Ensembles);
+
+    Caption(Ch_Antialiasing, "Antialiasing");
+    Move(Ch_Antialiasing, 12, 206, 74, 13);
+    Parent(Ch_Antialiasing, Frm_Part_Droite);
+
+    Txt_Iterations.Changed := Txt_Iterations_Changed'Access;
+    Text(Txt_Iterations, "0");
+    Move(Txt_Iterations, 3, 30, 84, 19);
+    Parent(Txt_Iterations, Frm_Iterations);
+
+    But_Redraw.Click := But_Redraw_Click'Access;
+    Caption(But_Redraw, "REDRAW");
+    Move(But_Redraw, 7, 244, 88, 20);
+    Parent(But_Redraw, Frm_Part_Droite);
+
+    Caption(Lab_Cx, "Cx");
+    SetFont(Lab_Cx, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cx, 14, 89, 14, 21);
+    Parent(Lab_Cx, Frm_Ensembles);
+
+    Caption(Lab_Cy, "Cy");
+    SetFont(Lab_Cy, "MS Sans Serif", 8, gb.False, gb.False, gb.False);
+    Move(Lab_Cy, 14, 109, 16, 21);
+    Parent(Lab_Cy, Frm_Ensembles);
+
+    Cursor(Pic_Draw, gb.CrossCursor);
+    Move(Pic_Draw, 3, 4, 422, 259);
+
+    Border(Img_Logo, gb.False);
+    Move(Img_Logo, 1, 287, 100, 48);
+    Parent(Img_Logo, Frm_Part_Droite);
+
+    Caption(Frm_Iterations, "Iterations");
+    Move(Frm_Iterations, 7, 145, 89, 51);
+    Parent(Frm_Iterations, Frm_Part_Droite);
+
+    Caption(Frm_Part_Droite, "");
+    Move(Frm_Part_Droite, 429, -2, 104, 341);
+
+    Caption(Frm_Part_Bas, "");
+    Move(Frm_Part_Bas, 3, 264, 423, 75);
+
+    Move(Image2, 197, 15, 109, 51);
+    Parent(Image2, Frm_Part_Bas);
+
+    Slid_Iterations.Scroll := Slid_Iterations_Scroll'Access;
+    Move(Slid_Iterations, 2, 14, 84, 14);
+
+    Form.WindowResized := Form_WindowResized'Access;
+    Caption(Form, "Power Fractal 0.1");
+    MaxButton(Form, gb.False);
+    Move(Form, 203, 205, 542, 369);
+    Visible(Form, gb.True);
+  end Initialize_Form;
+begin
+  Initialize_Form;
+end Main_Win;
+
+
+with gb;
+with Main_Win;
+
+procedure PowerFractal is begin
+  gb.StartApplication;
+end PowerFractal;
+
+
diff --git a/PoFGui/Main_Win.rc b/PoFGui/Main_Win.rc
new file mode 100644 (file)
index 0000000..12b5a56
--- /dev/null
@@ -0,0 +1,3 @@
+Img_Logo_Bitmap     BITMAP    "f:\\eivd-data\\projet_fractal\\logo\\dans prog 01.bmp"
+Main_Win_Icon     ICON    "f:\\eivd-data\\projet_fractal\\pofgui\\icon 01.ico"
+
diff --git a/PoFGui/NOTES.doc b/PoFGui/NOTES.doc
new file mode 100644 (file)
index 0000000..87a01a3
Binary files /dev/null and b/PoFGui/NOTES.doc differ
diff --git a/PoFGui/PROJECT1.RES b/PoFGui/PROJECT1.RES
new file mode 100644 (file)
index 0000000..b7840f6
Binary files /dev/null and b/PoFGui/PROJECT1.RES differ
diff --git a/PoFGui/Pkg_Outils_Fractals.adb b/PoFGui/Pkg_Outils_Fractals.adb
new file mode 100644 (file)
index 0000000..3e3e164
--- /dev/null
@@ -0,0 +1,290 @@
+
+
+package body Pkg_Outils_Fractals is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   ------------------------------------------------------------------------------------------------
+   procedure Creer_Degrade (Points_Definis_Param : in T_Tab_Couleur; Degrade : out T_Tab_Couleur; Nb_Iteration : in Natural) is
+
+      ---------------------------------------------------------------------------------------------
+      -- Nom      : Limite                                                                       --
+      -- But      : Empeche le depassement des limites fixées                                    --
+      ---------------------------------------------------------------------------------------------
+      function Limite ( Nombre : in Integer) return Natural is
+         Tmp : Integer := Nombre;   -- Nombre temporaire
+         Limite_Min : constant Integer := 0;  -- Limite inferieure
+         Limite_Max : constant Integer := 255;-- Limite superieure
+      begin -- Limite
+         if Tmp < Limite_Min then 
+               Tmp := Limite_Min;
+            elsif Tmp > Limite_Max then
+               Tmp := Limite_Max;
+         end if;
+         return Natural(Tmp);
+      end Limite;                  
+
+
+      -- Changement des borne du tableau
+      Points_Definis : T_Tab_Couleur (1 .. Points_Definis_Param'Length) := Points_Definis_Param;
+
+      Pas_R   : Float := 0.0; -- Pour le pas de la couleur rouge
+      Pas_G   : Float := 0.0; -- Pour le pas de la couleur verte
+      Pas_B   : Float := 0.0; -- Pour le pas de la couleur bleue
+      Couleur_Reference : Integer := Points_Definis'First;
+      Couleur_Courante  : Integer := Degrade'First;
+      Nb_Coul_Partie    : Natural :=  Nb_Iteration / (Points_Definis'Length - 1); 
+
+   begin -- Creer_Degrader
+
+      -- Parcours de tout le degrade
+     while Couleur_Courante <= Degrade'Last loop
+
+         -- Si c'est la derniere partie du degrade
+         if Couleur_Reference >= Points_Definis'Last then -- Degrade'Last then
+
+            Couleur_Courante := Couleur_Courante + 1;
+
+            -- Attribue la couleur jusqu'a la fin du degrade
+            while Couleur_Courante <= Degrade'Last - 1 loop
+
+               -- Attribution de la couleur au point courant en fonction du pas
+               Degrade(Couleur_Courante).R := Limite(Points_Definis(Couleur_Reference).R + Integer(Pas_R * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+               Degrade(Couleur_Courante).G := Limite(Points_Definis(Couleur_Reference).G + Integer(Pas_G * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+               Degrade(Couleur_Courante).B := Limite(Points_Definis(Couleur_Reference).B + Integer(Pas_B * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+               Couleur_Courante := Couleur_Courante + 1;
+            end loop;
+   
+         else           
+            -- Definition du pas pour chaque couleur en fonction du point definit precedant et le suivant
+            Pas_R := Float((Points_Definis(Couleur_Reference + 1).R - Points_Definis(Couleur_Reference).R)) / Float(Nb_Coul_Partie);
+            Pas_G := Float((Points_Definis(Couleur_Reference + 1).G - Points_Definis(Couleur_Reference).G)) / Float(Nb_Coul_Partie);
+            Pas_B := Float((Points_Definis(Couleur_Reference + 1).B - Points_Definis(Couleur_Reference).B)) / Float(Nb_Coul_Partie);
+
+            -- Parcours des points de couleurs jusqu'au prochain point definit
+            while Couleur_Courante /= Nb_Coul_Partie * Couleur_Reference loop --Couleur_Courante <= Degrade'Last - 1 loop           
+
+               -- Attribution de la couleur au point courant en fonction du pas
+               Degrade(Couleur_Courante).R := Limite(Points_Definis(Couleur_Reference).R + Integer(Pas_R * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+               Degrade(Couleur_Courante).G := Limite(Points_Definis(Couleur_Reference).G + Integer(Pas_G * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+               Degrade(Couleur_Courante).B := Limite(Points_Definis(Couleur_Reference).B + Integer(Pas_B * Float(Couleur_Courante - (Couleur_Reference - Points_Definis'First) * Nb_Coul_Partie + 1)));
+
+               Couleur_Courante := Couleur_Courante + 1;
+
+            end loop;  
+         end if;
+         Couleur_Reference := Couleur_Reference + 1;
+      end loop;
+
+      Degrade(Degrade'Last).R := 0;
+      Degrade(Degrade'Last).G := 0;
+      Degrade(Degrade'Last).B := 0;
+   end Creer_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Points_Definis : in T_Tab_Couleur; Longueur : in Integer) is
+      Degrade : T_Tab_Couleur(0 .. Longueur-1);
+   begin
+      Creer_Degrade(Points_Definis, Degrade, Longueur);
+      for X in Degrade'range loop
+         for Y in 0 .. 5 loop
+            Color_Back.R := Degrade(X).R;
+            Color_Back.G := Degrade(X).G;
+            Color_Back.B := Degrade(X).B;
+            Set_Color_Pen(Color_Back);
+   
+            Move_To(X,Y);
+            Put_Pixel;
+         end loop;
+
+      end loop;
+
+   end Affiche_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Conversion_Couleur (Matrice : in T_Matrice_Iteration; Degrade : in T_Tab_Couleur; Matrice_Couleur : out T_Matrice_Couleur) is
+   begin -- Conversion_Couleur
+   for X in Matrice'range(1) loop
+      for Y in  Matrice'range(2) loop
+--      Put(X);
+--      Put(", ");
+--      Put(Y);
+         Matrice_Couleur(X, Y) := Degrade(Matrice(X, Y));
+      end loop;
+   end loop;
+   end Conversion_Couleur;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Calcul_Antialiasing                                                             --
+   -- But      : Contracter une matrice en une autre 2 fois plus petite                          --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Iteration) return  T_Matrice_Iteration is
+
+      X, Y : Natural;
+      Matrice_Retour : T_Matrice_Iteration ( 0..Matrice_Antialiasing'Last(1) / 2, 0..Matrice_Antialiasing'Last(2) / 2);
+
+   begin
+         X:=0;
+         while X <= Matrice_Antialiasing'Last(1) - 1 loop
+            Y:=0;
+            while Y <= Matrice_Antialiasing'Last(2) - 1 loop
+   
+               Matrice_Retour(X/2, Y/2) := (Matrice_Antialiasing(X,Y)+Matrice_Antialiasing(X +1,Y)
+                                             +Matrice_Antialiasing(X,Y+1)+Matrice_Antialiasing(X+1,Y+1))/4;
+            Y:=Y+2;
+            end loop ;
+            X:=X+2;
+         end loop ;
+      return Matrice_Retour;
+
+   end;
+  
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Mandel_Gen                                                                      --
+   -- But      : Genere une matrice d'iteration selon Mandelbrot                                 --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural ; Zoom, C_Diverge_Limite : Long_Float;
+                        NB_Iteration_Max : Positive;  Centre : T_Centre;
+                        Antialiasing : Boolean := False) return T_Matrice_Iteration is
+   
+      A,B,Ao,Bo,Temp : Long_Float;  
+      Nb_Iteration : Natural;
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+      Matrice_Antialiasing : T_Matrice_Iteration (0..2*Largeur_Zone+1, 0..2*Hauteur_Zone+1);
+
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      Largeur_Zone_Tmp : Natural := Largeur_Zone;
+      Hauteur_Zone_Tmp : Natural := Hauteur_Zone;
+
+
+   begin -- Mandel_Gen
+
+      if Antialiasing then
+         Largeur_Zone_Tmp := 2 * Largeur_Zone_Tmp + 1;
+         Hauteur_Zone_Tmp := 2 * Hauteur_Zone_Tmp + 1;
+
+         Largeur_Zone_Tmp_Float := 2.0 * Largeur_Zone_Tmp_Float + 1.0;
+         Hauteur_Zone_Tmp_Float := 2.0 * Hauteur_Zone_Tmp_Float + 1.0;
+
+      end if;
+   
+      for X in 0..Largeur_Zone_Tmp loop
+         for Y in 0..Hauteur_Zone_Tmp loop  
+          
+            Ao :=  ( (Long_Float(X) / (Largeur_Zone_Tmp_Float)) - 0.5 )   / Zoom   +   Centre.X ; -- de 0 a 1
+            Bo :=  (2.0 * Long_Float(Y) - Hauteur_Zone_Tmp_Float) / (2.0 * Largeur_Zone_Tmp_Float) / Zoom -  Centre.Y ; -- de 0 a 1                  
+            --Bo :=  ((Long_Float(Y) / Largeur_Zone) - (Hauteur_Zone / Largeur_Zone / 2.0  )) / Zoom +  Centre.Y ; -- de 0 a 1
+   
+            Nb_Iteration := 0;         
+            A:=Ao;
+            B:=Bo;
+   
+            loop
+               Temp := A**2 - B**2 + Ao;
+               B := 2.0 * A * B + Bo;
+               A := Temp;            
+               Nb_Iteration := Nb_Iteration + 1;            
+               exit when Nb_Iteration >= NB_Iteration_Max or else (A**2 + B**2) > C_Diverge_Limite ;      
+            end loop;
+   
+            --put(float(Nb_Iteration),2,2);
+            if Antialiasing then
+               Matrice_Antialiasing(X,Y) := Nb_Iteration;
+            else
+               Matrice_Retour(X,Y) := Nb_Iteration;
+            end if;
+   
+         end loop;
+      end loop;
+
+      if Antialiasing then
+         Matrice_Retour := Calcul_Antialiasing(Matrice_Antialiasing);
+      end if;
+
+      return Matrice_Retour;
+
+   end Mandel_Gen;  
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Julia_Gen                                                                      --
+   -- But      : Genere une matrice d'iteration selon Mandelbrot                                 --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural;  Zoom, C_Diverge_Limite : Long_Float;
+                        NB_Iteration_Max : Positive;  Centre : T_Centre; Cx, Cy : Long_Float; Antialiasing : Boolean) 
+                        return T_Matrice_Iteration is
+   
+      A,B,Ao,Bo,Temp : Long_Float;  
+      Nb_Iteration : Natural;
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+      Matrice_Antialiasing : T_Matrice_Iteration (0..2*Largeur_Zone+1, 0..2*Hauteur_Zone+1);
+
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      Largeur_Zone_Tmp : Natural := Largeur_Zone;
+      Hauteur_Zone_Tmp : Natural := Hauteur_Zone;
+
+   begin -- Julia_Gen
+
+      if Antialiasing then
+         Largeur_Zone_Tmp := 2 * Largeur_Zone_Tmp + 1;
+         Hauteur_Zone_Tmp := 2 * Hauteur_Zone_Tmp + 1;
+
+         Largeur_Zone_Tmp_Float := 2.0 * Largeur_Zone_Tmp_Float + 1.0;
+         Hauteur_Zone_Tmp_Float := 2.0 * Hauteur_Zone_Tmp_Float + 1.0;
+
+      end if;
+
+      for X in 0..Largeur_Zone_Tmp loop
+         for Y in 0..Hauteur_Zone_Tmp loop
+            A :=  ( (Long_Float(X) / (Largeur_Zone_Tmp_Float)) - 0.5 )   / Zoom   +   Centre.X ; -- de 0 a 1
+            B :=  (2.0 * Long_Float(Y) - Hauteur_Zone_Tmp_Float) / (2.0 * Largeur_Zone_Tmp_Float) / Zoom -  Centre.Y ; -- de 0 a 1
+            --Bo :=  ((Long_Float(Y) / Largeur_Zone) - (Hauteur_Zone / Largeur_Zone / 2.0  )) / Zoom +  Centre.Y ; -- de 0 a 1
+   
+            Nb_Iteration := 0;        
+   
+            loop
+               Temp := A**2 - B**2 + Cx;
+               B := 2.0 * A * B + Cy;
+               A := Temp;
+               
+               Nb_Iteration := Nb_Iteration + 1;
+               
+               exit when Nb_Iteration >= NB_Iteration_Max or else (A**2 + B**2) > C_Diverge_Limite ;
+         
+            end loop;
+   
+            --put(float(Nb_Iteration),2,2);
+   
+            if Antialiasing then
+               Matrice_Antialiasing(X,Y) := Nb_Iteration;
+            else
+               Matrice_Retour(X,Y) := Nb_Iteration;
+            end if;
+   
+         end loop;
+      end loop;
+
+      if Antialiasing then
+         Matrice_Retour := Calcul_Antialiasing(Matrice_Antialiasing);
+      end if;
+
+      return Matrice_Retour;
+   
+   end Julia_Gen;  
+   
+
+end Pkg_Outils_Fractals;
diff --git a/PoFGui/Pkg_Outils_Fractals.ads b/PoFGui/Pkg_Outils_Fractals.ads
new file mode 100644 (file)
index 0000000..566bdde
--- /dev/null
@@ -0,0 +1,86 @@
+
+
+package Pkg_Outils_Fractals is
+
+   --------------------------TYPES--------------------------   
+   type T_Couleur is record
+      R : Natural;
+      G : Natural;
+      B : Natural;
+   end record;
+
+   type T_Tab_Couleur is array (Natural range <>) of T_Couleur;
+
+   type T_Matrice_Couleur is array  (0..Largeur_Ecran, 0..Hauteur_Ecran) of T_Couleur;
+   type T_Matrice_Iteration is array (Integer range <>, Integer range <>) of Natural;
+
+   type T_Centre is record
+      X : Long_Float := 0.6; --(0.6)  (1.63)
+      Y : Long_Float := 0.0; --(0.0)  (0.001)
+   end record;
+
+   -------------------------VARIABLES------------------------
+   NB_Iteration_Max : Positive := 256;   --Nombre d'iteration
+   
+   C_Diverge_Limite : Long_Float := 4.0; --doit être compris entre 0 et 4 (4 etant la valeur par défaut(normal))
+
+   Zoom : Long_Float := 1.0/4.0;         --Facteur de zoom sur la fractal(1/4) (1200.0)
+
+   Centre : T_Centre := (-0.6, 0.0);
+   
+   Cx : Long_Float := -0.577;
+   Cy : Long_Float := 0.468;
+   
+
+   Nb_Iteration : Natural;
+
+   Points : T_Tab_Couleur := ((255,0,0), (0,255,0), (0,0,255), (255,255,0) );
+
+   Antialiasing : Boolean := False;
+
+--   Degrade : T_Tab_Couleur(1 .. Nb_Iteration_Max);
+   
+   Matrice_Ecran : T_Matrice_Iteration (0..Largeur_Ecran, 0..Hauteur_Ecran);
+   Matrice_Couleur : T_Matrice_Couleur;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   ------------------------------------------------------------------------------------------------
+   procedure Creer_Degrade (Points_Definis_Param : in T_Tab_Couleur; Degrade : out T_Tab_Couleur; Nb_Iteration : in Natural);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Points_Definis : in T_Tab_Couleur; Longueur : in Integer);
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Conversion_Couleur (Matrice : in T_Matrice_Iteration; Degrade : in T_Tab_Couleur; Matrice_Couleur : out T_Matrice_Couleur);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Calcul_Antialiasing                                                             --
+   -- But      : Contracter une matrice en une autre 2 fois plus petite                          --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Iteration) return  T_Matrice_Iteration;
+  
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Mandel_Gen                                                                      --
+   -- But      : Genere une matrice d'iteration selon Mandelbrot                                 --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural ; Zoom, C_Diverge_Limite : Long_Float;
+                        NB_Iteration_Max : Positive;  Centre : T_Centre;
+                        Antialiasing : Boolean := False) return T_Matrice_Iteration;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Julia_Gen                                                                      --
+   -- But      : Genere une matrice d'iteration selon Mandelbrot                                 --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural;  Zoom, C_Diverge_Limite : Long_Float;
+                        NB_Iteration_Max : Positive;  Centre : T_Centre; Cx, Cy : Long_Float; Antialiasing : Boolean) 
+                        return T_Matrice_Iteration;
+   
+
+end Pkg_Outils_Fractals;
diff --git a/PoFGui/PowerFractal.rsp b/PoFGui/PowerFractal.rsp
new file mode 100644 (file)
index 0000000..a57f284
--- /dev/null
@@ -0,0 +1,90 @@
+/NOLOGO
+/VERSION:3.273
+/STACK:65536,8192
+/SUBSYSTEM:WINDOWS
+/OPT:REF
+/PDB:NONE
+/DEBUG
+/DEBUGTYPE:cv
+/OUT:powerfractal.exe
+obj\elt\powerfractal.obj
+powerfractal.compopts.obj
+obj\ada\mscomctllib_slider.obj
+obj\ada\main_win.obj
+obj\ada\public.obj
+project1.res
+c:\progra~1\aonix\object~1\lib\crtpexe.obj
+c:\progra~1\aonix\object~1\lib\adamain.lib
+c:\progra~1\aonix\object~1\lib\kernel32.lib
+c:\progra~1\aonix\object~1\lib\ntstub.lib
+c:\progra~1\aonix\object~1\guibuild\lib\gui.lib
+c:\progra~1\aonix\object~1\win32ada\binding\lib\win32.lib
+c:\progra~1\aonix\object~1\apilib\advapi32.lib
+c:\progra~1\aonix\object~1\apilib\comctl32.lib
+c:\progra~1\aonix\object~1\apilib\comdlg32.lib
+c:\progra~1\aonix\object~1\apilib\dlcapi.lib
+c:\progra~1\aonix\object~1\apilib\gdi32.lib
+c:\progra~1\aonix\object~1\apilib\glu32.lib
+c:\progra~1\aonix\object~1\apilib\glaux.lib
+c:\progra~1\aonix\object~1\apilib\lz32.lib
+c:\progra~1\aonix\object~1\apilib\mgmtapi.lib
+c:\progra~1\aonix\object~1\apilib\msacm32.lib
+c:\progra~1\aonix\object~1\apilib\netapi32.lib
+c:\progra~1\aonix\object~1\apilib\ole32.lib
+c:\progra~1\aonix\object~1\apilib\oleaut32.lib
+c:\progra~1\aonix\object~1\apilib\opengl32.lib
+c:\progra~1\aonix\object~1\apilib\rpcns4.lib
+c:\progra~1\aonix\object~1\apilib\rpcrt4.lib
+c:\progra~1\aonix\object~1\apilib\shell32.lib
+c:\progra~1\aonix\object~1\apilib\user32.lib
+c:\progra~1\aonix\object~1\apilib\vfw32.lib
+c:\progra~1\aonix\object~1\apilib\winmm.lib
+c:\progra~1\aonix\object~1\apilib\wsock32.lib
+c:\progra~1\aonix\object~1\apilib\winspool.lib
+c:\progra~1\aonix\object~1\apilib\advapi32.lib
+c:\progra~1\aonix\object~1\apilib\cap.lib
+c:\progra~1\aonix\object~1\apilib\comctl32.lib
+c:\progra~1\aonix\object~1\apilib\comdlg32.lib
+c:\progra~1\aonix\object~1\apilib\ctl3d32.lib
+c:\progra~1\aonix\object~1\apilib\dlcapi.lib
+c:\progra~1\aonix\object~1\apilib\dsound.lib
+c:\progra~1\aonix\object~1\apilib\gdi32.lib
+c:\progra~1\aonix\object~1\apilib\glaux.lib
+c:\progra~1\aonix\object~1\apilib\glu32.lib
+c:\progra~1\aonix\object~1\apilib\largeint.lib
+c:\progra~1\aonix\object~1\apilib\lz32.lib
+c:\progra~1\aonix\object~1\apilib\mgmtapi.lib
+c:\progra~1\aonix\object~1\apilib\mpr.lib
+c:\progra~1\aonix\object~1\apilib\msacm32.lib
+c:\progra~1\aonix\object~1\apilib\nddeapi.lib
+c:\progra~1\aonix\object~1\apilib\netapi32.lib
+c:\progra~1\aonix\object~1\apilib\odbc32.lib
+c:\progra~1\aonix\object~1\apilib\oldnames.lib
+c:\progra~1\aonix\object~1\apilib\ole32.lib
+c:\progra~1\aonix\object~1\apilib\oleaut32.lib
+c:\progra~1\aonix\object~1\apilib\opengl32.lib
+c:\progra~1\aonix\object~1\apilib\penter.lib
+c:\progra~1\aonix\object~1\apilib\rasapi32.lib
+c:\progra~1\aonix\object~1\apilib\rpcdce4.lib
+c:\progra~1\aonix\object~1\apilib\rpcndr.lib
+c:\progra~1\aonix\object~1\apilib\rpcns4.lib
+c:\progra~1\aonix\object~1\apilib\rpcrt4.lib
+c:\progra~1\aonix\object~1\apilib\scrnsave.lib
+c:\progra~1\aonix\object~1\apilib\shell32.lib
+c:\progra~1\aonix\object~1\apilib\snmpapi.lib
+c:\progra~1\aonix\object~1\apilib\tapi32.lib
+c:\progra~1\aonix\object~1\apilib\user32.lib
+c:\progra~1\aonix\object~1\apilib\uuid.lib
+c:\progra~1\aonix\object~1\apilib\vdmdbg.lib
+c:\progra~1\aonix\object~1\apilib\version.lib
+c:\progra~1\aonix\object~1\apilib\vfw32.lib
+c:\progra~1\aonix\object~1\apilib\win32spl.lib
+c:\progra~1\aonix\object~1\apilib\wininet.lib
+c:\progra~1\aonix\object~1\apilib\winmm.lib
+c:\progra~1\aonix\object~1\apilib\winspool.lib
+c:\progra~1\aonix\object~1\apilib\winstrm.lib
+c:\progra~1\aonix\object~1\apilib\wsock32.lib
+c:\progra~1\aonix\object~1\apilib\wst.lib
+c:\progra~1\aonix\object~1\apilib\libcmtd.lib
+rts.lib
+/LIBPATH:c:\progra~1\aonix\object~1\lib
diff --git a/PoFGui/Project1.gbp b/PoFGui/Project1.gbp
new file mode 100644 (file)
index 0000000..7a73224
--- /dev/null
@@ -0,0 +1,19 @@
+VersionNumber: 712
+Window: F:\Eivd-Data\Projet_Fractal\PoFGui\Main_Win.ada
+Main Unit Name: PowerFractal
+Run app after build: 0
+Display warnings: 1
+Always save before build: 1
+Start from DOS: 0
+Include browser info: 1
+Include Ada debug info: 1
+Include Codeview info: 1
+Public Package: F:\Eivd-Data\Projet_Fractal\PoFGui\Public.ada
+Normal Links: ^c:\PROGRA~1\aonix\OBJECT~1\lib^c:\PROGRA~1\aonix\OBJECT~1\GUIBuild\lib^c:\PROGRA~1\aonix\OBJECT~1\Win32ada\Binding\lib^
+Source Links: 
+Linker Links: ^c:\PROGRA~1\aonix\OBJECT~1\APILib^
+Import Links: 
+Elaborate Links: 
+With Text:
+with gbOBJECTs; use gbOBJECTs;
+
diff --git a/PoFGui/Project1.rc b/PoFGui/Project1.rc
new file mode 100644 (file)
index 0000000..f43eadf
--- /dev/null
@@ -0,0 +1,16 @@
+#define VK_F1     0x70
+#define VK_F2     0x71
+#define VK_F3     0x72
+#define VK_F4     0x73
+#define VK_F5     0x74
+#define VK_F6     0x75
+#define VK_F7     0x76
+#define VK_F8     0x77
+#define VK_F9     0x78
+#define VK_F10    0x79
+#define VK_F11    0x7A
+#define VK_F12    0x7B
+
+#include "F:\Eivd-Data\Projet_Fractal\PoFGui\Main_Win.rc"
+OleStorage RCDATA "gbStgDoc.gbs"
+
diff --git a/PoFGui/Public.ada b/PoFGui/Public.ada
new file mode 100644 (file)
index 0000000..1440e07
--- /dev/null
@@ -0,0 +1,9 @@
+with gb; use gb;
+
+package Public is
+Salut : gb.int;
+end Public;
+
+
+
+
diff --git a/PoFGui/TheEnd.dat b/PoFGui/TheEnd.dat
new file mode 100644 (file)
index 0000000..e6dca31
--- /dev/null
@@ -0,0 +1 @@
+DONE 
diff --git a/PoFGui/UNIT.MAP b/PoFGui/UNIT.MAP
new file mode 100644 (file)
index 0000000..cd345c0
--- /dev/null
@@ -0,0 +1,21 @@
+SOURCE: ..\..\..\eivd-d~1\projet~1\pofgui\public.ada
+  SRCTIME: 993423623    Sun Jun 24 16:00:23 2001
+  UNIT: Public
+    UKIND: 7    PKG_DECL
+ENDSOURCE
+SOURCE: mscomctllib_slider.ada
+  SRCTIME: 993483252    Mon Jun 25 08:34:12 2001
+  UNIT: MSComctlLib_Slider
+    UKIND: 7    PKG_DECL
+  UNIT: MSComctlLib_Slider
+    UKIND: 8    PKG_BODY
+ENDSOURCE
+SOURCE: ..\..\..\eivd-d~1\projet~1\pofgui\main_win.ada
+  SRCTIME: 993483860    Mon Jun 25 08:44:20 2001
+  UNIT: Main_Win
+    UKIND: 7    PKG_DECL
+  UNIT: Main_Win
+    UKIND: 8    PKG_BODY
+  UNIT: PowerFractal
+    UKIND: 2    SUBP_BODY
+ENDSOURCE
diff --git a/PoFGui/gbBuild.bat b/PoFGui/gbBuild.bat
new file mode 100644 (file)
index 0000000..60de391
--- /dev/null
@@ -0,0 +1,19 @@
+set path=c:\PROGRA~1\aonix\OBJECT~1\bin;%path%
+del PowerFractal.exe
+del ada.lib
+del unit.map
+del gbList*.lst
+adaopts -lp c:\PROGRA~1\aonix\OBJECT~1\APILib -i1
+adaopts -p c:\PROGRA~1\aonix\OBJECT~1\Win32ada\Binding\lib -i1
+adaopts -p c:\PROGRA~1\aonix\OBJECT~1\GUIBuild\lib -i1
+adaopts -p c:\PROGRA~1\aonix\OBJECT~1\lib -i1
+adaopts -p -d1
+adareg MSComctlLib_Slider.ada
+adareg F:\EIVD-D~1\PROJET~1\PoFGui\Public.ada
+adareg F:\EIVD-D~1\PROJET~1\PoFGui\Main_Win.ada
+adacomp -lr -ga -gc -lf gbList1.lst MSComctlLib_Slider.ada
+adacomp -lr -ga -gc -lf gbList2.lst F:\EIVD-D~1\PROJET~1\PoFGui\Public.ada
+adacomp -lr -ga -gc -lf gbList3.lst F:\EIVD-D~1\PROJET~1\PoFGui\Main_Win.ada
+adabuild -G -g -cl -ll Project1.res -w PowerFractal>gbList4.lst 
+echo DONE > TheEnd.dat
+
diff --git a/PoFGui/gbList4.lst b/PoFGui/gbList4.lst
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/PoFGui/gbStgDoc.gbs b/PoFGui/gbStgDoc.gbs
new file mode 100644 (file)
index 0000000..e86a3e8
Binary files /dev/null and b/PoFGui/gbStgDoc.gbs differ
diff --git a/PoFGui/gnat.ago b/PoFGui/gnat.ago
new file mode 100644 (file)
index 0000000..a60c0d6
--- /dev/null
@@ -0,0 +1,5 @@
+-IC:\Progra~\Aonix\ObjectAda\guibuild\lib
+
+
+
+WINDOWS_TARGET
diff --git a/PoFGui/info/ada/main_win.iff b/PoFGui/info/ada/main_win.iff
new file mode 100644 (file)
index 0000000..41cdc9a
--- /dev/null
@@ -0,0 +1,176 @@
+SOURCE: ..\..\..\eivd-d~1\projet~1\pofgui\main_win.ada
+  SRCTIME: 993483860    Mon Jun 25 08:44:20 2001
+  COMPSW: adacomp SRC -ga -gc
+COMPVER: 3.273
+SRCDEP: gb.ads
+  SRCDEPTIME: 918848000    Fri Feb 12 11:33:20 1999
+SRCDEP: ..\win32\win32.ads
+  SRCDEPTIME: 848929140    Mon Nov 25 05:39:00 1996
+SRCDEP: ..\aa-confg.ads
+  SRCDEPTIME: 848928820    Mon Nov 25 05:33:40 1996
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918070990    Wed Feb 03 11:43:10 1999
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857479580    Tue Mar 04 04:46:20 1997
+SRCDEP: src\interfaces.ads
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\c.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\c_strings.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\storage_elements.spc
+  SRCDEPTIME: 918071020    Wed Feb 03 11:43:40 1999
+SRCDEP: ..\win32\windef.ads
+  SRCDEPTIME: 848929160    Mon Nov 25 05:39:20 1996
+SRCDEP: ..\win32\utils.ads
+  SRCDEPTIME: 848929130    Mon Nov 25 05:38:50 1996
+SRCDEP: ..\win32\winnt.ads
+  SRCDEPTIME: 860095910    Thu Apr 03 11:31:50 1997
+SRCDEP: ..\win32\winmain.ads
+  SRCDEPTIME: 848929180    Mon Nov 25 05:39:40 1996
+SRCDEP: ..\win32\winuser.ads
+  SRCDEPTIME: 866464060    Mon Jun 16 05:27:40 1997
+SRCDEP: ..\stdarg\stdarg.ads
+  SRCDEPTIME: 848928870    Mon Nov 25 05:34:30 1996
+SRCDEP: src\finalization.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: src\streams.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: ..\win32\winbase.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\wingdi.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\winerror.ads
+  SRCDEPTIME: 848929170    Mon Nov 25 05:39:30 1996
+SRCDEP: OBJBASE.ADS
+  SRCDEPTIME: 922896068    Wed Mar 31 08:01:08 1999
+SRCDEP: ..\win32\rpcdce.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpc.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpcdcep.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: OLEAUTO.ADS
+  SRCDEPTIME: 874542456    Wed Sep 17 17:27:36 1997
+SRCDEP: OLE2.ADS
+  SRCDEPTIME: 876838388    Tue Oct 14 07:13:08 1997
+SRCDEP: gbole.ads
+  SRCDEPTIME: 922815118    Tue Mar 30 09:31:58 1999
+SRCDEP: OCidl.ads
+  SRCDEPTIME: 874542458    Wed Sep 17 17:27:38 1997
+SRCDEP: mscomctllib_slider.ada
+  SRCDEPTIME: 993483252    Mon Jun 25 08:34:12 2001
+SRCDEP: gbole.adb
+  SRCDEPTIME: 922909604    Wed Mar 31 11:46:44 1999
+SRCDEP: gbobject.ads
+  SRCDEPTIME: 858022678    Mon Mar 10 11:37:58 1997
+SRCDEP: ..\..\..\eivd-d~1\projet~1\pofgui\public.ada
+  SRCDEPTIME: 993423623    Sun Jun 24 16:00:23 2001
+UNIT: Main_Win
+  UKIND: 7    PKG_DECL
+  DEP: Ada.Finalization
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\finalization.spc
+    DEPSRCTIME: 848429030    Tue Nov 19 10:43:50 1996
+  DEP: MSComctlLib_Slider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: mscomctllib_slider.ada
+    DEPSRCTIME: 993483252    Mon Jun 25 08:34:12 2001
+  DEP: Interfaces.C
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\c.spc
+    DEPSRCTIME: 848429020    Tue Nov 19 10:43:40 1996
+  DEP: Interfaces
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\interfaces.ads
+    DEPSRCTIME: 848429050    Tue Nov 19 10:44:10 1996
+  DEP: Win32.Utils
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\utils.ads
+    DEPSRCTIME: 848929130    Mon Nov 25 05:38:50 1996
+  DEP: Win32.Winnt
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\winnt.ads
+    DEPSRCTIME: 860095910    Thu Apr 03 11:31:50 1997
+  DEP: Win32.Winbase
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\winbase.ads
+    DEPSRCTIME: 866464050    Mon Jun 16 05:27:30 1997
+  DEP: Win32.Wingdi
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\wingdi.ads
+    DEPSRCTIME: 866464050    Mon Jun 16 05:27:30 1997
+  DEP: System
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\SYSTEM.SPC
+    DEPSRCTIME: 848429050    Tue Nov 19 10:44:10 1996
+  DEP: Win32.Winerror
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\winerror.ads
+    DEPSRCTIME: 848929170    Mon Nov 25 05:39:30 1996
+  DEP: Win32.Winuser
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\winuser.ads
+    DEPSRCTIME: 866464060    Mon Jun 16 05:27:40 1997
+  DEP: Win32.Winmain
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\winmain.ads
+    DEPSRCTIME: 848929180    Mon Nov 25 05:39:40 1996
+  DEP: Win32.Windef
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\windef.ads
+    DEPSRCTIME: 848929160    Mon Nov 25 05:39:20 1996
+  DEP: Win32
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\win32\win32.ads
+    DEPSRCTIME: 848929140    Mon Nov 25 05:39:00 1996
+  DEP: gb.OleInterfaces
+    DEPKIND: 9    PKG_GENERIC
+    DEPSRC: gbole.ads
+    DEPSRCTIME: 922815118    Tue Mar 30 09:31:58 1999
+  DEP: gb
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gb.ads
+    DEPSRCTIME: 918848000    Fri Feb 12 11:33:20 1999
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: system.rts.Finalization_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: Main_Win
+    NEEDKIND: 8    PKG_BODY
+  ELABLINKNAME: main_win__elab_spec
+ENDUNIT
+UNIT: Main_Win
+  UKIND: 8    PKG_BODY
+  DEP: Main_Win
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\..\..\eivd-d~1\projet~1\pofgui\main_win.ada
+    DEPSRCTIME: 993483860    Mon Jun 25 08:44:20 2001
+  DEP: Public
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\..\..\eivd-d~1\projet~1\pofgui\public.ada
+    DEPSRCTIME: 993423623    Sun Jun 24 16:00:23 2001
+  DEP: gbObjects
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gbobject.ads
+    DEPSRCTIME: 858022678    Mon Mar 10 11:37:58 1997
+  NEED: system.rts.Integer_Image_And_Value_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  ELABLINKNAME: main_win__elab_body
+ENDUNIT
+UNIT: PowerFractal
+  UKIND: 2    SUBP_BODY
+  DEP: Main_Win
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: ..\..\..\eivd-d~1\projet~1\pofgui\main_win.ada
+    DEPSRCTIME: 993483860    Mon Jun 25 08:44:20 2001
+  DEP: gb
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gb.ads
+    DEPSRCTIME: 918848000    Fri Feb 12 11:33:20 1999
+  MAINLINKNAME: powerfractal
+ENDUNIT
diff --git a/PoFGui/info/ada/mscomctl2_flatscrollbar.iff b/PoFGui/info/ada/mscomctl2_flatscrollbar.iff
new file mode 100644 (file)
index 0000000..9e33bb4
--- /dev/null
@@ -0,0 +1,88 @@
+SOURCE: mscomctl2_flatscrollbar.ada
+  SRCTIME: 993336462    Sat Jun 23 15:47:42 2001
+  COMPSW: adacomp SRC -ga -gc
+COMPVER: 3.273
+SRCDEP: gb.ads
+  SRCDEPTIME: 918848000    Fri Feb 12 11:33:20 1999
+SRCDEP: ..\win32\win32.ads
+  SRCDEPTIME: 848929140    Mon Nov 25 05:39:00 1996
+SRCDEP: ..\aa-confg.ads
+  SRCDEPTIME: 848928820    Mon Nov 25 05:33:40 1996
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918070990    Wed Feb 03 11:43:10 1999
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857479580    Tue Mar 04 04:46:20 1997
+SRCDEP: src\interfaces.ads
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\c.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\c_strings.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\storage_elements.spc
+  SRCDEPTIME: 918071020    Wed Feb 03 11:43:40 1999
+SRCDEP: ..\win32\windef.ads
+  SRCDEPTIME: 848929160    Mon Nov 25 05:39:20 1996
+SRCDEP: ..\win32\utils.ads
+  SRCDEPTIME: 848929130    Mon Nov 25 05:38:50 1996
+SRCDEP: ..\win32\winnt.ads
+  SRCDEPTIME: 860095910    Thu Apr 03 11:31:50 1997
+SRCDEP: ..\win32\winmain.ads
+  SRCDEPTIME: 848929180    Mon Nov 25 05:39:40 1996
+SRCDEP: ..\win32\winuser.ads
+  SRCDEPTIME: 866464060    Mon Jun 16 05:27:40 1997
+SRCDEP: ..\stdarg\stdarg.ads
+  SRCDEPTIME: 848928870    Mon Nov 25 05:34:30 1996
+SRCDEP: src\finalization.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: src\streams.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: ..\win32\winbase.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\wingdi.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\winerror.ads
+  SRCDEPTIME: 848929170    Mon Nov 25 05:39:30 1996
+SRCDEP: OBJBASE.ADS
+  SRCDEPTIME: 922896068    Wed Mar 31 08:01:08 1999
+SRCDEP: ..\win32\rpcdce.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpc.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpcdcep.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: OLEAUTO.ADS
+  SRCDEPTIME: 874542456    Wed Sep 17 17:27:36 1997
+SRCDEP: OLE2.ADS
+  SRCDEPTIME: 876838388    Tue Oct 14 07:13:08 1997
+UNIT: MSComCtl2_FlatScrollBar
+  UKIND: 7    PKG_DECL
+  DEP: gb
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gb.ads
+    DEPSRCTIME: 918848000    Fri Feb 12 11:33:20 1999
+  NEED: Ada.Tags
+    NEEDKIND: 7    PKG_DECL
+  NEED: system.rts.Finalization_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: MSComCtl2_FlatScrollBar
+    NEEDKIND: 8    PKG_BODY
+  FEATURES: 16#80000000a0000#(-1,-1,-1,-1,-1,-1)
+  ELABLINKNAME: mscomctl2_flatscrollbar__elab_spec
+ENDUNIT
+UNIT: MSComCtl2_FlatScrollBar
+  UKIND: 8    PKG_BODY
+  DEP: System
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\SYSTEM.SPC
+    DEPSRCTIME: 848429050    Tue Nov 19 10:44:10 1996
+  DEP: MSComCtl2_FlatScrollBar
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: mscomctl2_flatscrollbar.ada
+    DEPSRCTIME: 993336462    Sat Jun 23 15:47:42 2001
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  FEATURES: 16#8000000040000#(-1,-1,-1,-1,-1,-1)
+  ELABLINKNAME: mscomctl2_flatscrollbar__elab_body
+ENDUNIT
diff --git a/PoFGui/info/ada/mscomctllib_slider.iff b/PoFGui/info/ada/mscomctllib_slider.iff
new file mode 100644 (file)
index 0000000..8ed2428
--- /dev/null
@@ -0,0 +1,88 @@
+SOURCE: mscomctllib_slider.ada
+  SRCTIME: 993483252    Mon Jun 25 08:34:12 2001
+  COMPSW: adacomp SRC -ga -gc
+COMPVER: 3.273
+SRCDEP: gb.ads
+  SRCDEPTIME: 918848000    Fri Feb 12 11:33:20 1999
+SRCDEP: ..\win32\win32.ads
+  SRCDEPTIME: 848929140    Mon Nov 25 05:39:00 1996
+SRCDEP: ..\aa-confg.ads
+  SRCDEPTIME: 848928820    Mon Nov 25 05:33:40 1996
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918070990    Wed Feb 03 11:43:10 1999
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857479580    Tue Mar 04 04:46:20 1997
+SRCDEP: src\interfaces.ads
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\c.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\c_strings.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\storage_elements.spc
+  SRCDEPTIME: 918071020    Wed Feb 03 11:43:40 1999
+SRCDEP: ..\win32\windef.ads
+  SRCDEPTIME: 848929160    Mon Nov 25 05:39:20 1996
+SRCDEP: ..\win32\utils.ads
+  SRCDEPTIME: 848929130    Mon Nov 25 05:38:50 1996
+SRCDEP: ..\win32\winnt.ads
+  SRCDEPTIME: 860095910    Thu Apr 03 11:31:50 1997
+SRCDEP: ..\win32\winmain.ads
+  SRCDEPTIME: 848929180    Mon Nov 25 05:39:40 1996
+SRCDEP: ..\win32\winuser.ads
+  SRCDEPTIME: 866464060    Mon Jun 16 05:27:40 1997
+SRCDEP: ..\stdarg\stdarg.ads
+  SRCDEPTIME: 848928870    Mon Nov 25 05:34:30 1996
+SRCDEP: src\finalization.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: src\streams.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: ..\win32\winbase.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\wingdi.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\winerror.ads
+  SRCDEPTIME: 848929170    Mon Nov 25 05:39:30 1996
+SRCDEP: OBJBASE.ADS
+  SRCDEPTIME: 922896068    Wed Mar 31 08:01:08 1999
+SRCDEP: ..\win32\rpcdce.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpc.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpcdcep.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: OLEAUTO.ADS
+  SRCDEPTIME: 874542456    Wed Sep 17 17:27:36 1997
+SRCDEP: OLE2.ADS
+  SRCDEPTIME: 876838388    Tue Oct 14 07:13:08 1997
+UNIT: MSComctlLib_Slider
+  UKIND: 7    PKG_DECL
+  DEP: gb
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gb.ads
+    DEPSRCTIME: 918848000    Fri Feb 12 11:33:20 1999
+  NEED: Ada.Tags
+    NEEDKIND: 7    PKG_DECL
+  NEED: system.rts.Finalization_Pkg
+    NEEDKIND: 7    PKG_DECL
+  NEED: MSComctlLib_Slider
+    NEEDKIND: 8    PKG_BODY
+  FEATURES: 16#80000000a0000#(-1,-1,-1,-1,-1,-1)
+  ELABLINKNAME: mscomctllib_slider__elab_spec
+ENDUNIT
+UNIT: MSComctlLib_Slider
+  UKIND: 8    PKG_BODY
+  DEP: System
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: src\SYSTEM.SPC
+    DEPSRCTIME: 848429050    Tue Nov 19 10:44:10 1996
+  DEP: MSComctlLib_Slider
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: mscomctllib_slider.ada
+    DEPSRCTIME: 993483252    Mon Jun 25 08:34:12 2001
+  NEED: system.rts.TGT.Sec_Stack_Pkg
+    NEEDKIND: 7    PKG_DECL
+  FEATURES: 16#8000000040000#(-1,-1,-1,-1,-1,-1)
+  ELABLINKNAME: mscomctllib_slider__elab_body
+ENDUNIT
diff --git a/PoFGui/info/ada/public.iff b/PoFGui/info/ada/public.iff
new file mode 100644 (file)
index 0000000..69ae071
--- /dev/null
@@ -0,0 +1,66 @@
+SOURCE: ..\..\..\eivd-d~1\projet~1\pofgui\public.ada
+  SRCTIME: 993423623    Sun Jun 24 16:00:23 2001
+  COMPSW: adacomp SRC -ga -gc
+COMPVER: 3.273
+SRCDEP: gb.ads
+  SRCDEPTIME: 918848000    Fri Feb 12 11:33:20 1999
+SRCDEP: ..\win32\win32.ads
+  SRCDEPTIME: 848929140    Mon Nov 25 05:39:00 1996
+SRCDEP: ..\aa-confg.ads
+  SRCDEPTIME: 848928820    Mon Nov 25 05:33:40 1996
+SRCDEP: src\ada.ada
+  SRCDEPTIME: 918070990    Wed Feb 03 11:43:10 1999
+SRCDEP: src\unchecked_conversion.ada
+  SRCDEPTIME: 857479580    Tue Mar 04 04:46:20 1997
+SRCDEP: src\interfaces.ads
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\c.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\c_strings.spc
+  SRCDEPTIME: 848429020    Tue Nov 19 10:43:40 1996
+SRCDEP: src\SYSTEM.SPC
+  SRCDEPTIME: 848429050    Tue Nov 19 10:44:10 1996
+SRCDEP: src\storage_elements.spc
+  SRCDEPTIME: 918071020    Wed Feb 03 11:43:40 1999
+SRCDEP: ..\win32\windef.ads
+  SRCDEPTIME: 848929160    Mon Nov 25 05:39:20 1996
+SRCDEP: ..\win32\utils.ads
+  SRCDEPTIME: 848929130    Mon Nov 25 05:38:50 1996
+SRCDEP: ..\win32\winnt.ads
+  SRCDEPTIME: 860095910    Thu Apr 03 11:31:50 1997
+SRCDEP: ..\win32\winmain.ads
+  SRCDEPTIME: 848929180    Mon Nov 25 05:39:40 1996
+SRCDEP: ..\win32\winuser.ads
+  SRCDEPTIME: 866464060    Mon Jun 16 05:27:40 1997
+SRCDEP: ..\stdarg\stdarg.ads
+  SRCDEPTIME: 848928870    Mon Nov 25 05:34:30 1996
+SRCDEP: src\finalization.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: src\streams.spc
+  SRCDEPTIME: 848429030    Tue Nov 19 10:43:50 1996
+SRCDEP: ..\win32\winbase.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\wingdi.ads
+  SRCDEPTIME: 866464050    Mon Jun 16 05:27:30 1997
+SRCDEP: ..\win32\winerror.ads
+  SRCDEPTIME: 848929170    Mon Nov 25 05:39:30 1996
+SRCDEP: OBJBASE.ADS
+  SRCDEPTIME: 922896068    Wed Mar 31 08:01:08 1999
+SRCDEP: ..\win32\rpcdce.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpc.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: ..\win32\rpcdcep.ads
+  SRCDEPTIME: 866464040    Mon Jun 16 05:27:20 1997
+SRCDEP: OLEAUTO.ADS
+  SRCDEPTIME: 874542456    Wed Sep 17 17:27:36 1997
+SRCDEP: OLE2.ADS
+  SRCDEPTIME: 876838388    Tue Oct 14 07:13:08 1997
+UNIT: Public
+  UKIND: 7    PKG_DECL
+  DEP: gb
+    DEPKIND: 7    PKG_DECL
+    DEPSRC: gb.ads
+    DEPSRCTIME: 918848000    Fri Feb 12 11:33:20 1999
+  ELABLINKNAME: public__elab_spec
+ENDUNIT
diff --git a/PoFGui/msg/ada/comctl2_animation.msg b/PoFGui/msg/ada/comctl2_animation.msg
new file mode 100644 (file)
index 0000000..364cf3c
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/comctl3_coolbar.msg b/PoFGui/msg/ada/comctl3_coolbar.msg
new file mode 100644 (file)
index 0000000..20ab23a
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl3_coolbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/comctl_imagelist.msg b/PoFGui/msg/ada/comctl_imagelist.msg
new file mode 100644 (file)
index 0000000..2b9befa
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file comctl_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_directanimationintegratedmedia.msg b/PoFGui/msg/ada/directanimation_directanimationintegratedmedia.msg
new file mode 100644 (file)
index 0000000..36314e2
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_directanimationwindowedintegratedmedia.msg b/PoFGui/msg/ada/directanimation_directanimationwindowedintegratedmedia.msg
new file mode 100644 (file)
index 0000000..a0babfb
--- /dev/null
@@ -0,0 +1,187 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_directanimationwindowedintegratedmedia.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_path.msg b/PoFGui/msg/ada/directanimation_path.msg
new file mode 100644 (file)
index 0000000..d90edfb
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_path.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_sequencer.msg b/PoFGui/msg/ada/directanimation_sequencer.msg
new file mode 100644 (file)
index 0000000..a1bb211
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sequencer.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_sprite.msg b/PoFGui/msg/ada/directanimation_sprite.msg
new file mode 100644 (file)
index 0000000..cd9c3b5
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_sprite.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/directanimation_structuredgraphics.msg b/PoFGui/msg/ada/directanimation_structuredgraphics.msg
new file mode 100644 (file)
index 0000000..78456fc
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file directanimation_structuredgraphics.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/dsstatusbar_dsstatusbar.msg b/PoFGui/msg/ada/dsstatusbar_dsstatusbar.msg
new file mode 100644 (file)
index 0000000..dbc7c67
--- /dev/null
@@ -0,0 +1,187 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file dsstatusbar_dsstatusbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/microsoft_activexplugin.msg b/PoFGui/msg/ada/microsoft_activexplugin.msg
new file mode 100644 (file)
index 0000000..06cfc5b
--- /dev/null
@@ -0,0 +1,242 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file microsoft_activexplugin.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomctl2_animation.msg b/PoFGui/msg/ada/mscomctl2_animation.msg
new file mode 100644 (file)
index 0000000..24a18a3
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctl2_animation.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomctllib_imagecombo.msg b/PoFGui/msg/ada/mscomctllib_imagecombo.msg
new file mode 100644 (file)
index 0000000..6042e5b
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagecombo.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomctllib_imagelist.msg b/PoFGui/msg/ada/mscomctllib_imagelist.msg
new file mode 100644 (file)
index 0000000..a79234d
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_imagelist.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomctllib_prog.msg b/PoFGui/msg/ada/mscomctllib_prog.msg
new file mode 100644 (file)
index 0000000..8e4344e
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_prog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomctllib_sbar.msg b/PoFGui/msg/ada/mscomctllib_sbar.msg
new file mode 100644 (file)
index 0000000..2aa6931
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomctllib_sbar.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/mscomdlg_commondialog.msg b/PoFGui/msg/ada/mscomdlg_commondialog.msg
new file mode 100644 (file)
index 0000000..a30856f
--- /dev/null
@@ -0,0 +1,88 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file mscomdlg_commondialog.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/msg/ada/picclip_pictureclip.msg b/PoFGui/msg/ada/picclip_pictureclip.msg
new file mode 100644 (file)
index 0000000..f999f4b
--- /dev/null
@@ -0,0 +1,275 @@
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
+MSGTYPE: 4
+MSGLINE: 0
+MSGCOL: 0
+MSGLRMREF: 
+MSGACGREF: 
+MSGTXT: Unable to read source file picclip_pictureclip.ada
+MSGACTION: 
+MSGCAUSE: 
+MSGREMEDY: 
+MSGNOTES: 
+MSGEND
diff --git a/PoFGui/powerfractal.exe b/PoFGui/powerfractal.exe
new file mode 100644 (file)
index 0000000..79889f3
Binary files /dev/null and b/PoFGui/powerfractal.exe differ
diff --git a/PoFGui/xref/ada/main_win.xrf b/PoFGui/xref/ada/main_win.xrf
new file mode 100644 (file)
index 0000000..70a4f1d
Binary files /dev/null and b/PoFGui/xref/ada/main_win.xrf differ
diff --git a/PoFGui/xref/ada/mscomctl2_flatscrollbar.xrf b/PoFGui/xref/ada/mscomctl2_flatscrollbar.xrf
new file mode 100644 (file)
index 0000000..7773d3a
Binary files /dev/null and b/PoFGui/xref/ada/mscomctl2_flatscrollbar.xrf differ
diff --git a/PoFGui/xref/ada/mscomctllib_slider.xrf b/PoFGui/xref/ada/mscomctllib_slider.xrf
new file mode 100644 (file)
index 0000000..cba12ef
Binary files /dev/null and b/PoFGui/xref/ada/mscomctllib_slider.xrf differ
diff --git a/PoFGui/xref/ada/public.xrf b/PoFGui/xref/ada/public.xrf
new file mode 100644 (file)
index 0000000..c933672
Binary files /dev/null and b/PoFGui/xref/ada/public.xrf differ
diff --git a/Presentation 3d/Affichage.bmp b/Presentation 3d/Affichage.bmp
new file mode 100644 (file)
index 0000000..5176b98
Binary files /dev/null and b/Presentation 3d/Affichage.bmp differ
diff --git a/Presentation 3d/console.bmp b/Presentation 3d/console.bmp
new file mode 100644 (file)
index 0000000..3f35b5d
Binary files /dev/null and b/Presentation 3d/console.bmp differ
diff --git a/Presentation 3d/presentation.max b/Presentation 3d/presentation.max
new file mode 100644 (file)
index 0000000..06e78c5
Binary files /dev/null and b/Presentation 3d/presentation.max differ
diff --git a/Presentation PF.ppt b/Presentation PF.ppt
new file mode 100644 (file)
index 0000000..5ae9b80
Binary files /dev/null and b/Presentation PF.ppt differ
diff --git a/Presentation PPT/Pifou - fractal5.jpg b/Presentation PPT/Pifou - fractal5.jpg
new file mode 100644 (file)
index 0000000..845b57b
Binary files /dev/null and b/Presentation PPT/Pifou - fractal5.jpg differ
diff --git a/Presentation PPT/Pifou - fractal6 - gris.jpg b/Presentation PPT/Pifou - fractal6 - gris.jpg
new file mode 100644 (file)
index 0000000..df825d0
Binary files /dev/null and b/Presentation PPT/Pifou - fractal6 - gris.jpg differ
diff --git a/Presentation PPT/Presentation PF.ppt b/Presentation PPT/Presentation PF.ppt
new file mode 100644 (file)
index 0000000..fe26568
Binary files /dev/null and b/Presentation PPT/Presentation PF.ppt differ
diff --git a/Presentation PPT/exemple_div_niv_gris.bmp b/Presentation PPT/exemple_div_niv_gris.bmp
new file mode 100644 (file)
index 0000000..ec635e9
Binary files /dev/null and b/Presentation PPT/exemple_div_niv_gris.bmp differ
diff --git a/Presentation PPT/liste.jpg b/Presentation PPT/liste.jpg
new file mode 100644 (file)
index 0000000..ef60393
Binary files /dev/null and b/Presentation PPT/liste.jpg differ
diff --git a/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/400x40.bmp b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/400x40.bmp
new file mode 100644 (file)
index 0000000..e2027a8
Binary files /dev/null and b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/400x40.bmp differ
diff --git a/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/40x400.bmp b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/40x400.bmp
new file mode 100644 (file)
index 0000000..d14df4b
Binary files /dev/null and b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/40x400.bmp differ
diff --git a/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/fenetre.jpg b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/fenetre.jpg
new file mode 100644 (file)
index 0000000..61e431c
Binary files /dev/null and b/Screenshoots/Que ce passe t'-il lorsque la proportion de rendu n'est pas la meme que celle de la fenetre/fenetre.jpg differ
diff --git a/Screenshoots/interface/Interface - 2001-06-21 v0.1 001.jpg b/Screenshoots/interface/Interface - 2001-06-21 v0.1 001.jpg
new file mode 100644 (file)
index 0000000..54f11aa
Binary files /dev/null and b/Screenshoots/interface/Interface - 2001-06-21 v0.1 001.jpg differ
diff --git a/Screenshoots/test - PowerFractal 01.jpg b/Screenshoots/test - PowerFractal 01.jpg
new file mode 100644 (file)
index 0000000..b63ab62
Binary files /dev/null and b/Screenshoots/test - PowerFractal 01.jpg differ
diff --git a/Screenshoots/test - PowerFractal 03.jpg b/Screenshoots/test - PowerFractal 03.jpg
new file mode 100644 (file)
index 0000000..8edfad2
Binary files /dev/null and b/Screenshoots/test - PowerFractal 03.jpg differ
diff --git a/Screenshoots/test - PowerFractal 04 - Antialiasing.jpg b/Screenshoots/test - PowerFractal 04 - Antialiasing.jpg
new file mode 100644 (file)
index 0000000..5d24607
Binary files /dev/null and b/Screenshoots/test - PowerFractal 04 - Antialiasing.jpg differ
diff --git a/Screenshoots/test - PowerFractal 05 - fin de developpement.jpg b/Screenshoots/test - PowerFractal 05 - fin de developpement.jpg
new file mode 100644 (file)
index 0000000..aefafac
Binary files /dev/null and b/Screenshoots/test - PowerFractal 05 - fin de developpement.jpg differ
diff --git a/Screenshoots/test - PowerFractal 06 - fin de developpement.jpg b/Screenshoots/test - PowerFractal 06 - fin de developpement.jpg
new file mode 100644 (file)
index 0000000..c979dd4
Binary files /dev/null and b/Screenshoots/test - PowerFractal 06 - fin de developpement.jpg differ
diff --git a/Screenshoots/test - PowerFractal 07 - limite des nombres reels.jpg b/Screenshoots/test - PowerFractal 07 - limite des nombres reels.jpg
new file mode 100644 (file)
index 0000000..86e4efd
Binary files /dev/null and b/Screenshoots/test - PowerFractal 07 - limite des nombres reels.jpg differ
diff --git a/Src/Power_Bmp.adb b/Src/Power_Bmp.adb
new file mode 100644 (file)
index 0000000..0750bef
--- /dev/null
@@ -0,0 +1,108 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Bmp / fait partie du programme Power Fractal                               --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Mettre a diposition un outil pour ecrire des bmps                                --
+------------------------------------------------------------------------------------------------
+
+with Ada.Sequential_Io; --Pour la gestion de fichier binaire
+with Power_Types; use type Power_Types.Byte; --Le format d'une couleur 
+
+package body Power_Bmp is
+
+   --Instanciation du paquetage.
+   package Bmp_IO is new Ada.Sequential_Io(Byte); use Bmp_IO;
+   
+   --Pour stocker les info de l'entete
+   type T_Entete is array(1..54) of Byte;
+    
+   --Pour generer certaines partie de l'entete
+   function Split(A: Integer) return T_Entete is
+      R: T_Entete;
+   begin
+      R(1):= Byte(A mod 256);
+      R(2):= Byte(A / 256 mod 256);
+      R(3):= Byte(A / 256 / 256 mod 256);
+      R(4):= Byte(A / 256 / 256 / 256 mod 256);
+      return R;
+   end;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ecrire_Bmp                                                                       --
+   -- But     : Inverser une couleur RGB                                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Ecrire_Bmp (Matrice_Image : in T_Matrice_Tampon; Nom_Fichier : in String) is
+
+      Entete: T_Entete := (others => 0); --L'entete du fichier bmp
+
+      --Entiers-------------
+         Hauteur, --Hauteur de la matrice
+         Largeur, --Largeur de la matrice
+   
+         Nb_Byte_Fin, --Nombre de byte pour finir le fichier
+   
+         Taille_Fichier, --La taille du fichier (byte)
+         Taille_Image    --La taille de l'image (byte)
+      : Integer;------------
+
+      Fichier_Bmp: File_Type; --le fichier
+
+   begin --Ecrire_Bmp
+
+      --Definit la largeur et la hauteur de la matrice
+      Largeur := Matrice_Image'Length(1);
+      Hauteur := Matrice_Image'Length(2);
+      --
+
+      --Calcul le nombre de byte de fin de fichier
+      Nb_Byte_Fin := (Largeur * 8 rem 32) / 8;
+    
+     
+      Taille_Image := (Largeur * 3 + Nb_Byte_Fin) * Hauteur; --Calcul la taille de l'image
+      Taille_Fichier := 14 + 40 + Taille_Image;        --Calcul la taille du fichier
+
+      ---------------ECRITURE DE L'ENTETE---------------
+      Entete(1)      := Character'Pos('B');
+      Entete(2)      := Character'Pos('M');
+      Entete(3..6)   := Split(Taille_Fichier)(1..4);            
+      
+      Entete(11)     := 54;
+      Entete(15)     := 40;
+      Entete(19..22) := Split(Largeur)(1..4);
+      Entete(23..26) := Split(Hauteur)(1..4);
+      Entete(27)     := 1;
+      Entete(29)     := 24;
+      Entete(35..38) := Split(Taille_Image)(1..4);
+      Entete(39..42) := Split(2835)(1..4);
+      Entete(43..46) := Split(2835)(1..4); 
+      ---------------------------------------------------
+
+      --Cree le fichier
+      Create (Fichier_Bmp, Out_File, Nom_Fichier);
+
+      --Ecrit l'entete dans le fichier
+      for I in 1..54 loop
+         Write(Fichier_Bmp, Entete(I));
+      end loop;
+      --Ecrit toute la matrice (fractal) dans le fichier
+      for X in reverse Matrice_Image'range(2) loop
+         for Y in Matrice_Image'range(1) loop
+            Write(Fichier_Bmp, Matrice_Image(Y, X).B);
+            Write(Fichier_Bmp, Matrice_Image(Y, X).G);
+            Write(Fichier_Bmp, Matrice_Image(Y, X).R);
+         end loop;
+            
+         --Ecrit les bytes de fin de fichier
+         for Z in 1..Nb_Byte_Fin loop
+            Write(Fichier_Bmp, 0);
+         end loop;
+      end loop;
+   
+      Close(Fichier_Bmp);
+   end Ecrire_Bmp;
+   
+end Power_Bmp;
diff --git a/Src/Power_Bmp.ads b/Src/Power_Bmp.ads
new file mode 100644 (file)
index 0000000..9ef3469
--- /dev/null
@@ -0,0 +1,22 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Bmp / fait partie du programme Power Fractal                               --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Mettre a diposition un outil pour ecrire des bmps                                --
+------------------------------------------------------------------------------------------------
+
+--Pour les types, les constantes et les variables globales
+with Power_Types; use Power_Types;
+
+package Power_Bmp is
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ecrire_Bmp                                                                       --
+   -- But     : Inverser une couleur RGB                                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Ecrire_Bmp (Matrice_Image : in T_Matrice_Tampon; Nom_Fichier : in String);
+
+end Power_Bmp;
diff --git a/Src/Power_Colors.adb b/Src/Power_Colors.adb
new file mode 100644 (file)
index 0000000..b0c1051
--- /dev/null
@@ -0,0 +1,233 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Colors / fait partie du programme Power Fractal                            --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils servant a la gestion des couleurs et des degradés                         --
+------------------------------------------------------------------------------------------------
+
+
+--Enfant de spider Pour gerer la couleur et le dessin
+with Spider.Draw;
+
+with Power_Types; use Power_Types;
+with ada.integer_text_io; use ada.integer_text_io;
+with ada.text_io; use ada.text_io;
+with ada.float_text_io; use ada.float_text_io;
+with power_draw;
+
+package body Power_Colors is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Inverse_Couleur                                                                  --
+   -- But     : Inverser une couleur RGB                                                         --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Inverse_Couleur (Couleur : in out Spider.Draw.Tcolor) is
+      begin --Inverse_Couleur
+         Couleur.R := 255 - Couleur.R;
+         Couleur.G := 255 - Couleur.G;
+         Couleur.B := 255 - Couleur.B;
+      end Inverse_Couleur;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   --           * La longueur du degrade                                                         --
+   --  Out    : * Le degrade de couleur                                                          --
+   ------------------------------------------------------------------------------------------------
+--   procedure Creer_Degrade (Fractal : in Cara_Fractal;
+--                            Degrade : out T_Tab_Couleur; Longueur : in Integer) is
+--
+--
+--      Pas_R : Float; -- Pour le pas de la couleur rouge
+--      Pas_G : Float; -- Pour le pas de la couleur verte
+--      Pas_B : Float; -- Pour le pas de la couleur bleue
+--
+--      -- Numero de la couleur courante des couleurs choisie
+--      Coul_Frac_Courant : Natural := Fractal.Couleur'First;
+--      -- Numero de la couleur courante du degrade
+--      Coul_Deg_Courant  : Natural := Degrade'First;
+--      -- Nombre de couleur dans une partie du degrade
+--      Nb_Coul_Partie    : Natural := Longueur / (Fractal.Couleur'Length - 1);
+--
+--   begin -- Creer_Degrader
+--      
+--         
+--         -- Tant que ca n'est pas la derniere partie du degrade
+--         while Coul_Frac_Courant < Fractal.Couleur'Last loop
+--
+--            -- Definis le pas de la partie du degrade courante pour chaque composante
+--            Pas_R := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).R) - 
+--                      Float(Fractal.Couleur(Coul_Frac_Courant).R)) / Float(Nb_Coul_Partie);
+--            Pas_G := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).G) - 
+--                      Float(Fractal.Couleur(Coul_Frac_Courant).G)) / Float(Nb_Coul_Partie);
+--            Pas_B := (Float(Fractal.Couleur(Coul_Frac_Courant + 1).B) - 
+--                      Float(Fractal.Couleur(Coul_Frac_Courant).B)) / Float(Nb_Coul_Partie);
+--
+--            -- Parcours de toute les couleurs dans la partie courante
+--            while Coul_Deg_Courant /= Nb_Coul_Partie * Coul_Frac_Courant loop     
+--            
+--               -- Attribution de la couleur a la couleur courante en fonction du Pas
+--               Degrade(Coul_Deg_Courant).R :=
+--               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).R) + Integer(
+--               Pas_R * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--               
+--               Degrade(Coul_Deg_Courant).G := 
+--               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).G) + Integer(
+--               Pas_G * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--               
+--               Degrade(Coul_Deg_Courant).B := 
+--               Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).B) + Integer(
+--               Pas_B * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--
+--               Coul_Deg_Courant := Coul_Deg_Courant + 1; -- Couleur du degrade suivante
+--            end loop;  
+--
+--            Coul_Frac_Courant := Coul_Frac_Courant + 1;  -- Partie du degrade suivante
+--         end loop;
+--
+--
+--         -- Attribue la couleur jusqu'a la fin du degrade
+--         while Coul_Deg_Courant < Degrade'Last loop
+--
+--            -- Attribution de la couleur a la couleur courante en fonction du Pas
+--            Degrade(Coul_Deg_Courant).R :=
+--            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).R) + Integer(
+--            Pas_R * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--            
+--            Degrade(Coul_Deg_Courant).G := 
+--            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).G) + Integer(
+--            Pas_G * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--            
+--            Degrade(Coul_Deg_Courant).B := 
+--            Limite(Integer(Fractal.Couleur(Coul_Frac_Courant).B) + Integer(
+--            Pas_B * Float(Coul_Deg_Courant - (Coul_Frac_Courant - 1) * Nb_Coul_Partie - 1)));
+--
+--            Coul_Deg_Courant := Coul_Deg_Courant + 1;
+--
+--         end loop;
+--
+--         Degrade(Degrade'Last) := (0, 0, 0);
+--   end Creer_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Fractal : in Cara_Fractal) is
+      Degrade : T_Tab_Couleur(Matrice_Tampon_Ecran'range(1));      
+   begin 
+--      Creer_Degrade(Fractal, Degrade, Largeur_Ecran);
+      for X in Degrade'range loop
+         for Y in 0 .. Hauteur_Degrade loop
+            Matrice_Tampon_Ecran(X, Y) := Degrade(X);
+         end loop;
+      end loop;
+
+   end Affiche_Degrade;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La matrice d'iteration                                                         --
+   --         : * Le degrade de couleur                                                          --
+   --  return : Une matrice de couleur                                                           --
+   ------------------------------------------------------------------------------------------------
+   function Conversion_Couleur (Matrice : in T_Matrice_Iteration;
+                                fractal : in Cara_fractal) 
+                                return T_Matrice_Tampon is
+
+      ---------------------------------------------------------------------------------------------
+      -- Nom      : Limite                                                                       --
+      -- But      : Empeche le depassement des limites fixées                                    --
+      ---------------------------------------------------------------------------------------------
+      function Limite ( Nombre : in float) return Byte is         
+         Limite_Min : constant  := 0.0;  -- Limite inferieure
+         Limite_Max : constant  := 255.0;-- Limite superieure
+      begin -- Limite
+         if Nombre < Limite_Min then 
+            return Byte(Limite_Min);
+            put("LIMITE ");
+         elsif Nombre > Limite_Max then
+            return Byte(Limite_Max);
+            put("LIMITE ");
+         else
+            return Byte(Nombre);
+         end if;         
+      end Limite;
+
+
+      Matrice_Tampon : T_Matrice_Tampon (Matrice'range(1), Matrice'range(2));
+      partie : integer;
+      pourcentage : float;
+      tmp   : float;
+      tmp_2 : float;
+      nb_coul_partie : float := float(fractal.nb_iteration_max) / float(fractal.nb_couleur - 1);
+   begin -- Conversion_Couleur
+
+      for X in Matrice'range(1) loop
+         for Y in  Matrice'range(2) loop
+            Partie := 1;
+            --Matrice_Tampon(X, Y) := Degrade(integer(Matrice(X, Y)));
+
+
+            -- Trouve entre quelle couleur definie (partie) se trouve la couleur courante
+            while matrice(x, y) not in nb_coul_partie * float(partie - 1) .. nb_coul_partie * float(partie) loop   
+               partie := partie + 1;
+               if partie = fractal.nb_couleur then
+                  exit;
+               end if;
+            end loop;
+
+
+            pourcentage := (matrice(x, y) - (nb_coul_partie * float(partie - 1))) / nb_coul_partie;
+            
+                     
+            tmp_2 := float(fractal.couleur(partie + 1).r) - float(fractal.couleur(partie).r);
+            tmp   := tmp_2 * pourcentage + float(fractal.couleur(partie).r);
+            matrice_tampon(x, y).r := limite(tmp);
+            
+            tmp_2 := float(fractal.couleur(partie + 1).g) - float(fractal.couleur(partie).g);
+            tmp   := tmp_2 * pourcentage + float(fractal.couleur(partie).g);
+            matrice_tampon(x, y).g := limite(tmp);
+            
+            tmp_2 := float(fractal.couleur(partie + 1).b) - float(fractal.couleur(partie).b);
+            tmp   := tmp_2 * pourcentage + float(fractal.couleur(partie).b);
+            matrice_tampon(x, y).b := limite(tmp);
+            
+                        
+--            
+--                        put(integer(partie), 0);
+--                        put(": ");
+--                        put(pourcentage, 0, 2, 0);
+--                        put("%");
+--                        put(matrice(x, y), 8, 2, 0);
+--                        put(integer(matrice_tampon(x, y).r));
+--                        put(" (");
+--                        put(x, 3);
+--                        put(y, 4);
+--                        put(")");                        
+--                        new_line;
+--            
+         
+
+
+         end loop;
+      end loop;
+      return Matrice_Tampon;
+   end Conversion_Couleur;
+
+end Power_Colors;
diff --git a/Src/Power_Colors.ads b/Src/Power_Colors.ads
new file mode 100644 (file)
index 0000000..d58ba6e
--- /dev/null
@@ -0,0 +1,59 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Colors / fait partie du programme Power Fractal                            --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils servant a la gestion des couleurs et des degradés                         --
+------------------------------------------------------------------------------------------------
+
+--Enfant de spider Pour gerer la couleur et le dessin
+with Spider.Draw;
+with Power_Types;
+
+
+package  Power_Colors is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Inverse_Couleur                                                                  --
+   -- But     : Inverser une couleur RGB                                                         --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La couleur                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Inverse_Couleur (Couleur : in out Spider.Draw.Tcolor);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Creer_Degrade                                                                   --
+   -- But      : Creer un tableau de degrade de couleur en fonction de couleur determinee        --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   --           * La longueur du degrade                                                         --
+   --  Out    : * Le degrade de couleur                                                          --
+   ------------------------------------------------------------------------------------------------
+--   procedure Creer_Degrade (Fractal : in Power_Types.Cara_Fractal; 
+--                            Degrade : out Power_Types.T_Tab_Couleur; Longueur : in Integer);
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Affiche_Degrade                                                                 --
+   -- But      : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal                                                                     --
+   ------------------------------------------------------------------------------------------------
+   procedure Affiche_Degrade (Fractal : in Power_Types.Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom      : Conversion_Couleur                                                              --
+   -- But      : Convertit une matrice d'iteration en une matrice de couleur                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La matrice d'iteration                                                         --
+   --         : * Le degrade de couleur                                                          --
+   --  return : Une matrice de couleur                                                           --
+   ------------------------------------------------------------------------------------------------
+   function Conversion_Couleur (Matrice : in Power_Types.T_Matrice_Iteration;
+                                fractal : in power_types.Cara_fractal)
+                                return Power_Types.T_Matrice_Tampon;
+
+end Power_Colors;
diff --git a/Src/Power_Console.adb b/Src/Power_Console.adb
new file mode 100644 (file)
index 0000000..d33d70e
--- /dev/null
@@ -0,0 +1,1121 @@
+---------------------------------------------------------------------------------------------------
+-- Nom     : Power_console / fait partie du programme Power Fractal                              --
+--                                                                                               --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                     --
+---------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour mettre a disposition de l'utilisateur les               --
+--           differentes fonction du programme                                                   --
+---------------------------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Ada.Long_Float_Text_Io; use Ada.Long_Float_Text_Io;
+with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
+
+with Power_Tools; use Power_Tools;
+with Power_Types; use Power_Types;
+with Power_Io;
+with Ada.Numerics.Discrete_Random;
+
+
+package body Power_Console is
+
+   -- Type pour gerer un String de longueur indéfinie
+   type T_Chaine is 
+      record
+         Chaine : String(1 .. Longueur_Max) := (others => ' ');
+         Longueur : Integer := 0;
+      end record;
+
+   --Les commandes a diposition
+   type T_Commande is (Help, Info, Choose, Switch, Zoom, Zin, Zout, Center, Iteration, Limit,
+                       Cst, Angle, Color, Nbcolors, Random, Drawcolors, Default, Defaultlist, 
+                       Auto, Draw, Anti, Render, Create, Del, Save, Load, Savelist, Loadlist,
+                       About, Quit);
+
+   --Pour faire des entrees-sorties sur les commandes
+   package T_Commande_Io is new Ada.Text_IO.Enumeration_IO(T_Commande); use T_Commande_Io;
+
+
+   --Pour faire des entree-sortie sur le type byte
+   package Modulo_IO is new Modular_IO (Byte); use Modulo_IO; 
+   
+   --Pour faire des entrees-sorties sur le type T_Ensemble
+   package T_Ensemble_IO is new Ada.Text_IO.Enumeration_IO(T_Ensemble); use T_Ensemble_IO;
+
+   --Pour tirer une composante de couleur au hasard
+   package Random_Composante is new Ada.Numerics.Discrete_Random(Byte); use Random_Composante;
+
+   --La longeur d'une ligne d'aide
+   Longeur_Ligne : constant := 60;
+
+   --Contient l'aide pour une commande
+   type T_Type_Info_Commandes is
+      record
+         Info_Para : String(1..Longeur_Ligne); --Parametres des commandes
+         Info_Supp : String(1..Longeur_Ligne); --Decription des commandes
+      end record;
+
+   --Contient toute l'aide pour les commandes
+   type T_Commande_Aide is array (T_Commande'range) of T_Type_Info_Commandes;
+
+   Commande_Aide : constant T_Commande_Aide := 
+
+   (
+   Help =>
+   (" [<any commands>]  the stuff in brackets[] is not neccessary",
+    " Im So Happy Cuz I Found My Friends...                      "),
+
+    Info => 
+   ("                                                            ",
+    " View some informations about the current fractal           "),
+
+    Choose => 
+   (" [<number of a fractal in the list>]                        ",
+    " Select a fractal in the list and draw it                   "), 
+
+    Switch => 
+   ("                                                            ",
+    " Switch between Mandelbrot end Julia                        "), 
+
+    Zoom => 
+   (" [<Value of zoom>]                                          ",
+    " for zooming in the current fractal                         "), 
+
+    Zin => 
+   (" [<Factor>]                                                 ",
+    " Zoom in                                                    "), 
+
+    Zout => 
+   (" [<Factor>]                                                 ",
+    " Zoom out                                                   "),
+
+    Center => 
+   (" [<x> <y>]                                                  ",
+    " Center in a point of the fractal                           "), 
+
+    Iteration => 
+   (" <value>                                                    ",
+    " Set the number of iteration                                "), 
+
+    Limit => 
+   (" <value>                                                    ",
+    " Set the divergence limit                                   "), 
+
+    Cst => 
+   (" <a> <b>                                                    ",
+    " Set the complex number of 'c'  (only for Julia)            "), 
+
+    Angle => 
+   (" <value>                                                    ",
+    " Set the absolute value of angle                            "), 
+
+    Color => 
+   (" <number> (<r> <g> <b>)                                     ",
+    " Change one of colors. r, g and b are the channels          "),
+
+    Nbcolors =>
+   (" <number>                                                   ",
+    " Set numbers of colors                                      "), 
+
+    Random => 
+   ("                                                            ",
+    " Choice a randomize range of colors                         "), 
+
+    Drawcolors => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the drawing of the range of colors            "), 
+
+    Default => 
+   ("                                                            ",
+    " Reset the current fractal                                  "), 
+
+    Defaultlist => 
+   ("                                                            ",
+    " Reset all fractals in the list                             "),
+    Auto => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the autoredraw                                "),
+
+    Draw => 
+   ("                                                            ",
+    " Draw the fractal                                           "),
+
+    Anti => 
+   (" <1> ! <0>                                                  ",
+    " Set or unset the antialiasing                              "),
+
+    Render => 
+   (" <name of file> [<x> <y>]                                   ",
+    " Render the fractal in a bmp file. x y are the resolution   "),
+
+    Create => 
+   ("                                                            ",
+    " Create a new fractal in the list                           "),
+
+    Del => 
+   (" <number of a fractal in the list>                          ",
+    " View some informations about the curent fractal            "),
+
+    Save => 
+   (" <name of file>                                             ",
+    " Save the current fractal in a file                         "),
+
+    Load => 
+   (" <name of file>                                             ",
+    " Load a fractal from a file                                 "),
+
+    Savelist => 
+   (" <name of file>                                             ",
+    " Save the list of fractal in a file                         "),
+
+    Loadlist => 
+   (" <name of file>                                             ",
+    " Load a list of fractal from a file                         "),
+
+    About => 
+   ("                                                            ",
+    " ... and they're in my head                                 "),
+
+    Quit => 
+   ("                                                            ",
+    " Quit Power Fractal                                         ")
+    );
+    
+
+   -------------------------ERREURS------------------------
+   Erreur_Trop_Parametre   : exception; -- La commande n'as pas besoin de parametre
+   Erreur_Manque_Parametre : exception; -- La commande a besoin de parametre
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Verif_Extension                                                                  --
+   -- But     : Verifie si un string comporte une extension ou non, si non l'ajoute              --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier a modifier : Nom_Fichier                                     --
+   --           * L'extension du fichier       : Extension                                       --
+   --                                                                                            --
+   --  Return : * Le string verifie, et modifier si il faut                                      --
+   ------------------------------------------------------------------------------------------------
+   function Verif_Extension (Nom_Fichier : String; Extension : String) return String is
+
+      ---------------------------------------------------------------------------------------------
+      -- Nom     : Tout_Minuscule                                                                --
+      -- But     : Mettre tout les lettres d'un texte passe en parametre en minuscule            --
+      ---------------------------------------------------------------------------------------------
+      function Tout_Minuscule (Texte : in String) return String is
+         
+         --Une variable temporaire egal au string en entree
+         Texte_Tmp : String (Texte'range) := Texte; --Variable Temporaire De 'Texte'
+   
+         --Le decalage entre les minuscules est les majuscules
+         Decal_Min_Maj : constant := Character'Pos('a') - Character'Pos('A');
+   
+      begin --Tout_Minuscule
+         
+         --Boucle parcourant tout les caracteres de Texte_Tmp
+         for I in Texte_Tmp'First..Texte_Tmp'Last loop
+   
+            if Texte_Tmp(I) in 'A'..'Z' then --Si il tombe sur une majuscule alors
+               
+               --Convertie la majuscule en minuscule
+               Texte_Tmp(I) := Character'Val( Character'Pos(Texte(I)) + Decal_Min_Maj );   
+            end if;
+   
+         end loop;
+   
+         return Texte_Tmp; --Retourne la valeur modifie de Texte
+   
+      end Tout_Minuscule;
+      --Nom du fichier plus l'ajout de l'extension
+      Nom_Fichier_Ajout_Extension : String (1..Nom_Fichier'Length + Extension'Length);
+
+   begin --Verif_Extension
+
+      --Si la longueur du fichier est superieur a 4 (il y a la possibilite qu'il y ai l'extension)
+      --et que l'extension est correct alors renvois le nom du fichier sans rien modifier
+      if Nom_Fichier'Length > 4 and then 
+                           Tout_Minuscule(Nom_Fichier(Nom_Fichier'Last - 3 .. Nom_Fichier'Last)) =
+                           "." & Tout_Minuscule(Extension) then
+
+         return Nom_Fichier;
+      else --Sinon ajoute l'extension
+         return Nom_Fichier & "." & Tout_Minuscule(Extension);
+      end if;
+
+   end Verif_Extension;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Parametre                                                                        --
+   -- But     : Determine si une commande est suivie d'un ou plusieurs parametre                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  return : * Si un (des) parametre existe : type : boolean                                  --
+   ------------------------------------------------------------------------------------------------
+   function Parametre return Boolean is
+      Cara : Character;
+      Fin_Ligne : Boolean;
+   begin -- Parametre
+      -- Cherche un parametre
+      Look_Ahead(Cara, Fin_Ligne);
+      -- Tant que rencontre que des espace sur la ligne
+      while Cara = Espace and not End_Of_Line loop
+         Get(Cara);
+         Look_Ahead(Cara, Fin_Ligne);
+      end loop;
+      return not Fin_Ligne;
+   end Parametre;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit un mot entier de caractere d'une longueur max de 50                          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Un mot : type : T_Chaine                                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Chaine : out T_Chaine) is
+      Cara : Character;    -- Caractere temporaire
+      Fin_Ligne : Boolean; -- Si fin de ligne ou non
+   begin
+      Chaine.Longueur := 0;
+      Look_Ahead(Cara, Fin_Ligne);
+      -- Tant que le mot ou la ligne est pas fini 
+      while Cara /= Espace and not End_Of_Line loop
+         Get(Cara);
+         Chaine.Longueur := Chaine.Longueur + 1;
+         Chaine.Chaine(Chaine.Longueur) := Cara;
+         Look_Ahead(Cara, Fin_Ligne);
+      end loop;
+      
+   end Get;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit une couleur en RGB selon le format:  ( R G B )                               --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Ue couleur : type : T_Couleur                                                  --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Couleur : out T_Couleur) is
+      Cara : Character;
+      Fin_Ligne : Boolean;
+   begin -- Get
+   
+      if Parametre then
+         Get(Cara);
+         if Cara = '(' then 
+
+            -- Si existe lit chaque composante de la couleur
+            if Parametre then
+            Look_Ahead(Cara, Fin_Ligne);
+               Get(Couleur.R);
+            else
+               raise Data_Error;
+            end if;
+            if Parametre then
+               Get(Couleur.G);
+            else
+               raise Data_Error;
+            end if;
+            if Parametre then
+               Get(Couleur.B);
+            else
+               raise Data_Error;
+            end if;
+            
+            -- Toute les composante trouvee -> cherche la parenthese fermante
+            if Parametre then 
+               -- Trouve la parenthese fermante               
+               Get(Cara);
+               if Cara /= ')' then
+                  -- Pas de ')'
+                  raise Data_Error;
+               end if;
+            else
+               -- Plus rien apres les 3 composante donc pas de ')'
+               raise Data_Error;
+            end if;
+         else
+            -- Pas de '('
+            raise Data_Error;
+         end if;
+      else
+         -- Plus rien apres la commande
+         raise Erreur_Manque_Parametre;
+      end if;
+   end Get;
+
+     
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Get                                                                              --
+   -- But     : Lit un boolean entre au clavier (1 / 0)                                          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : (aucun)                                                                          --
+   --                                                                                            --
+   --  Out    : * Un booleen : type : boolean                                                    --
+   ------------------------------------------------------------------------------------------------
+   procedure Get (Flag : out Boolean) is
+      Tmp : Integer; -- Variable temporaire pour la lecture
+   begin -- Get
+      Get(Tmp);
+      Flag := Tmp = 1;
+      if  Tmp not in 0 .. 1 then
+         raise Data_Error;
+      end if;
+   end Get;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Console                                                                          --
+   -- But     : Gere une console avec commandes et parametre                                     --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * le prompt utilise dans la console                                              --
+   --                                                                                            --
+   --  In out : La liste des fractals                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Console(Liste : in out T_Liste_Fractals; Prompt : in String) is
+      Courant  : T_Lien := Fractal_Num(Liste, 1); -- Fractal courante de la liste
+  
+      Generateur_Composante : Generator; --Utilise pour tirer une composante au hasard
+
+      Commande : T_Commande;       -- La commande
+   
+      Facteur_Zoom : Long_Float;   -- facteur en parametre a zoom
+      Largeur : Integer;           -- Pour la resolution du BMP
+      Hauteur : Integer;           -- Pour la resolution du BMP
+      Nom     : T_Chaine;          -- Pour le nom du fichier BMP ou du POF
+      Couleur : T_Couleur;         -- Couleur (pour le changement de couleur)
+      Numero  : Positive;          -- Numero/nombre de la couleur ou de la fractale a selectionner
+      Long_Float_Tmp : Long_Float; -- Variable temporaire pour la saisie de 2 parametres long_float
+
+      Auto_Rafraichi : Boolean := True;   -- Si redessine a chaque changement de parametre
+      Fractal_Change : Boolean := False;  -- Si les parametres ont ete change par une commande
+      Couleur_Change : Boolean := False;  -- Si les couleurs ont change par une commande
+
+
+   begin
+      Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+      Power_Tools.Dessiner_Fractal(Courant.Fractal);
+
+      loop
+         begin
+
+            -- Saisie d'une commande correcte
+            loop
+               begin
+                  New_Line;
+                  Put(Prompt);
+                  Get(Commande);
+                  exit;
+               exception
+                  when Data_Error =>
+                     Skip_Line;
+                     New_Line;
+                     Put_Line(" Command unknown !");
+                     Put(" (");
+                     Put(T_Commande'First);
+                     Put_Line(" for details)");
+               end;
+            end loop;
+       
+         
+            case Commande is
+               -- Aide
+               when T_Commande'Val(0) =>
+                  if Parametre then 
+                     Get(Commande);
+                     Skip_Line;
+                     New_Line;
+                     Put(" ");
+                     Put(Commande);
+                     Put(Commande_Aide(Commande).Info_Para);
+                     New_Line;
+                     Put(Commande_Aide(Commande).Info_Supp);
+                     New_Line;
+
+                  else
+                     New_Line;               
+                     for I in T_Commande'range loop 
+                        Put(" ");  
+                        Put(I);
+                        Put(Commande_Aide(I).Info_Para);
+                        New_Line;            
+                     end loop;
+                  end if;
+                  
+
+               -- Info
+               when T_Commande'Val(1) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+   
+                  New_Line;
+                  Put(" ");
+                  Put(Courant.Fractal.Ensemble);
+                  New_Line;
+   
+                  Put(" Zoom              : ");
+                  Put(Courant.Fractal.Zoom,0, 6, 0);
+                  New_Line;
+            
+                  Put(" Divergence limit  : ");
+                  Put(Courant.Fractal.C_Diverge_Limite,0 ,6, 0);
+                  New_Line;
+               
+                  Put(" Iterations number : ");
+                  Put(Courant.Fractal.Nb_Iteration_Max, 0);
+                  New_Line;
+            
+                  Put(" Center            : (");
+                  Put(Courant.Fractal.Centre.X, 0,6,0);
+                  Put(", ");
+                  Put(Courant.Fractal.Centre.Y, 0,6,0);
+                  Put(")");
+                  New_Line;
+
+                  Put(" Angle             : ");
+                  Put(Courant.Fractal.Angle, 0, 6, 0);
+                  New_Line;
+
+            
+                  Put(" Antialiasing      : ");
+                  if Courant.Fractal.Antialiasing then
+                     Put("yes");
+                  else
+                     Put("no");
+                  end if;
+                  New_Line;
+                        
+                  if Courant.Fractal.Ensemble = Julia then
+                     Put(" Constant          : (");
+                     Put(Courant.Fractal.Cx, 0,6,0);
+                     Put(", ");
+                     Put(Courant.Fractal.Cy, 0,6,0);
+                     Put(")");
+                     New_Line;
+                  end if;
+
+                  Put(" Colors (");
+                  Put(Courant.Fractal.Nb_Couleur, 2);
+                  Put(")       :");
+                  for I in Courant.Fractal.Couleur'range loop                     
+                     Put(" (");
+                     Put(Courant.Fractal.Couleur(I).R, 3);
+                     Put(", ");
+                     Put(Courant.Fractal.Couleur(I).G, 3);
+                     Put(", ");
+                     Put(Courant.Fractal.Couleur(I).B, 3);
+                     Put(")");
+                     New_Line;
+                     Put("                    ");
+                  end loop;
+                  
+         
+               -- Choisir une fractal dans la liste
+               when T_Commande'Val(2) =>
+                  -- Si une seule fractale ne choisit pas
+                  if Nb_Fractals(Liste) > 1 then
+                     if Parametre then
+                        Get(Numero);
+                        Skip_Line;
+                        -- Si le numero existe: prends la fractal
+                        if Numero in 1 .. Nb_Fractals(Liste) then
+                           Courant := Fractal_Num(Liste, Numero);
+                           Fractal_Change:= True;
+                        else
+                           raise Data_Error;
+                        end if;
+                     else
+                        -- Aucun parametre: affiche le choix
+                        Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                        Fractal_Change:= True;
+                     end if;
+                  else
+                     
+                     New_Line;
+                     Put_Line("There is only one fractal !");
+                  end if;
+  
+
+               -- Echange entre les ensemblea
+               when T_Commande'Val(3) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  if Courant.Fractal.Ensemble = Julia then
+                     Courant.Fractal  := (Mandelbrot, Courant.Fractal.Nb_Couleur, 
+                                          Courant.Fractal.Nb_Iteration_Max, 
+                                          Courant.Fractal.C_Diverge_Limite, Courant.Fractal.Zoom, 
+                                          Courant.Fractal.Centre, Courant.Fractal.Angle, 
+                                          Courant.Fractal.Couleur, Courant.Fractal.Antialiasing, 
+                                          Courant.Fractal.Dessine_Degrade);                     
+                  else 
+                     Courant.Fractal  := (Julia, Courant.Fractal.Nb_Couleur, 
+                                          Courant.Fractal.Nb_Iteration_Max, 
+                                          Courant.Fractal.C_Diverge_Limite, Courant.Fractal.Zoom,
+                                          Courant.Fractal.Centre, Courant.Fractal.Angle,                     
+                                          Courant.Fractal.Couleur, Courant.Fractal.Antialiasing, 
+                                          Courant.Fractal.Dessine_Degrade, 
+                                          Fractal_Initial_Julia.Cx, Fractal_Initial_Julia.Cy);
+                  end if;
+                  Fractal_Change:= True;
+   
+  
+               -- Zoom
+               when T_Commande'Val(4) =>
+   
+                  -- si parametre trouve
+                  if Parametre then
+                     Get(Courant.Fractal.Zoom);
+   
+                     -- Le zoom ne depasse pas la limite inferieure
+                     if Courant.Fractal.Zoom < Zoom_Min then 
+                        Courant.Fractal.Zoom := Zoom_Min;
+                     end if;
+                     Fractal_Change := True;
+                  else
+                     Put_Line("Press ESC to return to console mode...");
+                     -- Si la fractal affichee n'est plus actuelle: la redessine
+                     if Fractal_Change then
+                        Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                        Fractal_Change := False;
+                        Couleur_Change := False;
+                     end if;
+                     Power_Tools.Zoom_Souris(Courant.Fractal);
+                  end if;
+                  Skip_Line;
+                        
+               -- Zoom avant
+               when T_Commande'Val(5) =>
+                  if Parametre then
+                     Get(Facteur_Zoom);
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom * Facteur_Zoom;
+                  else
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom * Facteur_Zin;
+                  end if;
+   
+                  -- Le zoom ne depasse pas la limite inferieure
+                  if Courant.Fractal.Zoom < Zoom_Min then 
+                     Courant.Fractal.Zoom := Zoom_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+   
+         
+               -- Zoom arriere
+               when T_Commande'Val(6) =>
+                  if Parametre then
+                     Get(Facteur_Zoom);
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom / Facteur_Zoom;
+                  else
+                     Courant.Fractal.Zoom := Courant.Fractal.Zoom / Facteur_Zout;
+                  end if;
+   
+                  -- Le zoom ne depasse pas la limite inferieure
+                  if Courant.Fractal.Zoom < Zoom_Min then 
+                     Courant.Fractal.Zoom := Zoom_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+   
+   
+               -- Centrer la fractal
+               when T_Commande'Val(7) =>
+   
+                  -- si parametre trouve
+                  if Parametre then
+                     Get(Long_Float_Tmp);
+                     if Parametre then 
+                        Get(Courant.Fractal.Centre.Y);
+                        Skip_Line;
+                        Courant.Fractal.Centre.X := Long_Float_Tmp;
+                        Fractal_Change := True;
+                     else   
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     Put_Line("Press ESC to return to console mode...");
+                     -- Si la fractal affichee n'est plus actuelle: la redessine
+                     if Fractal_Change then
+                        Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                        Fractal_Change := False;
+                        Couleur_Change := False;
+                     end if; 
+                     Power_Tools.Centrer(Courant.Fractal);
+                  end if;
+
+
+               -- Nombre d'iteration
+               when T_Commande'Val(8) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Nb_Iteration_Max);
+                  
+                  -- Le nb d'iteration ne depasse pas la limite inferieure
+                  if Courant.Fractal.Nb_Iteration_Max < Nb_Iteration_Min then
+                     Courant.Fractal.Nb_Iteration_Max := Nb_Iteration_Min;
+                  end if;
+                  Skip_Line;
+                  Fractal_Change := True;
+      
+   
+               -- Limite de divergence
+               when T_Commande'Val(9) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;   
+                  Get(Courant.Fractal.C_Diverge_Limite);
+                  Skip_Line;
+                  -- Limite la valeur 
+                  if Courant.Fractal.C_Diverge_Limite < 0.0 then
+                     Courant.Fractal.C_Diverge_Limite := 0.0;
+                  elsif Courant.Fractal.C_Diverge_Limite > 4.0 then
+                     Courant.Fractal.C_Diverge_Limite := 4.0;
+                  end if;                  
+                  Fractal_Change := True;
+
+      
+   
+               -- Constante pour le calcul de Julia
+               when T_Commande'Val(10) =>
+                  if Courant.Fractal.Ensemble = Julia then
+                     if Parametre then
+                        Get(Long_Float_Tmp);
+                     else
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                     if Parametre then
+                        Get(Courant.Fractal.Cy);
+                        Courant.Fractal.Cx := Long_Float_Tmp;
+                        Fractal_Change := True;
+                     else
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     New_Line;
+                     Put_Line(" Only with Julia set !");
+                  end if;
+
+
+               -- Rotation de la fractale
+               when T_Commande'Val(11) =>
+                  if Parametre then 
+                     Get(Courant.Fractal.Angle);
+                     Skip_Line;
+
+                     if Courant.Fractal.Angle > 0.0 then                        
+                        while Courant.Fractal.Angle not in 0.0 .. 360.0 loop
+                           Courant.Fractal.Angle := Courant.Fractal.Angle - 360.0;
+                        end loop;
+                     else
+                        while Courant.Fractal.Angle not in 0.0 .. 360.0 loop
+                           Courant.Fractal.Angle := Courant.Fractal.Angle + 360.0;
+                        end loop;
+                     end if;
+
+                     Fractal_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+   
+               -- Couleur par numero de la couleur
+               when T_Commande'Val(12) =>
+                  if Parametre then
+                     Get(Numero);
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+                  -- Si le numero ne corespond a rien: erreur
+                  if Numero not in Courant.Fractal.Couleur'range then
+                     raise Data_Error;
+                  end if;
+
+                  if Parametre then
+                     Get(Courant.Fractal.Couleur(Numero));
+                     Couleur_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Le nombre de couleur definie du degrade
+               when T_Commande'Val(13) =>
+                  if Parametre then
+                     Get(Numero);
+                     Skip_Line;
+                     if Numero < 2 then 
+                        Numero := 2;
+                     elsif Numero > Nb_Couleur_Max then
+                        Numero := Nb_Couleur_Max;
+                     end if;
+                     -- Devient le nombre de couleur a ajouter (relatif, plus absolu)
+                     Numero := Numero - Courant.Fractal.Nb_Couleur;
+
+                     -- Redefinit la fractal avec le bon nombre de couleur
+                     if Courant.Fractal.Ensemble = Mandelbrot then
+                        Courant.Fractal  := (Mandelbrot, Courant.Fractal.Nb_Couleur + Numero, 
+                                             Courant.Fractal.Nb_Iteration_Max,
+                                             Courant.Fractal.C_Diverge_Limite,
+                                             Courant.Fractal.Zoom, Courant.Fractal.Centre, 
+                                             Courant.Fractal.Angle, Courant.Fractal.Couleur(
+                                             Courant.Fractal.Couleur'First .. 
+                                             Courant.Fractal.Nb_Couleur + Numero),
+                                             Courant.Fractal.Antialiasing, 
+                                             Courant.Fractal.Dessine_Degrade);  
+                     else 
+                        Courant.Fractal  := (Julia, Courant.Fractal.Nb_Couleur + Numero, 
+                                             Courant.Fractal.Nb_Iteration_Max,
+                                             Courant.Fractal.C_Diverge_Limite,
+                                             Courant.Fractal.Zoom, Courant.Fractal.Centre, 
+                                             Courant.Fractal.Angle, Courant.Fractal.Couleur(
+                                             Courant.Fractal.Couleur'First .. 
+                                             Courant.Fractal.Nb_Couleur + Numero),
+                                             Courant.Fractal.Antialiasing, 
+                                             Courant.Fractal.Dessine_Degrade,       
+                                             Courant.Fractal.Cx, Courant.Fractal.Cy);
+                     end if;
+
+                     -- Quand le nouveau nb de couleur est plus grand: repete la derniere
+                     -- couleur connue dans le reste des couleurs
+                     Courant.Fractal.Couleur(Courant.Fractal.Nb_Couleur - Numero + 1 .. 
+                     Courant.Fractal.Couleur'Last) := (others => 
+                     Courant.Fractal.Couleur(Courant.Fractal.Nb_Couleur - Numero));
+                     Couleur_Change := True;
+                  else
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Tire les couleurs au hasard
+               when T_Commande'Val(14) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Reset(Generateur_Composante);
+                     -- Tire au hasard chaque couleur de la composante
+                     for I in Courant.Fractal.Couleur'range loop
+                        Courant.Fractal.Couleur(I) := (Random(Generateur_Composante),
+                        Random(Generateur_Composante), Random(Generateur_Composante));
+                     end loop;
+                     Couleur_Change := True;
+                  end if;
+
+
+               -- Si dessine le degrade de couleur
+               when T_Commande'Val(15) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Dessine_Degrade);
+                  Skip_Line;
+                  Couleur_Change := True;
+         
+
+               -- Reinitialise tous les parametres
+               when T_Commande'Val(16) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  -- Inialise selon l'ensebmle de la fractal
+                  if Courant.Fractal.Ensemble = Julia then
+                     Courant.Fractal := Fractal_Initial_Julia;
+                  else
+                     Courant.Fractal := Fractal_Initial_Mandel;
+                  end if;
+                  Fractal_Change := True;
+                  
+               
+               -- Reprends la liste par defaut
+               when T_Commande'Val(17) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Liste := Liste_Defaut;
+                     Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                     Fractal_Change:= True;
+                  end if;
+
+
+               -- Rafraichissement automatique
+               when T_Commande'Val(18) =>
+                  if not Parametre then 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Auto_Rafraichi);
+                  Skip_Line;
+   
+
+               -- Dessine la fractale
+               when T_Commande'Val(19) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Power_Tools.Dessiner_Fractal(Courant.Fractal);
+                  Fractal_Change := False;
+                  Couleur_Change := False;
+   
+
+               -- Antialiasing
+               when T_Commande'Val(20) =>
+                  if not Parametre then 
+                     -- Aucun parametre: erreur
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  Get(Courant.Fractal.Antialiasing);
+                  Skip_Line;
+                  Fractal_Change := True;
+
+
+               -- Rendre dans un fichier BMP
+               when T_Commande'Val(21) =>
+                  if Parametre then
+                     -- Prends le premier parametre
+                     Get(Nom);
+                  else
+                     -- Aucun parametre: erreur
+                     raise Erreur_Manque_Parametre;
+                  end if;
+                  
+                  if Parametre then
+                     -- Prends le 2eme parametre
+                     Get(Largeur);
+                     if Parametre then
+                        -- Prends 3eme parametre et balance le reste
+                        Get(Hauteur);
+                        Skip_Line;
+
+                        -- Ajuste la resolution a min 5 et max 10'000
+                        if Largeur < 5 then
+                           Largeur := 5;
+                        elsif Largeur > 10000 then
+                           Largeur := 10000;
+                        elsif Hauteur < 5 then
+                           Hauteur := 5;
+                        elsif Hauteur > 10000 then
+                           Hauteur := 10000;
+                        end if;
+
+                        -- 3 parametres lu correctement: crée le BMP avec la resolution demandée   
+                        Power_Io.Rendre_Bmp (Courant.Fractal, 
+                           Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "BMP"),
+                           Largeur, Hauteur);
+                     else
+                        -- 2 parametres
+                        raise Erreur_Manque_Parametre;
+                     end if;
+                  else
+                     -- 1 seul parametre: cree le BMP avec valeur par defaut
+                     Power_Io.Rendre_Bmp ( Courant.Fractal,
+                     Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "BMP"));
+                  end if;
+
+   
+               -- Cree une nouvelle fractal 
+               when T_Commande'Val(22) =>
+                  if Parametre then
+                     raise Erreur_Trop_Parametre;
+                  else
+                     Ajouter(Liste, Fractal_Initial_Mandel);
+                     Courant := Fractal_Num(Liste, Nb_Fractals(Liste));
+                     Fractal_Change:= True;
+                  end if;
+             
+
+               -- Supprime une fractal de la liste
+               when T_Commande'Val(23) =>
+                  if Nb_Fractals(Liste) > 1 then
+                     if Parametre then 
+                        Get(Numero);
+                        Skip_Line;
+                        -- Si la fractal existe
+                        if Numero in 1 .. Nb_Fractals(Liste) then
+   
+                           --Si veut effacer la fractal courante: change la courante
+                           if Courant = Fractal_Num(Liste, Numero) and Numero > 1 then
+                              Courant := Fractal_Num(Liste, Numero - 1);
+                           Fractal_Change := True;
+                           elsif Courant = Fractal_Num(Liste, Numero) and Numero = 1 then
+                              Courant := Fractal_Num(Liste, 2);
+                           Fractal_Change := True;
+                           end if;
+   
+                           Effacer(Liste, Numero);
+                        else
+                           raise Data_Error;
+                        end if;
+                     -- Si aucun parametre
+                     else
+                        Numero := Choix_Mosaic(Liste);
+                        --Si veut effacer la fractal courante: change la courante
+                        if Courant = Fractal_Num(Liste, Numero) and Numero > 1 then
+                           Courant := Fractal_Num(Liste, Numero - 1);
+                        elsif Courant = Fractal_Num(Liste, Numero) and Numero = 1 then
+                           Courant := Fractal_Num(Liste, 2);
+                        end if;
+                        Effacer(Liste, Numero);
+                        Fractal_Change := True;
+                     end if;
+                  -- Si veux effacer la derniere fractal
+                  else
+                     skip_Line;
+                     New_Line;
+                     Put_Line("The last fractal can't be deleted !");
+                  end if;
+
+
+
+               -- Sauve les donnee de la fractale
+               when T_Commande'Val(24) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;
+                     Power_Io.Enregistrer_Fractal(Verif_Extension(Nom.Chaine(1 .. Nom.Longueur),
+                     "JOF"), Courant.Fractal);
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Charge les donnee de la fractale
+               when T_Commande'Val(25) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;                     
+                     -- Ajoute a la liste et la prend comme fractale courante
+                     Ajouter(Liste, Power_Io.Charger_Fractal
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "JOF")));
+
+                     Courant := Fractal_Num(Liste, Nb_Fractals(Liste));
+                     Fractal_Change := True;
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+   
+
+
+               -- Sauve les donnee de toute la liste
+               when T_Commande'Val(26) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;
+                     Power_Io.Enregistrer_Liste
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "LOF"), Liste);
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- Charge les donnee de toute la liste
+               when T_Commande'Val(27) =>
+                  if Parametre then
+                     Get(Nom);
+                     Skip_Line;                     
+                     Power_Io.Charger_Liste
+                     (Verif_Extension(Nom.Chaine(1 .. Nom.Longueur), "LOF"), Liste);
+                     
+                     Courant := Fractal_Num(Liste, Choix_Mosaic(Liste));
+                     Fractal_Change := True;
+                  else 
+                     raise Erreur_Manque_Parametre;
+                  end if;
+
+
+               -- A propos du programme
+               when T_Commande'Val(28) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Skip_Line;                  
+                  Put_Line("           ____    ___ __        __ _____  ____");
+                  Put_Line("          |  _ \  / _ \\ \      / /| ____||  _ \ ");
+                  Put_Line("          | |_) || | | |\ \ /\ / / |  _|  | |_) |");
+                  Put_Line("          |  __/ | |_| | \ V  V /  | |___ |  _ < "); 
+                  Put_Line("          |_|     \___/   \_/\_/   |_____||_| \_\"); 
+                  New_Line;
+                  Put_Line("           _____  ____      _     ____  _____   _     _");
+                  Put_Line("          |  ___||  _ \    / \   / ___||_   _| / \   | |");
+                  Put_Line("          | |_   | |_) |  / _ \ | |      | |  / _ \  | |");
+                  Put_Line("          |  _|  |  _ <  / ___ \| |___   | | / ___ \ | |__");
+                  Put_Line("          |_|    |_| \_\/_/   \_\\____|  |_|/_/   \_\|____|");
+                  Put_Line("                                           V 1.0");
+                  Put_Line("                by G.Burri and A.Crivelli");
+                  New_Line;     
+                  Put_Line("           e-mail : greg.burri@net2000.ch");
+                  Put_Line("                    powerkiki@urbanet.ch");
+                  New_Line;     
+                  Put_Line("           Url    : http://pifou.servehttp.com/powerfractal");
+
+
+               -- Quitte le programme
+               when T_Commande'Val(29) =>
+                  if Parametre then 
+                     raise Erreur_Trop_Parametre;
+                  end if;
+                  Skip_Line;
+                  exit;
+
+
+            end case;
+   
+            -- En mode auto: redessine la fractal si un ou plusieurs parametres ont change
+            if Auto_Rafraichi and Fractal_Change then
+               Power_Tools.Dessiner_Fractal(Courant.Fractal);
+               Fractal_Change := False;
+               Couleur_Change := False;
+            -- En mode auto: redessine la fractal si les couleurs ont changé
+            elsif Auto_Rafraichi and Couleur_Change then
+               Power_Tools.Rafraichir_Couleur(Courant.Fractal);
+               Couleur_Change := False;
+            end if;
+   
+         
+         exception 
+            when Erreur_Trop_Parametre =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Too much parameters !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+   
+            when Erreur_Manque_Parametre =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Parameter(s) missing !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+   
+            when Data_Error =>
+               Skip_Line;
+               New_Line;
+               Put_Line(" Bad parameter(s) !");
+               Put(" (");
+               Put(T_Commande'First);
+               Put_Line(" for details)");
+
+            when Power_Io.Erreur_Fichier =>
+               New_Line;
+               Put_Line(" File not found !");
+
+         end;
+      end loop;
+   end Console;
+
+
+end Power_Console;
diff --git a/Src/Power_Console.ads b/Src/Power_Console.ads
new file mode 100644 (file)
index 0000000..c034843
--- /dev/null
@@ -0,0 +1,30 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_console / fait partie du programme Power Fractal                           --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour mettre a disposition de l'utilisateur les            --
+--           differentes fonction du programme                                                --
+------------------------------------------------------------------------------------------------
+
+
+with Power_Types; use  Power_Types;
+with Power_List; use Power_List;
+
+package  Power_Console is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Console                                                                          --
+   -- But     : Gere une console avec commandes et parametre                                     --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * le prompt utilise dans la console                                              --
+   --                                                                                            --
+   --  In out : La liste des fractals                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Console(Liste : in out T_Liste_Fractals; Prompt : in String);
+
+
+
+
+end Power_Console;
+
diff --git a/Src/Power_Draw.adb b/Src/Power_Draw.adb
new file mode 100644 (file)
index 0000000..18d546b
--- /dev/null
@@ -0,0 +1,201 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Draw / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de bas niveau pour le dessin a l'ecran.                                   --
+--           Comme dessiner un carre, une partie du tampon etc..                              --
+------------------------------------------------------------------------------------------------
+
+with Spider; use Spider; 
+with Spider.Draw; use Spider.Draw; --Enfant de spider Pour gerer la couleur et le dessin 
+with Power_Types; use Power_Types;
+with Power_Colors;
+
+package body Power_Draw is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Point_Fractal                                                             --
+   -- But     : Dessiner un point de la fractal a l'ecran depuis la Matrice Tampon               --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees x et y du point                                                --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Point_Fractal(X, Y : Natural) is
+      Color_Back : Spider.Draw.Tcolor; --La couleur au format spider
+   begin -- Dessin_Point_Fractal
+
+      --Copie les composantes RGB du point dans la variable au format spider
+      Color_Back.R := Integer(Matrice_Tampon_Ecran(X, Y).R);
+      Color_Back.G := Integer(Matrice_Tampon_Ecran(X, Y).G);
+      Color_Back.B := Integer(Matrice_Tampon_Ecran(X, Y).b);
+      --
+
+      Set_Color_Pen(Color_Back); --Defini la couleur du pinceau
+      Move_To(X,Y);              --Se deplace au coordonnees du point
+      Put_Pixel;                 --Affiche une pixel
+
+   end Dessin_Point_Fractal;
+      
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Boite                                                                            --
+   -- But     : dessiner un rectangle vide a l'ecran                                             --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees du point superieur gauche : X1, Y1                             --
+   --           * les coordonnees du point inferieur droit  : X2, Y2                             -- 
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Boite (X1, Y1, X2, Y2 : Natural; Couleur : Spider.Draw.Tcolor) is
+
+   begin --Boite
+
+
+      Spider.Draw.Set_Color_Pen(Couleur);  
+      --Dessine quatre traits pour former le rectangle
+      Line_To(X1, Y1, X2, Y1);
+      Line_To(X1, Y2, X2, Y2);
+      
+      
+      Line_To(X1, Y1, X1, Y2);
+      Line_To(X2, Y1, X2, Y2);
+      --
+
+   end Boite;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Hori                                                               --
+   -- But     : rafraichire une ligne horizontale de l'ecran depuis le tampon                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : X1                                       --
+   --           * La coordonnee de la fin             : X2                                       --
+   --           * La coordonnee de positionement en Y : Y                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Hori (X1, X2, Y : Natural) is
+
+      --Variable temporaire
+      X1_Tmp : Natural := X1;
+      X2_Tmp : Natural := X2;
+      --
+
+      Tmp : Natural; --Pour le swap de valeurs
+
+   begin --Ligne_Matrice_hori
+
+      --Si X1 est plus grand que X2 alors permute leur valeur
+      if X1_Tmp > X2_Tmp then
+         Tmp := X1_Tmp;
+         X1_Tmp := X2_Tmp;
+         X2_Tmp := Tmp;
+      end if;
+
+      --Boucle pour chaque point a dessiner
+      for I in X1_Tmp..X2_Tmp loop
+            Dessin_Point_Fractal(I, Y); --Affiche le point
+       end loop;
+
+   end Ligne_Matrice_Hori;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Vert                                                               --
+   -- But     : rafraichire une ligne verticale de l'ecran depuis le tampon                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : Y1                                       --
+   --           * La coordonnee de la fin             : Y2                                       --
+   --           * La coordonnee de positionement en X : X                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Vert (Y1, Y2, X : Natural) is
+
+      --Variable temporaire
+      Y1_Tmp : Natural := Y1;
+      Y2_Tmp : Natural := Y2;
+      Tmp : Natural; --Pour le swap de valeurs
+      --
+
+   begin --Ligne_Matrice_hori
+
+      --Si Y1 est plus grand que Y2 alors permute leur valeur
+      if Y1_Tmp > Y2_Tmp then
+         Tmp := Y1_Tmp;
+         Y1_Tmp := Y2_Tmp;
+         Y2_Tmp := Tmp;
+      end if;
+      
+      --Boucle pour chaque point a dessiner
+      for I in Y1_Tmp..Y2_Tmp loop
+            Dessin_Point_Fractal(X, I);
+      end loop;
+
+   end Ligne_Matrice_Vert;
+
+
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Croix                                                                     --
+   -- But     : dessiner une petite croix sur l'ecran                                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : Les coordonnees de la croix : X et Y                                             --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Croix (X, Y : Natural) is 
+      Color_Back : Spider.Draw.Tcolor; --La couleur au format spider
+   begin --Dessin_croix
+
+      --Si la croix peut-etre dessine (il faut tenir compte de son rayon : Rayon_Ext_Croix)
+      if X in 0 + Rayon_Ext_Croix..Largeur_Ecran - Rayon_Ext_Croix
+         and Y in 0 + Rayon_Ext_Croix ..Hauteur_Ecran - Rayon_Ext_Croix then
+         
+         --Copie les composantes RGB du point dans la variable au format spider
+         Color_Back.R := Integer(Matrice_Tampon_Ecran(X, Y).R);
+         Color_Back.G := Integer(Matrice_Tampon_Ecran(X, Y).G);
+         Color_Back.B := Integer(Matrice_Tampon_Ecran(X, Y).B);
+         --
+   
+         Power_Colors.Inverse_Couleur(Color_Back); --Inverse la couleur
+
+         Set_Color_Pen(Color_Back);   --Defini la couleur du pinceau
+
+         --Trace la croix en fonction de la constante du rayon interne : Rayon_Int_Croix
+         --et de la constante du rayon interne : Rayon_Int_Croix
+         Line_To(X - Rayon_Ext_Croix ,Y , X - Rayon_Int_Croix , Y);   
+         Line_To(X + Rayon_Ext_Croix ,Y , X + Rayon_Int_Croix , Y);        
+         Line_To(X ,Y - Rayon_Ext_Croix , X , Y - Rayon_Int_Croix);          
+         Line_To(X ,Y + Rayon_Ext_Croix , X , Y + Rayon_Int_Croix);
+         --
+      end if;
+      
+   end Dessin_Croix;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Efface_Croix                                                                     --
+   -- But     : Effacer la croix qui a au paravant ete dessine en X, Y                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les coordonnees de la croix a effacer  : X, Y                                  --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Efface_Croix (X, Y : Natural) is
+   begin -- Efface_Croix
+
+      --Si le point xy est un point ou une croix a put etre dessine
+      if X in 0 + Rayon_Ext_Croix..Largeur_Ecran - Rayon_Ext_Croix and Y in 0
+      + Rayon_Ext_Croix ..Hauteur_Ecran - Rayon_Ext_Croix then
+
+         --Efface la croix, en dessinant par dessus une nouvelle croix mais par rapport au tampon
+         Ligne_Matrice_Hori(X - Rayon_Ext_Croix, X - Rayon_Int_Croix, Y);
+         Ligne_Matrice_Hori(X + Rayon_Ext_Croix, X + Rayon_Int_Croix, Y);
+         Ligne_Matrice_Vert(Y - Rayon_Ext_Croix, Y - Rayon_Int_Croix, X);
+         Ligne_Matrice_Vert(Y + Rayon_Ext_Croix, Y + Rayon_Int_Croix, X);
+         --
+
+      end if;
+   end Efface_Croix;
+
+end Power_Draw;
diff --git a/Src/Power_Draw.ads b/Src/Power_Draw.ads
new file mode 100644 (file)
index 0000000..5300618
--- /dev/null
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Draw / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de bas niveau pour le dessin a l'ecran.                                   --
+--           Comme dessiner un carre, une partie du tampon etc..                              --
+------------------------------------------------------------------------------------------------
+
+with Spider.Draw;
+
+package Power_Draw is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Boite                                                                            --
+   -- But     : dessiner un rectangle vide a l'ecran                                             --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * les coordonnees du point superieur gauche : X1, Y1                             --
+   --           * les coordonnees du point inferieur droit  : X2, Y2                             -- 
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Boite (X1, Y1, X2, Y2 : Natural; Couleur : Spider.Draw.Tcolor);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Hori                                                               --
+   -- But     : rafraichire une ligne horizontale de l'ecran depuis le tampon                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : X1                                       --
+   --           * La coordonnee de la fin             : X2                                       --
+   --           * La coordonnee de positionement en Y : Y                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Hori (X1, X2, Y : Natural);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ligne_Matrice_Vert                                                               --
+   -- But     : rafraichire une ligne verticale de l'ecran depuis le tampon                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La coordonnee de depart             : Y1                                       --
+   --           * La coordonnee de la fin             : Y2                                       --
+   --           * La coordonnee de positionement en X : X                                        --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Ligne_Matrice_Vert (Y1, Y2, X : Natural);
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessin_Croix                                                                     --
+   -- But     : dessiner une petite croix sur l'ecran                                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : Les coordonnees de la croix : X et Y                                             --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessin_Croix (X, Y : Natural);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Efface_Croix                                                                     --
+   -- But     : Effacer la croix qui a au paravant ete dessine en X, Y                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les coordonnees de la croix a effacer  : X, Y                                  --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Efface_Croix (X, Y : Natural);
+
+end Power_Draw;
\ No newline at end of file
diff --git a/Src/Power_Fractal.PRJ b/Src/Power_Fractal.PRJ
new file mode 100644 (file)
index 0000000..7ba5292
Binary files /dev/null and b/Src/Power_Fractal.PRJ differ
diff --git a/Src/Power_List.adb b/Src/Power_List.adb
new file mode 100644 (file)
index 0000000..ea1bda7
--- /dev/null
@@ -0,0 +1,226 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_List / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils pour creer et gerer des liste de fractals                                 --
+------------------------------------------------------------------------------------------------
+
+with Power_Types; use Power_Types;
+with Ada.Unchecked_Deallocation;
+
+package body Power_List is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ajouter                                                                          --
+   -- But     : Ajouter une fractal a la suite de la liste                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * La Fractal A Ajouter                                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Ajouter (Liste_Fractals : in out T_Liste_Fractals; Fractal : Cara_Fractal) is
+
+      --Pour pouvoir parcourir la liste
+      Pointeur : T_Lien := Liste_Fractals.Tete;
+   
+   begin --Ajouter
+
+      if Liste_Fractals.Tete = null then
+         
+         Liste_Fractals.Tete := new T_Fractal'(Fractal, null);
+   
+      else
+
+         while Pointeur.Suiv /= null loop
+            Pointeur := Pointeur.Suiv;
+         end loop;
+   
+         Pointeur.Suiv := new T_Fractal'(Fractal, null);
+
+      end if;
+
+      Liste_Fractals.Nb_Fractals := Liste_Fractals.Nb_Fractals  + 1;
+
+   end Ajouter;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Effacer                                                                          --
+   -- But     : Effacer une fractal de la liste                                                  --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a effacer : Num                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Effacer (Liste_Fractals : in out T_Liste_Fractals; Num : Natural) is
+
+      --Pour pouvoir parcourir la liste
+      Pointeur : T_Lien := Liste_Fractals.Tete;
+      Pointeur_Avant : T_Lien :=  Liste_Fractals.Tete;
+
+      procedure Liberer is new Ada.Unchecked_Deallocation ( T_Fractal , T_Lien);
+
+   begin --Effacer
+
+      --Si la liste ne comporte qu'un seul element alors propage une erreur
+      if Liste_Fractals.Nb_Fractals = 1 then
+         raise Liste_Une_Fractal;
+      end if;
+
+      --Si l'element a supprimer est le premier de la liste alors
+      if Num = 1 then
+         Liste_Fractals.Tete := Liste_Fractals.Tete.Suiv; --La tete pointe sur le deuxieme element
+         Liberer(Pointeur);
+      else
+         
+         --Pointeur pointe sur le deuxieme element de la liste
+         Pointeur := Liste_Fractals.Tete.Suiv;
+
+         --Cherche l'element numero 'num'
+         for I in 3..Num loop
+            
+            --Decale les pointeurs
+            Pointeur_Avant := Pointeur;
+            Pointeur := Pointeur.Suiv;
+            --
+
+            --Si pas trouve alors propage une erreur
+            if Pointeur = null then raise Fractal_Inexistante; end if; 
+
+         end loop;         
+
+         Pointeur_Avant.Suiv := Pointeur.Suiv; --Refais le lien en sautant l'element a supprimer
+         Liberer(Pointeur); --Efface de la memoire l'element a supprimer
+
+      end if;
+
+      --Un element a ete enleve :
+      Liste_Fractals.Nb_Fractals := Liste_Fractals.Nb_Fractals - 1; 
+
+   end Effacer;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Fractal_Num                                                                      --
+   -- But     : Retourner un pointeur sur la fractal correspondante a un numeros                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a chercher : Num                                      --
+   --                                                                                            --
+   --  return : * Le pointeur sur La fractal correspondante au numero                            --
+   ------------------------------------------------------------------------------------------------
+   function Fractal_Num (Liste_Fractals :  T_Liste_Fractals;  Num : Natural) return T_Lien is
+
+      Pointeur : T_Lien := Liste_Fractals.Tete;      --Pour pouvoir parcourir la liste
+
+   begin --Fractal_Num
+
+      for I in 2..Num loop
+
+         --Si pas trouve alors propage une erreur
+         if Pointeur = null then raise Fractal_Inexistante; end if;         
+         Pointeur := Pointeur.Suiv; --Decale le pointeur
+
+      end loop;
+    
+      return Pointeur; --Retourne la fractal trouvee
+
+   end Fractal_Num;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Vider_Liste                                                                      --
+   -- But     : vider completement la liste des fractals                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a vider                                                   --
+   ------------------------------------------------------------------------------------------------
+   procedure Vider_Liste(Liste_Fractals : in out T_Liste_Fractals) is
+
+      Pointeur : T_Lien;      --Pour pouvoir parcourir la liste
+      procedure Liberer is new Ada.Unchecked_Deallocation ( T_Fractal , T_Lien);
+
+   begin --Vider_Liste
+
+      --Efface tout les elements de la liste
+      while Liste_Fractals.Tete /= null loop
+         Pointeur := Liste_Fractals.Tete;
+         Liste_Fractals.Tete := Liste_Fractals.Tete.Suiv;
+         Liberer (Pointeur);
+      end loop;      
+   
+      Liste_Fractals.Nb_Fractals := 0;
+
+   end Vider_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Liste_Defaut                                                                     --
+   -- But     : Mettre dans la liste en parametre des fractals d'exemple                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a remplir                                                 --
+   ------------------------------------------------------------------------------------------------
+   function Liste_Defaut return T_Liste_Fractals is
+      Liste : T_Liste_Fractals;
+
+   begin --Liste_Defaut
+
+      --Les fractales par defaut
+      Ajouter(Liste, Fractal_Initial_Mandel);
+      Ajouter(Liste, Fractal_Initial_Julia);
+
+   
+      --D'autre fractal exemple
+      Ajouter(Liste, (Mandelbrot, 4, 30, 4.0, 1.0/4.0,       (-0.6, 0.0),  60.0, 
+                     (  (2,203,253),     (0,0,255),  (255,255,0),     (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      40, 4.0, 1.0/4.0,        (0.0, 0.0), -40.0,
+                     (      (0,0,0),   (247,91,43), (209,207,30),  (255,12,0) ),
+                     False, False, -0.277, 0.968));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 70, 4.0, 1.0/4.0,       (-0.6, 0.0), -90.0, 
+                     ((180,200,255),   (200,250,0),    (0,0,255),   (0,0,140) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      40, 4.0, 1.0/4.0,        (0.0, 0.0),   0.0, 
+                     (    (255,0,0),     (0,255,0),    (0,0,255), (255,255,0) ),
+                     False, False, 0.4, 0.02));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 33, 4.0, 87.0634,  (0.4147, 0.1589), -46.0, 
+                     (      (0,0,0),     (0,255,0),   (0,0,255),      (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      30, 1.2, 1.0/4.0,        (0.0, 0.0),   0.0, 
+                     ( (237,89,173), (138,164,237),   (0,0,255),   (22,23,23) ),
+                     False, False, 0.44, 0.2));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 180, 3.2, 10.2903,    (-1.761, -0.0), -26.0, 
+                     (      (0,0,0),     (0,255,0), (255,20,20),      (0,0,0) ),
+                     False, False));
+   
+      Ajouter(Liste, (Julia, 4,      80, 4.0, 1.0/4.0,        (0.0, 0.0),  10.0, 
+                     (    (255,0,0),     (0,255,0),   (0,0,255),  (255,255,0) ),
+                     False, False, -0.757, -0.08));
+   
+      Ajouter(Liste, (Mandelbrot, 4, 50, 2.3, 1.0/4.0,       (-0.6, 0.0), 180.0, 
+                     (    (0,100,0),     (34,55,0),   (0,0,255),   (0,32,244) ),
+                     False, False));
+
+      Ajouter(Liste, (Julia, 4,      50, 4.0,   1.026, (-0.3471, 0.4628),   0.0, 
+                     (    (255,0,0),     (0,255,0),   (0,0,255),  (255,255,0) ),
+                     False, False, 0.44, -0.14));
+
+      return Liste;
+
+       end Liste_Defaut;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nb_Fractals                                                                                --
+   ------------------------------------------------------------------------------------------------
+   function Nb_Fractals (Liste_Fractals : in T_Liste_Fractals) return Natural is
+
+   begin --Nb_Fractals
+
+      return Liste_Fractals.Nb_Fractals;
+
+   end Nb_Fractals;
+
+end Power_List;
\ No newline at end of file
diff --git a/Src/Power_List.ads b/Src/Power_List.ads
new file mode 100644 (file)
index 0000000..071acc9
--- /dev/null
@@ -0,0 +1,68 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_List / fait partie du programme Power Fractal                              --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils pour creer et gerer des liste de fractals                                 --
+------------------------------------------------------------------------------------------------
+
+with Power_Types; use Power_Types;
+
+package Power_List is
+
+   --Les exceptions
+   Liste_Une_Fractal : exception;
+   Fractal_Inexistante : exception;
+   --
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Ajouter                                                                          --
+   -- But     : Ajouter une fractal a la suite de la liste                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La Fractal A Ajouter                                                           --
+   --  In out : * La liste de fractals                                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Ajouter (Liste_Fractals : in out T_Liste_Fractals; Fractal : Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Effacer                                                                          --
+   -- But     : Effacer une fractal de la liste                                                  --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a effacer : Num                                       --
+   ------------------------------------------------------------------------------------------------
+   procedure Effacer (Liste_Fractals : in out T_Liste_Fractals; Num : Natural);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Fractal_Num                                                                      --
+   -- But     : Retourner un pointeur sur la fractal correspondante a un numeros                 --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste de fractals                                                           --
+   --           * Le numeros de la fractal a chercher : Num                                      --
+   --                                                                                            --
+   --  return : * Le pointeur sur La fractal correspondante au numero                            --
+   ------------------------------------------------------------------------------------------------
+   function Fractal_Num (Liste_Fractals :  T_Liste_Fractals;  Num : Natural) return T_Lien;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Vider_Liste                                                                      --
+   -- But     : vider completement la liste des fractals                                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a vider                                                   --
+   ------------------------------------------------------------------------------------------------
+   procedure Vider_Liste(Liste_Fractals : in out T_Liste_Fractals);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Liste_Defaut                                                                     --
+   -- But     : Mettre dans la liste en parametre des fractals d'exemple                         --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In-out : * La liste de fractals a remplir                                                 --
+   ------------------------------------------------------------------------------------------------
+   function Liste_Defaut return T_Liste_Fractals;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nb_Fractals                                                                                --
+   ------------------------------------------------------------------------------------------------
+   function Nb_Fractals (Liste_Fractals : in T_Liste_Fractals) return Natural;
+
+end Power_List;
diff --git a/Src/Power_Tools.adb b/Src/Power_Tools.adb
new file mode 100644 (file)
index 0000000..e4b09fc
--- /dev/null
@@ -0,0 +1,691 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Tools / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour le tracage, le recadrage et le centrage              --
+--           sur la fractal a l'Ecran.                                                        --
+------------------------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Power_Calculator;
+with Power_Colors;
+with Power_Draw;  use Power_Draw;
+
+with Spider;
+with Spider.Draw;
+with Spider.User;  use Spider.User; --Enfant gerant la souris et le clavier
+
+with Power_List;
+
+with Ada.Numerics; use Ada.Numerics;
+with Ada.Numerics.Generic_Elementary_Functions;
+
+
+package body Power_Tools is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessiner_Fractal                                                                 --
+   -- But     : Dessiner la fracal a l'ecran                                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessiner_Fractal (Fractal : in Cara_Fractal; X, Y : Natural := 0;
+                               Largeur_Zone : Natural := Largeur_Ecran;
+                               Hauteur_Zone : Natural := Hauteur_Ecran) is
+
+      use Power_Calculator;
+      use Power_Colors;
+
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le deegrade de couleur
+
+     
+      -------------------------------------------tests----------------------------------------
+       --2 si la matrice doit etre calcule quatre fois plus grande sinon 1
+      Quadruple : Natural := Boolean'Pos(Fractal.Antialiasing) + 1;   
+
+      --les dimensions de la zone de calcul, elles sont double si l'antialiasing est active
+      Largeur_Zone_Anti : Natural := Largeur_Zone * Quadruple + Boolean'Pos(Fractal.Antialiasing);
+      Hauteur_Zone_Anti : Natural := Hauteur_Zone * Quadruple + Boolean'Pos(Fractal.Antialiasing);
+      --
+
+      --La matrice d'iteration
+      Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Zone_Anti, 0..Hauteur_Zone_Anti);
+
+   begin -- Dessiner_Fractal
+
+      New_Line;
+      Put(" Matrix...     ");
+
+      --Si la fractal est de type mandelbrot alors
+      if Fractal.Ensemble = Mandelbrot then
+         --Calcul la fractal sur l'ensemble de mandelbrot
+         Matrice_Iteration := Mandel_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      else --sinon (Julia)
+         --Calcul la fractal sur l'ensemble de julia
+         Matrice_Iteration := Julia_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      end if;
+
+
+
+      --Si la procedure a ete appelle avec les parametres par defaut
+      if Largeur_Zone = Largeur_Ecran and Hauteur_Zone = Hauteur_Ecran then
+
+         --Si l'antialiasing est active alors
+         if Fractal.Antialiasing then
+             --Utilise la matrice qui fait le quadruple de taille de l'ecran
+            Matrice_Iteration_Global := (True, Matrice_Iteration);
+         else 
+            --Utilise la matrice normale
+            Matrice_Iteration_Global := (False, Matrice_Iteration);
+         end if;
+
+      else --sinon (dimension arbitraire)
+
+         --Si l'antialiasing est actif alors
+         if Fractal.Antialiasing then
+
+            --Copie la 'petite' matrice dans la grande globale
+            --Le coin de la petite est au coordonnees xy
+            for I in Matrice_Iteration'range(1) loop
+               for J in Matrice_Iteration'range(2) loop
+                  
+                  --Dessine la sous matrice calcule de la matrice tampon sur l'ecran
+                  Matrice_Iteration_Global.Matrice_Iteration_Anti(I + 2 * X, J + 2 * Y)
+                  := Matrice_Iteration(I, J);
+                                          
+               end loop;
+            end loop;
+
+         else
+
+            --Copie la 'petite' matrice dans la grande globale
+            --Le coin de la petite est au coordonnees xy
+            for I in Matrice_Iteration'range(1) loop
+               for J in Matrice_Iteration'range(2) loop
+   
+                  Matrice_Iteration_Global.Matrice_Iteration(I + X, J + Y)
+                  := Matrice_Iteration(I, J);
+                                          
+               end loop;
+            end loop;
+         end if;
+      end if;
+
+
+      Put_Line("OK");
+--      Put(" Colors...     ");
+--      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max); --Calcul le degrade
+--      Put_Line("OK");
+      Put(" Conversion... ");
+
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon_Ecran :=Calcul_Antialiasing(Conversion_Couleur
+              (Matrice_Iteration_Global.Matrice_Iteration_Anti, fractal));  
+      else
+         --Calcul la matrice de sortie (sans antialiasing)
+         Matrice_Tampon_Ecran := Conversion_Couleur
+         (Matrice_Iteration_Global.Matrice_Iteration, fractal);
+      end if;
+
+
+      --Si l'affichage du degrade est actif alors
+      if Fractal.Dessine_Degrade and Largeur_Zone = Largeur_Ecran
+         and Hauteur_Zone = Hauteur_Ecran then
+
+         Affiche_Degrade(Fractal); --Affiche le degrade (dans le tampon)
+
+      end if;     
+      
+      Put_Line("OK");
+      Put(" Drawing...    ");
+      
+      -- Parcours chaque colonne de l'ecran
+      for I in Largeur_Zone / 2 + X..Largeur_Zone + X loop
+
+         --Dessine un colonne depuis le tampon a droite du cantre
+         Ligne_Matrice_Vert (Y, Y + Hauteur_Zone, I);
+
+         --Dessine un colonne depuis le tampon a gauche du centre
+         Ligne_Matrice_Vert (Y, Y + Hauteur_Zone, 2 * X - I + Largeur_Zone);
+
+      end loop;
+
+      Put_Line("OK");
+
+   end Dessiner_Fractal;
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rafraichir_couleur                                                               --
+   -- But     : Mets a jour les couleur et dessinne la fractal                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Rafraichir_Couleur (Fractal : in Cara_Fractal) is
+      use Power_Calculator;
+      use Power_Colors;
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le deegrade de couleur
+   begin -- Rafraichir_Couleur
+      New_Line;
+--      Put(" Colors...     ");
+--      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max); --Calcul le degrade
+--      Put_Line("OK");
+      Put(" Conversion... ");
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon_Ecran := Calcul_Antialiasing
+         (Conversion_Couleur(Matrice_Iteration_Global.Matrice_Iteration_Anti, fractal));  
+      else
+         --Calcul la matrice de sortie (sans antialiasing)
+         Matrice_Tampon_Ecran := Conversion_Couleur
+         (Matrice_Iteration_Global.Matrice_Iteration, fractal);
+      end if;
+
+      --Si l'affichage du degrade est actif alors
+      if Fractal.Dessine_Degrade then
+         Affiche_Degrade(Fractal); --Affiche le degrade (dans le tampon)
+      end if;     
+      
+      Put_Line("OK");
+      Put(" Drawing...    ");
+      
+      -- Parcours chaque colonne de l'ecran
+      for X in Largeur_Ecran / 2..Largeur_Ecran loop
+
+         --Dessine un colonne depuis le tampon a droite du cantre
+         Ligne_Matrice_Vert (0, Hauteur_Ecran, X);
+
+         --Dessine un colonne depuis le tampon a gauche du centre
+         Ligne_Matrice_Vert (0, Hauteur_Ecran, Largeur_Ecran - X);
+
+      end loop;
+
+      Put_Line("OK");
+
+   end Rafraichir_Couleur;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Zoom_Souris                                                                      --
+   -- But     : Tracer un cadre a la souris pour zoomer                                          --
+   --           et clic-droit pour dezoomer (recentre au coordonnees de la sourris)              --                                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * la fractal sur laquelle zoomer                                                 --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Zoom_Souris(Fractal : in out Cara_Fractal) is
+
+      --La distance [px] entre le haut de la croix et l'arete superieur du cadre de zoom
+      --si cette distance est inferieur a une certaine valeur alors efface la croix, sinon affiche
+      --la croix
+      Distance_Visible : constant := 10 + Rayon_Ext_Croix; 
+         
+      X1, Y1,      --Coordonnees du centre du cadre                     
+      X2, Y2,      --Coordonnees de la souris lors du tracage du cadre
+      X2_Avant, Y2_Avant : Integer := 0;  --Pour sauvegarder des coordonnees
+      Clic_Droit       : Boolean;  --Si un clic droit a lieu
+      Clic_Gauche      : Boolean;  --Si un clic Gauche a lieu
+
+      Clic_Clavier : Boolean; --Si une touche est pressee
+      Touche : Character;     --La touche presse
+
+      X1_Float, Y1_Float ,    --Les coordonnees du centre par rapport au unite reel
+
+      --Les coordonnees du coin inferieur droit ou gauche du cadre de zoom en unite reel
+      X2_Float, Y2_Float : Long_Float;     
+     
+      --La Largeur et la longueur en float (evite de devoir faire plusieurs fois la convertion 
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Ecran);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Ecran);
+      --
+
+      Pre_Calcul : Long_Float; --Precalcul d'un partie du calcul
+
+      Croix : Boolean; --Pour savoir si la croix est affiche ou non
+     
+   begin -- Zoom_Souris
+     
+      --Boucle pour pouvoir zoomer ou dezoomer plusieur fois de suite sans taper la commande
+      loop
+
+         --Initialise les flags pour le clavier et la souris
+         Touche := Vide;
+         Clic_Clavier     := False;
+         Clic_Droit       := False;
+         Clic_Gauche      := False;
+         --
+
+         Croix := False; --ne dessine pas la croix
+
+         --Boucle s'executant jusqu'a qu'un clic soit fait ou que la touche ESC soit presses
+         while not Clic_Droit and not Clic_Gauche and not (Clic_Clavier and Touche = Echape) loop
+      
+            Right_Clic(X2, Y2, Clic_Droit);   --Lorsque un clic-droit arrive 
+            Left_Clic(X1, Y1, Clic_Gauche);   --Lorsque un clic-gauche arrive
+            Key_Pressed(Touche, Clic_Clavier); --Lorsque une touche est presse
+            Sleep(10); --Redonne la main au systeme pendant 10ms
+
+         end loop;
+
+   
+         --Si il y a eu la touche ESC presse alors quitte la procedure
+         if Clic_Clavier and Touche = Echape then
+            return;
+         end if;
+      
+         Clic_Clavier := False; --Remet a faux le flag du clavier
+
+         --Si un clic gauche a est effectue
+         if Clic_Gauche then   
+         
+            Clic_Gauche := False; --Remet a faux le flag du clic gauche
+            Spider.Move_To(X1, Y1); --Lit les coordonnees de la souris
+      
+            --Copie des coordonnees de la souris dans XY2
+            X2 := X1;
+            Y2 := Y1;
+
+            --Sauvegarde Les coordonnees XY2
+            X2_Avant := X2;
+            Y2_Avant := Y2;
+      
+            --Attends un autre clic-Gauche
+            while not Clic_Gauche loop
+            
+               Mouse(X2, Y2); --Lit les coordonnees de la souris
+               
+               --Calcul Y2 en fonction de X1 en tenant compte des proportion de la zone de dessin
+               Y2 := Y1 + ((X2-X1) * Hauteur_Ecran  /  Largeur_Ecran); 
+
+               --Si le cadre vient a depasser de l'ecran (impossible a afficher) alors
+               if X2 not in 0..Largeur_Ecran or (-X2 + 2*X1) not in 0..Largeur_Ecran
+               or Y2 not in 0..Hauteur_Ecran or (-Y2 + 2*Y1) not in 0..Hauteur_Ecran then
+
+                  --Remets les coordonnes du passage precedant
+                  Y2 := Y2_Avant;
+                  X2 := X2_Avant;
+                  --
+
+               end if;      
+      
+               --Si le bord superieur est plus bas que la hauteur de la croix + 'Distance_Visible'
+               --et que la croix est affichee alors
+               if Y2 in (Y1 - Distance_Visible)..(Y1 + Distance_Visible) and Croix then
+
+                  Efface_Croix(X1, Y1); --Efface la croix
+                  Croix := False;       --La croix n'est pas affichee
+
+               --Si le bord superieur est plus haut que la hauteur de la croix + 'Distance_Visible'
+               --et que la croix n'est pas affichee alors
+               elsif Y2 not in (Y1 - Distance_Visible)..(Y1 + Distance_Visible) and not Croix then
+
+                  Dessin_Croix(X1, Y1); --Efface la croix
+                  Croix := True;        --La croix est affichee
+
+               end if;
+                   ---------------------------------
+
+               --Dessine une boite : avec le point XY1 au centre
+               Boite((-X2 + 2*X1), (-Y2 + 2*Y1), X2, Y2, Couleur_Cadre);
+               
+               --Si les lignes verticales du cadre ont bougees
+               --par rapport au passage d'avant alors
+               if X2 /= X2_Avant then
+                  
+                  --Efface les lignes verticales au coordonnees d'avant (XY2_Avant)
+                  Ligne_Matrice_Vert((-Y2_Avant + 2*Y1),Y2_Avant, X2_Avant);
+                  Ligne_Matrice_Vert((-Y2_Avant + 2*Y1),Y2_Avant, (-X2_Avant + 2*X1));
+      
+               end if;
+      
+               --Si les lignes horizontales du cadre ont bougees
+               --par rapport au passage d'avant alors
+               if Y2 /= Y2_Avant then
+                  
+                  --Efface les lignes horizontales au coordonnees d'avant (XY2_Avant)
+                  Ligne_Matrice_Hori((-X2_Avant + 2*X1),X2_Avant, Y2_Avant);
+                  Ligne_Matrice_Hori((-X2_Avant + 2*X1),X2_Avant, (-Y2_Avant + 2*Y1));
+      
+               end if;
+      
+               Sleep(10);      --Redonne la main au system pendant 10ms
+               
+               --Sauvegarde les coordonnees courantes
+               X2_Avant := X2; 
+               Y2_Avant := Y2;
+               --
+                  
+               Key_Pressed(Touche, Clic_Clavier); --Lorsqu'une touche est pressee
+
+               --Si la touche ESC est pressee
+               if Clic_Clavier and Touche = Echape then
+   
+
+                  --Efface le cadre
+                  Ligne_Matrice_Hori((-X2 + 2*X1),X2, Y2);
+                  Ligne_Matrice_Hori((-X2 + 2*X1),X2, (-Y2 + 2 * Y1));
+   
+                  Ligne_Matrice_Vert((-Y2 + 2*Y1),Y2, X2);
+                  Ligne_Matrice_Vert((-Y2 + 2*Y1),Y2, (-X2 + 2 * X1));
+                  --
+                  
+                  --Si la croix est presente a l'ecran alors l'efface
+                  if Croix then
+                     Efface_Croix(X1, Y1);
+                  end if;
+
+                  return; --Sort de la procedure
+               end if;
+   
+               Left_Clic(X2, Y2, Clic_Gauche); --Lorsque un clic-gauche arrive
+
+            end loop;
+      
+               --Les coordonnees XY1 sont ajuste au coin superieur droit au gauche
+               X1 := (-X2 + 2 * X1);
+               Y1 := (-Y2 + 2 * Y1);
+         
+               --Si la largeur du cadre est nulle alors reajuste X1
+               if X1 = X2 then 
+                 X1 := X1 + 1;
+               end if;
+   
+               --Si la largeur du cadre est nulle alors reajuste X1
+               if Y1 = Y2 then 
+                 Y1 := Y1 + 1;
+               end if;
+
+        end if;
+   
+            Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+            --Convertie la valeur X2 du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations 
+            X2_Float :=  ( (Long_Float(X2) / Largeur_Zone_Tmp_Float) - 0.5 )   
+                           / Fractal.Zoom   +   Fractal.Centre.X ;
+
+            --Convertie la valeur Y2 du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations 
+            Y2_Float :=  (-2.0 * Long_Float(Y2) + Hauteur_Zone_Tmp_Float)
+                              / Pre_Calcul +  Fractal.Centre.Y; -- de 0 a 1
+
+            --Corrige les valeurs par rapport a l'angle (fractal.angle)
+            Power_Calculator.Change_Angle(X2_Float, Y2_Float, Fractal);
+
+      
+            --Si le bouton droit de la souris a ete presse => dezoom
+            if Clic_Droit then
+               
+               --Ajuste le centre de la fractal a l'endroit clique
+               Fractal.Centre.X := X2_Float;
+               Fractal.Centre.Y := Y2_Float;
+               
+               --Si le nouveau zoom n'est pas inferieur a la limte alors
+               if Fractal.Zoom / Facteur_Zout >= Zoom_Min then
+                  --Calcul le nouveau zoom
+                  Fractal.Zoom := Fractal.Zoom / Facteur_Zout;
+               else --si il depasse la limite
+                  Fractal.Zoom := Zoom_Min; --le remene au zoom minimum
+               end if;
+                          
+            else --sinon (c'est le bouton de gauche qui a ete presse)
+      
+               --Convertie la valeur X2 du point a l'ecran(pixel) en valeur reel sur la fractal
+               --Voir la doc pour plus d'informations 
+               X1_Float :=  ( (Long_Float(X1) / Largeur_Zone_Tmp_Float) - 0.5 )   
+                             / Fractal.Zoom   +   Fractal.Centre.X ;
+
+               --Convertie la valeur Y1 du point a l'ecran(pixel) en valeur reel sur la fractal
+               --Voir la doc pour plus d'informations 
+               Y1_Float :=  (-2.0 * Long_Float(Y1) + Hauteur_Zone_Tmp_Float) 
+                                / Pre_Calcul +  Fractal.Centre.Y;
+
+               --Corrige les valeurs par rapport a l'angle (fractal.angle)
+               Power_Calculator.Change_Angle(X1_Float, Y1_Float, Fractal);
+
+               --Le nouveau zoom est egal au rapport entre la fenetre total est le cadre trace
+               Fractal.Zoom := Fractal.Zoom * abs(Largeur_Zone_Tmp_Float / Long_Float(X2 - X1));
+         
+               --Le centre est egal au centre du cadre
+               Fractal.Centre.X := (X1_Float + X2_Float) / 2.0;
+               Fractal.Centre.Y := (Y1_Float + Y2_Float) / 2.0;
+            end if;
+      
+            Dessiner_Fractal(Fractal); --Dessine la fractale
+
+         end loop;
+   
+   end Zoom_Souris;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Centrer                                                                          --
+   -- But     : Recentrer le point choisi a l'aide de la souris                                  --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In out : * La fractal                                                                     --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Centrer (Fractal : in out Cara_Fractal) is
+      
+      
+      Clic_Clavier : Boolean := False; --Savoir si une touche du clavier a ete presse
+      Clic_Souris  : Boolean := False; --Savoir si il y a eu un clic de souris
+
+      Touche : Character := Vide;      --La touche presse
+
+
+      X, Y ,                         --Coordonnees de la souris (avant le clic)
+      X_Clic, Y_Clic : Natural := 0; --Coordonnees de la souris au moment du clic
+
+      --Sauvegarde des coordonnees de la souris (pour pouvoir effacer la croix)
+      X_Avant, Y_Avant : Natural := 0;
+
+      Pre_Calcul : Long_Float; --Un precalcul
+
+      Centre : T_Centre; --Centre du zoom sans le calcul de l'angle
+
+   begin -- Centrer
+
+      --Boucle s'executant jusqu'a qu'un clic soit fait ou que la touche ESC soit presses
+      while not Clic_Souris  and not (Clic_Clavier and Touche = Echape) loop
+         
+         Mouse(X, Y);        --Lit la position de la souris     
+         Dessin_Croix(X, Y); --Dessine une croix a l'emplacement de la souris
+
+         Key_Pressed(Touche, Clic_Clavier); --Lit si une touche est presse
+       
+         --Dessine une croix au milieu de l'ecran
+         Dessin_Croix(Largeur_Ecran / 2, Hauteur_Ecran / 2); 
+
+         Sleep(10); --Redonne la main au systeme pendant 10ms
+
+         --Si la souris a bougee par rapport a la position precedante alors
+         --efface la croix a la position precedante
+         if X /= X_Avant or Y /= Y_Avant then
+            Efface_Croix(X_Avant, Y_Avant);
+         end if;
+
+         --Sauvegarde la position courante
+         X_Avant := X;
+         Y_Avant := Y;
+
+         --Si un clic est fait => sauvegarde les coordonnees du clic dans X_Clic et Y_Clic
+         --Et Clic_Souris devient vrai (true)
+         Left_Clic(X_Clic, Y_Clic, Clic_Souris);
+
+      end loop;
+
+      --Si la touche ESC du clavier a ete presse alors 
+      if Touche = Echape and Clic_Clavier then
+
+         Efface_Croix(X, Y); --Efface la croix sous la souris
+
+         --Efface la croix au milieu de l'ecran
+         Efface_Croix(Largeur_Ecran / 2, Hauteur_Ecran / 2); 
+
+         return;  --Sort de la procedure
+      end if;
+      
+      Pre_Calcul := (2.0 * Long_Float(Largeur_Ecran)) * Fractal.Zoom;
+
+      --Convertie la valeur x du point a l'ecran(pixel) en valeur reel sur la fractal
+      --Voir la doc pour plus d'informations
+      Centre.X := (Long_Float(X_Clic) / Long_Float(Largeur_Ecran) - 0.5) 
+                  / Fractal.Zoom   +   Fractal.Centre.X;
+
+      --Convertie la valeur y du point a l'ecran(pixel) en valeur reel sur la fractal
+      --Voir la doc pour plus d'informations
+      Centre.Y := (-2.0 * Long_Float(Y_Clic) + Long_Float(Hauteur_Ecran))
+                   / Pre_Calcul +  Fractal.Centre.Y;
+
+      --Corrige les valeurs par rapport a l'angle (fractal.angle)
+      Power_Calculator.Change_Angle(Centre.X, Centre.Y, Fractal);
+
+      Fractal.Centre.X := Centre.X;
+      Fractal.Centre.Y := Centre.Y;
+
+      Dessiner_Fractal(Fractal); --Dessine la fractal a l'ecran
+
+   end Centrer;
+
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Choix_Mosaic                                                                     --
+   -- But     : Choisir a l'aide la souris la fractal courante                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste des farctals a dessiner en vue du chois de l'utilisateur              --
+   --                                                                                            --
+   --  return : * Le numeros de la fractal                                                       --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Choix_Mosaic (Liste_Fractals : Power_Types.T_Liste_Fractals) return Natural is
+
+---------------a enlever apres---------------
+      --Nb_Fractals_Max : Positive := 200;
+---------------------------------------------
+       use Power_Types;
+       use Power_List;
+
+      --Pour les fonctions avancees sur le type float
+      package Elementary_Functions_Long_Float
+      is new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
+      use Elementary_Functions_Long_Float;
+      --
+   
+      use Spider.User;
+      
+      Nb_Fractals : Natural := 0; --Initialise le nombre de farctals dessine a 0
+     
+      Nb_Case_X : Positive; --Le nombre de colonne
+      Nb_Case_Y : Positive; --Le nombre de ligne
+
+      Largeur_Case : Long_Float; --La largeur des colonnes
+      Hauteur_Case : Long_Float; --la hauteur des lignes
+
+      X, Y : Long_Float := 0.0; --Pour parcourir toute les cases
+
+      Clic_Souris : Boolean := False; --Savoir si le bouton de la souris a ete presse
+      X_Souris, Y_Souris : Natural;   --Les coordonnees de la souris au moment du clic
+      No_Fractal : Positive;          --Le numeros de la fractal selectionne lors du clic
+
+   begin --Choix_Mosaic
+
+      --Calcul le nombre de colonne en fonction du nombre de fractals de la liste
+      Nb_Case_X := Integer(Sqrt(Long_Float(Liste_Fractals.Nb_Fractals))) + 1;
+
+      --Calcul le nombre de ligne en fonction du nombre de frctals de la liste
+      Nb_Case_Y := Integer(Long_Float'Truncation(Sqrt(Long_Float(Liste_Fractals.Nb_Fractals))));
+
+      --Calcul la largeur des colonne                                                                            
+      Largeur_Case := Long_Float(Largeur_Ecran) / Long_Float(Nb_Case_X);
+
+      --calcul la hauteur des lignes
+      Hauteur_Case := Long_Float(Hauteur_Ecran) / Long_Float(Nb_Case_Y);
+
+      --Reinitialise le contenue de la fenetre graphique
+      Spider.Draw.Set_Color_Background(Spider.Draw.Black);
+      Spider.Clear_Window;
+      --
+
+      --Parcour les lignes
+      while Y <= Long_Float(Hauteur_Ecran) - Hauteur_Case / 2.0 loop
+         X:= 0.0;
+
+         --Parcours les colonnes et sort si le nombre de fractal affiche 
+         --correspond au nombre de fractal de la liste
+         while X <= Long_Float(Largeur_Ecran) - Largeur_Case / 2.0 and
+               Nb_Fractals /= Liste_Fractals.Nb_Fractals loop
+
+
+            Nb_Fractals := Nb_Fractals + 1; --incremente le nombre de fractal dessine 
+            --Dessine la fractal a la bonne place
+            Dessiner_Fractal (Fractal_Num(Liste_Fractals,  Nb_Fractals).Fractal ,
+            Integer(X), Integer(Y), Integer(Largeur_Case)-1, Integer(Hauteur_Case)-1);
+            
+            --Affiche en haut a gauche de la case son numeros
+            Spider.Draw.Set_Color_Text(Couleur_Numeros);
+            Spider.Move_To(Integer(X),  Integer(Y));
+            Spider.Draw.Display_Text(Integer'Image(Nb_Fractals));
+  
+           
+            X := X + Largeur_Case; --Increment la valeur x
+
+
+         end loop;
+         Y := Y + Hauteur_Case; --Increment la valeur y
+      end loop;
+
+
+      -------------------------------souris clic-----------------------
+      New_Line;
+      Put_Line(" Choose one of them");
+
+      --Boucle qui se repete si l'utilisateur a clique la ou il n'y avait pas de fractal affiche
+      loop
+         --Attends par une boucle le clic de souris
+         loop
+            
+   
+            Left_Clic(X_Souris, Y_Souris, Clic_Souris); --Si un clic-gauche survient
+            exit when Clic_Souris;    --Sort si un clic-gauche est survenu
+
+             --Redonne la main au system pendant 10 ms (il ne faut pas saturer le proc pour rien)
+            Sleep(10);
+         end loop;
+   
+         --Calcul la colonne cliquee
+         X_Souris := Integer(Long_Float'Truncation(Long_Float(X_Souris * Nb_Case_X)
+                             / Long_Float(Largeur_Ecran))) + 1;
+
+         --Calcul la Ligne cliquee
+         Y_Souris := Integer(Long_Float'Truncation(Long_Float(Y_Souris * Nb_Case_Y)
+                             / Long_Float(Hauteur_Ecran))) + 1;
+   
+         --Calcul le numeros de la case correspondant a la colonne et a la ligne
+         No_Fractal := X_Souris + (Y_Souris - 1) * Nb_Case_X;
+   
+         --Si la case existe alors
+         if No_Fractal <= Liste_Fractals.Nb_Fractals then
+            return No_Fractal;--retourne le numeros de la fractal choisie
+         end if;
+      end loop;
+
+
+   end Choix_Mosaic;
+
+end Power_Tools;
diff --git a/Src/Power_Tools.ads b/Src/Power_Tools.ads
new file mode 100644 (file)
index 0000000..cbf6836
--- /dev/null
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Tools / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de hauts niveau pour le tracage, le recadrage et le centrage              --
+--           sur la fractal a l'Ecran.                                                        --
+------------------------------------------------------------------------------------------------
+
+with Power_Types;
+use  Power_Types;
+
+package  Power_Tools is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Dessiner_Fractal                                                                 --
+   -- But     : Dessiner la fracal a l'ecran                                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Dessiner_Fractal (Fractal : in Cara_Fractal; X, Y : Natural := 0;
+                               Largeur_Zone : Natural := Largeur_Ecran;
+                               Hauteur_Zone : Natural := Hauteur_Ecran);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rafraichir_couleur                                                               --
+   -- But     : Mets a jour les couleur et dessinne la fractal                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal a dessiner                                                          --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Rafraichir_Couleur (Fractal : in Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Zoom_Souris                                                                      --
+   -- But     : Tracer un cadre a la souris pour zoomer                                          --
+   --           et clic-droit pour dezoomer (recentre au coordonnees de la sourris)              --                                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * la fractal sur laquelle zoomer                                                 --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Zoom_Souris(Fractal : in out Cara_Fractal);
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Centrer                                                                          --
+   -- But     : Recentrer le point choisi a l'aide de la souris                                  --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In out : * La fractal                                                                     --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Centrer (Fractal : in out Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Choix_Mosaic                                                                     --
+   -- But     : Choisir a l'aide la souris la fractal courante                                   --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La liste des farctals a dessiner en vue du chois de l'utilisateur              --
+   --                                                                                            --
+   --  return : * Le numeros de la fractal                                                       --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Choix_Mosaic (Liste_Fractals : T_Liste_Fractals) return Natural;
+
+end Power_Tools;
\ No newline at end of file
diff --git a/Src/Power_Types.ads b/Src/Power_Types.ads
new file mode 100644 (file)
index 0000000..56c0ebc
--- /dev/null
@@ -0,0 +1,157 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Types / fait partie du programme Power Fractal                             --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Declaration des types, des constantes et des variables globales                  --
+------------------------------------------------------------------------------------------------
+
+with Ada.Characters.Latin_1;   --Table de caractere LATIN 1
+with Spider.Draw;
+
+
+package Power_Types is
+
+   ------------------------CONSTANTES-----------------------
+
+   Hauteur_Ecran    : constant := 399;  -- Hauteur de la zone de dessin (fenetre spider)
+   Largeur_Ecran    : constant := 639;  -- Largeur de la zone de dessin (fenetre spider)
+   Rayon_Int_Croix  : constant := 2; -- Le rayon interieur de la croix (lors du 'center' et 'zoom') 
+   Rayon_Ext_Croix  : constant := 6;    -- le rayon superieur de la croix
+   Hauteur_Degrade  : constant := 5;    -- la hauteur du degrade de couleur
+   Facteur_Zin      : constant := 4.0;  -- facteur par defaut pour le zoom in
+   Facteur_Zout     : constant := 4.0;  -- facteur par defaut pour le zoom our
+   Zoom_Min         : constant := 0.1;  -- valeur de zoom minimale   
+   Nb_Iteration_Min : constant := 6;    -- Nombre minimum d'iteration
+   Longueur_Max     : constant := 50;   -- Longueur max d'un mot (nom de fichier)
+   Nb_Couleur_Max   : constant := 10;   -- Nombre de couleur maximum
+   Prompt           : constant String := "> ";                        --Le prompt de la console
+   Couleur_Cadre    : constant Spider.Draw.Tcolor := (255, 255, 200); --La couleur du cadre de zoom
+   Couleur_Numeros  : constant Spider.Draw.Tcolor := (255, 255, 200); --La couleur des numeros
+
+
+
+   Echape : constant Character := Ada.Characters.Latin_1.Esc;-- Le caractere ascii de la touche esc
+   Vide   : constant Character := Ada.Characters.Latin_1.Nul;-- Le carcatere ascii vide
+   Espace : constant Character := Ada.Characters.Latin_1.Space;-- Le caractere ascii espace
+
+
+
+   -- Pour les couleurs, de 0 a 255
+   type Byte is mod 256;
+
+   -- Type article pour la couleur
+   type T_Couleur is
+      record
+                -- Les trois couleurs : rouge, bleu, vert
+         R, G, B: Byte;
+      end record;
+   -- La surface de l'image (pixels sur pixels)
+   type T_Matrice_Tampon is array(Natural range <>, Natural range <>) of T_Couleur;
+
+
+
+   --Les types possibles de fractal
+   type T_Ensemble is (Julia, Mandelbrot);
+
+   --Type Contenant les couleurs qui forme le degrade
+   type T_Tab_Couleur is array (Natural range <>) of T_Couleur;
+
+   --Type pour connaitre le point de la fractal qui doit se trouver au milieu de la fenetre
+   type T_Centre is record
+      X : Long_Float := 0.6;
+      Y : Long_Float := 0.0;
+   end record;
+
+   subtype T_Nb_Couleur is Integer range 2 .. Nb_Couleur_Max;
+
+
+   --Type representant toutes les carcateristiques d'un fractal et de son affichage
+   type Cara_Fractal (Ensemble : T_Ensemble := Mandelbrot; Nb_Couleur : T_Nb_Couleur := 4) is
+   record
+      
+      NB_Iteration_Max : Natural   := 50;  -- Nombre d'iteration
+      
+      -- La limit de divergence (voir doc : Que est ce qu'une fractal)
+      C_Diverge_Limite : Long_Float := 4.0; 
+      Zoom    : Long_Float := 1.0 / 4.0;    -- Facteur du zoom a l'affichage
+      
+      -- Le point de la fractal qui sera affiche au centre de l'ecran
+      Centre  : T_Centre   := (-0.6, 0.0);  
+      Angle   : Long_Float := 0.0;          -- Angle de la fractal
+
+      --Les couleurs de la fractal (4 couleurs)
+      Couleur : T_Tab_Couleur(1 .. Nb_Couleur) := ((255,0,0), (0,255,0), (0,0,255), (255,255,0) );   
+
+      Antialiasing : Boolean := False;    -- Si l'antialiasing doit etre applique
+      Dessine_Degrade : Boolean := False; -- Si la palette de couleur doit etre dessinee
+
+      --Suivant l'ensemble
+      case Ensemble is
+         when Julia => --pour l'ensemble julia il faut encore definir une constant c
+            Cx : Long_Float := -0.577;
+            Cy : Long_Float := 0.468;
+
+         when Mandelbrot => --Pas besoin d'infos supplementaires pour l'ensemble de mandelbrot
+            null;
+      end case;
+   end record;
+
+
+   --Type matrice 2D contant la fractal sous forme de nombre dnatural'iteration
+   type T_Matrice_Iteration is array (Integer range <>, Integer range <>) of Float;
+
+   --Contient une matrice pour la fractal avec antialiasing (4 X plus grande) et une sans
+   type T_Matrice_Iteration_2 (Antialiasing : Boolean := False) is
+      record
+      
+      case Antialiasing is
+         when False =>
+            Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Ecran, 0..Hauteur_Ecran);
+         when True =>
+
+            --La taille de la matrice est le quadruple de l'affichage
+            Matrice_Iteration_Anti : T_Matrice_Iteration
+            (0..Largeur_Ecran * 2 + 1, 0..Hauteur_Ecran * 2 + 1);
+
+         end case;
+      end record;
+
+   type T_Fractal;
+
+   --Lien vers le prochain element de la liste
+   type T_Lien is access T_Fractal;
+   
+   --Le type des cellule
+   type T_Fractal is 
+      record
+         Fractal : Cara_Fractal;
+         Suiv    : T_Lien; --Pointe vers l'element suivant
+      end record;
+
+   --Le type de la liste dynamique
+   type T_Liste_Fractals is
+      record
+         Tete : T_Lien := null; --pointe sur le premier element
+         Nb_Fractals : Natural := 0; --le nombre de fractals que contient la liste
+      end record;
+
+
+   -- Fractal avec valeur par defaut pour Mandelbrot et Julia
+   Fractal_Initial_Julia  : constant Cara_Fractal :=
+   (Julia, 4, 50, 4.0, 1.0/4.0,(0.0, 0.0), 0.0,
+   ((255,50,50), (200,254,120), (123,78,100), (0,23,100) ), False, False, -0.577, 0.468);
+
+   Fractal_Initial_Mandel : constant Cara_Fractal := 
+   (Mandelbrot, 4, 50, 4.0, 1.0/4.0,(-0.6, 0.0), 0.0, 
+   ((100,100,255), (120,230,255), (123,78,100), (0,23,100) ), False, False);
+
+   -------------------------VARIABLES-----------------------
+   --La matrice global contant la fractal qui est qui va etre affiche a l'ecran
+   Matrice_Iteration_Global : T_Matrice_Iteration_2;
+
+   --Le tampon contant la fractal en mode RGB, utilise pour rafraichir le dessin a l'ecran
+   --par exemple lors du tracage du cadre de zoom
+   Matrice_Tampon_Ecran : T_Matrice_Tampon (0 .. Largeur_Ecran, 0 .. Hauteur_Ecran);
+
+end Power_Types;
diff --git a/Src/Power_calculator.adb b/Src/Power_calculator.adb
new file mode 100644 (file)
index 0000000..eaa29d9
--- /dev/null
@@ -0,0 +1,346 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Calculator / fait partie du programme Power Fractal                        --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de calculs des fractals ainsi que de l'antialiasing                       --
+------------------------------------------------------------------------------------------------
+
+with Ada.Numerics; use Ada.Numerics; 
+with Ada.Numerics.Generic_Elementary_Functions; --Fonctions mathematiques avancees
+with Ada.Numerics.Generic_Complex_Types;
+with Ada.Text_IO;
+
+package body Power_Calculator is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Calcul_Antialiasing                                                              --
+   -- But     : Contracter une matrice en une autre 4 fois plus petite                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : La matrice a antialiasinger                                                      --
+   --                                                                                            --
+   --  return : La matrice traitee                                                               --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Tampon) return T_Matrice_Tampon is
+
+      X, Y : Natural; --Variables pour le parcours de la matrice
+
+      --La matrice de retour, qui est evidement 2 fois plus petite que celle en entrer
+      Matrice_Retour : T_Matrice_Tampon ( 0..(Matrice_Antialiasing'Last(1) - 1) / 2,
+                                          0..(Matrice_Antialiasing'Last(2) - 1) / 2 );   
+   begin --Calcul_Antialiasing  
+       
+         X := 0; 
+         --Parcours toutes les colonnes impaires
+         while X <= Matrice_Antialiasing'Last(1) - 1 loop
+            Y:=0;
+            --Parcours toutes les lignes impaires
+            while Y <= Matrice_Antialiasing'Last(2) - 1 loop
+      
+               --Fait la moyenne de quatre points pour n'en former qu'un seul
+               Matrice_Retour(X/2, Y/2).R := Byte ((Integer(Matrice_Antialiasing(X, Y).R)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).R)
+                                                  + Integer(Matrice_Antialiasing(X, Y + 1).R)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).R))
+                                                  / 4);
+
+               Matrice_Retour(X/2, Y/2).G := Byte ((Integer(Matrice_Antialiasing(X, Y).G)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).G)
+                                                  + Integer(Matrice_Antialiasing(X,Y + 1).G)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).G))
+                                                  / 4);
+
+               Matrice_Retour(X/2, Y/2).B := Byte ((Integer(Matrice_Antialiasing(X, Y).B)
+                                                  + Integer(Matrice_Antialiasing(X + 1,Y).B)
+                                                  + Integer(Matrice_Antialiasing(X, Y + 1).B)
+                                                  + Integer(Matrice_Antialiasing(X + 1, Y + 1).B))
+                                                  / 4);
+               Y:=Y+2;
+            end loop;
+
+            X:=X+2;
+         end loop;
+
+      return Matrice_Retour; --retourne la matrice quatre fois plus petite
+   end;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Change_Angle                                                                     --
+   -- But     : Changer l'angle d'un nombre complexe par rapport au centre de l'ecran            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal,                                                                    --
+   --                                                                                            --
+   --  In out : * Partie reel du nb complexe       : A                                           --
+   --           * Partie imaginaire du nb complexe : B                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Change_Angle (A, B : in out Long_Float; Fractal : Cara_Fractal) is
+
+      Rayon : Long_Float; --Le rayon du nombre complexe
+      Phi   : Long_Float; --Le nouvel angle calcule
+
+      --L'angle en parametre est converti en radian
+      Angle_Rad : Long_Float := Pi * Fractal.Angle / 180.0;
+
+      --Pour pouvoir faire des operations (sin cos etc..) sur des Long_Float
+      package Elementary_Functions_Long_Float
+      is new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
+      use Elementary_Functions_Long_Float; 
+
+   begin
+      
+         --Ramene l'origine du nombre complexe au centre de l'ecran
+         A := A - Fractal.Centre.X;
+         B := B - Fractal.Centre.Y;
+         --
+      --Pour eviter la division par zero
+      if A /= 0.0 then
+
+         --Si 'A' est negatif => (l'angle est compris entre : 90 < angle < -90)
+         if A < 0.0  then
+            --Calcul de l'angle en additionnant a l'angle de base l'angle que l'on veut
+            Phi := Arctan( B / A ) + Angle_Rad + Pi;
+         else
+            Phi := Arctan( B / A ) + Angle_Rad;
+            --
+         end if;
+
+      else
+         
+         --si l'angle est compris entre : 180 < angle < 360 alors
+         if B < 0.0 then          
+            --Calcul de l'angle en additionnant a Pi/2.0 l'angle que l'on veut
+            Phi := Pi / 2.0 + Angle_Rad + Pi;
+         else
+            Phi := Pi / 2.0 + Angle_Rad;
+            --
+         end if;
+
+      end if;   
+
+         Rayon := Sqrt( A**2 + B**2 ); --Calcul le rayon (module)
+         A     := Rayon * Cos( Phi );  --Calcul la partie reel
+         B     := Rayon * Sin( Phi );  --Calcul la partie imaginaire
+
+         --Ramene l'origine du nombre comples au centre (0,0)
+         A := A + Fractal.Centre.X;
+         B := B + Fractal.Centre.Y;
+         --
+
+   end Change_Angle;
+
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Mandel_Gen                                                                       --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Mandelbrot                   --
+   --               Z(n+1) = Z(n)^2 + Z(o)                                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_Zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                        return T_Matrice_Iteration is
+
+      ------Nombre complexe : Z = A + Bj------
+
+      package Complex_Long_Float is new Ada.Numerics.Generic_Complex_Types(Long_Float);
+      use Complex_Long_Float;
+      use Ada.Text_IO;
+
+      Zo  : Complex;
+      Pas : Complex;
+      Za  : Complex;
+      Zs  : Complex;
+
+      N : constant Natural := 20; --Precision de l'interpolation
+      Ao,Bo-- la valeur reel et imaginaire du point en cours de traitement            : Z(o)
+      : Long_Float;
+      Nb_Iteration : Float; --Pour compter le nombre d'iteration
+
+      --La matrice est cree et retournee
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+
+      --la hauteur et la largeur en long float
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      --Variable precalculee pour ne pas avoir a la calculer a chaque iteration 
+      Pre_Calcul : Long_Float; 
+
+   begin -- Mandel_Gen
+
+      Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+      --Parcours toute la dimension X de l'affichage (pixel)
+      for X in 0..Largeur_Zone loop
+
+         --Parcours toute la dimension Y de l'affichage (pixel)
+         for Y in 0..Hauteur_Zone loop  
+          
+            --Convertie la valeur x du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations
+            Ao := ((Long_Float(X) / Largeur_Zone_Tmp_Float) - 0.5 ) / 
+                     Fractal.Zoom + Fractal.Centre.X ;
+
+            --Convertie la valeur y du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations            
+            Bo := (-2.0 * Long_Float(Y) + Hauteur_Zone_Tmp_Float) / Pre_Calcul + Fractal.Centre.Y;
+           
+            Change_Angle(Ao, Bo, Fractal);
+
+            Zo := Compose_From_Cartesian(Ao , Bo);
+            Za := Zo;
+            
+            Nb_Iteration := 0.0; --Initialise le compteur d'iteration a 0
+
+  
+            --Boucle calculant la divergence d'un point du plan
+            M : loop
+
+               Zs  := Za**2 + Zo;
+               Pas := Zs/Long_Float(N) - Za/Long_Float(N);
+
+               for I in 1..N loop
+                 
+                  --Sort si le nombre maximale d'iteration a ete atteind
+                  --ou si le module du nb complexe a dapasse la limite de divergence.
+                  --Astuce : la limite represente en fait le carre du module,
+                  --ce qui permet de faire moins de calculs 
+                  exit M when (Re(Za)**2 + Im(Za)**2) > Fractal.C_Diverge_Limite ;
+                  Nb_Iteration := Nb_Iteration + 1.0/Float(N); 
+                  Za := Za + Pas;
+
+               end loop;
+
+               --Za := Zs; --a enlever
+               exit when Nb_Iteration >= Float(Fractal.Nb_Iteration_Max);
+
+            end loop M;
+            
+            --Enregistre le point calcule dans la matrice d'iteration (Global)
+            Matrice_Retour(X,Y) := Nb_Iteration;
+            --Put(Float'Image(Nb_Iteration));
+   
+         end loop;
+      end loop;
+
+      for I in Matrice_Retour'range(1) loop
+      
+      Put_Line(Float'Image(Matrice_Retour(I,0)));
+
+     end loop;
+
+
+      return Matrice_Retour; --Retourne la matrice
+
+   end Mandel_Gen;  
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Julia_Gen                                                                        --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Julia                        --
+   --               Z(n+1) = Z(n)^2 + c              'c' etant une constante arbitraire          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal) 
+                       return T_Matrice_Iteration is
+   
+
+      ------Nombre complexe : Z = A + Bj------
+
+      package Complex_Long_Float is new Ada.Numerics.Generic_Complex_Types(Long_Float);
+      use Complex_Long_Float;
+      use Ada.Text_IO;
+
+      Pas : Complex;
+      Za  : Complex;
+      Zs  : Complex;
+      C   : Complex := Compose_From_Cartesian (Fractal.Cx, Fractal.Cy);
+
+      N : constant Natural := 20; --Precision de l'interpolation
+      Ao,Bo-- la valeur reel et imaginaire du point en cours de traitement            : Z(o)
+      : Long_Float;
+      Nb_Iteration : Float; --Pour compter le nombre d'iteration
+
+      --La matrice est cree et retournee
+      Matrice_Retour : T_Matrice_Iteration (0..Largeur_Zone, 0..Hauteur_Zone);
+
+      --la hauteur et la largeur en long float
+      Largeur_Zone_Tmp_Float : Long_Float := Long_Float(Largeur_Zone);
+      Hauteur_Zone_Tmp_Float : Long_Float := Long_Float(Hauteur_Zone);
+
+      --Variable precalculee pour ne pas avoir a la calculer a chaque iteration 
+      Pre_Calcul : Long_Float; 
+
+   begin -- Mandel_Gen
+
+      Pre_Calcul := (2.0 * Largeur_Zone_Tmp_Float) * Fractal.Zoom;
+
+      --Parcours toute la dimension X de l'affichage (pixel)
+      for X in 0..Largeur_Zone loop
+
+         --Parcours toute la dimension Y de l'affichage (pixel)
+         for Y in 0..Hauteur_Zone loop  
+          
+            --Convertie la valeur x du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations
+            Ao := ((Long_Float(X) / Largeur_Zone_Tmp_Float) - 0.5 ) / 
+                     Fractal.Zoom + Fractal.Centre.X ;
+
+            --Convertie la valeur y du point a l'ecran(pixel) en valeur reel sur la fractal
+            --Voir la doc pour plus d'informations            
+            Bo := (-2.0 * Long_Float(Y) + Hauteur_Zone_Tmp_Float) / Pre_Calcul + Fractal.Centre.Y;
+           
+            Change_Angle(Ao, Bo, Fractal);
+
+            Za := Compose_From_Cartesian(Ao , Bo);
+                        
+            Nb_Iteration := 0.0; --Initialise le compteur d'iteration a 0
+
+  
+            --Boucle calculant la divergence d'un point du plan
+            M : loop
+
+               Zs  := Za**2 + C;
+               Pas := Zs/Long_Float(N) - Za/Long_Float(N);
+
+               for I in 1..N loop
+
+                 
+                  --Sort si le nombre maximale d'iteration a ete atteind
+                  --ou si le module du nb complexe a dapasse la limite de divergence.
+                  --Astuce : la limite represente en fait le carre du module,
+                  --ce qui permet de faire moins de calculs 
+                  exit M when (Re(Za)**2 + Im(Za)**2) > Fractal.C_Diverge_Limite ;
+                  Nb_Iteration := Nb_Iteration + 1.0/Float(N);
+                  Za := Za + Pas;  
+
+               end loop;
+
+               Za := Zs; --a enlever
+               exit when Nb_Iteration >= Float(Fractal.Nb_Iteration_Max);
+
+            end loop M;
+            
+            --Enregistre le point calcule dans la matrice d'iteration (Global)
+            Matrice_Retour(X,Y) := Nb_Iteration;
+            --Put(Float'Image(Nb_Iteration));
+   
+         end loop;
+      end loop;
+            --Put(Float'Image(Matrice_Retour(0,0)));
+      return Matrice_Retour; --Retourne la matrice
+   end Julia_Gen;  
+end Power_Calculator;
diff --git a/Src/Power_calculator.ads b/Src/Power_calculator.ads
new file mode 100644 (file)
index 0000000..64d4a98
--- /dev/null
@@ -0,0 +1,63 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_Calculator / fait partie du programme Power Fractal                        --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils de calculs des fractals ainsi que de l'antialiasing                       --
+------------------------------------------------------------------------------------------------
+with Power_Types; use Power_Types; --Pour les types, les constantes et les variables globales
+
+package Power_Calculator is
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Calcul_Antialiasing                                                              --
+   -- But     : Contracter une matrice en une autre 4 fois plus petite                           --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : La matrice a antialiasinger                                                      --
+   --                                                                                            --
+   --  return : La matrice traitee                                                               --
+   ------------------------------------------------------------------------------------------------
+   function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Tampon) return  T_Matrice_Tampon;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Change_Angle                                                                     --
+   -- But     : Changer l'angle d'un nombre complexe par rapport au centre de l'ecran            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * La fractal,                                                                    --
+   --                                                                                            --
+   --  In out : * Partie reel du nb complexe       : A                                           --
+   --           * Partie imaginaire du nb complexe : B                                           --
+   ------------------------------------------------------------------------------------------------
+   procedure Change_Angle (A, B : in out Long_Float; Fractal : Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Mandel_Gen                                                                       --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Mandelbrot                   --
+   --               Z(n+1) = Z(n)^2 + Z(o)                                                       --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                        return T_Matrice_Iteration;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Julia_Gen                                                                        --
+   -- But     : Genere une matrice d'iteration selon l' ensemble de Julia                        --
+   --               Z(n+1) = Z(n)^2 + c              'c' etant une constante arbitraire          --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Largeur_zone et Hauteur_Zone : Dimension de la zone de calcul                  --
+   --           * Fractal : L'ensemble des caracteristiques de la fractal                        --
+   --                                                                                            --
+   --  return : * Une matrice contenant la fractal sous forme de nombre d'iteration pour chaque  --
+   --             point                                                                          --
+   ------------------------------------------------------------------------------------------------
+   function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural; Fractal : Cara_Fractal)
+                       return T_Matrice_Iteration;
+
+end Power_Calculator;
\ No newline at end of file
diff --git a/Src/power_IO.adb b/Src/power_IO.adb
new file mode 100644 (file)
index 0000000..8538d9f
--- /dev/null
@@ -0,0 +1,217 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_IO / fait partie du programme Power Fractal                                --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils Pour Rendre une fractal au format .bmp ou                                 --
+--           Enregistrer et charger au format .pof                                            --
+------------------------------------------------------------------------------------------------
+
+with Ada.Sequential_IO;  --Pour ecrire en binaire dans un fichier
+with Power_Types; use Power_Types;
+with Ada.Text_IO;
+with Power_Calculator;
+with Power_Bmp;
+with Power_Colors;
+with Power_List;
+
+package body Power_IO is
+
+   --Instentie pour faire ecrire le type Cara_Fractal dans un fichier
+   package Fractal_IO is new Ada.Sequential_IO (Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Fractal                                                              --
+   -- But     : Enregistrer les caracteristiques d'un fractal dans un fichier                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * Les caracteristiques de la fractal : Fractal                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Fractal (Nom_Fichier : String; Fractal : Cara_Fractal) is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+
+   begin --Enregistrer_Fractal
+         
+      Fractal_IO.Create (Fichier_Fractal, Fractal_IO.Out_File, Nom_Fichier); --Cree le fichier
+      Fractal_IO.Write (Fichier_Fractal, Fractal);    --Ecrit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --Ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Enregistrer_Fractal;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_Fractal                                                                  --
+   -- But     : Charger les caracteristiques d'un fractal depuis un fichier                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  return    :  * Les caracteristiques de la fractal                                         --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Charger_Fractal (Nom_Fichier : String) return  Cara_Fractal is
+
+      Fichier_Fractal : Fractal_IO.File_Type; --Le fichier
+      Fractal : Cara_Fractal;
+   begin --Enregistrer_Fractal
+
+      Fractal_IO.Open (Fichier_Fractal, Fractal_IO.In_File, Nom_Fichier); --Ouvre le fichier
+      Fractal_IO.Read (Fichier_Fractal, Fractal);   --Lit les informations
+      Fractal_IO.Close (Fichier_Fractal);    --ferme le fichier
+      return Fractal;
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Charger_Fractal;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Liste                                                                --
+   -- But     : Enregistrer une liste contenant des fractals                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * La liste de fractals : Liste                                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Liste (Nom_Fichier : String; Liste : Power_Types.T_Liste_Fractals) is
+
+      use Power_List;
+      Fichier_Liste : Fractal_IO.File_Type; --Le fichier    
+
+   begin --Enregistrer_Liste
+      Fractal_IO.Create (Fichier_Liste, Fractal_IO.Out_File, Nom_Fichier); --Cree le fichier
+
+      for I in 1..Nb_Fractals(Liste) loop
+         Fractal_IO.Write (Fichier_Liste, Fractal_Num(Liste, I).Fractal); --Ecrit une fractal
+      end loop;
+
+      Fractal_IO.Close (Fichier_Liste);    --Ferme le fichier
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;      
+
+   end Enregistrer_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_List                                                                     --
+   -- But     : Charger toutes les fractals contenues dans un fichier                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  In out : * La liste de fractals                                                           --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Charger_Liste (Nom_Fichier : String; Liste : in out Power_Types.T_Liste_Fractals) is
+
+      use Power_List;
+      Fichier_Liste : Fractal_IO.File_Type; --Le fichier  
+      Fractal_Tmp : Cara_Fractal;
+
+   begin --Charger_Liste
+
+      Fractal_IO.Open (Fichier_Liste, Fractal_IO.In_File, Nom_Fichier); --Ouvre le fichier
+
+      Vider_Liste(Liste);
+
+      while not Fractal_IO.End_Of_File(Fichier_Liste) loop
+
+         Fractal_IO.Read (Fichier_Liste, Fractal_Tmp);   --Lit les informations
+         Ajouter(Liste, Fractal_Tmp);
+
+      end loop;
+
+      Fractal_IO.Close (Fichier_Liste);    --ferme le fichier
+
+
+      exception --Traite les exceptions concernant les fichiers
+         when Fractal_IO.Name_Error | Fractal_IO.Device_Error =>
+            raise Erreur_Fichier;        
+
+   end Charger_Liste;
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rendre_Bmp                                                                       --
+   -- But     : Rendre un fichier image au format bmp (a l'aide de la library BMPLib)            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les dimensions du bmp : Largeur_Zone et Hauteur_Zone                           --
+   --           * La fractal a rendre   : Cara_Fractal                                           --
+   --           * Le nom du fichier bmp : Nom_Fichier                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------  
+procedure Rendre_Bmp (Fractal : Power_Types.Cara_Fractal; Nom_Fichier : String;
+          Largeur_Zone : Natural := 1024; Hauteur_Zone : Natural := 768) is
+
+      use Power_Calculator;
+      use Ada.Text_IO;
+      use Power_Bmp;
+      use Power_Colors;
+
+      Degrade : T_Tab_Couleur(1 .. Fractal.Nb_Iteration_Max); --Le degrade de couleur
+
+      --2 si la matrice doit etre calcule quatre fois plus grande sinon 1
+      Quadruple : Natural := Boolean'Pos(Fractal.Antialiasing) + 1;   
+
+      --les dimensions de la zone de calcul, elles sont double si l'antialiasing est active
+      Largeur_Zone_Anti : Natural := (Largeur_Zone - 1) * Quadruple
+      + Boolean'Pos(Fractal.Antialiasing);
+
+      Hauteur_Zone_Anti : Natural := (Hauteur_Zone - 1) * Quadruple
+      + Boolean'Pos(Fractal.Antialiasing);
+      --
+
+      --La matrice d'iteration
+      Matrice_Iteration : T_Matrice_Iteration (0..Largeur_Zone_Anti, 0..Hauteur_Zone_Anti);
+
+      --La matrice de sortie
+      Matrice_Tampon :  T_Matrice_Tampon (0 .. Largeur_Zone - 1, 0 .. Hauteur_Zone - 1);
+
+   begin -- Rendre_Bmp   
+
+      New_Line;
+      Put(" Matrix...     ");
+
+      --Si la fractal est de type mandelbrot alors
+      if Fractal.Ensemble = Mandelbrot then
+         --Calcul la fractal sur l'ensemble de mandelbrot
+         Matrice_Iteration := Mandel_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      else --sinon (Julia)
+         --Calcul la fractal sur l'ensemble de julia
+         Matrice_Iteration := Julia_Gen (Largeur_Zone_Anti, Hauteur_Zone_Anti, Fractal);
+      end if;
+
+      Put_Line("OK");
+
+--      Put(" Colors...     ");
+--      --Calcul le degrade de couleur
+--      Creer_Degrade(Fractal, Degrade, Fractal.Nb_Iteration_Max);
+--      Put_Line("OK");
+      Put(" Conversion... ");
+      
+      --Si l'antialiasing est active alors
+      if Fractal.Antialiasing then 
+         --Calcul la matrice de sortie avec antialiasing
+         Matrice_Tampon := Calcul_Antialiasing(Conversion_Couleur(Matrice_Iteration, fractal));
+      else
+
+         Matrice_Tampon := Conversion_Couleur(Matrice_Iteration, fractal);
+      end if;
+
+      Put_Line("OK");
+  
+      Put(" Saving...     ");
+      Ecrire_Bmp (Matrice_Tampon, Nom_Fichier); --Enregistre le bmp
+      Put_Line("OK");
+
+   end Rendre_Bmp;
+
+end Power_IO;
diff --git a/Src/power_IO.ads b/Src/power_IO.ads
new file mode 100644 (file)
index 0000000..d614bad
--- /dev/null
@@ -0,0 +1,79 @@
+------------------------------------------------------------------------------------------------
+-- Nom     : Power_IO / fait partie du programme Power Fractal                                --
+--                                                                                            --
+-- Auteurs : Gregory Burri & Adrien Crivelli                                                  --
+------------------------------------------------------------------------------------------------
+-- But     : Outils Pour Rendre une fractal au format .bmp ou                                 --
+--           Enregistrer et charger au format .pof                                            --
+------------------------------------------------------------------------------------------------
+
+with Power_Types;
+use type Power_Types.Cara_Fractal;
+
+package Power_IO is
+
+   Erreur_Fichier : exception; -- Erreur propre au fichier (enregistrement et lecture)
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Fractal                                                              --
+   -- But     : Enregistrer les caracteristiques d'un fractal dans un fichier                    --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * Les caracteristiques de la fractal : Fractal                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Fractal (Nom_Fichier : String; Fractal : Power_Types.Cara_Fractal);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_Fractal                                                                  --
+   -- But     : Charger les caracteristiques d'un fractal depuis un fichier                      --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  return :  * Les caracteristiques de la fractal                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   function Charger_Fractal (Nom_Fichier : String) return Power_Types.Cara_Fractal;
+
+  
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Enregistrer_Liste                                                                --
+   -- But     : Enregistrer une liste contenant des fractals                                     --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier : Nom_Fichier                                                --
+   --           * La liste de fractals : Liste                                                   --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Enregistrer_Liste (Nom_Fichier : String; Liste : Power_Types.T_Liste_Fractals);
+
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Charger_List                                                                     --
+   -- But     : Charger toutes les fractals contenues dans un fichier                            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Le nom du fichier                                                              --
+   --                                                                                            --
+   --  In out : * La liste de fractals                                                           --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------
+   procedure Charger_Liste (Nom_Fichier : String; Liste : in out Power_Types.T_Liste_Fractals);
+
+   
+   ------------------------------------------------------------------------------------------------
+   -- Nom     : Rendre_Bmp                                                                       --
+   -- But     : Rendre un fichier image au format bmp (a l'aide de la library BMPLib)            --
+   --                                                                                            --
+   -- Parametres ----------------------------------------------------------------------------------
+   --  In     : * Les dimensions du bmp : Largeur_Zone et Hauteur_Zone                           --
+   --           * La fractal a rendre   : Cara_Fractal                                           --
+   --           * Le nom du fichier bmp : Nom_Fichier                                            --
+   --                                                                                            --
+   ------------------------------------------------------------------------------------------------  
+   procedure Rendre_Bmp (Fractal : Power_Types.Cara_Fractal;
+             Nom_Fichier : String; Largeur_Zone : Natural := 1024; Hauteur_Zone : Natural := 768);
+
+
+end Power_IO;
\ No newline at end of file
diff --git a/Src/power_bmp.ali b/Src/power_bmp.ali
new file mode 100644 (file)
index 0000000..a5ffbda
--- /dev/null
@@ -0,0 +1,21 @@
+V "GNAT Lib v3.13 "
+P NO
+R nnnnnnnnnnnnnnnvnvnvnnnnnnnnnnnnnnnnnnnnnnn
+
+U power_bmp%s          power_bmp.ads           0C74EFFA PK
+W power_types%s                power_types.ads         power_types.ali
+
+D ada.ads              19941113120442 2359F9ED
+D a-charac.ads         19951215131236 38C1E46A
+D a-chlat1.ads         19951215131244 2E99BCFF
+D power_bmp.ads                20010714063812 427BFDB1
+D power_types.ads      20010714064054 4E0F124B
+X 4 power_bmp.ads
+12U9*Power_Bmp
+20U14*Ecrire_Bmp
+20a26 Matrice_Image
+20s63 Nom_Fichier
+X 5 power_types.ads
+11U9*Power_Types 4|10r6 10r23
+31A9*T_Matrice_Tampon 4|20r45
+
diff --git a/Src/powerfractal.ada b/Src/powerfractal.ada
new file mode 100644 (file)
index 0000000..0aaa630
--- /dev/null
@@ -0,0 +1,74 @@
+------------------------------------------------------------------------------------------------
+-- Nom         : Power Fractal                                                                --
+-- Auteurs     : Gregory Burri & Adrien Crivelli                                              --
+-- Date        : 12.07.2001                                                                   --
+-- Version     : 1.0                                                                          --
+--                                                                                            --
+-- Outils de compilation  : ObjectAda V7.2                                                    --
+-- Outils supplementaires : Spider, bibliotheque de dessin rudimetaire                        --
+--                                                                                            --
+-- Platformes  : Windows 4 et nt                                                              --
+--                                                                                            --
+-- Description : Programme permettant le dessin de fractals de l'ensemble de Mandelbrot       --
+--               et de l'ensemble de Julia, il met a diposition plusieurs outils              --
+--               permattant de zoomer, de centrer de definir certains parametres propres aux  --
+--               fractals et de sauvegarder au format pof un fractal ou encore de la rendre   --
+--               dans un fichier bmp. De plus il permet de definir un degrade de couleur      --
+--               qui sera applique a la fractal.                                              --
+--                                                                                            --
+--               Pour plus de renseignement veuillez consulter la doc, ou le site officiel :  --
+--                      http://pifou.servehttp.com/powerfractal                               --
+--                                                                                            --
+------------------------------------------------------------------------------------------------
+
+with Spider; --Bibliotheque de dessin spider
+with Spider.Draw;
+
+with Ada.Text_IO; use Ada.Text_IO;  --Entree-sortie de texte
+
+with Power_Types; use Power_Types;
+with Power_Console;
+with Power_List;
+
+
+-------------------------------------------------------------------------------------------------
+--Procedure principale                                                                         --
+-------------------------------------------------------------------------------------------------
+procedure Power_Fractal_Main is
+
+   --La liste de fractals initialisee avec des exemple
+   Liste : T_Liste_Fractals := Power_List.Liste_Defaut;
+
+----------------------------------------------------------------------------------------------
+--MAIN                                                                                      --
+----------------------------------------------------------------------------------------------
+begin -- Power_Fractal_Main
+
+   Put_Line("                   -=-=-=-=-=-Power Fractal 1.0-=-=-=-=-=- ");
+   Put_Line("                                                     -=by pifou and kiki=-");
+   New_Line;
+   Put_Line("Press 'return' and choose a fractal");
+   New_Line(3);
+   Put_Line(" When you are on command line :");
+   Put_Line("  HELP           => to view the list of all commands");
+   Put_Line("  HELP <command> => to view a short description about the command");
+   Skip_Line;
+
+   Spider.Init_Window("Power Fractal"); --Ouverture de la fenetre spider
+
+   --Reinitialise le contenu de la fenetre graphique
+   Spider.Draw.Set_Color_Background(Spider.Draw.Black); Spider.Clear_Window;
+
+   Power_Console.Console(Liste, Prompt);
+
+   Power_List.Vider_Liste(Liste);
+
+   New_Line(4);
+   Put_Line("                    Thanks for use this program    :-)");
+   New_Line(5);
+   Put("                            Press 'return' to quit");
+   Skip_Line;
+   
+end Power_Fractal_Main;
+
+
diff --git a/bmps/Exemple 2.JPG b/bmps/Exemple 2.JPG
new file mode 100644 (file)
index 0000000..322e6f8
Binary files /dev/null and b/bmps/Exemple 2.JPG differ
diff --git a/bmps/Exemple 2.bmp b/bmps/Exemple 2.bmp
new file mode 100644 (file)
index 0000000..fd1999c
Binary files /dev/null and b/bmps/Exemple 2.bmp differ
diff --git a/bmps/Exemple 3.JPG b/bmps/Exemple 3.JPG
new file mode 100644 (file)
index 0000000..cb37d56
Binary files /dev/null and b/bmps/Exemple 3.JPG differ
diff --git a/bmps/Exemple 3.bmp b/bmps/Exemple 3.bmp
new file mode 100644 (file)
index 0000000..0648d40
Binary files /dev/null and b/bmps/Exemple 3.bmp differ
diff --git a/bmps/Pifou - Fractal1.bmp b/bmps/Pifou - Fractal1.bmp
new file mode 100644 (file)
index 0000000..e0dcac8
Binary files /dev/null and b/bmps/Pifou - Fractal1.bmp differ
diff --git a/bmps/Pifou - Fractal2.bmp b/bmps/Pifou - Fractal2.bmp
new file mode 100644 (file)
index 0000000..54468db
Binary files /dev/null and b/bmps/Pifou - Fractal2.bmp differ
diff --git a/bmps/Pifou - Fractal3.bmp b/bmps/Pifou - Fractal3.bmp
new file mode 100644 (file)
index 0000000..6099ab0
Binary files /dev/null and b/bmps/Pifou - Fractal3.bmp differ
diff --git a/bmps/fractal_defaut.rar b/bmps/fractal_defaut.rar
new file mode 100644 (file)
index 0000000..0e92aaf
Binary files /dev/null and b/bmps/fractal_defaut.rar differ
diff --git a/bmps/others_samples.zip b/bmps/others_samples.zip
new file mode 100644 (file)
index 0000000..edfdaad
Binary files /dev/null and b/bmps/others_samples.zip differ