skia2/tools
caryclark 55888e4417 pathops coincidence and security rewrite
Most changes stem from working on an examples bracketed
by #if DEBUG_UNDER_DEVELOPMENT  // tiger
These exposed many problems with coincident curves,
as well as errors throughout the code.

Fixing these errors also fixed a number of fuzzer-inspired
bug reports.

* Line/Curve Intersections
Check to see if the end of the line nearly intersects
the curve. This was a FIXME in the old code.

* Performance
Use a central chunk allocator.
Plumb the allocator into the global variable state
so that it can be shared. (Note that 'SkGlobalState'
is allocated on the stack and is visible to children
functions but not other threads.)

* Refactor
Let SkOpAngle grow up from a structure to a class.
Let SkCoincidentSpans grow up from a structure to a class.
Rename enum Alias to AliasMatch.

* Coincidence Rewrite
Add more debugging to coincidence detection.
Parallel debugging routines have read-only logic to report
the current coincidence state so that steps through the
logic can expose whether things got better or worse.

More functions can error-out and cause the pathops
engine to non-destructively exit.

* Accuracy
Remove code that adjusted point locations. Instead,
offset the curve part so that sorted curves all use
the same origin.
Reduce the size (and influence) of magic numbers.

* Testing
The debug suite with verify and the full release suite
./out/Debug/pathops_unittest -v -V
./out/Release/pathops_unittest -v -V -x
expose one error. That error is captured as cubics_d3.
This error exists in the checked in code as well.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128633003

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128633003

