1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkMatrixParts_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkMatrixParts_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDisplayable.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPathMeasure.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDrawPath;
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDrawRect;
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPolygon;
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDrawMatrix;
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// class SkMatrix;
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkMatrixPart : public SkDisplayable {
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkMatrixPart();
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add() = 0;
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void dirty();
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual SkDisplayable* getParent() const;
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool setParent(SkDisplayable* parent);
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool isMatrixPart() const { return true; }
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawMatrix* fMatrix;
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkRotate : public SkMatrixPart {
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Rotate);
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkRotate();
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar degrees;
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPoint center;
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkScale : public SkMatrixPart {
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Scale);
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScale();
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar x;
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar y;
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPoint center;
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkSkew : public SkMatrixPart {
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Skew);
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkSkew();
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar x;
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar y;
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPoint center;
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkTranslate : public SkMatrixPart {
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Translate);
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkTranslate();
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar x;
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar y;
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkFromPath : public SkMatrixPart {
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(FromPath);
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkFromPath();
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkFromPath();
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    int32_t mode;
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar offset;
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawPath* path;
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPathMeasure fPathMeasure;
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkRectToRect : public SkMatrixPart {
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(RectToRect);
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkRectToRect();
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkRectToRect();
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void dump(SkAnimateMaker* );
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawRect* source;
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawRect* destination;
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPolyToPoly : public SkMatrixPart {
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(PolyToPoly);
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPolyToPoly();
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkPolyToPoly();
1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED
1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void dump(SkAnimateMaker* );
1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void onEndElement(SkAnimateMaker& );
1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool add();
1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPolygon* source;
1148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkPolygon* destination;
1158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
117d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com// !!! add concat matrix ?
1188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkMatrixParts_DEFINED
120