skia2/gm/crbug_908646.cpp
Stephen White 0c72ed3057 GrTessellator: fix for even/odd fill type and path holes.
When extracting contours for the even/odd fill type, connected holes
in the interior of a shape don't get rendered correctly.

The fix is to extract the subcontours separately from the outer contour.
To do this, we abort contour extraction the first time we re-encounter
the starting vertex.  This causes the hole to be extracted as a
separate contour.

Bug: 908646
Change-Id: I047b77c74605987c40c12a228fd2898c9aa74e55
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220776
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-06-13 21:09:45 +00:00

30 lines
734 B
C++

/*
* Copyright 2019 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "gm/gm.h"
#include "include/core/SkCanvas.h"
#include "include/core/SkPaint.h"
#include "include/core/SkPath.h"
DEF_SIMPLE_GM(crbug_908646, canvas, 300, 300) {
SkPaint paint;
paint.setAntiAlias(true);
SkPath path;
path.setFillType(SkPath::kEvenOdd_FillType);
path.moveTo(50, 50);
path.lineTo(50, 300);
path.lineTo(250, 300);
path.lineTo(250, 50);
path.moveTo(200, 100);
path.lineTo(100, 100);
path.lineTo(150, 200);
path.moveTo(100, 250);
path.lineTo(150, 150);
path.lineTo(200, 250);
canvas->drawPath(path, paint);
}