Bu sayfadaki yazılar
Sayfanın metni
Sayfa 27
CENTER <flag> TEXT komutuyla çalışırken yazının ortalanması fonksiyonunu açıp kapatır. <flag> değişkenine 1 değerini yazarsanız TEXT ile basılaı her yazı ekranda ortalanarak basılır. Girilen 0 değeri ise daha önce açılmış olan ortalama modunu kapatacaktır. Daha geniş bilgi için TEXT komutuna bakınız.
CIRCLE <x>,<y>,<r> Belirlenmiş olan kalem rengiyle <x>, <y> noktasını merkez alarak <r> yarıçaplı bir daire çizer.
CLEAR Ekranı zemin rengiyle doldurarak temizler
CLOSE ÖPEN komutuyla açılan dosyayı kapatır. COLOR <buf>,<per>,<no>,<r>,<g>,<b> <buf> resim buffennın renklerini ayarlamakta kullanılır. Ayarlanacak rengin numa- OB <no> ile belirtilir. Ekrandaki renkler, kırmızı, yeşil ve mavinin karışımlarından oluşturulduğundan bu üç temel rengin karışım oranlarını <r> (kırmızı), <g> (yeşil) ve <b> (mavi) yardımıyla girmelisiniz. Bu üç renkten her biri için 0 ile 15 arası bir sayı girilebilmektedir. Böylece 4096 renklik bir paletten sizin için gerekli olanları ayarlayabilirsiniz.
Eğer <per> değeri 0 ise yapılan renk ayarlamaları sadece ekranı etkiler. Fakat bu değer 1 ise ekran buffer'ı ile saklanan renk paleti yeni değerlerden etkilenir.
Buffer numarası olarak -1 girilirse, yapılan işlem ekran buffer'ı üzerinde yapılır.
COMPARE [v],<stra>,<strb> <stra> ile <strb> karakter dizilerini ya da değişkenlerini karşılaştırır ve sonuca göre [v]'yi etkiler. Eğer diziler aynıysa komut işlendikten sonra [v] değişkeni 1 değerini alacaktır.
Karakter dizisi tanımlarken içeriği bilinmeyen yerlere <*> işareti konulabilir. Karşılaştırmada kullanılacak ikinci eleman bir dizi elemanı olabileceğinden bunu $ işareti ile belirtmeniz gerekecektir. İşaretten hemen sonra gelen parantez içinde dizinin hangi elemanının kullanılacağını belirtebilirsiniz. Aşağıdaki örneklerde bunu daha detaylı olarak görebilirsiniz:
COMPARE V,"Y*",$(0) - Dizideki ilk elemanın Y harfiyle başlayıp başlamadığına bakar ve sonuç olumlu ise V değişkenini 1 vapar. ' COMPARE V,"*apt*",$(0) - Dizinin ilk elemanının içinde 'apt' harf zincirini arar.
COMPARE V,"turbo",$(0) - Dizinin ilk elemanı 'turbo' ise V değişkenini 1 yapar.
COPY<a>,<&> <a> buffer'ındaki resmi <b> buffer'ına aynen kopyalar. Burada resim buffer'larının dahili hafızada (CHIP Memory) olup olması farketmez; çünkü bu komutta BLIT komutunda olduğu gibi blitter kullanılmaz. Bilindiği gibi blitter ve copper Amiga'da sadece CHIP memory'e çalışabilmektedirler. Bu yüzden bir resim FAST memory'den CHIP memory'e ya da tersine kopyalanacaksa blitter kullanılamaz.
Kopyalama yaparken renk paleti de olduğu gibi kopyalanır.
Buffer olarak girilen -1 değeri, ekran buffer'ının kullanılacağını belirtir.
CYCLE <mod> <mod> 1 değeri aldığı zaman DPaint'de olduğu gibi Cycle modu açılacaktır. Daha önceden açılmış bir cycle modunu kapamak için <mod> yerine 0 yazılmalıdır. SETB-LACK ya da FADE komutu kullanılan yerlerde cycle modunu açmasanız daha iyi olur. Aksi halde ekranda bir renk karmaşası oluşacaktır.
DISPLAY <buf> Ekranda gösterilen resim buffer'ının numarasını değiştirir. Bu komutla sadece CHIP Memory (ilk 512 KByte)'de kalan resim buffer'lan gösterilebilir.
DISSOLVE <buf>ı<ax>,<ay>ı<bx>y <by>, <x>,<y>,<te>
'<buf> ile belirtilen resim buffer'ında <ax>,<ay> ile belirtilen <x>,<y> boyutlarındaki dörtgeni ekran buffer'ında <bx>,<by> noktasına kopyalar. Kopyalama raslantısal seçilen noktaların kopyalanması şeklinde yapıldığından epey güzel bir efekt elde edilir. <hız> ile kopyalamanın hızı ayarlanılabilir. Hız için 1000 ile 4000 arasında kalan sayılar iyi bir sonuç verir.
DRAW <x>,<y> Kalem rengini kullanarak bir çizgi çizer. Çizginin başlangıç noktası, o an grafik cursor'unun bulunduğu noktadır. Bitiş noktası ise başlangıç noktası koordinatlarına <x> ve <y>'nin eklenmesi ile bulunur. Grafik cursor'unu hareket ettirmek için MOVE komutunu kullanmanız gereklidir. DRAW komutunu kullandıktan sonra çizginin bitiş noktası grafik cursor'unun yeni noktası olacaktır. Bu sayede birbirine bitişik çizgiler çizmek bir hayli kolaydır.
DRAWMODE <mod> Çizim ve yazım modunun belirlenmesinde kullanılır ve girilebilecek değerler aşağıdadır:
0 - JAM1 : Yazının doğrudan ekrana basılmasını sağlar. Yazı karakterlerinde kenarlarda bir kare var olduğunu sayarsak bu karenin içindeki boş pikseller (zemin renginde olan) zemindeki piksellerin renk değerlerini alırlar.
1 - JAM2 : Yazı karakterlerinde boş pikseller 0 rengini alırlar.
2 - COMPLEMENT: Piksel basılırken, bu piksel zeminde altında kalan pikselle exor'lanır. Bu sayede koyu renk olan yerlerde açık yazı, açık renk olan bölgelerde ise koyu renkli yazı elde edilebilir.
Normalde çizim modu 1'dir ve MODE -1 komutuyla normal çizim moduna dönülebilir.
ELLIPSE <x>,<y>, <xr>,<yr> <x> ve <y> merkez olmak üzere <xr> x ekseni yarıçaplı, <yr> y ekseni yarıçaplı bir elips çizilir. Çizim rengi kalem rengidir.
ELSE Bir önceki IF komutunda belirtilen şart yerine gelmemişse ELSE komutundan sonraki komutlar uygulanır. ELSE komutunu her IF komutunda kullanmak zorunlu değildir. Fakat her IF ve/veya ELSE komutu kullanıldığında sona bir ENDIF komutu koymak gereklidir.
END Yapılan animasyonun bittiğini bildirir ve kullanılan tüm değişken, dizi ve resim buffer'larının temizlenmesini sağlar.
ENDIF IF'le açılan bir koşul gerçekleştirmenin bitirilmesini sağlar. IF kullanılan her yerde ENDIF komutu da kullanılmalıdır.
EXECUTE [a], <"komut dizisi"> <"komut dizisi"> bir CLI komutudur ve program bunu CLI'a göndererek uygulanmasını sağlar. Bu sayede Director ile çalışırken programınızda bazı dosyaların kopyalanmasını ya da silinmesini de sağlayabilirsiniz. <a> değişkeninde alınan değer, komut işlendikten sonra onun verdiği bilgiler ya da hata mesajlarıdır.
Gelecek ay Director programının kalan komut ve özelliklerini yine bu sayfalarda bulabilirsiniz. Hoşça kalın....
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 26
Kopyalama işleminde Amiga'nın üstün ciplerinden biri olan Blitter kullanıldığından ve bu cipin ses cipi gibi ilave hafızayı (512 KByte'dan yukarısı) adresleyemediğinden, kullanılan buffer'ların her ikisi de hafızanın ilk 512 KByte'ında (CHIP Ram) yer almalıdır.
BLITMODE <mod> BLIT, WIPE ve STENCIL komutlarında kullanmak üzere çalışma modunu belirler. Bu mod 0'dan 255'e kadar bir değer alabilmektedir. Bu mod sayesinde bir resmi kopyalarken aynı zamanda negatifleştirebilir ya da başka bir lojik işlemden geçirebilirsiniz. Seçilecek mod, işlem tipini belirler. Normalde Amiga'da Assembler ya da başka bir dil aracılığıyla Blitter kullanılırsa 255 işlemin hepsi de yapılabilmekte. Fakat bizim işlemlerimiz 255'ten daha az; çünkü aslında Blitter üç kaynağa gereksinim duymaktadır. Bunlardan sadece B ile C kaynakları bizi ilgilendiriyor. B, kaynak buffer'ımızı; C ise sonuç buffer'ımızı, yani normal şartlar altında ekran buffer'ını temsil eder. Aşağıda blitter işlem modunun nasıl hesaplandığını görebilirsiniz. Bunları anlayabilmek için biraz lojik işlemleri, biraz matematik ve biraz da BASIC bilmek yeterlidir.
Lojik işlemlerle AND, OR, NOT, EXOR ve bunların kombinasyonlarından oluşan işlemleri kastetmekteyim. Bunları bilenler şimdiki terim açıklamalarımı atlayabilirler.
NOT : Girişteki bilginin tam tersini alarak bunu çıkışa gönderir. Bu, binary sayı sisteminde 1 olan bitlerin 0, 0 olan bitlerin de 1 olması demektir. Programımızda bir piksel negatifleştirilirken 31 sayısı en üst renk rakamı olduğundan bu sayıya göre tersi alınmaktadır. 0 renk kodunu taşıyan pikseller 31, 1 rengindeki pikseller 30 rengini alacaktır. Bu, tüm renkleri etkilediğinden, sonuç olarak elimizde resmin negatifi yer alacaktır.
Doğruluk tablosu :
giriş çıkış
0 1 1 0 AND : Ancak her iki girişte de bir olan bitler çıkışta 1 değeri alabilirler. Bunu director'da uygularsak, koordinatları aynı farklı resimlerde olan iki pikselin renk değerleri de aynı ise işlem sonucunda elde edilecek resimde aynı koordinattaki piksel o rengi taşır. Eğer aynı noktada farklı renklerde pikseller varsa, bunların renk değerlerinin binary karşılıkları AND işlemine tabi tutulur ve sonuçta elde edilen binary sayı da sonuç grafiğindeki pikselin renk kodu olacaktır.
Doğruluk tablosu :
giriş 1 giriş 2 çıkış
0 0 0 0 1 0 1 0 0 1 1 1 renk kodu resim 1:6= 00110 renk kodu resim 2 : 14 = 01110 renk kodu sonuç : 6 =00110 OR : İki kaynaktan herhangi birinde 1 olan bitler sonuçta da 1 değerini alırlar. Resimde bu aynı koordinatlardaki değişik resimlerdeki iki pikselin renk kodlarının sonuç grafiğinde çok farklı olacaklarını belirtir. Doğruluk tablosu :
giriş 1 giriş 2 çıkış
0 0 0 0 1 1 1 0 1 1 1 1 renk kodu resim 1:21 = 10101 renk kodu resim 2 : 11 =01011 renk kodu sonuç : 31 = 11111 XOR ya da EXOR : Burada da iki girişteki bitler aynı değeri taşıdıklarında çıkıştaki bit 1 olur. Doğruluk tablosu :
giriş 1 giriş 2 çıkış 0 1 0 1 0 0 1 1 1 Başına N harfi eklenen işlemlerde ilk önce temel işlem uygulanır, sonrada sonuç bilgisi NOT işlemine tabi tutulur (NOR, NAND, EXNOR).
normal işlem NOT'lu hali
OR ..... NOR AND ....NAND
EXOR ... EXNOR Sağ yanında ünlem işareti olan kaynaklar, negatiflenen kaynaklardır. Yan yana duran ya da aralarında x işareti olan iki eleman OR işlemine tabi tutulacak anlamına gelmektedir. İki işlem arasında + işareti varsa bu, elemanları AND'lememiz gerektiğini bildirir.
Aşağıdaki bit dizimi kullandığımız formülleri sayıya dönüştürmek için gerekli olan formüldür. Az önce de belirttiğim gibi buradaki A girişini biz kullanmıyoruz, bu yüzden onu gözardı edebiliriz. Fakat formülleri hesaplarken onu da hesabın içine katmamız lazım; yoksa formül hatalı olur ve istenmeyen sonuçlar oluşabilir. Formülde kullanılan terim gruplarının bitlerini 1 yaptığımızda, elimize blitter işlem modunun binary değeri gelecektir. Bunu desimal sayı sistemine çevirerek komutumuzla kullanabiliriz. ABC ABC! AB!C AB!C! A!BC A!BC! A!B!C A!B!C! Bit: 7 6 5 4 3 2 10 Formüllerde gerekli birimleri toplamaya göre çarpanlarına ayırabiliriz. Gerekli görülen yerlerde de sadeleştirme işlemini uygulayabiliriz. Sadeleştirmede bir değerin negatifi ile kendisi birbirini götürecektir ( A + A! =0). Formül hesaplamayı daha iyi anlayabilmek için aşağıdaki örneği inceleyin :
Formül: (AB!C) + (AB!C!) + (A!B!C) + (A!B!C!)
İlk iki eleman olan AB!C ile AB!C!'den AB! oluşur. Nedeni de apaçık ortadadır: (AB!C)+(AB!C!)=Cx(AB!) çarpanlarına ayırırsak : Cx(AB!)=Cx(AB!)4€!x(AB!) Burada C ile C! birbirini götürür: (AB!) + (AB!) = AB! Ardından gelen son iki eleman da aynı şekilde çarpanlanna ayrılırsa A!B! elde edilir. Sonuç olarak elde edilen iki elemanı da yine çarpanlarına ayırırsak sonuç olarak C! elde edilir. Bu, kopyalamada sadece ekrandaki (ya da resim buffer- 'ındaki) bir dörtgendeki tüm piksellerin negatifleneceğini bildirir. Fakat hala elimizde bir formül elemanı var. O halde bunu BLIT-MODE komutuyla kullanabileceğimiz bir sayı haline getirmek için OR'lanan tüm elemanların bit karşılıklarını bularak bunları 1 yapıyoruz : 01010101 = 85 Artık bu sayıyı mod olarak rahatlıkla kullanabiliriz. İçinizde hala anlayamayanlar varsa, onlara bu örnekten yola çıkarak birkaç örnek yapmaları gerektiğini vurgulamam gerekir. Aslında bu konuyu anlayanların da birçok örnek yapmalarında fayda var. Bu sayede tüm olayı daha iyi bir şekilde kavramak mümkün. BLITDEST <buf> BLIT işleminde dörtgen, ekran yerine bir resim buffer'ına kopyalanacaksa bunun numarasını <buf> ile programa bildirmeniz gerekir. BUFFERS <adet>
Programda kullanılacak resim buffer- 'larının adedini belirlemekte kullanılır. Normalde bu sayı 30'dur. Fakat bunu, bu komutla rahatlıkla artırabilir ya da azaltabilirsiniz. BUFFERS komutu kullanılacağı zaman programın başında daha hiçbir resim yüklenmediği zaman kullanılmalıdır.