From 4ed5f7e43100c9178da8da5ceded030fba46b1df Mon Sep 17 00:00:00 2001 From: "Vogel, Rick" Date: Tue, 8 Aug 2023 11:11:01 +0200 Subject: [PATCH] simplyfy setter --- src/controls/private/QskLevelingSensor.cpp | 31 +------ src/controls/private/QskLevelingSensorNodes.h | 90 ------------------- 2 files changed, 3 insertions(+), 118 deletions(-) diff --git a/src/controls/private/QskLevelingSensor.cpp b/src/controls/private/QskLevelingSensor.cpp index 342c120c..1be277a3 100644 --- a/src/controls/private/QskLevelingSensor.cpp +++ b/src/controls/private/QskLevelingSensor.cpp @@ -131,35 +131,10 @@ QVector3D QskLevelingSensor::subControlRotation( const QskAspect::Subcontrol sub void QskLevelingSensor::setSubControlRotation( const QskAspect::Subcontrol subControl, const QVector3D& degrees ) { - auto updateSubControlRotation = [ this ]( const QskAspect::Subcontrol subControl, - const QVector3D& degrees ) { - if ( compareExchange( m_data->m_subControlRotation[ subControl ], degrees ) ) - { - Q_EMIT subControlRotationChanged( subControl, degrees ); - update(); - } - }; - - using Q = QskLevelingSensor; - - if ( subControl == Q::TickmarksX || subControl == Q::TickmarksXLabels ) + if ( compareExchange( m_data->m_subControlRotation[ subControl ], degrees ) ) { - updateSubControlRotation( Q::TickmarksX, degrees ); - updateSubControlRotation( Q::TickmarksXLabels, degrees ); - } - else if ( subControl == Q::TickmarksY || subControl == Q::TickmarksYLabels ) - { - updateSubControlRotation( Q::TickmarksY, degrees ); - updateSubControlRotation( Q::TickmarksYLabels, degrees ); - } - else if ( subControl == Q::TickmarksZ || subControl == TickmarksZLabels ) - { - updateSubControlRotation( TickmarksZ, degrees ); - updateSubControlRotation( TickmarksZLabels, degrees ); - } - else - { - updateSubControlRotation( subControl, degrees ); + update(); + Q_EMIT subControlRotationChanged( subControl, degrees ); } } diff --git a/src/controls/private/QskLevelingSensorNodes.h b/src/controls/private/QskLevelingSensorNodes.h index f5dec598..50e713b2 100644 --- a/src/controls/private/QskLevelingSensorNodes.h +++ b/src/controls/private/QskLevelingSensorNodes.h @@ -103,96 +103,6 @@ class RadialTickmarksNode final : public QSGGeometryNode QskHashValue m_tickmarksHash{ 0 }; }; -class LinearTickmarksNode final : public QSGGeometryNode -{ - public: - LinearTickmarksNode() - : m_geometry( QSGGeometry::defaultAttributes_Point2D(), 0 ) - { - m_geometry.setDrawingMode( QSGGeometry::DrawLines ); - m_geometry.setVertexDataPattern( QSGGeometry::StaticPattern ); - - setGeometry( &m_geometry ); - setMaterial( &m_material ); - } - - void setMaterialProperties( const QColor& color ) - { - auto dirty = false; - - if ( dirty |= ( m_material.color() != color ) ) - { - m_material.setColor( color ); - } - - if ( dirty ) - { - markDirty( QSGNode::DirtyMaterial ); - } - } - - void setGeometryProperties( const QskScaleTickmarks& tickmarks, const QVector3D& tickmarkSize, - const QVector2D& scale = { 1.0, 0.0f }, const QVector2D& offset = {}, - const float lineWidth = 1.0f, const bool forceDirty = false ) - { - auto dirty = forceDirty; - - if ( dirty |= !qFuzzyCompare( m_geometry.lineWidth(), lineWidth ) ) - { - m_geometry.setLineWidth( lineWidth ); - } - - dirty |= m_geometry.vertexCount() != tickmarks.tickCount() * 2; - dirty |= compareExchange( m_tickmarkSize, tickmarkSize ); - dirty |= compareExchange( m_scale, scale ); - dirty |= compareExchange( m_offset, offset ); - - if ( dirty ) - { - update( tickmarks ); - markDirty( QSGNode::DirtyGeometry ); - } - } - - private: - void update( const QskScaleTickmarks& tickmarks ) - { - if ( m_geometry.vertexCount() != tickmarks.tickCount() * 2 ) - { - m_geometry.allocate( tickmarks.tickCount() * 2 ); - } - - auto* vertexData = m_geometry.vertexDataAsPoint2D(); - - using T = QskScaleTickmarks::TickType; - for ( auto type : { T::MinorTick, T::MediumTick, T::MajorTick } ) - { - for ( const auto tick : tickmarks.ticks( type ) ) - { - const auto i = static_cast< int >( type ); - - const auto p = m_scale * tick; - const auto d = QVector2D( -m_scale.y(), m_scale.x() ).normalized(); - - const auto p1 = m_tickmarkSize[ i ] * +1 * d + p + m_offset; - const auto p2 = m_tickmarkSize[ i ] * -1 * d + p + m_offset; - - vertexData[ 0 ].set( p1.x(), p1.y() ); - vertexData[ 1 ].set( p2.x(), p2.y() ); - vertexData += 2; - } - } - - m_geometry.markVertexDataDirty(); - } - - QSGGeometry m_geometry; - QSGFlatColorMaterial m_material; - QVector2D m_scale = { 1.0f, 0.0f }; - QVector2D m_offset = { 0.0f, 0.0f }; - QVector3D m_tickmarkSize = { 1.0, 2.0, 4.0 }; -}; - class RadialClipNode final : public QSGClipNode { public: