blob: 91c5922eaf9b8460d2e6752bfe29832170f42879 [file] [log] [blame]
Brian Osman543d2e22019-02-15 14:29:38 -05001/*
2* Copyright 2019 Google LLC
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 SkParticleDrawable_DEFINED
9#define SkParticleDrawable_DEFINED
10
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "modules/particles/include/SkReflected.h"
Brian Osman543d2e22019-02-15 14:29:38 -050012
Brian Osman543d2e22019-02-15 14:29:38 -050013class SkCanvas;
Brian Osmanfe491632019-07-25 15:14:50 -040014struct SkParticles;
Brian Osman543d2e22019-02-15 14:29:38 -050015class SkPaint;
Brian Osman543d2e22019-02-15 14:29:38 -050016class SkString;
17
Brian Osmand12f2782019-11-27 10:34:18 -050018namespace skresources { class ResourceProvider; }
19
Brian Osman543d2e22019-02-15 14:29:38 -050020class SkParticleDrawable : public SkReflected {
21public:
22 REFLECTED_ABSTRACT(SkParticleDrawable, SkReflected)
23
Brian Osman9dac0d82019-12-02 16:52:51 -050024 virtual void draw(SkCanvas* canvas, const SkParticles& particles, int count,
25 const SkPaint& paint) = 0;
26 virtual void prepare(const skresources::ResourceProvider* resourceProvider) = 0;
Brian Osman543d2e22019-02-15 14:29:38 -050027
28 static void RegisterDrawableTypes();
29
30 static sk_sp<SkParticleDrawable> MakeCircle(int radius);
Brian Osmand12f2782019-11-27 10:34:18 -050031 static sk_sp<SkParticleDrawable> MakeImage(const SkString& path, const SkString& name,
32 int cols, int rows);
Brian Osman543d2e22019-02-15 14:29:38 -050033};
34
35#endif // SkParticleEffect_DEFINED