| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820 |
- <?xml version="1.0" encoding="utf-8" ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Magick++ API: Geometry</title>
- <link rel="stylesheet" href="magick.css" type="text/css" />
- </head>
- <body>
- <div class="doc-section">
- <h1 align="center">Magick::Geometry</h1>
- <p>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.
- </p>
- <h3><a name="GeometrySpecifications"></a>Geometry
- Specifications</h3>
- <p>Geometry specifications are in the form
- <kbd>"<width>x<height>{+-}<xoffset>{+-}<yoffset>"</kbd>
- (where <i>width</i>, <i>height</i>, <i>xoffset</i>, and <i>yoffset</i>
- are numbers) for specifying the size and placement location for an
- object.
- </p>
- <p style="margin-bottom: 0in">The <i>width</i> and <i>height</i>
- parts of the geometry specification are measured in pixels. The
- <i>xoffset</i> and <i>yoffset</i> 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:
- </p>
- <table width="90%" border="1" cellpadding="2" cellspacing="3">
- <col width="21*" />
- <col width="235*" />
- <tr>
- <td width="8%">
- <p>+<i>xoffset</i></p>
- </td>
- <td width="92%">
- <p>The left edge of the object is to be placed <i>xoffset</i>
- pixels in from the <em>left edge </em>of the image.</p>
- </td>
- </tr>
- <tr>
- <td width="8%">
- <p>-<i>xoffset</i></p>
- </td>
- <td width="92%">
- <p>The left edge of the object is to be placed outside the image,
- <i>xoffset</i> pixels out from the <em>left edge </em>of the image.</p>
- </td>
- </tr>
- </table>
- <p style="margin-bottom: 0in">The Y offset has similar meanings:
- </p>
- <table width="90%" border="1" cellpadding="2" cellspacing="3">
- <col width="27*" />
- <col width="229*" />
- <tr>
- <td width="11%">
- <p>+<i>yoffset</i></p>
- </td>
- <td width="89%">
- <p>The top edge of the object is to be <i>yoffset</i> pixels
- <em>below</em> the <em>top edge </em>of the image.</p>
- </td>
- </tr>
- <tr>
- <td width="11%">
- <p>-<i>yoffset</i></p>
- </td>
- <td width="89%">
- <p>The top edge of the object is to be <i>yoffset</i> pixels
- <em>above</em> the <em>top edge</em> of the image.</p>
- </td>
- </tr>
- </table>
- <p>Offsets must be given as pairs; in other words, in order to
- specify either <i>xoffset</i> or <i>yoffset</i> both must be present.
- </p>
- <h3><a name="ExtendedGeometrySpecifications"></a>ImageMagick
- Extensions To Geometry Specifications</h3>
- <p style="margin-bottom: 0in">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
- "<kbd><width>x<height>{+-}<xoffset>{+-}<yoffset>{%}{!}{<}{>}"</kbd>.
- Extended geometry strings should <em>only</em> be used <em>when resizing
- an image</em>. Using an extended geometry string for other
- applications may cause the API call to fail. The available
- qualifiers are shown in the following table:
- </p>
- <p align="center" STYLE="margin-bottom: 0in"><b>ImageMagick Geometry
- Qualifiers</b></p>
- <table width="90%" border="1" cellpadding="2" cellspacing="3">
- <col width="36*" />
- <col width="220*" />
- <tr>
- <td width="14%">
- <p align="center"><b>Qualifier</b></p>
- </td>
- <td width="86%">
- <p align="center"><b>Description</b></p>
- </td>
- </tr>
- <tr>
- <td width="14%">
- <p align="center"><b>%</b></p>
- </td>
- <td width="86%">
- <p>Interpret width and height as a <b>percentage</b> of the
- current size.</p>
- </td>
- </tr>
- <tr>
- <td width="14%">
- <p align="center"><b>!</b></p>
- </td>
- <td width="86%">
- <p>Resize to width and height <b>exactly</b>, loosing original
- aspect ratio.</p>
- </td>
- </tr>
- <tr>
- <td width="14%">
- <p align="center"><b><</b></p>
- </td>
- <td width="86%">
- <p>Resize only if the image is <b>smaller</b> than the geometry
- specification.</p>
- </td>
- </tr>
- <tr>
- <td width="14%">
- <p align="center"><b>></b></p>
- </td>
- <td width="86%">
- <p>Resize only if the image is <b>greater</b> than the geometry
- specification.</p>
- </td>
- </tr>
- </table>
- <h3><a name="PostscriptPageSize"></a>Postscript Page Size Extension
- To Geometry Specifications</h3>
- <p>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 "<kbd>792x1224>"</kbd>
- when 11x17 output is desired.
- </p>
- <p style="margin-bottom: 0in">An example of a Postscript page size
- specification is <kbd>"letter+43+43>"</kbd>.
- </p>
- <p align="center" style="margin-bottom: 0in"><b>Postscript Page Size
- Nicknames</b></p>
- <table width="70%" border="1" cellpadding="2" cellspacing="3">
- <col width="105*" />
- <col width="151*" />
- <tr>
- <td width="41%">
- <p align="center"><b>Postscript Page Size Nickname</b></p>
- </td>
- <td width="59%">
- <p align="center"><b>Equivalent Extended Geometry Specification</b></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">Ledger</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1224x792></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">Legal</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">612x1008></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">Letter</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">612x792></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">LetterSmall</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">612x792></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">ArchE</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">2592x3456></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">ArchD</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1728x2592></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">ArchC</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1296x1728></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">ArchB</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">864x1296></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">ArchA</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">648x864></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A0</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">2380x3368></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A1</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1684x2380></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A2</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1190x1684></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A3</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">842x1190></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A4</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">595x842></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A4Small</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">595x842></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A5</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">421x595></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A6</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">297x421></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A7</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">210x297></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A8</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">148x210></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A9</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">105x148></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">A10</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">74x105></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B0</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">2836x4008></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B1</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">2004x2836></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B2</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1418x2004></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B3</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1002x1418></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B4</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">709x1002></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">B5</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">501x709></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C0</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">2600x3677></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C1</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1837x2600></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C2</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">1298x1837></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C3</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">918x1298></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C4</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">649x918></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C5</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">459x649></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">C6</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">323x459></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">Flsa</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">612x936></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">Flse</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">612x936></font></p>
- </td>
- </tr>
- <tr>
- <td width="41%">
- <p align="center"><font size="2">HalfLetter</font></p>
- </td>
- <td width="59%">
- <p align="center"><font size="2">396x612></font></p>
- </td>
- </tr>
- </table>
- <H3 align="center">Geometry Methods</H3>
- <p style="margin-bottom: 0in">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:
- </p>
- <p align="center" style="margin-bottom: 0in"><b>Geometry Methods</b></p>
- <table width="100%" border="1" cellpadding="2" cellspacing="3">
- <col width="25*" />
- <col width="26*" />
- <col width="111*" />
- <col width="94*" />
- <tr>
- <td width="10%">
- <p align="center"><b>Method</b></p>
- </td>
- <td width="10%">
- <p align="center"><b>Return Type</b></p>
- </td>
- <td width="44%">
- <p align="center"><b>Signature(s)</b></p>
- </td>
- <td width="37%">
- <p align="center"><b>Description</b></p>
- </td>
- </tr>
- <tr>
- <td rowspan="3" width="10%">
- <p>Geometry</p>
- </td>
- <td rowspan="3" width="10%" bgcolor="#666666">
- <p> </p>
- </td>
- <td width="44%">
- <p>size_t width_, size_t height_, ssize_t xOff_ =
- 0, ssize_t yOff_ = 0, bool xNegative_ = false, bool
- yNegative_ = false</p>
- </td>
- <td width="37%">
- <p>Construct geometry via explicit parameters.</p>
- </td>
- </tr>
- <tr>
- <td width="44%">
- <p>const string geometry_</p>
- </td>
- <td width="37%">
- <p>Construct geometry from C++ string</p>
- </td>
- </tr>
- <tr>
- <td width="44%">
- <p>const char * geometry_</p>
- </td>
- <td width="37%">
- <p>Construct geometry from C string</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>width</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>size_t width_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Width</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>size_t</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>height</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>size_t height_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Height</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>size_t</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>xOff</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>ssize_t xOff_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>X offset from origin</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>ssize_t</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>yOff</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>ssize_t yOff_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Y offset from origin</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>size_t</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>xNegative</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool xNegative_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Sign of X offset negative? (X origin at right)</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>yNegative</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool yNegative_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Sign of Y offset negative? (Y origin at bottom)</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>percent</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool percent_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Width and height are expressed as percentages</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>aspect</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool aspect_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Resize without preserving aspect ratio (!)</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>greater</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool greater_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Resize if image is greater than size (>)</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>less</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool less_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Resize if image is less than size (<)</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td rowspan="2" width="10%">
- <p>isValid</p>
- </td>
- <td width="10%">
- <p>void</p>
- </td>
- <td width="44%">
- <p>bool isValid_</p>
- </td>
- <td rowspan="2" width="37%">
- <p>Does object contain a valid geometry? May be set to <i>false</i>
- in order to invalidate an existing geometry object.</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>bool</p>
- </td>
- <td width="44%">
- <p>void</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>operator =</p>
- </td>
- <td width="10%">
- <p>const Geometry&</p>
- </td>
- <td width="44%">
- <p>const string geometry_</p>
- </td>
- <td width="37%">
- <p>Set geometry via C++ string</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>operator =</p>
- </td>
- <td width="10%">
- <p>const Geometry&</p>
- </td>
- <td width="44%">
- <p>const char * geometry_</p>
- </td>
- <td width="37%">
- <p>Set geometry via C string</p>
- </td>
- </tr>
- <tr>
- <td width="10%">
- <p>operator string</p>
- </td>
- <td width="10%">
- <p>string</p>
- </td>
- <td width="44%">
- <p>Geometry&</p>
- </td>
- <td width="37%">
- <p>Obtain C++ string representation of geometry</p>
- </td>
- </tr>
- </table>
- <p>In addition, we support these yet to be documented geometry flags: the fill area flag ('^') and the pixel area count limit flag ('@').</p>
- <p><br /><br />
- </p>
- </div>
- </body>
- </html>
|