Home | History | Annotate | Download | only in animator
      1 /* libs/graphics/animator/SkDrawPath.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 SkDrawPath_DEFINED
     19 #define SkDrawPath_DEFINED
     20 
     21 #include "SkBoundable.h"
     22 #include "SkIntArray.h"
     23 #include "SkMemberInfo.h"
     24 #include "SkPath.h"
     25 
     26 class SkDrawPath : public SkBoundable {
     27     DECLARE_DRAW_MEMBER_INFO(Path);
     28     SkDrawPath();
     29     virtual ~SkDrawPath();
     30     virtual bool add(SkAnimateMaker& , SkDisplayable* child);
     31     bool childHasID() { return SkToBool(fChildHasID); }
     32     virtual bool childrenNeedDisposing() const;
     33     virtual void dirty();
     34     virtual bool draw(SkAnimateMaker& );
     35     virtual SkDisplayable* getParent() const;
     36 #ifdef SK_DUMP_ENABLED
     37     virtual void dump(SkAnimateMaker* );
     38 #endif
     39     SkPath& getPath();
     40     virtual bool getProperty(int index, SkScriptValue* value) const;
     41     virtual bool setProperty(int index, SkScriptValue& value);
     42     virtual void onEndElement(SkAnimateMaker& );
     43     virtual void setChildHasID();
     44     virtual bool setParent(SkDisplayable* parent);
     45     virtual bool isPath() const { return true; }
     46 public:
     47     SkPath fPath;
     48 protected:
     49     void parseSVG();
     50     SkString d;
     51     SkTDPathPartArray fParts;
     52     mutable SkScalar fLength;
     53     SkDisplayable* fParent; // SkPolyToPoly or SkFromPath, for instance
     54     SkBool8 fChildHasID;
     55     SkBool8 fDirty;
     56 private:
     57     typedef SkBoundable INHERITED;
     58 };
     59 
     60 class SkPolyline : public SkDrawPath {
     61     DECLARE_MEMBER_INFO(Polyline);
     62     virtual bool add(SkAnimateMaker& , SkDisplayable*) const;
     63     virtual void onEndElement(SkAnimateMaker& );
     64 protected:
     65     SkTDScalarArray points;
     66 private:
     67     typedef SkDrawPath INHERITED;
     68 };
     69 
     70 class SkPolygon : public SkPolyline {
     71     DECLARE_MEMBER_INFO(Polygon);
     72     virtual void onEndElement(SkAnimateMaker& );
     73 private:
     74     typedef SkPolyline INHERITED;
     75 };
     76 
     77 #endif // SkDrawPath_DEFINED
     78