Introduce AST namespace aliases
[shapes.git] / examples / doc / tutorial-graphics-params.shape
blobcb6304e25adc2067e7c6d537b4a2db8ad07c9e33
1 /** This file is part of Shapes.
2  **
3  ** Shapes is free software: you can redistribute it and/or modify
4  ** it under the terms of the GNU General Public License as published by
5  ** the Free Software Foundation, either version 3 of the License, or
6  ** any later version.
7  **
8  ** Shapes is distributed in the hope that it will be useful,
9  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
10  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  ** GNU General Public License for more details.
12  **
13  ** You should have received a copy of the GNU General Public License
14  ** along with Shapes.  If not, see <http://www.gnu.org/licenses/>.
15  **
16  ** Copyright 2008, 2010, 2014 Henrik Tidefelt
17  **/
19 ##lookin Shapes
21 pth: @defaultunit:1%C | (0cm,0cm)>(^60°)--(^)<(2cm,0.5cm)>(^)--(^)<(3cm,~1cm)--(^)<(6cm,0cm)>(^90°)--(5cm,0.5cm)--(0.5cm,1cm)--cycle
23 yStep: 2cm
25 /** Topmost, we just stroke the path to show what it looks like with default parameters **/
26 •page << [stroke pth]
28 /** The default fill color is black: **/
29 •page << [shift (0,~1*yStep)] [] [fill pth]
32 /** Note the various ways to combine many several bindings, as shown in the following examples that set properties of a stroke. **/
34 /** This way, it is difficult to indent nicely since there is no ampersand associated with the first binding. **/
35 •page <<
36     @stroking:[rgb 0.1 0.3 0.2]
37   & @width:2bp
38   & @cap:CAP_SQUARE
39   & @dash:[dashpattern 3mm 2mm 1bp 2mm]
40   |
41   [shift (0,~2*yStep)] [] [stroke pth]
43 /** This way, one has to introduce <nullbind>, and indenting is still not an easy question. **/
44 •page <<
45   nullbind
46   & @stroking:RGB_BLUE
47   & @width:2bp
48   & @cap:CAP_BUTT
49   & @dash:[dashpattern 3mm 2mm 1bp 2mm]
50   |
51   [shift (0,~2.25*yStep)] [] [stroke pth]
53 /** This way, one has to abandon the good old & way of combining bindings, and learn about the new function <bindings>.
54  ** However, indenting is easy here.
55  **/
56 •page <<
57   [bindings
58     @stroking:RGB_GREEN
59     @width:1mm
60     @cap:CAP_ROUND
61     @join:JOIN_MITER
62     @miterlimit:4.5
63     @dash:[dashpattern 3mm 2mm 1bp 2mm]
64   ]
65   |
66   [shift (0,~2.5*yStep)] [] [stroke pth]
69 /** The fill color is changed as follows: **/
70 •page << @nonstroking:RGB_BLUE | [shift (0,~3*yStep)] [] [fill pth]
72 /** If a path is both to be filled and stroked, it is efficient to use the fillstroke command,
73  ** here, the ampersand is used instead of the function <bindings>:
74  **/
75 •page <<
76     @nonstroking:GRAY_WHITE
77   & @stroking:[rgb 0.5 0.5 0]
78   |
79   [shift (0,~4*yStep)]*[rotate 30°] [] [fillstroke pth]