diff options
author | Herb Derby <herb@google.com> | 2017-02-07 14:25:11 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-07 20:01:20 +0000 |
commit | 83e939bcb79790f5ae3b28c398fbcf034675a6e5 (patch) | |
tree | 40b52134dece685757f7a1c1c69aa575a82f5100 /src/effects/gradients | |
parent | 77a7a1b57c16c97f056c1e50c03bdc954947778c (diff) |
Use SkArenaAlloc in the SkAutoBlitterChoose code.
- Added default implementation of onMakeContext to support use in android.
Searches for uses:
"public SkShader" package:^chromium$ -file:^src/third_party/skia
package:^aosp.* "public SkShader" -file:external/skia -file:.*third_party/skia
package:^android$ "public SkShader" -file:external/skia -file:.*third_party/skia
... shows that no subclass overrides onCreateContext.
TBR=reed@google.com
TBR=mtklein@google.com
Change-Id: I8bd5f57a79534574e344b165d31dccee41c31767
Reviewed-on: https://skia-review.googlesource.com/8140
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Diffstat (limited to 'src/effects/gradients')
-rw-r--r-- | src/effects/gradients/SkGradientShaderPriv.h | 6 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.cpp | 14 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.h | 3 |
9 files changed, 23 insertions, 39 deletions
diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h index 75b6595926..a9eef7df0e 100644 --- a/src/effects/gradients/SkGradientShaderPriv.h +++ b/src/effects/gradients/SkGradientShaderPriv.h @@ -11,6 +11,7 @@ #include "SkGradientBitmapCache.h" #include "SkGradientShader.h" +#include "SkArenaAlloc.h" #include "SkAutoMalloc.h" #include "SkClampRange.h" #include "SkColorPriv.h" @@ -237,10 +238,9 @@ protected: int count); template <typename T, typename... Args> - static Context* CheckedCreateContext(void* storage, Args&&... args) { - auto* ctx = new (storage) T(std::forward<Args>(args)...); + static Context* CheckedMakeContext(SkArenaAlloc* alloc, Args&&... args) { + auto* ctx = alloc->make<T>(std::forward<Args>(args)...); if (!ctx->isValid()) { - ctx->~T(); return nullptr; } return ctx; diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp index 5a74bfd7b9..73247cb113 100644 --- a/src/effects/gradients/SkLinearGradient.cpp +++ b/src/effects/gradients/SkLinearGradient.cpp @@ -74,16 +74,12 @@ void SkLinearGradient::flatten(SkWriteBuffer& buffer) const { buffer.writePoint(fEnd); } -size_t SkLinearGradient::onContextSize(const ContextRec& rec) const { - return use_4f_context(rec, fGradFlags) - ? sizeof(LinearGradient4fContext) - : sizeof(LinearGradientContext); -} - -SkShader::Context* SkLinearGradient::onCreateContext(const ContextRec& rec, void* storage) const { +SkShader::Context* SkLinearGradient::onMakeContext( + const ContextRec& rec, SkArenaAlloc* alloc) const +{ return use_4f_context(rec, fGradFlags) - ? CheckedCreateContext<LinearGradient4fContext>(storage, *this, rec) - : CheckedCreateContext< LinearGradientContext>(storage, *this, rec); + ? CheckedMakeContext<LinearGradient4fContext>(alloc, *this, rec) + : CheckedMakeContext< LinearGradientContext>(alloc, *this, rec); } // For now, only a 2-stop raster pipeline specialization. diff --git a/src/effects/gradients/SkLinearGradient.h b/src/effects/gradients/SkLinearGradient.h index f13599da8a..4118deeae5 100644 --- a/src/effects/gradients/SkLinearGradient.h +++ b/src/effects/gradients/SkLinearGradient.h @@ -66,8 +66,7 @@ public: protected: SkLinearGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - size_t onContextSize(const ContextRec&) const override; - Context* onCreateContext(const ContextRec&, void* storage) const override; + Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; bool onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*, const SkMatrix&, const SkPaint&, const SkMatrix*) const override; diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp index a7dca764d5..7e56863993 100644 --- a/src/effects/gradients/SkRadialGradient.cpp +++ b/src/effects/gradients/SkRadialGradient.cpp @@ -39,12 +39,10 @@ SkRadialGradient::SkRadialGradient(const SkPoint& center, SkScalar radius, const , fRadius(radius) { } -size_t SkRadialGradient::onContextSize(const ContextRec&) const { - return sizeof(RadialGradientContext); -} - -SkShader::Context* SkRadialGradient::onCreateContext(const ContextRec& rec, void* storage) const { - return CheckedCreateContext<RadialGradientContext>(storage, *this, rec); +SkShader::Context* SkRadialGradient::onMakeContext( + const ContextRec& rec, SkArenaAlloc* alloc) const +{ + return CheckedMakeContext<RadialGradientContext>(alloc, *this, rec); } SkRadialGradient::RadialGradientContext::RadialGradientContext( diff --git a/src/effects/gradients/SkRadialGradient.h b/src/effects/gradients/SkRadialGradient.h index 0b239039ee..f92fbb3b72 100644 --- a/src/effects/gradients/SkRadialGradient.h +++ b/src/effects/gradients/SkRadialGradient.h @@ -35,8 +35,7 @@ public: protected: SkRadialGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - size_t onContextSize(const ContextRec&) const override; - Context* onCreateContext(const ContextRec&, void* storage) const override; + Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; private: const SkPoint fCenter; diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 27d5dbeb7b..928de4c42c 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -45,12 +45,10 @@ void SkSweepGradient::flatten(SkWriteBuffer& buffer) const { buffer.writePoint(fCenter); } -size_t SkSweepGradient::onContextSize(const ContextRec&) const { - return sizeof(SweepGradientContext); -} - -SkShader::Context* SkSweepGradient::onCreateContext(const ContextRec& rec, void* storage) const { - return CheckedCreateContext<SweepGradientContext>(storage, *this, rec); +SkShader::Context* SkSweepGradient::onMakeContext( + const ContextRec& rec, SkArenaAlloc* alloc) const +{ + return CheckedMakeContext<SweepGradientContext>(alloc, *this, rec); } SkSweepGradient::SweepGradientContext::SweepGradientContext( diff --git a/src/effects/gradients/SkSweepGradient.h b/src/effects/gradients/SkSweepGradient.h index f132118b39..30ebb1ad4e 100644 --- a/src/effects/gradients/SkSweepGradient.h +++ b/src/effects/gradients/SkSweepGradient.h @@ -35,8 +35,7 @@ public: protected: void flatten(SkWriteBuffer& buffer) const override; - size_t onContextSize(const ContextRec&) const override; - Context* onCreateContext(const ContextRec&, void* storage) const override; + Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; private: const SkPoint fCenter; diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp index 599fd4c9fd..a9740aa455 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp @@ -210,13 +210,9 @@ bool SkTwoPointConicalGradient::isOpaque() const { return false; } -size_t SkTwoPointConicalGradient::onContextSize(const ContextRec&) const { - return sizeof(TwoPointConicalGradientContext); -} - -SkShader::Context* SkTwoPointConicalGradient::onCreateContext(const ContextRec& rec, - void* storage) const { - return CheckedCreateContext<TwoPointConicalGradientContext>(storage, *this, rec); +SkShader::Context* SkTwoPointConicalGradient::onMakeContext( + const ContextRec& rec, SkArenaAlloc* alloc) const { + return CheckedMakeContext<TwoPointConicalGradientContext>(alloc, *this, rec); } SkTwoPointConicalGradient::TwoPointConicalGradientContext::TwoPointConicalGradientContext( diff --git a/src/effects/gradients/SkTwoPointConicalGradient.h b/src/effects/gradients/SkTwoPointConicalGradient.h index d16e4bc3c5..e509f92703 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.h +++ b/src/effects/gradients/SkTwoPointConicalGradient.h @@ -75,8 +75,7 @@ public: protected: SkTwoPointConicalGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - size_t onContextSize(const ContextRec&) const override; - Context* onCreateContext(const ContextRec&, void* storage) const override; + Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; private: SkPoint fCenter1; |