sk_image_t* sk_image_new_raster_copy(const sk_imageinfo_t* cinfo, const void* pixels, size_t rowBytes) { SkImageInfo info; if (!from_c_info(*cinfo, &info)) { return NULL; } return (sk_image_t*)SkImage::MakeRasterCopy(SkPixmap(info, pixels, rowBytes)).release(); }
bool SkDeferredCanvas::onAccessTopLayerPixels(SkPixmap* pixmap) { SkImageInfo info; size_t rowBytes; SkIPoint* origin = nullptr; void* addr = fCanvas->accessTopLayerPixels(&info, &rowBytes, origin); if (addr) { *pixmap = SkPixmap(info, addr, rowBytes); return true; } return false; }
// For a while willPlayBackBitmaps() ignored SkImages and just looked for SkBitmaps. static void test_images_are_found_by_willPlayBackBitmaps(skiatest::Reporter* reporter) { // We just need _some_ SkImage const SkPMColor pixel = 0; const SkImageInfo info = SkImageInfo::MakeN32Premul(1, 1); sk_sp<SkImage> image(SkImage::MakeRasterCopy(SkPixmap(info, &pixel, sizeof(pixel)))); SkPictureRecorder recorder; recorder.beginRecording(100,100)->drawImage(image, 0,0); sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); REPORTER_ASSERT(reporter, picture->willPlayBackBitmaps()); }
void onPreDraw(SkCanvas* c) override { CommonBitmapFPBenchmark::onPreDraw(c); fImage = SkImage::MakeRasterCopy( SkPixmap(fInfo, fBitmap.get(), sizeof(SkPMColor) * fSrcSize.fWidth)); fPaint.setShader(fImage->makeShader(fXTile, fYTile)); if (fUseBilerp) { fPaint.setFilterQuality(SkFilterQuality::kLow_SkFilterQuality); } else { fPaint.setFilterQuality(SkFilterQuality::kNone_SkFilterQuality); } }
bool allocHandle(const SkImageInfo& info, Rec* rec) override { // let CG allocate the pixels CGContextRef cg = SkCreateCGContext(SkPixmap(info, nullptr, 0)); if (!cg) { return false; } rec->fReleaseProc = [](void* pixels, void* ctx){ CGContextRelease((CGContextRef)ctx); }; rec->fReleaseCtx = cg; rec->fPixels = CGBitmapContextGetData(cg); rec->fRowBytes = CGBitmapContextGetBytesPerRow(cg); rec->fHandle = cg; CGContextSaveGState(cg); // balanced each time updateContext is called return true; }
SkImage* SkImage::NewFromRaster(const Info& info, const void* pixels, size_t rowBytes, RasterReleaseProc proc, ReleaseContext releasectx) { return MakeFromRaster(SkPixmap(info, pixels, rowBytes), proc, releasectx).release(); }
SkImage* SkImage::NewRasterCopy(const Info& info, const void* pixels, size_t rowBytes, SkColorTable* ctable) { return MakeRasterCopy(SkPixmap(info, pixels, rowBytes, ctable)).release(); }