void draw(SkCanvas* canvas) { auto drawImage = [=](sk_sp<SkImage> image, const char* label) -> void { if (nullptr == image) { return; } SkPaint paint; paint.setAntiAlias(true); canvas->drawImage(image, 0, 0); canvas->drawString(label, image->width() / 2, image->height() / 4, paint); if (canvas->getGrContext()) { canvas->drawString(image->isValid(canvas->getGrContext()) ? "is valid on GPU" : "not valid on GPU", 20, image->height() * 5 / 8, paint); } canvas->drawString(image->isValid(nullptr) ? "is valid on CPU" : "not valid on CPU", 20, image->height() * 7 / 8, paint); }; sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source)); sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(canvas->getGrContext(), backEndTexture, kTopLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType, kOpaque_SkAlphaType, nullptr)); drawImage(image, "image"); canvas->translate(image->width(), 0); drawImage(bitmapImage, "source"); canvas->translate(-image->width(), image->height()); drawImage(textureImage, "backEndTexture"); }
PassRefPtr<Image> ImageBitmap::getSourceImageForCanvas(SourceImageMode, SourceImageStatus* status) const { *status = NormalSourceImageStatus; return bitmapImage(); }
PassRefPtr<Image> ImageBitmap::getSourceImageForCanvas(SourceImageStatus* status, AccelerationHint) const { *status = NormalSourceImageStatus; return bitmapImage(); }