POSTSCRIPT KNJIŽNICA

Kazalo

1.0 Report summary
2.0 Uvod
3.0 Generiranje knjižnice POSCRIPT.LIB
3.1 Namen knjižnice
3.2 Značilnosti knjižnice
3.3 Zgradba knjižnice
4.0 Ukazi knjižnice POSTSCR.LIB
4.1 CALL Nastavitev_Formata(x1,y1,x2,y2,x3,y3,x4,y4,i)
4.2 CALL Definiranje_Objekta(e)
4.3 CALL Konec_Objekta()
4.4 CALL Daljica(x1,y1,x2,y2)
4.5 CALL Krog(x,y,r)
4.6 CALL Lok(x,y,r,a1,a2)
4.7 CALL Tekst(w,x,y,g)
4.8 CALL Risanje_ Objekta()
4.9 CALL Izris_Objekta()
4.10 CALL Prikaz_strani()
4.11 CALL Sklenitev_Lika()
4.12 CALL Zapolnitev()
4.13 CALL Sivina_Izrisa(b)
4.14 CALL Debelina_Izrisa(c)
4.15 CALL Translacija_Objekta(x,y,e)
4.16 CALL Skalacija_Objekta(x,y,e)
4.17 CALL Rotacija_Objekta(a,e)
4.18 CALL Save()
4.19 CALL Restore()
5.0 Program POSTSCR.FOR
6.0 Osnovni primeri uporabe knjižnice POSTSCR.FOR

1.0 Report summary

This report describes library structure for writting program code in PostScript language for drawing lines, circles, arcs and text, and examples of use.

Library was made in Fortran programming language for simpler and faster picture drawing in PostScript.

2.0 Uvod

PostScript je programski jezik primeren za grafični in tekstovni izpis (na papir, na film ...). Uvedel ga je Adobe leta1985. To je jezik ki je neodvisen od resolucije., kar pmeni da lahko določen zapis uporabimo na katerikoli postscript tiskalniku brez spremijnjanja, vendar v praksi ni čisto tako.
Programski jezik bazira na zgradbi v obliki kopice na katero dajemo določene vrednosti in ukaze. Med branjem programa pa pteka pobiranje ukazov in vrednosti iz kopice točno po določenem vrstnem redu tako, kot so bili ukazi in vrednosti nanjo naložene.

Postscript ima določene grafične in jezikovne značilnosti.
Med grafičnimi je pomemben prostor, ki je odvisen od tiskalnika (device space), uporabniški prostor, trenutna transformacijska matrika, pot, trenutna pot, ...

V programu lahko zapisujemo komentarje, številčne vrednosti, nize vrednosti, znakovne vrednosti, operatorje, transliramo, rotiramo, transliramo,....

Postscript omogoča tudi oblikovanje posameznih strani tako, da lahko poleg slik pišemo tudi tekst, določamo obseg strani...

Za branje postscript dokumenta na nakaterih tiskalnikih je potrebno sam dokument oblikovati po DSF standardu (Document Structuring convention), ki predpisuje določeno obliko dokumenta. Pri tej obliki je pomembna 'glava dokumenta' katera vsebuje podatke o dokumentu (o kreatorju, ime dokumenta, dimenzije izrisa, število strani...)

3.0 Generiranje knjižnice POSCRIPT.LIB

3.1 Namen knjižnice

Knjižnica je namenjena za izpisovanje programske kode v postscriptu za izris dealjic, krožnih lokov, krogov in teksta. S pomočjo te knjižnice je mogoče generirati sliko brez poznavanja postscript jezika. Poznati je potrebno le ukaze in njihovo pravilno zaporedje. Knjižnico kličemo s pomočjo fortranskega programa, katerega pa lahko oblikujemo glede na to kaj hočemo izrisati.

3.2 Značilnosti knjižnice

Knjižnica omogoča nastavitev velikosti risarskega formata, ki je lahko naravne velikosti tako, da ni potrebno pri vnašanju kordinat elementov preračunavati vrednosti, ki bi ustrezale formatu izpisa. Možna je tudi nastavitev velikosti slike ter njeno pozicioniranje na določeni strani. Knjižnica omogoča tudi rotacijo slike že pri vpisovanju njenih koordinat.

