/* libs/graphics/animator/SkPathParts.h ** ** Copyright 2006, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ #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