skia2/gn
Michael Ludwig 05a777d442 Define coord space tagged geometry for image filters v2.
This is an alternative approach to https://skia-review.googlesource.com/c/skia/+/234896

It inverts the templates and coordinate spaces, so that each coordinate space is
defined by a struct that accepts the SkIRect/etc. type as an argument. For parameter
space and device space, the only exposed functionality is holding on to the coordinates
and moving into and out of the layer space (using the Mapping type, which now encapsulates
the definition of parameter, layer, and device space for a given CTM).

The LayerSpace struct has specialized definitions for each of the 6 key geometric types,
exposes accessors/mutators and operations like join/intersect that work on appropriate
layer-space geometry.

FilterResult and Context have been updated to use these new types, although they no
longer take a Usage enum. If this strategy works, FilterResult will be updated to have
more utilities to operate and read from its image in layer-space so there won't be a need
to have the image space (and the usage enum to differentiate between different image
spaces).

To further reinforce the differences between getInputBounds() and getOutputBounds() (which
previously used Usage to do this), they now accept/return values in device and parameter
space. This is no different than what SkCanvas would have done before calling the old
functions, but now that work is owned by SkImageFilter (seems like a good thing), and
achieves the same reinforcement.

Change-Id: I8bebb9fadf6c8f2bd51fa863b2d6f2e4a33dd08b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244515
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-04 16:40:00 +00:00
..
toolchain [gn] Add pool for dsymutil 2019-09-03 14:08:09 +00:00
__init__.py Make gn directory importable in python 2017-03-20 17:40:30 +00:00
ar.py GN: quiet alink spam on Mac 2016-11-07 14:19:32 +00:00
bench.gni Add bench for SkDDLRecorder detach 2019-09-12 17:09:08 +00:00
BUILD.gn Compile CanvasKit without -fPIC, for latest emscripten compatibility. 2019-09-24 20:19:02 +00:00
BUILDCONFIG.gn remove MSRTC bots and GN support 2019-08-26 17:49:28 +00:00
call.py Add gn plumbing for mdbviz tool 2017-09-05 13:57:44 +00:00
checkdir.py Bundle resources and skps directories into iOS app. 2017-11-29 17:06:25 +00:00
codesign_ios.py Use CIPD package for iOS provisioning profile. 2019-09-30 15:47:19 +00:00
compile_ib_files.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
compile_processors.py moved files generated from .fp files into generated/ directories 2019-04-10 18:02:02 +00:00
core.gni Define coord space tagged geometry for image filters v2. 2019-10-04 16:40:00 +00:00
cp.py GN: get Angle compiling on Windows. 2016-10-17 16:16:16 +00:00
create_sksl_enums.py Create sksl_enums.inc with UNIX line endings (even on Windows) 2018-02-09 15:13:11 +00:00
effects_imagefilters.gni Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
effects.gni Add SkShaderMaskFilter.h to public header list 2019-06-21 14:40:25 +00:00
find_headers.py rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
find_ios_sysroot.py Add iOS simulator support in GN. 2017-03-13 17:21:43 +00:00
find_msvc.py documentation/build, BUILDCONFIG: Visual Studio Build Tools 2019 2019-07-12 14:17:16 +00:00
flutter_defines.gni Define SK_GL in Flutter. 2019-05-28 13:13:46 +00:00
fuchsia_defines.gni remove legacy hinting-enum guards 2018-11-28 20:15:03 +00:00
gen_plist_ios.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
gm.gni ccpr: Don't assign inverse fill types to fan tessellations 2019-09-24 02:44:17 +00:00
gn_meta_sln.py Decorate project names with their relative path in the meta SLN 2018-06-01 19:22:08 +00:00
gn_to_bp_utils.py SkQP: split make_apk script into create_apk and make_apk 2019-08-20 15:08:03 +00:00
gn_to_bp.py [Android] Use wildcard for data associated with skia_nanobench 2019-10-01 19:07:12 +00:00
gn_to_cmake.py Add project declaration for CMake 2019-09-25 17:08:26 +00:00
gpu.gni Reland "Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"" 2019-10-03 19:14:22 +00:00
highest_version_dir.py Filter Windows SDK and Compiler directories 2017-12-11 20:26:08 +00:00
ios.gni gn: split out iOS templates to gn/ios.gni 2019-09-16 18:49:24 +00:00
is_clang.py GN: match shell behavior for cc and cxx in is_clang.py 2016-09-27 09:29:24 -07:00
make_gm_gni.py GMs: re-sort gni, script to regenerate gni, file name convention 2019-05-02 20:08:37 +00:00
opts.gni clean up SkBitmapProcState::platformProcs() 2018-12-03 21:24:31 +00:00
pdf.gni SkPDF: move type1 font code into single file 2019-04-18 21:01:58 +00:00
push_to_android.py skia_android_serial = "auto" 2017-01-12 16:30:17 +00:00
run_sksllex.py Revert "Revert "SkSL now supports null child processors"" 2019-02-22 17:50:30 +00:00
samples.gni Avoid use of SkMatrixImageFilter to handle CTM for backdrop filtering 2019-09-05 16:35:18 +00:00
shared_sources.gni remove empty skia_for_chromium_defines 2019-01-17 17:37:01 +00:00
skia.gni Remove old SkSL JIT and cleanup include files a bit 2019-10-03 18:00:40 +00:00
sksl.gni Remove old SkSL JIT and cleanup include files a bit 2019-10-03 18:00:40 +00:00
tests.gni Remove old SkSL JIT and cleanup include files a bit 2019-10-03 18:00:40 +00:00
utils.gni Use COM_DECLSPEC_NOTHROW STDMETHODIMP 2019-08-14 17:14:03 +00:00
xps.gni GN: split out skia_*_public from skia_*_sources 2019-03-15 18:29:19 +00:00