Kordinate, ki jih vnašamo so v milimetrih in ne v točkah, kar je osnovna enota postscripta. Knjižnica tudi omogoča premikanje objekta, rotacijo objekta okoli izhodišča koordinatnega sistema in povečevanje oz. zmanjševanje objkta.

Zadnjo in prvo točko narisanega lika je mogoče tudi skleniti, sklenjen lik pa je mogoče zapolniti tako, da ni izris narejen iz črt in krogov ampak kot poln objekt.

Za sam črten izris je mogoče nastaviti debelino, ter barvo. Kot barvo določamo odtenke sive barve od črne pa do bele.

Knjižnica je narejena tako, da definiramo objekte, ki pa lahko vsebujejo po en ali več elementov. Ta lastnost je velikega pomena pri translaciji, rotaciji in skalaciji objektov, ker bi morali sicer geometrijske transformacije izvajati na vsakem elementu posebej.

Objekt je mogoče pred izvajanjem geometrijskih transformacij shraniti in ga po izvedbi le teh zopet izrisati v prvotni obliki. Vnasprotnem primeru bi morali izvesti obratne transformacije za ponoven izris in nadalnjo manipulacijo osnovnega objekta.

Na voljo nam je tudi pisanje teksta, katerega pa lahko kot vse objekte tudi transliramo, skaliramo in rotiramo. Na voljo nam je pisava Tmes-Roman, vendar pa jo lahko z enostavno spremembo knjižnice nadomestimo z drugo.

3.3 Zgradba knjižnice

Knjižnica je sestavljena iz podprogramov katere kliče glavni program, ki ga pišemo. Podprograme kličemo s pomočjo njihovih imenov. Pri njihovem klicanju navajamo tudi parametre, katere podprogram potrebuje za izpis postscript kode. Koda se izpisuje v datoteko z končnico *.ps kar pomeni da je to poscript dokument. Poleg končnice pa je pomembno tudi, da je začetek datoteke zapisan po standardu DSC.

Vedno se glavni program prične z klicanjem podprograma, ki priredi velikost izrisanega objekta dejanski vrednosti na zaslonu ali listu, ter poskrbi ta potrebno rotacijo le tega. Izvede se tudi sprememba poscript dolžinskih enot v milimetre.

Vsak od ostalih podprogramov ima ravno tako nalogo da izpiše del kode ki pa v celoti pomeni postscript datoteko, katero lahko kot sliko ali tekst predstavimo na zaslonu ali tiskalniku.

V glavnem programu je potrebno pred vsakim začetkom definiranja novega objekta izpisati njegovo ime. V nadaljevanju pisanja programa ni več potrebno za izvajanje določenih operacij na tem objektu pisati vseh elementov, ki ga sestavlljajo ampak zapišemo samo ime objekta. Velika prednost takega definiranja se pokaže predvsem pri kompliciranih objektih, ki so sestavljeni iz veliko elementov.

4.0 Ukazi knjižnice POSTSCR.LIB

Vsi ukazi se pričnejo z CALL kajti ta ukaz v fortranu kliče podprograme iz knjižnice. Pri tem je pomembno, da je knjižnica posneta v direktoriju kjer so ostale knižnice ali pa je navedena pot do direktorija na katerem se nahaja. Že samo ime drugega dela ukazov pa približno navaja kakšno nalogo ima določen ukaz.

4.1 CALL Nastavitev_Formata(x1,y1,x2,y2,x3,y3,x4,y4,i)

Ukaz nam omogoča, da rišemo objekte v velikosti kakršni želimo ne glede na to kako velika bo slika na ekranu ali listu. Namesto vrednosti x1,y1 zapišemo koordinate levega spodnjega vogala risbe, x2,y2 je koordinata desnega zgornjega vogala, x3, y3, x4, y4 so koordinate slike na listu ali zaslonu. Operacija skaliranja je predstavljena na Sliki 1.


Slika 1: Prikaz pretvorbe formata risanja

Pri podajanju točk pozicije slike na izhodnem formatu je pomembno kateri diagonalni točki sta podani in v kakšnem vrstnem redu.


Slika 2: Poziconiranje slike na izhodnem formatu

