diff options
author | scroggo <scroggo@google.com> | 2015-01-20 06:33:13 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-20 06:33:14 -0800 |
commit | b2b416d3847c138a0a13876fdc1cdeae607b7e31 (patch) | |
tree | e9119cd0f165c7b72640a85bf0109811d687af55 /samplecode | |
parent | 07f26976f74f800368258eb915dfe00d316febe2 (diff) |
Revert of remove unused SkAvoidXfermode (patchset #2 id:20001 of https://codereview.chromium.org/860583002/)
Reason for revert:
Breaking Android framework build, which still uses AvoidXfermode. (failure shown here: https://android-build.storage.googleapis.com/builds/git_master-skia-linux-razor-userdebug/1689202/565b76b4bd8cc2ffd5aeb37e524f6a35e9b8791995d6e8c719a3a6d83aece936/logs/build_error.log?Signature=lHYyiconR%2BoTzY9ILAKlaUm6nFnpJQPTI4XUei1ZccBRyz6PxspCNvYCDO5za92yZSoy9refHT7uh2Hxlxew1ZBePxKCp2nnwJB7a%2B403kiHMHHawjecsbPnTE9QNNO8XMoqAjujcAplorhwsIBZYOCxb%2Bo5010BCfzTd%2F8GFa8%3D&Expires=1421764644&GoogleAccessId=701025073339-mqn0q2nvir9iurm6q5d00tdv7blbgvjr%40developer.gserviceaccount.com)
Here is the Java class that uses it: https://cs.corp.google.com/#android/frameworks/base/graphics/java/android/graphics/AvoidXfermode.java&sq=package:android
It has been deprecated. The glue code (which actually references the Skia file) is here: https://cs.corp.google.com/#android/frameworks/base/core/jni/android/graphics/Xfermode.cpp&q=Xfermode.cpp&sq=package:android
Mike suggested we move the implementation into Android, which is fine with me.
Original issue's description:
> remove unused SkAvoidXfermode
>
> BUG=skia:
> TBR=
> NOTRY=True
>
> Committed: https://skia.googlesource.com/skia/+/2d02df7a9a50217dac8c1d11681832a927ed79ce
TBR=bsalomon@google.com,reed@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/822953003
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/ClockFaceView.cpp | 1 | ||||
-rw-r--r-- | samplecode/SampleAll.cpp | 13 | ||||
-rw-r--r-- | samplecode/SampleAvoid.cpp | 105 |
3 files changed, 119 insertions, 0 deletions
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp index 2db9753077..1e21bad753 100644 --- a/samplecode/ClockFaceView.cpp +++ b/samplecode/ClockFaceView.cpp @@ -18,6 +18,7 @@ #include "SkColorPriv.h" #include "SkColorFilter.h" #include "SkTypeface.h" +#include "SkAvoidXfermode.h" static inline SkPMColor rgb2gray(SkPMColor c) { unsigned r = SkGetPackedR32(c); diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp index 16c79c9dbf..537659e0e6 100644 --- a/samplecode/SampleAll.cpp +++ b/samplecode/SampleAll.cpp @@ -11,6 +11,7 @@ #include "SkView.h" #include "Sk1DPathEffect.h" #include "Sk2DPathEffect.h" +#include "SkAvoidXfermode.h" #include "SkBlurMaskFilter.h" #include "SkColorFilter.h" #include "SkColorPriv.h" @@ -572,6 +573,18 @@ protected: } canvas->restore(); + + if (1) { + SkAutoTUnref<SkAvoidXfermode> mode(SkAvoidXfermode::Create(SK_ColorWHITE, 0xFF, + SkAvoidXfermode::kTargetColor_Mode)); + SkPaint paint; + x += SkIntToScalar(20); + SkRect r = { x, 0, x + SkIntToScalar(360), SkIntToScalar(700) }; + paint.setXfermode(mode); + paint.setColor(SK_ColorGREEN); + paint.setAntiAlias(true); + canvas->drawOval(r, paint); + } } private: diff --git a/samplecode/SampleAvoid.cpp b/samplecode/SampleAvoid.cpp new file mode 100644 index 0000000000..aa7ca0e8ef --- /dev/null +++ b/samplecode/SampleAvoid.cpp @@ -0,0 +1,105 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkGradientShader.h" +#include "SkAvoidXfermode.h" + +/////////////////////////////////////////////////////////////////////////////// + +class AvoidView : public SampleView { + SkShader* fShader; + + enum { + W = 480, + H = 320 + }; +public: + AvoidView() { + SkColor colors[] = { SK_ColorRED, SK_ColorYELLOW, SK_ColorGREEN, SK_ColorCYAN, SK_ColorBLUE }; + +#if 0 + SkPoint pts[] = { 0, 0, SkIntToScalar(100), SkIntToScalar(100) }; + fShader = SkGradientShader::CreateLinear(pts, colors, NULL, + SK_ARRAY_COUNT(colors), + SkShader::kMirror_TileMode); +#else + SkPoint pts[] = { { SkIntToScalar(W)/2, SkIntToScalar(H)/2 } }; + fShader = SkGradientShader::CreateRadial(pts[0], SkIntToScalar(H)/5, + colors, NULL, + SK_ARRAY_COUNT(colors), + SkShader::kMirror_TileMode); +#endif + } + + virtual ~AvoidView() { + fShader->unref(); + } + +protected: + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "AvoidXfermode"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + virtual void onDrawContent(SkCanvas* canvas) { + SkPaint paint; + SkRect r = { 0, 0, SkIntToScalar(W), SkIntToScalar(H) }; + + canvas->translate(r.width() / 6, r.height() / 6); + + paint.setShader(fShader); + canvas->drawRect(r, paint); + + static const struct { + int fTolerance; + SkAvoidXfermode::Mode fMode; + float fDX, fDY; + } gData[] = { + { 16, SkAvoidXfermode::kAvoidColor_Mode, 0, 0 }, + { 255-16, SkAvoidXfermode::kAvoidColor_Mode, 1, 0 }, + { 16, SkAvoidXfermode::kTargetColor_Mode, 0, 1 }, + { 255-16, SkAvoidXfermode::kTargetColor_Mode, 1, 1 }, + }; + + paint.setShader(NULL); + paint.setColor(SK_ColorMAGENTA); + + SkPaint frameP; + frameP.setStyle(SkPaint::kStroke_Style); + + for (size_t i = 0; i < SK_ARRAY_COUNT(gData); i++) { + SkAutoTUnref<SkAvoidXfermode> mode(SkAvoidXfermode::Create( + SK_ColorGREEN, gData[i].fTolerance, gData[i].fMode)); + paint.setXfermode(mode); + int div = 3; + SkRect rr = { 0, 0, r.width()/div, r.height()/div }; + rr.offset(r.width()/4 - rr.width()/2, r.height()/4 - rr.height()/2); + rr.offset(r.width() * gData[i].fDX/2, r.height() * gData[i].fDY/2); + canvas->drawRect(rr, paint); + paint.setXfermode(NULL); + + canvas->drawRect(rr, frameP); + } + } + +private: + typedef SampleView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { + return new AvoidView; +} + +static SkViewRegister reg(MyFactory); |