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