// SPDX-License-Identifier: GPL-2.0 // Private template implementation for ChartItem child classes #ifndef CHARTITEM_PRIVATE_H #define CHARTITEM_PRIVATE_H #include "chartitem.h" #include "chartview.h" template template void HideableChartItem::createNode(Args&&... args) { node.reset(new Node(visible, std::forward(args)...)); visibleChanged = false; } template void HideableChartItem::addNodeToView() { view.addQSGNode(node.get(), zValue, moveMode == MoveMode::after, moveNode); moveNode = nullptr; moveMode = MoveMode::none; } template HideableChartItem::HideableChartItem(ChartView &v, size_t z, bool dragable) : ChartItem(v, z, dragable), visible(true), visibleChanged(false), moveMode(MoveMode::none), moveNode(nullptr) { } template void HideableChartItem::updateVisible() { if (visibleChanged) node->setVisible(visible); visibleChanged = false; } template void HideableChartItem::doRearrange() { if (!node) return; switch (moveMode) { default: case MoveMode::none: return; case MoveMode::before: if (moveNode) view.moveNodeBefore(node.get(), zValue, moveNode); else view.moveNodeBack(node.get(), zValue); break; case MoveMode::after: if (moveNode) view.moveNodeAfter(node.get(), zValue, moveNode); else view.moveNodeFront(node.get(), zValue); break; } moveNode = nullptr; moveMode = MoveMode::none; } #endif