Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
thinstrokedrects.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "gm/gm.h"
12#include "include/core/SkRect.h"
14#include "include/core/SkSize.h"
17
18namespace skiagm {
19
20// Draw rects with various stroke widths at 1/8 pixel increments
21class ThinStrokedRectsGM : public GM {
22public:
24 this->setBGColor(0xFF000000);
25 }
26
27protected:
28 SkString getName() const override { return SkString("thinstrokedrects"); }
29
30 SkISize getISize() override { return SkISize::Make(240, 320); }
31
32 void onDraw(SkCanvas* canvas) override {
33
35 paint.setColor(SK_ColorWHITE);
37 paint.setAntiAlias(true);
38
39 constexpr SkRect rect = { 0, 0, 10, 10 };
40 constexpr SkRect rect2 = { 0, 0, 20, 20 };
41
42 constexpr SkScalar gStrokeWidths[] = {
43 4, 2, 1, 0.5f, 0.25f, 0.125f, 0
44 };
45
46 canvas->translate(5, 5);
47 for (int i = 0; i < 8; ++i) {
48 canvas->save();
49 canvas->translate(i*0.125f, i*30.0f);
50 for (size_t j = 0; j < std::size(gStrokeWidths); ++j) {
51 paint.setStrokeWidth(gStrokeWidths[j]);
52 canvas->drawRect(rect, paint);
53 canvas->translate(15, 0);
54 }
55 canvas->restore();
56 }
57
58 // Draw a second time in red with a scale
59 paint.setColor(SK_ColorRED);
60 canvas->translate(0, 15);
61 for (int i = 0; i < 8; ++i) {
62 canvas->save();
63 canvas->translate(i*0.125f, i*30.0f);
64 canvas->scale(0.5f, 0.5f);
65 for (size_t j = 0; j < std::size(gStrokeWidths); ++j) {
66 paint.setStrokeWidth(2.0f * gStrokeWidths[j]);
67 canvas->drawRect(rect2, paint);
68 canvas->translate(30, 0);
69 }
70 canvas->restore();
71 }
72 }
73
74private:
75 using INHERITED = GM;
76};
77
78//////////////////////////////////////////////////////////////////////////////
79
80DEF_GM(return new ThinStrokedRectsGM;)
81} // namespace skiagm
constexpr SkColor SK_ColorRED
Definition SkColor.h:126
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
void drawRect(const SkRect &rect, const SkPaint &paint)
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
int save()
Definition SkCanvas.cpp:451
void scale(SkScalar sx, SkScalar sy)
@ kStroke_Style
set to stroke geometry
Definition SkPaint.h:194
void setBGColor(SkColor)
Definition gm.cpp:159
void onDraw(SkCanvas *canvas) override
SkString getName() const override
const Paint & paint
float SkScalar
Definition extension.cpp:12
#define DEF_GM(CODE)
Definition gm.h:40
static constexpr SkISize Make(int32_t w, int32_t h)
Definition SkSize.h:20