Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Private Member Functions | List of all members
skiagm::DrawImageSetGM Class Reference
Inheritance diagram for skiagm::DrawImageSetGM:
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 108 of file drawimageset.cpp.

Member Function Documentation

◆ getISize()

SkISize skiagm::DrawImageSetGM::getISize ( )
inlineoverrideprivatevirtual

Implements skiagm::GM.

Definition at line 111 of file drawimageset.cpp.

111{ return {1000, 725}; }

◆ getName()

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

Implements skiagm::GM.

Definition at line 110 of file drawimageset.cpp.

110{ return SkString("draw_image_set"); }

◆ onDraw()

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

Reimplemented from skiagm::GM.

Definition at line 118 of file drawimageset.cpp.

118 {
119 SkScalar d = SkVector{kM * kTileW, kN * kTileH}.length();
120 SkMatrix matrices[4];
121 // rotation
122 matrices[0].setRotate(30);
123 matrices[0].postTranslate(d / 3, 0);
124 // perespective
125 SkPoint src[4];
126 SkRect::MakeWH(kM * kTileW, kN * kTileH).toQuad(src);
127 SkPoint dst[4] = {{0, 0},
128 {kM * kTileW + 10.f, -5.f},
129 {kM * kTileW - 28.f, kN * kTileH + 40.f},
130 {45.f, kN * kTileH - 25.f}};
131 SkAssertResult(matrices[1].setPolyToPoly(src, dst, 4));
132 matrices[1].postTranslate(d, 50.f);
133 // skew
134 matrices[2].setRotate(-60.f);
135 matrices[2].postSkew(0.5f, -1.15f);
136 matrices[2].postScale(0.6f, 1.05f);
137 matrices[2].postTranslate(d, 2.6f * d);
138 // perspective + mirror in x.
139 dst[1] = {-.25 * kM * kTileW, 0};
140 dst[0] = {5.f / 4.f * kM * kTileW, 0};
141 dst[3] = {2.f / 3.f * kM * kTileW, 1 / 2.f * kN * kTileH};
142 dst[2] = {1.f / 3.f * kM * kTileW, 1 / 2.f * kN * kTileH - 0.1f * kTileH};
143 SkAssertResult(matrices[3].setPolyToPoly(src, dst, 4));
144 matrices[3].postTranslate(100.f, d);
146 SkPaint setPaint;
149
150 for (size_t m = 0; m < std::size(matrices); ++m) {
151 // Draw grid of red lines at interior tile boundaries.
152 static constexpr SkScalar kLineOutset = 10.f;
154 paint.setAntiAlias(true);
155 paint.setColor(SK_ColorRED);
157 paint.setStrokeWidth(0.f);
158 for (int x = 1; x < kM; ++x) {
159 SkPoint pts[] = {{x * kTileW, 0}, {x * kTileW, kN * kTileH}};
160 matrices[m].mapPoints(pts, 2);
161 SkVector v = pts[1] - pts[0];
162 v.setLength(v.length() + kLineOutset);
163 canvas->drawLine(pts[1] - v, pts[0] + v, paint);
164 }
165 for (int y = 1; y < kN; ++y) {
166 SkPoint pts[] = {{0, y * kTileH}, {kTileW * kM, y * kTileH}};
167 matrices[m].mapPoints(pts, 2);
168 SkVector v = pts[1] - pts[0];
169 v.setLength(v.length() + kLineOutset);
170 canvas->drawLine(pts[1] - v, pts[0] + v, paint);
171 }
172 canvas->save();
173 canvas->concat(matrices[m]);
174 canvas->experimental_DrawEdgeAAImageSet(fSet, kM * kN, nullptr, nullptr, sampling,
175 &setPaint,
177 canvas->restore();
178 }
179 // A more exotic case with an unusual blend mode, mixed aa flags set, and alpha,
180 // subsets the image. And another with all the above plus a color filter.
182 entry.fSrcRect = SkRect::MakeWH(kTileW, kTileH).makeInset(kTileW / 4.f, kTileH / 4.f);
183 entry.fDstRect = SkRect::MakeWH(1.5 * kTileW, 1.5 * kTileH).makeOffset(d / 4, 2 * d);
184 entry.fImage = fSet[0].fImage;
185 entry.fAlpha = 0.7f;
187 canvas->save();
188 canvas->rotate(3.f);
189
191 canvas->experimental_DrawEdgeAAImageSet(&entry, 1, nullptr, nullptr, sampling,
193 canvas->translate(entry.fDstRect.width() + 8.f, 0);
194 SkPaint cfPaint = setPaint;
196 canvas->experimental_DrawEdgeAAImageSet(&entry, 1, nullptr, nullptr, sampling,
198 canvas->restore();
199 canvas->translate(2 * d, 0);
200 }
201 }
#define SkAssertResult(cond)
Definition SkAssert.h:123
@ kExclusion
rc = s + d - two(s*d), ra = kSrcOver
@ kSrcOver
r = s + (1-sa)*d
constexpr SkColor SK_ColorRED
Definition SkColor.h:126
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint &paint)
@ 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)
void rotate(SkScalar degrees)
int save()
Definition SkCanvas.cpp:451
void concat(const SkMatrix &matrix)
@ kTop_QuadAAFlag
Definition SkCanvas.h:1660
@ kLeft_QuadAAFlag
Definition SkCanvas.h:1659
static sk_sp< SkColorFilter > LinearToSRGBGamma()
SkMatrix & postTranslate(SkScalar dx, SkScalar dy)
Definition SkMatrix.cpp:281
SkMatrix & postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:360
void mapPoints(SkPoint dst[], const SkPoint src[], int count) const
Definition SkMatrix.cpp:770
SkMatrix & postSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:524
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
Definition SkMatrix.cpp:452
@ kStroke_Style
set to stroke geometry
Definition SkPaint.h:194
void setBlendMode(SkBlendMode mode)
Definition SkPaint.cpp:151
void setColorFilter(sk_sp< SkColorFilter > colorFilter)
const Paint & paint
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
Definition main.cc:19
float SkScalar
Definition extension.cpp:12
double y
double x
SkSamplingOptions sampling
Definition SkRecords.h:337
dst
Definition cp.py:12
sk_sp< const SkImage > fImage
Definition SkCanvas.h:1681
bool setLength(float length)
Definition SkPoint.cpp:30
float length() const
void toQuad(SkPoint quad[4]) const
Definition SkRect.cpp:50
constexpr SkRect makeOffset(float dx, float dy) const
Definition SkRect.h:965
SkRect makeInset(float dx, float dy) const
Definition SkRect.h:987
constexpr float width() const
Definition SkRect.h:762
static constexpr SkRect MakeWH(float w, float h)
Definition SkRect.h:609

◆ onOnceBeforeDraw()

void skiagm::DrawImageSetGM::onOnceBeforeDraw ( )
inlineoverrideprivatevirtual

Reimplemented from skiagm::GM.

Definition at line 112 of file drawimageset.cpp.

112 {
113 static constexpr SkColor kColors[] = {SK_ColorCYAN, SK_ColorBLACK,
115 make_image_tiles(kTileW, kTileH, kM, kN, kColors, fSet);
116 }
constexpr SkColor SK_ColorMAGENTA
Definition SkColor.h:147
uint32_t SkColor
Definition SkColor.h:37
constexpr SkColor SK_ColorCYAN
Definition SkColor.h:143
constexpr SkColor SK_ColorBLACK
Definition SkColor.h:103
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: