Home | History | Annotate | Download | only in animator
      1 /* libs/graphics/animator/SkMatrixParts.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 SkMatrixParts_DEFINED
     19 #define SkMatrixParts_DEFINED
     20 
     21 #include "SkDisplayable.h"
     22 #include "SkMemberInfo.h"
     23 #include "SkPathMeasure.h"
     24 
     25 class SkDrawPath;
     26 class SkDrawRect;
     27 class SkPolygon;
     28 
     29 class SkDrawMatrix;
     30 // class SkMatrix;
     31 
     32 class SkMatrixPart : public SkDisplayable {
     33 public:
     34     SkMatrixPart();
     35     virtual bool add() = 0;
     36     virtual void dirty();
     37     virtual SkDisplayable* getParent() const;
     38     virtual bool setParent(SkDisplayable* parent);
     39 #ifdef SK_DEBUG
     40     virtual bool isMatrixPart() const { return true; }
     41 #endif
     42 protected:
     43     SkDrawMatrix* fMatrix;
     44 };
     45 
     46 class SkRotate : public SkMatrixPart {
     47     DECLARE_MEMBER_INFO(Rotate);
     48     SkRotate();
     49 protected:
     50     virtual bool add();
     51     SkScalar degrees;
     52     SkPoint center;
     53 };
     54 
     55 class SkScale : public SkMatrixPart {
     56     DECLARE_MEMBER_INFO(Scale);
     57     SkScale();
     58 protected:
     59     virtual bool add();
     60     SkScalar x;
     61     SkScalar y;
     62     SkPoint center;
     63 };
     64 
     65 class SkSkew : public SkMatrixPart {
     66     DECLARE_MEMBER_INFO(Skew);
     67     SkSkew();
     68 protected:
     69     virtual bool add();
     70     SkScalar x;
     71     SkScalar y;
     72     SkPoint center;
     73 };
     74 
     75 class SkTranslate : public SkMatrixPart {
     76     DECLARE_MEMBER_INFO(Translate);
     77     SkTranslate();
     78 protected:
     79     virtual bool add();
     80     SkScalar x;
     81     SkScalar y;
     82 };
     83 
     84 class SkFromPath : public SkMatrixPart {
     85     DECLARE_MEMBER_INFO(FromPath);
     86     SkFromPath();
     87     virtual ~SkFromPath();
     88 protected:
     89     virtual bool add();
     90     int32_t mode;
     91     SkScalar offset;
     92     SkDrawPath* path;
     93     SkPathMeasure fPathMeasure;
     94 };
     95 
     96 class SkRectToRect : public SkMatrixPart {
     97     DECLARE_MEMBER_INFO(RectToRect);
     98     SkRectToRect();
     99     virtual ~SkRectToRect();
    100 #ifdef SK_DUMP_ENABLED
    101     virtual void dump(SkAnimateMaker* );
    102 #endif
    103     virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
    104 protected:
    105     virtual bool add();
    106     SkDrawRect* source;
    107     SkDrawRect* destination;
    108 };
    109 
    110 class SkPolyToPoly : public SkMatrixPart {
    111     DECLARE_MEMBER_INFO(PolyToPoly);
    112     SkPolyToPoly();
    113     virtual ~SkPolyToPoly();
    114 #ifdef SK_DUMP_ENABLED
    115     virtual void dump(SkAnimateMaker* );
    116 #endif
    117     virtual void onEndElement(SkAnimateMaker& );
    118     virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
    119 protected:
    120     virtual bool add();
    121     SkPolygon* source;
    122     SkPolygon* destination;
    123 };
    124 
    125 // !!! add concat matrix ?
    126 
    127 #endif // SkMatrixParts_DEFINED
    128