diff options
author | reed <reed@google.com> | 2015-12-02 14:19:47 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-02 14:19:47 -0800 |
commit | 7850eb2f357c215b2e2c50bf16d6c6df38c7967f (patch) | |
tree | a67b456a7b21c9ee3dbec07772882dd117672b52 /src/core/SkImageGenerator.cpp | |
parent | dc5685ac3752e90dd68179e9f1675ff6f15ed600 (diff) |
API to support native scaling by image-generator
BUG=skia:
Review URL: https://codereview.chromium.org/1396323007
Diffstat (limited to 'src/core/SkImageGenerator.cpp')
-rw-r--r-- | src/core/SkImageGenerator.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/SkImageGenerator.cpp b/src/core/SkImageGenerator.cpp index 5e401920cd..dcd3ad00b1 100644 --- a/src/core/SkImageGenerator.cpp +++ b/src/core/SkImageGenerator.cpp @@ -111,6 +111,30 @@ GrTexture* SkImageGenerator::generateTexture(GrContext* ctx, const SkIRect* subs return this->onGenerateTexture(ctx, subset); } +bool SkImageGenerator::computeScaledDimensions(SkScalar scale, SupportedSizes* sizes) { + if (scale > 0 && scale <= 1) { + return this->onComputeScaledDimensions(scale, sizes); + } + return false; +} + +bool SkImageGenerator::generateScaledPixels(const SkISize& scaledSize, + const SkIPoint& subsetOrigin, + const SkPixmap& subsetPixels) { + if (scaledSize.width() <= 0 || scaledSize.height() <= 0) { + return false; + } + if (subsetPixels.width() <= 0 || subsetPixels.height() <= 0) { + return false; + } + const SkIRect subset = SkIRect::MakeXYWH(subsetOrigin.x(), subsetOrigin.y(), + subsetPixels.width(), subsetPixels.height()); + if (!SkIRect::MakeWH(scaledSize.width(), scaledSize.height()).contains(subset)) { + return false; + } + return this->onGenerateScaledPixels(scaledSize, subsetOrigin, subsetPixels); +} + ///////////////////////////////////////////////////////////////////////////////////////////// SkData* SkImageGenerator::onRefEncodedData() { |