qskinny/playground/shadows/ShadowedBox.cpp

106 lines
2.2 KiB
C++
Raw Normal View History

2021-08-04 10:11:12 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
2023-04-06 09:23:37 +02:00
* SPDX-License-Identifier: BSD-3-Clause
2021-08-04 10:11:12 +02:00
*****************************************************************************/
2020-10-06 15:49:46 +02:00
#include "ShadowedBox.h"
#include <QskGradient.h>
2022-06-13 17:01:15 +02:00
#include <QskShadowMetrics.h>
#include <QskBoxShapeMetrics.h>
#include <QskBoxBorderColors.h>
#include <QskBoxBorderMetrics.h>
2020-10-06 15:49:46 +02:00
2020-12-05 15:09:31 +01:00
ShadowedBox::ShadowedBox( QQuickItem* parentItem )
2022-06-13 17:01:15 +02:00
: QskBox( true, parentItem )
2020-10-06 15:49:46 +02:00
{
setGradientHint( Panel, Qt::darkRed );
2022-06-14 11:58:56 +02:00
setBoxShapeHint( Panel, QskBoxShapeMetrics( 40, 0, 15, 0 ) );
setBoxBorderMetricsHint( Panel, 0 );
setShadowColorHint( Panel, Qt::black );
2020-10-06 15:49:46 +02:00
}
ShadowedBox::~ShadowedBox()
{
}
2022-06-14 11:58:56 +02:00
void ShadowedBox::setOffsetX( qreal dx )
2020-10-06 15:49:46 +02:00
{
2022-06-14 11:58:56 +02:00
auto metrics = shadowMetrics();
metrics.setOffsetX( dx );
setShadowMetrics( metrics );
2020-10-06 15:49:46 +02:00
}
2022-06-14 11:58:56 +02:00
qreal ShadowedBox::offsetX() const
2020-10-06 15:49:46 +02:00
{
2022-06-14 11:58:56 +02:00
return shadowMetrics().offset().x();
}
void ShadowedBox::setOffsetY( qreal dy )
{
auto metrics = shadowMetrics();
metrics.setOffsetY( dy );
setShadowMetrics( metrics );
}
qreal ShadowedBox::offsetY() const
{
return shadowMetrics().offset().y();
}
void ShadowedBox::setSpreadRadius( qreal radius )
{
auto metrics = shadowMetrics();
metrics.setSpreadRadius( radius );
setShadowMetrics( metrics );
}
qreal ShadowedBox::spreadRadius() const
{
return shadowMetrics().spreadRadius();
2020-10-06 15:49:46 +02:00
}
2022-06-14 11:58:56 +02:00
void ShadowedBox::setBlurRadius( qreal radius )
2020-10-06 15:49:46 +02:00
{
2022-06-14 11:58:56 +02:00
auto metrics = shadowMetrics();
metrics.setBlurRadius( radius );
setShadowMetrics( metrics );
}
qreal ShadowedBox::blurRadius() const
{
return shadowMetrics().blurRadius();
}
void ShadowedBox::setOpacity( qreal opacity )
{
opacity = qBound( 0.0, opacity, 1.0 );
auto color = shadowColorHint( Panel );
color.setAlphaF( opacity );
setShadowColorHint( Panel, color );
2020-10-06 15:49:46 +02:00
}
2022-06-14 11:58:56 +02:00
qreal ShadowedBox::opacity() const
2020-10-06 15:49:46 +02:00
{
2022-06-14 11:58:56 +02:00
return shadowColorHint( Panel ).alphaF();
2020-10-06 15:49:46 +02:00
}
2022-06-14 11:58:56 +02:00
QskShadowMetrics ShadowedBox::shadowMetrics() const
2021-09-18 14:48:25 +02:00
{
2022-06-14 11:58:56 +02:00
return shadowMetricsHint( Panel );
2021-09-18 14:48:25 +02:00
}
2022-06-14 11:58:56 +02:00
void ShadowedBox::setShadowMetrics( const QskShadowMetrics& metrics )
2021-09-18 14:48:25 +02:00
{
2022-06-14 11:58:56 +02:00
setShadowMetricsHint( Panel, metrics );
2021-09-18 14:48:25 +02:00
}
2020-10-06 15:49:46 +02:00
#include "moc_ShadowedBox.cpp"