SkPathParts.h revision 03202c9c3dfbf8c4feb0a1ee9b3680817e633f58
1/* libs/graphics/animator/SkPathParts.h 2** 3** Copyright 2006, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18#ifndef SkPathParts_DEFINED 19#define SkPathParts_DEFINED 20 21#include "SkDisplayable.h" 22#include "SkMemberInfo.h" 23#include "SkPath.h" 24 25class SkDrawPath; 26class SkDrawMatrix; 27 28class SkPathPart : public SkDisplayable { 29public: 30 SkPathPart(); 31 virtual bool add() = 0; 32 virtual void dirty(); 33 virtual SkDisplayable* getParent() const; 34 virtual bool setParent(SkDisplayable* parent); 35#ifdef SK_DEBUG 36 virtual bool isPathPart() const { return true; } 37#endif 38protected: 39 SkDrawPath* fPath; 40}; 41 42class SkMoveTo : public SkPathPart { 43 DECLARE_MEMBER_INFO(MoveTo); 44 SkMoveTo(); 45 virtual bool add(); 46protected: 47 SkScalar x; 48 SkScalar y; 49}; 50 51class SkRMoveTo : public SkMoveTo { 52 DECLARE_MEMBER_INFO(RMoveTo); 53 virtual bool add(); 54private: 55 typedef SkMoveTo INHERITED; 56}; 57 58class SkLineTo : public SkPathPart { 59 DECLARE_MEMBER_INFO(LineTo); 60 SkLineTo(); 61 virtual bool add(); 62protected: 63 SkScalar x; 64 SkScalar y; 65}; 66 67class SkRLineTo : public SkLineTo { 68 DECLARE_MEMBER_INFO(RLineTo); 69 virtual bool add(); 70private: 71 typedef SkLineTo INHERITED; 72}; 73 74class SkQuadTo : public SkPathPart { 75 DECLARE_MEMBER_INFO(QuadTo); 76 SkQuadTo(); 77 virtual bool add(); 78protected: 79 SkScalar x1; 80 SkScalar y1; 81 SkScalar x2; 82 SkScalar y2; 83}; 84 85class SkRQuadTo : public SkQuadTo { 86 DECLARE_MEMBER_INFO(RQuadTo); 87 virtual bool add(); 88private: 89 typedef SkQuadTo INHERITED; 90}; 91 92class SkCubicTo : public SkPathPart { 93 DECLARE_MEMBER_INFO(CubicTo); 94 SkCubicTo(); 95 virtual bool add(); 96protected: 97 SkScalar x1; 98 SkScalar y1; 99 SkScalar x2; 100 SkScalar y2; 101 SkScalar x3; 102 SkScalar y3; 103}; 104 105class SkRCubicTo : public SkCubicTo { 106 DECLARE_MEMBER_INFO(RCubicTo); 107 virtual bool add(); 108private: 109 typedef SkCubicTo INHERITED; 110}; 111 112class SkClose : public SkPathPart { 113 DECLARE_EMPTY_MEMBER_INFO(Close); 114 virtual bool add(); 115}; 116 117class SkAddGeom : public SkPathPart { 118 DECLARE_PRIVATE_MEMBER_INFO(AddGeom); 119 SkAddGeom(); 120protected: 121 int /*SkPath::Direction*/ direction; 122}; 123 124class SkAddRect : public SkAddGeom { 125 DECLARE_MEMBER_INFO(AddRect); 126 SkAddRect(); 127 virtual bool add(); 128protected: 129 SkRect fRect; 130private: 131 typedef SkAddGeom INHERITED; 132}; 133 134class SkAddOval : public SkAddRect { 135 DECLARE_MEMBER_INFO(AddOval); 136 virtual bool add(); 137private: 138 typedef SkAddRect INHERITED; 139}; 140 141class SkAddCircle : public SkAddGeom { 142 DECLARE_MEMBER_INFO(AddCircle); 143 SkAddCircle(); 144 virtual bool add(); 145private: 146 SkScalar radius; 147 SkScalar x; 148 SkScalar y; 149 typedef SkAddGeom INHERITED; 150}; 151 152class SkAddRoundRect : public SkAddRect { 153 DECLARE_MEMBER_INFO(AddRoundRect); 154 SkAddRoundRect(); 155 virtual bool add(); 156private: 157 SkScalar rx; 158 SkScalar ry; 159 typedef SkAddRect INHERITED; 160}; 161 162class SkAddPath : public SkPathPart { 163 DECLARE_MEMBER_INFO(AddPath); 164 SkAddPath(); 165 virtual bool add(); 166private: 167 typedef SkPathPart INHERITED; 168 SkDrawMatrix* matrix; 169 SkDrawPath* path; 170}; 171 172#endif // SkPathParts_DEFINED 173 174