aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/sksg
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-01-08 12:51:12 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-08 18:11:31 +0000
commit493280782430b76251145cfb7d78d6d33b65c1d1 (patch)
tree14973ee0898f4b193664a34e16c551a846509bbd /experimental/sksg
parent7b7d9b374d62c4be5d439a3a1dd761b9ef4b3052 (diff)
[skotty,sksg] Initial image support
TBR= Change-Id: Ib3c918b1d746e4f190ae05708681f2d5519afdb2 Reviewed-on: https://skia-review.googlesource.com/91980 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'experimental/sksg')
-rw-r--r--experimental/sksg/SkSGImage.cpp29
-rw-r--r--experimental/sksg/SkSGImage.h49
2 files changed, 78 insertions, 0 deletions
diff --git a/experimental/sksg/SkSGImage.cpp b/experimental/sksg/SkSGImage.cpp
new file mode 100644
index 0000000000..a0c3a759dc
--- /dev/null
+++ b/experimental/sksg/SkSGImage.cpp
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkSGImage.h"
+
+#include "SkCanvas.h"
+#include "SkImage.h"
+
+namespace sksg {
+
+Image::Image(sk_sp<SkImage> image) : fImage(std::move(image)) {}
+
+void Image::onRender(SkCanvas* canvas) const {
+ SkPaint paint;
+ paint.setAntiAlias(fAntiAlias);
+ paint.setFilterQuality(fQuality);
+
+ canvas->drawImage(fImage, 0, 0);
+}
+
+SkRect Image::onRevalidate(InvalidationController*, const SkMatrix& ctm) {
+ return SkRect::Make(fImage->bounds());
+}
+
+} // namespace sksg
diff --git a/experimental/sksg/SkSGImage.h b/experimental/sksg/SkSGImage.h
new file mode 100644
index 0000000000..7d17a50aaa
--- /dev/null
+++ b/experimental/sksg/SkSGImage.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkSGImage_DEFINED
+#define SkSGImage_DEFINED
+
+#include "SkSGRenderNode.h"
+
+#include "SkFilterQuality.h"
+
+class SkImage;
+
+namespace sksg {
+
+/**
+ * Concrete rendering node, wrapping an SkImage.
+ *
+ */
+class Image final : public RenderNode {
+public:
+ static sk_sp<Image> Make(sk_sp<SkImage> image) {
+ return image ? sk_sp<Image>(new Image(std::move(image))) : nullptr;
+ }
+
+ SG_ATTRIBUTE(Quality , SkFilterQuality, fQuality )
+ SG_ATTRIBUTE(AntiAlias, bool , fAntiAlias)
+
+protected:
+ explicit Image(sk_sp<SkImage>);
+
+ void onRender(SkCanvas*) const override;
+
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
+
+private:
+ const sk_sp<SkImage> fImage;
+ SkFilterQuality fQuality = kLow_SkFilterQuality;
+ bool fAntiAlias = true;
+
+ typedef RenderNode INHERITED;
+};
+
+} // namespace sksg
+
+#endif // SkSGImage_DEFINED