Add a new GM for very thin stroke widths
authorrobertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 26 Jun 2013 17:06:45 +0000 (17:06 +0000)
committerrobertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 26 Jun 2013 17:06:45 +0000 (17:06 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@9770 2bbb7eff-a529-9590-31e7-b0007b416f81

gm/thinstrokedrects.cpp [new file with mode: 0644]
gyp/gmslides.gypi

diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
new file mode 100644 (file)
index 0000000..2f839d1
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2013 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"
+
+namespace skiagm {
+
+// Draw rects with various stroke widths at 1/8 pixel increments
+class ThinStrokedRectsGM : public GM {
+public:
+    ThinStrokedRectsGM() {
+        this->setBGColor(0xFF000000);
+    }
+
+protected:
+    virtual SkString onShortName() SK_OVERRIDE {
+        return SkString("thinstrokedrects");
+    }
+
+    virtual SkISize onISize() SK_OVERRIDE {
+        return make_isize(240, 320);
+    }
+
+    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+
+        SkPaint paint;
+        paint.setColor(SK_ColorWHITE);
+        paint.setStyle(SkPaint::kStroke_Style);
+        paint.setAntiAlias(true);
+
+        static const SkRect rect = { 0, 0, 10, 10 };
+        static const SkRect rect2 = { 0, 0, 20, 20 };
+
+        static const SkScalar gStrokeWidths[] = {
+            4, 2, 1, 0.5f, 0.25f, 0.125f, 0
+        };
+
+        canvas->translate(5, 5);
+        for (int i = 0; i < 8; ++i) {
+            canvas->save();
+            canvas->translate(i*0.125f, i*30.0f);
+            for (size_t j = 0; j < SK_ARRAY_COUNT(gStrokeWidths); ++j) {
+                paint.setStrokeWidth(gStrokeWidths[j]);
+                canvas->drawRect(rect, paint);
+                canvas->translate(15, 0);
+            }
+            canvas->restore();
+        }
+
+        // Draw a second time in red with a scale
+        paint.setColor(SK_ColorRED);
+        canvas->translate(0, 15);
+        for (int i = 0; i < 8; ++i) {
+            canvas->save();
+            canvas->translate(i*0.125f, i*30.0f);
+            canvas->scale(0.5f, 0.5f);
+            for (size_t j = 0; j < SK_ARRAY_COUNT(gStrokeWidths); ++j) {
+                paint.setStrokeWidth(2.0f * gStrokeWidths[j]);
+                canvas->drawRect(rect2, paint);
+                canvas->translate(30, 0);
+            }
+            canvas->restore();
+        }
+    }
+
+private:
+    typedef GM INHERITED;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+DEF_GM( return SkNEW(ThinStrokedRectsGM); )
+
+}
index eeb3c92..69516c0 100644 (file)
     '../gm/testimagefilters.cpp',
     '../gm/texdata.cpp',
     '../gm/thinrects.cpp',
+    '../gm/thinstrokedrects.cpp',
     '../gm/tilemodes.cpp',
     '../gm/tinybitmap.cpp',
     '../gm/twopointradial.cpp',