aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/gradients
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2017-05-25 14:05:42 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-25 18:33:17 +0000
commit04d22c04838fb312aa5ecc770299aff31076e7e3 (patch)
tree0244eb375c20336592366fbbff8869fce1775595 /src/effects/gradients
parentac1e4964e7816de1f4977b52fa5f2f372537468b (diff)
Remove (now-dead) SK_LEGACY_SWEEP_GRADIENT code
Behold the first raster pipeline-only gradient! Change-Id: Ib6f53224e4ff9506aafdae1d2303102fc5235dfc Reviewed-on: https://skia-review.googlesource.com/17982 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/effects/gradients')
-rw-r--r--src/effects/gradients/SkSweepGradient.cpp81
-rw-r--r--src/effects/gradients/SkSweepGradient.h17
2 files changed, 3 insertions, 95 deletions
diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp
index 1e583c2ee0..a138a8e213 100644
--- a/src/effects/gradients/SkSweepGradient.cpp
+++ b/src/effects/gradients/SkSweepGradient.cpp
@@ -8,9 +8,6 @@
#include "SkColorSpaceXformer.h"
#include "SkSweepGradient.h"
-#include <algorithm>
-#include <cmath>
-
#include "SkPM4fPriv.h"
#include "SkRasterPipeline.h"
@@ -52,84 +49,6 @@ void SkSweepGradient::flatten(SkWriteBuffer& buffer) const {
buffer.writePoint(fCenter);
}
-SkShaderBase::Context* SkSweepGradient::onMakeContext(
- const ContextRec& rec, SkArenaAlloc* alloc) const
-{
- return CheckedMakeContext<SweepGradientContext>(alloc, *this, rec);
-}
-
-SkSweepGradient::SweepGradientContext::SweepGradientContext(
- const SkSweepGradient& shader, const ContextRec& rec)
- : INHERITED(shader, rec) {}
-
-bool SkSweepGradient::isRasterPipelineOnly() const {
-#ifdef SK_LEGACY_SWEEP_GRADIENT
- return false;
-#else
- return true;
-#endif
-}
-
-// returns angle in a circle [0..2PI) -> [0..255]
-static unsigned SkATan2_255(float y, float x) {
- // static const float g255Over2PI = 255 / (2 * SK_ScalarPI);
- static const float g255Over2PI = 40.584510488433314f;
-
- float result = sk_float_atan2(y, x);
- if (!SkScalarIsFinite(result)) {
- return 0;
- }
- if (result < 0) {
- result += 2 * SK_ScalarPI;
- }
- SkASSERT(result >= 0);
- // since our value is always >= 0, we can cast to int, which is faster than
- // calling floorf()
- int ir = (int)(result * g255Over2PI);
- SkASSERT(ir >= 0 && ir <= 255);
- return ir;
-}
-
-void SkSweepGradient::SweepGradientContext::shadeSpan(int x, int y, SkPMColor* SK_RESTRICT dstC,
- int count) {
- SkMatrix::MapXYProc proc = fDstToIndexProc;
- const SkMatrix& matrix = fDstToIndex;
- const SkPMColor* SK_RESTRICT cache = fCache->getCache32();
- int toggle = init_dither_toggle(x, y);
- SkPoint srcPt;
-
- if (fDstToIndexClass != kPerspective_MatrixClass) {
- proc(matrix, SkIntToScalar(x) + SK_ScalarHalf,
- SkIntToScalar(y) + SK_ScalarHalf, &srcPt);
- SkScalar dx, fx = srcPt.fX;
- SkScalar dy, fy = srcPt.fY;
-
- if (fDstToIndexClass == kFixedStepInX_MatrixClass) {
- const auto step = matrix.fixedStepInX(SkIntToScalar(y) + SK_ScalarHalf);
- dx = step.fX;
- dy = step.fY;
- } else {
- SkASSERT(fDstToIndexClass == kLinear_MatrixClass);
- dx = matrix.getScaleX();
- dy = matrix.getSkewY();
- }
-
- for (; count > 0; --count) {
- *dstC++ = cache[toggle + SkATan2_255(fy, fx)];
- fx += dx;
- fy += dy;
- toggle = next_dither_toggle(toggle);
- }
- } else { // perspective case
- for (int stop = x + count; x < stop; x++) {
- proc(matrix, SkIntToScalar(x) + SK_ScalarHalf,
- SkIntToScalar(y) + SK_ScalarHalf, &srcPt);
- *dstC++ = cache[toggle + SkATan2_255(srcPt.fY, srcPt.fX)];
- toggle = next_dither_toggle(toggle);
- }
- }
-}
-
/////////////////////////////////////////////////////////////////////
#if SK_SUPPORT_GPU
diff --git a/src/effects/gradients/SkSweepGradient.h b/src/effects/gradients/SkSweepGradient.h
index b7ed7e5bb9..c30ca4d916 100644
--- a/src/effects/gradients/SkSweepGradient.h
+++ b/src/effects/gradients/SkSweepGradient.h
@@ -10,20 +10,10 @@
#include "SkGradientShaderPriv.h"
-class SkSweepGradient : public SkGradientShaderBase {
+class SkSweepGradient final : public SkGradientShaderBase {
public:
SkSweepGradient(SkScalar cx, SkScalar cy, const Descriptor&);
- class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
- public:
- SweepGradientContext(const SkSweepGradient& shader, const ContextRec&);
-
- void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
-
- private:
- typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
- };
-
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
@@ -35,14 +25,13 @@ public:
protected:
void flatten(SkWriteBuffer& buffer) const override;
- Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override;
sk_sp<SkShader> onMakeColorSpace(SkColorSpaceXformer* xformer) const override;
bool adjustMatrixAndAppendStages(SkArenaAlloc* alloc,
SkMatrix* matrix,
- SkRasterPipeline* p) const final;
+ SkRasterPipeline* p) const override;
- bool isRasterPipelineOnly() const final;
+ bool isRasterPipelineOnly() const override { return true; }
private:
const SkPoint fCenter;