Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Private Member Functions | List of all members
skiagm::DrawQuadSetGM Class Reference
Inheritance diagram for skiagm::DrawQuadSetGM:
skiagm::GM

Private Member Functions

SkString getName () const override
 
SkISize getISize () override
 
void onDraw (SkCanvas *canvas) override
 

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
 
- 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
 
- Static Public Attributes inherited from skiagm::GM
static constexpr char kErrorMsg_DrawSkippedGpuOnly []
 
- 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 bool onAnimate (double)
 
virtual bool onGetControls (SkMetaData *)
 
virtual void onSetControls (const SkMetaData &)
 
GraphiteTestContextgraphiteTestContext () const
 

Detailed Description

Definition at line 181 of file drawquadset.cpp.

Member Function Documentation

◆ getISize()

SkISize skiagm::DrawQuadSetGM::getISize ( )
inlineoverrideprivatevirtual

Implements skiagm::GM.

Definition at line 184 of file drawquadset.cpp.

184{ return SkISize::Make(800, 800); }
static constexpr SkISize Make(int32_t w, int32_t h)
Definition SkSize.h:20

◆ getName()

SkString skiagm::DrawQuadSetGM::getName ( ) const
inlineoverrideprivatevirtual

Implements skiagm::GM.

Definition at line 183 of file drawquadset.cpp.

183{ return SkString("draw_quad_set"); }

◆ onDraw()

void skiagm::DrawQuadSetGM::onDraw ( SkCanvas canvas)
inlineoverrideprivatevirtual

Reimplemented from skiagm::GM.

Definition at line 186 of file drawquadset.cpp.

186 {
187 SkMatrix rowMatrices[5];
188 // Identity
189 rowMatrices[0].setIdentity();
190 // Translate/scale
191 rowMatrices[1].setTranslate(5.5f, 20.25f);
192 rowMatrices[1].postScale(.9f, .7f);
193 // Rotation
194 rowMatrices[2].setRotate(20.0f);
195 rowMatrices[2].preTranslate(15.f, -20.f);
196 // Skew
197 rowMatrices[3].setSkew(.5f, .25f);
198 rowMatrices[3].preTranslate(-30.f, 0.f);
199 // Perspective
200 SkPoint src[4];
202 SkPoint dst[4] = {{0, 0},
203 {kColCount * kTileWidth + 10.f, 15.f},
204 {kColCount * kTileWidth - 28.f, kRowCount * kTileHeight + 40.f},
205 {25.f, kRowCount * kTileHeight - 15.f}};
206 SkAssertResult(rowMatrices[4].setPolyToPoly(src, dst, 4));
207 rowMatrices[4].preTranslate(0.f, +10.f);
208 static const char* matrixNames[] = { "Identity", "T+S", "Rotate", "Skew", "Perspective" };
209 static_assert(std::size(matrixNames) == std::size(rowMatrices), "Count mismatch");
210
211 // Print a column header
212 canvas->save();
213 canvas->translate(110.f, 20.f);
214 for (size_t j = 0; j < std::size(kTileSetNames); ++j) {
215 draw_text(canvas, kTileSetNames[j]);
216 canvas->translate(kColCount * kTileWidth + 30.f, 0.f);
217 }
218 canvas->restore();
219 canvas->translate(0.f, 40.f);
220
221 // Render all tile variations
222 for (size_t i = 0; i < std::size(rowMatrices); ++i) {
223 canvas->save();
224 canvas->translate(10.f, 0.5f * kRowCount * kTileHeight);
225 draw_text(canvas, matrixNames[i]);
226
227 canvas->translate(100.f, -0.5f * kRowCount * kTileHeight);
228 for (size_t j = 0; j < std::size(kTileSets); ++j) {
229 canvas->save();
230 draw_tile_boundaries(canvas, rowMatrices[i]);
231
232 canvas->concat(rowMatrices[i]);
233 kTileSets[j](canvas);
234 // Undo the local transformation
235 canvas->restore();
236 // And advance to the next column
237 canvas->translate(kColCount * kTileWidth + 30.f, 0.f);
238 }
239 // Reset back to the left edge
240 canvas->restore();
241 // And advance to the next row
242 canvas->translate(0.f, kRowCount * kTileHeight + 20.f);
243 }
244 }
#define SkAssertResult(cond)
Definition SkAssert.h:123
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
int save()
Definition SkCanvas.cpp:451
void concat(const SkMatrix &matrix)
SkMatrix & postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:360
SkMatrix & setTranslate(SkScalar dx, SkScalar dy)
Definition SkMatrix.cpp:254
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:452
SkMatrix & setIdentity()
Definition SkMatrix.h:626
SkMatrix & preTranslate(SkScalar dx, SkScalar dy)
Definition SkMatrix.cpp:263
SkMatrix & setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:488
static void draw_text(SkCanvas *canvas, sk_sp< SkTextBlob > blob, const SkPaint &paint, const SkPaint &blurPaint, const SkPaint &clearPaint)
static constexpr SkScalar kTileHeight
static constexpr SkScalar kTileWidth
static constexpr int kRowCount
static constexpr int kColCount
static void draw_tile_boundaries(SkCanvas *canvas, const SkMatrix &local)
static const char * kTileSetNames[]
static TileRenderer kTileSets[]
dst
Definition cp.py:12
void toQuad(SkPoint quad[4]) const
Definition SkRect.cpp:50
static constexpr SkRect MakeWH(float w, float h)
Definition SkRect.h:609

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