diff options
author | reed <reed@chromium.org> | 2015-03-01 19:16:38 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-01 19:16:38 -0800 |
commit | 5bd055c0386499f2dc8c66173a7534b75af602bf (patch) | |
tree | 570e956f01d12e2fc0e51ebb106c15a600c56a36 | |
parent | b675a73c1f3f4a433c4893199a0bd11126dfe130 (diff) |
Revert of add compose-colorfilter (patchset #2 id:20001 of https://codereview.chromium.org/969673002/)
Reason for revert:
need to register subclass for serialization
Original issue's description:
> add compose-colorfilter
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/b675a73c1f3f4a433c4893199a0bd11126dfe130
TBR=fmalita@chromium.org,bsalomon@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/971653002
-rw-r--r-- | gm/tablecolorfilter.cpp | 103 | ||||
-rw-r--r-- | include/core/SkColorFilter.h | 6 | ||||
-rw-r--r-- | src/core/SkColorFilter.cpp | 78 |
3 files changed, 23 insertions, 164 deletions
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp index 2acb15c677..a49859bf8f 100644 --- a/gm/tablecolorfilter.cpp +++ b/gm/tablecolorfilter.cpp @@ -11,15 +11,6 @@ #include "SkGradientShader.h" #include "SkTableColorFilter.h" -static SkShader* make_shader0(int w, int h) { - SkPoint pts[] = { {0, 0}, {SkIntToScalar(w), SkIntToScalar(h)} }; - SkColor colors[] = { - SK_ColorBLACK, SK_ColorGREEN, SK_ColorCYAN, - SK_ColorRED, 0, SK_ColorBLUE, SK_ColorWHITE - }; - return SkGradientShader::CreateLinear(pts, colors, NULL, SK_ARRAY_COUNT(colors), - SkShader::kClamp_TileMode); -} static void make_bm0(SkBitmap* bm) { int W = 120; int H = 120; @@ -28,29 +19,34 @@ static void make_bm0(SkBitmap* bm) { SkCanvas canvas(*bm); SkPaint paint; - paint.setShader(make_shader0(W, H))->unref(); - canvas.drawPaint(paint); -} -static SkShader* make_shader1(int w, int h) { - SkScalar cx = SkIntToScalar(w)/2; - SkScalar cy = SkIntToScalar(h)/2; + SkPoint pts[] = { {0, 0}, {SkIntToScalar(W), SkIntToScalar(H)} }; SkColor colors[] = { - SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, + SK_ColorBLACK, SK_ColorGREEN, SK_ColorCYAN, + SK_ColorRED, 0, SK_ColorBLUE, SK_ColorWHITE }; - return SkGradientShader::CreateRadial(SkPoint::Make(cx, cy), cx, colors, NULL, - SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode); + SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, SK_ARRAY_COUNT(colors), + SkShader::kClamp_TileMode); + paint.setShader(s)->unref(); + canvas.drawPaint(paint); } static void make_bm1(SkBitmap* bm) { int W = 120; int H = 120; - SkScalar cx = SkIntToScalar(W)/2; - SkScalar cy = SkIntToScalar(H)/2; bm->allocN32Pixels(W, H); bm->eraseColor(SK_ColorTRANSPARENT); SkCanvas canvas(*bm); SkPaint paint; - paint.setShader(make_shader1(W, H))->unref(); + SkScalar cx = SkIntToScalar(W)/2; + SkScalar cy = SkIntToScalar(H)/2; + SkColor colors[] = { + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, + }; + SkShader* s = SkGradientShader::CreateRadial(SkPoint::Make(SkIntToScalar(W)/2, + SkIntToScalar(H)/2), + SkIntToScalar(W)/2, colors, NULL, SK_ARRAY_COUNT(colors), + SkShader::kClamp_TileMode); + paint.setShader(s)->unref(); paint.setAntiAlias(true); canvas.drawCircle(cx, cy, cx, paint); } @@ -188,69 +184,8 @@ protected: private: typedef GM INHERITED; }; -DEF_GM( return new TableColorFilterGM; ) ////////////////////////////////////////////////////////////////////////////// -class ComposeColorFilterGM : public skiagm::GM { -public: - ComposeColorFilterGM() {} - -protected: - virtual SkString onShortName() { - return SkString("composecolorfilter"); - } - - virtual SkISize onISize() { - return SkISize::Make(730, 730); - } - - virtual void onDraw(SkCanvas* canvas) { - SkBitmap bm; - make_bm1(&bm); - - canvas->drawColor(0xFFDDDDDD); - - SkColor colors[] = { SK_ColorCYAN, SK_ColorMAGENTA, SK_ColorYELLOW }; - SkXfermode::Mode modes[] = { - SkXfermode::kOverlay_Mode, - SkXfermode::kDarken_Mode, - SkXfermode::kColorBurn_Mode, - SkXfermode::kExclusion_Mode, - }; - - const int MODES = SK_ARRAY_COUNT(modes) * SK_ARRAY_COUNT(colors); - SkAutoTUnref<SkColorFilter> filters[MODES]; - int index = 0; - for (size_t i = 0; i < SK_ARRAY_COUNT(modes); ++i) { - for (size_t j = 0; j < SK_ARRAY_COUNT(colors); ++j) { - filters[index++].reset(SkColorFilter::CreateModeFilter(colors[j], modes[i])); - } - } - - SkPaint paint; - paint.setShader(make_shader1(50, 50))->unref(); - SkRect r = SkRect::MakeWH(50, 50); - const SkScalar spacer = 10; - - canvas->translate(spacer, spacer); - - for (size_t y = 0; y < MODES; ++y) { - canvas->save(); - for (size_t x = 0; x < MODES; ++x) { - SkAutoTUnref<SkColorFilter> compose(SkColorFilter::CreateComposeFilter(filters[y], - filters[x])); - paint.setColorFilter(compose); - canvas->drawRect(r, paint); - canvas->translate(r.width() + spacer, 0); - } - canvas->restore(); - canvas->translate(0, r.height() + spacer); - } - } - -private: - typedef GM INHERITED; -}; -DEF_GM( return new ComposeColorFilterGM; ) - +static skiagm::GM* MyFactory(void*) { return new TableColorFilterGM; } +static skiagm::GMRegistry reg(MyFactory); diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h index bb628053a6..929607a398 100644 --- a/include/core/SkColorFilter.h +++ b/include/core/SkColorFilter.h @@ -123,12 +123,6 @@ public: */ static SkColorFilter* CreateLightingFilter(SkColor mul, SkColor add); - /** Construct a colorfilter whose effect is to first apply the inner filter and then apply - * the outer filter to the result of the inner's. - * The reference counts for outer and inner are incremented. - */ - static SkColorFilter* CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner); - /** A subclass may implement this factory function to work with the GPU backend. If the return is non-NULL then the caller owns a ref on the returned object. */ diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index 8c760be6cf..aadb29cb2d 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -6,9 +6,12 @@ */ #include "SkColorFilter.h" + #include "SkReadBuffer.h" -#include "SkString.h" #include "SkWriteBuffer.h" +#include "SkShader.h" +#include "SkUnPreMultiply.h" +#include "SkString.h" bool SkColorFilter::asColorMode(SkColor* color, SkXfermode::Mode* mode) const { return false; @@ -40,76 +43,3 @@ SkColor SkColorFilter::filterColor(SkColor c) const { GrFragmentProcessor* SkColorFilter::asFragmentProcessor(GrContext*) const { return NULL; } - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -class SkComposeColorFilter : public SkColorFilter { -public: - SkComposeColorFilter(SkColorFilter* outer, SkColorFilter* inner) - : fOuter(SkRef(outer)) - , fInner(SkRef(inner)) - {} - - uint32_t getFlags() const SK_OVERRIDE { - // Can only claim alphaunchanged and 16bit support if both our proxys do. - return fOuter->getFlags() & fInner->getFlags(); - } - - void filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) const SK_OVERRIDE { - fInner->filterSpan(shader, count, result); - fOuter->filterSpan(result, count, result); - } - - void filterSpan16(const uint16_t shader[], int count, uint16_t result[]) const SK_OVERRIDE { - SkASSERT(this->getFlags() & kHasFilter16_Flag); - fInner->filterSpan16(shader, count, result); - fOuter->filterSpan16(result, count, result); - } - -#ifndef SK_IGNORE_TO_STRING - void toString(SkString* str) const SK_OVERRIDE { - SkString outerS, innerS; - fOuter->toString(&outerS); - fInner->toString(&innerS); - str->appendf("SkComposeColorFilter: outer(%s) inner(%s)", outerS.c_str(), innerS.c_str()); - } -#endif - -#if 0 // TODO: should we support composing the fragments? -#if SK_SUPPORT_GPU - GrFragmentProcessor* asFragmentProcessor(GrContext*) const SK_OVERRIDE; -#endif -#endif - - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeColorFilter) - -protected: - void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { - buffer.writeFlattenable(fOuter); - buffer.writeFlattenable(fInner); - } - -private: - SkAutoTUnref<SkColorFilter> fOuter; - SkAutoTUnref<SkColorFilter> fInner; - - typedef SkColorFilter INHERITED; -}; - -SkFlattenable* SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) { - SkAutoTUnref<SkColorFilter> outer(buffer.readColorFilter()); - SkAutoTUnref<SkColorFilter> inner(buffer.readColorFilter()); - return CreateComposeFilter(outer, inner); -} - -SkColorFilter* SkColorFilter::CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner) { - if (!outer) { - return SkSafeRef(inner); - } - if (!inner) { - return SkSafeRef(outer); - } - return SkNEW_ARGS(SkComposeColorFilter, (outer, inner)); -} - - |