blob: 4acbe590f7ba8c25aca462727388e450f1140e6a [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 -050016
Brian Osmand12f2782019-11-27 10:34:18 -050017namespace skresources { class ResourceProvider; }
18
Brian Osman543d2e22019-02-15 14:29:38 -050019class SkParticleDrawable : public SkReflected {
20public:
21 REFLECTED_ABSTRACT(SkParticleDrawable, SkReflected)
22
Brian Osman9dac0d82019-12-02 16:52:51 -050023 virtual void draw(SkCanvas* canvas, const SkParticles& particles, int count,
24 const SkPaint& paint) = 0;
25 virtual void prepare(const skresources::ResourceProvider* resourceProvider) = 0;
Brian Osman543d2e22019-02-15 14:29:38 -050026
27 static void RegisterDrawableTypes();
28
29 static sk_sp<SkParticleDrawable> MakeCircle(int radius);
Brian Osman6104ba02019-12-03 14:31:37 -050030 static sk_sp<SkParticleDrawable> MakeImage(const char* imagePath, const char* imageName,
Brian Osmand12f2782019-11-27 10:34:18 -050031 int cols, int rows);
Brian Osman543d2e22019-02-15 14:29:38 -050032};
33
34#endif // SkParticleEffect_DEFINED