• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
4 //
5 // Implementation of Montage
6 //
7 
8 #define MAGICKCORE_IMPLEMENTATION  1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
10 
11 #include "Magick++/Include.h"
12 #include <string>
13 #include <string.h>
14 
15 #include "Magick++/Montage.h"
16 #include "Magick++/Functions.h"
17 
Montage(void)18 Magick::Montage::Montage(void)
19   : _backgroundColor("#ffffff"),
20     _fileName(),
21     _fill("#000000ff"),
22     _font(),
23     _geometry("120x120+4+3>"),
24     _gravity(CenterGravity),
25     _label(),
26     _pointSize(12),
27     _shadow(false),
28     _stroke(),
29     _texture(),
30     _tile("6x4"),
31     _title(),
32     _transparentColor()
33 {
34 }
35 
~Montage(void)36 Magick::Montage::~Montage(void)
37 {
38 }
39 
backgroundColor(const Magick::Color & backgroundColor_)40 void Magick::Montage::backgroundColor(const Magick::Color &backgroundColor_)
41 {
42   _backgroundColor=backgroundColor_;
43 }
44 
backgroundColor(void) const45 Magick::Color Magick::Montage::backgroundColor(void) const
46 {
47   return(_backgroundColor);
48 }
49 
fileName(const std::string & fileName_)50 void Magick::Montage::fileName(const std::string &fileName_)
51 {
52   _fileName=fileName_;
53 }
54 
fileName(void) const55 std::string Magick::Montage::fileName(void) const
56 {
57   return(_fileName);
58 }
59 
fillColor(const Color & fill_)60 void Magick::Montage::fillColor(const Color &fill_)
61 {
62   _fill=fill_;
63 }
64 
fillColor(void) const65 Magick::Color Magick::Montage::fillColor(void) const
66 {
67   return(_fill);
68 }
69 
font(const std::string & font_)70 void Magick::Montage::font(const std::string &font_)
71 {
72   _font=font_;
73 }
74 
font(void) const75 std::string Magick::Montage::font(void) const
76 {
77   return(_font);
78 }
79 
geometry(const Magick::Geometry & geometry_)80 void Magick::Montage::geometry(const Magick::Geometry &geometry_)
81 {
82   _geometry=geometry_;
83 }
84 
geometry(void) const85 Magick::Geometry Magick::Montage::geometry(void) const
86 {
87   return(_geometry);
88 }
89 
gravity(Magick::GravityType gravity_)90 void Magick::Montage::gravity(Magick::GravityType gravity_)
91 {
92   _gravity=gravity_;
93 }
94 
gravity(void) const95 Magick::GravityType Magick::Montage::gravity(void) const
96 {
97   return(_gravity);
98 }
99 
label(const std::string & label_)100 void Magick::Montage::label(const std::string &label_)
101 {
102   _label=label_;
103 }
104 
label(void) const105 std::string Magick::Montage::label(void) const
106 {
107   return(_label);
108 }
109 
pointSize(size_t pointSize_)110 void Magick::Montage::pointSize(size_t pointSize_)
111 {
112   _pointSize=pointSize_;
113 }
114 
pointSize(void) const115 size_t Magick::Montage::pointSize(void) const
116 {
117   return(_pointSize);
118 }
119 
shadow(bool shadow_)120 void Magick::Montage::shadow(bool shadow_)
121 {
122   _shadow=shadow_;
123 }
124 
shadow(void) const125 bool Magick::Montage::shadow(void) const
126 {
127   return(_shadow);
128 }
129 
strokeColor(const Color & stroke_)130 void Magick::Montage::strokeColor(const Color &stroke_)
131 {
132   _stroke=stroke_;
133 }
134 
strokeColor(void) const135 Magick::Color Magick::Montage::strokeColor(void) const
136 {
137   return(_stroke);
138 }
139 
texture(const std::string & texture_)140 void Magick::Montage::texture(const std::string &texture_)
141 {
142   _texture=texture_;
143 }
144 
texture(void) const145 std::string Magick::Montage::texture(void) const
146 {
147   return(_texture);
148 }
149 
tile(const Geometry & tile_)150 void Magick::Montage::tile(const Geometry &tile_)
151 {
152   _tile=tile_;
153 }
154 
tile(void) const155 Magick::Geometry Magick::Montage::tile(void) const
156 {
157   return(_tile);
158 }
159 
title(const std::string & title_)160 void Magick::Montage::title(const std::string &title_)
161 {
162   _title=title_;
163 }
164 
title(void) const165 std::string Magick::Montage::title(void) const
166 {
167   return(_title);
168 }
169 
transparentColor(const Magick::Color & transparentColor_)170 void Magick::Montage::transparentColor(const Magick::Color &transparentColor_)
171 {
172   _transparentColor=transparentColor_;
173 }
174 
transparentColor(void) const175 Magick::Color Magick::Montage::transparentColor(void) const
176 {
177   return(_transparentColor);
178 }
179 
updateMontageInfo(MontageInfo & montageInfo_) const180 void Magick::Montage::updateMontageInfo(MontageInfo &montageInfo_ ) const
181 {
182   (void) memset(&montageInfo_,0,sizeof(montageInfo_));
183 
184   // matte_color
185   montageInfo_.matte_color=Color();
186   // background_color
187   montageInfo_.background_color=_backgroundColor;
188   // border_color
189   montageInfo_.border_color=Color();
190   // border_width
191   montageInfo_.border_width=0;
192   // filename
193   if (_font.length() != 0)
194     {
195       _fileName.copy(montageInfo_.filename,MagickPathExtent-1);
196       montageInfo_.filename[ _fileName.length() ] = 0; // null terminate
197     }
198   // fill
199   montageInfo_.fill=_fill;
200   // font
201   if (_font.length() != 0)
202     Magick::CloneString(&montageInfo_.font,_font);
203   // geometry
204   if (_geometry.isValid())
205     Magick::CloneString(&montageInfo_.geometry,_geometry);
206   // gravity
207   montageInfo_.gravity=_gravity;
208   // pointsize
209   montageInfo_.pointsize=_pointSize;
210   // shadow
211   montageInfo_.shadow=static_cast<MagickBooleanType>
212     (_shadow ? MagickTrue : MagickFalse);
213   // signature (validity stamp)
214   montageInfo_.signature=MagickCoreSignature;
215   // stroke
216   montageInfo_.stroke=_stroke;
217   // texture
218   if (_texture.length() != 0)
219     Magick::CloneString(&montageInfo_.texture,_texture);
220   // tile
221   if (_tile.isValid())
222     Magick::CloneString(&montageInfo_.tile,_tile);
223   // title
224   if (_title.length() != 0)
225     Magick::CloneString(&montageInfo_.title,_title);
226 }
227 
228 //
229 // Implementation of MontageFramed
230 //
231 
MontageFramed(void)232 Magick::MontageFramed::MontageFramed(void)
233   : _matteColor("#bdbdbd"),
234     _borderColor("#dfdfdf"),
235     _borderWidth(0),
236     _frame()
237 {
238 }
239 
~MontageFramed(void)240 Magick::MontageFramed::~MontageFramed(void)
241 {
242 }
243 
matteColor(const Magick::Color & matteColor_)244 void Magick::MontageFramed::matteColor(const Magick::Color &matteColor_)
245 {
246   _matteColor=matteColor_;
247 }
248 
matteColor(void) const249 Magick::Color Magick::MontageFramed::matteColor(void) const
250 {
251   return(_matteColor);
252 }
253 
borderColor(const Magick::Color & borderColor_)254 void Magick::MontageFramed::borderColor(const Magick::Color &borderColor_)
255 {
256   _borderColor=borderColor_;
257 }
258 
borderColor(void) const259 Magick::Color Magick::MontageFramed::borderColor(void) const
260 {
261   return(_borderColor);
262 }
263 
borderWidth(size_t borderWidth_)264 void Magick::MontageFramed::borderWidth(size_t borderWidth_)
265 {
266   _borderWidth=borderWidth_;
267 }
268 
borderWidth(void) const269 size_t Magick::MontageFramed::borderWidth(void) const
270 {
271   return(_borderWidth);
272 }
273 
frameGeometry(const Magick::Geometry & frame_)274 void Magick::MontageFramed::frameGeometry(const Magick::Geometry &frame_)
275 {
276   _frame=frame_;
277 }
278 
frameGeometry(void) const279 Magick::Geometry Magick::MontageFramed::frameGeometry(void) const
280 {
281   return(_frame);
282 }
283 
updateMontageInfo(MontageInfo & montageInfo_) const284 void Magick::MontageFramed::updateMontageInfo(MontageInfo &montageInfo_) const
285 {
286   // Do base updates
287   Montage::updateMontageInfo(montageInfo_);
288 
289   // matte_color
290   montageInfo_.matte_color = _matteColor;
291   // border_color
292   montageInfo_.border_color=_borderColor;
293   // border_width
294   montageInfo_.border_width=_borderWidth;
295   // frame
296   if (_frame.isValid())
297     Magick::CloneString(&montageInfo_.frame,_frame);
298 }
299