diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 15:14:33 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 15:14:33 +0000 |
commit | 7112173c3c4cd1b1e7da8cdf971d71f01dd91299 (patch) | |
tree | 854ffd9e48edda9dd70b2f7ad3d788000b8f7def /gm/bitmaprect.cpp | |
parent | acfb30e5bb797249f4ec41edda4c4d4b86e0e5d0 (diff) |
re-re-land 5578
will follow w/ new .skp files to keep the waterfall green (I hope)
git-svn-id: http://skia.googlecode.com/svn/trunk@5584 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/bitmaprect.cpp')
-rw-r--r-- | gm/bitmaprect.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp new file mode 100644 index 0000000000..0e6c074e83 --- /dev/null +++ b/gm/bitmaprect.cpp @@ -0,0 +1,100 @@ + +/* + * 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 "gm.h" +#include "SkCanvas.h" +#include "SkGradientShader.h" +#include "SkGraphics.h" +#include "SkPath.h" +#include "SkRegion.h" +#include "SkShader.h" + +static void make_bitmap(SkBitmap* bitmap) { + SkCanvas canvas; + + { + bitmap->setConfig(SkBitmap::kARGB_8888_Config, 64, 64); + bitmap->allocPixels(); + canvas.setBitmapDevice(*bitmap); + } + + canvas.drawColor(SK_ColorRED); + SkPaint paint; + paint.setAntiAlias(true); + const SkPoint pts[] = { { 0, 0 }, { 64, 64 } }; + const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE }; + paint.setShader(SkGradientShader::CreateLinear(pts, colors, NULL, 2, + SkShader::kClamp_TileMode))->unref(); + canvas.drawCircle(32, 32, 32, paint); +} + +class DrawBitmapRect2 : public skiagm::GM { + bool fUseIRect; +public: + DrawBitmapRect2(bool useIRect) : fUseIRect(useIRect) { + } + +protected: + virtual SkString onShortName() SK_OVERRIDE { + SkString str; + str.printf("bitmaprect_%s", fUseIRect ? "i" : "s"); + return str; + } + + virtual SkISize onISize() SK_OVERRIDE { + return SkISize::Make(640, 480); + } + + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { + canvas->drawColor(0xFFCCCCCC); + + const SkIRect src[] = { + { 0, 0, 32, 32 }, + { 0, 0, 80, 80 }, + { 32, 32, 96, 96 }, + { -32, -32, 32, 32, } + }; + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); +// paint.setColor(SK_ColorGREEN); + + SkBitmap bitmap; + make_bitmap(&bitmap); + + SkRect dstR = { 0, 200, 128, 380 }; + + canvas->translate(16, 40); + for (size_t i = 0; i < SK_ARRAY_COUNT(src); i++) { + SkRect srcR; + srcR.set(src[i]); + + canvas->drawBitmap(bitmap, 0, 0, &paint); + if (fUseIRect) { + canvas->drawBitmapRectToRect(bitmap, &srcR, dstR, &paint); + } else { + canvas->drawBitmapRect(bitmap, &src[i], dstR, &paint); + } + + canvas->drawRect(dstR, paint); + canvas->drawRect(srcR, paint); + + canvas->translate(160, 0); + } + } + +private: + typedef skiagm::GM INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static skiagm::GM* MyFactory0(void*) { return new DrawBitmapRect2(false); } +static skiagm::GM* MyFactory1(void*) { return new DrawBitmapRect2(true); } + +static skiagm::GMRegistry reg0(MyFactory0); +static skiagm::GMRegistry reg1(MyFactory1); |