From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/gdiplus/graphicspath.c | 84 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/dlls/gdiplus/graphicspath.c b/dlls/gdiplus/graphicspath.c index c65dc19de5b..39e1494f603 100644 --- a/dlls/gdiplus/graphicspath.c +++ b/dlls/gdiplus/graphicspath.c @@ -2015,6 +2015,48 @@ static void widen_open_figure(const GpPointF *points, int start, int end, (*last_point)->type |= PathPointTypeCloseSubpath; }
+static void widen_closed_figure(GpPath *path, int start, int end, + GpPen *pen, REAL pen_width, path_list_node_t **last_point) +{ + int i; + path_list_node_t *prev_point; + + if (end <= start || pen_width == 0.0) + return; + + /* left outline */ + prev_point = *last_point; + + widen_joint(&path->pathdata.Points[end], &path->pathdata.Points[start], + &path->pathdata.Points[start+1], pen, pen_width, last_point); + + for (i=start+1; i<end; i++) + widen_joint(&path->pathdata.Points[i-1], &path->pathdata.Points[i], + &path->pathdata.Points[i+1], pen, pen_width, last_point); + + widen_joint(&path->pathdata.Points[end-1], &path->pathdata.Points[end], + &path->pathdata.Points[start], pen, pen_width, last_point); + + prev_point->next->type = PathPointTypeStart; + (*last_point)->type |= PathPointTypeCloseSubpath; + + /* right outline */ + prev_point = *last_point; + + widen_joint(&path->pathdata.Points[start], &path->pathdata.Points[end], + &path->pathdata.Points[end-1], pen, pen_width, last_point); + + for (i=end-1; i>start; i--) + widen_joint(&path->pathdata.Points[i+1], &path->pathdata.Points[i], + &path->pathdata.Points[i-1], pen, pen_width, last_point); + + widen_joint(&path->pathdata.Points[start+1], &path->pathdata.Points[start], + &path->pathdata.Points[end], pen, pen_width, last_point); + + prev_point->next->type = PathPointTypeStart; + (*last_point)->type |= PathPointTypeCloseSubpath; +} + static void add_anchor(const GpPointF *endpoint, const GpPointF *nextpoint, REAL pen_width, GpLineCap cap, GpCustomLineCap *custom, path_list_node_t **last_point) { @@ -2129,48 +2171,6 @@ static void add_anchor(const GpPointF *endpoint, const GpPointF *nextpoint, (*last_point)->type |= PathPointTypeCloseSubpath; }
-static void widen_closed_figure(GpPath *path, int start, int end, - GpPen *pen, REAL pen_width, path_list_node_t **last_point) -{ - int i; - path_list_node_t *prev_point; - - if (end <= start || pen_width == 0.0) - return; - - /* left outline */ - prev_point = *last_point; - - widen_joint(&path->pathdata.Points[end], &path->pathdata.Points[start], - &path->pathdata.Points[start+1], pen, pen_width, last_point); - - for (i=start+1; i<end; i++) - widen_joint(&path->pathdata.Points[i-1], &path->pathdata.Points[i], - &path->pathdata.Points[i+1], pen, pen_width, last_point); - - widen_joint(&path->pathdata.Points[end-1], &path->pathdata.Points[end], - &path->pathdata.Points[start], pen, pen_width, last_point); - - prev_point->next->type = PathPointTypeStart; - (*last_point)->type |= PathPointTypeCloseSubpath; - - /* right outline */ - prev_point = *last_point; - - widen_joint(&path->pathdata.Points[start], &path->pathdata.Points[end], - &path->pathdata.Points[end-1], pen, pen_width, last_point); - - for (i=end-1; i>start; i--) - widen_joint(&path->pathdata.Points[i+1], &path->pathdata.Points[i], - &path->pathdata.Points[i-1], pen, pen_width, last_point); - - widen_joint(&path->pathdata.Points[start+1], &path->pathdata.Points[start], - &path->pathdata.Points[end], pen, pen_width, last_point); - - prev_point->next->type = PathPointTypeStart; - (*last_point)->type |= PathPointTypeCloseSubpath; -} - static void widen_dashed_figure(GpPath *path, int start, int end, int closed, GpPen *pen, REAL pen_width, path_list_node_t **last_point) {