3513659473

3513659473



PROGRAMMATION EN BLITZ BASIC par Mathieu Chenebit

Blitz Basic

Programme de traitement d'images lere partie

Ca y est ! J'ai enfin trouvś le programme qui va nous occuper durant plusieurs numeros. Je suppose qu'en lisant attentivement Amiga News, vous avez remarquś ia rubrique de Barrou Diallo sur le traitement numerique des images. Et bien, figurez-vous que nous allons mettre ses cours en pratique afin d'obtenir notre pro-pre soft de traitement d'images (genre GFX LAB par exemple). At tention, cet article va etre un peu theorique du fait qu'il faut jeter les bases de notre programme sur papier.

Cahier des charges

C’est la premiere chose a faire avant de se lancer dans Iścriture d'un programme. Celui-ci peut se faire dans votre tete, ou bien sur papier, suivant l'envergure du projet. II est de toutes manieres prefe-rable d’en faire un pour śviter de rśścrire plusieurs fois les memes routines. Dans notre cas, il nous faut plusieurs choses: un programme multi-images (comme Photogenics), multi-effets, gśrant de 2 ś 256 couleurs (Amiga AGA seulement), possedant un Undo, loca-lisś, disposant d’une aide en ligne et bien entendu systśme. Les deux premiers points vont impliquer une grandę modularitś de manierę ś ce que nous n ayons pratiquement rien a modifier en rajou-tant des effets ou en utilisant plusieurs images. Nous n’allons malheureusement pas tout traiter dans cet article, faute de place, mais ne vous inquietez pas. vous en decouvrirez un peu plus le mois prochain.

Misę en pratique

Pour ce qui est de 1'interface graphique, nous allons ouvrir notre propre ścran (c est plus simple pour nous que de l’ouvrir sur 1'ecran du WorkBench) mais tout en laissant a 1’utilisateur la possibilitś de

choisir quel modę d ścran il dśsire. Nous allons donc creer un re-quester de screenmode tout simple. Ensuite, il va falloir dśfinir des menus. Nous aurons : Charger, Sauver. Sauver Sous. Voir (pour voir notre image en plein ścran et non pas dans la seule fenśtre de previ-sualisation), Infos (informations concernant 1'image), Ouitter. De plus, il va donc nous falloir trois fenśtres : une pour les effets, une conte-nant la listę de nos images, et une fenetre de prśvisualisation affi-chant une partie de 1'image active. Notez qu'on pourrait tout aussi bien associer une fenetre a chaque image pour pouvoir en afficher plusieurs en mśme temps, mais cela ralentirait d'autant le programme et la consommation en RAM grimperait en flśche. On va donc se passer de cette option Attachons-nous ś la fenetre des effets: pour que 1'utilisateur puisse faire un choix le plus simplement du monde. nous allons avoir recours a un ListView (cf Amiga News an-tśrieurs). Pour notre fenetre contenant les noms des images char-gees. nous allons faire appel a des GTButton qu’on reinitialise ś cha-que chargement d'une image On aurait pu aussi bien utiliser un List-View, mais autant vous faire voir un peu de tout;-) Certains program-mes affichent 1’image reduite, mais j'ai trouvś cette possibilitś beau-coup trop lente pour les petites configurations. Nśanmoins, les gros-ses configurations pourront s'y essayer avec les commandes Redu-ceX2, Scalę, GetAShape et enfin WBIit pour "coller'' vos etiquettes. La fenetre de previsualisation est quant a elle toute simple : nous nous contenterons d'y coller une partie des images (d’ou le terme PreView) avec la commande BitmapToWmdow. Maintenant, attar-dons-nous un petit peu sur le modę multi-images. Pour arriver a cela, il nous faudra crśer une table d'un type nouveau (NEWTYPE) appele tout simplement ... picture :-) Nous devons dśfinir les champs de notre NewType: pour cela. il faut penser aux informations a stocker concernant notre image. II nous faut son numśro. le nu-mśro de sa palette (ce dernier est optionnel car c'est le meme que le numśro de 1’image, nśanmoins je 1'utilise pour plus de clartś dans mes routines), le nombre de plans. le nombre de couleurs (lui aussi optionnel, il est obtenu a partir du nombre de plans), la hauteur de 1’image, sa largeur, son ViewMode, son chemin d'accśs et son nom. Ouf, c’est fini! Comme vous pouvez donc le constater. c'est donc un NewType assez imposant que nous allons utiliser. Mais cette stature

