Programmeerimiskeele-sõltumatu graafikakeele realiseeriminie

Eesmärk on arendada välja võimalikult lihtne väljenduskeel vektorgraafika kirjeldamiseks ning lihtsad ja efektiivsed programmid selle teisendamiseks piltideks (PNG). Vastavat rakendust peab saama edukalt rakendada veebigraafika tegemises, erinevatest programmeerimiskeeltest graafika väljastamiseks, jne. Kasulik oleks teha programmeerimiskeelte õppimiseks sobivaid näidisülesandeid.

Rakendusi

Kuidas lahendada antud probleem?

Projekti väljakutsed

Kiiruse huvides tuleks programmeerida keeles C. Oluline on kirjelduskeel hoida lakoonilisena, et pilte saaks kirjeldada lühidalt. Oluline on mõelda milliseid objekte saab kirjeldada ning kuidas neid objekte efektiivselt kasutada.

Vaata fly dokumentatsiooni ja käske mida hetkel toetatakse:

fly, version 2.0.0

See http://martin.gleeson.com/fly/ for documentation.

Quick Reference to Directives: 

new
size x,y
name filename

line    x1,y1,x2,y2,R,G,B             dline        x1,y1,x2,y2,R,G,B 
rect    x1,y1,x2,y2,R,G,B             frect        x1,y1,x2,y2,R,G,B 
square  x,y,s,R,G,B                   fsquare      x,y,s,R,G,B 
poly    R,G,B,x1,y1...,xn,yn          fpoly        R,G,B,x1,y1...,xn,yn 
fill    x,y,R,G,B                     filltoborder x,y,R1,G1,B1,R2,B2,G2 
arc     x1,y1,w,h,start,finish,R,G,B  
ellipse x1,y1,w,h,R,G,B  
circle  x,y,d,R,G,B                   fcircle      x,y,d,R,G,B 

string   R,G,B,x,y,, 
stringup R,G,B,x,y,, 
(size = tiny, small, medium, large or giant) 

copy         x,y,x1,y1,x2,y2,filename 
copyresized  x1,y1,x2,y2,dx1,dy1,dx2,dy2,filename 

setpixel     x,y,R,G,B 
getpixel     x,y 
colourchange R1,G1,B1,R2,G2,B2 
transparent  R,G,B 
interlace 

setbrush    filename                         killbrush 
settile     filename                         killtile 
setstyle    R1,G1,B1,R2,G2,B2,...,Rn,Bn,Gn       killstyle 

sizex 
sizey 
rotate      deg 

type        gif|png|jpeg
quality     n (image quality when type = jpeg. Must be in the range 0-95)

end

Käesoleva projekti juures tuleks arvestada uusi võimalusi ja vajadusi:


R,G,B asemel 
	- värv nimeliselt  (black, purple, valge, roosa, jne)
	- värv optsionaalseks: setcolor color (hoida kokku hiljem failis ruumi)
	- HTML stiilis värv #rrggbb

Objektid:

circle x,y,r,color,n=name1,style
circle z,w,r,color,n=name2,style
connect name1,name2  # joonista kahe ringi vahele ühendav sirgjoon

tree:
	tree(root (L1(L2,R2),R(..)))...)
	[nodestyle]
	[linestyle]
	...

graph
	n1: n2,n3,n4
	n2: n5,
	n3: n4
	...
	[layout style]

colormatrix [M x N][ colors = ]
(seletame töö käigus!)