Gosub UnLock Endlf Endlf
If ItemHil- 2 ; routine de sauvegarde sous ur autre nom Gosub Lock
CbSvS=ASLF.IeRequesl$(’CrioiSiSSe/ ur Chemin".SvCh$.SvNom$);
Atłenton, ne mślangez pas los diffśrentes chaines
łfChSv$o~
If Exists(SvCh$)
image(seO^Acces=ChSv$
image(sol)\Nom=SvNom$
SaveBitrrap imagefseiyWum.imagefseONAcces.imagefseiyyNumPal Endlf
Endlf
Gosub UnLock Endlf
łf llernHit-3 , routire pour voir Umage en plein ścrar
on ouvre un nouvel ścran
Wir.dow #VIFW,0,0.image(sel)\l.argcur.image(sei)\Hautour.$800.*“.1.2;
el ure nouvelie fenśtre
BrtMapioWirdow image(sel)\Num,*VIEW Use Palette imagfl(sei)\NurrPal Repeal; on attend pattomment ev? i=VValEvent
Untii ev2-$fl ; jusqu'a cc quc le bouton de la souris sort enfoncC Free Window <VIEW Free Screen 2 ShowScreen 1 Use Screen 1 Act*vate #PRE Endll
If HemHil-=4 ; reques1er dintormabons If commence= 1
USEPATH image(scf)
text$= Nom: ■♦\Nom-*Chr$(lO)
text$* Chemln •♦\Acces+Chr$(lOj
text$>'Nombre oe Coulours *+Sti3(\NBC)+Chr$(iO)
text$4'Largeur: *+StrS{\ł.argeur)+Chr$(10)
lext$*'Hauleur: '-*-StT$(\Hauteur): Str$() iransforme des chiffres en lettres (magique !) rtac-RTEZRequestC informabons Image'.lext$.*Ok*5.0.4)
Enolf
Endll
If ltomHil-5. quitter Gosub Gurt Endlf Endlf Endlf
If ev-S40
If EventWtndow-jWM ; sślection de i'image courante • śtapo TRES imporlanle. mais somme
loute assez simpie
sel=GadgotHii Use Window #PRE WCls
Use BilMap mage(sel)\Num BtiMaploWindow imaaefseiyNum.APRF Use Palette image(serf)\NumPai Endlf
If EvenfWindow-#TX ; choix de natrę effet HGadgetHi.i If commecc«=1 e^EverlCode
suoces-RTEZReqLesl( OperaieuF.chaine(e);' OklCancei'.2.1.4)
If succos=1
If e=0 Then Gosub D eg rade If e^1 Then Gosub NegaM If e-2 Then Gosub Rotation efłot-1 Endlf Erdlf Endlf Endll Fndlf
Untii qutler=1
For i=OTo gen-1 Free BitMap gen Freo Palette gen Next
For i=0 To 4 Free Window i Next
For ;=0 To 3 Free GTList i Next
Free Screen 1 Free Screen 2 Forbid End
RetreshGTUsI; pour rajouter des boulons łorgu'on charge une nouvelle image If commenco-1
DefachGTl ist «GT|MAGES Endlf x=-3
Forg-OTogen
lcng=Len(iniage(g)\Nom)
GTButton fGTlMAGFS.g.a.-^.longTontHeighti 10.26 irr.age{g)\Nom.O; c'est compliquA mais ęa
marche
X4 long‘FontHeigh|» 10 Next
AttachGTUst #GTIMAGES #IM Return
Lock
; cette pelite routme de rien du 1ou1 va vcus permotlre de meftre e poinfeur en posrtton 'occuppśe" (ces1 A dire lo pettt r uaqe A la plaoe de la flśche) et ce sur chacune de vos fenAtres IfeniM » RTLockWndow(#IM)
HenFX=RTLockWmdow(#FX)
IferPRE RTLockWmdow(rfPRE)
Return
UnLock
; ot celle ci va simplerrenl vous pormeltre de romettre ie pointeur dans sa pos<tion imtlale
RTUrHockWmdow itfM.ltenlM
PrTUnlockWindow *FX HenFX
RTUnockWmdow #PRE.ifenPRE
Return
Ouil
; Requester de sortie
okay-RTEZRoguestfOuesbon existencielie ..Woulez-yous yrairrenl quitter ?YOuiLNon IT.2,0.4)
If okay=1 qum«r>l Erall Return
SaeenMode ; Notre reguestei d ścran qu* va nous permeMre en dńbut de programme d8 choisir notre rósolulior (mais pas le nombre de couleurs que )'a' fUŚ a/bitrairement A 2G6)
Ecran$=' ldenlique au WorkBench'. chalne par dśtaul
Wiroow #SM 0.0.314.17£,$l40E.-ScreenMode Requester'.1.2 ; on ouvre une fonótre
GTUsMew #GTSCREENMODE,1 .-1.5.300.l00,"VeuiHez Chowir la Resoiubcr efeeran o'FX :".S4.Ecran(). dans nquel!e on oopie quelques gadgets GTTexf 0GTSCREENMODE.2,-1.105,300.13.",0.Ecran$
GTButton #GTSCREENMODF.3.25.130.75.13.'Ok'$10 GTButlon #GTSCREENMOOE 4.195.130 75.1 S.-Anruler* .$10 AttachGTList JKGTSCREENMODE #SM
Repeal
ev3.l=WaitEvent II EventW«dow-0 If ev3-$40 If GadpetHit-1
c-EvcntCode ; on captn quel ńlśment do la Lisie a śtś sńlectionnś el on assigne les vana
bies on corsegcerce
GTSetSłnng 2.2.Fcran(c)\Etext
If c 0 Then tageeran- OSLa/geur-320 SHautourrr256 WHYIM=216WHFX-204 ; Basse rś
solution
II o 1 Ther tagecrarv-$4 SLarqeur-320SHauleur-512 WHYlkA=-17? WHFX~480. dem enlraaośe lfC=? Then tageeran-S8000:SLargeur-640 SHautour^256 WHYIM-2l6:WHFX-204 ; el
ainst dc suitę ...
If c=3 Then tageeran .$8004 SLargeur-640:SHauteur^5l2:WHYiM^472 WHFX=460; Les
vanabirss correnęarrt par S soni pour LAcrar
If Cr-4 Then tagocran-$8020 SLarqeur-1?80 SHauteur=?56 WHYIM=216 WHFX-204 . ot
eelles par W pour <es fenótres
II c=5 Then tagecran=$fl024 SLargeur=1?80:RHau1eur •512:WHYIM-472:WHFX=4B0 ; ta
gocran sera pour l ouverture de notre ścran principai
If C--6 . >dentique at WB SLargerjr-WBWidth SHauleur=WBHeighl If WRWidth>-350 Ther lagecran_$8000 If WBWidtlc=800 Then tagecran-S8020 If WBHeight>-320 Then taqecranr$4:WHYIM^472:WHFX=460 Endlf Endif
II GadgetHi!^3 ; on retoume au dśbul pour cornmencer rśeLerneni lc programme prncipal Free Window 0
DetachGTLisI AGTSCRFENMODE Golo prg Endll
If GadgctHit-4 ; si I ut*saieur appuie que lo gadget *carcel'. on termire le programmo ev3-$?00
Endłf
Endll
Cryill
Umil ev3^$200 Free Window 0
Free GTList #GTSCHEFNWCDE Forbd.
End
Degrade : effet do dśgrade en nrvoaux de gr s Gosub Lock
For couf-0 To image(sel)\NBC-1
pal=(AGARed(cou«)*AGABiue(coul)+AGAGreen(coui)V3 ; on fa I la rroyenne des 3 composantes AGAPa RGB imago(sel)\NumPal.ccui.pal,pal.pai; et cr Tassigre A ces dcmićros Next
Use Window #PRE
Use Palotto image(scl)\NumPa'. A ne pas oubner; )
Gosub Unl ock Retum
Negalil effel de nśgatif ;•)
Gosub Lock
For ccul O To imagefselJWBC-l
AGAPaiRGB .magefsel^umPal.coul^SS-AGARocKcoulJ^SS-AGAGroenfcoulJ^SS-AGAB ue(coul)
; on soustrail rolre corrleur a la demićrc
Nex1
Use Wirdcw *PRE
Use Palette irrage(sel)\NumPal
Gosub UnLock
Return .Rotaton . pour plus d expiicatons. rślśrez-vous A l artcle de Barrou Diallo
anglerot.l«RTEZGetLcngRanqof Angle do rotation-.-Angle de rotation a appliquor 0.360.45) co gaa-get permet A Tutilisateur de chosir ure valeur dans un encadremerl
BitMap tfTMP.imagefse^argeur.imagefseOWauteur.imagefsełyiPlars . on crće nctre bilmap tempo-raire
Gosub Lock
oCos(angierot/i80'Pi) s-Sin(anglerot/180‘Pi)
cortrox=(irrage(sei)'Largeur)/2 centrey - (imagofselj^aute ur).^
For =0 To (image(scl)\Hauiouf) 1 coL21=ft centrey)'s coePrO^ntrey)^
For i-0 To (image(sei)\Largeur)-1 x«lnt((i-conirex)*c-coł21+centrex) y=lnt((i centrex)*s*col?? »cerlrey)
H x<(image(soi)\Largeur) AND x>6 AND y>0 AND y<(image|sel)\Hauteur)
Use BitMap image(sel)\Num d=Point(x.y)
- Use BrtMap 4TMP Plot ij.d Elsę
Use BilMap mage(sei)NNum drPoinl(i.j)
Uso BitMap 4TMP Plot ij.d Endlf
Nexi
Next
Use Wirdow #PRE WCls
CopyBiiMap #TMP.irrage(sel)'Num ; on le recopie sur lc bitmap original Free BitMap #TMP
BrtMaptoWindow image(sel)\Nurn.#PRE Use Palette wrage(set)\NumPal; au cas ou Gosub UnLock Retum
54