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

Private Member Functions

SkString getName () const override
 
SkISize getISize () override
 
void onOnceBeforeDraw () 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 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 211 of file drawimageset.cpp.

Member Function Documentation

◆ getISize()

SkISize skiagm::DrawImageSetRectToRectGM::getISize ( )
inlineoverrideprivatevirtual

Implements skiagm::GM.

Definition at line 214 of file drawimageset.cpp.

214{ return {1250, 850}; }

◆ getName()

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

Implements skiagm::GM.

Definition at line 213 of file drawimageset.cpp.

213{ return SkString("draw_image_set_rect_to_rect"); }

◆ onDraw()

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

Reimplemented from skiagm::GM.

Definition at line 221 of file drawimageset.cpp.

221 {
223 static constexpr SkScalar kW = kM * kTileW;
224 static constexpr SkScalar kH = kN * kTileH;
225 SkMatrix matrices[5];
226 // Identity
227 matrices[0].reset();
228 // 90 degree rotation
229 matrices[1].setRotate(90, kW / 2.f, kH / 2.f);
230 // Scaling
231 matrices[2].setScale(2.f, 0.5f);
232 // Mirror in x and y
233 matrices[3].setScale(-1.f, -1.f);
234 matrices[3].postTranslate(kW, kH);
235 // Mirror in y, rotate, and scale.
236 matrices[4].setScale(1.f, -1.f);
237 matrices[4].postTranslate(0, kH);
238 matrices[4].postRotate(90, kW / 2.f, kH / 2.f);
239 matrices[4].postScale(2.f, 0.5f);
240
242 paint.setBlendMode(SkBlendMode::kSrcOver);
243
244 static constexpr SkScalar kTranslate = std::max(kW, kH) * 2.f + 10.f;
245 canvas->translate(5.f, 5.f);
246 canvas->save();
247 for (SkScalar frac : {0.f, 0.5f}) {
248 canvas->save();
249 canvas->translate(frac, frac);
250 for (size_t m = 0; m < std::size(matrices); ++m) {
251 canvas->save();
252 canvas->concat(matrices[m]);
253 canvas->experimental_DrawEdgeAAImageSet(fSet, kM * kN, nullptr, nullptr,
256 canvas->restore();
257 canvas->translate(kTranslate, 0);
258 }
259 canvas->restore();
260 canvas->restore();
261 canvas->translate(0, kTranslate);
262 canvas->save();
263 }
264 for (SkVector scale : {SkVector{2.f, 0.5f}, SkVector{0.5, 2.f}}) {
265 SkCanvas::ImageSetEntry scaledSet[kM * kN];
266 std::copy_n(fSet, kM * kN, scaledSet);
267 for (int i = 0; i < kM * kN; ++i) {
268 scaledSet[i].fDstRect.fLeft *= scale.fX;
269 scaledSet[i].fDstRect.fTop *= scale.fY;
270 scaledSet[i].fDstRect.fRight *= scale.fX;
271 scaledSet[i].fDstRect.fBottom *= scale.fY;
272 scaledSet[i].fAlpha = 0 == (i % 3) ? 0.4f : 1.f;
273 }
274 for (size_t m = 0; m < std::size(matrices); ++m) {
275 canvas->save();
276 canvas->concat(matrices[m]);
277 canvas->experimental_DrawEdgeAAImageSet(scaledSet, kM * kN, nullptr, nullptr,
280 canvas->restore();
281 canvas->translate(kTranslate, 0);
282 }
283 canvas->restore();
284 canvas->translate(0, kTranslate);
285 canvas->save();
286 }
287 }
@ kSrcOver
r = s + (1-sa)*d
constexpr SkColor SK_ColorBLACK
Definition SkColor.h:103
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
constexpr int kH
constexpr int kW
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
@ kFast_SrcRectConstraint
sample outside bounds; faster
Definition SkCanvas.h:1543
void experimental_DrawEdgeAAImageSet(const ImageSetEntry imageSet[], int cnt, const SkPoint dstClips[], const SkMatrix preViewMatrices[], const SkSamplingOptions &, const SkPaint *paint=nullptr, SrcRectConstraint constraint=kStrict_SrcRectConstraint)
int save()
Definition SkCanvas.cpp:451
void concat(const SkMatrix &matrix)
SkMatrix & postTranslate(SkScalar dx, SkScalar dy)
Definition SkMatrix.cpp:281
SkMatrix & postRotate(SkScalar degrees, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:474
SkMatrix & postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:360
SkMatrix & setScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:296
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:452
SkMatrix & reset()
Definition SkMatrix.cpp:49
const Paint & paint
float SkScalar
Definition extension.cpp:12
void draw_checkerboard(SkCanvas *canvas, SkColor c1, SkColor c2, int size)
const Scalar scale
SkScalar fBottom
larger y-axis bounds
Definition extension.cpp:17
SkScalar fLeft
smaller x-axis bounds
Definition extension.cpp:14
SkScalar fRight
larger x-axis bounds
Definition extension.cpp:16
SkScalar fTop
smaller y-axis bounds
Definition extension.cpp:15

◆ onOnceBeforeDraw()

void skiagm::DrawImageSetRectToRectGM::onOnceBeforeDraw ( )
inlineoverrideprivatevirtual

Reimplemented from skiagm::GM.

Definition at line 215 of file drawimageset.cpp.

215 {
216 static constexpr SkColor kColors[] = {SK_ColorBLUE, SK_ColorWHITE,
218 make_image_tiles(kTileW, kTileH, kM, kN, kColors, fSet);
219 }
uint32_t SkColor
Definition SkColor.h:37
constexpr SkColor SK_ColorBLUE
Definition SkColor.h:135
constexpr SkColor SK_ColorRED
Definition SkColor.h:126
static void make_image_tiles(int tileW, int tileH, int m, int n, const SkColor colors[4], SkCanvas::ImageSetEntry set[], const SkColor bgColor=SK_ColorLTGRAY)
const DlColor kColors[]

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