Barva, gradienty a vzory
Barevné a jiné vlastnosti čáry se zadávají prostřednictvím příkazů pen a pen-fill.
DRAW pen < color, (linear, radial, diamond) gradient, pattern, bitmap >
Příkaz určuje barevné provedení čáry.
DRAW fill-pen < color, (linear, radial, diamond) gradient, pattern, bitmap >
Příkaz definuje výplňový režim pro uzavřené tvary.
DRAW pen <color>
Red [needs: view]
view [
base draw [
pen yellow ; color as word!
triangle 10x10 50x50 50x10
pen 255.10.10 ; color as tuple!
circle 40x40 20
] ]
DRAW fill-pen <color>
Red [needs: view]
view [
base draw [
fill-pen yellow ; color as word!
triangle 10x10 50x50 50x10
fill-pen 255.10.10 ; color as tuple!
circle 40x40 20
] ]
Vypnutí režimu pen a fill-pen:
Red [needs: view]
view [
base draw [
pen off
fill-pen yellow ; color as word!
triangle 10x10 50x50 50x10
fill-pen off
circle 40x40 20
] ]
DRAW linear - lineární barevný gradient
Převzato z dokumentace Redu
<pen/fill-pen> linear <color1><offset> ... <colorN><offset><start><end><spread>
<color1/N> : seznam barev gradientu (tuple! word!).
<offset> : (optional) odsazení barvy gradientu (float!).
<start> : (optional) počáteční bod (pair!).
<end> : (optional unless <start>) koncový bod (pair!).
<spread> : (optional) způsob šíření (word!).
Nastaví barevný gradient pro kreslení. Pro metodu spread jsou akceptované následující hodnoty: pad, repeat, reflect (aktuálně je pad totéž jako repeat pro Windows).
Je-li použita metoda spread, definují koncové body směr gradientu. Nejsou-li body zadány, rozvíjí se gradient v horizontálním směru uvnitř kresleného obrazce.
Pen
Red [needs: view]
view [
base draw [
pen linear blue green red 0x0 80x80
line-width 5
line 0x0 80x80
]
base draw [
pen linear blue green 0x0 40x40 pad ; totéž jako repeat
line-width 5
line 0x0 80x80
]
base draw [
pen linear blue green 0x0 40x40 reflect ; zrcadlit
line-width 5
line 0x0 80x80
] ]
Fill-pen
Red [needs: view]
view [
base draw [
fill-pen linear blue green red 18x18 62x62
circle 40x40 30
] ]
DRAW radial - radiální barevný gradient
Převzato z dokumentace Redu
<pen/fill-pen> radial <color1> <offset> ... <colorN> <offset> <center> <radius> <focal> <spread>
<color1/N> : seznam barev gradient (tuple! word!).
<offset> : (optional) odsazení barvy gradientu (float!).
<center> : (optional) střed kružnice gradientu (pair!).
<radius> : (optional unless <center>) poloměr kružnice (integer! float!).
<focal> : (optional) ohnisko (pair!).
<spread> : (optional) způsob šířdní (word!).
Nastaví radiální gradient pro kreslící operace. Pro metodu "spread" jsou akceptovány následující hodnoty: pad, repeat, reflect (aktuálně je pad totéž jako repeat ve Windows).
Radiální gradient bude vykreslován od ohniska k okraji kružnice, definované středem a poloměrem. Počáteční barva se vykreslí v ohnisku, koncová na okraji kruhu.
Pen
Red [needs: view]
view [
base draw [
pen radial blue green red 40x40 40 ; colors center radius
line-width 20
line 10x30 70x30
] ]
Fill-pen
Red [needs: view]
view [
base draw [
fill-pen radial blue green red 40x40 40 ; colors center radius
triangle 20x70 60x70 40x20
] ]
DRAW diamond - kárový barevný gradient
Převzato z dokumentace Redu
<pen/fill-pen> diamond <color1> <offset> ... <colorN> <offset> <upper> <lower> <focal> <spread>
<color1/N> : seznam barev gradientu (tuple! word!).
<offset> : (optional) odsazení barvy gradientu (float!).
<upper> : (optional) horní roh čtyřúhelníku. (pair!).
<lower> : (optional unless <upper>) dolní roh čtyčúhelníku (pair!).
<focal> : (optional) ohnisko (pair!).
<spread> : (optional) způsob šíření (word!).
Nastaví gradient ve tvaru kár. Pro metodu "spread" jsou akceptovány následující hodnoty: pad, repeat, reflect (aktuálně je pad totéž jako repeat ve Windows).
Kárový gradient se vykreslí ve směru od ohniska k okraji kára, definovaného horním a dolním rohem. Počáteční barva se vykreslí v ohnisku, koncová barva na okraji kára.
Red [needs: view]
view [
base draw [
fill-pen diamond blue green red ; gradient s ohniskem ve středu
circle 40x40 35
]
base draw [
fill-pen diamond blue green red 10x10 50x50 ;souřadnice gradientu "box"
circle 40x40 35
]
base draw [
fill-pen diamond blue green red 10x10 50x50 30x48 ; přidané ohnisko
circle 40x40 35
]
base draw [
pen diamond blue green red 10x10 50x50 30x48
; a line over the last gradient:
line-width 10
line 10x10 70x70
] ]
DRAW pattern - výplň vzorkem
Převzato z dokumentace Redu
<pen/fill-pen> pattern <size> <start> <end> <mode> [<commands>]
<size> : velikost vnitřního zobrazení (pair!)
<start> : (optional) horní roh vnitřního zobrazení (pair!).
<end> : (optional) dolní roh vnitřního zobrazení (pair!).
<mode> : (optional) uspořádání (word!).
<commands> : blok příkazů Draw pro určení vzorku.
Nastaví tvar uživatele jako vzorek pro plnící operace. Pro režim "mode" jsou akceptovány tyto hodnoty: tile (default), flip-x, flip-y, flip-xy, clamp.
Výchozím bodem je 0x0 a koncovým bodem je <size> (velikost).
Red [needs: view]
view [
; nejprve kreslíme vyplněný obdélník:
base draw [
fill-pen pattern 10x10 [
circle 5x5 4
line 3x3 7x7
] box 0x0 79x79
]
; potom vyplněnou diagonálu:
base draw [
pen pattern 10x10 [
circle 5x5 4
line 3x3 7x7
]
line-width 15
line 0x0 79x79
] ]
DRAW bitmap - výplň obrázkem
Převzato z dokumentace Redu
<pen/fill-pen> bitmap <image> <start> <end> <mode>
<image> : obrázek pro dlaždice (image!).
<start> : (optional) horní roh vyplňovaného obdélníku (pair!).
<end> : (optional) dolní roh vyplňovaného obdélníku (pair!).
<mode> : (optional) uspořádání (word!).
Nastaví obrázek jako vzorek pro výplňové operace. V režimu mode jsou akceptovány následující hodnoty: tile (default), flip-x, flip-y, flip-xy, clamp (připnout).
Výchozím bodem vyplňovaného obdélníku (box) je 0x0 a koncovým bodem je velikost obrázku - oboje typu pair!.
Výplňovým obrázkem pro následující příklad je: formátu bmp, png (size 35x35).
Red [needs: view]
myimage: load %asprite.bmp ; musí být v dosahu funkce load
view [
base draw [
fill-pen bitmap myimage tile ; default
box 0x0 79x79
]
base draw [
fill-pen bitmap myimage flip-x ; zrcadlově měnit podél osy x
box 0x0 79x79
]
base draw [
fill-pen bitmap myimage flip-y ; zrcadlově měnit podél osy y
box 0x0 79x79
]
base draw [
fill-pen bitmap myimage flip-xy ; zrcadlově měnit podél os x i y
box 0x0 79x79
]
base draw [
fill-pen bitmap myimage clamp ; připnout jako na nástěnku
box 0x0 79x79
]
base draw [
pen bitmap myimage ; vložit do diagonály
line-width 15
line 0x0 80x80
] ]