github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/graphics-magick/include/GraphicsMagick/magick/render.h (about)

     1  /*
     2    Copyright (C) 2003 - 2020 GraphicsMagick Group
     3    Copyright (C) 2002 ImageMagick Studio
     4  
     5    This program is covered by multiple licenses, which are described in
     6    Copyright.txt. You should have received a copy of Copyright.txt with this
     7    package; otherwise see http://www.graphicsmagick.org/www/Copyright.html.
     8  
     9    Drawing methods.
    10  */
    11  #ifndef _MAGICK_RENDER_H
    12  #define _MAGICK_RENDER_H
    13  
    14  #include "magick/type.h"
    15  
    16  #if defined(__cplusplus) || defined(c_plusplus)
    17  extern "C" {
    18  #endif
    19  
    20  /*
    21    Enum declarations.
    22  */
    23  typedef enum
    24  {
    25    UndefinedAlign,
    26    LeftAlign,
    27    CenterAlign,
    28    RightAlign
    29  } AlignType;
    30  
    31  typedef enum
    32  {
    33    UserSpace,
    34    UserSpaceOnUse,
    35    ObjectBoundingBox
    36  } ClipPathUnits;
    37  
    38  typedef enum
    39  {
    40    NoDecoration,
    41    UnderlineDecoration,
    42    OverlineDecoration,
    43    LineThroughDecoration
    44  } DecorationType;
    45  
    46  typedef enum
    47  {
    48    UndefinedRule,
    49  #undef EvenOddRule
    50    EvenOddRule,
    51    NonZeroRule
    52  } FillRule;
    53  
    54  typedef enum
    55  {
    56    UndefinedGradient,
    57    LinearGradient,
    58    RadialGradient
    59  } GradientType;
    60  
    61  typedef enum
    62  {
    63    UndefinedCap,
    64    ButtCap,
    65    RoundCap,
    66    SquareCap
    67  } LineCap;
    68  
    69  typedef enum
    70  {
    71    UndefinedJoin,
    72    MiterJoin,
    73    RoundJoin,
    74    BevelJoin
    75  } LineJoin;
    76  
    77  typedef enum
    78  {
    79    PointMethod = 0,
    80    ReplaceMethod,
    81    FloodfillMethod,
    82    FillToBorderMethod,
    83    ResetMethod
    84  } PaintMethod;
    85  
    86  typedef enum
    87  {
    88    UndefinedPrimitive = 0,
    89    PointPrimitive,
    90    LinePrimitive,
    91    RectanglePrimitive,
    92    RoundRectanglePrimitive,
    93    ArcPrimitive,
    94    EllipsePrimitive,
    95    CirclePrimitive,
    96    PolylinePrimitive,
    97    PolygonPrimitive,
    98    BezierPrimitive,
    99    ColorPrimitive,
   100    MattePrimitive,
   101    TextPrimitive,
   102    ImagePrimitive,
   103    PathPrimitive
   104  } PrimitiveType;
   105  
   106  typedef enum
   107  {
   108    UndefinedReference,
   109    GradientReference
   110  } ReferenceType;
   111  
   112  typedef enum
   113  {
   114    UndefinedSpread,
   115    PadSpread,
   116    ReflectSpead,
   117    RepeatSpread
   118  } SpreadMethod;
   119  
   120  /*
   121    Typedef declarations.
   122  */
   123  typedef struct _GradientInfo
   124  {
   125    GradientType
   126      type;
   127  
   128    PixelPacket
   129      color;
   130  
   131    SegmentInfo
   132      stop;
   133  
   134    unsigned long
   135      length;
   136  
   137    SpreadMethod
   138      spread;
   139  
   140    unsigned long
   141      signature;
   142  
   143    struct _GradientInfo
   144      *previous,
   145      *next;
   146  } GradientInfo;
   147  
   148  typedef struct _ElementReference
   149  {
   150    char
   151      *id;
   152  
   153    ReferenceType
   154      type;
   155  
   156    GradientInfo
   157      gradient;
   158  
   159    unsigned long
   160      signature;
   161  
   162    struct _ElementReference
   163      *previous,
   164      *next;
   165  } ElementReference;
   166  
   167  struct _DrawInfoExtra;  /* forward decl.; see member "extra" below */
   168  
   169  typedef struct _DrawInfo
   170  {
   171    char
   172      *primitive,
   173      *geometry;
   174  
   175    AffineMatrix
   176      affine;
   177  
   178    GravityType
   179      gravity;
   180  
   181    PixelPacket
   182      fill,
   183      stroke;
   184  
   185    double
   186      stroke_width;
   187  
   188    GradientInfo
   189      gradient;
   190  
   191    Image
   192      *fill_pattern,
   193      *tile,
   194      *stroke_pattern;
   195  
   196    unsigned int
   197      stroke_antialias,
   198      text_antialias;
   199  
   200    FillRule
   201      fill_rule;
   202  
   203    LineCap
   204      linecap;
   205  
   206    LineJoin
   207      linejoin;
   208  
   209    unsigned long
   210      miterlimit;
   211  
   212    double
   213      dash_offset;
   214  
   215    DecorationType
   216      decorate;
   217  
   218    CompositeOperator
   219      compose;
   220  
   221    char
   222      *text,
   223      *font,
   224      *family;
   225  
   226    StyleType
   227      style;
   228  
   229    StretchType
   230      stretch;
   231  
   232    unsigned long
   233      weight;
   234  
   235    char
   236      *encoding;
   237  
   238    double
   239      pointsize;
   240  
   241    char
   242      *density;
   243  
   244    AlignType
   245      align;
   246  
   247    PixelPacket
   248      undercolor,
   249      border_color;
   250  
   251    char
   252      *server_name;
   253  
   254    double
   255      *dash_pattern; /* Terminated by value 0.0 (i.e. < MagickEpsilon)*/
   256  
   257  #if 0
   258    char
   259      *clip_path;
   260  #endif
   261    /*
   262      Allow for expansion of DrawInfo without increasing its size.  The
   263      internals are defined only in render.c.  Clients outside of render.c
   264      can access the internals via the provided access functions (see below).
   265  
   266      This location in DrawInfo used to be occupied by char *clip_path. The
   267      clip_path member now lives in _DrawInfoExtra.
   268    */
   269    struct _DrawInfoExtra
   270      *extra;
   271  
   272    SegmentInfo
   273      bounds;
   274  
   275    ClipPathUnits
   276      clip_units;
   277  
   278    Quantum
   279      opacity;
   280  
   281    unsigned int
   282      render,
   283      /*
   284        Bit fields in flags:
   285  
   286          Bit 0: should this DrawInfo should be drawn as:
   287            0:  normal (original behavior)
   288            1:  SVG compliant
   289          Bit 1: is the DrawInfo a clipping path:
   290            0:  is not a clipping path
   291            1:  is a clipping path
   292  
   293        Access to these bits should be through functions (defined in render.c):
   294          IsDrawInfoClippingPath()
   295          IsDrawInfoSVGCompliant()
   296          IsDrawInfoSVGCompliantClippingPath()
   297          SetDrawInfoClippingPath()
   298          SetDrawInfoSVGCompliant()
   299  
   300        At the present time the SVG compliance bit only affects how clipping paths are drawn.
   301      */
   302      flags;  /* previously "unused1" */
   303  
   304    ElementReference
   305      element_reference;
   306  
   307    unsigned long
   308      signature;
   309  } DrawInfo;
   310  
   311  typedef struct _PointInfo
   312  {
   313    double
   314      x,
   315      y;
   316  } PointInfo;
   317  
   318  #if defined(MAGICK_IMPLEMENTATION)
   319  #  include "magick/render-private.h"
   320  #endif /* if defined(MAGICK_IMPLEMENTATION) */
   321  
   322  typedef struct _TypeMetric
   323  {
   324    PointInfo
   325      pixels_per_em;
   326  
   327    double
   328      ascent,
   329      descent,
   330      width,
   331      height,
   332      max_advance;
   333  
   334    SegmentInfo
   335      bounds;
   336  
   337    double
   338      underline_position,
   339      underline_thickness;
   340  } TypeMetric;
   341  
   342  /*
   343    Method declarations.
   344  */
   345  extern MagickExport DrawInfo
   346    *CloneDrawInfo(const ImageInfo *,const DrawInfo *);
   347  
   348  extern MagickExport MagickPassFail
   349    AnnotateImage(Image *,const DrawInfo *),
   350    DrawAffineImage(Image *,const Image *,const AffineMatrix *),
   351    DrawClipPath(Image *,const DrawInfo *,const char *),
   352    DrawImage(Image *,const DrawInfo *),
   353    DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
   354    GetTypeMetrics(Image *,const DrawInfo *,TypeMetric *);
   355  
   356  extern MagickExport void
   357    DestroyDrawInfo(DrawInfo *),
   358    GetDrawInfo(const ImageInfo *,DrawInfo *);
   359  
   360  /* provide public access to the clip_path member of DrawInfo */
   361  extern MagickExport char
   362    **DrawInfoGetClipPath(const DrawInfo *) MAGICK_FUNC_PURE;
   363  
   364  /* provide public access to the composite_path member of DrawInfo */
   365  extern MagickExport char
   366    **DrawInfoGetCompositePath(const DrawInfo *) MAGICK_FUNC_PURE;
   367  
   368  #if defined(__cplusplus) || defined(c_plusplus)
   369  }
   370  #endif
   371  
   372  #endif /* _MAGICK_RENDER_H */
   373  
   374  /*
   375   * Local Variables:
   376   * mode: c
   377   * c-basic-offset: 2
   378   * fill-column: 78
   379   * End:
   380   */