From a90f1c443920507a37e71f6d63f8d6fe90a9fc2f Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 3 Dec 2023 18:06:34 +0100 Subject: [PATCH] playground/parrots derived from Ricks work --- playground/CMakeLists.txt | 5 +- playground/parrots/CMakeLists.txt | 9 ++ playground/parrots/images.qrc | 9 ++ playground/parrots/images/parrots.jpg | Bin 0 -> 46263 bytes playground/parrots/main.cpp | 207 ++++++++++++++++++++++++++ 5 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 playground/parrots/CMakeLists.txt create mode 100644 playground/parrots/images.qrc create mode 100644 playground/parrots/images/parrots.jpg create mode 100644 playground/parrots/main.cpp diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 2e7b04ca..98e4af85 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -6,7 +6,10 @@ add_subdirectory(invoker) add_subdirectory(shadows) add_subdirectory(shapes) add_subdirectory(charts) -add_subdirectory(plots) + +if (QT_VERSION_MAJOR VERSION_LESS 6) + add_subdirectory(parrots) +endif() if (BUILD_INPUTCONTEXT) add_subdirectory(inputpanel) diff --git a/playground/parrots/CMakeLists.txt b/playground/parrots/CMakeLists.txt new file mode 100644 index 00000000..2fa72156 --- /dev/null +++ b/playground/parrots/CMakeLists.txt @@ -0,0 +1,9 @@ +############################################################################ +# QSkinny - Copyright (C) 2016 Uwe Rathmann +# SPDX-License-Identifier: BSD-3-Clause +############################################################################ + +set(SOURCES main.cpp) +qt_add_resources(SOURCES images.qrc) + +qsk_add_example(parrots ${SOURCES}) diff --git a/playground/parrots/images.qrc b/playground/parrots/images.qrc new file mode 100644 index 00000000..27ff546c --- /dev/null +++ b/playground/parrots/images.qrc @@ -0,0 +1,9 @@ + + + + + images/parrots.jpg + + + + diff --git a/playground/parrots/images/parrots.jpg b/playground/parrots/images/parrots.jpg new file mode 100644 index 0000000000000000000000000000000000000000..820b93dd0dae70293357f041773ae47eed17fa0c GIT binary patch literal 46263 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

Nwgez6 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

*u^Q;neD_GjF4>R~&( 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 G&;Qwy6aS3> literal 0 HcmV?d00001 diff --git a/playground/parrots/main.cpp b/playground/parrots/main.cpp new file mode 100644 index 00000000..bc2e3dc5 --- /dev/null +++ b/playground/parrots/main.cpp @@ -0,0 +1,207 @@ +/****************************************************************************** + * QSkinny - Copyright (C) 2016 Uwe Rathmann + * SPDX-License-Identifier: BSD-3-Clause + *****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +static const char* vertexShader = R"( + uniform highp mat4 qt_Matrix; + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + varying highp vec2 coord; + void main() { + coord = qt_MultiTexCoord0; + gl_Position = qt_Matrix * qt_Vertex; + })"; + +static const char* fragmentShader = R"( + varying highp vec2 coord; + uniform sampler2D source; + uniform lowp float qt_Opacity; + + void main() { + vec2 delta = vec2(0.01, 0.01); + gl_FragColor =(0.0538 * texture2D(source, coord - 3.182 * delta) + + 0.3229 * texture2D(source, coord - 1.364 * delta) + + 0.2466 * texture2D(source, coord) + + 0.3229 * texture2D(source, coord + 1.364 * delta) + + 0.0538 * texture2D(source, coord + 3.182 * delta)) * qt_Opacity; + })"; + +class ButtonBox: public QskLinearBox +{ + public: + ButtonBox( QQuickItem* parent = nullptr ) + : QskLinearBox( parent ) + { + ( void ) new QskPushButton( "Button 1", this ); + ( void ) new QskPushButton( "Button 2", this ); + ( void ) new QskPushButton( "Button 3", this ); + } +}; + +class ShaderEffect : public QQuickShaderEffect +{ + using Inherited = QQuickShaderEffect; + + public: + ShaderEffect( QQuickItem* parent = nullptr ) + : QQuickShaderEffect( parent ) + { + setVertexShader( ::vertexShader ); + setFragmentShader( ::fragmentShader ); + + m_source = new QQuickShaderEffectSource( this ); + m_source->setLive( true ); + + setSource( m_source ); + } + + void setSourceItem( QQuickItem* item ) { m_source->setSourceItem( item ); } + QQuickItem* sourceItem() const { return m_source->sourceItem(); } + + protected: + void geometryChanged( const QRectF& newRect, const QRectF& oldRect ) override + { + Inherited::geometryChanged( newRect, oldRect ); + + auto sourceRect = newRect; + sourceRect = m_source->sourceItem()->mapRectFromItem( this, sourceRect ); + + m_source->setSourceRect( sourceRect ); + } + + private: + void setSource( QQuickShaderEffectSource* source ) + { + setProperty( "source", QVariant::fromValue( source ) ); + } + + QQuickShaderEffectSource* m_source; +}; + +class BlurredBox : public QskControl +{ + using Inherited = QskControl; + + public: + BlurredBox( QQuickItem* parent = nullptr ) + : QskControl( parent ) + { + setFlag( QQuickItem::ItemHasContents, false ); + setAutoLayoutChildren( true ); + + m_effect = new ShaderEffect( this ); + } + + void setSourceItem( QQuickItem* item ) + { + m_effect->setSourceItem( item ); + } + + private: + ShaderEffect* m_effect; +}; + +class BackgroundItem : public QskControl +{ + public: + BackgroundItem( QQuickItem* parent = nullptr ) + : QskControl( parent ) + { + m_label = new QskGraphicLabel( this ); + m_label->setFillMode( QskGraphicLabel::Stretch ); + + const QImage image( ":/images/parrots.jpg" ); + m_label->setGraphic( QskGraphic::fromImage( image ) ); + + startTimer( 20 ); + } + + void timerEvent( QTimerEvent* ) override + { + static int counter = 0; + + const auto angle = counter++ / 50.0 * M_PI * 2.0 ; + + const auto x = std::cos( angle ); + const auto y = std::sin( angle ); + + const qreal margin = 20; + + auto labelRect = rect(); + labelRect.adjust( margin, margin, -margin, -margin ); + labelRect.translate( margin * x, margin * y ); + + m_label->setGeometry( labelRect ); + } + + private: + QskGraphicLabel* m_label; +}; + +class MainView : public QskControl +{ + public: + MainView( QQuickItem* parent = nullptr ) + : QskControl( parent ) + { + setPolishOnResize( true ); + + m_background = new BackgroundItem( this ); + + m_blurredBox = new BlurredBox( this ); + m_blurredBox->setSourceItem( m_background ); + + (void )new ButtonBox( m_blurredBox ); + } + + protected: + void updateLayout() + { + m_background->setGeometry( rect() ); + + QRectF blurredRect( QPointF(), 0.7 * size() ); + blurredRect.moveCenter( rect().center() ); + + m_blurredBox->setGeometry( blurredRect ); + } + + private: + BackgroundItem* m_background; + BlurredBox* m_blurredBox; +}; + +int main( int argc, char** argv ) +{ + QGuiApplication app( argc, argv ); + + SkinnyShortcut::enable( SkinnyShortcut::AllShortcuts ); + + QskWindow window; + window.setColor( Qt::darkGray ); + window.addItem( new MainView( window.contentItem() ) ); + window.resize( 800, 600 ); + window.show(); + + return app.exec(); +}