blob: 964bc359b0db2029d91fbf850bf3447e6171ef6e [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
10#ifndef SkPaintParts_DEFINED
11#define SkPaintParts_DEFINED
12
13#include "SkDisplayable.h"
14#include "SkMemberInfo.h"
15#include "SkPaint.h"
16#include "SkShader.h"
17#include "SkTypeface.h"
18#include "SkXfermode.h"
19
20class SkDrawPaint;
21class SkDrawMatrix;
22
23class SkPaintPart : public SkDisplayable {
24public:
25 SkPaintPart();
26 virtual bool add() = 0;
27 virtual SkDisplayable* getParent() const;
28 virtual bool setParent(SkDisplayable* parent);
29#ifdef SK_DEBUG
30 virtual bool isPaintPart() const { return true; }
31#endif
32protected:
33 SkDrawPaint* fPaint;
34};
35
36class SkDrawMaskFilter : public SkPaintPart {
37 DECLARE_EMPTY_MEMBER_INFO(MaskFilter);
38 virtual SkMaskFilter* getMaskFilter();
39protected:
40 virtual bool add();
41};
42
43class SkDrawPathEffect : public SkPaintPart {
44 DECLARE_EMPTY_MEMBER_INFO(PathEffect);
45 virtual SkPathEffect* getPathEffect();
46protected:
47 virtual bool add();
48};
49
50class SkDrawShader : public SkPaintPart {
51 DECLARE_DRAW_MEMBER_INFO(Shader);
52 SkDrawShader();
53 virtual SkShader* getShader();
54protected:
55 virtual bool add();
56 void addPostlude(SkShader* shader);
57 SkDrawMatrix* matrix;
58 int /*SkShader::TileMode*/ tileMode;
59};
60
61class SkDrawTypeface : public SkPaintPart {
62 DECLARE_DRAW_MEMBER_INFO(Typeface);
63 SkDrawTypeface();
64#ifdef SK_DUMP_ENABLED
65 virtual void dump(SkAnimateMaker *);
66#endif
67 SkTypeface* getTypeface() {
deanm@chromium.org1220e1c2009-06-11 12:26:47 +000068 return SkTypeface::CreateFromName(fontName.c_str(), style); }
reed@android.com8a1c16f2008-12-17 15:59:43 +000069protected:
70 virtual bool add();
71 SkString fontName;
72 SkTypeface::Style style;
73};
74
75#endif // SkPaintParts_DEFINED