]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Tue, 9 Jul 2013 18:33:11 +0000 (18:33 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Tue, 9 Jul 2013 18:33:11 +0000 (18:33 +0000)
Magick++/lib/Geometry.cpp
Magick++/lib/Magick++/Geometry.h

index 82ff3826ee5cefcf1b0831dbc5487a78cdb0cfed..4eef45ab98f36463bb2647e04fd4143e59254378 100644 (file)
@@ -23,18 +23,19 @@ int Magick::operator == ( const Magick::Geometry& left_,
                          const Magick::Geometry& right_ )
 {
   return (
-         ( left_.isValid()   == right_.isValid() ) &&
-         ( left_.width()     == right_.width() ) &&
-         ( left_.height()    == right_.height() ) &&
-         ( left_.xOff()      == right_.xOff() ) &&
-         ( left_.yOff()      == right_.yOff() ) &&
-         ( left_.xNegative() == right_.xNegative() ) &&
-         ( left_.yNegative() == right_.yNegative() ) &&
-         ( left_.percent()   == right_.percent() ) &&
-         ( left_.aspect()    == right_.aspect() ) &&
-         ( left_.greater()   == right_.greater() ) &&
-         ( left_.less()      == right_.less() ) &&
-         ( left_.fillArea()  == right_.fillArea() )
+         ( left_.isValid()     == right_.isValid() ) &&
+         ( left_.width()       == right_.width() ) &&
+         ( left_.height()      == right_.height() ) &&
+         ( left_.xOff()        == right_.xOff() ) &&
+         ( left_.yOff()        == right_.yOff() ) &&
+         ( left_.xNegative()   == right_.xNegative() ) &&
+         ( left_.yNegative()   == right_.yNegative() ) &&
+         ( left_.percent()     == right_.percent() ) &&
+         ( left_.aspect()      == right_.aspect() ) &&
+         ( left_.greater()     == right_.greater() ) &&
+         ( left_.less()        == right_.less() ) &&
+         ( left_.fillArea()    == right_.fillArea() ) &&
+         ( left_.limitPixels() == right_.limitPixels() )
          );
 }
 int Magick::operator != ( const Magick::Geometry& left_,
@@ -85,7 +86,8 @@ Magick::Geometry::Geometry ( size_t width_,
     _aspect( false ),
     _greater( false ),
     _less( false ),
-    _fillArea( false )
+    _fillArea( false ),
+    _limitPixels( false )
 {
 }
 
@@ -102,7 +104,8 @@ Magick::Geometry::Geometry ( const std::string &geometry_ )
     _aspect( false ),
     _greater( false ),
     _less( false ),
-    _fillArea( false )
+    _fillArea( false ),
+    _limitPixels( false )
 {
   *this = geometry_; // Use assignment operator
 }
@@ -121,25 +124,27 @@ Magick::Geometry::Geometry ( const char *geometry_ )
     _aspect( false ),
     _greater( false ),
     _less( false ),
-    _fillArea( false )
+    _fillArea( false ),
+    _limitPixels( false )
 {
   *this = geometry_; // Use assignment operator
 }
 
 // Copy constructor
 Magick::Geometry::Geometry ( const Geometry &geometry_ )
-  :  _width( geometry_._width ),
-     _height( geometry_._height ),
-     _xOff( geometry_._xOff ),
-     _yOff( geometry_._yOff ),
-     _xNegative( geometry_._xNegative ),
-     _yNegative( geometry_._yNegative ),
-     _isValid ( geometry_._isValid ),
-     _percent( geometry_._percent ),
-     _aspect( geometry_._aspect ),
-     _greater( geometry_._greater ),
-     _less( geometry_._less ),
-     _fillArea( geometry_._fillArea )
+  : _width( geometry_._width ),
+    _height( geometry_._height ),
+    _xOff( geometry_._xOff ),
+    _yOff( geometry_._yOff ),
+    _xNegative( geometry_._xNegative ),
+    _yNegative( geometry_._yNegative ),
+    _isValid ( geometry_._isValid ),
+    _percent( geometry_._percent ),
+    _aspect( geometry_._aspect ),
+    _greater( geometry_._greater ),
+    _less( geometry_._less ),
+    _fillArea( geometry_._fillArea ),
+    _limitPixels( geometry_._limitPixels )
 {
 }
 
@@ -156,7 +161,8 @@ Magick::Geometry::Geometry ( void )
     _aspect( false ),
     _greater( false ),
     _less( false ),
-    _fillArea( false )
+    _fillArea( false ),
+    _limitPixels( false )
 {
 }
 
@@ -182,6 +188,7 @@ Magick::Geometry& Magick::Geometry::operator = ( const Geometry& geometry_ )
       _greater = geometry_._greater;
       _less = geometry_._less;
       _fillArea = geometry_._fillArea;
+      _limitPixels = geometry_._limitPixels;
     }
   return *this;
 }
@@ -269,8 +276,8 @@ Magick::Geometry::operator = ( const std::string &geometry_ )
   if ( ( flags & MinimumValue ) != 0 )
     _fillArea = true;
 
-  if ( ( flags & MinimumValue ) != 0 )
-    _fillArea = true;
+  if ( ( flags & AreaValue ) != 0 )
+    _limitPixels = true;
 
   return *this;
 }
