diff options
Diffstat (limited to 'gm')
-rw-r--r-- | gm/gm_files.mk | 1 | ||||
-rw-r--r-- | gm/shadows.cpp | 99 |
2 files changed, 100 insertions, 0 deletions
diff --git a/gm/gm_files.mk b/gm/gm_files.mk index 2f7769e3f7..8e15bdaf78 100644 --- a/gm/gm_files.mk +++ b/gm/gm_files.mk @@ -5,6 +5,7 @@ SOURCE := \ gradients.cpp \ points.cpp \ poly2poly.cpp \ + shadows.cpp \ shapes.cpp \ tilemodes.cpp \ xfermodes.cpp \ diff --git a/gm/shadows.cpp b/gm/shadows.cpp new file mode 100644 index 0000000000..5afde495fe --- /dev/null +++ b/gm/shadows.cpp @@ -0,0 +1,99 @@ +#include "gm.h" +#include "SkPicture.h" +#include "SkRectShape.h" +#include "SkBlurDrawLooper.h" + +namespace skiagm { + +/////////////////////////////////////////////////////////////////////////////// + +class ShadowsGM : public GM { + +public: + SkPath fCirclePath; + SkPaint fPaint; + SkRectShape fRectShape; + ShadowsGM() { + fCirclePath.addCircle(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(10) ); + fPaint.setStrokeWidth(SkIntToScalar(4)); + fPaint.setAntiAlias(true); + fPaint.setColor(0xFF00FF00); + fPaint.setStyle(SkPaint::kStroke_Style); + SkRect rect; + rect.set(SkIntToScalar(10), SkIntToScalar(10), + SkIntToScalar(30), SkIntToScalar(30)); + fRectShape.setRect(rect); + fRectShape.paint().setColor(SK_ColorRED); + } + + virtual ~ShadowsGM() { + } + +protected: + virtual SkString onShortName() { + return SkString("shadows"); + } + + virtual SkISize onISize() { + return make_isize(200, 80); + } + + void drawBG(SkCanvas* canvas) { + canvas->drawColor(0xFFDDDDDD); + } + + virtual void onDraw(SkCanvas* canvas) { + this->drawBG(canvas); + + SkBlurDrawLooper* shadowLoopers[5]; + shadowLoopers[0] = + new SkBlurDrawLooper (10, 5, 10, 0xFF0000FF, + SkBlurDrawLooper::kIgnoreTransform_BlurFlag | + SkBlurDrawLooper::kOverrideColor_BlurFlag | + SkBlurDrawLooper::kHighQuality_BlurFlag ); + SkAutoUnref aurL0(shadowLoopers[0]); + shadowLoopers[1] = + new SkBlurDrawLooper (10, 5, 10, 0xFF0000FF, + SkBlurDrawLooper::kIgnoreTransform_BlurFlag | + SkBlurDrawLooper::kOverrideColor_BlurFlag ); + SkAutoUnref aurL1(shadowLoopers[1]); + shadowLoopers[2] = + new SkBlurDrawLooper (5, 5, 10, 0xFF000000, + SkBlurDrawLooper::kIgnoreTransform_BlurFlag | + SkBlurDrawLooper::kHighQuality_BlurFlag ); + SkAutoUnref aurL2(shadowLoopers[2]); + shadowLoopers[3] = + new SkBlurDrawLooper (5, -5 ,-10, 0x7FFF0000, + SkBlurDrawLooper::kIgnoreTransform_BlurFlag | + SkBlurDrawLooper::kOverrideColor_BlurFlag | + SkBlurDrawLooper::kHighQuality_BlurFlag ); + SkAutoUnref aurL3(shadowLoopers[3]); + shadowLoopers[4] = + new SkBlurDrawLooper (0, 5, 5, 0xFF000000, + SkBlurDrawLooper::kIgnoreTransform_BlurFlag | + SkBlurDrawLooper::kOverrideColor_BlurFlag | + SkBlurDrawLooper::kHighQuality_BlurFlag ); + SkAutoUnref aurL4(shadowLoopers[4]); + + for (int looper = 0; looper < 5; looper ++) + { + fRectShape.paint().setLooper(shadowLoopers[looper]); + canvas->resetMatrix(); + canvas->translate(SkIntToScalar(looper*40), SkIntToScalar(0)); + canvas->drawShape(&fRectShape); + fPaint.setLooper(shadowLoopers[looper]); + canvas->translate(SkIntToScalar(0), SkIntToScalar(40)); + canvas->drawPath(fCirclePath, fPaint); + } +} + +private: + typedef GM INHERITED; +}; + +/////////////////////////////////////////////////////////////////////////////// + +static GM* MyFactory(void*) { return new ShadowsGM; } +static GMRegistry reg(MyFactory); + +} |