Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
skiagm::SharedCornersGM Class Reference
Inheritance diagram for skiagm::SharedCornersGM:
skiagm::GM

Public Member Functions

 SharedCornersGM ()
 
- Public Member Functions inherited from skiagm::GM
 GM (SkColor backgroundColor=SK_ColorWHITE)
 
virtual ~GM ()
 
void setMode (Mode mode)
 
Mode getMode () const
 
DrawResult gpuSetup (SkCanvas *, SkString *errorMsg, GraphiteTestContext *=nullptr)
 
void gpuTeardown ()
 
void onceBeforeDraw ()
 
DrawResult draw (SkCanvas *canvas)
 
DrawResult draw (SkCanvas *, SkString *errorMsg)
 
void drawBackground (SkCanvas *)
 
DrawResult drawContent (SkCanvas *canvas)
 
DrawResult drawContent (SkCanvas *, SkString *errorMsg)
 
virtual bool runAsBench () const
 
SkScalar width ()
 
SkScalar height ()
 
SkColor getBGColor () const
 
void setBGColor (SkColor)
 
void drawSizeBounds (SkCanvas *, SkColor)
 
bool animate (double)
 
virtual bool onChar (SkUnichar)
 
bool getControls (SkMetaData *controls)
 
void setControls (const SkMetaData &controls)
 
virtual void modifyGrContextOptions (GrContextOptions *)
 
virtual void modifyGraphiteContextOptions (skgpu::graphite::ContextOptions *) const
 
virtual bool isBazelOnly () const
 
virtual std::map< std::string, std::string > getGoldKeys () const
 

Protected Member Functions

SkString getName () const override
 
SkISize getISize () override
 
void onOnceBeforeDraw () override
 
void onDraw (SkCanvas *canvas) override
 
void drawTriangleBoxes (SkCanvas *canvas, const std::vector< SkPoint > &points, const std::vector< std::array< int, 3 > > &triangles)
 
void drawRow (SkCanvas *canvas, const SkPath &path)
 
- Protected Member Functions inherited from skiagm::GM
virtual DrawResult onGpuSetup (SkCanvas *, SkString *, GraphiteTestContext *)
 
virtual void onGpuTeardown ()
 
virtual DrawResult onDraw (SkCanvas *, SkString *errorMsg)
 
virtual bool onAnimate (double)
 
virtual bool onGetControls (SkMetaData *)
 
virtual void onSetControls (const SkMetaData &)
 
GraphiteTestContextgraphiteTestContext () const
 

Protected Attributes

SkPaint fWireFramePaint
 
SkPaint fFillPaint
 

Additional Inherited Members

- Public Types inherited from skiagm::GM
enum  Mode { kGM_Mode , kSample_Mode , kBench_Mode }
 
using DrawResult = skiagm::DrawResult
 
using GraphiteTestContext = skiatest::graphite::GraphiteTestContext
 
- Static Public Attributes inherited from skiagm::GM
static constexpr char kErrorMsg_DrawSkippedGpuOnly []
 

Detailed Description

Definition at line 34 of file sharedcorners.cpp.

Constructor & Destructor Documentation

◆ SharedCornersGM()

skiagm::SharedCornersGM::SharedCornersGM ( )
inline

Definition at line 36 of file sharedcorners.cpp.

36{ this->setBGColor(ToolUtils::color_to_565(0xFF1A65D7)); }
void setBGColor(SkColor)
Definition gm.cpp:159
SkColor color_to_565(SkColor color)

Member Function Documentation

◆ drawRow()

void skiagm::SharedCornersGM::drawRow ( SkCanvas canvas,
const SkPath path 
)
inlineprotected

Definition at line 139 of file sharedcorners.cpp.

