Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
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 :
...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.
; 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 !
|