180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkMatrixParts_DEFINED
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkMatrixParts_DEFINED
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDisplayable.h"
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkMemberInfo.h"
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkPathMeasure.h"
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkDrawPath;
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkDrawRect;
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkPolygon;
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkDrawMatrix;
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// class SkMatrix;
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkMatrixPart : public SkDisplayable {
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkMatrixPart();
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add() = 0;
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void dirty();
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual SkDisplayable* getParent() const;
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool setParent(SkDisplayable* parent);
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DEBUG
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool isMatrixPart() const { return true; }
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDrawMatrix* fMatrix;
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkRotate : public SkMatrixPart {
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(Rotate);
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkRotate();
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar degrees;
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPoint center;
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkScale : public SkMatrixPart {
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(Scale);
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScale();
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar x;
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar y;
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPoint center;
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkSkew : public SkMatrixPart {
5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(Skew);
5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkSkew();
6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar x;
6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar y;
6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPoint center;
6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkTranslate : public SkMatrixPart {
6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(Translate);
6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkTranslate();
7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar x;
7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar y;
7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkFromPath : public SkMatrixPart {
7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(FromPath);
7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkFromPath();
7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkFromPath();
8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    int32_t mode;
8380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar offset;
8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDrawPath* path;
8580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPathMeasure fPathMeasure;
8680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
8780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
8880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkRectToRect : public SkMatrixPart {
8980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(RectToRect);
9080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkRectToRect();
9180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkRectToRect();
9280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DUMP_ENABLED
9380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void dump(SkAnimateMaker* );
9480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
9580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
9680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
9780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
9880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDrawRect* source;
9980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDrawRect* destination;
10080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
10180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
10280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkPolyToPoly : public SkMatrixPart {
10380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(PolyToPoly);
10480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPolyToPoly();
10580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkPolyToPoly();
10680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DUMP_ENABLED
10780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void dump(SkAnimateMaker* );
10880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
10980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void onEndElement(SkAnimateMaker& );
11080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
11180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
11280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool add();
11380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPolygon* source;
11480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPolygon* destination;
11580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
11680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
11780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// !!! add concat matrix ?
11880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
11980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif // SkMatrixParts_DEFINED
120