From: Greg Burri Date: Fri, 31 Jul 2009 16:07:23 +0000 (+0200) Subject: Premier commit X-Git-Url: https://git.euphorik.ch/?a=commitdiff_plain;h=c64b47f429175dc19a3cc992abbf08164cb8c534;p=powerfractal.git Premier commit --- c64b47f429175dc19a3cc992abbf08164cb8c534 diff --git a/ABout.TXT b/ABout.TXT new file mode 100644 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 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 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 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 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 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 index 0000000..fc473fe --- /dev/null +++ b/CD/Doc/GPL-licence FR.txt @@ -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 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 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 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 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 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 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 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 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 index 0000000..b8510bf --- /dev/null +++ b/CD/Lisez-moi.txt @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 0000000..0750bef --- /dev/null +++ b/CD/Src/Power_Bmp.adb @@ -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 index 0000000..9ef3469 --- /dev/null +++ b/CD/Src/Power_Bmp.ads @@ -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 index 0000000..e7618f8 --- /dev/null +++ b/CD/Src/Power_Colors.adb @@ -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 index 0000000..a804153 --- /dev/null +++ b/CD/Src/Power_Colors.ads @@ -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 index 0000000..c89f2ff --- /dev/null +++ b/CD/Src/Power_Console.adb @@ -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 => + (" [] the stuff in brackets[] is not neccessary", + " Im So Happy Cuz I Found My Friends... "), + + Info => + (" ", + " View some informations about the current fractal "), + + Choose => + (" [] ", + " Select a fractal in the list and draw it "), + + Switch => + (" ", + " Switch between Mandelbrot end Julia "), + + Zoom => + (" [] ", + " for zooming in the current fractal "), + + Zin => + (" [] ", + " Zoom in "), + + Zout => + (" [] ", + " Zoom out "), + + Center => + (" [ ] ", + " Center in a point of the fractal "), + + Iteration => + (" ", + " Set the number of iteration "), + + Limit => + (" ", + " Set the divergence limit "), + + Cst => + (" ", + " Set the complex number of 'c' (only for Julia) "), + + Angle => + (" ", + " Set the absolute value of angle "), + + Color => + (" ( ) ", + " Change one of colors. r, g and b are the channels "), + + Nbcolors => + (" ", + " 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 => + (" [ ] ", + " Render the fractal in a bmp file. x y are the resolution "), + + Create => + (" ", + " Create a new fractal in the list "), + + Del => + (" ", + " View some informations about the curent fractal "), + + Save => + (" ", + " Save the current fractal in a file "), + + Load => + (" ", + " Load a fractal from a file "), + + Savelist => + (" ", + " Save the list of fractal in a file "), + + Loadlist => + (" ", + " 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 index 0000000..c034843 --- /dev/null +++ b/CD/Src/Power_Console.ads @@ -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 index 0000000..4618589 --- /dev/null +++ b/CD/Src/Power_Draw.adb @@ -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 index 0000000..5300618 --- /dev/null +++ b/CD/Src/Power_Draw.ads @@ -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 index 0000000..ea1bda7 --- /dev/null +++ b/CD/Src/Power_List.adb @@ -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 index 0000000..071acc9 --- /dev/null +++ b/CD/Src/Power_List.ads @@ -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 index 0000000..8a9f97c --- /dev/null +++ b/CD/Src/Power_Tools.adb @@ -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 index 0000000..cbf6836 --- /dev/null +++ b/CD/Src/Power_Tools.ads @@ -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 index 0000000..34b5181 --- /dev/null +++ b/CD/Src/Power_Types.ads @@ -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 index 0000000..c8998cb --- /dev/null +++ b/CD/Src/Power_calculator.adb @@ -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 index 0000000..64d4a98 --- /dev/null +++ b/CD/Src/Power_calculator.ads @@ -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 index 0000000..258ef3a --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/Draw.adb @@ -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 index 0000000..135b35c --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/Draw.ads @@ -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 index 0000000..3401ddf --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/Spider.adb @@ -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 index 0000000..ec5f086 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/Spider.ads @@ -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 index 0000000..42cb3ec --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/User.adb @@ -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 index 0000000..c4409f7 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Ads/User.ads @@ -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 index 0000000..4640820 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Exemple/Test.cpp @@ -0,0 +1,109 @@ +// Librairie a utiliser: +// +// D:\Michel\MesAppl\Spider_DLL\Spider\Debug\Spider.lib + +#include +#include +#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 index 0000000..7d28727 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Exemple/test.ada @@ -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 index 0000000..e34da73 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Include/Spider.h @@ -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 index 0000000..91d0c55 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Include/SpiderDraw.h @@ -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 index 0000000..9b3f247 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Include/SpiderUser.h @@ -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 index 0000000..4667c43 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/ADA.LIB @@ -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 index 0000000..258ef3a --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/Draw.adb @@ -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 index 0000000..135b35c --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/Draw.ads @@ -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 index 0000000..3401ddf --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/Spider.adb @@ -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 index 0000000..ec5f086 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/Spider.ads @@ -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 index 0000000..ca2821b --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/UNIT.MAP @@ -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 index 0000000..42cb3ec --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/User.adb @@ -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 index 0000000..c4409f7 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/User.ads @@ -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 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 index 0000000..e1e7b61 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/adb/draw.iff @@ -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 index 0000000..524416f --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/adb/spider.iff @@ -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 index 0000000..0045b90 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/adb/user.iff @@ -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 index 0000000..3c6beb3 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/ads/draw.iff @@ -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 index 0000000..5f9f3a1 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/ads/spider.iff @@ -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 index 0000000..63ebfed --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/ads/test.iff @@ -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 index 0000000..769bc17 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Lib/info/ads/user.iff @@ -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 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 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 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 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 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 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 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 index 0000000..0584476 --- /dev/null +++ b/CD/Src/Spider - Graphic Library/Readme _25_10_00.txt @@ -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’une 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’accès à la librairie dynamique + +SpiderInstallation\ +EtUtilisation.doc : Notice d’installation et d’utilisation 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 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 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 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 index 0000000..8942da5 --- /dev/null +++ b/CD/Src/power_IO.adb @@ -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 index 0000000..d614bad --- /dev/null +++ b/CD/Src/power_IO.ads @@ -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 index 0000000..0aaa630 --- /dev/null +++ b/CD/Src/powerfractal.ada @@ -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 => 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 index 0000000..fc473fe --- /dev/null +++ b/Documentation/GPL-licence FR.txt @@ -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 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 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 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 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 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 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 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 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 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 index 0000000..d07f3f6 --- /dev/null +++ b/Documentation/adadoc/Power_Bmp.html @@ -0,0 +1,118 @@ + + + + + + +Power_Bmp (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Bmp

