aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkBitmapKey.h
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-07-12 13:10:23 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-12 20:41:41 +0000
commit7cbf5e3e03754694157891e290ff30109b8e7583 (patch)
tree8ad4ad88c04a5ddbd920f3d8a2ee4478de2a7fcf /src/pdf/SkBitmapKey.h
parent5769dd2c9ad9443b8cf2d62748d5747e547c7ad5 (diff)
SkPDF: simplify drawImage/Bitmap/Sprite code.
- SkImageSubset becomes SkKeyedImage - SkPDFCanvas::onDraw{Bitmap, Image} go away - Remove SkPDFCanvas: base classes now do the right thing. - SkPDFDevice::draw{Bitmap,Image}{Rect,}() simplified - 244 fewer SLOC. All but a few PDFs are identical, those rasterize almost the same. Change-Id: I3ceb3b8935c689719cedf1ad544b0407b5c1733e Reviewed-on: https://skia-review.googlesource.com/22218 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/pdf/SkBitmapKey.h')
-rw-r--r--src/pdf/SkBitmapKey.h57
1 files changed, 1 insertions, 56 deletions
diff --git a/src/pdf/SkBitmapKey.h b/src/pdf/SkBitmapKey.h
index a640468d62..99d88a3b86 100644
--- a/src/pdf/SkBitmapKey.h
+++ b/src/pdf/SkBitmapKey.h
@@ -7,9 +7,7 @@
#ifndef SkBitmapKey_DEFINED
#define SkBitmapKey_DEFINED
-#include "SkBitmap.h"
-#include "SkImage.h"
-#include "SkCanvas.h"
+#include "SkRect.h"
struct SkBitmapKey {
SkIRect fSubset;
@@ -20,58 +18,5 @@ struct SkBitmapKey {
bool operator!=(const SkBitmapKey& rhs) const { return !(*this == rhs); }
};
-/**
- This class has all the advantages of SkBitmaps and SkImages.
- */
-class SkImageSubset {
-public:
- SkImageSubset(sk_sp<SkImage> i, SkIRect subset = {0, 0, 0, 0})
- : fImage(std::move(i)) {
- if (!fImage) {
- fSubset = {0, 0, 0, 0};
- fID = 0;
- return;
- }
- fID = fImage->uniqueID();
- if (subset.isEmpty()) {
- fSubset = fImage->bounds();
- // SkImage always has a non-zero dimensions.
- SkASSERT(!fSubset.isEmpty());
- } else {
- fSubset = subset;
- if (!fSubset.intersect(fImage->bounds())) {
- fImage = nullptr;
- fSubset = {0, 0, 0, 0};
- fID = 0;
- }
- }
- }
-
- void setID(uint32_t id) { fID = id; }
-
- bool isValid() const { return fImage != nullptr; }
-
- SkIRect bounds() const { return SkIRect::MakeSize(this->dimensions()); }
-
- SkISize dimensions() const { return fSubset.size(); }
-
- sk_sp<SkImage> makeImage() const {
- return fSubset == fImage->bounds() ? fImage : fImage->makeSubset(fSubset);
- }
-
- SkBitmapKey getKey() const { return SkBitmapKey{fSubset, fID}; }
-
- void draw(SkCanvas* canvas, SkPaint* paint) const {
- SkASSERT(this->isValid());
- SkRect src = SkRect::Make(fSubset),
- dst = SkRect::Make(this->bounds());
- canvas->drawImageRect(fImage.get(), src, dst, paint);
- }
-
-private:
- SkIRect fSubset;
- sk_sp<SkImage> fImage;
- uint32_t fID;
-};
#endif // SkBitmapKey_DEFINED