something works somehow

This commit is contained in:
Peter Hartmann 2020-09-18 17:36:33 +02:00
parent 3e801ea126
commit fa8b4da0b2
7 changed files with 193 additions and 43 deletions

View File

@ -1,7 +1,7 @@
#include "Box.h" #include "Box.h"
#include "DaytimeSkin.h" #include "DaytimeSkin.h"
#include "src/shadowedrectangle.h" #include "QskShadowedRectangle.h"
#include <QskBoxBorderColors.h> #include <QskBoxBorderColors.h>
#include <QskBoxBorderMetrics.h> #include <QskBoxBorderMetrics.h>
@ -26,8 +26,18 @@ Box::Box( const QString& title, QQuickItem* parent )
setBoxBorderColorsHint( QskBox::Panel, borderColors ); setBoxBorderColorsHint( QskBox::Panel, borderColors );
auto* r = new ShadowedRectangle( this ); auto* r = new QskShadowedRectangle( this );
r->setColor( Qt::green ); // r->setPosition( {50, 50} );
// r->setColor( Qt::green );
// r->setOpacity( 0.5 );
// r->setSize( {100, 50} );
// r->setVisible( true );
// r->corners()->setTopLeft( 5 );
// r->corners()->setTopRight( 5 );
// r->corners()->setBottomLeft( 5 );
// r->corners()->setBottomRight( 5 );
// r->setRadius( 5 );
auto* t = new QskTextLabel( "bla", r );
m_label->setFontRole( DaytimeSkin::TitleFont ); m_label->setFontRole( DaytimeSkin::TitleFont );

View File

@ -1,6 +1,8 @@
#include "DaytimeSkin.h" #include "DaytimeSkin.h"
#include "MenuBar.h" #include "MenuBar.h"
#include "QskShadowedRectangle.h"
#include "QskShadowedRectangleSkinlet.h"
#include "PieChart.h" #include "PieChart.h"
#include "PieChartSkinlet.h" #include "PieChartSkinlet.h"
@ -29,6 +31,7 @@ namespace
DaytimeSkin::DaytimeSkin( QObject* parent ) : QskSkin( parent ) DaytimeSkin::DaytimeSkin( QObject* parent ) : QskSkin( parent )
{ {
declareSkinlet< QskShadowedRectangle, QskShadowedRectangleSkinlet >();
declareSkinlet< PieChart, PieChartSkinlet >(); declareSkinlet< PieChart, PieChartSkinlet >();
initHints(); initHints();
} }

View File

@ -0,0 +1,7 @@
#include "QskShadowedRectangle.h"
QSK_SUBCONTROL( QskShadowedRectangle, Shadow )
QskShadowedRectangle::QskShadowedRectangle( QQuickItem* parent ) : QskControl( parent )
{
}

View File

@ -0,0 +1,51 @@
#ifndef QSKSHADOWEDRECTANGLE_H
#define QSKSHADOWEDRECTANGLE_H
#include "src/shadowedrectangle.h"
#include <QskControl.h>
class QskShadowedRectangle : public QskControl
{
Q_OBJECT
public:
QSK_SUBCONTROLS( Shadow )
QskShadowedRectangle( QQuickItem* parent = nullptr );
// ~QskShadowedRectangle() override;
// BorderGroup* border() const;
// ShadowGroup* shadow() const;
// CornersGroup* corners() const;
// qreal radius() const;
// void setRadius( qreal newRadius );
// Q_SIGNAL void radiusChanged();
// QColor color() const;
// void setColor( const QColor& newColor );
// Q_SIGNAL void colorChanged();
// void componentComplete() override;
// bool isSoftwareRendering() const;
// Q_SIGNALS:
// void softwareRenderingChanged();
// protected:
// PaintedRectangleItem* softwareItem() const;
// void itemChange( QQuickItem::ItemChange change, const QQuickItem::ItemChangeData& value ) override;
// private:
// void checkSoftwareItem();
// const std::unique_ptr<BorderGroup> m_border;
// const std::unique_ptr<ShadowGroup> m_shadow;
// const std::unique_ptr<CornersGroup> m_corners;
// qreal m_radius = 0.0;
// QColor m_color = Qt::white;
// PaintedRectangleItem* m_softwareItem = nullptr;
};
#endif // QSKSHADOWEDRECTANGLE_H

View File

@ -0,0 +1,64 @@
#include "QskShadowedRectangleSkinlet.h"
#include "QskShadowedRectangle.h"
#include "src/scenegraph/shadowedrectanglenode.h"
QskShadowedRectangleSkinlet::QskShadowedRectangleSkinlet( QskSkin* skin ) : QskSkinlet( skin )
, m_border( new BorderGroup )
, m_shadow( new ShadowGroup )
, m_corners( new CornersGroup )
{
setNodeRoles( { ShadowRole } );
}
QRectF QskShadowedRectangleSkinlet::subControlRect( const QskSkinnable*, const QRectF& contentsRect, QskAspect::Subcontrol ) const
{
return contentsRect;
}
QSGNode* QskShadowedRectangleSkinlet::updateSubNode( const QskSkinnable* skinnable, quint8 nodeRole, QSGNode* node ) const
{
const auto rectangle = static_cast< const QskShadowedRectangle* >( skinnable );
switch( nodeRole )
{
case ShadowRole:
return updateShadowNode( rectangle, node );
default:
return nullptr;
}
}
QSGNode* QskShadowedRectangleSkinlet::updateShadowNode( const QskShadowedRectangle* rectangle, QSGNode* node ) const
{
auto shadowNode = static_cast<ShadowedRectangleNode*>( node );
if( !shadowNode )
{
shadowNode = new ShadowedRectangleNode{};
}
// shadowNode->setBorderEnabled( m_border->isEnabled() );
// shadowNode->setRect( rectangle->contentsRect() );
// shadowNode->setSize( m_shadow->size() );
// shadowNode->setRadius( m_corners->toVector4D( m_radius ) );
// shadowNode->setOffset( QVector2D{float( m_shadow->xOffset() ), float( m_shadow->yOffset() )} );
// shadowNode->setColor( m_color );
// shadowNode->setShadowColor( m_shadow->color() );
// shadowNode->setBorderWidth( m_border->width() );
// shadowNode->setBorderColor( m_border->color() );
// shadowNode->updateGeometry();
shadowNode->setBorderEnabled( true );
shadowNode->setRect( {0, 0, 100, 50} );
shadowNode->setSize( 50 );
shadowNode->setRadius( m_corners->toVector4D( 5 ) );
shadowNode->setOffset( QVector2D{float( 1 ), float( 1 )} );
shadowNode->setColor( Qt::green );
shadowNode->setShadowColor( Qt::magenta );
shadowNode->setBorderWidth( 2 );
shadowNode->setBorderColor( Qt::red );
shadowNode->updateGeometry();
return shadowNode;
}

View File

@ -0,0 +1,39 @@
#ifndef QSKSHADOWEDRECTANGLESKINLET_H
#define QSKSHADOWEDRECTANGLESKINLET_H
#include "src/shadowedrectangle.h"
#include <QskSkinlet.h>
class QskShadowedRectangle;
class QskShadowedRectangleSkinlet : public QskSkinlet
{
Q_GADGET
public:
enum NodeRole
{
ShadowRole,
};
Q_INVOKABLE QskShadowedRectangleSkinlet( QskSkin* skin = nullptr );
QRectF subControlRect( const QskSkinnable*, const QRectF&, QskAspect::Subcontrol ) const override;
protected:
virtual QSGNode* updateSubNode( const QskSkinnable*, quint8 nodeRole, QSGNode* node ) const override;
private:
QSGNode* updateShadowNode( const QskShadowedRectangle*, QSGNode* ) const;
// ### move this to the value class:
const std::unique_ptr<BorderGroup> m_border;
const std::unique_ptr<ShadowGroup> m_shadow;
const std::unique_ptr<CornersGroup> m_corners;
qreal m_radius = 0.0;
QColor m_color = Qt::white;
PaintedRectangleItem* m_softwareItem = nullptr;
};
#endif // QSKSHADOWEDRECTANGLESKINLET_H

View File

@ -14,6 +14,8 @@ SOURCES += \
PieChart.cpp \ PieChart.cpp \
PieChartPainted.cpp \ PieChartPainted.cpp \
PieChartSkinlet.cpp \ PieChartSkinlet.cpp \
QskShadowedRectangle.cpp \
QskShadowedRectangleSkinlet.cpp \
RoundedIcon.cpp \ RoundedIcon.cpp \
TopBar.cpp \ TopBar.cpp \
Usage.cpp \ Usage.cpp \
@ -35,53 +37,27 @@ HEADERS += \
PieChart.h \ PieChart.h \
PieChartPainted.h \ PieChartPainted.h \
PieChartSkinlet.h \ PieChartSkinlet.h \
QskShadowedRectangle.h \
QskShadowedRectangleSkinlet.h \
RoundedIcon.h \ RoundedIcon.h \
TopBar.h \ TopBar.h \
Usage.h Usage.h
HEADERS += src/avatar.h \ HEADERS += \
src/colorutils.h \
src/columnview.h \
src/columnview_p.h \
src/delegaterecycler.h \
src/enums.h \
src/formlayoutattached.h \
src/icon.h \
src/imagecolors.h \
src/kirigamiplugin.h \
src/mnemonicattached.h \
src/pagepool.h \
src/pagerouter.h \
src/scenepositionattached.h \
src/settings.h \
src/shadowedrectangle.h \ src/shadowedrectangle.h \
src/shadowedtexture.h \ src/scenegraph/paintedrectangleitem.h \
src/sizegroup.h \ src/scenegraph/shadowedborderrectanglematerial.h \
src/toolbarlayoutdelegate.h \ src/scenegraph/shadowedrectanglematerial.h \
src/toolbarlayout.h \ src/scenegraph/shadowedrectanglenode.h
src/wheelhandler.h
SOURCES += src/avatar.cpp \ SOURCES += \
src/colorutils.cpp \
src/columnview.cpp \
src/delegaterecycler.cpp \
src/enums.cpp \
src/formlayoutattached.cpp \
src/icon.cpp \
src/imagecolors.cpp \
src/kirigamiplugin.cpp \
src/mnemonicattached.cpp \
src/pagepool.cpp \
src/pagerouter.cpp \
src/scenepositionattached.cpp \
src/settings.cpp \
src/shadowedrectangle.cpp \ src/shadowedrectangle.cpp \
src/shadowedtexture.cpp \ src/scenegraph/paintedrectangleitem.cpp \
src/sizegroup.cpp \ src/scenegraph/shadowedborderrectanglematerial.cpp \
src/toolbarlayoutdelegate.cpp \ src/scenegraph/shadowedrectanglematerial.cpp \
src/toolbarlayout.cpp \ src/scenegraph/shadowedrectanglenode.cpp
src/wheelhandler.cpp
RESOURCES += \ RESOURCES += \
images.qrc \ images.qrc \
fonts.qrc fonts.qrc \
src/scenegraph/shaders/shaders.qrc