Možnosti pozicioniranja slike na izhodnem formatu:
1.) T1, T3 - normalno pozicioniranje slike
2.) T2, T4 – rotacija slike za 90 stopinj v nasprotni smeri urinega kazalca
3.) T3, T1 – rotacija slike za 180 stopinj v nasprotni smeri urinega kazalca
4.) T4, T2 - rotacija slike za 270 stopinj v nasprotni smeri urinega kazalca

Pravilno podajanje točk slike na izhodnem formatu je bistvenega pomena za pravilno lego slike.

Znakovna spremenljivka i, ki sledi koordinatam slike je ime datoteke v katero se zapisuje programska koda.

Naloga navedenega ukaza je tudi ta, da spreminja postscript dolžinske enote v milimetre. tako so vse koordinate navedene v milimetrih.

Pomembna naloga ukaza pa je izpis glave postscript datoteke v DSC formatu.

4.2 CALL Definiranje_Objekta(e)

Za lažje izvajanje geometrijskih transformacij likov je potrebno definirati objekte kot zaključene celote. Vse elemente, ki jih navedemo v tej skupini so privzeti kot celota – objekt. V oklepaju ukaza - e je potrebno podati ime objekta. V primeru, da hočemo v nadaljevanju programa manipulirati z tem objektom, ga kličemo samo z imenom. Na koncu definiranja objekta je potrebno le tega tudi zaključit.

4.3 CALL Konec_Objekta()

Definiranje objekta se vedno zaključi z zgoraj navedenim ukazom. Za njim lahko sledi izris tega objekta, definiranje novega objekta ali kateri drug ukaz.

4.4 CALL Daljica(x1,y1,x2,y2)

Eden od ukazov za definirane elementov znotraj objekta je tudi ukaz za risanje daljice. V oklepaju je potrebno navesti začetno (x1, y1) in končno točko (x2, y2) daljice. Če hičemo definirati objekt iz večih daljic ukaz ponavljamo.


Slika 3: Definiranje daljic

4.5 CALL Krog(x,y,r)

Ukaz nam omogoča definiranje kroga. potrebno je navesti koordinate središča (x,y) in polmer kroga. Tudi ta ukaz lahko navajamo v objektu večkrat zapored ali pa v kombinaciji z drugimi elementi.


Slika 4: Prikaz definiranja kroga

4.6 CALL Lok(x,y,r,a1,a2)

Za definiranje krožnega loka je potrebno poleg središča (x, y) in polmera (r), podati tudi začetni a1 in končni a2 kot loka. Koti se merijo v nasprotni smeri urnega kazalca in sicer v stopinjah. Definiranje je prikazano na Sliki 5.


Slika 5: Definiranje krožnega loka

4.7 CALL Tekst(w,x,y,g)

Tudi tekst je mogoče vnašati v sliko in sicer tako, da najprej podamo njegovo višono (w), nato zapišemo levo spodnjo točko teksta (x, y). Zadnja spremenljivka v ukazu (g) je znakovna in ima nalogo, da prenaša tekst v postscript datoteko, ki je naveden pred ukazom.

4.8 CALL Risanje_ Objekta()

Ko je objekt definiran ga je potrebni z naslednjim ukazom poklicat da ga je možno izrisat. Če je objekt samo definiran in ne uporabimo tega ukaza ga ne bo mogoče videti po uporabi še nekaterih ukazov na izhodnem formatu.

4.9 CALL Izris_Objekta()

Ta ukaz ponavadi sledi ukazu 4.8, saj je njegova naloga da izpiše kodo v postscriptovo datoteko za vidnost lika na izhodnem formatu. Tudi ta ukaz je nujen v verigi ukazov za vidnost objekta.

4.10 CALL Prikaz_strani()

Ukaz je bistven za prikaz izhodnega formata, to pomeni da s tem ukazom prikažemo risbe ki so na formatu.Tudi ta ukaz je nujen za vidnost objektov, ki smo jih narisali. Ukaz se ponavadi uporablja na koncu programa, saj je dovolj le eden za izris vseh objektov, ki so navedeni v datoteki.

4.11 CALL Sklenitev_Lika()

Ukaz je namenjen za like katerih elementi morajo biti na koncu sklenjeni. To pmeni da poveže prvo in zadnjo točko. Sklenjene like je mogoče tudi zapolniti.


