diff options
Diffstat (limited to 'samplecode/SampleNimaActor.h')
-rw-r--r-- | samplecode/SampleNimaActor.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/samplecode/SampleNimaActor.h b/samplecode/SampleNimaActor.h new file mode 100644 index 0000000000..f2a136a2f6 --- /dev/null +++ b/samplecode/SampleNimaActor.h @@ -0,0 +1,54 @@ +/* + * 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 SampleNimaActor_DEFINED +#define SampleNimaActor_DEFINED + +#include <nima/Actor.hpp> +#include <nima/ActorImage.hpp> +#include <nima/Vec2D.hpp> + +#include "SkCanvas.h" +#include "SkImage.h" + +class SampleActor; +class SampleActorImage; + +class SampleActor : public nima::Actor { +public: + SampleActor(std::string baseName); + ~SampleActor(); + + void render(SkCanvas* canvas) const; + +private: + sk_sp<SkImage> fTexture; + std::vector<SampleActorImage> fActorImages; + std::unique_ptr<SkPaint> fPaint; + + typedef nima::Actor INHERITED; +}; + +class SampleActorImage { +public: + SampleActorImage(nima::ActorImage* actorImage, sk_sp<SkImage> texture, SkPaint* paint); + ~SampleActorImage(); + + void render(const SampleActor* actor, SkCanvas* canvas) const; + + int drawOrder() const { return fActorImage->drawOrder(); } + +private: + nima::Vec2D deform(const nima::Vec2D& position, float* boneIdx, float* boneWgt) const; + +private: + nima::ActorImage* fActorImage; + sk_sp<SkImage> fTexture; + SkPaint* fPaint; +}; + +#endif |