blob: f3e3151c48b348709a463dfe897c7d104e5be38a [file] [log] [blame]
Florin Malita49328072018-01-08 12:51:12 -05001/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkSGImage_DEFINED
9#define SkSGImage_DEFINED
10
11#include "SkSGRenderNode.h"
12
13#include "SkFilterQuality.h"
14
15class SkImage;
16
17namespace sksg {
18
19/**
20 * Concrete rendering node, wrapping an SkImage.
21 *
22 */
23class Image final : public RenderNode {
24public:
25 static sk_sp<Image> Make(sk_sp<SkImage> image) {
Florin Malita62c6bd92018-10-03 14:39:56 -040026 return sk_sp<Image>(new Image(std::move(image)));
Florin Malita49328072018-01-08 12:51:12 -050027 }
28
Florin Malita62c6bd92018-10-03 14:39:56 -040029 SG_ATTRIBUTE(Image, sk_sp<SkImage> , fImage )
Florin Malita49328072018-01-08 12:51:12 -050030 SG_ATTRIBUTE(Quality , SkFilterQuality, fQuality )
31 SG_ATTRIBUTE(AntiAlias, bool , fAntiAlias)
32
33protected:
34 explicit Image(sk_sp<SkImage>);
35
Florin Malitac0132ff2018-08-09 07:40:01 -040036 void onRender(SkCanvas*, const RenderContext*) const override;
Florin Malitaeb46bd82019-02-12 09:33:21 -050037 const RenderNode* onNodeAt(const SkPoint&) const override;
Florin Malita49328072018-01-08 12:51:12 -050038
39 SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
40
41private:
Florin Malita62c6bd92018-10-03 14:39:56 -040042 sk_sp<SkImage> fImage;
43 SkFilterQuality fQuality = kLow_SkFilterQuality;
44 bool fAntiAlias = true;
Florin Malita49328072018-01-08 12:51:12 -050045
46 typedef RenderNode INHERITED;
47};
48
49} // namespace sksg
50
51#endif // SkSGImage_DEFINED