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
|
|
|
{
|
2024-01-06 15:05:30 +01: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"
|