| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- /*
- Copyright 1999 ImageMagick Studio LLC, a non-profit organization
- dedicated to making software imaging solutions freely available.
- You may not use this file except in compliance with the License. You may
- obtain a copy of the License at
- https://imagemagick.org/script/license.php
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- MagickCore drawing methods.
- */
- #ifndef MAGICKCORE_DRAW_H
- #define MAGICKCORE_DRAW_H
- #include "magick/geometry.h"
- #include "magick/image.h"
- #include "magick/pixel.h"
- #include "magick/type.h"
- #include "magick/color.h"
- #if defined(__cplusplus) || defined(c_plusplus)
- extern "C" {
- #endif
- typedef enum
- {
- UndefinedAlign,
- LeftAlign,
- CenterAlign,
- RightAlign
- } AlignType;
- typedef enum
- {
- UndefinedPathUnits,
- UserSpace,
- UserSpaceOnUse,
- ObjectBoundingBox
- } ClipPathUnits;
- typedef enum
- {
- UndefinedDecoration,
- NoDecoration,
- UnderlineDecoration,
- OverlineDecoration,
- LineThroughDecoration
- } DecorationType;
- typedef enum
- {
- UndefinedDirection,
- RightToLeftDirection,
- LeftToRightDirection,
- TopToBottomDirection
- } DirectionType;
- typedef enum
- {
- UndefinedRule,
- #undef EvenOddRule
- EvenOddRule,
- NonZeroRule
- } FillRule;
- typedef enum
- {
- UndefinedGradient,
- LinearGradient,
- RadialGradient
- } GradientType;
- typedef enum
- {
- UndefinedCap,
- ButtCap,
- RoundCap,
- SquareCap
- } LineCap;
- typedef enum
- {
- UndefinedJoin,
- MiterJoin,
- RoundJoin,
- BevelJoin
- } LineJoin;
- typedef enum
- {
- UndefinedMethod,
- PointMethod,
- ReplaceMethod,
- FloodfillMethod,
- FillToBorderMethod,
- ResetMethod
- } PaintMethod;
- typedef enum
- {
- UndefinedPrimitive,
- PointPrimitive,
- LinePrimitive,
- RectanglePrimitive,
- RoundRectanglePrimitive,
- ArcPrimitive,
- EllipsePrimitive,
- CirclePrimitive,
- PolylinePrimitive,
- PolygonPrimitive,
- BezierPrimitive,
- ColorPrimitive,
- MattePrimitive,
- TextPrimitive,
- ImagePrimitive,
- PathPrimitive
- } PrimitiveType;
- typedef enum
- {
- UndefinedReference,
- GradientReference
- } ReferenceType;
- typedef enum
- {
- UndefinedSpread,
- PadSpread,
- ReflectSpread,
- RepeatSpread
- } SpreadMethod;
- typedef struct _PointInfo
- {
- double
- x,
- y;
- } PointInfo;
- typedef struct _StopInfo
- {
- MagickPixelPacket
- color;
- MagickRealType
- offset;
- } StopInfo;
- typedef struct _GradientInfo
- {
- GradientType
- type;
- RectangleInfo
- bounding_box;
- SegmentInfo
- gradient_vector;
- StopInfo
- *stops;
- size_t
- number_stops;
- SpreadMethod
- spread;
- MagickBooleanType
- debug;
- size_t
- signature;
- PointInfo
- center;
- MagickRealType
- radius,
- angle;
- PointInfo
- radii;
- } GradientInfo;
- typedef struct _ElementReference
- {
- char
- *id;
- ReferenceType
- type;
- GradientInfo
- gradient;
- size_t
- signature;
- struct _ElementReference
- *previous,
- *next;
- } ElementReference;
- typedef struct _DrawInfo
- {
- char
- *primitive,
- *geometry;
- RectangleInfo
- viewbox;
- AffineMatrix
- affine;
- GravityType
- gravity;
- PixelPacket
- fill,
- stroke;
- double
- stroke_width;
- GradientInfo
- gradient;
- Image
- *fill_pattern,
- *tile,
- *stroke_pattern;
- MagickBooleanType
- stroke_antialias,
- text_antialias;
- FillRule
- fill_rule;
- LineCap
- linecap;
- LineJoin
- linejoin;
- size_t
- miterlimit;
- double
- dash_offset;
- DecorationType
- decorate;
- CompositeOperator
- compose;
- char
- *text;
- size_t
- face;
- char
- *font,
- *metrics,
- *family;
- StyleType
- style;
- StretchType
- stretch;
- size_t
- weight;
- char
- *encoding;
- double
- pointsize;
- char
- *density;
- AlignType
- align;
- PixelPacket
- undercolor,
- border_color;
- char
- *server_name;
- double
- *dash_pattern;
- char
- *clip_mask;
- SegmentInfo
- bounds;
- ClipPathUnits
- clip_units;
- Quantum
- opacity;
- MagickBooleanType
- render;
- ElementReference
- element_reference;
- MagickBooleanType
- debug;
- size_t
- signature;
- double
- kerning,
- interword_spacing,
- interline_spacing;
- DirectionType
- direction;
- double
- fill_opacity,
- stroke_opacity;
- MagickBooleanType
- clip_path;
- Image
- *clipping_mask;
- ComplianceType
- compliance;
- Image
- *composite_mask;
- char
- *id;
- ImageInfo
- *image_info;
- } DrawInfo;
- typedef struct _PrimitiveInfo
- {
- PointInfo
- point;
- size_t
- coordinates;
- PrimitiveType
- primitive;
- PaintMethod
- method;
- char
- *text;
- MagickBooleanType
- closed_subpath;
- } PrimitiveInfo;
- typedef struct _TypeMetric
- {
- PointInfo
- pixels_per_em;
- double
- ascent,
- descent,
- width,
- height,
- max_advance,
- underline_position,
- underline_thickness;
- SegmentInfo
- bounds;
- PointInfo
- origin;
- } TypeMetric;
- extern MagickExport DrawInfo
- *AcquireDrawInfo(void),
- *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
- *DestroyDrawInfo(DrawInfo *);
- extern MagickExport MagickBooleanType
- DrawAffineImage(Image *,const Image *,const AffineMatrix *),
- DrawClipPath(Image *,const DrawInfo *,const char *),
- DrawGradientImage(Image *,const DrawInfo *),
- DrawImage(Image *,const DrawInfo *),
- DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
- DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
- extern MagickExport void
- GetAffineMatrix(AffineMatrix *),
- GetDrawInfo(const ImageInfo *,DrawInfo *);
- #if defined(__cplusplus) || defined(c_plusplus)
- }
- #endif
- #endif
|