{
if (mData->mShape.isStatic()) {
if (mLocalPath.isEmpty()) {
- mLocalPath = mData->mShape.value(frameNo).toPath();
+ mData->mShape.value(frameNo).toPath(mLocalPath);
}
} else {
- mLocalPath = mData->mShape.value(frameNo).toPath();
+ mData->mShape.value(frameNo).toPath(mLocalPath);
}
float opacity = mData->opacity(frameNo);
opacity = opacity * parentAlpha;
// 1. update the local path if needed
if (!(mInit && mStaticPath)) {
- mLocalPath = getPath(frameNo);
+ updatePath(mLocalPath, frameNo);
mInit = true;
mPathChanged = true;
}
{
}
-VPath LOTRectItem::getPath(int frameNo)
+void LOTRectItem::updatePath(VPath& path, int frameNo)
{
VPointF pos = mData->mPos.value(frameNo);
VPointF size = mData->mSize.value(frameNo);
VRectF r(pos.x() - size.x() / 2, pos.y() - size.y() / 2, size.x(),
size.y());
- VPath path;
+ path.reset();
path.addRoundRect(r, radius, radius, mData->direction());
-
- return path;
}
LOTEllipseItem::LOTEllipseItem(LOTEllipseData *data)
{
}
-VPath LOTEllipseItem::getPath(int frameNo)
+void LOTEllipseItem::updatePath(VPath& path, int frameNo)
{
VPointF pos = mData->mPos.value(frameNo);
VPointF size = mData->mSize.value(frameNo);
VRectF r(pos.x() - size.x() / 2, pos.y() - size.y() / 2, size.x(),
size.y());
- VPath path;
+ path.reset();
path.addOval(r, mData->direction());
-
- return path;
}
LOTShapeItem::LOTShapeItem(LOTShapeData *data)
{
}
-VPath LOTShapeItem::getPath(int frameNo)
+void LOTShapeItem::updatePath(VPath& path, int frameNo)
{
- return mData->mShape.value(frameNo).toPath();
+ mData->mShape.value(frameNo).toPath(path);
}
LOTPolystarItem::LOTPolystarItem(LOTPolystarData *data)
{
}
-VPath LOTPolystarItem::getPath(int frameNo)
+void LOTPolystarItem::updatePath(VPath& path, int frameNo)
{
VPointF pos = mData->mPos.value(frameNo);
float points = mData->mPointCount.value(frameNo);
float outerRoundness = mData->mOuterRoundness.value(frameNo);
float rotation = mData->mRotation.value(frameNo);
- VPath path;
+ path.reset();
VMatrix m;
if (mData->mType == LOTPolystarData::PolyType::Star) {
m.translate(pos.x(), pos.y()).rotate(rotation);
m.rotate(rotation);
path.transform(m);
-
- return path;
}
/*
bool mPathChanged;
float mCombinedAlpha;
protected:
- virtual VPath getPath(int frameNo) = 0;
+ virtual void updatePath(VPath& path, int frameNo) = 0;
};
class LOTRectItem: public LOTPathDataItem
public:
LOTRectItem(LOTRectData *data);
protected:
- VPath getPath(int frameNo) final;
+ void updatePath(VPath& path, int frameNo) final;
LOTRectData *mData;
};
public:
LOTEllipseItem(LOTEllipseData *data);
private:
- VPath getPath(int frameNo) final;
+ void updatePath(VPath& path, int frameNo) final;
LOTEllipseData *mData;
};
public:
LOTShapeItem(LOTShapeData *data);
private:
- VPath getPath(int frameNo) final;
+ void updatePath(VPath& path, int frameNo) final;
LOTShapeData *mData;
};
public:
LOTPolystarItem(LOTPolystarData *data);
private:
- VPath getPath(int frameNo) final;
+ void updatePath(VPath& path, int frameNo) final;
LOTPolystarData *mData;
};