Magick::Geometry
Geometry provides a convenient means to specify a geometry
argument. The object may be initialized from a C string or C++ string
containing a geometry specification. It may also be initialized by
more efficient parameterized constructors.
X11 Geometry
Specifications
X11 geometry specifications are in the form
"<width>x<height>{+-}<xoffset>{+-}<yoffset>"
(where
width
,
height
,
xoffset
, and
yoffset
are numbers) for specifying the size and placement location for an
object.
The
width
and
height
parts of the geometry specification are measured in pixels. The
xoffset
and
yoffset
parts are also measured in pixels
and are used to specify the distance of the placement coordinate from
the left and top and edges of the image, respectively. Both types of
offsets are measured from the indicated edge of the object to the
corresponding edge of the image. The X offset may be specified in the
following ways:
+
xoffset
The left edge of the object is to be placed
xoffset
pixels in from the
left edge
of the image.
-
xoffset
The left edge of the object is to be placed outside the image,
xoffset
pixels out from the
left edge
of the image.
The Y offset has similar meanings:
+
yoffset
The top edge of the object is to be
yoffset
pixels
below
the
top edge
of the image.
-
yoffset
The top edge of the object is to be
yoffset
pixels
above
the
top edge
of the image.
Offsets must be given as pairs; in other words, in order to
specify either
xoffset
or
yoffset
both must be present.
ImageMagick
Extensions To X11 Geometry Specifications
ImageMagick has added a number of
qualifiers to the standard geometry string for use when resizing
images. The form of an extended geometry string is
"
<width>x<height>{+-}<xoffset>{+-}<yoffset>{%}{!}{<}{>}".
Extended geometry strings should
only
be used
when resizing
an image
. Using an extended geometry string for other
applications may cause the API call to fail.
The available
qualifiers are shown in the following table:
ImageMagick Geometry
Qualifiers
Qualifier
Description
%
Interpret width and height as a
percentage
of the
current size.
!
Resize to width and height
exactly
, loosing original
aspect ratio.
<
Resize only if the image is
smaller
than the geometry
specification.
>
Resize only if the image is
greater
than the geometry
specification.
Postscript Page Size Extension
To Geometry Specifications
Any geometry string specification supplied to the Geometry
constructor is considered to be a Postscript page size nickname if
the first character is not numeric. The Geometry constructor converts
these page size specifications into the equivalent numeric geometry
string specification (preserving any offset component) prior to
conversion to the internal object format. Postscript page size
specifications are short-hand for the pixel geometry required to fill
a page of that size. Since the 11x17 inch page size used in the US
starts with a digit, it is not supported as a Postscript page size
nickname. Instead, substitute the geometry specification "
792x1224>"
when 11x17 output is desired.
An example of a Postscript page size
specification is
"letter+43+43>"
.
Postscript Page Size
Nicknames
Postscript Page Size Nickname
Equivalent Extended Geometry Specification
Ledger
1224x792>
Legal
612x1008>
Letter
612x792>
LetterSmall
612x792>
ArchE
2592x3456>
ArchD
1728x2592>
ArchC
1296x1728>
ArchB
864x1296>
ArchA
648x864>
A0
2380x3368>
A1
1684x2380>
A2
1190x1684>
A3
842x1190>
A4
595x842>
A4Small
595x842>
A5
421x595>
A6
297x421>
A7
210x297>
A8
148x210>
A9
105x148>
A10
74x105>
B0
2836x4008>
B1
2004x2836>
B2
1418x2004>
B3
1002x1418>
B4
709x1002>
B5
501x709>
C0
2600x3677>
C1
1837x2600>
C2
1298x1837>
C3
918x1298>
C4
649x918>
C5
459x649>
C6
323x459>
Flsa
612x936>
Flse
612x936>
HalfLetter
396x612>
Geometry Methods
Geometry provides methods to initialize
its value from strings, from a set of parameters, or via attributes.
The methods available for use in Geometry are shown in the following
table:
Geometry Methods
Method
Return Type
Signature(s)
Description
Geometry
unsigned int width_, unsigned int height_, unsigned int xOff_ =
0, unsigned int yOff_ = 0, bool xNegative_ = false, bool
yNegative_ = false
Construct X11 geometry via explicit parameters.
const string geometry_
Construct geometry from C++ string
const char * geometry_
Construct geometry from C string
width
void
unsigned int width_
Width
unsigned int
void
height
void
unsigned int height_
Height
unsigned int
void
xOff
void
unsigned int xOff_
X offset from origin
int
void
yOff
void
unsigned int yOff_
Y offset from origin
int
void
xNegative
void
bool xNegative_
Sign of X offset negative? (X origin at right)
bool
void
yNegative
void
bool yNegative_
Sign of Y offset negative? (Y origin at bottom)
bool
void
percent
void
bool percent_
Width and height are expressed as percentages
bool
void
aspect
void
bool aspect_
Resize without preserving aspect ratio (!)
bool
void
greater
void
bool greater_
Resize if image is greater than size (>)
bool
void
less
void
bool less_
Resize if image is less than size (<)
bool
void
isValid
void
bool isValid_
Does object contain a valid geometry? May be set to
false
in order to invalidate an existing geometry object.
bool
void
operator =
const Geometry&
const string geometry_
Set geometry via C++ string
operator =
const Geometry&
const char * geometry_
Set geometry via C string
operator string
string
Geometry&
Obtain C++ string representation of geometry
