qskinny/playground/shadows/ShadowedBox.cpp

117 lines
2.4 KiB
C++
Raw Normal View History

2021-08-04 10:11:12 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
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
{
2022-06-14 11:58:56 +02:00
QColor c( Qt::darkRed );
#if 0
c.setAlpha( 100 );
#endif
setGradientHint( Panel, c );
setBoxShapeHint( Panel, QskBoxShapeMetrics( 40, 0, 15, 0 ) );
setBoxBorderMetricsHint( Panel, 0 );
#if 0
setBoxBorderMetricsHint( Panel, 10 );
setBoxBorderColorsHint( Panel, Qt::blue );
#endif
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"