Lines Matching refs:border

52 static void _growBorder(SwStrokeBorder* border, uint32_t newPts)  in _growBorder()  argument
54 auto maxOld = border->maxPts; in _growBorder()
55 auto maxNew = border->ptsCnt + newPts; in _growBorder()
64 border->pts = static_cast<SwPoint*>(realloc(border->pts, maxCur * sizeof(SwPoint))); in _growBorder()
65 border->tags = static_cast<uint8_t*>(realloc(border->tags, maxCur * sizeof(uint8_t))); in _growBorder()
66 border->maxPts = maxCur; in _growBorder()
70 static void _borderClose(SwStrokeBorder* border, bool reverse) in _borderClose() argument
72 auto start = border->start; in _borderClose()
73 auto count = border->ptsCnt; in _borderClose()
77 border->ptsCnt = start; in _borderClose()
81 border->ptsCnt = --count; in _borderClose()
82 border->pts[start] = border->pts[count]; in _borderClose()
86 auto pt1 = border->pts + start + 1; in _borderClose()
87 auto pt2 = border->pts + count - 1; in _borderClose()
98 auto tag1 = border->tags + start + 1; in _borderClose()
99 auto tag2 = border->tags + count - 1; in _borderClose()
110 border->tags[start] |= SW_STROKE_TAG_BEGIN; in _borderClose()
111 border->tags[count - 1] |= SW_STROKE_TAG_END; in _borderClose()
114 border->start = -1; in _borderClose()
115 border->movable = false; in _borderClose()
119 static void _borderCubicTo(SwStrokeBorder* border, const SwPoint& ctrl1, const SwPoint& ctrl2, cons… in _borderCubicTo() argument
121 _growBorder(border, 3); in _borderCubicTo()
123 auto pt = border->pts + border->ptsCnt; in _borderCubicTo()
124 auto tag = border->tags + border->ptsCnt; in _borderCubicTo()
134 border->ptsCnt += 3; in _borderCubicTo()
135 border->movable = false; in _borderCubicTo()
139 static void _borderArcTo(SwStrokeBorder* border, const SwPoint& center, SwFixed radius, SwFixed ang… in _borderArcTo() argument
182 _borderCubicTo(border, a2, b2, b); in _borderArcTo()
192 static void _borderLineTo(SwStrokeBorder* border, const SwPoint& to, bool movable) in _borderLineTo() argument
194 if (border->movable) { in _borderLineTo()
196 border->pts[border->ptsCnt - 1] = to; in _borderLineTo()
199 if (border->ptsCnt > 0 && (border->pts[border->ptsCnt - 1] - to).small()) return; in _borderLineTo()
201 _growBorder(border, 1); in _borderLineTo()
202 border->pts[border->ptsCnt] = to; in _borderLineTo()
203 border->tags[border->ptsCnt] = SW_STROKE_TAG_POINT; in _borderLineTo()
204 border->ptsCnt += 1; in _borderLineTo()
207 border->movable = movable; in _borderLineTo()
211 static void _borderMoveTo(SwStrokeBorder* border, SwPoint& to) in _borderMoveTo() argument
214 if (border->start >= 0) _borderClose(border, false); in _borderMoveTo()
216 border->start = border->ptsCnt; in _borderMoveTo()
217 border->movable = false; in _borderMoveTo()
219 _borderLineTo(border, to, false); in _borderMoveTo()
225 auto border = stroke.borders + side; in _arcTo() local
230 _borderArcTo(border, stroke.center, stroke.width, stroke.angleIn + rotate, total, stroke); in _arcTo()
231 border->movable = false; in _arcTo()
237 auto border = stroke.borders + side; in _outside() local
271 border->movable = false; in _outside()
272 _borderLineTo(border, delta, false); in _outside()
280 _borderLineTo(border, delta, false); in _outside()
289 _borderLineTo(border, delta, false); in _outside()
298 auto border = stroke.borders + side; in _inside() local
305 if (border->movable && lineLength > 0) { in _inside()
318 border->movable = false; in _inside()
329 _borderLineTo(border, delta, false); in _inside()
361 auto border = stroke.borders; in _firstSubPath() local
362 _borderMoveTo(border, pt); in _firstSubPath()
365 ++border; in _firstSubPath()
366 _borderMoveTo(border, pt); in _firstSubPath()
408 auto border = stroke.borders; in _lineTo() local
415 _borderLineTo(border, pt, true); in _lineTo()
421 ++border; in _lineTo()
499 auto border = stroke.borders; in _cubicTo() local
525 auto _start = border->pts[border->ptsCnt - 1]; in _cubicTo()
545 border->movable = false; in _cubicTo()
546 _borderLineTo(border, delta, false); in _cubicTo()
547 _borderLineTo(border, _end, false); in _cubicTo()
548 _borderCubicTo(border, _ctrl2, _ctrl1, _start); in _cubicTo()
551 _borderLineTo(border, _end, false); in _cubicTo()
554 ++border; in _cubicTo()
558 _borderCubicTo(border, _ctrl1, _ctrl2, _end); in _cubicTo()
560 ++border; in _cubicTo()
573 auto border = stroke.borders + side; in _addCap() local
584 _borderLineTo(border, delta, false); in _addCap()
595 _borderLineTo(border, delta, false); in _addCap()
606 auto border = stroke.borders + side; in _addCap() local
613 _borderLineTo(border, delta, false); in _addCap()
620 _borderLineTo(border, delta, false); in _addCap()
737 static void _getCounts(SwStrokeBorder* border, uint32_t& ptsCnt, uint32_t& cntrsCnt) in _getCounts() argument
739 auto count = border->ptsCnt; in _getCounts()
740 auto tags = border->tags; in _getCounts()
775 auto border = stroke.borders + side; in _exportBorderOutline() local
776 if (border->ptsCnt == 0) return; in _exportBorderOutline()
778 memcpy(outline->pts.data + outline->pts.count, border->pts, border->ptsCnt * sizeof(SwPoint)); in _exportBorderOutline()
780 auto cnt = border->ptsCnt; in _exportBorderOutline()
781 auto src = border->tags; in _exportBorderOutline()
795 outline->pts.count += border->ptsCnt; in _exportBorderOutline()
796 outline->types.count += border->ptsCnt; in _exportBorderOutline()