| |
| /* |
| * Copyright 2006 The Android Open Source Project |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| #ifndef SkPathParts_DEFINED |
| #define SkPathParts_DEFINED |
| |
| #include "SkDisplayable.h" |
| #include "SkMemberInfo.h" |
| #include "SkPath.h" |
| |
| class SkDrawPath; |
| class SkDrawMatrix; |
| |
| class SkPathPart : public SkDisplayable { |
| public: |
| SkPathPart(); |
| virtual bool add() = 0; |
| virtual void dirty(); |
| virtual SkDisplayable* getParent() const; |
| virtual bool setParent(SkDisplayable* parent); |
| #ifdef SK_DEBUG |
| virtual bool isPathPart() const { return true; } |
| #endif |
| protected: |
| SkDrawPath* fPath; |
| }; |
| |
| class SkMoveTo : public SkPathPart { |
| DECLARE_MEMBER_INFO(MoveTo); |
| SkMoveTo(); |
| virtual bool add(); |
| protected: |
| SkScalar x; |
| SkScalar y; |
| }; |
| |
| class SkRMoveTo : public SkMoveTo { |
| DECLARE_MEMBER_INFO(RMoveTo); |
| virtual bool add(); |
| private: |
| typedef SkMoveTo INHERITED; |
| }; |
| |
| class SkLineTo : public SkPathPart { |
| DECLARE_MEMBER_INFO(LineTo); |
| SkLineTo(); |
| virtual bool add(); |
| protected: |
| SkScalar x; |
| SkScalar y; |
| }; |
| |
| class SkRLineTo : public SkLineTo { |
| DECLARE_MEMBER_INFO(RLineTo); |
| virtual bool add(); |
| private: |
| typedef SkLineTo INHERITED; |
| }; |
| |
| class SkQuadTo : public SkPathPart { |
| DECLARE_MEMBER_INFO(QuadTo); |
| SkQuadTo(); |
| virtual bool add(); |
| protected: |
| SkScalar x1; |
| SkScalar y1; |
| SkScalar x2; |
| SkScalar y2; |
| }; |
| |
| class SkRQuadTo : public SkQuadTo { |
| DECLARE_MEMBER_INFO(RQuadTo); |
| virtual bool add(); |
| private: |
| typedef SkQuadTo INHERITED; |
| }; |
| |
| class SkCubicTo : public SkPathPart { |
| DECLARE_MEMBER_INFO(CubicTo); |
| SkCubicTo(); |
| virtual bool add(); |
| protected: |
| SkScalar x1; |
| SkScalar y1; |
| SkScalar x2; |
| SkScalar y2; |
| SkScalar x3; |
| SkScalar y3; |
| }; |
| |
| class SkRCubicTo : public SkCubicTo { |
| DECLARE_MEMBER_INFO(RCubicTo); |
| virtual bool add(); |
| private: |
| typedef SkCubicTo INHERITED; |
| }; |
| |
| class SkClose : public SkPathPart { |
| DECLARE_EMPTY_MEMBER_INFO(Close); |
| virtual bool add(); |
| }; |
| |
| class SkAddGeom : public SkPathPart { |
| DECLARE_PRIVATE_MEMBER_INFO(AddGeom); |
| SkAddGeom(); |
| protected: |
| int /*SkPath::Direction*/ direction; |
| }; |
| |
| class SkAddRect : public SkAddGeom { |
| DECLARE_MEMBER_INFO(AddRect); |
| SkAddRect(); |
| virtual bool add(); |
| protected: |
| SkRect fRect; |
| private: |
| typedef SkAddGeom INHERITED; |
| }; |
| |
| class SkAddOval : public SkAddRect { |
| DECLARE_MEMBER_INFO(AddOval); |
| virtual bool add(); |
| private: |
| typedef SkAddRect INHERITED; |
| }; |
| |
| class SkAddCircle : public SkAddGeom { |
| DECLARE_MEMBER_INFO(AddCircle); |
| SkAddCircle(); |
| virtual bool add(); |
| private: |
| SkScalar radius; |
| SkScalar x; |
| SkScalar y; |
| typedef SkAddGeom INHERITED; |
| }; |
| |
| class SkAddRoundRect : public SkAddRect { |
| DECLARE_MEMBER_INFO(AddRoundRect); |
| SkAddRoundRect(); |
| virtual bool add(); |
| private: |
| SkScalar rx; |
| SkScalar ry; |
| typedef SkAddRect INHERITED; |
| }; |
| |
| class SkAddPath : public SkPathPart { |
| DECLARE_MEMBER_INFO(AddPath); |
| SkAddPath(); |
| virtual bool add(); |
| private: |
| typedef SkPathPart INHERITED; |
| SkDrawMatrix* matrix; |
| SkDrawPath* path; |
| }; |
| |
| #endif // SkPathParts_DEFINED |