]> granicus.if.org Git - imagemagick/blob - Magick++/lib/Montage.cpp
(no commit message)
[imagemagick] / Magick++ / lib / Montage.cpp
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
18 Magick::Montage::Montage ( void )
19   : _backgroundColor("#ffffff"),
20     _compose(OverCompositeOp),
21     _fileName(),
22     _fill("#000000ff"),
23     _font(),
24     _geometry("120x120+4+3>"),
25     _gravity(CenterGravity),
26     _label(),
27     _pointSize(12),
28     _shadow(false),
29     _stroke(),
30     _texture(),
31     _tile("6x4"),
32     _title(),
33     _transparentColor()
34 {
35 }
36
37 Magick::Montage::~Montage( void )
38 {
39   // Nothing to do
40 }
41
42 Magick::MontageFramed::MontageFramed ( void )
43   : _borderColor("#dfdfdf"),
44     _borderWidth(0),
45     _frame(),
46     _matteColor("#bdbdbd")
47 {
48 }
49
50 /* virtual */ Magick::MontageFramed::~MontageFramed ( void )
51 {
52   // Nothing to do
53 }
54
55 void Magick::Montage::updateMontageInfo ( MontageInfo &montageInfo_ ) const
56 {
57
58   memset(&montageInfo_,0,sizeof(MontageInfo));
59
60   // background_color
61   montageInfo_.background_color = _backgroundColor;
62   // border_color
63   montageInfo_.border_color = Color();
64   // border_width
65   montageInfo_.border_width = 0;
66   // filename
67   _fileName.copy( montageInfo_.filename, MaxTextExtent - 1 );
68   montageInfo_.filename[ _fileName.length() ] = 0; // null terminate
69   // fill
70   montageInfo_.fill = _fill;
71   // font
72   if ( _font.length() != 0 )
73     Magick::CloneString( &montageInfo_.font, _font );
74   else
75     montageInfo_.font=(char *) RelinquishMagickMemory(montageInfo_.font);
76   // frame
77   montageInfo_.frame=(char *) montageInfo_.frame;
78   // geometry
79   if ( _geometry.isValid() )
80     Magick::CloneString( &montageInfo_.geometry, _geometry );
81   else
82     montageInfo_.geometry=(char *)
83       RelinquishMagickMemory(montageInfo_.geometry);
84   // gravity
85   montageInfo_.gravity = _gravity;
86   // matte_color
87   montageInfo_.matte_color = Color();
88   // pointsize
89   montageInfo_.pointsize = _pointSize;
90   // shadow
91   montageInfo_.shadow = static_cast<MagickBooleanType>
92     (_shadow ? MagickTrue : MagickFalse);
93   // signature (validity stamp)
94   montageInfo_.signature = MagickSignature;
95   // stroke
96   montageInfo_.stroke = _stroke;
97   // texture
98   if ( _texture.length() != 0 )
99     Magick::CloneString( &montageInfo_.texture, _texture );
100   else
101     montageInfo_.texture=(char *) RelinquishMagickMemory(montageInfo_.texture);
102   // tile
103   if ( _tile.isValid() )
104     Magick::CloneString( &montageInfo_.tile, _tile );
105   else
106     montageInfo_.tile=(char *) RelinquishMagickMemory(montageInfo_.tile);
107   // title
108   if ( _title.length() != 0 )
109     Magick::CloneString( &montageInfo_.title, _title );
110   else
111     montageInfo_.title=(char *) RelinquishMagickMemory(montageInfo_.title);
112 }
113
114 //
115 // Implementation of MontageFramed
116 //
117
118 /* virtual */ void
119 Magick::MontageFramed::updateMontageInfo ( MontageInfo &montageInfo_ ) const
120 {
121   // Do base updates
122   Montage::updateMontageInfo ( montageInfo_ );
123
124   // border_color
125   montageInfo_.border_color = _borderColor;
126   // border_width
127   montageInfo_.border_width = _borderWidth;
128   // frame
129   if ( _frame.isValid() )
130     Magick::CloneString( &montageInfo_.frame, _frame );
131   else
132     montageInfo_.frame=(char *) RelinquishMagickMemory(montageInfo_.frame);
133   // matte_color
134   montageInfo_.matte_color = _matteColor;
135 }