Magick++  7.1.0
Montage.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
4 //
5 // Copyright @ 2014 ImageMagick Studio LLC, a non-profit organization
6 // dedicated to making software imaging solutions freely available.
7 //
8 // Definition of Montage class used to specify montage options.
9 //
10 
11 #if !defined(Magick_Montage_header)
12 #define Magick_Montage_header
13 
14 #include "Magick++/Include.h"
15 #include <string>
16 #include "Magick++/Color.h"
17 #include "Magick++/Geometry.h"
18 
19 //
20 // Basic (Un-framed) Montage
21 //
22 namespace Magick
23 {
25  {
26  public:
27 
28  Montage(void);
29  virtual ~Montage(void);
30 
31  // Color that thumbnails are composed on
32  void backgroundColor(const Color &backgroundColor_);
33  Color backgroundColor(void) const;
34 
35  // Composition algorithm to use (e.g. ReplaceCompositeOp)
36  void compose(CompositeOperator compose_);
37  CompositeOperator compose(void) const;
38 
39  // Filename to save montages to
40  void fileName(const std::string &fileName_);
41  std::string fileName(void) const;
42 
43  // Fill color
44  void fillColor(const Color &fill_);
45  Color fillColor(void) const;
46 
47  // Label font
48  void font(const std::string &font_);
49  std::string font(void) const;
50 
51  // Thumbnail width & height plus border width & height
52  void geometry(const Geometry &geometry_);
53  Geometry geometry(void) const;
54 
55  // Thumbnail position (e.g. SouthWestGravity)
56  void gravity(GravityType gravity_);
57  GravityType gravity(void) const;
58 
59  // Thumbnail label (applied to image prior to montage)
60  void label(const std::string &label_);
61  std::string label(void) const;
62 
63  // Font point size
64  void pointSize(size_t pointSize_);
65  size_t pointSize(void) const;
66 
67  // Enable drop-shadows on thumbnails
68  void shadow(bool shadow_);
69  bool shadow(void) const;
70 
71  // Outline color
72  void strokeColor(const Color &stroke_);
73  Color strokeColor(void) const;
74 
75  // Background texture image
76  void texture(const std::string &texture_);
77  std::string texture(void) const;
78 
79  // Thumbnail rows and colmns
80  void tile(const Geometry &tile_);
81  Geometry tile(void) const;
82 
83  // Montage title
84  void title(const std::string &title_);
85  std::string title(void) const;
86 
87  // Transparent color
88  void transparentColor(const Color &transparentColor_);
89  Color transparentColor(void) const;
90 
91  //
92  // Implementation methods/members
93  //
94 
95  // Update elements in existing MontageInfo structure
96  virtual void updateMontageInfo(MagickCore::MontageInfo &montageInfo_) const;
97 
98  private:
99 
100  Color _backgroundColor;
101  std::string _fileName;
102  Color _fill;
103  std::string _font;
104  Geometry _geometry;
105  GravityType _gravity;
106  std::string _label;
107  size_t _pointSize;
108  bool _shadow;
109  Color _stroke;
110  std::string _texture;
111  Geometry _tile;
112  std::string _title;
113  Color _transparentColor;
114  };
115 
116  //
117  // Montage With Frames (Extends Basic Montage)
118  //
120  {
121  public:
122 
123  MontageFramed(void);
124  ~MontageFramed(void);
125 
126  // Frame foreground color
127  void matteColor(const Color &matteColor_);
128  Color matteColor(void) const;
129 
130  // Frame border color
131  void borderColor(const Color &borderColor_);
132  Color borderColor(void) const;
133 
134  // Pixels between thumbnail and surrounding frame
135  void borderWidth(size_t borderWidth_);
136  size_t borderWidth(void) const;
137 
138  // Frame geometry (width & height frame thickness)
139  void frameGeometry(const Geometry &frame_);
140  Geometry frameGeometry(void) const;
141 
142  //
143  // Implementation methods/members
144  //
145 
146  // Update elements in existing MontageInfo structure
147  void updateMontageInfo(MagickCore::MontageInfo &montageInfo_) const;
148 
149  private:
150 
151  Color _matteColor;
152  Color _borderColor;
153  size_t _borderWidth;
154  Geometry _frame;
155  };
156 } // namespace Magick
157 
158 #endif // Magick_Montage_header
#define MagickPPExport
Definition: Include.h:297
Definition: Blob.h:17