Slika 6: Sklenitev lika

4.12 CALL Zapolnitev()

Ukaz nam omogoča zapolnitev sklenjenih likov.


Slika 7: Zapolnitev lika

4.13 CALL Sivina_Izrisa(b)

Služi nam za določanje odtenka črne barve v črtnem ali tekstovnem izrisu. To vrednost določamo z faktorjem b, ki je realno število. Vrednost 0.0 pomeni črno barvo, vrednost1.0 pa belo. Vse vmesne vrednosti so odtenki teh dveh barv.

4.14 CALL Debelina_Izrisa(c)

V glavnem programu, ki ga pišemo lahko nastavljamo tudi debelino izrisa objektov. Ukaz navajamo v sklopu ukazov za izris in sivino. Najmanjša možna debelina je 1 (enota v postscriptu navzgor pa je neomejena).

4.15 CALL Translacija_Objekta(x,y,e)

Ko je objekt definiran ga je možno prestaviti na drogo pozicijo s pomočjo ukaza za translacijo. Potrebno je navesti premik po x in y osi (x, y) ter ime objekta, ki ga transliramo (e).


Slika 8: Translacija objekta

4.16 CALL Skalacija_Objekta(x,y,e)

V primeru, da želimo objekt povečati ali pomanjšati uporabimo zgoraj navedeni ukaz. Vukazu je potrebno navesti faktor zmanjšanja ali povečanja objekta v x in y (x, y) smeri ter ime lika, ki ga skaliramo (e).


Slika 9: Skalacija objekta

4.17 CALL Rotacija_Objekta(a,e)

V ukazu, ki nam rotira objekt je potrebno navesti samo kot za katerega se zasuka v nasprotni smeri urinega kazalca. Pomembno je vedeti, de se rotacija vrši okoli izhodišča koordinatnega sistema in ne okoli središča objekta. Če hočemo doseči tak učinek moramo vključiti še translacijo objekta. Pri tem je potrebno paziti na koordinatni sistem saj se vrti z rotacijo objekta.


Slika 10: Rotacija objekta

4.18 CALL Save()

Ko objekt definiramo ga je pametno shraniti, saj ga sicer v primeru uporabe geometrijskih transformacij ne moremo več prikazati v prvotni obliki. Če pa je objekt shranjen pa je to mogoče.

4.19 CALL Restore()

Ukaz uporabimo takrat, ko hočemo uporabiti za izris, nadalnje premike ali kakšne druge spremembe, prvotni objekt, ki smo ga shranili. Ponavadi sta oba ukaza 4.18 in 4.19 navedena v glavnem programu, med njima pa so navedeni ukazi za spremembo osnovnega objekta.

5.0 Program POSTSCR.FOR

Tukaj so navedeni podprogrami s pomočjo katerih je bila generirana knjižnica POSTSCR.LIB.

      SUBROUTINE Sklenitev_lika()
      Write(1,*)'   closepath'
      END
      
      SUBROUTINE Zapolnitev()
      Write(1,*)'fill'     
      END
      
      SUBROUTINE  Sivina_izrisa(b)
      REAL b
      Write(1,1)b 
1     FORMAT(F14.2,' setgray') 
      END
      
      SUBROUTINE Debelina_izrisa(c)      
      INTEGER    c
      Write(1,*)c,'   setlinewidth'
      END
      
      SUBROUTINE Definiranje_objekta(e)
      character  e*20 
      Write(1,2)e
2     FORMAT('/',A20)
      WRITE(1,*)' { newpath'
      END
                     
      SUBROUTINE Konec_objekta()
      Write(1,*)'} def'
      END               
      
      SUBROUTINE Risanje_objekta(e)
      character  e*20
      Write(1,2)e
2     FORMAT(A20)               
      END         
      
      SUBROUTINE Izris_Objekta()
      Write(1,*)'stroke'
      END
      
      SUBROUTINE Prikaz_strani()
      Write(1,*)'showpage'
      END
               

      SUBROUTINE Nastavitev_formata(x1,y1,x2,y2,x3,y3,x4,y4,i)
      Integer      x1,y1,x2,y2,x3,y3,x4,y4,x11,y11,x12,y12,x13,y13
      REAL         dx1,dy1,dx2,dy2,xs,ys,tx,ty
      CHARACTER    i*20
      
      OPEN(1,file=i)
      Write(1,200) 
