/* libs/graphics/animator/SkPathParts.cpp
**
** Copyright 2006, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
#include "SkPathParts.h"
#include "SkAnimateMaker.h"
#include "SkDrawMatrix.h"
#include "SkDrawRectangle.h"
#include "SkDrawPath.h"
SkPathPart::SkPathPart() : fPath(NULL) {
}
void SkPathPart::dirty() {
fPath->dirty();
}
SkDisplayable* SkPathPart::getParent() const {
return fPath;
}
bool SkPathPart::setParent(SkDisplayable* parent) {
SkASSERT(parent != NULL);
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(NULL), path(NULL) {
}
bool SkAddPath::add() {
SkASSERT (path != NULL);
if (matrix)
fPath->fPath.addPath(path->fPath, matrix->getMatrix());
else
fPath->fPath.addPath(path->fPath);
return false;
}