0c72ed3057
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>
30 lines
734 B
C++
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);
|
|
}
|