Amiga Dünyası sayı 31, sayfa 10

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 10

Amiga C'de bu aydan itibaren yeni konumuz geçen sayılarda da söz verdiğim gibi, "intuition.library" hakkında bundan önceki sayılarda çok şey söyledik. Fakat ben yine de bu konu üzerinde hala anlatacak bir şeyler bulabiliyorum. Çünkü Amiga'da sonuç mükemmel. Şimdi isterseniz Amiga'nın şu mükemmel library'lerinden biri olan "intuition.library"nin içine bir girelim. Intuition.library ile window, screen, gadget ve menüler kontrol ediliyor. Intuition (sezgi, seziş), zaten isim olarak da kendini anlatıyor. Bilgisayarın, bilgisayar kullanıcıları ile iyi bir diyalog kurmasını hedefliyor. Intuition, bir screen'ler ve window'lar dünyası. Screen, yapay görüntümüzün temel elemanı. Screen'de kullanacağımız fontları, renkleri ve çözünürlüğü rahatlıkla belirliyoruz. Window'lar ise, Intuition içerisinde en yüksek mertebeye sahip. Window'lar üzerindeki gadget'lar sayesinde giriş çıkış yapabiliriz. Her iki Screen ve Window yapısı üzerinde programlar ile rahatlıkla değişiklik yapabiliriz. Bir program içerisinde intuition.library'yi kullanmak istiyorsak, ilk olarak bu library'nin yapı değişkenini tanımlamamız gerekir. Bu değişken bildiğimiz "IntuitionBase" yapı değişkenidir ve library hafızaya yüklendikten sonra, yüklenmiş olan hafıza bölgesinin başlangıç adresini ve diğer parametreleri tutar. Program içerisinde bu olayı şöyle tanımlarız;

struct İntuitionBase *IntuitionBase;

Burada, IntuitionBase yapı değişkeni pointer olarak tanımlanmıştır. Daha sonra hafızaya yüklemek için,

IntuitionBase *) OpenLibrary("intuition.library", INT REV);

işlemlerini yaparız.

Artık intuition.library tanımlanmış ve hafızaya yüklenerek kullanılır hale gelmiştir. Bundan sonra herhangi bir intuition.library kullanan bir sistem komutunu kullanabiliriz. Örneğin bir ekran açabiliriz. Hafızaya yükleme işlemini OpenLibrary() fonksiyonu sağlıyor. İlk parametre, açılması istenilen library adını, ikincisi ise versiyon numarasını istiyor. Burada INT_REV, intuition revision yani intuition düzeltme numarasını içeriyor. Bu library'ler geliştirildikçe bu revision sayısı da değişiyor. Şimdi Window'ları ve Screen'leri daha derinlemesine inceleyelim. Window ve Screen'ler:

Window'lar Intuition ekranının temel elemanını oluşturuyor. Window'lardan daha üst düzeyde bir yapı yoktur. Screen'ler, Window'lar altında oluşur. Giriş-çıkış hareketleri window'lar üzerinden alınır. Window, basit bir şekilde, bir kutu olarak screen üzerinde kendini gösterir. Çok küçük bir pencere açtığınızda üzerine text ve grafik yazamazsınız. Fakat, tabii ki daha büyük window'lar açarak istediğinizi gerçekleştirebilirsiniz. Açtığınız window'a resim çizebilir, bunun ötesinde vermiş olduğunuz mesajlar sayesinde, giriş alabilirsiniz. Bütün window'lar multitasking olarak başka programlar çalışırken bile size hizmet verebilir. Böylece bir işlemi birçok parçalara bölerek çalıştırabilirsiniz. Fakat her an için yalnızca bir window'dan giriş yapılabilir. Bunun ötesinde her window kendisi için bir console device seçer. Böylece window'lar düzenli ve sıralı bir şekilde çalışır. Screen'ler ise bir dereceye kadar sınırlandırılmış yapıdır. Arka fonda oluşur, üzerinde window'lar görüntülenir ve idare edilir. Window'a benzer bir şekilde, screen ekranda bir kare şeklinde görülür. Intuition altında iki çeşit screen vardır. Bunlardan Workbench screen'i, standart olanıdır. Bu screen'in özellikleri önceden verilmiştir. Standart ve bilinen özelliklere ise Customized screen'dir. Bu screen'in de parçacıkları program tarafından ayarlanabilir. Customize screen, herhangi bir genişlikte olabilir. Workbench screen'in, customize screen'e göre belli başlı bazı avantajları vardır. Bunlardan ilki, ikonlardır. Workbench üzerinde ikon yaratmak mümkün; fakat, customize screen'e bu olayı taşımak kolay olmayabilir. Screen oluşturulmak istendiğinde yalnızca görüntü oluşturulmaz. Bunun yanında bir de çalışmak için hafızada istenilen boyutlarda bir yer ayrılır. Ayrıca açılan her window için de bir hafıza bölgesi ayrılır. Window'larda olduğu gibi screen'ler de birden fazla açılarak multitasking olarak çalışabilir. Tabii ki açılan her screen hafızamızdan biraz götürecektir. Bu nedenle örneğin 512KB'lik bir Amiga'da 640x512'lik ölçülerde en fazla 2 ya da 3 ekran açabilirsiniz.

Window'ların oluşturulması:

Bu kısımda basit olarak bir window'un Workbench screen'i üzerinde nasıl oluşturulacağını öğreneceğiz. Window oluşturmak için iki objeye ihtiyacımız vardır. Bunlar, önceden C dilinde de kullanılacak şekilde hazırlanmıştır. Bunlardan ilki NewWindow yapı değişkenidir. Bu yapıda açılmak istenen window'un özellikleri verilir. Bir intuition fonksiyonu olan OpenWindow() ile de NewWindow yapı değişkenine vermiş olduğumuz özelliklerde bir window açılır. OpenWindow() fonksiyonu window'u açtıktan sonra ikinci bir yapı değişkeni daha oluşur. Bu yapı değişkeninin ismi *window'dur. Bu değişken ile açılan window'u idare ederiz. NewWindow yapı değişkeni aşağıda olduğu gibi tanımlanmıştır. Her yeni bir ekran açıldığında bu değişken yeniden kullanılır. Şimdi NewWindow yapı değişkenine bir bakalım.

struct New Window | SHORT LeftEdge, TopEdge, Width, Height; UBYTE DetailPen, BlockPen; USHORT IDCMPFlags; ULONG Flags; struct Gadget *FirstGadget; struct İmage *ChechMark; UBYTE *Title; struct Screen *Screen; struct BitMap *BitMap; SHORT MinWidth, MinHeight, MaxWidth, MaxHeight; USHORT Type;

NewWindow yapı değişkeninde kullanacağımız başlıca parametrelere bir göz atalım: LeftEdge ve TopEdge değişkenleri, açılmak istenen window'un sol üst köşe koordinatlarını belirler. Window açıldığında başlangıç noktası burası olacaktır. Width ve Height görüntülenecek olan window'un genişliğini ve yüksekliğini ayarlar. Window açıldığında, bu yükseklik ve genişlikte olacaktır. DetailPen ve BlockPen, window içerisinde kullanılacak renkleri belirler. Yazı yazmaya kalktığımızda bu renklerde yazacaktır. Flags, ayarlar. Text, window'un başlığını oluşturur. Type, kullanılan screen tipini saklar. Şimdilik yukarıda açıklamadığım değişken alanlarına NULL ya da 0 değeri vererek, yani bu değişkenleri ihmal ederek bir örnek verelim.

kullanılacak olan aktiviteleri

#include <stdio.h> #include <exec/types.h> #include <intuition/intuitionbase.h>

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