Review-Url: https://codereview.chromium.org/2128633003
2016-07-18 10:01:36 -07:00
..
android drawTextRSXform 2016-07-07 12:47:17 -07:00
copyright
debugger Added the framework for having canvas/recorder/picture record depth_set's. 2016-07-13 14:05:28 -07:00
fiddle tools/fiddle: remove unused fiddler.go 2016-07-11 16:26:26 -07:00
flags Fix Mac clang linker 2016-06-21 09:44:29 -07:00
gpu Fix caching of sample locations 2016-07-06 09:59:43 -07:00
lua Add filename to gradient scrape 2016-07-18 08:20:06 -07:00
skiaserve Fix png encoding in skia debugger 2016-06-30 10:06:51 -07:00
skp Add catapult to RecreateSKPs bot's PYTHONPATH 2016-02-27 10:04:57 -08:00
timer SkTime::GetNSecs() 2015-10-23 07:02:06 -07:00
viewer Add capability for SkColorXform to output half floats 2016-07-15 13:54:38 -07:00
__init__.py
add_codereview_message.py
AndroidSkDebugToStdOut.cpp
BigPathBench.inc Factor out VisualBench timing code into a helper class 2015-10-05 07:23:30 -07:00
build_command_buffer.py build_command_buffer: Don't 'git checkout' when --no-sync 2016-04-25 11:22:41 -07:00
BUILD_simulator.py Fix Google3 fonts. Use fontconfig rather than custom_directory_factory. Add Google3 font caching. 2015-12-01 11:12:05 -08:00
buildbot_spec.json Temporarily change GalaxyS3 product.board 2016-05-26 11:21:02 -07:00
buildbot_spec.py Buildbot spec: Add device_type for Android One 2016-06-20 13:04:25 -07:00
builder_name_schema.json
builder_name_schema.py
chrome_fuzz.cpp Revert of Delete SkFlattenable::Type (patchset #2 id:20001 of https://codereview.chromium.org/1834303003/ ) 2016-04-04 14:57:19 -07:00
compare_codereview.py
coverage.sh
CrashHandler.cpp SkLeanWindows.h: #include "Windows.h" fewer places 2016-06-07 17:21:10 -07:00
CrashHandler.h
create_test_font.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
dm_flags.json Try blacklisting RAW images on Nexus 9 2016-07-13 08:03:35 -07:00
dm_flags.py Try blacklisting RAW images on Nexus 9 2016-07-13 08:03:35 -07:00
doxygen_footer.txt
dump_record.cpp deferred canvas 2016-07-08 08:43:28 -07:00
DumpRecord.cpp deferred canvas 2016-07-08 08:43:28 -07:00
DumpRecord.h
embed_resources.py
find_run_binary.py
fix_pythonpath.py
gcov_shim
gen_bench_expectations_from_codereview.py
generate_fir_coeff.py
generate_includes_cpp.py
generate_vk_interface.sh Add vulkan files into skia repo. This is an incomplete backend with only partial functionality at this time. 2016-02-22 09:56:40 -05:00
get_current_monitor_profile.cpp Monitor profile tool, now with Windows support, too! 2016-07-12 15:06:25 -07:00
get_images_from_skps.cpp Treat kIncompleteInput as successes in get_images_from_skps 2016-04-27 07:31:23 -07:00
git-skia-verify
git-sync-deps tools/git-sync-deps: fix error in git syntax for changing origin 2016-01-28 09:12:52 -08:00
gpuveto.cpp SkPictureGpuAnalyzer 2016-05-13 11:40:07 -07:00
gyp GN 2016-06-23 10:29:30 -07:00
imgblur.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
imgslice.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
install_dependencies.sh
iOSShell.cpp Make SkGraphics::Term a no-op, stop calling it. 2015-09-09 07:35:42 -07:00
iOSShell.h
jsondiff.py
llvm_coverage_build
llvm_coverage_run.py
llvm_coverage.sh
lsan.supp
merge_static_libs.py
milestone.py SkPDF: milestone in metadata, also SkMilestone.h 2016-03-29 09:09:29 -07:00
mirror-dev.sh
misc_utils.py
monobench.cpp Enable SkTaskGroup threading in monobench. 2016-07-12 14:50:28 -07:00
nanobench_flags.json Turn back on nanobench on Debug trybots. 2016-07-13 09:44:18 -07:00
nanobench_flags.py Turn back on nanobench on Debug trybots. 2016-07-13 09:44:18 -07:00
OverwriteLine.h
parse_llvm_coverage.py Walk through files in parse_llvm_coverage.py instead of using 'git ls-files' 2016-04-18 04:18:56 -07:00
pathops_sorter.htm pathops coincidence and security rewrite 2016-07-18 10:01:36 -07:00
pathops_visualizer.htm pathops coincidence and security rewrite 2016-07-18 10:01:36 -07:00
pdf-comparison.sh tools/pdf-comparison.sh: stop relying on /usr/bin/timeout 2016-04-27 07:44:03 -07:00
picture_utils.cpp Lots of progress on switching to SkColorSpace rather than SkColorProfileType 2016-06-16 13:03:24 -07:00
picture_utils.h Move DM png code to picture_utils, for use by other tools. 2016-04-19 09:18:11 -07:00
pinspect.cpp Repurpose Release_Developer BUILDTYPE and remove SK_DEVELOPER. 2016-04-29 06:41:35 -07:00
ProcStats.cpp
ProcStats.h
random_parse_path.cpp Add unit test to feed valid SVG sequences to make sure that 2016-02-09 10:30:22 -08:00
random_parse_path.h Add unit test to feed valid SVG sequences to make sure that 2016-02-09 10:30:22 -08:00
reformat-json.py
Resources.cpp Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
Resources.h Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
retrieve_from_googlesource.py
sanitize_source_files.py
sk_tool_utils_flags.h
sk_tool_utils_font.cpp SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
sk_tool_utils.cpp Implement support for rendering color emoji on Windows 2016-06-01 08:31:28 -07:00
sk_tool_utils.h SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
skdiff_html.cpp
skdiff_html.h
skdiff_image.cpp Remove uses of SkImageDecoder from skdiff 2016-03-17 07:17:54 -07:00
skdiff_main.cpp Create output directory in skdiff 2016-04-05 11:37:49 -07:00
skdiff_utils.cpp Remove uses of SkImageDecoder from skdiff 2016-03-17 07:17:54 -07:00
skdiff_utils.h Remove uses of SkImageDecoder from skdiff 2016-03-17 07:17:54 -07:00
skdiff.cpp
skdiff.h Move SkTDArray to private. 2016-02-18 08:53:33 -08:00
skhello.cpp documentation: SkDocument::MakePDF() 2016-05-03 12:10:04 -07:00
skpinfo.cpp Make skpinfo more human friendly 2016-04-19 09:29:01 -07:00
skpmaker.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SkShaper.cpp tools/SkShaper: SkStream->blob 2016-07-12 09:17:43 -07:00
SkShaper.h tools/SkShaper: factor shaping out of using_skia_and_harfbuzz 2016-07-11 14:30:39 -07:00
Stats.h Consolidate SK_CRASH and sk_throw into SK_ABORT 2016-01-29 08:51:04 -08:00
test_all.py
test_font_data_chars.cpp
test_font_data.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
test_font_index.cpp SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
test_font_monospace.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
test_font_sans_serif.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
test_font_serif.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
test_gpuveto.py
test_pdfs.py
ThermalManager.cpp enable ThermalManager on Android 2016-02-11 11:42:19 -08:00
ThermalManager.h Move SkTArray to include/private. 2016-02-17 13:13:44 -08:00
tsan.supp Clean up SkFontConfigInterface implementation. 2016-05-02 11:54:13 -07:00
ubsan.supp
UrlDataManager.cpp Create image cache for use by json canvas 2016-02-08 07:08:21 -08:00
UrlDataManager.h Create image cache for use by json canvas 2016-02-08 07:08:21 -08:00
using_skia_and_harfbuzz.cpp tools/SkShaper: factor shaping out of using_skia_and_harfbuzz 2016-07-11 14:30:39 -07:00
valgrind.supp Suppress jpeg valgrind errors 2016-01-27 12:05:27 -08:00
visualize_color_gamut.cpp Add interesting features to visualize_color_gamut 2016-05-27 14:01:02 -07:00
whitelist_typefaces.cpp Suppress embedding fonts when the skp's fonts match the OS fonts. 2015-08-31 09:22:38 -07:00
win_dbghelp.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
win_dbghelp.h
win_lcid.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
xsan_build MSAN: build libc++ with MSAN, link to it. 2016-02-16 14:03:15 -08:00
xsan.blacklist Remove size check from SkCodec 2016-01-13 10:54:20 -08:00