@@ -341,23 +348,27 @@ Magick::Geometry::operator std::string() const
   if ( _fillArea )
     geometry += '^';
 
+  if ( _limitPixels )
+    geometry += '@';
+
   return geometry;
 }
 
 // Construct from RectangleInfo
 Magick::Geometry::Geometry ( const MagickCore::RectangleInfo &rectangle_ )
-  : _width(static_cast<size_t>(rectangle_.width)),
-    _height(static_cast<size_t>(rectangle_.height)),
-    _xOff(static_cast<ssize_t>(rectangle_.x)),
-    _yOff(static_cast<ssize_t>(rectangle_.y)),
-    _xNegative(rectangle_.x < 0 ? true : false),
-    _yNegative(rectangle_.y < 0 ? true : false),
-    _isValid(true),
-    _percent(false),
-    _aspect(false),
-    _greater(false),
-    _less(false),
-    _fillArea(false)
+  : _width(static_cast<size_t>( rectangle_.width )),
+    _height(static_cast<size_t>( rectangle_.height )),
+    _xOff(static_cast<ssize_t>( rectangle_.x )),
+    _yOff(static_cast<ssize_t>( rectangle_.y )),
+    _xNegative( rectangle_.x < 0 ? true : false ),
+    _yNegative( rectangle_.y < 0 ? true : false ),
+    _isValid( true ),
+    _percent( false ),
+    _aspect( false ),
+    _greater( false ),
+    _less( false ),
+    _fillArea( false ),
+    _limitPixels( false )
 {
 }
 
index f09bac7a4ae7d4126a6669b7faac77c2eaca1b32..c9ab4e952b11da1591b9d4272288172c13f89c92 100644 (file)
@@ -122,11 +122,12 @@ namespace Magick
     bool      _xNegative;
     bool      _yNegative;
     bool      _isValid;
-    bool      _percent;  // Interpret width & height as percentages (%)
-    bool      _aspect;   // Force exact size (!)
-    bool      _greater;  // Resize only if larger than geometry (>)
-    bool      _less;     // Resize only if smaller than geometry (<)
-    bool      _fillArea; // Resize the image based on the smallest fitting dimension (^)
+    bool      _percent;     // Interpret width & height as percentages (%)
+    bool      _aspect;      // Force exact size (!)
+    bool      _greater;     // Resize only if larger than geometry (>)
+    bool      _less;        // Resize only if smaller than geometry (<)
+    bool      _fillArea;    // Resize the image based on the smallest fitting dimension (^)
+    bool      _limitPixels; // Resize using a pixel area count limit (@)
   };
 } // namespace Magick
 
@@ -256,4 +257,14 @@ inline bool Magick::Geometry::fillArea ( void ) const
   return _fillArea;
 }
 
+// Resize using a pixel area count limit (@)
+inline void Magick::Geometry::limitPixels ( bool limitPixels_ )
+{
+  _limitPixels = limitPixels_;
+}
+inline bool Magick::Geometry::limitPixels ( void ) const
+{
+  return _limitPixels;
+}
+
 #endif // Magick_Geometry_header