Home | History | Annotate | Download | only in animator
      1 /*
      2  * Copyright 2006 The Android Open Source Project
      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 SkPaintPart_DEFINED
      9 #define SkPaintPart_DEFINED
     10 
     11 #include "SkDisplayable.h"
     12 #include "SkMemberInfo.h"
     13 #include "SkPaint.h"
     14 #include "SkShader.h"
     15 #include "SkTypeface.h"
     16 #include "SkXfermode.h"
     17 
     18 class SkDrawPaint;
     19 class SkDrawMatrix;
     20 
     21 class SkPaintPart : public SkDisplayable {
     22 public:
     23     SkPaintPart();
     24     virtual bool add() = 0;
     25     virtual SkDisplayable* getParent() const;
     26     virtual bool setParent(SkDisplayable* parent);
     27 #ifdef SK_DEBUG
     28     virtual bool isPaintPart() const { return true; }
     29 #endif
     30 protected:
     31     SkDrawPaint* fPaint;
     32 };
     33 
     34 class SkDrawMaskFilter : public SkPaintPart {
     35     DECLARE_EMPTY_MEMBER_INFO(MaskFilter);
     36     virtual SkMaskFilter* getMaskFilter();
     37 protected:
     38     virtual bool add();
     39 };
     40 
     41 class SkDrawPathEffect : public SkPaintPart {
     42     DECLARE_EMPTY_MEMBER_INFO(PathEffect);
     43     virtual SkPathEffect* getPathEffect();
     44 protected:
     45     virtual bool add();
     46 };
     47 
     48 class SkDrawShader : public SkPaintPart {
     49     DECLARE_DRAW_MEMBER_INFO(Shader);
     50     SkDrawShader();
     51     virtual SkShader* getShader();
     52 protected:
     53     virtual bool add();
     54     SkMatrix* getMatrix(); // returns NULL if matrix is NULL
     55     SkDrawMatrix* matrix;
     56     int /*SkShader::TileMode*/ tileMode;
     57 };
     58 
     59 class SkDrawTypeface  : public SkPaintPart {
     60     DECLARE_DRAW_MEMBER_INFO(Typeface);
     61     SkDrawTypeface();
     62 #ifdef SK_DUMP_ENABLED
     63     virtual void dump(SkAnimateMaker *);
     64 #endif
     65     SkTypeface* getTypeface() {
     66         return SkTypeface::CreateFromName(fontName.c_str(), style); }
     67 protected:
     68     virtual bool add();
     69     SkString fontName;
     70     SkTypeface::Style style;
     71 };
     72 
     73 #endif // SkPaintPart_DEFINED
     74