Obligement - L'Amiga au maximum

Vendredi 26 mai 2017 - 21:01  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : Blitz Basic - programme de traitement d'images (2e partie)
(Article écrit par Mathieu Chènebit et extrait d'Amiga News - mars 1997)


Cette fois, nous allons faire plus court que le mois dernier (mais toujours aussi concentré ;-)). Nous nous attarderons sur quelques points pour améliorer le programme principal du précédent numéro. Attention, je vous préviens avant de commencer qu'il est préférable, mais pas indispensable, d'avoir lu et recopié l'exemple du mois dernier.

Pour ceux qui ne l'ont pas (les pauvres !), il reste toujours la possibilité de le commander. Pour commencer, je vais vous expliquer quelques petites choses qui vous rendront de grands services, les includes. Sous ce mot barbare, se cache la possibilité d'inclure des bouts de codes qui sont dans des fichiers séparés dans notre programme principal. Cela permet d'alléger grandement le source. Pour cela, il suffira juste d'utiliser deux malheureuses commandes : INCDIR et INCLUDE. Je vous explique par un exemple simple : la capture de la police du Workbench (je ne reviens pas sur les explications, pour cela, reportez-vous à cet article). Tapez le bout de programme suivant :

Blitz Basic

...et sauvez-le sous le nom "DH1:WBFont.inc". Maintenant, chargez FX et coupez ce morceau de programme. A la place copiez juste les deux lignes qui suivent :

INCDIR "DH1:" ; indique au Blitz dans quel répertoire il trouvera les includes.

INCLUDE "WBFont.inc" ; nom de l'include.

Le tour est joué ! Le compilateur remplacera ces deux lignes par le bout de code original. Vous pouvez bien entendu faire de même avec d'autres parties du programme. C'est très simple et vos différents sources gagneront considérablement en clarté.

Passons à quelque chose de plus concret si je puis dire. Nous allons ajouter quelques fonctions à notre programme. La première chose à rajouter est un bouton "Undo" (ce qui signifie, je précise pour les anglophobes, défaire). Afin que celui-ci soit accessible à tout moment, nous allons le placer sur la barre de titre de l'écran dans une GTList (et bien évidemment une fenêtre) spécialement créée pour l'occasion. Et puisqu'il risque de s'ennuyer tout seul là-haut, plaçons à côté de lui son compère le bouton d'appel de l'aide en ligne. Voici pour la déclaration de ces gadgets :

; Ces quelques lignes sont à placer avec les autres constantes en début de programme
#TMP=11 ; numéro du bitmap temporaire pour l'effet de rotation.
#TMP2=12 ; numéro du bitmap utilisé pour l'undo.
#PALTMP=11 ; numéro de la palette utilisée pour l'undo.

#GTTOP=3
#WTOPGADG=4

; Celle-ci doit être avec les autres lignes d'ouverture de fenêtres
Window #WTOPGADG.SLargeur-103,0,80,FontHeight+2,$800,"",1,2 ;

Les variables FontHeight et SLargeur ont déjà été initialisées dans la parité principale de notre programme (Cf. mois dernier).

; A placer devant les déclarations des GTList GTGZZPosition On ; cette commande va vous permettre d'ajuster les coordonnées de vos gadgets si la fenétre possède le drapeau "GimmeZZ" activé !
; A placer après la déclaration des autres GTList
GTButton #GTTOP,1,0,0,40.FontHeight+2,"Undo",0
GTButton #GTTOP,2,41,0,40,FontHeight+2,"Help",0
AttachGTList #GTTOP,#WTOPGADG

Occupons-nous maintenant de la gestion de ces deux gadgets. Pour commencer, l'undo. Il sera utilisable une fois seulement (comme dans Deluxe Paint) et annulera donc la dernière action effectuée. Afin d'éviter une surcharge excessive en mémoire en copiant chaque image dans un bitmap temporaire, nous copierons l'image courante sur un seul et unique bitmap et, ce, seulement quand nous effectuerons un effet. Il suffit juste de copier le bitmap original sur un autre, et de faire la même chose avec la palette. Quand notre utilisateur cliquera sur le bouton "Undo", on se contentera de recopier les bitmap et palette temporaires sur les originaux. Le tour sera joué !

La gestion de l'aide en ligne va être un poil plus compliquée. Notre utilisateur, désireux de lire la documentation AmigaGuide de notre programme tout en se servant de ce dernier, ne va pas forcément se contenter de cliquer sur le gadget "Help", il pourra aussi appuyer sur la touche du même nom (quelle drôle d'idée ;-)). Il va donc falloir gérer cela de deux manières différentes, et donc utiliser une étiquette pour ne pas recopier deux fois le même code.

; Ces quelques lignes doivent être insérées dans la boucle principale de gestion des évènements.

Blitz Basic

; Recopiez maintenant les lignes suivantes tout à la fin de votre source, avec les autres étiquettes
.Aide
doc$="DH1:FX.guide" ; remplacez ce nom par celui de votre choix.
(attention néanmoins, il faut qu'il s'agisse d'un fichier AmigaGuide déjà existant)
ShowScreen 0 ; on repasse sur l'écran du Workbench
SucExe=Execute_("Run C:amigaguide "+docS,0,0) ; on utilise la commande AmigaGuide (ou Multiview, c'est à vous de choisir) pour afficher notre document.
If SucExe=0 ; au cas où il y ait un problème...
Suc=RTEZRequest("Error !","Cannot open Help File","_Okay",2,0,4)
EndIf
Return

Ce sera tout pour cette fois. Le mois prochain j'inaugurerai si tout va bien une sous-rubrique "Les grands utilisateurs du Blitz". Sous ce titre quelque peu pompeux (je le reconnais ;-)) se cache... vous ! En effet, j'aimerais bien que les lecteurs m'envoient leurs réalisations en Blitz pour que je puisse en parler dans un petit encadré. Pour me les faire parvenir, rien de plus simple : écrivez au journal qui transmettra ou à l'adresse électronique suivante pour les connectés : matc999@spidernet.tm.fr.

J'attends tous vos projets avec une grande impatience !


[Retour en haut] / [Retour aux articles]