Amiga Dünyası sayı 29, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

view, ViewPort - &viewport; view.Modes -PFBA; viewport.DWidth - VPWIDTH; viewport.DHeight - VPHEIGHT; viewport.RasInfo - &rasinfo;

cm — GetColorMap(32L); if (cm -— NULL) | exit(100);

colorpalette - (UWORD *)cm->ColorTable; for(i-0; i<32; | *colorpalettet-4 — colortableli); viewport.ColorMap — em; i<DEPTH; i4-4-) ( bitmap.Planesli) - (PLANEPTR) AllocRaster(WIDTH, if(bitmap.Planesli) -— NULL) ( printf("Memory?"); exit(NOT ENOUGH MEMORY);

BiCkear(bimap Plaks (i), RASSIZE(WIDTH, HEIGHT), IL):

Draw(&rastport,640,400); &viewport); MrgCop(&view); LoadView(&view); xmove — 1; pfl ymove — 1;

for( n<-nmax; ) |

rasinfo.RxOffset — rasinfo.RxOffset * pfl xmove; Tasinfo.RyOffset — rasinfo.RyOffset * pfi ymove;

if (rasinfo.RxOffset <— O Il rasinfo.RxOffset >- 31 9) 1 pfl xmove — -pfl xmove; ) if (rasinfo.RyOffset <— O Il rasinfo.RyOffset 199) |

pri y o+ - 9. ove.

&viewport); MrgCop(&view); LoadView(&view); WaitTOFO;

FreeMemory0O; )

FreeMemory() LONG i;

; i<DEPTH; i4--4-) | if (bitmap.Planes|i| !— NULL) |

for (i—

WIDTH, HEIGHT); ) li

FreeColorMap(cm); LoadView(oldview); FreeVPortCopLists(&viewport); FreeCprList(view.LOFCprList); CloseLibrary(GfxBase); |

İkinci örneğimiz oldukça yararlı. Bu örnekte köşeden köşeye bir çizgi çekilerek yumuşak hardware scroll gerçekleştiriliyor. Yapılan işlemi kısaca şöyle anlatalım. İlk olarak, kullanacağımız plane bilgilerini tutan *bitmap' ve *rastport' yapı değişkenleri yaratılıyor. Bu yapı değişkenleri bir *rasinfo' yapı değişkenine bildiriliyor. Bu sayede scroll, rasinfo içerisinden offset değişkenlerle kontrol edilebiliyor. Rasinfo değişkeni, ViewPort yapı değişkeni için görüntü alanını saklama görevi görüyor. Bu sayede MakeVPort0; fonksiyonu ile görüntü yapısal olarak sisteme bildiriliyor. Fakat bu işlem görüntünün gelmesine yetersiz kalıyor. Bu görüntüyü copper listesine eklememiz gerekiyor. Bu işlemi de MrgCop0; fonksiyonu ile gerçekleştiriyor ve Load View(; ile ekrana gelmesini sağlıyoruz. Ekranda yaptığımız her işlemden sonra (mesela çizgi çekmek ya da ekran o! le oynayarak kaydırma işlemini yapmak) aynı şekilde görüntüyü sisteme belirtmek ve tazelemek için MakeVPort(), MrgCop() ve LoadView() fonksiyon üçlüsünü kullanmamız gerekmektedir. Bundan sonrası ise Amiga'ya kalmış. Programımızın yapmış olduğu iş ana hatlarıyla bu kadar. Diğer kısımları anlayabileceğinizi tahmin ederek bu ayki yazımızı burada noktalıyorum. Yazımın başında da belirttiğim gibi bundan sonraki konumuz 'intuition'lar. Gelecek ay buluşmak üzere hepinize mutlu günler dilerim!....

Klavyeyle gezinmek için ← ve → tuşları.