1 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 9 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() { 68 return SkTypeface::CreateFromName(fontName.c_str(), style); } 69protected: 70 virtual bool add(); 71 SkString fontName; 72 SkTypeface::Style style; 73}; 74 75#endif // SkPaintParts_DEFINED 76