200   FORMAT('%!PS-Adobe-2.0 EPSF-2.0') 
      Write(1,300) 
300   FORMAT('%%Creator: psdraw - by Leon Kos')     
      Write(1,400)i  
400   FORMAT('%%DocumentFonts: ',A20)
      Write(1,500)x3,y3,x4,y4  
500   FORMAT('%%BoundingBox:',I6,I6,I5,I5)      
      Write(1,600)
600   FORMAT('%%Pages: (atend)')      
      Write(1,700)
700   FORMAT('%%EndComments\n%%EndProlog\n%%Page: 1 1\ngsave')      
      Write(1,800)
800   FORMAT('% Program izpisuje like, daljice in tekst')
      Write(1,900)
900   FORMAT('% v PostScript kodi.')      
      Write(1,*)'/mm { 72 25.4 div mul } def'
     
      IF((x3.le.x4).and.(y3.le.y4))then
          goto 50
        ELSEIF((x3.ge.x4).and.(y3.le.y4))then 
          goto 51
        ELSEIF((x3.ge.x4).and.(y3.ge.y4))then    
          goto 52
        ELSEIF((x3.le.x4).and.(y3.ge.y4))then    
          goto 53
      ENDIF     
      
53    dx1=x2-x1
      dy1=y2-y1
      dx2=x4-x3
      dy2=y3-y4
      xs=(dx2)/(dx1)
      ys=(dy2)/(dy1)
      
      IF (xs.gt.ys)then                
          goto 13
           else 
          goto 23
      ENDIF
13    Write(1,27)ys,ys
27    FORMAT(F7.3,F7.3,' scale')
      goto 33
23    Write(1,28)xs,xs
28    FORMAT(F7.3,F7.3,' scale')      
33    continue
      x11=-x1
      y11=-y1
      Write(1,211)x11,y11
211   FORMAT(I6,' mm',I6,' mm translate')
      Write(1,210)
210   FORMAT('270 rotate')
      x12=-y1-x1
      y12=x1-y1
      Write(1,212)x12,y12
212   FORMAT(I6,' mm',I6,' mm translate')
      IF(dx1.ge.dy1)then
        y13=dx1/2-dy1/2
        goto 47
       else
        y13=-dx1/2+dy1/2
      endif 
47    continue   
      x13=-dy1/2-dx1/2
      Write(1,213)x13,y13
213   FORMAT(I6,' mm',I6,' mm translate')

      ty=(x4/xs)-(dx2/xs)
      tx=-(y4/ys)
      Write(1,29)tx,ty
29    FORMAT(F9.3,' mm',F9.3,' mm translate') 
      GOTO 100 

52    dx1=x2-x1
      dy1=y2-y1
      dx2=x3-x4
      dy2=y3-y4
      xs=(dx2)/(dx1)
      ys=(dy2)/(dy1)
      
      IF (xs.gt.ys)then
          goto 12
        else 
          goto 22
      ENDIF
12    Write(1,9)ys,ys
9     FORMAT(F7.3,F7.3,' scale')
      goto 32
22    Write(1,18)xs,xs
18    FORMAT(F7.3,F7.3,' scale')      
32    continue 
      x11=-x1
      y11=-y1
      Write(1,215)x11,y11
215   FORMAT(I6,' mm',I6,' mm translate')
      Write(1,214)
214   FORMAT('180 rotate') 
      x12=-2*x1
      y12=-2*y1
      Write(1,216)x12,y12
216   FORMAT(I6,' mm',I6,' mm translate')
      x13=-dx1
      y13=-dy1
      Write(1,217)x13,y13
217   FORMAT(I6,' mm',I6,' mm translate')
      ty=-(x4/xs)
      tx=-(y4/ys)
      Write(1,19)tx,ty
19    FORMAT(F9.3,' mm',F9.3,' mm translate') 
      GOTO 100 

51    dx1=x2-x1
      dy1=y2-y1
      dx2=x3-x4
      dy2=y4-y3
      xs=(dx2)/(dx1)
      ys=(dy2)/(dy1)
      
      IF (xs.gt.ys)then
          goto 11
        else 
          goto 21
      ENDIF