139 {
140 SkAutoCanvasRestore acr(canvas, true);
141 const SkRect& bounds = path.getBounds();
142 canvas->translate((kBoxSize - bounds.width()) / 2 - bounds.left(),
143 (kBoxSize - bounds.height()) / 2 - bounds.top());
144
145 canvas->drawPath(path, fWireFramePaint);
146 canvas->translate(kBoxSize + kPadSize, 0);
147
148 for (SkPoint jitter : kJitters) {
149 {
150 SkAutoCanvasRestore acr2(canvas, true);
151 canvas->translate(jitter.x(), jitter.y());
152 canvas->drawPath(path, fFillPaint);
153 }
154 canvas->translate(kBoxSize + kPadSize, 0);
155 }
156 }
void translate(SkScalar dx, SkScalar dy)
void drawPath(const SkPath &path, const SkPaint &paint)
Optional< SkRect > bounds
Definition SkRecords.h:189
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switches.h:57
static constexpr SkPoint kJitters[]
static constexpr int kPadSize
static constexpr int kBoxSize

◆ drawTriangleBoxes()

void skiagm::SharedCornersGM::drawTriangleBoxes ( SkCanvas canvas,
const std::vector< SkPoint > &  points,
const std::vector< std::array< int, 3 > > &  triangles 
)
inlineprotected

Definition at line 110 of file sharedcorners.cpp.

111 {
112 SkPath path;
113 path.setFillType(SkPathFillType::kEvenOdd);
114 path.setIsVolatile(true);
115 for (const std::array<int, 3>& triangle : triangles) {
116 path.moveTo(points[triangle[0]]);
117 path.lineTo(points[triangle[1]]);
118 path.lineTo(points[triangle[2]]);
119 path.close();
120 }
121 SkScalar scale = kBoxSize / std::max(path.getBounds().height(), path.getBounds().width());
122 path.transform(SkMatrix::Scale(scale, scale));
123
124 this->drawRow(canvas, path);
125 canvas->translate(0, kBoxSize + kPadSize);
126
127 SkMatrix rot;
128 rot.setRotate(45, path.getBounds().centerX(), path.getBounds().centerY());
129 path.transform(rot);
130 this->drawRow(canvas, path);
131 canvas->translate(0, kBoxSize + kPadSize);
132
133 rot.setRotate(-45 - 69.38111f, path.getBounds().centerX(), path.getBounds().centerY());
134 path.transform(rot);
135 this->drawRow(canvas, path);
136 canvas->translate(0, kBoxSize + kPadSize);
137 }
static const int points[]
static SkMatrix Scale(SkScalar sx, SkScalar sy)
Definition SkMatrix.h:75
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:452
void drawRow(SkCanvas *canvas, const SkPath &path)
float SkScalar
Definition extension.cpp:12
const Scalar scale

◆ getISize()

SkISize skiagm::SharedCornersGM::getISize ( )
inlineoverrideprotectedvirtual

Implements skiagm::GM.

Definition at line 41 of file sharedcorners.cpp.

41 {
42 constexpr int numRows = 3 * 2;
43 constexpr int numCols = (1 + std::size(kJitters)) * 2;
44 return SkISize::Make(numCols * (kBoxSize + kPadSize) + kPadSize,
45 numRows * (kBoxSize + kPadSize) + kPadSize);
46 }
static constexpr SkISize Make(int32_t w, int32_t h)
Definition SkSize.h:20

◆ getName()

SkString skiagm::SharedCornersGM::getName ( ) const
inlineoverrideprotectedvirtual

Implements skiagm::GM.

Definition at line 39 of file sharedcorners.cpp.

39{ return SkString("sharedcorners"); }

◆ onDraw()

void skiagm::SharedCornersGM::onDraw ( SkCanvas canvas)
inlineoverrideprotectedvirtual

Reimplemented from skiagm::GM.

Definition at line 57 of file sharedcorners.cpp.

