michael@0: michael@0: /* michael@0: * Copyright 2006 The Android Open Source Project michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: michael@0: #ifndef SkPaintParts_DEFINED michael@0: #define SkPaintParts_DEFINED michael@0: michael@0: #include "SkDisplayable.h" michael@0: #include "SkMemberInfo.h" michael@0: #include "SkPaint.h" michael@0: #include "SkShader.h" michael@0: #include "SkTypeface.h" michael@0: #include "SkXfermode.h" michael@0: michael@0: class SkDrawPaint; michael@0: class SkDrawMatrix; michael@0: michael@0: class SkPaintPart : public SkDisplayable { michael@0: public: michael@0: SkPaintPart(); michael@0: virtual bool add() = 0; michael@0: virtual SkDisplayable* getParent() const; michael@0: virtual bool setParent(SkDisplayable* parent); michael@0: #ifdef SK_DEBUG michael@0: virtual bool isPaintPart() const { return true; } michael@0: #endif michael@0: protected: michael@0: SkDrawPaint* fPaint; michael@0: }; michael@0: michael@0: class SkDrawMaskFilter : public SkPaintPart { michael@0: DECLARE_EMPTY_MEMBER_INFO(MaskFilter); michael@0: virtual SkMaskFilter* getMaskFilter(); michael@0: protected: michael@0: virtual bool add(); michael@0: }; michael@0: michael@0: class SkDrawPathEffect : public SkPaintPart { michael@0: DECLARE_EMPTY_MEMBER_INFO(PathEffect); michael@0: virtual SkPathEffect* getPathEffect(); michael@0: protected: michael@0: virtual bool add(); michael@0: }; michael@0: michael@0: class SkDrawShader : public SkPaintPart { michael@0: DECLARE_DRAW_MEMBER_INFO(Shader); michael@0: SkDrawShader(); michael@0: virtual SkShader* getShader(); michael@0: protected: michael@0: virtual bool add(); michael@0: void addPostlude(SkShader* shader); michael@0: SkDrawMatrix* matrix; michael@0: int /*SkShader::TileMode*/ tileMode; michael@0: }; michael@0: michael@0: class SkDrawTypeface : public SkPaintPart { michael@0: DECLARE_DRAW_MEMBER_INFO(Typeface); michael@0: SkDrawTypeface(); michael@0: #ifdef SK_DUMP_ENABLED michael@0: virtual void dump(SkAnimateMaker *); michael@0: #endif michael@0: SkTypeface* getTypeface() { michael@0: return SkTypeface::CreateFromName(fontName.c_str(), style); } michael@0: protected: michael@0: virtual bool add(); michael@0: SkString fontName; michael@0: SkTypeface::Style style; michael@0: }; michael@0: michael@0: #endif // SkPaintParts_DEFINED