1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
/**
* Copyright: Mike Wey 2011
* License: zlib (See accompanying LICENSE file)
* Authors: Mike Wey
*/
module dmagick.DrawingContext;
import std.string;
import dmagick.Color;
import dmagick.Exception;
import dmagick.Geometry;
import dmagick.Image;
import dmagick.Options;
import dmagick.Utils;
import dmagick.c.draw;
import dmagick.c.geometry;
import dmagick.c.type;
/**
* Drawable provides a convenient interface for preparing vector,
* image, or text arguments.
*/
class DrawingContext
{
string operations;
/**
* Apply the drawing context to the image.
*/
void draw(Image image)
{
copyString(image.options.drawInfo.primitive, operations);
DrawImage(image.imageRef, image.options.drawInfo);
DMagickException.throwException(&(image.imageRef.exception));
}
/**
* Transforms the coordinate system by a 3x3 transformation matrix.
*/
void affine(AffineMatrix matrix)
{
operations ~= format(" affine %s,%s,%s,%s,%s,%s",
matrix.sx, matrix.rx, matrix.ry, matrix.sy, matrix.tx, matrix.ty);
}
/**
* Draws an arc within a rectangle.
*/
void arc(size_t startX, size_t startY, size_t endX, size_t endY, double startDegrees, double endDegrees)
{
operations ~= format(" arc %s,%s %s,%s %s,%s",
startX, startY, endX, endY, startDegrees, endDegrees);
}
//bezier
//border-color
//clip-path
//clip-rule
//clip-units
//circle
//color
//decorate
//ellipse
//encoding
//fill
//fill-opacity
//fill-rule
//font
//font-family
//font-size
//font-stretch
//font-style
//font-weight
//gradient-units
//gravity
//image
//interline-spacing
//interword-spacing
//kerning
//line
//matte
//offset
//opacity
//path
//point
//polyline
//polygon
//pop
//push
//rectangle
//rotate
//roundRectangle
//scale
//skewX
//skewY
//stop-color
//stroke
//stroke-antialias
//stroke-dasharray
//stroke-dashoffset
//stroke-linecap
//stroke-linejoin
//stroke-miterlimit
//stroke-opacity
//stroke-width
//text
//text-align
//text-anchor
//text-antialias
//text-undercolor
//translate
//viewbox
}
|