57 {
58 canvas->translate(kPadSize, kPadSize);
59 canvas->save();
60
61 // Adjacent rects.
62 this->drawTriangleBoxes(canvas,
63 {{0, 0}, {40, 0}, {80, 0}, {120, 0},
64 {0, 20}, {40, 20}, {80, 20}, {120, 20},
65 {40, 40}, {80, 40},
66 {40, 60}, {80, 60}},
67 {{{0, 1, 4}}, {{1, 5, 4}},
68 {{5, 1, 6}}, {{1, 2, 6}},
69 {{2, 3, 6}}, {{3, 7, 6}},
70 {{8, 5, 9}}, {{5, 6, 9}},
71 {{10, 8, 11}}, {{8, 9, 11}}});
72
73 // Obtuse angles.
74 this->drawTriangleBoxes(canvas,
75 {{ 0, 0}, {10, 0}, {20, 0},
76 { 0, 2}, {20, 2},
77 {10, 4},
78 { 0, 6}, {20, 6},
79 { 0, 8}, {10, 8}, {20, 8}},
80 {{{3, 1, 4}}, {{4, 5, 3}}, {{6, 5, 7}}, {{7, 9, 6}},
81 {{0, 1, 3}}, {{1, 2, 4}},
82 {{3, 5, 6}}, {{5, 4, 7}},
83 {{6, 9, 8}}, {{9, 7, 10}}});
84
85 canvas->restore();
86 canvas->translate((kBoxSize + kPadSize) * 4, 0);
87
88 // Right angles.
89 this->drawTriangleBoxes(canvas,
90 {{0, 0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}},
91 {{{0, 1, 2}}, {{0, 2, 3}}, {{0, 3, 4}}, {{0, 4, 1}}});
92
93 // Acute angles.
94 SkRandom rand;
95 std::vector<SkPoint> pts;
96 std::vector<std::array<int, 3>> indices;
97 SkScalar theta = 0;
98 pts.push_back({0, 0});
99 while (theta < 2*SK_ScalarPI) {
100 pts.push_back({SkScalarCos(theta), SkScalarSin(theta)});
101 if (pts.size() > 2) {
102 indices.push_back({{0, (int)pts.size() - 2, (int)pts.size() - 1}});
103 }
104 theta += rand.nextRangeF(0, SK_ScalarPI/3);
105 }
106 indices.push_back({{0, (int)pts.size() - 1, 1}});
107 this->drawTriangleBoxes(canvas, pts, indices);
108 }
#define SkScalarSin(radians)
Definition SkScalar.h:45
#define SkScalarCos(radians)
Definition SkScalar.h:46
#define SK_ScalarPI
Definition SkScalar.h:21
Type::kYUV Type::kRGBA() int(0.7 *637)
void restore()
Definition SkCanvas.cpp:465
int save()
Definition SkCanvas.cpp:451
float nextRangeF(float min, float max)
Definition SkRandom.h:64
void drawTriangleBoxes(SkCanvas *canvas, const std::vector< SkPoint > &points, const std::vector< std::array< int, 3 > > &triangles)

◆ onOnceBeforeDraw()

void skiagm::SharedCornersGM::onOnceBeforeDraw ( )
inlineoverrideprotectedvirtual

Reimplemented from skiagm::GM.

Definition at line 48 of file sharedcorners.cpp.

48 {
51
54
55 }
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
void setStyle(Style style)
Definition SkPaint.cpp:105
void setColor(SkColor color)
Definition SkPaint.cpp:119
void setAntiAlias(bool aa)
Definition SkPaint.h:170
@ kStroke_Style
set to stroke geometry
Definition SkPaint.h:194

Member Data Documentation

◆ fFillPaint

SkPaint skiagm::SharedCornersGM::fFillPaint
protected

Definition at line 159 of file sharedcorners.cpp.

◆ fWireFramePaint

SkPaint skiagm::SharedCornersGM::fWireFramePaint
protected

Definition at line 158 of file sharedcorners.cpp.


The documentation for this class was generated from the following file: