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#include "SkPathParts.h"
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkAnimateMaker.h"
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawMatrix.h"
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawRectangle.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawPath.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkPathPart::SkPathPart() : fPath(NULL) {
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
19d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.comvoid SkPathPart::dirty() {
20d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    fPath->dirty();
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDisplayable* SkPathPart::getParent() const {
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return fPath;
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkPathPart::setParent(SkDisplayable* parent) {
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkASSERT(parent != NULL);
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (parent->isPath() == false)
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return true;
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath = (SkDrawPath*) parent;
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// MoveTo
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkMoveTo::fInfo[] = {
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x, Float),
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y, Float)
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkMoveTo);
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkMoveTo::SkMoveTo() : x(0), y(0) {
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkMoveTo::add() {
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.moveTo(x, y);
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// RMoveTo
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkRMoveTo::fInfo[] = {
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkRMoveTo);
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkRMoveTo::add() {
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.rMoveTo(x, y);
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// LineTo
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkLineTo::fInfo[] = {
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x, Float),
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y, Float)
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkLineTo);
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkLineTo::SkLineTo() : x(0), y(0) {
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkLineTo::add() {
89d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    fPath->fPath.lineTo(x, y);
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// RLineTo
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkRLineTo::fInfo[] = {
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkRLineTo);
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkRLineTo::add() {
106d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    fPath->fPath.rLineTo(x, y);
1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// QuadTo
1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkQuadTo::fInfo[] = {
1158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x1, Float),
1168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x2, Float),
1178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y1, Float),
1188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y2, Float)
1198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkQuadTo);
1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkQuadTo::SkQuadTo() : x1(0), y1(0), x2(0), y2(0) {
1268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkQuadTo::add() {
1298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.quadTo(x1, y1, x2, y2);
1308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// RQuadTo
1358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
1368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkRQuadTo::fInfo[] = {
1388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED
1398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkRQuadTo);
1448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkRQuadTo::add() {
1468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.rQuadTo(x1, y1, x2, y2);
1478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// CubicTo
1528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
1538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkCubicTo::fInfo[] = {
1558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x1, Float),
1568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x2, Float),
1578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x3, Float),
1588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y1, Float),
1598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y2, Float),
1608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y3, Float)
1618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkCubicTo);
1668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkCubicTo::SkCubicTo() : x1(0), y1(0), x2(0), y2(0), x3(0), y3(0) {
1688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkCubicTo::add() {
1718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.cubicTo(x1, y1, x2, y2, x3, y3);
1728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// RCubicTo
1778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
1788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkRCubicTo::fInfo[] = {
1808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED
1818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkRCubicTo);
1868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkRCubicTo::add() {
1888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.rCubicTo(x1, y1, x2, y2, x3, y3);
1898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkClose
1948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkClose::add() {
1958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.close();
1968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
1978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkAddGeom
2018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddGeom::fInfo[] = {
2048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(direction, PathDirection)
2058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
2068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddGeom);
2108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkAddGeom::SkAddGeom() : direction(SkPath::kCCW_Direction) {
2128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddRect::fInfo[] = {
2178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED,
2188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_ALIAS(bottom, fRect.fBottom, Float),
2198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_ALIAS(left, fRect.fLeft, Float),
2208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_ALIAS(right, fRect.fRight, Float),
2218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_ALIAS(top, fRect.fTop, Float)
2228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
2238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddRect);
2278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
228d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.comSkAddRect::SkAddRect() {
229d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    fRect.setEmpty();
2308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkAddRect::add() {
2338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.addRect(fRect, (SkPath::Direction) direction);
2348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
2358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddOval::fInfo[] = {
2418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED
2428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
2438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddOval);
2478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkAddOval::add() {
2498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.addOval(fRect,  (SkPath::Direction) direction);
2508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
2518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddCircle::fInfo[] = {
2578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED,
2588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(radius, Float),
2598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(x, Float),
2608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(y, Float)
2618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
2628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddCircle);
2668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkAddCircle::SkAddCircle() : radius(0), x(0), y(0) {
2688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkAddCircle::add() {
2718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.addCircle(x, y, radius,  (SkPath::Direction) direction);
2728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
2738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddRoundRect::fInfo[] = {
2798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED,
2808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(rx, Float),
2818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(ry, Float)
2828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
2838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddRoundRect);
2878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkAddRoundRect::SkAddRoundRect() : rx(0), ry(0) {
2898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkAddRoundRect::add() {
2928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fPath->fPath.addRoundRect(fRect, rx, ry,  (SkPath::Direction) direction);
2938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
2948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
2958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
2988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkAddPath::fInfo[] = {
3008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(matrix, Matrix),
3018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(path, Path)
3028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
3038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
3048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
3058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
3068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkAddPath);
3078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
3088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkAddPath::SkAddPath() : matrix(NULL), path(NULL) {
3098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
3108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
3118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkAddPath::add() {
312d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    SkASSERT (path != NULL);
3138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (matrix)
3148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        fPath->fPath.addPath(path->fPath, matrix->getMatrix());
3158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    else
3168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        fPath->fPath.addPath(path->fPath);
3178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return false;
3188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
319