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:  padrepeatreflect (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: padrepeatreflect (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: padrepeatreflect (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-xflip-yflip-xyclamp.

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-xflip-yflip-xyclamp (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

       ] ]