36 explicit Drawer() : fImageInfo(
SkImageInfo::MakeN32Premul(200, 100)) {
38 surf->getCanvas()->clear(0xffffffff);
41 surf->getCanvas()->drawCircle(50, 50, 50, circlePaint);
42 fCircleImage = surf->makeImageSnapshot();
45 const SkImageInfo& imageInfo()
const {
return fImageInfo; }
61 canvas->
clear(0xff000000);
64 canvas->
drawRect(canvasRect, greenPaint);
77class RecordingStrategy {
79 virtual ~RecordingStrategy() {}
80 virtual const SkBitmap& recordAndReplay(
const Drawer& drawer,
85class BitmapBackedCanvasStrategy :
public RecordingStrategy {
88 BitmapBackedCanvasStrategy(
const SkImageInfo& imageInfo) {
92 const SkBitmap& recordAndReplay(
const Drawer& drawer,
const SkRect& intoClip,
95 canvas.
clear(0xffffffff);
98 drawer.draw(&canvas, intoClip,
mode);
106class PictureStrategy :
public RecordingStrategy {
113 fWidth = imageInfo.
width();
114 fHeight = imageInfo.
height();
117 const SkBitmap& recordAndReplay(
const Drawer& drawer,
const SkRect& intoClip,
125 drawer.draw(canvas, canvasRect,
mode);
129 replayCanvas.clear(0xffffffff);
130 replayCanvas.clipRect(intoClip);
148 BitmapBackedCanvasStrategy golden(drawer.imageInfo());
149 PictureStrategy
picture(drawer.imageInfo());
152 unsigned numErrors = 0;
173 errors.appendf(
"For SkBlendMode %d %s: SkPictureRecorder bitmap is wrong\n",
DEF_TEST(SkRecordingAccuracyXfermode, reporter)
SK_API const char * SkBlendMode_Name(SkBlendMode blendMode)
static constexpr int kSkBlendModeCount
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
#define REPORTER_ASSERT(r, cond,...)
static void draw(SkCanvas *canvas, SkRect &target, int x, int y)
void allocPixels(const SkImageInfo &info, size_t rowBytes)
size_t computeByteSize() const
int saveLayer(const SkRect *bounds, const SkPaint *paint)
void drawRect(const SkRect &rect, const SkPaint &paint)
void clipRect(const SkRect &rect, SkClipOp op, bool doAntiAlias)
void clear(SkColor color)
void drawImageRect(const SkImage *, const SkRect &src, const SkRect &dst, const SkSamplingOptions &, const SkPaint *, SrcRectConstraint)
void setColor(SkColor color)
void setBlendMode(SkBlendMode mode)
SkCanvas * beginRecording(const SkRect &bounds, sk_sp< SkBBoxHierarchy > bbh)
sk_sp< SkPicture > finishRecordingAsPicture()
virtual void playback(SkCanvas *canvas, AbortCallback *callback=nullptr) const =0
clipRect(r.rect, r.opAA.op(), r.opAA.aa())) template<> void Draw
sk_sp< const SkPicture > picture
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
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 mode
SkSamplingOptions(SkFilterMode::kLinear))
static SkImageInfo MakeN32Premul(int width, int height)
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
static constexpr SkRect MakeWH(float w, float h)