summaryrefslogtreecommitdiffstats
path: root/src/runtime/q3dsuippresentation.cpp
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@qt.io>2018-09-21 10:33:54 +0200
committerChristian Strømme <christian.stromme@qt.io>2018-09-21 10:34:42 +0200
commit9091098014c4cdfbc122bbc015b7641b07f28205 (patch)
tree034af6f3991a538814c55c6636c570b2efbf7fbb /src/runtime/q3dsuippresentation.cpp
parent59923f7725c82ac31c1245a36bd3b1be9bec3cd7 (diff)
parent95942f6b187c5272074c191424a18e33f8516967 (diff)
Merge remote-tracking branch 'origin/2.1'
Diffstat (limited to 'src/runtime/q3dsuippresentation.cpp')
-rw-r--r--src/runtime/q3dsuippresentation.cpp108
1 files changed, 55 insertions, 53 deletions
diff --git a/src/runtime/q3dsuippresentation.cpp b/src/runtime/q3dsuippresentation.cpp
index 1fbc963..982d306 100644
--- a/src/runtime/q3dsuippresentation.cpp
+++ b/src/runtime/q3dsuippresentation.cpp
@@ -3898,67 +3898,69 @@ void Q3DSUipPresentation::addImplicitPropertyChanges()
{
// TODO: There might be other cases where we need to generate the property changes,
// this only deals with the start and end times for now.
- forAllObjectsInSubTree(scene(), [](Q3DSGraphObject *obj) {
- if ((obj->type() == Q3DSGraphObject::Slide && !obj->parent()) || obj->type() == Q3DSGraphObject::Component) {
- const bool isComponent = (obj->type() == Q3DSGraphObject::Component);
- Q3DSSlide *master = isComponent ? static_cast<Q3DSComponentNode *>(obj)->masterSlide() : static_cast<Q3DSSlide *>(obj);
- Q3DSSlide *slide = static_cast<Q3DSSlide *>(master->firstChild());
- while (slide) {
- for (auto o : master->objects()) {
- if (!o->isNode())
- continue;
-
- auto propChanges = slide->propertyChanges();
- const auto foundIt = propChanges.constFind(o);
-
- struct StartAndEndTime {
- qint32 hasStart = false;
- qint32 hasEnd = false;
- const qint32 defaultStart = 0;
- const qint32 defaultEnd = 10000;
- } startAndEndTime;
-
- if (foundIt != propChanges.cend()) {
- std::find_if(foundIt.value()->cbegin(), foundIt.value()->cend(), [&startAndEndTime](const Q3DSPropertyChange &change) {
- if (startAndEndTime.hasStart && startAndEndTime.hasEnd)
- return true;
-
- if (change.name() == QLatin1String("starttime"))
- startAndEndTime.hasStart = true;
- else if (change.name() == QLatin1String("endtime"))
- startAndEndTime.hasEnd = true;
-
- return false;
- });
- }
+ static const auto addProps = [](Q3DSSlide *master) {
+ Q3DSSlide *slide = static_cast<Q3DSSlide *>(master->firstChild());
+ while (slide) {
+ for (auto o : master->objects()) {
+ if (!o->isNode())
+ continue;
+
+ auto propChanges = slide->propertyChanges();
+ const auto foundIt = propChanges.constFind(o);
+
+ struct StartAndEndTime {
+ qint32 hasStart = false;
+ qint32 hasEnd = false;
+ const qint32 defaultStart = 0;
+ const qint32 defaultEnd = 10000;
+ } startAndEndTime;
+
+ if (foundIt != propChanges.cend()) {
+ std::find_if(foundIt.value()->cbegin(), foundIt.value()->cend(), [&startAndEndTime](const Q3DSPropertyChange &change) {
+ if (change.nameStr() == QLatin1String("starttime"))
+ startAndEndTime.hasStart = true;
+ else if (change.nameStr() == QLatin1String("endtime"))
+ startAndEndTime.hasEnd = true;
+
+ return (startAndEndTime.hasStart && startAndEndTime.hasEnd);
+ });
+ }
- // No prop change for object, then add default values 0s and 10s
- if (!startAndEndTime.hasStart) {
- const auto propChange = Q3DSPropertyChange::fromVariant(QLatin1String("starttime"), QVariant::fromValue(startAndEndTime.defaultStart));
- if (foundIt != propChanges.constEnd()) {
- auto propChangeList = slide->takePropertyChanges(o);
- propChangeList->append(propChange);
- slide->addPropertyChanges(o, propChangeList);
- } else {
- slide->addPropertyChanges(o, new Q3DSPropertyChangeList({propChange}));
- }
+ // No prop change for object, then add default values 0s and 10s
+ if (!startAndEndTime.hasStart) {
+ const auto propChange = Q3DSPropertyChange::fromVariant(QLatin1String("starttime"), QVariant::fromValue(startAndEndTime.defaultStart));
+ if (foundIt != propChanges.constEnd()) {
+ auto propChangeList = slide->takePropertyChanges(o);
+ propChangeList->append(propChange);
+ slide->addPropertyChanges(o, propChangeList);
+ } else {
+ slide->addPropertyChanges(o, new Q3DSPropertyChangeList({propChange}));
}
+ }
- if (!startAndEndTime.hasEnd) {
- const auto propChange = Q3DSPropertyChange::fromVariant(QLatin1String("endtime"), QVariant::fromValue(startAndEndTime.defaultEnd));
- if (foundIt != propChanges.constEnd()) {
- auto propChangeList = slide->takePropertyChanges(o);
- propChangeList->append(propChange);
- slide->addPropertyChanges(o, propChangeList);
- } else {
- slide->addPropertyChanges(o, new Q3DSPropertyChangeList({propChange}));
- }
+ if (!startAndEndTime.hasEnd) {
+ const auto propChange = Q3DSPropertyChange::fromVariant(QLatin1String("endtime"), QVariant::fromValue(startAndEndTime.defaultEnd));
+ if (foundIt != propChanges.constEnd()) {
+ auto propChangeList = slide->takePropertyChanges(o);
+ propChangeList->append(propChange);
+ slide->addPropertyChanges(o, propChangeList);
+ } else {
+ slide->addPropertyChanges(o, new Q3DSPropertyChangeList({propChange}));
}
}
- slide = static_cast<Q3DSSlide *>(slide->nextSibling());
}
+ slide = static_cast<Q3DSSlide *>(slide->nextSibling());
}
+ };
+
+ // Add implicit end/start time property changes to the components
+ forAllObjectsInSubTree(scene(), [](Q3DSGraphObject *obj) {
+ if (obj->type() == Q3DSGraphObject::Component)
+ addProps(static_cast<Q3DSComponentNode *>(obj)->masterSlide());
});
+
+ // And do the same for all slides
+ addProps(masterSlide());
}
QHash<QString, bool> &Q3DSUipPresentation::imageTransparencyHash()