diff options
author | Florin Malita <fmalita@chromium.org> | 2018-07-16 12:32:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-19 14:18:25 +0000 |
commit | 84364ee71dad9adeb1beb99b19e27d0c32e6c429 (patch) | |
tree | c7dc7724b92f802a2cf4e0c896551475d8f095d7 /src/core/SkBitmapController.cpp | |
parent | 81bb123957abbc51a68591ceff287040daffa8a1 (diff) |
De-virtualize SkBitmapController
Fold its only subclass (SkDefaultBitmapController) into base.
Change-Id: I77f5c9f3b459d644d5749b8ec34722ec6c2228bf
Reviewed-on: https://skia-review.googlesource.com/141541
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/core/SkBitmapController.cpp')
-rw-r--r-- | src/core/SkBitmapController.cpp | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/src/core/SkBitmapController.cpp b/src/core/SkBitmapController.cpp index ed16f9bc21..dfe16682c6 100644 --- a/src/core/SkBitmapController.cpp +++ b/src/core/SkBitmapController.cpp @@ -16,34 +16,16 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// -SkBitmapController::State* SkBitmapController::requestBitmap(const SkBitmapProvider& provider, +SkBitmapController::State* SkBitmapController::RequestBitmap(const SkBitmapProvider& provider, const SkMatrix& inv, SkFilterQuality quality, SkArenaAlloc* alloc) { - State* state = this->onRequestBitmap(provider, inv, quality, alloc); - if (state) { - if (nullptr == state->fPixmap.addr()) { - state = nullptr; - } - } - return state; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// + auto* state = alloc->make<SkBitmapController::State>(provider, inv, quality); -class SkDefaultBitmapControllerState : public SkBitmapController::State { -public: - SkDefaultBitmapControllerState(const SkBitmapProvider&, const SkMatrix& inv, SkFilterQuality); - -private: - SkBitmap fResultBitmap; - sk_sp<const SkMipMap> fCurrMip; - - bool processHighRequest(const SkBitmapProvider&); - bool processMediumRequest(const SkBitmapProvider&); -}; + return state->pixmap().addr() ? state : nullptr; +} -bool SkDefaultBitmapControllerState::processHighRequest(const SkBitmapProvider& provider) { +bool SkBitmapController::State::processHighRequest(const SkBitmapProvider& provider) { if (fQuality != kHigh_SkFilterQuality) { return false; } @@ -78,7 +60,7 @@ bool SkDefaultBitmapControllerState::processHighRequest(const SkBitmapProvider& * Modulo internal errors, this should always succeed *if* the matrix is downscaling * (in this case, we have the inverse, so it succeeds if fInvMatrix is upscaling) */ -bool SkDefaultBitmapControllerState::processMediumRequest(const SkBitmapProvider& provider) { +bool SkBitmapController::State::processMediumRequest(const SkBitmapProvider& provider) { SkASSERT(fQuality <= kMedium_SkFilterQuality); if (fQuality != kMedium_SkFilterQuality) { return false; @@ -126,9 +108,9 @@ bool SkDefaultBitmapControllerState::processMediumRequest(const SkBitmapProvider return false; } -SkDefaultBitmapControllerState::SkDefaultBitmapControllerState(const SkBitmapProvider& provider, - const SkMatrix& inv, - SkFilterQuality qual) { +SkBitmapController::State::State(const SkBitmapProvider& provider, + const SkMatrix& inv, + SkFilterQuality qual) { fInvMatrix = inv; fQuality = qual; @@ -142,10 +124,3 @@ SkDefaultBitmapControllerState::SkDefaultBitmapControllerState(const SkBitmapPro // and will destroy us if it is nullptr. fPixmap.reset(fResultBitmap.info(), fResultBitmap.getPixels(), fResultBitmap.rowBytes()); } - -SkBitmapController::State* SkDefaultBitmapController::onRequestBitmap(const SkBitmapProvider& bm, - const SkMatrix& inverse, - SkFilterQuality quality, - SkArenaAlloc* alloc) { - return alloc->make<SkDefaultBitmapControllerState>(bm, inverse, quality); -} |