diff options
Diffstat (limited to 'experimental/sksg/SkSGImage.h')
-rw-r--r-- | experimental/sksg/SkSGImage.h | 49 |
1 files changed, 49 insertions, 0 deletions
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 |