| /* | |
| * Copyright 2006 The Android Open Source Project | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "SkPathParts.h" | |
| #include "SkAnimateMaker.h" | |
| #include "SkDrawMatrix.h" | |
| #include "SkDrawRectangle.h" | |
| #include "SkDrawPath.h" | |
| SkPathPart::SkPathPart() : fPath(nullptr) { | |
| } | |
| void SkPathPart::dirty() { | |
| fPath->dirty(); | |
| } | |
| SkDisplayable* SkPathPart::getParent() const { | |
| return fPath; | |
| } | |
| bool SkPathPart::setParent(SkDisplayable* parent) { | |
| SkASSERT(parent != nullptr); | |
| if (parent->isPath() == false) | |
| return true; | |
| fPath = (SkDrawPath*) parent; | |
| return false; | |
| } | |
| // MoveTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkMoveTo::fInfo[] = { | |
| SK_MEMBER(x, Float), | |
| SK_MEMBER(y, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkMoveTo); | |
| SkMoveTo::SkMoveTo() : x(0), y(0) { | |
| } | |
| bool SkMoveTo::add() { | |
| fPath->fPath.moveTo(x, y); | |
| return false; | |
| } | |
| // RMoveTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkRMoveTo::fInfo[] = { | |
| SK_MEMBER_INHERITED | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkRMoveTo); | |
| bool SkRMoveTo::add() { | |
| fPath->fPath.rMoveTo(x, y); | |
| return false; | |
| } | |
| // LineTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkLineTo::fInfo[] = { | |
| SK_MEMBER(x, Float), | |
| SK_MEMBER(y, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkLineTo); | |
| SkLineTo::SkLineTo() : x(0), y(0) { | |
| } | |
| bool SkLineTo::add() { | |
| fPath->fPath.lineTo(x, y); | |
| return false; | |
| } | |
| // RLineTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkRLineTo::fInfo[] = { | |
| SK_MEMBER_INHERITED | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkRLineTo); | |
| bool SkRLineTo::add() { | |
| fPath->fPath.rLineTo(x, y); | |
| return false; | |
| } | |
| // QuadTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkQuadTo::fInfo[] = { | |
| SK_MEMBER(x1, Float), | |
| SK_MEMBER(x2, Float), | |
| SK_MEMBER(y1, Float), | |
| SK_MEMBER(y2, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkQuadTo); | |
| SkQuadTo::SkQuadTo() : x1(0), y1(0), x2(0), y2(0) { | |
| } | |
| bool SkQuadTo::add() { | |
| fPath->fPath.quadTo(x1, y1, x2, y2); | |
| return false; | |
| } | |
| // RQuadTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkRQuadTo::fInfo[] = { | |
| SK_MEMBER_INHERITED | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkRQuadTo); | |
| bool SkRQuadTo::add() { | |
| fPath->fPath.rQuadTo(x1, y1, x2, y2); | |
| return false; | |
| } | |
| // CubicTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkCubicTo::fInfo[] = { | |
| SK_MEMBER(x1, Float), | |
| SK_MEMBER(x2, Float), | |
| SK_MEMBER(x3, Float), | |
| SK_MEMBER(y1, Float), | |
| SK_MEMBER(y2, Float), | |
| SK_MEMBER(y3, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkCubicTo); | |
| SkCubicTo::SkCubicTo() : x1(0), y1(0), x2(0), y2(0), x3(0), y3(0) { | |
| } | |
| bool SkCubicTo::add() { | |
| fPath->fPath.cubicTo(x1, y1, x2, y2, x3, y3); | |
| return false; | |
| } | |
| // RCubicTo | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkRCubicTo::fInfo[] = { | |
| SK_MEMBER_INHERITED | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkRCubicTo); | |
| bool SkRCubicTo::add() { | |
| fPath->fPath.rCubicTo(x1, y1, x2, y2, x3, y3); | |
| return false; | |
| } | |
| // SkClose | |
| bool SkClose::add() { | |
| fPath->fPath.close(); | |
| return false; | |
| } | |
| // SkAddGeom | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddGeom::fInfo[] = { | |
| SK_MEMBER(direction, PathDirection) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddGeom); | |
| SkAddGeom::SkAddGeom() : direction(SkPath::kCCW_Direction) { | |
| } | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddRect::fInfo[] = { | |
| SK_MEMBER_INHERITED, | |
| SK_MEMBER_ALIAS(bottom, fRect.fBottom, Float), | |
| SK_MEMBER_ALIAS(left, fRect.fLeft, Float), | |
| SK_MEMBER_ALIAS(right, fRect.fRight, Float), | |
| SK_MEMBER_ALIAS(top, fRect.fTop, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddRect); | |
| SkAddRect::SkAddRect() { | |
| fRect.setEmpty(); | |
| } | |
| bool SkAddRect::add() { | |
| fPath->fPath.addRect(fRect, (SkPath::Direction) direction); | |
| return false; | |
| } | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddOval::fInfo[] = { | |
| SK_MEMBER_INHERITED | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddOval); | |
| bool SkAddOval::add() { | |
| fPath->fPath.addOval(fRect, (SkPath::Direction) direction); | |
| return false; | |
| } | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddCircle::fInfo[] = { | |
| SK_MEMBER_INHERITED, | |
| SK_MEMBER(radius, Float), | |
| SK_MEMBER(x, Float), | |
| SK_MEMBER(y, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddCircle); | |
| SkAddCircle::SkAddCircle() : radius(0), x(0), y(0) { | |
| } | |
| bool SkAddCircle::add() { | |
| fPath->fPath.addCircle(x, y, radius, (SkPath::Direction) direction); | |
| return false; | |
| } | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddRoundRect::fInfo[] = { | |
| SK_MEMBER_INHERITED, | |
| SK_MEMBER(rx, Float), | |
| SK_MEMBER(ry, Float) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddRoundRect); | |
| SkAddRoundRect::SkAddRoundRect() : rx(0), ry(0) { | |
| } | |
| bool SkAddRoundRect::add() { | |
| fPath->fPath.addRoundRect(fRect, rx, ry, (SkPath::Direction) direction); | |
| return false; | |
| } | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkAddPath::fInfo[] = { | |
| SK_MEMBER(matrix, Matrix), | |
| SK_MEMBER(path, Path) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkAddPath); | |
| SkAddPath::SkAddPath() : matrix(nullptr), path(nullptr) { | |
| } | |
| bool SkAddPath::add() { | |
| SkASSERT (path != nullptr); | |
| if (matrix) | |
| fPath->fPath.addPath(path->fPath, matrix->getMatrix()); | |
| else | |
| fPath->fPath.addPath(path->fPath); | |
| return false; | |
| } |