qskinny/src/nodes/QskShadedBoxNode.cpp

61 lines
1.8 KiB
C++
Raw Normal View History

2022-06-13 17:01:15 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#include "QskShadedBoxNode.h"
#include "QskBoxShadowNode.h"
#include "QskShadowMetrics.h"
#include <qcolor.h>
QskShadedBoxNode::QskShadedBoxNode()
{
m_boxNode.setFlag( QSGNode::OwnedByParent, false );
appendChildNode( &m_boxNode );
}
QskShadedBoxNode::~QskShadedBoxNode()
{
}
void QskShadedBoxNode::setBoxData( const QRectF& rect,
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& borderMetrics,
const QskBoxBorderColors& borderColors, const QskGradient& gradient,
const QskShadowMetrics& shadowMetrics, const QColor& shadowColor )
{
m_boxNode.setBoxData( rect, shape, borderMetrics, borderColors, gradient );
setShadowData( rect, shape, shadowMetrics, shadowColor );
}
void QskShadedBoxNode::setShadowData(
const QRectF& rect, const QskBoxShapeMetrics& shape,
const QskShadowMetrics& metrics, const QColor& color )
{
if ( metrics.isNull() || !color.isValid() || color.alpha() == 0 )
{
if ( m_shadowNode )
{
removeChildNode( m_shadowNode );
delete m_shadowNode;
m_shadowNode = nullptr;
}
}
else
{
if ( m_shadowNode == nullptr )
{
m_shadowNode = new QskBoxShadowNode();
insertChildNodeBefore( m_shadowNode, &m_boxNode );
}
2022-06-14 12:03:33 +02:00
m_shadowNode->setColor( color );
2022-06-13 17:01:15 +02:00
m_shadowNode->setRect( metrics.shadowRect( rect ) );
m_shadowNode->setShape( shape );
m_shadowNode->setBlurRadius( metrics.blurRadius() );
m_shadowNode->setClipShape( shape );
m_shadowNode->updateGeometry();
}
}