summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/gm/bigmatrix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/gm/bigmatrix.cpp')
-rw-r--r--chromium/third_party/skia/gm/bigmatrix.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/chromium/third_party/skia/gm/bigmatrix.cpp b/chromium/third_party/skia/gm/bigmatrix.cpp
new file mode 100644
index 00000000000..3ad128e651f
--- /dev/null
+++ b/chromium/third_party/skia/gm/bigmatrix.cpp
@@ -0,0 +1,99 @@
+
+/*
+ * Copyright 2012 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 "SkColorPriv.h"
+#include "SkShader.h"
+
+namespace skiagm {
+
+class BigMatrixGM : public GM {
+public:
+ BigMatrixGM() {
+ this->setBGColor(0xFF66AA99);
+ }
+
+protected:
+ virtual uint32_t onGetFlags() const SK_OVERRIDE {
+ return kSkipTiled_Flag;
+ }
+
+ virtual SkString onShortName() {
+ return SkString("bigmatrix");
+ }
+
+ virtual SkISize onISize() {
+ return SkISize::Make(50, 50);
+ }
+
+ virtual void onDraw(SkCanvas* canvas) {
+ SkMatrix m;
+ m.reset();
+ m.setRotate(33 * SK_Scalar1);
+ m.postScale(3000 * SK_Scalar1, 3000 * SK_Scalar1);
+ m.postTranslate(6000 * SK_Scalar1, -5000 * SK_Scalar1);
+ canvas->concat(m);
+
+ SkPaint paint;
+ paint.setColor(SK_ColorRED);
+ paint.setAntiAlias(true);
+
+ bool success = m.invert(&m);
+ SkASSERT(success);
+ (void) success; // silence compiler :(
+
+ SkPath path;
+
+ SkPoint pt = {10 * SK_Scalar1, 10 * SK_Scalar1};
+ SkScalar small = 1 / (500 * SK_Scalar1);
+
+ m.mapPoints(&pt, 1);
+ path.addCircle(pt.fX, pt.fY, small);
+ canvas->drawPath(path, paint);
+
+ pt.set(30 * SK_Scalar1, 10 * SK_Scalar1);
+ m.mapPoints(&pt, 1);
+ SkRect rect = {pt.fX - small, pt.fY - small,
+ pt.fX + small, pt.fY + small};
+ canvas->drawRect(rect, paint);
+
+ SkBitmap bmp;
+ bmp.allocN32Pixels(2, 2);
+ uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels());
+ pixels[0] = SkPackARGB32(0xFF, 0xFF, 0x00, 0x00);
+ pixels[1] = SkPackARGB32(0xFF, 0x00, 0xFF, 0x00);
+ pixels[2] = SkPackARGB32(0x80, 0x00, 0x00, 0x00);
+ pixels[3] = SkPackARGB32(0xFF, 0x00, 0x00, 0xFF);
+ pt.set(30 * SK_Scalar1, 30 * SK_Scalar1);
+ m.mapPoints(&pt, 1);
+ SkMatrix s;
+ s.reset();
+ s.setScale(SK_Scalar1 / 1000, SK_Scalar1 / 1000);
+ SkShader* shader = SkShader::CreateBitmapShader(
+ bmp,
+ SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode,
+ &s);
+ paint.setShader(shader)->unref();
+ paint.setAntiAlias(false);
+ paint.setFilterLevel(SkPaint::kLow_FilterLevel);
+ rect.setLTRB(pt.fX - small, pt.fY - small,
+ pt.fX + small, pt.fY + small);
+ canvas->drawRect(rect, paint);
+ }
+
+private:
+ typedef GM INHERITED;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+static GM* MyFactory(void*) { return new BigMatrixGM; }
+static GMRegistry reg(MyFactory);
+
+}