g2Create a 2D graphics command queue object. Call without using ‘new’.
Kind: global typedef
Link: https://github.com/goessner/g2
Author: Stefan Goessner
License: MIT License
| Param | Type | Description |
|---|---|---|
| [opts] | object |
Custom options object. |
Example
const ctx = document.getElementById("c").getContext("2d");
g2() // Create 'g2' instance.
.lin({x1:50,y1:50,x2:100,y2:100}) // Append ...
.lin({x1:100,y1:100,x2:200,y2:50}) // ... commands.
.exe(ctx); // Execute commands addressing canvas context.
g2
objectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectClear viewport region.
Kind: instance method of g2
Returns: object - g2
objectSet the view by placing origin coordinates and scaling factor in device units and make viewport cartesian.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
view arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| [scl] | number |
1 |
absolute scaling factor. |
| [x] | number |
0 |
x-origin in device units. |
| [y] | number |
0 |
y-origin in device units. |
| [cartesian] | boolean |
false |
set cartesian flag. |
objectDraw grid.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
grid arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| [color] | string |
"#ccc" |
change color. |
| [size] | number |
20 |
change space between lines. |
objectDraw circle by center and radius.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
circle arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| x | number |
x-value center. | |
| y | number |
y-value center. | |
| r | number |
radius. | |
| w | number |
angle. | |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [sh] | array |
[0,0,0,'transparent'] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().cir({x:100,y:80,r:20}) // Draw circle.
objectDraw ellipse by center and radius for x and y.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
ellispe argument object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| x | number |
x-value center. | |
| y | number |
y-value center. | |
| rx | number |
radius x-axys. | |
| ry | number |
radius y-axys. | |
| w | number |
start angle. | |
| dw | number |
angular range. | |
| rot | number |
rotation. | |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().ell({x:100,y:80,rx:20,ry:30,w:0,dw:2*Math.PI/4,rot:1}) // Draw circle.
objectDraw arc by center point, radius, start angle and angular range.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
arc arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| x | number |
x-value center. | |
| y | number |
y-value center. | |
| r | number |
radius. | |
| [w] | number |
0 |
start angle (in radian). |
| [dw] | number |
2*pi |
angular range in Radians. |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lc] | string |
"butt" |
line cap [butt, round, square]. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().arc({x:300,y:400,r:390,w:-Math.PI/4,dw:-Math.PI/2})
.exe(ctx);
objectDraw rectangle by anchor point and dimensions.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
rectangle arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| x | number |
x-value upper left corner. | |
| y | number |
y-value upper left corner. | |
| b | number |
width. | |
| h | number |
height. | |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lj] | string |
"'miter'" |
line join [round, bevel, miter]. |
| [ml] | number |
10 |
miter limit. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().rec({x:100,y:80,b:40,h:30}) // Draw rectangle.
objectDraw line by start point and end point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
line arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| x1 | number |
start x coordinate. | |
| y1 | number |
start y coordinate. | |
| x2 | number |
end x coordinate. | |
| y2 | number |
end y coordinate. | |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lc] | string |
"butt" |
line cap [butt, round, square]. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().lin({x1:10,x2:10,y1:190,y2:10}) // Draw line.
objectDraw polygon by points. Using iterator function for getting points from array by index. It must return current point object {x,y} or object {done:true}. Default iterator expects sequence of x/y-coordinates as a flat array [x,y,…], array of [[x,y],…] arrays or array of [{x,y},…] objects.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
polygon arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| pts | array |
array of points. | |
| [format] | string |
format string of points array structure. Useful for handing over initial empty points array. One of ['x,y','[x,y]','{x,y}']. Has precedence over pts content. |
|
| [closed] | boolean |
false |
|
| x | number |
start x coordinate. | |
| y | number |
start y coordinate. | |
| w | number |
angle. | |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lc] | string |
"butt" |
line cap [butt, round, square]. |
| [lj] | string |
"'miter'" |
line join [round, bevel, miter]. |
| [ml] | number |
10 |
miter limit. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
Example
g2().ply({pts:[100,50,120,60,80,70]}),
.ply({pts:[150,60],[170,70],[130,80]],closed:true}),
.ply({pts:[{x:160,y:70},{x:180,y:80},{x:140,y:90}]}),
.exe(ctx);
objectDraw text string at anchor point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
text arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| str | string |
text string. | |
| [x] | number |
0 |
x coordinate of text anchor position. |
| [y] | number |
0 |
y coordinate of text anchor position. |
| [w] | number |
0 |
w Rotation angle about anchor point with respect to positive x-axis. |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
| [thal] | string |
"'start'" |
- Text horizontal alignment ['start','end','left','right','center'] |
| [tval] | string |
"'alphabetic'" |
- Text vertival alignment ['top','hanging','middle','alphabetic','ideographic','bottom'] |
| [font] | string |
"'normal 14px serif'" |
Font styling |
objectReference g2 graphics commands from another g2 object or a predefined g2.symbol. With this command you can reuse instances of grouped graphics commands while applying a similarity transformation and style properties on them. In fact you might want to build custom graphics libraries on top of that feature.
Kind: instance method of g2
Returns: object - g2
See: predefined symbols in g2.ext
| Type | Description |
|---|---|
object |
use arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| grp | object | string |
g2 source object or symbol name found in ‘g2.symbol’ namespace. | |
| [x] | number |
0 |
translation value x. |
| [y] | number |
0 |
translation value y. |
| [w] | number |
0 |
rotation angle (in radians). |
| [scl] | number |
1 |
scale factor. |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lc] | string |
"butt" |
line cap [butt, round, square]. |
| [lj] | string |
"'miter'" |
line join [round, bevel, miter]. |
| [ml] | number |
10 |
miter limit. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
| [thal] | string |
"'start'" |
- Text horizontal alignment ['start','end','left','right','center'] |
| [tval] | string |
"'alphabetic'" |
- Text vertival alignment ['top','hanging','middle','alphabetic','ideographic','bottom'] |
| [font] | string |
"'normal 14px serif'" |
Font styling |
Example
g2.symbol.cross = g2().lin({x1:5,y1:5,x2:-5,y2:-5}).lin({x1:5,y1:-5,x2:-5,y2:5}); // Define symbol.
g2().use({grp:"cross",x:100,y:100}) // Draw cross at position 100,100.
objectDraw image. This also applies to images of reused g2 objects. If an image can not be loaded, it will be replaced by a broken-image symbol.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
image arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| uri | string |
image uri or data:url. | |
| [x] | number |
0 |
x-coordinate of image (upper left). |
| [y] | number |
0 |
y-coordinate of image (upper left). |
| [b] | number |
image.width |
width. |
| [h] | number |
image.height |
height. |
| [sx] | number |
0 |
source x-offset. |
| [sy] | number |
0 |
source y-offset. |
| [sb] | number |
image.width |
source width. |
| [sh] | number |
image.height |
source height. |
| [xoff] | number |
0 |
x-offset. |
| [yoff] | number |
0 |
y-offset. |
| [w] | number |
0 |
rotation angle (about upper left, in radians). |
| [scl] | number |
1 |
image scaling. |
objectBegin subcommands. Current state is saved. Optionally apply transformation or style properties.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
beg arguments object. |
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| [x] | number |
0 |
translation value x. |
| [y] | number |
0 |
translation value y. |
| [w] | number |
0 |
rotation angle (in radians). |
| [scl] | number |
1 |
scale factor. |
| [matrix] | array |
matrix instead of single transform arguments (SVG-structure [a,b,c,d,x,y]). | |
| [fs] | string |
"transparent" |
fill color. |
| [ls] | string |
"black" |
stroke color. |
| [lw] | string |
1 |
line width. |
| [lc] | string |
"butt" |
line cap [butt, round, square]. |
| [lj] | string |
"'miter'" |
line join [round, bevel, miter]. |
| [ml] | number |
10 |
miter limit. |
| [ld] | array |
[] |
line dash array. |
| [sh] | array |
[0,0,0,"transparent"] |
shadow values [x-offset,y-offset,blur,color], |
| [thal] | string |
"'start'" |
- text horizontal alignment ['start','end','left','right','center'] |
| [tval] | string |
"'alphabetic'" |
- text vertival alignment ['top','hanging','middle','alphabetic','ideographic','bottom'] |
| [font] | string |
"'normal 14px serif'" |
Font styling |
objectEnd subcommands. Previous state is restored.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
end arguments object. |
objectBegin new path.
Kind: instance method of g2
Returns: object - g2
objectClose current path by straight line.
Kind: instance method of g2
Returns: object - g2
objectMove to point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
move arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| x | number |
move to x coordinate |
| y | number |
move to y coordinate |
objectCreate line segment to point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
line segment argument object. |
Properties
| Name | Type | Description |
|---|---|---|
| x | number |
x coordinate of target point. |
| y | number |
y coordinate of target point. |
Example
g2().p() // Begin path.
.m({x:0,y:50}) // Move to point.
.l({x:300,y:0}) // Line segment to point.
.l({x:400,y:100}) // ...
.stroke() // Stroke path.
objectCreate quadratic bezier curve segment to point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
quadratic curve arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| x1 | number |
x coordinate of control point. |
| y1 | number |
y coordinate of control point. |
| x | number |
x coordinate of target point. |
| y | number |
y coordinate of target point. |
Example
g2().p() // Begin path.
.m({x:0,y:0}) // Move to point.
.q({x1:200,y1:200,x:400,y:0}) // Quadratic bezier curve segment.
.stroke() // Stroke path.
objectCreate cubic bezier curve to point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
cubic curve arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| x1 | number |
x coordinate of first control point. |
| y1 | number |
y coordinate of first control point. |
| x2 | number |
x coordinate of second control point. |
| y2 | number |
y coordinate of second control point. |
| x | number |
x coordinate of target point. |
| y | number |
y coordinate of target point. |
Example
g2().p() // Begin path.
.m({x:0,y:100}) // Move to point.
.c({x1:100,y1:200,x2:200,y2:0,x:400,y:100}) // Create cubic bezier curve.
.stroke() // Stroke path.
.exe(ctx); // Render to canvas context.
objectDraw arc with angular range to target point.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
arc arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| dw | number |
angular range in radians. |
| x | number |
x coordinate of target point. |
| y | number |
y coordinate of target point. |
Example
g2().p() // Begin path.
.m({x:50,y:50}) // Move to point.
.a({dw:2,x:300,y:100}) // Create arc segment.
.stroke() // Stroke path.
.exe(ctx); // Render to canvas context.
objectStroke the current path or path object.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
stroke arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| [d] | string |
SVG path definition string. Current path is ignored then. |
objectFill the current path or path object.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
fill arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| [d] | string |
SVG path definition string. Current path is ignored then. |
objectShortcut for stroke and fill the current path or path object. In case of shadow style, only the path interior creates shadow, not also the path contour.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
object |
drw arguments object. |
Properties
| Name | Type | Description |
|---|---|---|
| [d] | string |
SVG path definition string. Current path is ignored then. |
objectDelete all commands beginning from idx to end of command queue.
Kind: instance method of g2
Returns: object - g2
objectCall function between commands of the command queue.
Kind: instance method of g2
Returns: object - g2
| Type | Description |
|---|---|
function |
ins argument function. |
Example
const node = {
fill:'lime',
g2() { return g2().cir({x:160,y:50,r:15,fs:this.fill,lw:4,sh:[8,8,8,"gray"]}) }
};
let color = 'red';
g2().cir({x:40,y:50,r:15,fs:color,lw:4,sh:[8,8,8,"gray"]}) // draw red circle.
.ins(()=>{color='green'}) // color is now green.
.cir({x:80,y:50,r:15,fs:color,lw:4,sh:[8,8,8,"gray"]}) // draw green circle.
.ins((g) => // draw orange circle
g.cir({x:120, y:50, r:15, fs:'orange', lw:4,sh:[8,8,8,"gray"]}))
.ins(node) // draw node.
.exe(ctx) // render to canvas context.
objectExecute g2 commands. It does so automatically and recursively with ‘use’ed commands.
Kind: instance method of g2
Returns: object - g2
| Param | Type | Description |
|---|---|---|
| ctx | object |
Context. |