本文整理汇总了C++中sk_sp::makeImageSnapshot方法的典型用法代码示例。如果您正苦于以下问题:C++ sk_sp::makeImageSnapshot方法的具体用法?C++ sk_sp::makeImageSnapshot怎么用?C++ sk_sp::makeImageSnapshot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sk_sp
的用法示例。
在下文中一共展示了sk_sp::makeImageSnapshot方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onDraw
void onDraw(int loops, SkCanvas* canvas) override {
if (!fSurface) {
GrContext* context = canvas->getGrContext();
if (nullptr == context) {
return;
}
SkImageInfo info = SkImageInfo::Make(fW, fH, kN32_SkColorType, kPremul_SkAlphaType,
kSRGB_SkColorProfileType);
fSurface = SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info);
}
// Clear surface once:
fSurface->getCanvas()->clear(SK_ColorBLACK);
SkPaint paint;
paint.setFilterQuality(kMedium_SkFilterQuality);
for (int i = 0; i < loops; i++) {
// Touch surface so mips are dirtied
fSurface->getCanvas()->drawPoint(0, 0, SK_ColorWHITE);
// Draw reduced version of surface to original canvas, to trigger mip generation
canvas->save();
canvas->scale(0.1f, 0.1f);
canvas->drawImage(fSurface->makeImageSnapshot(SkBudgeted::kNo), 0, 0, &paint);
canvas->restore();
}
}
示例2: test_surface
// Exercise the public API of SkSpecialSurface (e.g., getCanvas, newImageSnapshot)
static void test_surface(const sk_sp<SkSpecialSurface>& surf,
skiatest::Reporter* reporter,
int offset) {
const SkIRect surfSubset = TestingSpecialSurfaceAccess::Subset(surf.get());
REPORTER_ASSERT(reporter, offset == surfSubset.fLeft);
REPORTER_ASSERT(reporter, offset == surfSubset.fTop);
REPORTER_ASSERT(reporter, kSmallerSize == surfSubset.width());
REPORTER_ASSERT(reporter, kSmallerSize == surfSubset.height());
SkCanvas* canvas = surf->getCanvas();
SkASSERT_RELEASE(canvas);
canvas->clear(SK_ColorRED);
sk_sp<SkSpecialImage> img(surf->makeImageSnapshot());
REPORTER_ASSERT(reporter, img);
const SkIRect imgSubset = img->subset();
REPORTER_ASSERT(reporter, surfSubset == imgSubset);
// the canvas was invalidated by the newImageSnapshot call
REPORTER_ASSERT(reporter, !surf->getCanvas());
}
示例3: check_isopaque
static void check_isopaque(skiatest::Reporter* reporter, const sk_sp<SkSurface>& surface,
bool expectedOpaque) {
sk_sp<SkImage> image(surface->makeImageSnapshot());
REPORTER_ASSERT(reporter, image->isOpaque() == expectedOpaque);
}
示例4: image
sk_sp<SkImage> image() override {
return surface->makeImageSnapshot();
}