Magick++
7.1.2-29
Convert, Edit, Or Compose Bitmap Images
Toggle main menu visibility
Loading...
Searching...
No Matches
piddle.cpp
1
// This may look like C code, but it is really -*- C++ -*-
2
//
3
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
4
//
5
// Copyright @ 2013 ImageMagick Studio LLC, a non-profit organization
6
// dedicated to making software imaging solutions freely available.
7
//
8
// PerlMagick "piddle" demo re-implemented using Magick++ methods.
9
// The PerlMagick "piddle" demo is written by Cristy
10
//
11
12
#include <Magick++.h>
13
#include <cstdlib>
14
#include <string>
15
#include <iostream>
16
17
using namespace
std;
18
19
using namespace
Magick;
20
21
int
main(
int
/*argc*/
,
char
** argv)
22
{
23
24
// Initialize ImageMagick install location for Windows
25
MagickPlusPlusGenesis
genesis(*argv);
26
27
try
{
28
29
string
srcdir(
""
);
30
if
(getenv(
"SRCDIR"
) != 0)
31
srcdir = getenv(
"SRCDIR"
);
32
33
//
34
// Create a 300x300 white canvas.
35
//
36
Image
image(
"300x300"
,
"white"
);
37
38
// Drawing list
39
std::vector<Magick::Drawable> drawList;
40
41
// Start drawing by pushing a drawing context with specified
42
// viewbox size
43
drawList.push_back(
DrawablePushGraphicContext
());
44
drawList.push_back(
DrawableViewbox
(0,0,(ssize_t) image.columns(),
45
(ssize_t) image.rows()));
46
47
//
48
// Draw blue grid
49
//
50
drawList.push_back(
DrawableStrokeColor
(
"#ccf"
));
51
for
(
int
i=0; i < 300; i += 10 )
52
{
53
drawList.push_back(
DrawableLine
(i,0, i,300));
54
drawList.push_back(
DrawableLine
(0,i, 300,i));
55
}
56
57
//
58
// Draw rounded rectangle.
59
//
60
drawList.push_back(
DrawableFillColor
(
"blue"
));
61
drawList.push_back(
DrawableStrokeColor
(
"red"
));
62
drawList.push_back(
DrawableRoundRectangle
(15,15, 70,70, 10,10));
63
64
drawList.push_back(
DrawableFillColor
(
"blue"
));
65
drawList.push_back(
DrawableStrokeColor
(
"maroon"
));
66
drawList.push_back(
DrawableStrokeWidth
(4));
67
drawList.push_back(
DrawableRoundRectangle
(15,15, 70,70, 10,10));
68
69
//
70
// Draw curve.
71
//
72
{
73
drawList.push_back(
DrawableStrokeColor
(
"black"
));
74
drawList.push_back(
DrawableStrokeWidth
(4));
75
drawList.push_back(
DrawableFillColor
(
Color
()));
76
77
std::vector<Magick::Coordinate> points;
78
points.push_back(
Coordinate
(20,20));
79
points.push_back(
Coordinate
(100,50));
80
points.push_back(
Coordinate
(50,100));
81
points.push_back(
Coordinate
(160,160));
82
drawList.push_back(
DrawableBezier
(points));
83
}
84
85
//
86
// Draw line
87
//
88
{
89
const
double
dash_array[] = {4.0, 3.0, 0.0};
90
drawList.push_back(
DrawableStrokeDashArray
(dash_array));
91
drawList.push_back(
DrawableStrokeColor
(
"red"
));
92
drawList.push_back(
DrawableStrokeWidth
(1));
93
drawList.push_back(
DrawableLine
(10,200, 54,182));
94
drawList.push_back(
DrawableStrokeDashArray
((
double
*) 0));
95
}
96
97
//
98
// Draw arc within a circle.
99
//
100
drawList.push_back(
DrawableStrokeColor
(
"black"
));
101
drawList.push_back(
DrawableFillColor
(
"yellow"
));
102
drawList.push_back(
DrawableStrokeWidth
(4));
103
drawList.push_back(
DrawableCircle
(160,70, 200,70));
104
105
drawList.push_back(
DrawableStrokeColor
(
"black"
));
106
drawList.push_back(
DrawableFillColor
(
"blue"
));
107
drawList.push_back(
DrawableStrokeWidth
(4));
108
{
109
std::vector<VPath> path;
110
path.push_back(
PathMovetoAbs
(
Coordinate
(160,70)));
111
path.push_back(
PathLinetoVerticalRel
(-40));
112
path.push_back(
PathArcRel
(
PathArcArgs
(40,40, 0, 0, 0, -40,40)));
113
path.push_back(
PathClosePath
());
114
drawList.push_back(
DrawablePath
(path));
115
}
116
117
//
118
// Draw pentagram.
119
//
120
{
121
drawList.push_back(
DrawableStrokeColor
(
"red"
));
122
drawList.push_back(
DrawableFillColor
(
"LimeGreen"
));
123
drawList.push_back(
DrawableStrokeWidth
(3));
124
125
std::vector<Magick::Coordinate> points;
126
points.push_back(
Coordinate
(160,120));
127
points.push_back(
Coordinate
(130,190));
128
points.push_back(
Coordinate
(210,145));
129
points.push_back(
Coordinate
(110,145));
130
points.push_back(
Coordinate
(190,190));
131
points.push_back(
Coordinate
(160,120));
132
drawList.push_back(
DrawablePolygon
(points));
133
}
134
135
//
136
// Draw rectangle.
137
//
138
drawList.push_back(
DrawableStrokeWidth
(5));
139
drawList.push_back(
DrawableFillColor
(
Color
()));
// No fill
140
drawList.push_back(
DrawableStrokeColor
(
"yellow"
));
141
drawList.push_back(
DrawableLine
(200,260, 200,200));
142
drawList.push_back(
DrawableLine
(200,200, 260,200));
143
drawList.push_back(
DrawableStrokeColor
(
"red"
));
144
drawList.push_back(
DrawableLine
(260,200, 260,260));
145
drawList.push_back(
DrawableStrokeColor
(
"green"
));
146
drawList.push_back(
DrawableLine
(200,260, 260,260));
147
148
//
149
// Draw text.
150
//
151
#if defined(MAGICKCORE_FREETYPE_DELEGATE)
152
if
(getenv(
"MAGICK_FONT"
) != 0)
153
drawList.push_back(
DrawableFont
(
string
(getenv(
"MAGICK_FONT"
))));
154
drawList.push_back(
DrawableFillColor
(
"green"
));
155
drawList.push_back(
DrawableStrokeColor
(
Color
()));
// unset color
156
drawList.push_back(
DrawablePointSize
(24));
157
drawList.push_back(
DrawableTranslation
(30,140));
158
drawList.push_back(
DrawableRotation
(45.0));
159
drawList.push_back(
DrawableText
(0,0,
"This is a test!"
));
160
#endif
161
162
// Finish drawing by popping back to base context.
163
drawList.push_back(
DrawablePopGraphicContext
());
164
165
// Draw everything using completed drawing list
166
// image.debug(true);
167
image.draw(drawList);
168
169
// image.write( "piddle.mvg" );
170
171
cout <<
"Writing image \"piddle_out.miff\" ..."
<< endl;
172
image.depth( 8 );
173
image.compressType( RLECompression );
174
image.write(
"piddle_out.miff"
);
175
cout <<
"Writing MVG metafile \"piddle_out.mvg\" ..."
<< endl;
176
image.write(
"mvg:piddle_out.mvg"
);
177
178
// cout << "Display image..." << endl;
179
// image.display( );
180
181
}
182
catch
( exception &error_ )
183
{
184
cout <<
"Caught exception: "
<< error_.what() << endl;
185
return
1;
186
}
187
188
return
0;
189
}
Magick::Color
Definition
Color.h:37
Magick::Coordinate
Definition
Drawable.h:49
Magick::DrawableBezier
Definition
Drawable.h:447
Magick::DrawableCircle
Definition
Drawable.h:607
Magick::DrawableFillColor
Definition
Drawable.h:937
Magick::DrawableFont
Definition
Drawable.h:1055
Magick::DrawableLine
Definition
Drawable.h:1122
Magick::DrawablePath
Definition
Drawable.h:1185
Magick::DrawablePointSize
Definition
Drawable.h:1245
Magick::DrawablePolygon
Definition
Drawable.h:1274
Magick::DrawablePopGraphicContext
Definition
Drawable.h:1314
Magick::DrawablePushGraphicContext
Definition
Drawable.h:1335
Magick::DrawableRotation
Definition
Drawable.h:1465
Magick::DrawableRoundRectangle
Definition
Drawable.h:1494
Magick::DrawableStrokeColor
Definition
Drawable.h:1913
Magick::DrawableStrokeDashArray
Definition
Drawable.h:1722
Magick::DrawableStrokeWidth
Definition
Drawable.h:1974
Magick::DrawableText
Definition
Drawable.h:2003
Magick::DrawableTranslation
Definition
Drawable.h:2252
Magick::DrawableViewbox
Definition
Drawable.h:2292
Magick::Image
Definition
Image.h:56
Magick::MagickPlusPlusGenesis
Definition
Functions.h:44
Magick::PathArcArgs
Definition
Drawable.h:2357
Magick::PathArcRel
Definition
Drawable.h:2494
Magick::PathClosePath
Definition
Drawable.h:2518
Magick::PathLinetoVerticalRel
Definition
Drawable.h:3060
Magick::PathMovetoAbs
Definition
Drawable.h:3090
Magick++
demo
piddle.cpp
Generated by
1.17.0