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