/* SPDX-FileCopyrightText: 2025 Vlad Zahorodnii SPDX-License-Identifier: GPL-2.0-or-later */ #include "splititem.h" #include "splitnode.h" SplitItem::SplitItem(QQuickItem *parent) : QQuickItem(parent) { setFlag(ItemHasContents); } QQuickItem *SplitItem::firstItem() const { return m_firstItem; } void SplitItem::setFirstItem(QQuickItem *item) { if (m_firstItem != item) { m_firstItem = item; update(); Q_EMIT firstItemChanged(); } } QQuickItem *SplitItem::secondItem() const { return m_secondItem; } void SplitItem::setSecondItem(QQuickItem *item) { if (m_secondItem != item) { m_secondItem = item; update(); Q_EMIT secondItemChanged(); } } qreal SplitItem::shutter() const { return m_shutter; } void SplitItem::setShutter(qreal shutter) { if (m_shutter != shutter) { m_shutter = shutter; update(); Q_EMIT shutterChanged(); } } QSGNode *SplitItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { if (!m_firstItem || !m_firstItem->isTextureProvider()) { delete oldNode; return nullptr; } if (!m_secondItem || !m_secondItem->isTextureProvider()) { delete oldNode; return nullptr; } if (window()->rendererInterface()->graphicsApi() == QSGRendererInterface::Software) { SoftwareSplitNode *node = static_cast(oldNode); if (!node) { node = new SoftwareSplitNode(); } node->setRect(boundingRect()); node->setWindow(window()); node->setFirst(m_firstItem->textureProvider()); node->setSecond(m_secondItem->textureProvider()); return node; } else { SplitNode *node = static_cast(oldNode); if (!node) { node = new SplitNode(); } node->setShutter(m_shutter); node->setFirst(m_firstItem->textureProvider()); node->setSecond(m_secondItem->textureProvider()); node->setRect(boundingRect()); return node; } } #include "moc_splititem.cpp"