13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
27ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dedicated to making software imaging solutions freely available.
448bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  You may not use this file except in compliance with the License.
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  obtain a copy of the License at
748bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    http://www.imagemagick.org/script/license.php
948bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Unless required by applicable law or agreed to in writing, software
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  distributed under the License is distributed on an "AS IS" BASIS,
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  See the License for the specific language governing permissions and
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  limitations under the License.
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickCore drawing methods.
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
1883bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#ifndef MAGICKCORE_DRAW_H
1983bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#define MAGICKCORE_DRAW_H
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
214c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/geometry.h"
224c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/image.h"
234c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/pixel.h"
244c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/type.h"
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
266398ec777e91813b64767e25358b7062a7de56cbcristy#if defined(__cplusplus) || defined(c_plusplus)
276398ec777e91813b64767e25358b7062a7de56cbcristyextern "C" {
286398ec777e91813b64767e25358b7062a7de56cbcristy#endif
296398ec777e91813b64767e25358b7062a7de56cbcristy
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedAlign,
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  LeftAlign,
343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CenterAlign,
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RightAlign
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} AlignType;
373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedPathUnits,
413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UserSpace,
423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UserSpaceOnUse,
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ObjectBoundingBox
443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} ClipPathUnits;
453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
463ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedDecoration,
493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  NoDecoration,
503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UnderlineDecoration,
513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  OverlineDecoration,
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  LineThroughDecoration
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} DecorationType;
543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
553ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
57c9b129570a277337cf0e887229741497e2ead5cfcristy  UndefinedDirection,
58bdcb4b75a3d90ca70023181643cd2573843de32ecristy  RightToLeftDirection,
59bdcb4b75a3d90ca70023181643cd2573843de32ecristy  LeftToRightDirection
60c9b129570a277337cf0e887229741497e2ead5cfcristy} DirectionType;
61c9b129570a277337cf0e887229741497e2ead5cfcristy
62c9b129570a277337cf0e887229741497e2ead5cfcristytypedef enum
63c9b129570a277337cf0e887229741497e2ead5cfcristy{
643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedRule,
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#undef EvenOddRule
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  EvenOddRule,
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  NonZeroRule
683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} FillRule;
693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedGradient,
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  LinearGradient,
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RadialGradient
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} GradientType;
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
773ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedCap,
803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ButtCap,
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RoundCap,
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SquareCap
833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} LineCap;
843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedJoin,
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MiterJoin,
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RoundJoin,
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BevelJoin
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} LineJoin;
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
933ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedMethod,
963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointMethod,
973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ReplaceMethod,
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  FloodfillMethod,
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  FillToBorderMethod,
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ResetMethod
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} PaintMethod;
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedPrimitive,
10634e1a21c95b52c7f487b385028e361f66d956a19dirk  AlphaPrimitive,
1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ArcPrimitive,
1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BezierPrimitive,
10934e1a21c95b52c7f487b385028e361f66d956a19dirk  CirclePrimitive,
1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ColorPrimitive,
11134e1a21c95b52c7f487b385028e361f66d956a19dirk  EllipsePrimitive,
1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImagePrimitive,
11334e1a21c95b52c7f487b385028e361f66d956a19dirk  LinePrimitive,
11434e1a21c95b52c7f487b385028e361f66d956a19dirk  PathPrimitive,
11534e1a21c95b52c7f487b385028e361f66d956a19dirk  PointPrimitive,
11634e1a21c95b52c7f487b385028e361f66d956a19dirk  PolygonPrimitive,
11734e1a21c95b52c7f487b385028e361f66d956a19dirk  PolylinePrimitive,
11834e1a21c95b52c7f487b385028e361f66d956a19dirk  RectanglePrimitive,
11934e1a21c95b52c7f487b385028e361f66d956a19dirk  RoundRectanglePrimitive,
12034e1a21c95b52c7f487b385028e361f66d956a19dirk  TextPrimitive
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} PrimitiveType;
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedReference,
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GradientReference
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} ReferenceType;
1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedSpread,
1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PadSpread,
1333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ReflectSpread,
1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RepeatSpread
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} SpreadMethod;
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _StopInfo
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1394c08aed51c5899665ade97263692328eea4af106cristy  PixelInfo
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    color;
1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
142610b5aaa751e168a5b034d5924314d41238ff2f2cristy  double
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    offset;
1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} StopInfo;
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _GradientInfo
1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GradientType
1493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    type;
1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RectangleInfo
1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    bounding_box;
1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SegmentInfo
1553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    gradient_vector;
1563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  StopInfo
1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *stops;
1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
160bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    number_stops;
1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SpreadMethod
1643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    spread;
1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    debug;
1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo
17050a6c9d68214f8b6a551d0e07b84035c1794213bCristy    center,
17150a6c9d68214f8b6a551d0e07b84035c1794213bCristy    radii;
1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
173610b5aaa751e168a5b034d5924314d41238ff2f2cristy  double
17495264c47a4a04033f2c1688819282e27bcf3f8b5Cristy    radius,
17595264c47a4a04033f2c1688819282e27bcf3f8b5Cristy    angle;
176939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy
177939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy  size_t
178939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy    signature;
1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} GradientInfo;
1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _ElementReference
1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *id;
1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ReferenceType
1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    type;
1883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GradientInfo
1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    gradient;
1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  struct _ElementReference
1933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *previous,
1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *next;
195939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy
196939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy  size_t
197939d92bf2f053dfe13d8556cde0b86e90adbb48fcristy    signature;
1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} ElementReference;
1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _DrawInfo
2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *primitive,
2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *geometry;
2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  RectangleInfo
2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    viewbox;
2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  AffineMatrix
2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    affine;
2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
212101ab708b0574518ac5715da4d3915400e9df79acristy  PixelInfo
2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    fill,
214fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    stroke,
215fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    undercolor,
216fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    border_color;
217fd706f930f397221c6ba26f112e96e262fb0ba2eanthony
218fd706f930f397221c6ba26f112e96e262fb0ba2eanthony  Image
219fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    *fill_pattern,
220fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    *stroke_pattern;
2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    stroke_width;
2243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GradientInfo
2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    gradient;
2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    stroke_antialias,
2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    text_antialias;
2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  FillRule
2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    fill_rule;
2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  LineCap
2363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    linecap;
2373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  LineJoin
2393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    linejoin;
2403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
241bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
2423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    miterlimit;
2433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
2453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    dash_offset;
2463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DecorationType
2483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    decorate;
2493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CompositeOperator
2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    compose;
2523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
254fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    *text,
2553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *font,
2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *metrics,
2570d88ea3545d808eae9feeacdd57eec41db18d2baCristy    *family;
2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
259fd706f930f397221c6ba26f112e96e262fb0ba2eanthony  size_t
260fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    face;
261fd706f930f397221c6ba26f112e96e262fb0ba2eanthony
2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  StyleType
2633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    style;
2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  StretchType
2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    stretch;
2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
268bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    weight;
2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *encoding;
2733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    pointsize;
2763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *density;
2793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  AlignType
2813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    align;
2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
283fd706f930f397221c6ba26f112e96e262fb0ba2eanthony  GravityType
284fd706f930f397221c6ba26f112e96e262fb0ba2eanthony    gravity;
2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *server_name;
2883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *dash_pattern;
2913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *clip_mask;
2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SegmentInfo
2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    bounds;
2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ClipPathUnits
2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    clip_units;
3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Quantum
3024c08aed51c5899665ade97263692328eea4af106cristy    alpha;
3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
3053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    render;
3063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ElementReference
3083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    element_reference;
3093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
3113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    kerning,
312b32b90a7e1ee2275333589072c496b5f69e17feccristy    interword_spacing,
3136ac8b3303196ef8f76c38ec08cdbafe15b53bc10cristy    interline_spacing;
3146ac8b3303196ef8f76c38ec08cdbafe15b53bc10cristy
3156ac8b3303196ef8f76c38ec08cdbafe15b53bc10cristy  DirectionType
316c9b129570a277337cf0e887229741497e2ead5cfcristy    direction;
317c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy
318c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy  MagickBooleanType
319c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy    debug;
320c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy
321c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy  size_t
322c0c324c6e2b90ed8dfcdc5dddaafaa78bd36ffe5cristy    signature;
32348bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy
32448bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy  double
32548bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy    fill_alpha,
32648bcfe0859ff90b71e2bdfde3e1c1229b9e57523Cristy    stroke_alpha;
3273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} DrawInfo;
3283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
329fd706f930f397221c6ba26f112e96e262fb0ba2eanthony
3303ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _PrimitiveInfo
3313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo
3333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    point;
3343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
335bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
3363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    coordinates;
3373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PrimitiveType
3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    primitive;
3403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PaintMethod
3423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    method;
3433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *text;
3463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} PrimitiveInfo;
3473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _TypeMetric
3493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo
3513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    pixels_per_em;
3523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double
3543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ascent,
3553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    descent,
3563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    width,
3573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    height,
3583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    max_advance,
3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    underline_position,
3603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    underline_thickness;
3613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SegmentInfo
3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    bounds;
3643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo
3663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    origin;
3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} TypeMetric;
3683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport DrawInfo
3703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  *AcquireDrawInfo(void),
3713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
3723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  *DestroyDrawInfo(DrawInfo *);
3733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3743ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport MagickBooleanType
375947cb4c68bebf79b15b6f3e824bc973491a77709cristy  DrawAffineImage(Image *,const Image *,const AffineMatrix *,ExceptionInfo *),
376018f07f7333b25743d0afff892450cebdb905c1acristy  DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *),
377947cb4c68bebf79b15b6f3e824bc973491a77709cristy  DrawGradientImage(Image *,const DrawInfo *,ExceptionInfo *),
378018f07f7333b25743d0afff892450cebdb905c1acristy  DrawImage(Image *,const DrawInfo *,ExceptionInfo *),
379018f07f7333b25743d0afff892450cebdb905c1acristy  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **,
380018f07f7333b25743d0afff892450cebdb905c1acristy    ExceptionInfo *),
381947cb4c68bebf79b15b6f3e824bc973491a77709cristy  DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *,ExceptionInfo *);
3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport void
3843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GetAffineMatrix(AffineMatrix *),
3853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GetDrawInfo(const ImageInfo *,DrawInfo *);
3863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(__cplusplus) || defined(c_plusplus)
3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
392