WBStartupNcO WbToScreen 0 ShowScroen 0

DEFTYPE .1 IferMM »enFX IfenPRE DEFTYPE b valeur,FontHe ght

H isRf>qTooisActM>o-i . or effectue ce petit tost af n de sassuror que la Regtools.hbrary est b»en prś-sentp

ReqNonActiveoEasyReQuesłf Errof !\'Cannoł oper Reqtools iib+ChrSOOKPlease check It and retry/Onay*)

ForbidjEnd

Endlf

#TMP=11 ; numśro du bitmap tcmporaire pocr 1'effet do rotalion

: constantes des drftśrentes ferśtres #SM-0 . fenetre ScreenMode #IM=1 ; fenśtre ,maqe sślcctiornśe #FX=? ; fenśtre oi.tLs *PRE=3 . fenśtre preutew #VIFW^4 ; lenśtre visuaksa#on p.eme

; Numćroc des diffśrenles GTList donl nous allons avoir bescin #GTTOOLS=0 : fenśtre outls #GTIMAGES-1 . fenetre sślecton #GTSCREENMOOE-2: fnnAtre ScreenMoae

W ReadFiln(0.'ENV Sysflom prefs*); C esi la mńrrc routirotto que le mr.is oemier pour sais>r la polioe de r.aractere par dćfaut Fields 0.vaeur

k-??6 ; 62 pour les icśnes 226 par defaut • 390 pour I'ścran

KU

Get O.g

Font$ -Font$vChr$(valeur)

9*1

Untl vaeur<33 Forrt$=Unleft$(Font$. 1)

Got O k 3

FontHe»ghi-vaieur

GoseFtoO

If Exists(*Fonts' +FonlS)

LoadFont O.FontS.FontHeight; on charge cette pofcce Endlf Endlf

MaaLen SvChS*192 ; on dśfinil la taiie maxlmum pour les chaines de chargement et de

sauveqarde des images

Marlen SvNomS-l9?

MaaLcn LdCh$-l92 MaxLen LdNom$ri92

WHYIM=?16WHFX-204

SLargeu r=WBWKflh

SMauteur=WBHeight

If WBWdth>=-350 Thcn taqecran=S8000

H WRWdlh>-800 Then tagecran^S8020

H WBHeigHt>-320 Then lagecran*$4;WHYIM~4?2 WHFX=460

NEWTYPE peture parte TRES impertante le type pteture Num w: numśro du bitmap NumPal: numśro de la palette

Plans . nombre de plans NBC ; nombre do couleurs Hauteur Largeur

VM ; !e ViewMcde de timage Acces s ; son chcmn d'accśs Nom s; son nom seulement End NEWTYPE

NEWTYPE .toołs Tpos.w Tnoms

End NEWTYPE

NEWTYPE .Ser Epos w Etext s

End NEWTYPE

Oim image picture (10); 10 images maxi. c‘cst largement suffisant. SI vous śf«s

maso chisle. mottez ce nombre a 99 ;•)

Om chano.s (3)

Om mode$(3)

Om ScrM s (7)

Om List ouNs.lools (3)

Dłm Ust Ecran ser (7)

chainefOpYoułez vous effectuer un degradc' *Chr$(iO)+'on mvcaux dc gns ?" cłvj ne(iy^*Voule7 wous appliquer un eftd del,*Chr$(10)-»rnegativisation a votro image ?' chaire(2)=*Vou,ez vous appitquer un etfel * *Chr$(lO)+*rotation a vołre image V

modo$(0)=’Degrade Gris" mode$(i )="Negat»f modo$(2)-'Roiat»on*

While Adoitem(ouiiisO) : voic une mśthode pour rangęr une table List outifeO pns-z.mode${7)

Z4 1

We ryj

0k2 Addltem(EcranO) ; et en voiei une autre plus classique Fcran()\Epos-0 “Basse Pesoluttor"

ok?-AiadltBm(Ecran()) ; cela revient exactemeni au meme sauf que le premier cas est p.us court

Ecran()\Epos-1.*Basse Resdulion Enfrelacee'

ok2^Add«om(Ecran())

Ecran()\EpoR^?."Hairte Resolulon* ok2=Addltem(Ecran())

EcranO\Epos-:3,‘Haute ResoU.tion En1relaceeu ok2=Adoltem(Ecran())

Ecran()\Epos-4.'Supcr Haute Resolution' ok2=Addlterr(Ecran())

Ecrany\Epos-5,"Super Haute Resolution Fnlreiacee' ok2=Addltem{Ecran())

Fcran{)VEpos-6.*ldcntxJue au Worfcfierch"

Golo ScreenMode : on choisil rotre ścran Votr plus bas Pr9

Screen 1,0 0 SI argeur.SHautour8.tagocmn,'Sluoio FX*,1.2 ;oc ouvre notre ścran pnncpal..

Wmdow #IM,O.WHYlM.SLargeur.40 $i40E.' Images D spon Wes" 1.2.1 ; et »es fenśtres qu lui sent as-soośes

52


AmigoNews Fevrier 1997 N* 98



Wyszukiwarka

Podobne podstrony:
PROGRAMMATION EN BLUZ BASIC par Mathieu Chenebit Gosub UnLock Endlf Endlf If ItemHil- 2 ; routi
PROGRAMMATION EN E par Pierre Girard (armand@emi.u-bordeaux.fr)Amiga Easl.library Ce mois-ci, j ai c
110 Ce systeme cTaccumulation des points est mis en place soit par 1’hotel seul soit dans le cadre d
ceuvre dans le cadre des programmes en cours et son fonctionnement sera assure par les organi-sation
V. .V 1 I .1 • « « En remplagant bj: par aa valeur dans 1 ćąuation (8) pour chaąue oourbe de
107 reglement hors tribunaux de leur differend par la misę en uvre de la mediation. Le mediateur qui
1945 sels de diazonium par SO. et en traitant ensuiŁe Par HC1 conccntrć, obtenir le chlor-hydrate
#999 Un des serveurs racines de 1’Internet va etre mis en orbitę spatiale en grand secret par les US
uuuuuuuuuuuu ARTS MEDIAS #999 Le rapport Webbot est a surveiller, programme militaire cache tcste pa
#999 La Slovenie et la Croatie vont se livrer a des attentats par rapport a la baie de Piran. Piran
Programowanie w Accessie Visual Basic (Visual Basic for Application) jest w pełni funkcjonalnym języ
155 SPAHS Etudes experimantales sur la cooperation des longerons dans les ailes en porte a faux, par
68 (72) R Completez les phrases. F llwccnij zdania. 1. En Allemagne. on par Ir I 2.   &nb
Cette evolution fatale ne s’explique pas en dernier lieu par le fait que renjeu etait trop grand, et
caminho? filet graf □ = 1 carrd vide (1 B. 2 m. en l air) [g = 1 carrd plein (3 B). Terminer chague
52 Par ailleurs, et en lien avec la qucstion du maintien de la souverainete canadienne sur le territ
82 elements doivent etre pris en reflexion, tels que le fait que le traite devra etre acceptć par un
10 - Uhydratation de 1 obsidienne : la couche superficielle d un objet en obsidienne, alteree par la

więcej podobnych podstron