summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/src/image/SkImage.cpp
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
commit679147eead574d186ebf3069647b4c23e8ccace6 (patch)
treefc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /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.cpp54
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;
+}