diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/third_party/skia/src/image/SkImage.cpp |
Initial import.
Diffstat (limited to 'chromium/third_party/skia/src/image/SkImage.cpp')
-rw-r--r-- | chromium/third_party/skia/src/image/SkImage.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/chromium/third_party/skia/src/image/SkImage.cpp b/chromium/third_party/skia/src/image/SkImage.cpp new file mode 100644 index 00000000000..39fd93acc66 --- /dev/null +++ b/chromium/third_party/skia/src/image/SkImage.cpp @@ -0,0 +1,54 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkBitmap.h" +#include "SkCanvas.h" +#include "SkImagePriv.h" +#include "SkImage_Base.h" + +SK_DEFINE_INST_COUNT(SkImage) + +static SkImage_Base* as_IB(SkImage* image) { + return static_cast<SkImage_Base*>(image); +} + +static const SkImage_Base* as_IB(const SkImage* image) { + return static_cast<const SkImage_Base*>(image); +} + +uint32_t SkImage::NextUniqueID() { + static int32_t gUniqueID; + + // never return 0; + uint32_t id; + do { + id = sk_atomic_inc(&gUniqueID) + 1; + } while (0 == id); + return id; +} + +void SkImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, + const SkPaint* paint) { + as_IB(this)->onDraw(canvas, x, y, paint); +} + +void SkImage::draw(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) { + as_IB(this)->onDrawRectToRect(canvas, src, dst, paint); +} + +GrTexture* SkImage::getTexture() { + return as_IB(this)->onGetTexture(); +} + +SkData* SkImage::encode(SkImageEncoder::Type type, int quality) const { + SkBitmap bm; + if (as_IB(this)->getROPixels(&bm)) { + return SkImageEncoder::EncodeData(bm, type, quality); + } + return NULL; +} |