Skip to content

Commit

Permalink
Add GrDirectContext arg to SkImage::readPixels
Browse files Browse the repository at this point in the history
Note: The polarity of the staging flag is inverted from usual because
a G3 dependency with no SkUserConfig.h relies on the legacy API.

Once this lands, we will migrate them and others, then remove the
staging API. The inverted staging flag is kind of nice, actually - I may
use that pattern in the future. It means less total CLs and it's just as
easy to flip the bit on or off during debugging.

Bug: skia:104662
Change-Id: I48cba1eeae3e2e6f79918c6d243e0666e68ec71b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/310656
Reviewed-by: Brian Salomon <[email protected]>
Reviewed-by: Robert Phillips <[email protected]>
Commit-Queue: Adlai Holler <[email protected]>
  • Loading branch information
Adlai-Holler authored and Skia Commit-Bot committed Aug 27, 2020
1 parent b0ebb5a commit bcfc554
Show file tree
Hide file tree
Showing 58 changed files with 367 additions and 233 deletions.
2 changes: 1 addition & 1 deletion bench/PDFBench.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class PDFImageBench : public Benchmark {
// force decoding, throw away reference to encoded data.
SkAutoPixmapStorage pixmap;
pixmap.alloc(SkImageInfo::MakeN32Premul(img->dimensions()));
if (img->readPixels(pixmap, 0, 0)) {
if (img->readPixels(nullptr, pixmap, 0, 0)) {
fImage = SkImage::MakeRasterCopy(pixmap);
}
}
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Bitmap_writePixels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ void draw(SkCanvas* canvas) {
srcPixels.resize(height * width * 4);
SkPixmap pixmap(SkImageInfo::MakeN32Premul(width, height), (const void*) &srcPixels.front(),
width * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
canvas->scale(.5f, .5f);
width /= 4;
height /= 4;
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Image_MakeRasterData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
sk_sp<SkData> data = SkData::MakeUninitialized(rowBytes * image->height());
SkImageInfo dstInfo = SkImageInfo::MakeN32(image->width(), image->height(),
kPremul_SkAlphaType);
image->readPixels(dstInfo, data->writable_data(), rowBytes, 0, 0, SkImage::kAllow_CachingHint);
image->readPixels(nullptr, dstInfo, data->writable_data(), rowBytes, 0, 0, SkImage::kAllow_CachingHint);
sk_sp<SkImage> raw = SkImage::MakeRasterData(dstInfo.makeColorType(kRGBA_8888_SkColorType),
data, rowBytes);
canvas->drawImage(image, 0, 0);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Image_readPixels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ void draw(SkCanvas* canvas) {
SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
for (int y = 0; y < 512; y += height ) {
for (int x = 0; x < 512; x += width ) {
if (image->readPixels(info, &dstPixels.front(), width * 4, x, y)) {
if (image->readPixels(nullptr, info, &dstPixels.front(), width * 4, x, y)) {
SkPixmap dstPixmap(info, &dstPixels.front(), width * 4);
SkBitmap bitmap;
bitmap.installPixels(dstPixmap);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Image_readPixels_2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void draw(SkCanvas* canvas) {
SkPixmap pixmap(SkImageInfo::MakeN32Premul(quarterWidth, quarterHeight),
&srcPixels.front() + x * image->height() * quarterWidth +
y * quarterWidth, rowBytes);
image->readPixels(pixmap, x * quarterWidth, y * quarterHeight);
image->readPixels(nullptr, pixmap, x * quarterWidth, y * quarterHeight);
}
}
canvas->scale(.5f, .5f);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_addr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
pixels.resize(image->height() * image->width() * 4);
SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,
image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
SkDebugf("pixels address: 0x%llx\n", pixmap.addr());
SkPixmap inset;
if (pixmap.extractSubset(&inset, {128, 128, 512, 512})) {
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_extractSubset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
pixels.resize(image->height() * image->width() * 4);
SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,
image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
SkPixmap inset;
if (pixmap.extractSubset(&inset, {128, 128, 512, 512})) {
SkBitmap bitmap;
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
pixels.resize(image->height() * image->width() * 4);
SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,
image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
SkPixmap inset;
if (pixmap.extractSubset(&inset, {128, 128, 512, 512})) {
const SkImageInfo& info = inset.info();
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_readPixels_2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ void draw(SkCanvas* canvas) {
const int rowBytes = image->width() * 4;
srcPixels.resize(image->height() * rowBytes);
SkPixmap pixmap(info, (const void*) &srcPixels.front(), rowBytes);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
for (int offset : { 32, 64, 96 } ) {
std::vector<int32_t> dstPixels;
dstPixels.resize(image->height() * rowBytes);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_readPixels_3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ void draw(SkCanvas* canvas) {
const int rowBytes = image->width() * 4;
srcPixels.resize(image->height() * rowBytes);
SkPixmap pixmap(info, (const void*) &srcPixels.front(), rowBytes);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
for (int offset : { 32, 64, 96 } ) {
std::vector<int32_t> dstPixels;
dstPixels.resize(image->height() * rowBytes);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_readPixels_4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ void draw(SkCanvas* canvas) {
const int rowBytes = image->width() * 4;
srcPixels.resize(image->height() * rowBytes);
SkPixmap pixmap(info, (const void*) &srcPixels.front(), rowBytes);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
for (int index = 0; index < 3; ++index ) {
std::vector<int32_t> dstPixels;
dstPixels.resize(image->height() * rowBytes);
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_reset_2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
pixels.resize(image->height() * image->width() * 4);
SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,
image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
int x = 0;
for (auto colorType : { kRGBA_8888_SkColorType, kBGRA_8888_SkColorType } ) {
pixmap.reset(SkImageInfo::Make(image->width(), image->height(), colorType,
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_scalePixels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ void draw(SkCanvas* canvas) {
int rowBytes = image->width() * 4;
srcPixels.resize(image->height() * rowBytes);
SkPixmap pixmap(info, (const void*) &srcPixels.front(), rowBytes);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
for (int offset : { 32, 64, 96 } ) {
info = SkImageInfo::MakeN32Premul(image->width() + offset, image->height());
rowBytes = info.width() * 4;
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/Pixmap_writable_addr32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void draw(SkCanvas* canvas) {
pixels.resize(image->height() * image->width() * 4);
SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,
image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
image->readPixels(pixmap, 0, 0);
image->readPixels(nullptr, pixmap, 0, 0);
for (int y = 0; y < pixmap.height() / 2; ++y) {
for (int x = 0; x < pixmap.width(); ++x) {
if ((x & 4) == (y & 4)) {
Expand Down
2 changes: 1 addition & 1 deletion fuzz/FuzzEncoders.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ DEF_FUZZ(_MakeEncoderCorpus, fuzz) {
dstPixels.resize(img->height() * rowBytes);
SkPixmap pm(SkImageInfo::MakeN32Premul(img->width(), img->height()),
&dstPixels.front(), rowBytes);
if (!img->readPixels(pm, 0, 0)) {
if (!img->readPixels(nullptr, pm, 0, 0)) {
SkDebugf("Could not read pixmap\n");
return;
}
Expand Down
2 changes: 1 addition & 1 deletion gm/encode_alpha_jpeg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace skiagm {
static inline void read_into_pixmap(SkPixmap* dst, SkImageInfo dstInfo, void* dstPixels,
sk_sp<SkImage> src) {
dst->reset(dstInfo, dstPixels, dstInfo.minRowBytes());
src->readPixels(*dst, 0, 0, SkImage::CachingHint::kDisallow_CachingHint);
src->readPixels(nullptr, *dst, 0, 0, SkImage::CachingHint::kDisallow_CachingHint);
}

static inline sk_sp<SkImage> encode_pixmap_and_make_image(const SkPixmap& src,
Expand Down
20 changes: 11 additions & 9 deletions gm/image_pict.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,10 @@ class ImageCacheratorGM : public skiagm::GM {
canvas->drawLine(r.left(), r.bottom(), r.right(), r.top(), paint);
}

static void draw_as_bitmap(SkCanvas* canvas, SkImage* image, SkScalar x, SkScalar y) {
static void draw_as_bitmap(GrDirectContext* dContext, SkCanvas* canvas, SkImage* image,
SkScalar x, SkScalar y) {
SkBitmap bitmap;
if (as_IB(image)->getROPixels(&bitmap)) {
if (as_IB(image)->getROPixels(dContext, &bitmap)) {
canvas->drawBitmap(bitmap, x, y);
} else {
draw_placeholder(canvas, x, y, image->width(), image->height());
Expand Down Expand Up @@ -323,7 +324,7 @@ class ImageCacheratorGM : public skiagm::GM {
canvas->drawImage(texImage.get(), x, y);
}

void drawRow(SkCanvas* canvas, float scale) const {
void drawRow(GrDirectContext* dContext, SkCanvas* canvas, float scale) const {
canvas->scale(scale, scale);

SkMatrix matrix = SkMatrix::Translate(-100, -100);
Expand All @@ -335,29 +336,30 @@ class ImageCacheratorGM : public skiagm::GM {
draw_as_tex(canvas, fImage.get(), 150, 0);
draw_as_tex(canvas, fImageSubset.get(), 150+101, 0);

draw_as_bitmap(canvas, fImage.get(), 310, 0);
draw_as_bitmap(canvas, fImageSubset.get(), 310+101, 0);
draw_as_bitmap(dContext, canvas, fImage.get(), 310, 0);
draw_as_bitmap(dContext, canvas, fImageSubset.get(), 310+101, 0);
}

DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override {
if (!this->makeCaches(GrAsDirectContext(canvas->recordingContext()))) {
auto dContext = GrAsDirectContext(canvas->recordingContext());
if (!this->makeCaches(dContext)) {
errorMsg->printf("Could not create cached images");
return DrawResult::kSkip;
}

canvas->save();
canvas->translate(20, 20);
this->drawRow(canvas, 1.0);
this->drawRow(dContext, canvas, 1.0);
canvas->restore();

canvas->save();
canvas->translate(20, 150);
this->drawRow(canvas, 0.25f);
this->drawRow(dContext, canvas, 0.25f);
canvas->restore();

canvas->save();
canvas->translate(20, 220);
this->drawRow(canvas, 2.0f);
this->drawRow(dContext, canvas, 2.0f);
canvas->restore();

return DrawResult::kOk;
Expand Down
25 changes: 17 additions & 8 deletions gm/lattice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "include/core/SkSize.h"
#include "include/core/SkString.h"
#include "include/core/SkSurface.h"
#include "include/gpu/GrDirectContext.h"
#include "include/private/SkMalloc.h"
#include "tools/ToolUtils.h"

Expand Down Expand Up @@ -80,10 +81,10 @@ static sk_sp<SkImage> make_image(SkCanvas* root, int* xDivs, int* yDivs, int pad
return surface->makeImageSnapshot();
}

static void image_to_bitmap(const SkImage* image, SkBitmap* bm) {
static void image_to_bitmap(GrDirectContext* dContext, const SkImage* image, SkBitmap* bm) {
SkImageInfo info = SkImageInfo::MakeN32Premul(image->width(), image->height());
bm->allocPixels(info);
image->readPixels(info, bm->getPixels(), bm->rowBytes(), 0, 0);
image->readPixels(dContext, info, bm->getPixels(), bm->rowBytes(), 0, 0);
}

/**
Expand All @@ -103,7 +104,8 @@ class LatticeGM : public skiagm::GM {
return SkISize::Make(800, 800);
}

void onDrawHelper(SkCanvas* canvas, int padLeft, int padTop, int padRight, int padBottom) {
void onDrawHelper(GrDirectContext* dContext, SkCanvas* canvas, int padLeft, int padTop,
int padRight, int padBottom) {
canvas->save();

int xDivs[5];
Expand All @@ -114,7 +116,7 @@ class LatticeGM : public skiagm::GM {
SkBitmap bitmap;
sk_sp<SkImage> image = make_image(canvas, xDivs + 1, yDivs + 1, padLeft, padTop,
padRight, padBottom);
image_to_bitmap(image.get(), &bitmap);
image_to_bitmap(dContext, image.get(), &bitmap);

const SkSize size[] = {
{ 50, 50, }, // shrink in both axes
Expand Down Expand Up @@ -160,7 +162,7 @@ class LatticeGM : public skiagm::GM {
for (int rectNum = 0; rectNum < 3; rectNum++) {
int srcX = xDivs[fixedColorX[rectNum]-1];
int srcY = yDivs[fixedColorY[rectNum]-1];
image->readPixels(info, &fixedColor[rectNum], 4, srcX, srcY);
image->readPixels(dContext, info, &fixedColor[rectNum], 4, srcX, srcY);
}

// Include the degenerate first div. While normally the first patch is "scalable",
Expand Down Expand Up @@ -205,10 +207,17 @@ class LatticeGM : public skiagm::GM {
canvas->restore();
}

void onDraw(SkCanvas* canvas) override {
this->onDrawHelper(canvas, 0, 0, 0, 0);
DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override {
auto rContext = canvas->recordingContext();
auto dContext = GrAsDirectContext(rContext);
if (rContext && !dContext) {
*errorMsg = "not supported in ddl";
return DrawResult::kSkip;
}
this->onDrawHelper(dContext, canvas, 0, 0, 0, 0);
canvas->translate(0.0f, 400.0f);
this->onDrawHelper(canvas, 3, 7, 4, 11);
this->onDrawHelper(dContext, canvas, 3, 7, 4, 11);
return DrawResult::kOk;
}

private:
Expand Down
16 changes: 12 additions & 4 deletions gm/path_stroke_with_zero_length.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "include/core/SkString.h"
#include "include/core/SkSurface.h"
#include "include/core/SkTypes.h"
#include "include/gpu/GrDirectContext.h"
#include "include/utils/SkParsePath.h"
#include "src/core/SkAutoPixmapStorage.h"

Expand All @@ -34,7 +35,8 @@
// Each test is drawn to a 50x20 offscreen surface, and expected to produce some number (0 - 2) of
// visible pieces of cap geometry. These are counted by scanning horizontally for peaks (blobs).

static bool draw_path_cell(SkCanvas* canvas, SkImage* img, int expectedCaps) {
static bool draw_path_cell(GrDirectContext* dContext, SkCanvas* canvas, SkImage* img,
int expectedCaps) {
// Draw the image
canvas->drawImage(img, 0, 0);

Expand All @@ -44,7 +46,7 @@ static bool draw_path_cell(SkCanvas* canvas, SkImage* img, int expectedCaps) {
SkImageInfo info = SkImageInfo::MakeN32Premul(w, h);
SkAutoPixmapStorage pmap;
pmap.alloc(info);
if (!img->readPixels(pmap, 0, 0)) {
if (!img->readPixels(dContext, pmap, 0, 0)) {
return false;
}

Expand Down Expand Up @@ -128,6 +130,9 @@ static const SkColor kFailureRed = 0x7FE7298A;
static const SkColor kSuccessGreen = 0x7F1B9E77;

static void draw_zero_length_capped_paths(SkCanvas* canvas, bool aa) {
auto rContext = canvas->recordingContext();
auto dContext = GrAsDirectContext(rContext);
SkASSERT(dContext || !rContext); // not supported in DDL.
canvas->translate(kCellPad, kCellPad);

SkImageInfo info = canvas->imageInfo().makeWH(kCellWidth, kCellHeight);
Expand Down Expand Up @@ -166,7 +171,7 @@ static void draw_zero_length_capped_paths(SkCanvas* canvas, bool aa) {
// (without a verb or close), which shouldn't draw anything.
int expectedCaps = ((SkPaint::kButt_Cap == cap) || !verb) ? 0 : 1;

if (!draw_path_cell(canvas, img.get(), expectedCaps)) {
if (!draw_path_cell(dContext, canvas, img.get(), expectedCaps)) {
++numFailedTests;
}
canvas->translate(kCellWidth + kCellPad, 0);
Expand All @@ -188,6 +193,9 @@ DEF_SIMPLE_GM_BG(zero_length_paths_bw, canvas, kTotalWidth, kTotalHeight, SK_Col
}

static void draw_zero_length_capped_paths_dbl_contour(SkCanvas* canvas, bool aa) {
auto rContext = canvas->recordingContext();
auto dContext = GrAsDirectContext(rContext);
SkASSERT(dContext || !rContext); // not supported in DDL.
canvas->translate(kCellPad, kCellPad);

SkImageInfo info = canvas->imageInfo().makeWH(kCellWidth, kCellHeight);
Expand Down Expand Up @@ -235,7 +243,7 @@ static void draw_zero_length_capped_paths_dbl_contour(SkCanvas* canvas, bool aa)
expectedCaps = 0;
}

if (!draw_path_cell(canvas, img.get(), expectedCaps)) {
if (!draw_path_cell(dContext, canvas, img.get(), expectedCaps)) {
++numFailedTests;
}
canvas->translate(kCellWidth + kCellPad, 0);
Expand Down
21 changes: 11 additions & 10 deletions gm/readpixels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,14 @@ static sk_sp<SkColorSpace> make_small_gamut() {
return make_parametric_transfer_fn(primaries);
}

static void draw_image(SkCanvas* canvas, SkImage* image, SkColorType dstColorType,
SkAlphaType dstAlphaType, sk_sp<SkColorSpace> dstColorSpace,
SkImage::CachingHint hint) {
static void draw_image(GrDirectContext* dContext, SkCanvas* canvas, SkImage* image,
SkColorType dstColorType, SkAlphaType dstAlphaType,
sk_sp<SkColorSpace> dstColorSpace, SkImage::CachingHint hint) {
size_t rowBytes = image->width() * SkColorTypeBytesPerPixel(dstColorType);
sk_sp<SkData> data = SkData::MakeUninitialized(rowBytes * image->height());
SkImageInfo dstInfo = SkImageInfo::Make(image->width(), image->height(), dstColorType,
dstAlphaType, dstColorSpace);
if (!image->readPixels(dstInfo, data->writable_data(), rowBytes, 0, 0, hint)) {
if (!image->readPixels(dContext, dstInfo, data->writable_data(), rowBytes, 0, 0, hint)) {
memset(data->writable_data(), 0, rowBytes * image->height());
}

Expand Down Expand Up @@ -165,13 +165,14 @@ class ReadPixelsGM : public skiagm::GM {
if (!image) {
continue;
}
if (auto direct = GrAsDirectContext(canvas->recordingContext())) {
image = image->makeTextureImage(direct);
auto dContext = GrAsDirectContext(canvas->recordingContext());
if (dContext) {
image = image->makeTextureImage(dContext);
}
if (image) {
for (SkColorType dstColorType : colorTypes) {
for (SkAlphaType dstAlphaType : alphaTypes) {
draw_image(canvas, image.get(), dstColorType, dstAlphaType,
draw_image(dContext, canvas, image.get(), dstColorType, dstAlphaType,
dstColorSpace, SkImage::kAllow_CachingHint);
canvas->translate((float)kWidth, 0.0f);
}
Expand Down Expand Up @@ -232,8 +233,8 @@ class ReadPixelsCodecGM : public skiagm::GM {
for (SkColorType dstColorType : colorTypes) {
for (SkAlphaType dstAlphaType : alphaTypes) {
for (SkImage::CachingHint hint : hints) {
draw_image(canvas, image.get(), dstColorType, dstAlphaType, dstColorSpace,
hint);
draw_image(nullptr, canvas, image.get(), dstColorType, dstAlphaType,
dstColorSpace, hint);
canvas->translate(0.0f, (float) kEncodedHeight + 1);
}
}
Expand Down Expand Up @@ -299,7 +300,7 @@ class ReadPixelsPictureGM : public skiagm::GM {
for (SkColorType dstColorType : colorTypes) {
for (SkAlphaType dstAlphaType : alphaTypes) {
for (SkImage::CachingHint hint : hints) {
draw_image(canvas, image.get(), dstColorType, dstAlphaType,
draw_image(nullptr, canvas, image.get(), dstColorType, dstAlphaType,
dstColorSpace, hint);
canvas->translate(0.0f, (float) kHeight);
}
Expand Down
Loading

0 comments on commit bcfc554

Please sign in to comment.