2024-01-17 14:31:45 +01:00

72 lines
1.5 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) The authors
* SPDX-License-Identifier: BSD-3-Clause
*****************************************************************************/
#pragma once
#include "QskControl.h"
class QskBoxRectangleNode;
class Frame : public QskControl
{
Q_OBJECT
Q_PROPERTY( Style style READ style WRITE setStyle NOTIFY styleChanged FINAL )
Q_PROPERTY( qreal frameWidth READ frameWidth
WRITE setFrameWidth NOTIFY frameWidthChanged FINAL )
Q_PROPERTY( qreal radius READ radius
WRITE setRadius NOTIFY radiusChanged )
Q_PROPERTY( QColor color READ color
WRITE setColor NOTIFY colorChanged )
using Inherited = QskControl;
public:
enum Style
{
Plain,
Raised,
Sunken
};
Q_ENUM( Style )
Frame( QQuickItem* parent = nullptr );
~Frame() override;
void setStyle( Style );
Style style() const;
void setFrameWidth( qreal );
qreal frameWidth() const;
// Qt::RelativeSize: a percentage in the range [0-100]
void setRadius( qreal );
qreal radius() const;
void setColor( const QColor& );
QColor color() const;
Q_SIGNALS:
void styleChanged();
void frameWidthChanged();
void radiusChanged();
void colorChanged();
protected:
void updateNode( QSGNode* ) override;
private:
void updateFrameNode( const QRectF&, QskBoxRectangleNode* );
Style m_style;
QColor m_color;
qreal m_frameWidth;
qreal m_radius;
};