Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 SkISize getISize ()=0
 
virtual SkString getName () const =0
 
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 void onOnceBeforeDraw ()
 
virtual DrawResult onDraw (SkCanvas *, SkString *errorMsg)
 
virtual void onDraw (SkCanvas *)
 
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)
Definition: ToolUtils.cpp:139

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)
Definition: SkCanvas.cpp:1278
void drawPath(const SkPath &path, const SkPaint &paint)
Definition: SkCanvas.cpp:1747
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
Definition: SkPath.h:59
void drawRow(SkCanvas *canvas, const SkPath &path)
float SkScalar
Definition: extension.cpp:12
static float max(float r, float g, float b)
Definition: hsl.cpp:49
static SkPath scale(const SkPath &path, SkScalar scale)
Definition: patheffects.cpp:68

◆ 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 }
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259
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
void restore()
Definition: SkCanvas.cpp:461
int save()
Definition: SkCanvas.cpp:447
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: