56 (*to)->pathdata.Points = heap_alloc_zero(
from->pathdata.Count *
sizeof(
PointF));
57 (*to)->pathdata.Types = heap_alloc_zero(
from->pathdata.Count);
59 if((!(*to)->pathdata.Types || !(*to)->pathdata.Points) && (*to)->pathdata.Count){
66 memcpy((*to)->pathdata.Points,
from->pathdata.Points,
from->pathdata.Count
68 memcpy((*to)->pathdata.Types,
from->pathdata.Types,
from->pathdata.Count);
70 TRACE(
"<-- %p\n", *to);
80 cap->pathdata.Points = heap_alloc_zero(pathdata->
Count *
sizeof(
PointF));
81 cap->pathdata.Types = heap_alloc_zero(pathdata->
Count);
83 if ((!
cap->pathdata.Types || !
cap->pathdata.Points) && pathdata->
Count)
96 cap->pathdata.Count = pathdata->
Count;
98 cap->inset = base_inset;
114 TRACE(
"%p %p %d %f %p\n", fillPath, strokePath, baseCap, baseInset, customCap);
116 if(!customCap || !(fillPath || strokePath))
134 TRACE(
"<-- %p\n", *customCap);
141 TRACE(
"(%p)\n", customCap);
156 TRACE(
"(%p, %p)\n", customCap, lineJoin);
158 if(!customCap || !lineJoin)
161 *lineJoin = customCap->
join;
169 TRACE(
"(%p, %p)\n", custom, widthScale);
171 if(!custom || !widthScale)
174 *widthScale = custom->
scale;
190 FIXME(
"not implemented\n");
203 FIXME(
"not implemented\n");
211 TRACE(
"(%p, %p)\n", custom, inset);
213 if(!custom || !inset)
216 *inset = custom->
inset;
226 TRACE(
"(%p,%0.2f)\n", custom, inset);
229 FIXME(
"not implemented\n");
262 TRACE(
"(%p, %p)\n", customCap, baseCap);
264 if(!customCap || !baseCap)
267 *baseCap = customCap->
cap;
276 if(!customCap || !
type)
285 static const BYTE types_filled[] =
289 static const BYTE types_unfilled[] =
295 assert(
cap->cap.pathdata.Count == 3 ||
cap->cap.pathdata.Count == 4);
300 memcpy(
cap->cap.pathdata.Types, types_filled,
sizeof(types_filled));
301 cap->cap.pathdata.Count = 4;
313 memcpy(
cap->cap.pathdata.Types, types_unfilled,
sizeof(types_unfilled));
314 cap->cap.pathdata.Count = 3;
323 if (
cap->width == 0.0)
324 cap->cap.inset = 0.0;
326 cap->cap.inset =
cap->height /
cap->width;
340 *
cap = heap_alloc_zero(
sizeof(**
cap));
357 (*cap)->width =
width;
358 (*cap)->middle_inset = 0.0;
393 *middle =
cap->middle_inset;
439 cap->middle_inset = middle;
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
static BOOL heap_free(void *mem)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap *customCap, GpLineCap *baseCap)
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap *cap, BOOL *fill)
GpStatus WINGDIPAPI GdipSetCustomLineCapWidthScale(GpCustomLineCap *custom, REAL width)
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath *fillPath, GpPath *strokePath, GpLineCap baseCap, REAL baseInset, GpCustomLineCap **customCap)
GpStatus WINGDIPAPI GdipSetCustomLineCapBaseInset(GpCustomLineCap *custom, REAL inset)
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap *custom, REAL *inset)
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap *cap, REAL height)
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap *cap, BOOL fill)
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap *cap, REAL *height)
GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap *customCap, GpLineJoin *lineJoin)
GpStatus WINGDIPAPI GdipSetCustomLineCapBaseCap(GpCustomLineCap *custom, GpLineCap base)
static void arrowcap_update_path(GpAdjustableArrowCap *cap)
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap *cap, REAL width)
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap *custom, GpLineCap start, GpLineCap end)
GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap *custom, REAL *widthScale)
GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap *customCap)
GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap *from, GpCustomLineCap **to)
GpStatus WINGDIPAPI GdipGetCustomLineCapType(GpCustomLineCap *customCap, CustomLineCapType *type)
static GpStatus init_custom_linecap(GpCustomLineCap *cap, GpPathData *pathdata, BOOL fill, GpLineCap basecap, REAL base_inset)
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap *cap, REAL *width)
GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL height, REAL width, BOOL fill, GpAdjustableArrowCap **cap)
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap *custom, GpLineJoin join)
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap *cap, REAL *middle)
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap *cap, REAL middle)
@ CustomLineCapTypeAdjustableArrow
@ CustomLineCapTypeDefault
@ PathPointTypeCloseSubpath
GLuint GLuint GLsizei GLenum type
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLsizei const GLfloat * points
#define memcpy(s1, s2, n)