aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/bitmaprect.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-18 15:14:33 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-18 15:14:33 +0000
commit7112173c3c4cd1b1e7da8cdf971d71f01dd91299 (patch)
tree854ffd9e48edda9dd70b2f7ad3d788000b8f7def /gm/bitmaprect.cpp
parentacfb30e5bb797249f4ec41edda4c4d4b86e0e5d0 (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.cpp100
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);