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

Private Member Functions

SkString getName () const override
 
SkISize getISize () override
 
DrawResult onGpuSetup (SkCanvas *canvas, SkString *, GraphiteTestContext *) 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 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 296 of file drawimageset.cpp.

Member Function Documentation

◆ getISize()

SkISize skiagm::DrawImageSetAlphaOnlyGM::getISize ( )
inlineoverrideprivatevirtual

Implements skiagm::GM.

Definition at line 299 of file drawimageset.cpp.

299{ return {kM * kTileW, 2 * kN * kTileH}; }

◆ getName()

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

Implements skiagm::GM.

Definition at line 298 of file drawimageset.cpp.

298{ return SkString("draw_image_set_alpha_only"); }

◆ onDraw()

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

Reimplemented from skiagm::GM.

Definition at line 335 of file drawimageset.cpp.

335 {
337
339 paint.setBlendMode(SkBlendMode::kSrcOver);
340 paint.setColor4f({0.2f, 0.8f, 0.4f, 1.f}); // colorizes even rows, no effect on odd rows
341
342 // Top rows use experimental edge set API
343 canvas->experimental_DrawEdgeAAImageSet(fSet, kM * kN, nullptr, nullptr,
346
347 canvas->translate(0.f, kN * kTileH);
348
349 // Bottom rows draw each image from the set using the regular API
350 for (int y = 0; y < kN; ++y) {
351 for (int x = 0; x < kM; ++x) {
352 int i = y * kM + x;
353 SkPaint entryPaint = paint;
354 entryPaint.setAlphaf(fSet[i].fAlpha * paint.getAlphaf());
355 sk_sp<SkImage> orig = sk_ref_sp(const_cast<SkImage*>(fSet[i].fImage.get()));
356 canvas->drawImageRect(ToolUtils::MakeTextureImage(canvas, std::move(orig)),
357 fSet[i].fSrcRect, fSet[i].fDstRect,
358 SkSamplingOptions(), &entryPaint,
360 }
361 }
362 }
@ kSrcOver
r = s + (1-sa)*d
constexpr SkColor SK_ColorGRAY
Definition SkColor.h:113
constexpr SkColor SK_ColorDKGRAY
Definition SkColor.h:108
sk_sp< T > sk_ref_sp(T *obj)
Definition SkRefCnt.h:381
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)
void drawImageRect(const SkImage *, const SkRect &src, const SkRect &dst, const SkSamplingOptions &, const SkPaint *, SrcRectConstraint)
void setAlphaf(float a)
Definition SkPaint.cpp:130
const Paint & paint
double y
double x
void draw_checkerboard(SkCanvas *canvas, SkColor c1, SkColor c2, int size)
sk_sp< SkImage > MakeTextureImage(SkCanvas *canvas, sk_sp< SkImage > orig)

◆ onGpuSetup()

DrawResult skiagm::DrawImageSetAlphaOnlyGM::onGpuSetup ( SkCanvas canvas,
SkString ,
GraphiteTestContext  
)
inlineoverrideprivatevirtual

Reimplemented from skiagm::GM.

Definition at line 301 of file drawimageset.cpp.

301 {
302 auto direct = GrAsDirectContext(canvas->recordingContext());
303#if defined(SK_GRAPHITE)
304 auto recorder = canvas->recorder();
305#endif
306 static constexpr SkColor kColors[] = {SK_ColorBLUE, SK_ColorTRANSPARENT,
308 static constexpr SkColor kBGColor = SkColorSetARGB(128, 128, 128, 128);
309 make_image_tiles(kTileW, kTileH, kM, kN, kColors, fSet, kBGColor);
310
311 // Modify the alpha of the entries, decreasing by column, and convert even rows to
312 // alpha-only textures.
314 for (int y = 0; y < kN; ++y) {
315 for (int x = 0; x < kM; ++x) {
316 int i = y * kM + x;
317 fSet[i].fAlpha = (kM - x) / (float) kM;
318 if (y % 2 == 0) {
319#if defined(SK_GRAPHITE)
320 if (recorder) {
321 fSet[i].fImage = fSet[i].fImage->makeColorTypeAndColorSpace(
322 recorder, kAlpha_8_SkColorType, alphaSpace, {});
323 } else
324#endif
325 {
326 fSet[i].fImage = fSet[i].fImage->makeColorTypeAndColorSpace(
327 direct, kAlpha_8_SkColorType, alphaSpace);
328 }
329 }
330 }
331 }
333 }
static GrDirectContext * GrAsDirectContext(GrContext_Base *base)
@ kAlpha_8_SkColorType
pixel with alpha in 8-bit byte
Definition SkColorType.h:21
uint32_t SkColor
Definition SkColor.h:37
constexpr SkColor SK_ColorTRANSPARENT
Definition SkColor.h:99
constexpr SkColor SK_ColorBLUE
Definition SkColor.h:135
constexpr SkColor SK_ColorRED
Definition SkColor.h:126
static constexpr SkColor SkColorSetARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b)
Definition SkColor.h:49
constexpr SkColor kBGColor
virtual GrRecordingContext * recordingContext() const
virtual skgpu::graphite::Recorder * recorder() const
static sk_sp< SkColorSpace > MakeSRGB()
virtual sk_sp< SkImage > makeColorTypeAndColorSpace(GrDirectContext *direct, SkColorType targetColorType, sk_sp< SkColorSpace > targetCS) const =0
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[]
sk_sp< const SkImage > fImage
Definition SkCanvas.h:1681

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