MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
draw.c File Reference
Include dependency graph for draw.c:

Data Structures

struct  _EdgeInfo
 
struct  _ElementInfo
 
struct  _MVGInfo
 
struct  _PolygonInfo
 
struct  _PathInfo
 

Macros

#define BezierQuantum   200
 
#define PrimitiveExtentPad   2048
 
#define MaxBezierCoordinates   67108864
 
#define ThrowPointExpectedException(image, token)
 
#define DrawCompareEdge(p, q)
 
#define RenderImageTag   "Render/Image"
 
#define MaxStrokePad   (6*BezierQuantum+360)
 
#define CheckPathExtent(pad)
 

Typedefs

typedef struct _EdgeInfo EdgeInfo
 
typedef struct _ElementInfo ElementInfo
 
typedef struct _MVGInfo MVGInfo
 
typedef struct _PolygonInfo PolygonInfo
 
typedef struct _PathInfo PathInfo
 

Enumerations

enum  PathInfoCode {
  MoveToCode, OpenCode, GhostlineCode, LineToCode,
  EndCode
}
 

Functions

static ImageDrawClippingMask (Image *, const DrawInfo *, const char *, const char *, ExceptionInfo *)
 
static MagickBooleanType DrawStrokePolygon (Image *, const DrawInfo *, const PrimitiveInfo *)
 
static MagickBooleanType RenderMVGContent (Image *, const DrawInfo *, const size_t)
 
static MagickBooleanType TraceArc (MVGInfo *, const PointInfo, const PointInfo, const PointInfo)
 
static MagickBooleanType TraceArcPath (MVGInfo *, const PointInfo, const PointInfo, const PointInfo, const double, const MagickBooleanType, const MagickBooleanType)
 
static MagickBooleanType TraceBezier (MVGInfo *, const size_t)
 
static MagickBooleanType TraceCircle (MVGInfo *, const PointInfo, const PointInfo)
 
static MagickBooleanType TraceEllipse (MVGInfo *, const PointInfo, const PointInfo, const PointInfo)
 
static MagickBooleanType TraceLine (PrimitiveInfo *, const PointInfo, const PointInfo)
 
static MagickBooleanType TraceRectangle (PrimitiveInfo *, const PointInfo, const PointInfo)
 
static MagickBooleanType TraceRoundRectangle (MVGInfo *, const PointInfo, const PointInfo, PointInfo)
 
static MagickBooleanType TraceSquareLinecap (PrimitiveInfo *, const size_t, const double)
 
static PrimitiveInfoTraceStrokePolygon (const Image *, const DrawInfo *, const PrimitiveInfo *)
 
static size_t TracePath (Image *, MVGInfo *, const char *)
 
MagickExport DrawInfoAcquireDrawInfo (void)
 
MagickExport DrawInfoCloneDrawInfo (const ImageInfo *image_info, const DrawInfo *draw_info)
 
static int DrawCompareEdges (const void *p_edge, const void *q_edge)
 
static void LogPolygonInfo (const PolygonInfo *polygon_info)
 
static void ReversePoints (PointInfo *points, const size_t number_points)
 
static PolygonInfoConvertPathToPolygon (const PathInfo *path_info)
 
static void LogPathInfo (const PathInfo *path_info)
 
static PathInfoConvertPrimitiveToPath (const DrawInfo *magick_unused(draw_info), const PrimitiveInfo *primitive_info)
 
MagickExport DrawInfoDestroyDrawInfo (DrawInfo *draw_info)
 
static size_t DestroyEdge (PolygonInfo *polygon_info, const size_t edge)
 
static PolygonInfoDestroyPolygonInfo (PolygonInfo *polygon_info)
 
static SegmentInfo AffineEdge (const Image *image, const AffineMatrix *affine, const double y, const SegmentInfo *edge)
 
static AffineMatrix InverseAffineMatrix (const AffineMatrix *affine)
 
MagickExport MagickBooleanType DrawAffineImage (Image *image, const Image *source, const AffineMatrix *affine)
 
static double SaneStrokeWidth (const Image *image, const DrawInfo *draw_info)
 
static MagickBooleanType DrawBoundingRectangles (Image *image, const DrawInfo *draw_info, const PolygonInfo *polygon_info)
 
MagickExport MagickBooleanType DrawClipPath (Image *image, const DrawInfo *draw_info, const char *id)
 
static ImageDrawCompositeMask (Image *image, const DrawInfo *draw_info, const char *id, const char *mask_path, ExceptionInfo *exception)
 
static MagickBooleanType DrawDashPolygon (const DrawInfo *draw_info, const PrimitiveInfo *primitive_info, Image *image)
 
static double GetStopColorOffset (const GradientInfo *gradient, const ssize_t x, const ssize_t y)
 
MagickExport MagickBooleanType DrawGradientImage (Image *image, const DrawInfo *draw_info)
 
static MagickBooleanType CheckPrimitiveExtent (MVGInfo *mvg_info, const size_t pad)
 
MagickExport int MVGMacroCompare (const void *target, const void *source)
 
static SplayTreeInfoGetMVGMacros (const char *primitive)
 
static MagickBooleanType IsPoint (const char *point)
 
static MagickBooleanType TracePoint (PrimitiveInfo *primitive_info, const PointInfo point)
 
MagickExport MagickBooleanType DrawImage (Image *image, const DrawInfo *draw_info)
 
MagickExport MagickBooleanType DrawPatternPath (Image *image, const DrawInfo *draw_info, const char *name, Image **pattern)
 
static PolygonInfo ** DestroyPolygonThreadSet (PolygonInfo **polygon_info)
 
static PolygonInfo ** AcquirePolygonThreadSet (const DrawInfo *draw_info, const PrimitiveInfo *primitive_info)
 
static double GetOpacityPixel (PolygonInfo *polygon_info, const double mid, const MagickBooleanType fill, const FillRule fill_rule, const ssize_t x, const ssize_t y, double *stroke_opacity)
 
static MagickBooleanType DrawPolygonPrimitive (Image *image, const DrawInfo *draw_info, const PrimitiveInfo *primitive_info)
 
static double ConstrainCoordinate (double x)
 
static void LogPrimitiveInfo (const PrimitiveInfo *primitive_info)
 
MagickExport MagickBooleanType DrawPrimitive (Image *image, const DrawInfo *draw_info, const PrimitiveInfo *primitive_info)
 
static MagickBooleanType DrawRoundLinecap (Image *image, const DrawInfo *draw_info, const PrimitiveInfo *primitive_info)
 
MagickExport void GetAffineMatrix (AffineMatrix *affine_matrix)
 
MagickExport void GetDrawInfo (const ImageInfo *image_info, DrawInfo *draw_info)
 
static double Permutate (const ssize_t n, const ssize_t k)
 

Macro Definition Documentation

#define BezierQuantum   200
#define CheckPathExtent (   pad)
Value:
if ((ssize_t) (q+(pad)) >= (ssize_t) max_strokes) \
{ \
if (~max_strokes < (pad)) \
{ \
path_p=(PointInfo *) RelinquishMagickMemory(path_p); \
path_q=(PointInfo *) RelinquishMagickMemory(path_q); \
} \
else \
{ \
max_strokes+=(pad); \
path_p=(PointInfo *) ResizeQuantumMemory(path_p,max_strokes+ \
MaxStrokePad,sizeof(*path_p)); \
path_q=(PointInfo *) ResizeQuantumMemory(path_q,max_strokes+ \
MaxStrokePad,sizeof(*path_q)); \
} \
if ((path_p == (PointInfo *) NULL) || (path_q == (PointInfo *) NULL)) \
{ \
if (path_p != (PointInfo *) NULL) \
path_p=(PointInfo *) RelinquishMagickMemory(path_p); \
if (path_q != (PointInfo *) NULL) \
path_q=(PointInfo *) RelinquishMagickMemory(path_q); \
polygon_primitive=(PrimitiveInfo *) \
RelinquishMagickMemory(polygon_primitive); \
return((PrimitiveInfo *) NULL); \
} \
}
#define MaxStrokePad
MagickExport void * ResizeQuantumMemory(void *memory, const size_t count, const size_t quantum)
Definition: memory.c:1408
Definition: draw.h:359
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:1123
Definition: draw.h:138

Referenced by TraceStrokePolygon().

#define DrawCompareEdge (   p,
 
)
Value:
{ \
if (((p)-(q)) < 0.0) \
return(-1); \
if (((p)-(q)) > 0.0) \
return(1); \
}

Referenced by DrawCompareEdges().

#define MaxBezierCoordinates   67108864

Referenced by DrawDashPolygon().

#define MaxStrokePad   (6*BezierQuantum+360)

Referenced by TraceStrokePolygon().

#define PrimitiveExtentPad   2048
#define RenderImageTag   "Render/Image"

Referenced by RenderMVGContent().

#define ThrowPointExpectedException (   image,
  token 
)
Value:
{ \
(void) ThrowMagickException(&(image)->exception,GetMagickModule(),DrawError, \
"NonconformingDrawingPrimitiveDefinition","`%s'",token); \
status=MagickFalse; \
break; \
}
Definition: exception.h:68
MagickExport MagickBooleanType ThrowMagickException(ExceptionInfo *exception, const char *module, const char *function, const size_t line, const ExceptionType severity, const char *tag, const char *format,...)
Definition: exception.c:1149
#define GetMagickModule()
Definition: log.h:29
Definition: magick-type.h:200

Referenced by RenderMVGContent(), and TracePath().

Typedef Documentation

typedef struct _EdgeInfo EdgeInfo
typedef struct _ElementInfo ElementInfo
typedef struct _MVGInfo MVGInfo
typedef struct _PathInfo PathInfo
typedef struct _PolygonInfo PolygonInfo

Enumeration Type Documentation

Enumerator
MoveToCode 
OpenCode 
GhostlineCode 
LineToCode 
EndCode 

Function Documentation

MagickExport DrawInfo* AcquireDrawInfo ( void  )

References AcquireCriticalMemory(), and GetDrawInfo().

Referenced by GradientImage().

MagickExport DrawInfo* CloneDrawInfo ( const ImageInfo image_info,
const DrawInfo draw_info 
)

References AcquireCriticalMemory(), AcquireQuantumMemory(), _DrawInfo::affine, _DrawInfo::align, _DrawInfo::border_color, _DrawInfo::bounds, _DrawInfo::clip_mask, _DrawInfo::clip_path, _DrawInfo::clip_units, _DrawInfo::clipping_mask, CloneImage(), CloneString(), _DrawInfo::compliance, _DrawInfo::compose, _DrawInfo::composite_mask, _DrawInfo::dash_offset, _DrawInfo::dash_pattern, _DrawInfo::debug, _DrawInfo::decorate, _DrawInfo::density, _DrawInfo::direction, _DrawInfo::element_reference, _DrawInfo::encoding, _Image::exception, _DrawInfo::family, _DrawInfo::fill, _DrawInfo::fill_opacity, _DrawInfo::fill_pattern, _DrawInfo::fill_rule, _DrawInfo::font, _DrawInfo::geometry, GetDrawInfo(), _DrawInfo::gradient, _DrawInfo::gravity, _DrawInfo::id, _DrawInfo::interline_spacing, _DrawInfo::interword_spacing, IsEventLogging(), _DrawInfo::kerning, _DrawInfo::linecap, _DrawInfo::linejoin, MagickEpsilon, MagickTrue, _DrawInfo::metrics, _DrawInfo::miterlimit, NewImageList(), _GradientInfo::number_stops, _DrawInfo::pointsize, _DrawInfo::primitive, _DrawInfo::render, ResourceLimitFatalError, _DrawInfo::server_name, _GradientInfo::stops, _DrawInfo::stretch, _DrawInfo::stroke, _DrawInfo::stroke_antialias, _DrawInfo::stroke_opacity, _DrawInfo::stroke_pattern, _DrawInfo::stroke_width, _DrawInfo::style, _DrawInfo::text, _DrawInfo::text_antialias, ThrowFatalException, _DrawInfo::tile, _DrawInfo::undercolor, _DrawInfo::viewbox, and _DrawInfo::weight.

Referenced by AnnotateImage(), DrawBoundingRectangles(), DrawClippingMask(), DrawCompositeMask(), DrawDashPolygon(), DrawPatternPath(), DrawPrimitive(), DrawStrokePolygon(), GetMultilineTypeMetrics(), GetTypeMetrics(), MontageImageList(), PolaroidImage(), RenderHoughLines(), RenderMVGContent(), RenderType(), and VignetteImage().

static double ConstrainCoordinate ( double  x)
inlinestatic

Referenced by DrawPrimitive().

static size_t DestroyEdge ( PolygonInfo polygon_info,
const size_t  edge 
)
static
static PolygonInfo* DestroyPolygonInfo ( PolygonInfo polygon_info)
static
static PolygonInfo** DestroyPolygonThreadSet ( PolygonInfo **  polygon_info)
static
MagickExport MagickBooleanType DrawClipPath ( Image image,
const DrawInfo draw_info,
const char *  id 
)
static int DrawCompareEdges ( const void *  p_edge,
const void *  q_edge 
)
static

References DrawCompareEdge.

Referenced by ConvertPathToPolygon().

MagickExport MagickBooleanType DrawImage ( Image image,
const DrawInfo draw_info 
)
MagickExport MagickBooleanType DrawPrimitive ( Image image,
const DrawInfo draw_info,
const PrimitiveInfo primitive_info 
)

References AcquireAuthenticCacheView(), AcquireImageInfo(), _DrawInfo::affine, AnnotateImage(), _MagickPixelPacket::blue, _PixelPacket::blue, _DrawInfo::border_color, _DrawInfo::clipping_mask, CloneDrawInfo(), CloneString(), _PrimitiveInfo::closed_subpath, ColorPrimitive, _Image::colorspace, _Image::columns, _DrawInfo::compliance, _DrawInfo::compose, _DrawInfo::composite_mask, CompositeImage(), ConstrainCoordinate(), CopyMagickString(), _DrawInfo::dash_pattern, _Image::debug, DefaultChannels, DestroyCacheView(), DestroyDrawInfo(), DestroyImage(), DestroyImageInfo(), DestroyImageList(), DrawAffineImage(), DrawDashPolygon(), DrawEvent, DrawPolygonPrimitive(), DrawStrokePolygon(), _Image::exception, ExpandAffine(), _ImageInfo::filename, _DrawInfo::fill, FillToBorderMethod, _Image::filter, FloodfillMethod, FloodfillPaintImage(), FormatLocaleString(), _DrawInfo::geometry, GetCacheViewAuthenticPixels(), GetFillColor(), GetMagickModule, GetOneCacheViewVirtualPixel(), GetOneVirtualMagickPixel(), _DrawInfo::gravity, _Image::gravity, _MagickPixelPacket::green, _PixelPacket::green, ImagePrimitive, _Image::interpolate, IsColorSimilar(), IsEventLogging(), IsGrayColorspace(), IsPixelGray(), _DrawInfo::linecap, _DrawInfo::linejoin, LocaleNCompare(), LogMagickEvent(), LogPrimitiveInfo(), magick_restrict, MagickCompositeOver(), MagickEpsilon, MagickFalse, MagickPathExtent, MagickTrue, _Image::matte, MattePrimitive, MaxTextExtent, _PrimitiveInfo::method, _PixelPacket::opacity, _DrawInfo::opacity, OpacityChannel, OpaqueAlphaChannel, OpaqueOpacity, OverCompositeOp, ParseGravityGeometry(), _PrimitiveInfo::point, PointMethod, PointPrimitive, _PrimitiveInfo::primitive, ReadImage(), ReadInlineImage(), _MagickPixelPacket::red, _PixelPacket::red, RemoveFirstImageFromList(), ReplaceMethod, ResetMethod, RoundCap, RoundJoin, _Image::rows, _AffineMatrix::rx, _AffineMatrix::ry, SaneStrokeWidth(), SetGeometry(), SetImageAlphaChannel(), SetImageClipMask(), SetImageColorspace(), SetImageMask(), SetImageOpacity(), SetImageProgressMonitor(), SetPixelOpacity, SrcOverCompositeOp, sRGBColorspace, _DrawInfo::stroke, _DrawInfo::stroke_pattern, _DrawInfo::stroke_width, SVGCompliance, _AffineMatrix::sx, _AffineMatrix::sy, SyncCacheViewAuthenticPixels(), _DrawInfo::text, _PrimitiveInfo::text, TextPrimitive, TransformImage(), TransparentOpacity, _AffineMatrix::tx, _AffineMatrix::ty, UndefinedPrimitive, _RectangleInfo::x, _PointInfo::x, _RectangleInfo::y, and _PointInfo::y.

Referenced by DrawBoundingRectangles(), and RenderMVGContent().

static MagickBooleanType DrawRoundLinecap ( Image image,
const DrawInfo draw_info,
const PrimitiveInfo primitive_info 
)
static
MagickExport void GetDrawInfo ( const ImageInfo image_info,
DrawInfo draw_info 
)

References AcquireExceptionInfo(), AcquireString(), _DrawInfo::affine, _ImageInfo::antialias, _DrawInfo::border_color, _ImageInfo::border_color, ButtCap, _DrawInfo::clip_path, CloneImageInfo(), CloneString(), _DrawInfo::compose, _DrawInfo::debug, _DrawInfo::decorate, _DrawInfo::density, _ImageInfo::density, DestroyExceptionInfo(), DestroyImageInfo(), _DrawInfo::direction, _DrawInfo::encoding, EvenOddRule, _DrawInfo::family, _DrawInfo::fill, _DrawInfo::fill_opacity, _DrawInfo::fill_rule, _DrawInfo::font, _ImageInfo::font, GetAffineMatrix(), GetImageOption(), GetMagickModule, _DrawInfo::gravity, _DrawInfo::interline_spacing, _DrawInfo::interword_spacing, IsEventLogging(), _DrawInfo::kerning, _DrawInfo::linecap, _DrawInfo::linejoin, LogMagickEvent(), MagickCoreSignature, MagickDirectionOptions, MagickEpsilon, MagickFalse, MagickGravityOptions, MagickStyleOptions, MagickTrue, MagickWeightOptions, MiterJoin, _DrawInfo::miterlimit, NoDecoration, _PixelPacket::opacity, _DrawInfo::opacity, OpaqueOpacity, OverCompositeOp, ParseCommandOption(), _DrawInfo::pointsize, _ImageInfo::pointsize, QueryColorDatabase(), _DrawInfo::render, _DrawInfo::server_name, _ImageInfo::server_name, _DrawInfo::signature, StringToDouble(), StringToUnsignedLong(), _DrawInfo::stroke, _DrawInfo::stroke_antialias, _DrawInfo::stroke_opacity, _DrawInfo::stroke_width, _DrawInfo::style, _DrawInfo::text_antialias, TraceEvent, TransparentOpacity, UndefinedDirection, _DrawInfo::undercolor, and _DrawInfo::weight.

Referenced by AcquireDrawInfo(), and CloneDrawInfo().

static MagickBooleanType IsPoint ( const char *  point)
inlinestatic
MagickExport int MVGMacroCompare ( const void *  target,
const void *  source 
)

Referenced by GetMVGMacros().

static double Permutate ( const ssize_t  n,
const ssize_t  k 
)
inlinestatic

Referenced by TraceBezier().

static MagickBooleanType RenderMVGContent ( Image image,
const DrawInfo draw_info,
const size_t  depth 
)

References AcquireMagickMemory(), AcquireQuantumMemory(), AcquireString(), _DrawInfo::affine, _DrawInfo::align, ArcPrimitive, BezierPrimitive, BezierQuantum, _DrawInfo::bounds, CheckPrimitiveExtent(), CirclePrimitive, ClampToQuantum(), _DrawInfo::clip_units, _DrawInfo::clipping_mask, CloneDrawInfo(), CloneString(), _PrimitiveInfo::closed_subpath, ColorPrimitive, _Image::columns, _DrawInfo::compliance, _DrawInfo::compose, _DrawInfo::composite_mask, ConcatenateString(), _PrimitiveInfo::coordinates, CopyMagickString(), _DrawInfo::dash_offset, _DrawInfo::dash_pattern, _Image::debug, _DrawInfo::decorate, DegreesToRadians(), DestroyDrawInfo(), DestroyImage(), DestroySplayTree(), DestroyString(), DirectClass, _DrawInfo::direction, DrawClipPath(), DrawClippingMask(), DrawCompositeMask(), DrawError, DrawEvent, DrawPatternPath(), DrawPrimitive(), EllipsePrimitive, _MVGInfo::exception, _Image::exception, _MVGInfo::extent, _Image::filename, FileToString(), _DrawInfo::fill, _DrawInfo::fill_opacity, _DrawInfo::fill_rule, FloodfillMethod, FormatLocaleString(), GetAffineMatrix(), GetImageArtifact(), GetMagickModule, GetMVGMacros(), GetNextToken(), GetTypeMetrics(), GetValueFromSplayTree(), _DrawInfo::gradient, GradientImage(), _DrawInfo::gravity, _RectangleInfo::height, ImagePrimitive, _DrawInfo::interline_spacing, _DrawInfo::interword_spacing, IsPoint(), _DrawInfo::kerning, LinearGradient, _DrawInfo::linecap, _DrawInfo::linejoin, LinePrimitive, LocaleCompare(), LogMagickEvent(), MagickAlignOptions, MagickClipPathOptions, MagickComplianceOptions, MagickComposeOptions, MagickCoreSignature, MagickDecorateOptions, MagickDirectionOptions, MagickEpsilon, MagickFalse, MagickFillRuleOptions, MagickGravityOptions, MagickLineCapOptions, MagickLineJoinOptions, MagickMax, MagickMaxRecursionDepth, MagickMethodOptions, MagickMin, MagickPathExtent, MagickPI, MagickStretchOptions, MagickStyleOptions, MagickTrue, MagickWeightOptions, _Image::matte, MattePrimitive, MaxTextExtent, _PrimitiveInfo::method, _DrawInfo::miterlimit, ObjectBoundingBox, _MVGInfo::offset, _PixelPacket::opacity, _DrawInfo::opacity, OpaqueAlphaChannel, OpaqueOpacity, PadSpread, _Image::page, ParseCommandOption(), PathPrimitive, _MVGInfo::point, _PrimitiveInfo::point, PointPrimitive, _DrawInfo::pointsize, PolygonPrimitive, PolylinePrimitive, _DrawInfo::primitive, _PrimitiveInfo::primitive, _MVGInfo::primitive_info, PrimitiveExtentPad, QuantumRange, QueryColorDatabase(), RadialGradient, RectanglePrimitive, RelinquishMagickMemory(), _DrawInfo::render, RenderImageTag, ResizeQuantumMemory(), ResourceLimitError, ResourceLimitFatalError, RoundRectanglePrimitive, _Image::rows, _AffineMatrix::rx, _AffineMatrix::ry, SetImageAlphaChannel(), SetImageArtifact(), SetImageClipMask(), SetImageMask(), SetImageProgress(), SetImageStorageClass(), _Image::signature, _DrawInfo::signature, _DrawInfo::stretch, StringToDouble(), StringToLong(), StringToUnsignedLong(), _DrawInfo::stroke, _DrawInfo::stroke_antialias, _DrawInfo::stroke_opacity, _DrawInfo::stroke_width, _DrawInfo::style, SVGCompliance, _AffineMatrix::sx, _AffineMatrix::sy, _DrawInfo::text, _PrimitiveInfo::text, _DrawInfo::text_antialias, TextPrimitive, ThrowBinaryImageException, ThrowFatalException, ThrowMagickException(), ThrowPointExpectedException, TraceArc(), TraceBezier(), TraceCircle(), TraceEllipse(), TraceEvent, TraceLine(), TracePath(), TracePoint(), TraceRectangle(), TraceRoundRectangle(), TransparentOpacity, _AffineMatrix::tx, _AffineMatrix::ty, _GradientInfo::type, UndefinedPrimitive, _DrawInfo::viewbox, _DrawInfo::weight, _RectangleInfo::width, _TypeMetric::width, _RectangleInfo::x, _PointInfo::x, _SegmentInfo::x1, _SegmentInfo::x2, _RectangleInfo::y, _PointInfo::y, _SegmentInfo::y1, and _SegmentInfo::y2.

Referenced by DrawClippingMask(), DrawCompositeMask(), DrawImage(), and DrawPatternPath().

static void ReversePoints ( PointInfo points,
const size_t  number_points 
)
static

Referenced by ConvertPathToPolygon().

static double SaneStrokeWidth ( const Image image,
const DrawInfo draw_info 
)
inlinestatic
static MagickBooleanType TraceArc ( MVGInfo mvg_info,
const PointInfo  start,
const PointInfo  end,
const PointInfo  degrees 
)
static MagickBooleanType TraceCircle ( MVGInfo mvg_info,
const PointInfo  start,
const PointInfo  end 
)
static MagickBooleanType TraceSquareLinecap ( PrimitiveInfo primitive_info,
const size_t  number_vertices,
const double  offset 
)