1 // This may look like C code, but it is really -*- C++ -*-
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
5 // Implementation of Montage
8 #define MAGICKCORE_IMPLEMENTATION 1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
11 #include "Magick++/Include.h"
15 #include "Magick++/Montage.h"
16 #include "Magick++/Functions.h"
18 Magick::Montage::Montage(void)
19 : _backgroundColor("#ffffff"),
20 _compose(OverCompositeOp),
24 _geometry("120x120+4+3>"),
25 _gravity(CenterGravity),
37 Magick::Montage::~Montage(void)
41 void Magick::Montage::backgroundColor(const Magick::Color &backgroundColor_)
43 _backgroundColor=backgroundColor_;
46 Magick::Color Magick::Montage::backgroundColor(void) const
48 return(_backgroundColor);
51 void Magick::Montage::compose(Magick::CompositeOperator compose_)
56 Magick::CompositeOperator Magick::Montage::compose(void) const
61 void Magick::Montage::fileName(const std::string &fileName_)
66 std::string Magick::Montage::fileName(void) const
71 void Magick::Montage::fillColor(const Color &fill_)
76 Magick::Color Magick::Montage::fillColor(void) const
81 void Magick::Montage::font(const std::string &font_)
86 std::string Magick::Montage::font(void) const
91 void Magick::Montage::geometry(const Magick::Geometry &geometry_)
96 Magick::Geometry Magick::Montage::geometry(void) const
101 void Magick::Montage::gravity(Magick::GravityType gravity_)
106 Magick::GravityType Magick::Montage::gravity(void) const
111 void Magick::Montage::label(const std::string &label_)
116 std::string Magick::Montage::label(void) const
121 void Magick::Montage::pointSize(size_t pointSize_)
123 _pointSize=pointSize_;
126 size_t Magick::Montage::pointSize(void) const
131 void Magick::Montage::shadow(bool shadow_)
136 bool Magick::Montage::shadow(void) const
141 void Magick::Montage::strokeColor(const Color &stroke_)
146 Magick::Color Magick::Montage::strokeColor(void) const
151 void Magick::Montage::texture(const std::string &texture_)
156 std::string Magick::Montage::texture(void) const
161 void Magick::Montage::tile(const Geometry &tile_)
166 Magick::Geometry Magick::Montage::tile(void) const
171 void Magick::Montage::title(const std::string &title_)
176 std::string Magick::Montage::title(void) const
181 void Magick::Montage::transparentColor(const Magick::Color &transparentColor_)
183 _transparentColor=transparentColor_;
186 Magick::Color Magick::Montage::transparentColor(void) const
188 return(_transparentColor);
191 void Magick::Montage::updateMontageInfo(MontageInfo &montageInfo_ ) const
193 (void) MagickCore::ResetMagickMemory(&montageInfo_,0,sizeof(montageInfo_));
196 montageInfo_.background_color=_backgroundColor;
198 montageInfo_.border_color=Color();
200 montageInfo_.border_width=0;
202 if (_font.length() != 0)
204 _fileName.copy(montageInfo_.filename,MaxTextExtent-1);
205 montageInfo_.filename[ _fileName.length() ] = 0; // null terminate
208 montageInfo_.fill=_fill;
210 if (_font.length() != 0)
211 Magick::CloneString(&montageInfo_.font,_font);
213 if (_geometry.isValid())
214 Magick::CloneString(&montageInfo_.geometry,_geometry);
216 montageInfo_.gravity=_gravity;
218 montageInfo_.matte_color=Color();
220 montageInfo_.pointsize=_pointSize;
222 montageInfo_.shadow=static_cast<MagickBooleanType>
223 (_shadow ? MagickTrue : MagickFalse);
224 // signature (validity stamp)
225 montageInfo_.signature=MagickSignature;
227 montageInfo_.stroke=_stroke;
229 if (_texture.length() != 0)
230 Magick::CloneString(&montageInfo_.texture,_texture);
233 Magick::CloneString(&montageInfo_.tile,_tile);
235 if (_title.length() != 0)
236 Magick::CloneString(&montageInfo_.title,_title);
240 // Implementation of MontageFramed
243 Magick::MontageFramed::MontageFramed(void)
244 : _borderColor("#dfdfdf"),
247 _matteColor("#bdbdbd")
251 Magick::MontageFramed::~MontageFramed(void)
255 void Magick::MontageFramed::borderColor(const Magick::Color &borderColor_)
257 _borderColor=borderColor_;
260 Magick::Color Magick::MontageFramed::borderColor(void) const
262 return(_borderColor);
265 void Magick::MontageFramed::borderWidth(size_t borderWidth_)
267 _borderWidth=borderWidth_;
270 size_t Magick::MontageFramed::borderWidth(void) const
272 return(_borderWidth);
275 void Magick::MontageFramed::frameGeometry(const Magick::Geometry &frame_)
280 Magick::Geometry Magick::MontageFramed::frameGeometry(void) const
285 void Magick::MontageFramed::matteColor(const Magick::Color &matteColor_)
287 _matteColor=matteColor_;
290 Magick::Color Magick::MontageFramed::matteColor(void) const
295 void Magick::MontageFramed::updateMontageInfo(MontageInfo &montageInfo_) const
298 Montage::updateMontageInfo(montageInfo_);
301 montageInfo_.border_color=_borderColor;
303 montageInfo_.border_width=_borderWidth;
305 if (_frame.isValid())
306 Magick::CloneString(&montageInfo_.frame,_frame);
308 montageInfo_.matte_color=_matteColor;