Refactoring

This commit is contained in:
Isaac 2024-05-16 19:38:11 +04:00
parent c9e42893e0
commit e9410f9315
2 changed files with 12 additions and 20 deletions

View File

@ -41,14 +41,12 @@ struct TrimParams {
double end = 0.0; double end = 0.0;
double offset = 0.0; double offset = 0.0;
TrimType type = TrimType::Simultaneously; TrimType type = TrimType::Simultaneously;
size_t subItemLimit = 0;
TrimParams(double start_, double end_, double offset_, TrimType type_, size_t subItemLimit_) : TrimParams(double start_, double end_, double offset_, TrimType type_) :
start(start_), start(start_),
end(end_), end(end_),
offset(offset_), offset(offset_),
type(type_), type(type_) {
subItemLimit(subItemLimit_) {
} }
}; };

View File

@ -439,9 +439,8 @@ public:
class TrimParamsOutput { class TrimParamsOutput {
public: public:
TrimParamsOutput(Trim const &trim, size_t subItemLimit) : TrimParamsOutput(Trim const &trim) :
type(trim.trimType), type(trim.trimType),
subItemLimit(subItemLimit),
start(trim.start.keyframes), start(trim.start.keyframes),
end(trim.end.keyframes), end(trim.end.keyframes),
offset(trim.offset.keyframes) { offset(trim.offset.keyframes) {
@ -469,12 +468,11 @@ public:
double resolvedOffset = fmod(offsetValue, 360.0) / 360.0; double resolvedOffset = fmod(offsetValue, 360.0) / 360.0;
return TrimParams(resolvedStart, resolvedEnd, resolvedOffset, type, subItemLimit); return TrimParams(resolvedStart, resolvedEnd, resolvedOffset, type);
} }
private: private:
TrimType type; TrimType type;
size_t subItemLimit = 0;
KeyframeInterpolator<Vector1D> start; KeyframeInterpolator<Vector1D> start;
double startValue = 0.0; double startValue = 0.0;
@ -974,7 +972,7 @@ public:
} }
void addTrim(Trim const &trim) { void addTrim(Trim const &trim) {
trims.push_back(std::make_shared<TrimParamsOutput>(trim, subItems.size())); trims.push_back(std::make_shared<TrimParamsOutput>(trim));
} }
public: public:
@ -1045,7 +1043,7 @@ public:
} }
} }
void updateChildren(std::optional<TrimParams> parentTrim) { void updateContents(std::optional<TrimParams> parentTrim) {
CATransform3D containerTransform = CATransform3D::identity(); CATransform3D containerTransform = CATransform3D::identity();
double containerOpacity = 1.0; double containerOpacity = 1.0;
if (transform) { if (transform) {
@ -1108,14 +1106,12 @@ public:
for (int i = (int)subItems.size() - 1; i >= 0; i--) { for (int i = (int)subItems.size() - 1; i >= 0; i--) {
std::optional<TrimParams> childTrim = parentTrim; std::optional<TrimParams> childTrim = parentTrim;
for (const auto &trim : trims) { for (const auto &trim : trims) {
if (i < (int)trim->trimParams().subItemLimit) { //TODO:allow combination
//TODO:allow combination //assert(!parentTrim);
//assert(!parentTrim); childTrim = trim->trimParams();
childTrim = trim->trimParams();
}
} }
subItems[i]->updateChildren(childTrim); subItems[i]->updateContents(childTrim);
} }
} }
} }
@ -1221,8 +1217,6 @@ private:
itemTree->subItems.clear(); itemTree->subItems.clear();
itemTree->addSubItem(groupItem); itemTree->addSubItem(groupItem);
//itemTree->addTrim(trim);
break; break;
} }
case ShapeType::Transform: { case ShapeType::Transform: {
@ -1298,7 +1292,7 @@ void ShapeCompositionLayer::displayContentsWithFrame(double frame, bool forceUpd
_frameTime = frame; _frameTime = frame;
_frameTimeInitialized = true; _frameTimeInitialized = true;
_contentTree->itemTree->updateFrame(_frameTime); _contentTree->itemTree->updateFrame(_frameTime);
_contentTree->itemTree->updateChildren(std::nullopt); _contentTree->itemTree->updateContents(std::nullopt);
} }
std::shared_ptr<RenderTreeNode> ShapeCompositionLayer::renderTreeNode() { std::shared_ptr<RenderTreeNode> ShapeCompositionLayer::renderTreeNode() {
@ -1306,7 +1300,7 @@ std::shared_ptr<RenderTreeNode> ShapeCompositionLayer::renderTreeNode() {
_frameTime = 0.0; _frameTime = 0.0;
_frameTimeInitialized = true; _frameTimeInitialized = true;
_contentTree->itemTree->updateFrame(_frameTime); _contentTree->itemTree->updateFrame(_frameTime);
_contentTree->itemTree->updateChildren(std::nullopt); _contentTree->itemTree->updateContents(std::nullopt);
} }
if (!_renderTreeNode) { if (!_renderTreeNode) {