************************************************************************ * FORTRAN90 - POWER STATION * * * * DENEMELER * *----------------------------------------------------------------------* * Bu dosyada FORTRAN90 POWER STATION 'ın bazı kabiliyetlerinin * * nasıl kullanıldığını gösteren örnek alt programlar yer almaktadır * ************************************************************************ CALL DAIRE_CIZ CALL RENKLER CALL DIKDORTGEN CALL MAVI CALL GRAFIK STOP END ************************************************************************ * DAİRE ÇİZİMİ İÇİN ALT PROGRAM *----------------------------------------------------------------------* * Genel kullanılışı (QuickWin veya Standard Graphics uygulamasıdır) * * ciz = PIE (i, x1, y1, x2, y2, x3, y3, x4, y4) * ciz = PIE_W (i, wx1, wy1, wx2, wy2, wx3, wy3, wx4, wy4) * * Parametreler * * i : $GFILLINTERIOR Şekli seçilen renkle doldurur * $GBORDER Şeklin içini boş bırakır * * Viewpoint koordinatları * x1,y1 INTEGER(2) Sınır dikdörtgenin sol üst köşesi * x2,y2 INTEGER(2) Sınır dikdörtgenin sağ alt köşesi * x3,y3 INTEGER(2) Başlangıç vektörünün koordinatları. * x4,y4 INTEGER(2) Bitiş vektörünün koordinatları. * * Window koordinatları * wx1,wy1 REAL(8) Sınır dikdörtgen sol üst köşesi * wx2,wy2 REAL(8) Sınır dikdörtgen sağ alt köşesi * wx3,wy3 REAL(8) Başlangıç vektörünün koordinatları * wx4,wy4 REAL(8) Bitiş vektörünün koordinatları * * Dönüş değeri INTEGER(2) Sonuç başarılı ise 1 * Sonuç başarılı değilse 0 * Şayet yay sınırlar içinde çizilmiş veya kısmen sınırlar dışında * kalmışsa sonuç başarılı kabul edilir ve dönüş değeri 1 olur. * Yay tamamiyle sınırlar dışında ise dönüş değeri 0 olur. * * UYARILAR * * Yay eğrisi SETCOLORRGB ile belirlenmiş olan renkle çizilir. * * PIE fonksiyonu viewport-koordinat sistemi kullanır * Yay merkezi sınır dikdörtgenin (x1,y1) ve (x2,y2) koordinatlarıyla * belirlenen merkezidir. Yay, merkez ile (x3,y3) noktasından geçen * hayali bir doğrunun üzerinden başlar ve saat ibrelerine zıt yönde * çizilir. Merkez ile (x4,y4) noktasından geçen hayali bir doğrunun * üzerinde biter * * PIE_W fonksiyonu window-koordinat sistemi kullanır. * Yay merkezi sınır dikdörtgenin (wx1,wy1) ve (wx2,wy2) koordinatları * ile belirlenen merkezidir. Yay, merkezle (wx3,wy3) noktasından geçen * hayali bir doğrunun üzerinden başlar ve saat ibrelerine zıt yönde * çizilir. Merkez ile (wx4,wy4) noktasından geçen hayali bir doğrunun * üzerinde biter * * $GFILLINTERIOR seçeneği, yay merkezi başlangıç noktası ve SETCOLORRGB ile * belirlenen mevcut renk dolgu rengi olmak üzere FLOODFILLRGB seçeneği * ile eşdeğerdir. Şayet sınır eğrisinden farklı bir renkle dolgu yapmak * istenirse $GFILLINTERIOR seçeneği kullanılamaz. Bunun yerine yay * sınırı çizildikten sonra SETCOLORRGB ile mevcut renk değiştirilip * FLOODFILLRGB çağrılır. FLOODFILLRGB çağrısında doldurulmak istenen * şeklin bir iç noktası belirtilmelidir. Bu nokta * You can get this point for the last drawn pie or arc by * calling GETARCINFO. * * Yay içerisi FLOODFILLRGB yardımıyla doldurulursa yay eğrisi dolu çizgi * olmalıdır. Default çizgi stili "dolu" olup SETLINESTYLE ile değişir. * ************************************************************************ SUBROUTINE DAIRE_CIZ USE MSFLIB INTEGER(2) x1, y1, x2, y2, x3, y3, x4, y4 x1 = 80; y1 = 50 x2 = 180; y2 = 150 x3 = 110; y3 = 80 x4 = 90; y4 = 180 CALL CLEARSCREEN($GCLEARSCREEN) renk = SETCOLOR(INT2(4)) ciz = PIE($GFILLINTERIOR,x1,y1,x2,y2,x3,y3,x4,y4) PAUSE RETURN END *********************************************************************** ************************************************************************ SUBROUTINE RENKLER USE MSFLIB INTEGER(2) x, y CALL CLEARSCREEN($GCLEARSCREEN) i = #CCCCCC DO X = #1,#200 i = x do y = 100, 200 ciz = RECTANGLE( $GFILLINTERIOR, x, y, x+5, y+5 ) ciz = RECTANGLE( $GBORDER, x, y, x+10, y+10 ) ciz = SETPIXELRGB (x,y,i) ENDDO ENDDO PAUSE RETURN END ************************************************************************ * İÇİ DOLU VE BOŞ DİKDÖRTGEN ÇİZİMİ ************************************************************************ SUBROUTINE DIKDORTGEN USE MSFLIB CALL CLEARSCREEN($GCLEARSCREEN) renk = setcolorrgb(#FFFFFF) ciz = RECTANGLE ($GBORDER, 50, 50, 700, 400 ) renk = setcolorrgb(#0000FF) ciz = RECTANGLE ($GFILLINTERIOR, 100, 100, 600, 300 ) renk = setcolorrgb(#00FFFF) ciz = RECTANGLE ($GBORDER, 150,150, 550, 250 ) PAUSE RETURN END ************************************************************************ ************************************************************************ SUBROUTINE MAVI use msflib dimension iclr(32) DATA iclr/#000000,#110000,#220000,#330000 > ,#440000,#550000,#660000,#770000 > ,#880000,#990000,#AA0000,#BB0000 > ,#CC0000,#DD0000,#EE0000,#FF0000 > ,#FF0000,#FF1010,#FF2020,#FF3030 > ,#FF4040,#FF5050,#FF6060,#FF7070 > ,#FF8080,#FF9090,#FFA0A0,#FFB0B0 > ,#FFC0C0,#FFD0D0,#FFE0E0,#FFF0F0/ CALL CLEARSCREEN($GCLEARSCREEN) ix = 10 do i=1,16 do k=1,32 ix = ix+1 do iy=100,200 ciz = SETPIXELRGB(ix,iy,iclr(k)) enddo enddo do k=32,1,-1 ix = ix+1 do iy=100,200 ciz = SETPIXELRGB(ix,iy,iclr(k)) enddo enddo enddo PAUSE RETURN END ************************************************************************ ************************************************************************ SUBROUTINE GRAFIK use msflib dimension ix(10),iy(10) type (xycoord) xy data ix/100,130,150,160,190,210,215,230,255,278 / data iy/50, 30, 60, 65, 90, 10, 15, 30, 55, 78 / CALL CLEARSCREEN($GCLEARSCREEN) call moveto(50+ix(1),300-iy(1),xy) do i=2,10 ciz = lineto(50+ix(i),300-iy(i)) enddo PAUSE RETURN END