Go to file
Stephen White e260c46bbf GrTessellator: implement straight skeleton, phase 2.
This CL implements two major changes to the AA tessellating path
renderer:

1) Fix inverted edges after stroke and simplify. Instead of detecting
   and fixing edges which invert on stroking during the stroking pass, we
   run the full simplify pass on both inner and outer contours, then
   create edge collapse events for the overlap regions. We then process
   the edge events in a priority queue and process them in order of decreasing
   alpha (this is the "edge event" part of the straight skeleton
   algorithm). By doing it after simplification, we ensure that
   there's a full-alpha intersection vertex to join the collapse edge
   to (which may have <1 alpha), so no spurious gradients appear in
   the rendered path.

2) "Pointy" vertices (defined as those which meet at an acute angle less
   than 14 degrees) are now properly bevelled off during stroking.
   This removes antialiasing artifacts which extend beyond the path
   boundary.

Some ancillary changes:

The extracted boundaries which are input to stroking have their line
equations pre-normalized, and multiplied by winding.  This simplifies
a lot of code which was performing this computation on the fly.

The workaround for the "intruding vertex" problem was removed, since the
straight skeleton now moves the intruding vertex before it can cause
problems.

Bug: 756823
Change-Id: I271ed32be6847da55273b387e8c04bbf9b512b70
Reviewed-on: https://skia-review.googlesource.com/87341
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2017-12-21 20:51:27 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench add serialprocs to MultiDocument, hide redundant methods 2017-12-21 12:36:30 +00:00
bin bin/try: No prompt for a single matching job 2017-12-11 18:32:08 +00:00
debugger Update SkSurface MakeFromBackend* factories to take an SkColorType. 2017-12-19 18:41:36 +00:00
dm make InternalOnly_ functions actually private 2017-12-20 19:32:36 +00:00
docs working on image docs 2017-12-15 16:47:08 +00:00
example Update SkSurface MakeFromBackend* factories to take an SkColorType. 2017-12-19 18:41:36 +00:00
experimental Update SkSurface MakeFromBackend* factories to take an SkColorType. 2017-12-19 18:41:36 +00:00
fuzz fuzz/FuzzCanvas: range in inclucive, not half-open 2017-12-20 16:41:04 +00:00
gm Revert "Revert "long rect dash fix with guards"" 2017-12-21 14:55:11 +00:00
gn Revert "CCPR: Initial semi-optimized vertex shader Impl" 2017-12-20 22:15:48 +00:00
include add serialprocs to MultiDocument, hide redundant methods 2017-12-21 12:36:30 +00:00
infra Switch CQ from IntelIris540 to 640 for Ubuntu bot. 2017-12-20 21:25:36 +00:00
platform_tools SkQP: better error report workflow 2017-12-20 19:23:46 +00:00
resources Fix Adobe RGB color space in Skia 2017-12-20 14:09:34 +00:00
samplecode Revert "CCPR: Initial semi-optimized vertex shader Impl" 2017-12-20 22:15:48 +00:00
site working on image docs 2017-12-15 16:47:08 +00:00
src GrTessellator: implement straight skeleton, phase 2. 2017-12-21 20:51:27 +00:00
tests GrTessellator: implement straight skeleton, phase 2. 2017-12-21 20:51:27 +00:00
third_party Update Windows clang asset 2017-12-08 16:55:10 +00:00
tools add serialprocs to MultiDocument, hide redundant methods 2017-12-21 12:36:30 +00:00
.clang-format Mark flatennable macros as block beginning/ending in .clang-format 2017-01-09 15:31:36 +00:00
.gitignore Ignore generated README.recipes.md 2017-10-26 18:07:27 +00:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS fix use of uninitialized flag in SkCodec 2017-10-09 19:17:05 +00:00
BUILD.gn Move stats code to new layer (with configurable list of timers) 2017-12-20 16:59:04 +00:00
codereview.settings Make uploading to Gerrit the default for Skia 2016-11-09 19:07:56 +00:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS Roll skia/third_party/externals/angle2/ 62fcf62ae..340b57719 (1 commit) 2017-12-21 20:51:25 +00:00
Doxyfile Make the housekeeper upload doxygen to a newer bucket 2016-10-04 13:23:57 -07:00
LICENSE BUG=skia:5602 2016-09-02 11:19:34 -07:00
OWNERS add OWNERS file 2017-12-01 19:50:19 +00:00
PRESUBMIT.py PostUploadHook needs to return something 2017-12-07 18:40:09 +00:00
public.bzl Revert "add flag to fix google3" 2017-12-21 19:25:53 +00:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
whitespace.txt Removed general bot upload permissions, whitespace change to test 2017-12-04 13:03:34 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.