11    Write(1,6)ys,ys
6     FORMAT(F7.3,F7.3,' scale')
      goto 31
21    Write(1,7)xs,xs
7     FORMAT(F7.3,F7.3,' scale')      
31    continue 
      x11=-x1
      y11=-y1
      Write(1,218)x11,y11
218   FORMAT(I6,' mm',I6,' mm translate')
      Write(1,221)
221   FORMAT('90 rotate') 
      x12=y1-x1
      y12=-x1-y1
      Write(1,219)x12,y12
219   FORMAT(I6,' mm',I6,' mm translate')
      IF(dx1.ge.dy1)then
        x13=dx1/2-dy1/2
        goto 48
       else
        x13=-dx1/2+dy1/2
      endif 
48    continue   
      y13=-dy1/2-dx1/2
      Write(1,220)x13,y13
220   FORMAT(I6,' mm',I6,' mm translate')
      
      
      ty=-(x4/xs)
      tx=(y4/ys)-(dy2/ys)
      
      Write(1,8)tx,ty
8     FORMAT(F9.3,' mm',F9.3,' mm translate') 
      GOTO 100 
       
50    dx1=x2-x1
      dy1=y2-y1
      dx2=x4-x3
      dy2=y4-y3
      xs=(dx2)/(dx1)
      ys=(dy2)/(dy1)
      
      IF (xs.gt.ys)then
          goto 10
        else 
          goto 20
      ENDIF    
10    Write(1,2)ys,ys
2     FORMAT(F7.3,F7.3,' scale')
      goto 30
20    Write(1,3)xs,xs
3     FORMAT(F7.3,F7.3,' scale')      
30    continue 
      x11=-x1
      y11=-y1
      Write(1,223)x11,y11
223   FORMAT(I6,' mm',I6,' mm translate')

      tx=(x4/xs)-(dx2/xs)
      ty=(y4/ys)-(dy2/ys)
      Write(1,4)tx,ty
4     FORMAT(F9.3,' mm',F9.3,' mm translate')
100   continue
      end  
       
      SUBROUTINE Rotacija_Objekta(a,e)
      INTEGER     a
      character   e*20
      Write(1,3)a
3     FORMAT(I5,' rotate')
      Write(1,2)e
2     FORMAT('0  0 ',A20)
      END 
      
      SUBROUTINE Translacija_Objekta(x,y,e)
      INTEGER      x,y
      character*100  e
      Write(1,3)x,y 
3     FORMAT(I5,' mm',I5,' mm translate')
      Write(1,2)e
2     FORMAT('0  0 ',A20)
      END
      
      SUBROUTINE Save()
      Write(1,*)'gsave'
      END
      
      SUBROUTINE Restore()
      Write(1,*)'grestore'
      END
      
      SUBROUTINE Skalacija_Objekta(x,y,e) 
      REAL     x,y 
      character*100  e
      Write(1,4)x,y
4     FORMAT(F7.3,/,F7.3,' scale')
      Write(1,2)e
2     FORMAT('0  0 ',A20)
      end         
             
             
      SUBROUTINE Daljica(x1,y1,x2,y2)
      Integer x1,y1,x2,y2
      Write(1,2)x1,y1
2     FORMAT(I5,' mm',I5,' mm moveto')
      Write(1,3)x2,y2
3     FORMAT(I5,' mm',I5,' mm lineto')
      END

      SUBROUTINE Krog(x,y,r)
      INTEGER  x,y,r,a1,a2
      a1=0
      a2=360
      Write(1,2)x,y,r,a1,a2
2     FORMAT(I5,' mm ',I5,' mm ',I4,' mm ',I4,I4,' arc')
      END 
      
      SUBROUTINE Lok(x,y,r,a1,a2)
      INTEGER  x,y,a1,a2,r
      Write(1,2)x,y,r,a1,a2
2     FORMAT(I5,' mm ',I5,' mm ',I4,' mm ',I4,I4,' arc')
      END
      
      SUBROUTINE Tekst(w,x,y,g)
      INTEGER       x,y,w
      character     g*100
      Write(1,2)
2     FORMAT('/Times-Roman findfont')
      Write(1,3)w
3     FORMAT(I5,' scalefont')
      Write(1,4)
4     FORMAT('setfont')
      Write(1,5)
5     FORMAT('newpath')
      Write(1,6)x,y
6     FORMAT(I5,' mm',I5,' mm moveto')
      Write(1,7)g
7     FORMAT('(',A100,')  show')
      END      

6.0 Osnovni primeri uporabe knjižnice POSTSCR.FOR

V tem delu naloge je predstavljena osnovna uporaba ukazov knjižnice.

      Program KVADRAT1
      
      Character*100  e
      Character*20   i
      
      i='kvadrat.ps'
      CALL Nastavitev_formata(0,0,600,800,150,290,210,200,i)
      e='kvadrat'
      CALL Definiranje_Objekta(e)
      CALL Daljica(100,100,400,100)    
      CALL Daljica(400,100,400,400)
      CALL Daljica(400,400,100,400)
      CALL Daljica(100,400,100,100)
      CALL Konec_Objekta()
      CALL Risanje_Objekta(e)
      CALL Izris_Objekta()
        
      CALL Prikaz_strani()
      
      end
Program KVADRAT1.FOR Pomanjša format risanja ter sliko pzicionira na predvideno mesto (rotacija za 270 stopinj). V programu je definiran objekt, ki je sestavljen iz štirih daljic.

      PROGRAM Krog1
      
      Character*100  e
      Character*20   i
      i='krog.ps'
      CALL Nastavitev_formata(0,0,50,80,10,20,100,120,i)
      e='krog'
      CALL Definiranje_Objekta(e)
      CALL Krog(30,20,15)
      CALL Konec_Objekta()
      CALL Risanje_Objekta(e)
      CALL Zapolnitev()
      CALL Izris_Objekta()
      CALL Save()
      CALL Skalacija_Objekta(1.5,1.2,e)             
      CALL Izris_Objekta()
      CALL Restore() 
      CALL Prikaz_strani()
      end
Program KROG1.FOR Riše sliko formata 50x80 in jo pozicionira na izhodni format. Na sliki jepredstavljen izris kroga, ter njegova skalacija. Ocitno le da nastane zaradi razlicne povecave v x in y smeri do elipticnega izrisa kroga.Predstavljen je tudi ukaz za zapolnjevanje objektov.

      PROGRAM Lok1
      
      Character*100  e
      Character*20   i
      i='lok.ps'
      CALL Nastavitev_formata(0,0,50,80,10,20,100,120,i)
      e='loki'
      CALL Definiranje_Objekta(e)
      CALL Lok(30,20,15,0,90)
      CALL Konec_Objekta()
      CALL Risanje_Objekta(e)                          
      CALL Sivina_Izrisa(0.0)
      CALL Debelina_izrisa(4)
      CALL Izris_Objekta()
      CALL Save()
      CALL Rotacija_Objekta(25,e)
      CALL Izris_Objekta()
      CALL Restore()
       
      CALL Prikaz_strani()
      end
Program LOK1.FOR predstavlja izris loka ter negovo rotacijo. Viden je tudi vpliv debeline izpisa.

      Program Tekst1
      
      Character*100   g
      Character*20   i,e
      
      i='tekst.ps'
      CALL Nastavitev_formata(100,100,400,600,50,290,210,50,i)

      g='pa je konec'
      e='tekst'
      CALL Definiranje_Objekta(e)
      CALL Tekst(50,200,200,g) 
      CALL Konec_Objekta()                          !pisanje teksta
      CALL Risanje_Objekta(e)
      CALL Sivina_Izrisa(0.0)
      CALL Debelina_izrisa(1)
      CALL Izris_Objekta()
      CALL Save()
      CALL Translacija_Objekta(-50,-80,e)
      CALL Restore()
      CALL Izris_Objekta()
      CALL Prikaz_strani()
      
      end
Program TEKST1.FOR rotira sliko za 270 stopinj in izpiše tekst, ter ga nato še translira.


Vaše mnenje lahko pošljete na:
Marjan HOSTA
University of Ljubljana
Faculty of mechanical engineering
CAD lab - LECAD
Aškerceva 6
1000 Ljubljana
Slovenia

Telephone: +386 (061) 1 77 14 36