6d1c0d4196
The DrawDeviceWithFilter function used to rely on SkImageFilter's applyCTMForBackdrop, which would create a new DAG and use an SkMatrixImageFilter node to account for the transformation. However, that filter is really meant to perform a transformation prior to the CTM matrix. Abusing matrix math to instead have it map the backdrop contents back into the CTM local space grossly inflated the size of the temporary images needed when under many perspective transforms. This CL instead takes over control of the CTM decomposition and draws the backdrop (src) content into a temporary layer directly, and then feeds that through the image filtering. The code is somewhat cumbersome to follow because of the combination of coordinate spaces and need to make everything relative to the top left corner of the images. When the rest of my image filter refactor is more underway, I believe that a lot of the coordinate space math and image origin accounting will be much cleaner, but the overall backdrop filtering strategy would remain similar to this new implementation. Bug: skia:9074 Change-Id: Ibd2995e81d2b308c74b2d298da5e38daa74c8677 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/239108 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
98 lines
3.5 KiB
Plaintext
98 lines
3.5 KiB
Plaintext
# Copyright 2016 Google Inc.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Things are easiest for everyone if these source paths are absolute.
|
|
_samplecode = get_path_info("../samplecode", "abspath")
|
|
|
|
samples_sources = [
|
|
"$_samplecode/PerlinPatch.cpp",
|
|
"$_samplecode/Sample.cpp",
|
|
"$_samplecode/Sample.h",
|
|
"$_samplecode/Sample2PtRadial.cpp",
|
|
"$_samplecode/SampleAAClip.cpp",
|
|
"$_samplecode/SampleAAGeometry.cpp",
|
|
"$_samplecode/SampleAARectModes.cpp",
|
|
"$_samplecode/SampleAARects.cpp",
|
|
"$_samplecode/SampleAndroidShadows.cpp",
|
|
"$_samplecode/SampleAnimatedImage.cpp",
|
|
"$_samplecode/SampleAnimatedText.cpp",
|
|
"$_samplecode/SampleAnimBlur.cpp",
|
|
"$_samplecode/SampleArc.cpp",
|
|
"$_samplecode/SampleAtlas.cpp",
|
|
"$_samplecode/SampleBackdropBounds.cpp",
|
|
"$_samplecode/SampleBitmapRect.cpp",
|
|
"$_samplecode/SampleCCPRGeometry.cpp",
|
|
"$_samplecode/SampleCamera.cpp",
|
|
"$_samplecode/SampleChart.cpp",
|
|
"$_samplecode/SampleChineseFling.cpp",
|
|
"$_samplecode/SampleCircle.cpp",
|
|
"$_samplecode/SampleClip.cpp",
|
|
"$_samplecode/SampleClipDrawMatch.cpp",
|
|
"$_samplecode/SampleClock.cpp",
|
|
"$_samplecode/SampleColorFilter.cpp",
|
|
"$_samplecode/SampleComplexClip.cpp",
|
|
"$_samplecode/SampleCowboy.cpp",
|
|
"$_samplecode/SampleCusp.cpp",
|
|
"$_samplecode/SampleDegenerateQuads.cpp",
|
|
"$_samplecode/SampleDegenerateTwoPtRadials.cpp",
|
|
"$_samplecode/SampleEffects.cpp",
|
|
"$_samplecode/SampleEmboss.cpp",
|
|
"$_samplecode/SampleFatBits.cpp",
|
|
"$_samplecode/SampleFillType.cpp",
|
|
"$_samplecode/SampleFilter2.cpp",
|
|
"$_samplecode/SampleFilterQuality.cpp",
|
|
"$_samplecode/SampleFlutterAnimate.cpp",
|
|
"$_samplecode/SampleGlyphTransform.cpp",
|
|
"$_samplecode/SampleGradients.cpp",
|
|
"$_samplecode/SampleHairCurves.cpp",
|
|
"$_samplecode/SampleHairline.cpp",
|
|
"$_samplecode/SampleHairModes.cpp",
|
|
"$_samplecode/SampleHT.cpp",
|
|
"$_samplecode/SampleIdentityScale.cpp",
|
|
"$_samplecode/SampleImageFilterDAG.cpp",
|
|
"$_samplecode/SampleLayerMask.cpp",
|
|
"$_samplecode/SampleLayers.cpp",
|
|
"$_samplecode/SampleLCD.cpp",
|
|
"$_samplecode/SampleLighting.cpp",
|
|
"$_samplecode/SampleLitAtlas.cpp",
|
|
"$_samplecode/SampleManyRects.cpp",
|
|
"$_samplecode/SampleMegaStroke.cpp",
|
|
"$_samplecode/SampleMixer.cpp",
|
|
"$_samplecode/SamplePatch.cpp",
|
|
"$_samplecode/SamplePath.cpp",
|
|
"$_samplecode/SamplePathText.cpp",
|
|
"$_samplecode/SamplePathClip.cpp",
|
|
"$_samplecode/SamplePathEffects.cpp",
|
|
"$_samplecode/SamplePathOverstroke.cpp",
|
|
"$_samplecode/SamplePolyToPoly.cpp",
|
|
"$_samplecode/SampleQuadStroker.cpp",
|
|
"$_samplecode/SampleRectanizer.cpp",
|
|
"$_samplecode/SampleRegion.cpp",
|
|
"$_samplecode/SampleRepeatTile.cpp",
|
|
"$_samplecode/SampleSG.cpp",
|
|
"$_samplecode/SampleShaders.cpp",
|
|
"$_samplecode/SampleShadowColor.cpp",
|
|
"$_samplecode/SampleShadowReference.cpp",
|
|
"$_samplecode/SampleShadowUtils.cpp",
|
|
"$_samplecode/SampleShip.cpp",
|
|
"$_samplecode/SampleSlides.cpp",
|
|
"$_samplecode/SampleStringArt.cpp",
|
|
"$_samplecode/SampleStrokePath.cpp",
|
|
"$_samplecode/SampleStrokeRect.cpp",
|
|
"$_samplecode/SampleSubpixelTranslate.cpp",
|
|
"$_samplecode/SampleSVGFile.cpp",
|
|
"$_samplecode/SampleTextBox.cpp",
|
|
"$_samplecode/SampleTextEffects.cpp",
|
|
"$_samplecode/SampleTextureDomain.cpp",
|
|
"$_samplecode/SampleTextureUpload.cpp",
|
|
"$_samplecode/SampleThinAA.cpp",
|
|
"$_samplecode/SampleUnpremul.cpp",
|
|
"$_samplecode/SampleVertices.cpp",
|
|
"$_samplecode/SampleWritePixels.cpp",
|
|
"$_samplecode/SampleXfer.cpp",
|
|
"$_samplecode/SampleXfermodesBlur.cpp",
|
|
"$_samplecode/vertexdump.cpp",
|
|
]
|