10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* libs/graphics/animator/SkPathParts.cpp
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Copyright 2006, The Android Open Source Project
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** you may not use this file except in compliance with the License.
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** You may obtain a copy of the License at
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** See the License for the specific language governing permissions and
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** limitations under the License.
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPathParts.h"
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkAnimateMaker.h"
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawMatrix.h"
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawRectangle.h"
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawPath.h"
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkPathPart::SkPathPart() : fPath(NULL) {
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkPathPart::dirty() {
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->dirty();
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkDisplayable* SkPathPart::getParent() const {
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fPath;
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkPathPart::setParent(SkDisplayable* parent) {
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkASSERT(parent != NULL);
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    if (parent->isPath() == false)
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        return true;
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath = (SkDrawPath*) parent;
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// MoveTo
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkMoveTo::fInfo[] = {
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x, Float),
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y, Float)
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkMoveTo);
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkMoveTo::SkMoveTo() : x(0), y(0) {
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkMoveTo::add() {
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.moveTo(x, y);
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// RMoveTo
650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkRMoveTo::fInfo[] = {
680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED
690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkRMoveTo);
740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkRMoveTo::add() {
760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.rMoveTo(x, y);
770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// LineTo
820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkLineTo::fInfo[] = {
850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x, Float),
860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y, Float)
870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkLineTo);
920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkLineTo::SkLineTo() : x(0), y(0) {
940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkLineTo::add() {
970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.lineTo(x, y);
980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// RLineTo
1030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
1040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkRLineTo::fInfo[] = {
1060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED
1070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
1100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkRLineTo);
1120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkRLineTo::add() {
1140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.rLineTo(x, y);
1150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
1160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// QuadTo
1200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
1210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkQuadTo::fInfo[] = {
1230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x1, Float),
1240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x2, Float),
1250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y1, Float),
1260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y2, Float)
1270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
1300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkQuadTo);
1320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkQuadTo::SkQuadTo() : x1(0), y1(0), x2(0), y2(0) {
1340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkQuadTo::add() {
1370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.quadTo(x1, y1, x2, y2);
1380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
1390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// RQuadTo
1430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
1440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkRQuadTo::fInfo[] = {
1460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED
1470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
1500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkRQuadTo);
1520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkRQuadTo::add() {
1540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.rQuadTo(x1, y1, x2, y2);
1550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
1560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// CubicTo
1600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
1610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkCubicTo::fInfo[] = {
1630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x1, Float),
1640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x2, Float),
1650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x3, Float),
1660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y1, Float),
1670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y2, Float),
1680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y3, Float)
1690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
1720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkCubicTo);
1740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkCubicTo::SkCubicTo() : x1(0), y1(0), x2(0), y2(0), x3(0), y3(0) {
1760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkCubicTo::add() {
1790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.cubicTo(x1, y1, x2, y2, x3, y3);
1800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
1810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// RCubicTo
1850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
1860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkRCubicTo::fInfo[] = {
1880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED
1890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
1920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkRCubicTo);
1940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkRCubicTo::add() {
1960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.rCubicTo(x1, y1, x2, y2, x3, y3);
1970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
1980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// SkClose
2020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkClose::add() {
2030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.close();
2040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
2050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// SkAddGeom
2090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
2100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddGeom::fInfo[] = {
2120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(direction, PathDirection)
2130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
2140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
2160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddGeom);
2180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkAddGeom::SkAddGeom() : direction(SkPath::kCCW_Direction) {
2200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
2230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddRect::fInfo[] = {
2250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED,
2260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_ALIAS(bottom, fRect.fBottom, Float),
2270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_ALIAS(left, fRect.fLeft, Float),
2280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_ALIAS(right, fRect.fRight, Float),
2290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_ALIAS(top, fRect.fTop, Float)
2300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
2310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
2330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddRect);
2350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkAddRect::SkAddRect() {
2370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fRect.setEmpty();
2380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkAddRect::add() {
2410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.addRect(fRect, (SkPath::Direction) direction);
2420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
2430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
2470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddOval::fInfo[] = {
2490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED
2500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
2510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
2530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddOval);
2550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkAddOval::add() {
2570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.addOval(fRect,  (SkPath::Direction) direction);
2580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
2590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
2630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddCircle::fInfo[] = {
2650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED,
2660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(radius, Float),
2670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(x, Float),
2680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(y, Float)
2690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
2700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
2720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddCircle);
2740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkAddCircle::SkAddCircle() : radius(0), x(0), y(0) {
2760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkAddCircle::add() {
2790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.addCircle(x, y, radius,  (SkPath::Direction) direction);
2800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
2810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
2850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddRoundRect::fInfo[] = {
2870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER_INHERITED,
2880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(rx, Float),
2890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(ry, Float)
2900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
2910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
2930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddRoundRect);
2950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkAddRoundRect::SkAddRoundRect() : rx(0), ry(0) {
2970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
2980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
2990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkAddRoundRect::add() {
3000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fPath->fPath.addRoundRect(fRect, rx, ry,  (SkPath::Direction) direction);
3010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
3020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
3030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0
3060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkAddPath::fInfo[] = {
3080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(matrix, Matrix),
3090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SK_MEMBER(path, Path)
3100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
3110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
3130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkAddPath);
3150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkAddPath::SkAddPath() : matrix(NULL), path(NULL) {
3170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
3180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkAddPath::add() {
3200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkASSERT (path != NULL);
3210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    if (matrix)
3220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        fPath->fPath.addPath(path->fPath, matrix->getMatrix());
3230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    else
3240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        fPath->fPath.addPath(path->fPath);
3250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return false;
3260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
3270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
3280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
329