+ + + + +

 

+
+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withPower_Types
+  + + + + + + + + + + + + +
Clauses USE +
usePower_Types
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + +
Ecrire_Bmp (procédure) +
ParamètresNomTypepar défaut
ENTREEMatrice_ImageT_Matrice_Tampon
ENTREENom_FichierString
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_Colors.html b/Documentation/adadoc/Power_Colors.html new file mode 100644 index 0000000..555a726 --- /dev/null +++ b/Documentation/adadoc/Power_Colors.html @@ -0,0 +1,196 @@ + + + + + + +Power_Colors (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Colors

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + +
Clauses de contextes +
withSpider.Draw
withPower_Types
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + +
Inverse_Couleur (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIECouleurSpider.Draw.Tcolor
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Creer_Degrade (procédure) +
ParamètresNomTypepar défaut
ENTREEFractalPower_Types.Cara_Fractal
SORTIEDegradePower_Types.T_Tab_Couleur
ENTREELongueurInteger
+  + + + + + + + + + + + + + + + + + + + + + +
Affiche_Degrade (procédure) +
ParamètresNomTypepar défaut
ENTREEFractalPower_Types.Cara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Conversion_Couleur (fonction) +
ParamètresNomTypepar défaut
ENTREEMatricePower_Types.T_Matrice_Iteration
ENTREEDegradePower_Types.T_Tab_Couleur
RETOURPower_Types.T_Matrice_Tampon
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_Console.html b/Documentation/adadoc/Power_Console.html new file mode 100644 index 0000000..2f3c6d6 --- /dev/null +++ b/Documentation/adadoc/Power_Console.html @@ -0,0 +1,124 @@ + + + + + + +Power_Console (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Console

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + +
Clauses de contextes +
withPower_Types
withPower_List
+  + + + + + + + + + + + + + + + +
Clauses USE +
usePower_Types
usePower_List
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + +
Console (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEListeT_Liste_Fractals
ENTREEPromptString
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_Draw.html b/Documentation/adadoc/Power_Draw.html new file mode 100644 index 0000000..3be68f5 --- /dev/null +++ b/Documentation/adadoc/Power_Draw.html @@ -0,0 +1,247 @@ + + + + + + +Power_Draw (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Draw

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withSpider.Draw
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Boite (procédure) +
ParamètresNomTypepar défaut
ENTREEX1Natural
ENTREEY1Natural
ENTREEX2Natural
ENTREEY2Natural
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ligne_Matrice_Hori (procédure) +
ParamètresNomTypepar défaut
ENTREEX1Natural
ENTREEX2Natural
ENTREEYNatural
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ligne_Matrice_Vert (procédure) +
ParamètresNomTypepar défaut
ENTREEY1Natural
ENTREEY2Natural
ENTREEXNatural
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dessin_Croix (procédure) +
ParamètresNomTypepar défaut
ENTREEXNatural
ENTREEYNatural
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Efface_Croix (procédure) +
ParamètresNomTypepar défaut
ENTREEXNatural
ENTREEYNatural
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_List.html b/Documentation/adadoc/Power_List.html new file mode 100644 index 0000000..2a9d5ef --- /dev/null +++ b/Documentation/adadoc/Power_List.html @@ -0,0 +1,291 @@ + + + + + + +Power_List (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_List

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withPower_Types
+  + + + + + + + + + + + + +
Clauses USE +
usePower_Types
+  + + + + + + +

 

+

Déclarations

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + +
Exceptions +
Liste_Une_Fractal
Fractal_Inexistante
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + +
Ajouter (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEListe_FractalsT_Liste_Fractals
ENTREEFractalCara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Effacer (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEListe_FractalsT_Liste_Fractals
ENTREENumNatural
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Fractal_Num (fonction) +
ParamètresNomTypepar défaut
ENTREEListe_FractalsT_Liste_Fractals
ENTREENumNatural
RETOURT_Lien
+  + + + + + + + + + + + + + + + + + + + + + +
Vider_Liste (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEListe_FractalsT_Liste_Fractals
+  + + + + + + + + + + + + + + + + + + + + + +
Liste_Defaut (fonction) +
ParamètresNomTypepar défaut
RETOURT_Liste_Fractals
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nb_Fractals (fonction) +
ParamètresNomTypepar défaut
ENTREEListe_FractalsT_Liste_Fractals
RETOURNatural
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_Tools.html b/Documentation/adadoc/Power_Tools.html new file mode 100644 index 0000000..e417781 --- /dev/null +++ b/Documentation/adadoc/Power_Tools.html @@ -0,0 +1,226 @@ + + + + + + +Power_Tools (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Tools

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withPower_Types
+  + + + + + + + + + + + + +
Clauses USE +
usePower_Types
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dessiner_Fractal (procédure) +
ParamètresNomTypepar défaut
ENTREEFractalCara_Fractal
ENTREEXNatural0
ENTREEYNatural0
+  + + + + + + + + + + + + + + + + + + + + + +
Rafraichir_Couleur (procédure) +
ParamètresNomTypepar défaut
ENTREEFractalCara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + +
Zoom_Souris (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEFractalCara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + +
Centrer (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEFractalCara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Choix_Mosaic (fonction) +
ParamètresNomTypepar défaut
ENTREEListe_FractalsT_Liste_Fractals
RETOURNatural
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_Types.html b/Documentation/adadoc/Power_Types.html new file mode 100644 index 0000000..f0608f5 --- /dev/null +++ b/Documentation/adadoc/Power_Types.html @@ -0,0 +1,525 @@ + + + + + + +Power_Types (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Types

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + +
Clauses de contextes +
withAda.Characters.Latin_1
withSpider.Draw
+  + + + + + + +

 

+

Déclarations

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Constantes +
NomTypeInitialisation
Hauteur_Ecran399
Largeur_Ecran639
Rayon_Int_Croix2
Rayon_Ext_Croix6
Hauteur_Degrade5
Facteur_Zin4.0
Facteur_Zout4.0
Zoom_Min0.1
Nb_Iteration_Min6
Longueur_Max50
Nb_Couleur_Max10
PromptString "> "
Couleur_CadreSpider.Draw.Tcolor ( 255 , 255 , 200 )
Couleur_NumerosSpider.Draw.Tcolor ( 255 , 255 , 200 )
EchapeCharacter Ada.Characters.Latin_1.Esc
VideCharacter Ada.Characters.Latin_1.Nul
EspaceCharacter Ada.Characters.Latin_1.Space
Fractal_Initial_JuliaCara_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_MandelCara_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 +
NomTypeInitialisation
Matrice_Iteration_GlobalT_Matrice_Iteration_2
Matrice_Tampon_EcranT_Matrice_Tampon( 0 .. Largeur_Ecran , 0 .. Hauteur_Ecran )
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Types +
NomDéclaration
Bytemod 256
T_Matrice_Tamponarray ( Natural range <> , Natural range <> ) of T_Couleur
T_Ensemble( Julia , Mandelbrot )
T_Tab_Couleurarray ( Natural range <> ) of T_Couleur
T_Matrice_Iterationarray ( Integer range <> , Integer range <> ) of Natural
T_Lienaccess T_Fractal
+  + + + + + + + + + + + + + + + + + +
Sous types +
NomDéclaration
T_Nb_CouleurInteger range 2 .. Nb_Couleur_Max
+  + + + + + + + + + + + + + + + + + + + + + + + + + +
T_Couleur (article) +
ChampTypepar défaut
RByte
GByte
BByte
+  + + + + + + + + + + + + + + + + + + + + + +
T_Centre (article) +
ChampTypepar défaut
XLong_Float0.6
YLong_Float0.0
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cara_Fractal (article) +
DiscriminantTypepar défaut
EnsembleT_EnsembleMandelbrot
Nb_CouleurT_Nb_Couleur4
ChampTypepar défaut
NB_Iteration_MaxPositive50
C_Diverge_LimiteLong_Float4.0
ZoomLong_Float1.0 / 4.0
CentreT_Centre( 0.6 , 0.0 ) Angle : Long_Float 0.0
CouleurT_Tab_Couleur(1..Nb_Couleur)( ( 255 , 0 , 0 ) ( 0 , 255 , 0 ) ( 0 , 0 , 255 ) ( 255 , 255 , 0 )
AntialiasingBooleanFalse
Dessine_DegradeBooleanFalse
Partie variante
Ensemble = Julia
CxLong_Float0.577
CyLong_Float0.468
Ensemble = Mandelbrot
null
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T_Matrice_Iteration_2 (article) +
DiscriminantTypepar défaut
AntialiasingBooleanFalse
ChampTypepar défaut
Partie variante
Antialiasing = False
Matrice_IterationT_Matrice_Iteration(0..Largeur_Ecran,0..Hauteur_Ecran)
Antialiasing = True
Matrice_Iteration_AntiT_Matrice_Iteration(0..Largeur_Ecran*2+1,0..Hauteur_Ecran*2+1)
+  + + + + + + + + + + + + + + + + + + + + + +
T_Fractal (article) +
ChampTypepar défaut
FractalCara_Fractal
SuivT_Lien
+  + + + + + + + + + + + + + + + + + + + + + +
T_Liste_Fractals (article) +
ChampTypepar défaut
TeteT_Liennull
Nb_FractalsNatural0
+  + + + +  + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/Power_calculator.html b/Documentation/adadoc/Power_calculator.html new file mode 100644 index 0000000..96b9020 --- /dev/null +++ b/Documentation/adadoc/Power_calculator.html @@ -0,0 +1,220 @@ + + + + + + +Power_Calculator (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_Calculator

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withPower_Types
+  + + + + + + + + + + + + +
Clauses USE +
usePower_Types
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + +
Calcul_Antialiasing (fonction) +
ParamètresNomTypepar défaut
ENTREEMatrice_AntialiasingT_Matrice_Tampon
RETOURT_Matrice_Tampon
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Change_Angle (procédure) +
ParamètresNomTypepar défaut
ENTREE_SORTIEALong_Float
ENTREE_SORTIEBLong_Float
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mandel_Gen (fonction) +
ParamètresNomTypepar défaut
ENTREELargeur_ZoneNatural
ENTREEHauteur_ZoneNatural
RETOURT_Matrice_Iteration
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Julia_Gen (fonction) +
ParamètresNomTypepar défaut
ENTREELargeur_ZoneNatural
ENTREEHauteur_ZoneNatural
RETOURT_Matrice_Iteration
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/adadoc/power_IO.html b/Documentation/adadoc/power_IO.html new file mode 100644 index 0000000..74a6a8a --- /dev/null +++ b/Documentation/adadoc/power_IO.html @@ -0,0 +1,261 @@ + + + + + + +Power_IO (Paquetage ADA95) + + + + + + + + + +

Paquetage Power_IO

+ + + + +

 

+

Clauses

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Clauses de contextes +
withPower_Types
+  + + + + + + +

 

+

Déclarations

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + +
Exceptions +
Erreur_Fichier
+  + + + + + + +

 

+

Sous programmes

+

Accès direct : +Clauses -  +Partie générique -  +Déclarations -  +Sous programmes


+ + + + + + + + + + + + + + + + + + + + + + + + + +
Enregistrer_Fractal (procédure) +
ParamètresNomTypepar défaut
ENTREENom_FichierString
ENTREEFractalPower_Types.Cara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Charger_Fractal (fonction) +
ParamètresNomTypepar défaut
ENTREENom_FichierString
RETOURPower_Types.Cara_Fractal
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enregistrer_Liste (procédure) +
ParamètresNomTypepar défaut
ENTREENom_FichierString
ENTREEListePower_Types.T_Liste_Fractals
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Charger_Liste (procédure) +
ParamètresNomTypepar défaut
ENTREENom_FichierString
ENTREE_SORTIEListePower_Types.T_Liste_Fractals
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Rendre_Bmp (procédure) +
ParamètresNomTypepar défaut
ENTREEFractalPower_Types.Cara_Fractal
ENTREENom_FichierString
ENTREELargeur_ZoneNatural1024
ENTREEHauteur_ZoneNatural768
+  + + + + +

généré par AdaDoc le 18. 7. 2001

+ diff --git a/Documentation/koch1.jpg b/Documentation/koch1.jpg new file mode 100644 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 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 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 index 0000000..2dcdf72 --- /dev/null +++ b/FRACTALE espionnage/fuck.ada @@ -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 index 0000000..d26278e --- /dev/null +++ b/FRACTALE espionnage/palette0.pal @@ -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 index 0000000..5d5da1f --- /dev/null +++ b/FRACTALE espionnage/palette1.pal @@ -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 index 0000000..394c926 --- /dev/null +++ b/FRACTALE espionnage/palette2.pal @@ -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 index 0000000..7cf4bb4 --- /dev/null +++ b/FRACTALE espionnage/palette3.pal @@ -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 index 0000000..bf2e7a8 --- /dev/null +++ b/FRACTALE espionnage/palette4.pal @@ -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 index 0000000..2c3f5b8 --- /dev/null +++ b/FRACTALE espionnage/palette5.pal @@ -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 index 0000000..0944663 --- /dev/null +++ b/FRACTALE espionnage/palette6.pal @@ -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 index 0000000..5ea3b1a --- /dev/null +++ b/FRACTALE espionnage/palette7.pal @@ -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 index 0000000..4eadac0 --- /dev/null +++ b/FRACTALE espionnage/palette8.pal @@ -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 index 0000000..8376c88 --- /dev/null +++ b/FRACTALE espionnage/palette9.pal @@ -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 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 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 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 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 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 index 0000000..524a46d --- /dev/null +++ b/Install/GPL (license).txt @@ -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 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 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 index 0000000..4abaadb --- /dev/null +++ b/Install/Power Fractal.nsi @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 0000000..199a419 --- /dev/null +++ b/PoFGui/ADA.LIB @@ -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 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 index 0000000..c5d4565 --- /dev/null +++ b/PoFGui/MSComCtl2_FlatScrollBar.ada @@ -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 index 0000000..1c888f0 --- /dev/null +++ b/PoFGui/MSComctlLib_Slider.ada @@ -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 index 0000000..0efb370 --- /dev/null +++ b/PoFGui/Main.rsp @@ -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 index 0000000..033bcad --- /dev/null +++ b/PoFGui/Main_Win.ada @@ -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 index 0000000..53aaaca --- /dev/null +++ b/PoFGui/Main_Win.ada.0 @@ -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 index 0000000..5910ab8 --- /dev/null +++ b/PoFGui/Main_Win.ada.1 @@ -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 index 0000000..5910ab8 --- /dev/null +++ b/PoFGui/Main_Win.ada.2 @@ -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 index 0000000..5910ab8 --- /dev/null +++ b/PoFGui/Main_Win.ada.3 @@ -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 index 0000000..12b5a56 --- /dev/null +++ b/PoFGui/Main_Win.rc @@ -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 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 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 index 0000000..3e3e164 --- /dev/null +++ b/PoFGui/Pkg_Outils_Fractals.adb @@ -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 index 0000000..566bdde --- /dev/null +++ b/PoFGui/Pkg_Outils_Fractals.ads @@ -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 index 0000000..a57f284 --- /dev/null +++ b/PoFGui/PowerFractal.rsp @@ -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 index 0000000..7a73224 --- /dev/null +++ b/PoFGui/Project1.gbp @@ -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 index 0000000..f43eadf --- /dev/null +++ b/PoFGui/Project1.rc @@ -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 index 0000000..1440e07 --- /dev/null +++ b/PoFGui/Public.ada @@ -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 index 0000000..e6dca31 --- /dev/null +++ b/PoFGui/TheEnd.dat @@ -0,0 +1 @@ +DONE diff --git a/PoFGui/UNIT.MAP b/PoFGui/UNIT.MAP new file mode 100644 index 0000000..cd345c0 --- /dev/null +++ b/PoFGui/UNIT.MAP @@ -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 index 0000000..60de391 --- /dev/null +++ b/PoFGui/gbBuild.bat @@ -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 index 0000000..e69de29 diff --git a/PoFGui/gbStgDoc.gbs b/PoFGui/gbStgDoc.gbs new file mode 100644 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 index 0000000..a60c0d6 --- /dev/null +++ b/PoFGui/gnat.ago @@ -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 index 0000000..41cdc9a --- /dev/null +++ b/PoFGui/info/ada/main_win.iff @@ -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 index 0000000..9e33bb4 --- /dev/null +++ b/PoFGui/info/ada/mscomctl2_flatscrollbar.iff @@ -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 index 0000000..8ed2428 --- /dev/null +++ b/PoFGui/info/ada/mscomctllib_slider.iff @@ -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 index 0000000..69ae071 --- /dev/null +++ b/PoFGui/info/ada/public.iff @@ -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 index 0000000..364cf3c --- /dev/null +++ b/PoFGui/msg/ada/comctl2_animation.msg @@ -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 index 0000000..20ab23a --- /dev/null +++ b/PoFGui/msg/ada/comctl3_coolbar.msg @@ -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 index 0000000..2b9befa --- /dev/null +++ b/PoFGui/msg/ada/comctl_imagelist.msg @@ -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 index 0000000..36314e2 --- /dev/null +++ b/PoFGui/msg/ada/directanimation_directanimationintegratedmedia.msg @@ -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 index 0000000..a0babfb --- /dev/null +++ b/PoFGui/msg/ada/directanimation_directanimationwindowedintegratedmedia.msg @@ -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 index 0000000..d90edfb --- /dev/null +++ b/PoFGui/msg/ada/directanimation_path.msg @@ -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 index 0000000..a1bb211 --- /dev/null +++ b/PoFGui/msg/ada/directanimation_sequencer.msg @@ -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 index 0000000..cd9c3b5 --- /dev/null +++ b/PoFGui/msg/ada/directanimation_sprite.msg @@ -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 index 0000000..78456fc --- /dev/null +++ b/PoFGui/msg/ada/directanimation_structuredgraphics.msg @@ -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 index 0000000..dbc7c67 --- /dev/null +++ b/PoFGui/msg/ada/dsstatusbar_dsstatusbar.msg @@ -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 index 0000000..06cfc5b --- /dev/null +++ b/PoFGui/msg/ada/microsoft_activexplugin.msg @@ -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 index 0000000..24a18a3 --- /dev/null +++ b/PoFGui/msg/ada/mscomctl2_animation.msg @@ -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 index 0000000..6042e5b --- /dev/null +++ b/PoFGui/msg/ada/mscomctllib_imagecombo.msg @@ -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 index 0000000..a79234d --- /dev/null +++ b/PoFGui/msg/ada/mscomctllib_imagelist.msg @@ -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 index 0000000..8e4344e --- /dev/null +++ b/PoFGui/msg/ada/mscomctllib_prog.msg @@ -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 index 0000000..2aa6931 --- /dev/null +++ b/PoFGui/msg/ada/mscomctllib_sbar.msg @@ -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 index 0000000..a30856f --- /dev/null +++ b/PoFGui/msg/ada/mscomdlg_commondialog.msg @@ -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 index 0000000..f999f4b --- /dev/null +++ b/PoFGui/msg/ada/picclip_pictureclip.msg @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 0000000..0750bef --- /dev/null +++ b/Src/Power_Bmp.adb @@ -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 index 0000000..9ef3469 --- /dev/null +++ b/Src/Power_Bmp.ads @@ -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 index 0000000..b0c1051 --- /dev/null +++ b/Src/Power_Colors.adb @@ -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 index 0000000..d58ba6e --- /dev/null +++ b/Src/Power_Colors.ads @@ -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 index 0000000..d33d70e --- /dev/null +++ b/Src/Power_Console.adb @@ -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 => + (" [] the stuff in brackets[] is not neccessary", + " Im So Happy Cuz I Found My Friends... "), + + Info => + (" ", + " View some informations about the current fractal "), + + Choose => + (" [] ", + " Select a fractal in the list and draw it "), + + Switch => + (" ", + " Switch between Mandelbrot end Julia "), + + Zoom => + (" [] ", + " for zooming in the current fractal "), + + Zin => + (" [] ", + " Zoom in "), + + Zout => + (" [] ", + " Zoom out "), + + Center => + (" [ ] ", + " Center in a point of the fractal "), + + Iteration => + (" ", + " Set the number of iteration "), + + Limit => + (" ", + " Set the divergence limit "), + + Cst => + (" ", + " Set the complex number of 'c' (only for Julia) "), + + Angle => + (" ", + " Set the absolute value of angle "), + + Color => + (" ( ) ", + " Change one of colors. r, g and b are the channels "), + + Nbcolors => + (" ", + " 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 => + (" [ ] ", + " Render the fractal in a bmp file. x y are the resolution "), + + Create => + (" ", + " Create a new fractal in the list "), + + Del => + (" ", + " View some informations about the curent fractal "), + + Save => + (" ", + " Save the current fractal in a file "), + + Load => + (" ", + " Load a fractal from a file "), + + Savelist => + (" ", + " Save the list of fractal in a file "), + + Loadlist => + (" ", + " 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 index 0000000..c034843 --- /dev/null +++ b/Src/Power_Console.ads @@ -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 index 0000000..18d546b --- /dev/null +++ b/Src/Power_Draw.adb @@ -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 index 0000000..5300618 --- /dev/null +++ b/Src/Power_Draw.ads @@ -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 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 index 0000000..ea1bda7 --- /dev/null +++ b/Src/Power_List.adb @@ -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 index 0000000..071acc9 --- /dev/null +++ b/Src/Power_List.ads @@ -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 index 0000000..e4b09fc --- /dev/null +++ b/Src/Power_Tools.adb @@ -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 index 0000000..cbf6836 --- /dev/null +++ b/Src/Power_Tools.ads @@ -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 index 0000000..56c0ebc --- /dev/null +++ b/Src/Power_Types.ads @@ -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 index 0000000..eaa29d9 --- /dev/null +++ b/Src/Power_calculator.adb @@ -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 index 0000000..64d4a98 --- /dev/null +++ b/Src/Power_calculator.ads @@ -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 index 0000000..8538d9f --- /dev/null +++ b/Src/power_IO.adb @@ -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 index 0000000..d614bad --- /dev/null +++ b/Src/power_IO.ads @@ -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 index 0000000..a5ffbda --- /dev/null +++ b/Src/power_bmp.ali @@ -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 index 0000000..0aaa630 --- /dev/null +++ b/Src/powerfractal.ada @@ -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 => 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 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 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 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 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 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 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 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 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 index 0000000..edfdaad Binary files /dev/null and b/bmps/others_samples.zip differ

Clauses