27 #include <QtSvg/QSvgGenerator>
39 setItemIndexMethod(QGraphicsScene::ItemIndexMethod::NoIndex);
45 return toplevelStateInstance;
54 this->toplevelStateInstance = instance;
56 addItem(toplevelItem);
57 topLevelStateItem = toplevelItem;
64 width, width * sceneRect().height() / sceneRect().width(), QImage::Format_ARGB32);
68 QPainter painter(&img);
69 painter.setRenderHint(QPainter::Antialiasing);
77 std::function<void(
StateItem*)> clearRecursive;
84 for (
auto substateItem : item->getSubstateItems())
86 clearRecursive(substateItem);
88 item->clearActiveSubstate();
91 if (topLevelStateItem)
93 clearRecursive(topLevelStateItem);
97 QMap<QString, StateInstanceData>
100 QMap<QString, StateInstanceData> stateInstanceData;
102 std::function<QMap<QString, StateInstanceData>(
StateItem*)> getChildren;
105 QMap<QString, StateInstanceData> stateInstanceData;
108 auto fullpath = substateItem->getFullStatePath();
110 data.active = substateItem->isActive();
111 data.fullStatePath = fullpath;
112 data.stateInstance = substateItem->getStateInstance();
113 stateInstanceData[fullpath] =
data;
114 auto map = getChildren(substateItem);
115 for (
auto& key : map.keys())
117 stateInstanceData[key] = map[key];
120 return stateInstanceData;
123 if (topLevelStateItem)
125 stateInstanceData = getChildren(topLevelStateItem);
128 data.active = topLevelStateItem->isActive();
129 data.fullStatePath = fullpath;
131 stateInstanceData[fullpath] =
data;
134 return stateInstanceData;
140 return topLevelStateItem;