mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: port picture code to qt-quick
This was very painful, because I had to implement rearranging the paint order of the QSGNodes. The resulting code appears quite brittle. Let's see where that brings us. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
d0c26f42d7
commit
ebf9ce6d86
22 changed files with 979 additions and 592 deletions
|
@ -127,10 +127,54 @@ void ChartView::clearItems()
|
|||
dirtyItems.splice(deletedItems);
|
||||
}
|
||||
|
||||
void ChartView::addQSGNode(QSGNode *node, size_t z)
|
||||
static ZNode &getZNode(RootNode &rootNode, size_t z)
|
||||
{
|
||||
size_t idx = std::clamp(z, (size_t)0, maxZ);
|
||||
rootNode->zNodes[idx]->appendChildNode(node);
|
||||
size_t idx = std::clamp(z, (size_t)0, rootNode.zNodes.size());
|
||||
return *rootNode.zNodes[idx];
|
||||
}
|
||||
|
||||
void ChartView::addQSGNode(QSGNode *node, size_t z, bool moveAfter, QSGNode *node2)
|
||||
{
|
||||
auto &parent = getZNode(*rootNode, z);
|
||||
if (node2) {
|
||||
if (moveAfter)
|
||||
parent.insertChildNodeAfter(node, node2);
|
||||
else
|
||||
parent.insertChildNodeBefore(node, node2);
|
||||
} else {
|
||||
if (moveAfter)
|
||||
parent.prependChildNode(node);
|
||||
else
|
||||
parent.appendChildNode(node);
|
||||
}
|
||||
}
|
||||
|
||||
void ChartView::moveNodeBefore(QSGNode *node, size_t z, QSGNode *before)
|
||||
{
|
||||
auto &parent = getZNode(*rootNode, z);
|
||||
parent.removeChildNode(node);
|
||||
parent.insertChildNodeBefore(node, before);
|
||||
}
|
||||
|
||||
void ChartView::moveNodeBack(QSGNode *node, size_t z)
|
||||
{
|
||||
auto &parent = getZNode(*rootNode, z);
|
||||
parent.removeChildNode(node);
|
||||
parent.appendChildNode(node);
|
||||
}
|
||||
|
||||
void ChartView::moveNodeAfter(QSGNode *node, size_t z, QSGNode *before)
|
||||
{
|
||||
auto &parent = getZNode(*rootNode, z);
|
||||
parent.removeChildNode(node);
|
||||
parent.insertChildNodeAfter(node, before);
|
||||
}
|
||||
|
||||
void ChartView::moveNodeFront(QSGNode *node, size_t z)
|
||||
{
|
||||
auto &parent = getZNode(*rootNode, z);
|
||||
parent.removeChildNode(node);
|
||||
parent.prependChildNode(node);
|
||||
}
|
||||
|
||||
void ChartView::registerChartItem(ChartItem &item)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue