You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
391 lines
5.3 KiB
391 lines
5.3 KiB
/* |
|
Copyright 1999-2016 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. |
|
obtain a copy of the License at |
|
|
|
http://www.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 "MagickCore/geometry.h" |
|
#include "MagickCore/image.h" |
|
#include "MagickCore/pixel.h" |
|
#include "MagickCore/type.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 |
|
} 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, |
|
AlphaPrimitive, |
|
ArcPrimitive, |
|
BezierPrimitive, |
|
CirclePrimitive, |
|
ColorPrimitive, |
|
EllipsePrimitive, |
|
ImagePrimitive, |
|
LinePrimitive, |
|
PathPrimitive, |
|
PointPrimitive, |
|
PolygonPrimitive, |
|
PolylinePrimitive, |
|
RectanglePrimitive, |
|
RoundRectanglePrimitive, |
|
TextPrimitive |
|
} PrimitiveType; |
|
|
|
typedef enum |
|
{ |
|
UndefinedReference, |
|
GradientReference |
|
} ReferenceType; |
|
|
|
typedef enum |
|
{ |
|
UndefinedSpread, |
|
PadSpread, |
|
ReflectSpread, |
|
RepeatSpread |
|
} SpreadMethod; |
|
|
|
typedef struct _StopInfo |
|
{ |
|
PixelInfo |
|
color; |
|
|
|
double |
|
offset; |
|
} StopInfo; |
|
|
|
typedef struct _GradientInfo |
|
{ |
|
GradientType |
|
type; |
|
|
|
RectangleInfo |
|
bounding_box; |
|
|
|
SegmentInfo |
|
gradient_vector; |
|
|
|
StopInfo |
|
*stops; |
|
|
|
size_t |
|
number_stops; |
|
|
|
SpreadMethod |
|
spread; |
|
|
|
MagickBooleanType |
|
debug; |
|
|
|
PointInfo |
|
center, |
|
radii; |
|
|
|
double |
|
radius, |
|
angle; |
|
|
|
size_t |
|
signature; |
|
} GradientInfo; |
|
|
|
typedef struct _ElementReference |
|
{ |
|
char |
|
*id; |
|
|
|
ReferenceType |
|
type; |
|
|
|
GradientInfo |
|
gradient; |
|
|
|
struct _ElementReference |
|
*previous, |
|
*next; |
|
|
|
size_t |
|
signature; |
|
} ElementReference; |
|
|
|
typedef struct _DrawInfo |
|
{ |
|
char |
|
*primitive, |
|
*geometry; |
|
|
|
RectangleInfo |
|
viewbox; |
|
|
|
AffineMatrix |
|
affine; |
|
|
|
PixelInfo |
|
fill, |
|
stroke, |
|
undercolor, |
|
border_color; |
|
|
|
Image |
|
*fill_pattern, |
|
*stroke_pattern; |
|
|
|
double |
|
stroke_width; |
|
|
|
GradientInfo |
|
gradient; |
|
|
|
MagickBooleanType |
|
stroke_antialias, |
|
text_antialias; |
|
|
|
FillRule |
|
fill_rule; |
|
|
|
LineCap |
|
linecap; |
|
|
|
LineJoin |
|
linejoin; |
|
|
|
size_t |
|
miterlimit; |
|
|
|
double |
|
dash_offset; |
|
|
|
DecorationType |
|
decorate; |
|
|
|
CompositeOperator |
|
compose; |
|
|
|
char |
|
*text, |
|
*font, |
|
*metrics, |
|
*family; |
|
|
|
size_t |
|
face; |
|
|
|
StyleType |
|
style; |
|
|
|
StretchType |
|
stretch; |
|
|
|
size_t |
|
weight; |
|
|
|
char |
|
*encoding; |
|
|
|
double |
|
pointsize; |
|
|
|
char |
|
*density; |
|
|
|
AlignType |
|
align; |
|
|
|
GravityType |
|
gravity; |
|
|
|
char |
|
*server_name; |
|
|
|
double |
|
*dash_pattern; |
|
|
|
char |
|
*clip_mask; |
|
|
|
SegmentInfo |
|
bounds; |
|
|
|
ClipPathUnits |
|
clip_units; |
|
|
|
Quantum |
|
alpha; |
|
|
|
MagickBooleanType |
|
render; |
|
|
|
ElementReference |
|
element_reference; |
|
|
|
double |
|
kerning, |
|
interword_spacing, |
|
interline_spacing; |
|
|
|
DirectionType |
|
direction; |
|
|
|
MagickBooleanType |
|
debug; |
|
|
|
size_t |
|
signature; |
|
|
|
double |
|
fill_alpha, |
|
stroke_alpha; |
|
} DrawInfo; |
|
|
|
|
|
typedef struct _PrimitiveInfo |
|
{ |
|
PointInfo |
|
point; |
|
|
|
size_t |
|
coordinates; |
|
|
|
PrimitiveType |
|
primitive; |
|
|
|
PaintMethod |
|
method; |
|
|
|
char |
|
*text; |
|
} 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 *,ExceptionInfo *), |
|
DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *), |
|
DrawGradientImage(Image *,const DrawInfo *,ExceptionInfo *), |
|
DrawImage(Image *,const DrawInfo *,ExceptionInfo *), |
|
DrawPatternPath(Image *,const DrawInfo *,const char *,Image **, |
|
ExceptionInfo *), |
|
DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *,ExceptionInfo *); |
|
|
|
extern MagickExport void |
|
GetAffineMatrix(AffineMatrix *), |
|
GetDrawInfo(const ImageInfo *,DrawInfo *); |
|
|
|
#if defined(__cplusplus) || defined(c_plusplus) |
|
} |
|
#endif |
|
|
|
#endif
|
|
|