Merge branch 'master' into cmake
This commit is contained in:
commit
d7007b4c22
|
@ -18,7 +18,7 @@ namespace
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ButtonBox( Qt::Orientation orientation, QQuickItem* parent = nullptr )
|
ButtonBox( Qt::Orientation orientation, QQuickItem* parent = nullptr )
|
||||||
: ButtonBox( orientation, -1, parent )
|
: ButtonBox( orientation, std::numeric_limits< uint >::max(), parent )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace
|
||||||
|
|
||||||
TypeCount
|
TypeCount
|
||||||
};
|
};
|
||||||
Q_ENUM( ButtonType );
|
Q_ENUM( ButtonType )
|
||||||
|
|
||||||
Button( ButtonType type, QQuickItem* parent = nullptr )
|
Button( ButtonType type, QQuickItem* parent = nullptr )
|
||||||
: QskPushButton( parent )
|
: QskPushButton( parent )
|
||||||
|
|
|
@ -28,7 +28,7 @@ class CircularProgressBar : public QskBoundedControl
|
||||||
|
|
||||||
CircularProgressBar( qreal min, qreal max, QQuickItem* parent = nullptr );
|
CircularProgressBar( qreal min, qreal max, QQuickItem* parent = nullptr );
|
||||||
CircularProgressBar( QQuickItem* parent = nullptr );
|
CircularProgressBar( QQuickItem* parent = nullptr );
|
||||||
~CircularProgressBar();
|
~CircularProgressBar() override;
|
||||||
|
|
||||||
bool isIndeterminate() const;
|
bool isIndeterminate() const;
|
||||||
void setIndeterminate( bool on = true );
|
void setIndeterminate( bool on = true );
|
||||||
|
|
|
@ -118,7 +118,7 @@ QSGNode* DiagramSkinlet::updateChartNode( const Diagram* diagram, QSGNode* node
|
||||||
QskAspect::Subcontrol areaSubcontrol = subcontrolForIndex( Diagram::Area, i );
|
QskAspect::Subcontrol areaSubcontrol = subcontrolForIndex( Diagram::Area, i );
|
||||||
QskAspect::Subcontrol barSubcontrol = subcontrolForIndex( Diagram::Bar, i );
|
QskAspect::Subcontrol barSubcontrol = subcontrolForIndex( Diagram::Bar, i );
|
||||||
|
|
||||||
int lineWidth = diagram->metric( lineSubcontrol | QskAspect::Size );
|
const auto lineWidth = diagram->metric( lineSubcontrol | QskAspect::Size );
|
||||||
|
|
||||||
for( const auto type : { Diagram::Line, Diagram::Area, Diagram::Bar } )
|
for( const auto type : { Diagram::Line, Diagram::Area, Diagram::Bar } )
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,8 +31,7 @@ LightDisplaySkinlet::~LightDisplaySkinlet()
|
||||||
QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
||||||
{
|
{
|
||||||
auto* display = static_cast< const LightDisplay* >( skinnable );
|
auto display = static_cast< const LightDisplay* >( skinnable );
|
||||||
QRectF rect = contentsRect;
|
|
||||||
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
||||||
|
|
||||||
if( subControl == LightDisplay::Groove || subControl == LightDisplay::Panel )
|
if( subControl == LightDisplay::Groove || subControl == LightDisplay::Panel )
|
||||||
|
@ -50,25 +49,23 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
|
|
||||||
const qreal diameter = qMin( w, h );
|
const qreal diameter = qMin( w, h );
|
||||||
|
|
||||||
rect = QRectF( x, y, diameter, diameter );
|
return QRectF( x, y, diameter, diameter );
|
||||||
return rect;
|
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::ColdAndWarmArc )
|
else if( subControl == LightDisplay::ColdAndWarmArc )
|
||||||
{
|
{
|
||||||
const QRectF panelRect = subControlRect( skinnable, contentsRect, LightDisplay::Panel );
|
const QRectF panelRect = subControlRect( skinnable, contentsRect, LightDisplay::Panel );
|
||||||
auto barWidth = display->arcMetricsHint( LightDisplay::ColdAndWarmArc ).width();
|
const auto barWidth = display->arcMetricsHint( LightDisplay::ColdAndWarmArc ).width();
|
||||||
auto rect = panelRect.marginsAdded( { barWidth, barWidth, barWidth, barWidth } );
|
|
||||||
return rect;
|
return panelRect.marginsAdded( { barWidth, barWidth, barWidth, barWidth } );
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::Tickmarks )
|
else if( subControl == LightDisplay::Tickmarks )
|
||||||
{
|
{
|
||||||
const QRectF arcRect = subControlRect(
|
const auto arcRect = subControlRect(
|
||||||
skinnable, contentsRect, LightDisplay::ColdAndWarmArc );
|
skinnable, contentsRect, LightDisplay::ColdAndWarmArc );
|
||||||
const qreal ticksWidth = display->arcMetricsHint(
|
const qreal ticksWidth = display->arcMetricsHint(
|
||||||
LightDisplay::Tickmarks ).width() + ticksSpacing;
|
LightDisplay::Tickmarks ).width() + ticksSpacing;
|
||||||
const QRectF rect =
|
|
||||||
arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
return arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
||||||
return rect;
|
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::ValueText )
|
else if( subControl == LightDisplay::ValueText )
|
||||||
{
|
{
|
||||||
|
@ -76,14 +73,18 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const QFontMetricsF fm( skinnable->effectiveFont( subControl ) );
|
const QFontMetricsF fm( skinnable->effectiveFont( subControl ) );
|
||||||
const qreal fontWidth = qskHorizontalAdvance( fm, QStringLiteral( "100 %" ) );
|
const qreal fontWidth = qskHorizontalAdvance( fm, QStringLiteral( "100 %" ) );
|
||||||
const QPointF center = valueTextRect.center();
|
const QPointF center = valueTextRect.center();
|
||||||
const QRectF rect( center.x() - fontWidth / 2, center.y() - fm.height() / 2, fontWidth, fm.height() );
|
|
||||||
return rect;
|
return QRectF(
|
||||||
|
center.x() - fontWidth / 2, center.y() - fm.height() / 2,
|
||||||
|
fontWidth, fm.height() );
|
||||||
}
|
}
|
||||||
else if( subControl == LightDisplay::LeftLabel )
|
else if( subControl == LightDisplay::LeftLabel )
|
||||||
{
|
{
|
||||||
const QRectF ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
const QRectF ticksRect = subControlRect(
|
||||||
|
skinnable, contentsRect, LightDisplay::Tickmarks );
|
||||||
const auto size = textLabelsSize( display );
|
const auto size = textLabelsSize( display );
|
||||||
|
|
||||||
|
auto rect = contentsRect;
|
||||||
rect.setWidth( size.width() );
|
rect.setWidth( size.width() );
|
||||||
|
|
||||||
rect.setY( ticksRect.y() + ( ticksRect.height() - size.height() ) / 2 );
|
rect.setY( ticksRect.y() + ( ticksRect.height() - size.height() ) / 2 );
|
||||||
|
@ -96,6 +97,7 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const auto ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
const auto ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
||||||
const auto size = textLabelsSize( display );
|
const auto size = textLabelsSize( display );
|
||||||
|
|
||||||
|
auto rect = contentsRect;
|
||||||
rect.setX( ticksRect.x() + ticksRect.width() );
|
rect.setX( ticksRect.x() + ticksRect.width() );
|
||||||
|
|
||||||
rect.setY( ticksRect.y() + ( ticksRect.height() - size.height() ) / 2 );
|
rect.setY( ticksRect.y() + ( ticksRect.height() - size.height() ) / 2 );
|
||||||
|
@ -119,8 +121,7 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const auto x = arcRect.center().x() - knobSize.width() / 2 - radius * cos;
|
const auto x = arcRect.center().x() - knobSize.width() / 2 - radius * cos;
|
||||||
const auto y = arcRect.center().y() - knobSize.height() / 2 - radius * sin;
|
const auto y = arcRect.center().y() - knobSize.height() / 2 - radius * sin;
|
||||||
|
|
||||||
rect = QRectF( x, y, knobSize.width(), knobSize.height() );
|
return QRectF( x, y, knobSize.width(), knobSize.height() );
|
||||||
return rect;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return contentsRect;
|
return contentsRect;
|
||||||
|
|
|
@ -19,7 +19,7 @@ DiagramSegmentsNode::DiagramSegmentsNode()
|
||||||
void DiagramSegmentsNode::update( const QRectF& rect, const QColor& color,
|
void DiagramSegmentsNode::update( const QRectF& rect, const QColor& color,
|
||||||
const QVector< QVector< QPointF > >& dataPoints, int xGridLines )
|
const QVector< QVector< QPointF > >& dataPoints, int xGridLines )
|
||||||
{
|
{
|
||||||
Q_UNUSED( rect );
|
Q_UNUSED( rect )
|
||||||
|
|
||||||
if( color != m_color )
|
if( color != m_color )
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,7 +72,6 @@ class TabView : public QskTabView
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < 10; i++ )
|
for ( int i = 0; i < 10; i++ )
|
||||||
{
|
{
|
||||||
QString text;
|
|
||||||
if ( i == 4 )
|
if ( i == 4 )
|
||||||
{
|
{
|
||||||
const auto text = QStringLiteral( "Another Tab" );
|
const auto text = QStringLiteral( "Another Tab" );
|
||||||
|
|
|
@ -158,7 +158,7 @@ class IconGrid : public QskLinearBox
|
||||||
private:
|
private:
|
||||||
void setItemsVisible( const QRectF& rect, bool on )
|
void setItemsVisible( const QRectF& rect, bool on )
|
||||||
{
|
{
|
||||||
const int dim = dimension();
|
const auto dim = dimension();
|
||||||
|
|
||||||
// we know, that all items have the same size
|
// we know, that all items have the same size
|
||||||
const auto itemSize = itemAtIndex( 0 )->size();
|
const auto itemSize = itemAtIndex( 0 )->size();
|
||||||
|
|
|
@ -24,7 +24,7 @@ class QskPlatformInputContext final : public QPlatformInputContext
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QskPlatformInputContext();
|
QskPlatformInputContext();
|
||||||
virtual ~QskPlatformInputContext() = default;
|
~QskPlatformInputContext() override = default;
|
||||||
|
|
||||||
bool isValid() const override;
|
bool isValid() const override;
|
||||||
bool hasCapability( Capability ) const override;
|
bool hasCapability( Capability ) const override;
|
||||||
|
|
|
@ -132,10 +132,10 @@ void LayoutSolver::setup( bool layoutChildren,
|
||||||
|
|
||||||
const auto expr1 = r1.expressionAt( anchor.edge1 );
|
const auto expr1 = r1.expressionAt( anchor.edge1 );
|
||||||
|
|
||||||
Expression expr2;
|
|
||||||
|
|
||||||
if ( anchor.item2 == nullptr )
|
if ( anchor.item2 == nullptr )
|
||||||
{
|
{
|
||||||
|
Expression expr2;
|
||||||
|
|
||||||
switch( anchor.edge2 )
|
switch( anchor.edge2 )
|
||||||
{
|
{
|
||||||
case Qt::AnchorLeft:
|
case Qt::AnchorLeft:
|
||||||
|
|
|
@ -10,35 +10,12 @@
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
void debugNone1()
|
static void debugNone1() { qDebug() << "None 1"; }
|
||||||
{
|
static void debugNone2() { qDebug() << "None 2"; }
|
||||||
qDebug() << "None 1";
|
static void debugValueI1( int i ) { qDebug() << "I1" << i; }
|
||||||
}
|
static void debugValueI2( int i ) { qDebug() << "I2" << i; }
|
||||||
|
static void debugValueD( qreal d ) { qDebug() << "D" << d; }
|
||||||
void debugNone2()
|
static void debugValue( qreal d, int i ) { qDebug() << d << i; }
|
||||||
{
|
|
||||||
qDebug() << "None 2";
|
|
||||||
}
|
|
||||||
|
|
||||||
void debugValueI1( int i )
|
|
||||||
{
|
|
||||||
qDebug() << "I1" << i;
|
|
||||||
}
|
|
||||||
|
|
||||||
void debugValueI2( int i )
|
|
||||||
{
|
|
||||||
qDebug() << "I2" << i;
|
|
||||||
}
|
|
||||||
|
|
||||||
void debugValueD( qreal d )
|
|
||||||
{
|
|
||||||
qDebug() << "D" << d;
|
|
||||||
}
|
|
||||||
|
|
||||||
void debugValue( qreal d, int i )
|
|
||||||
{
|
|
||||||
qDebug() << d << i;
|
|
||||||
}
|
|
||||||
|
|
||||||
class MyObject : public QObject
|
class MyObject : public QObject
|
||||||
{
|
{
|
||||||
|
@ -166,7 +143,7 @@ class Application : public QCoreApplication
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~Application()
|
~Application() override
|
||||||
{
|
{
|
||||||
delete m_object;
|
delete m_object;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ class GeometricShape : public ShapeItem
|
||||||
Hexagon,
|
Hexagon,
|
||||||
Arc
|
Arc
|
||||||
};
|
};
|
||||||
Q_ENUM( Figure );
|
Q_ENUM( Figure )
|
||||||
|
|
||||||
GeometricShape( QQuickItem* parent = nullptr );
|
GeometricShape( QQuickItem* parent = nullptr );
|
||||||
GeometricShape( Figure figure, QQuickItem* parent = nullptr );
|
GeometricShape( Figure figure, QQuickItem* parent = nullptr );
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
Stroke::Stroke( const QPen& pen ) noexcept
|
Stroke::Stroke( const QPen& pen ) noexcept
|
||||||
: m_width( pen.widthF() )
|
: m_width( pen.widthF() )
|
||||||
, m_miterLimit( pen.miterLimit() )
|
, m_miterLimit( qRound( pen.miterLimit() ) )
|
||||||
, m_color( pen.color() )
|
, m_color( pen.color() )
|
||||||
, m_lineStyle( ( pen.style() == Qt::DashLine ) ? DashLine : SolidLine )
|
, m_lineStyle( ( pen.style() == Qt::DashLine ) ? DashLine : SolidLine )
|
||||||
, m_joinStyle( static_cast< JoinStyle >( pen.joinStyle() ) )
|
, m_joinStyle( static_cast< JoinStyle >( pen.joinStyle() ) )
|
||||||
|
|
|
@ -202,7 +202,7 @@ namespace QskQml
|
||||||
return qmlregister( TypeRegistration, &type );
|
return qmlregister( TypeRegistration, &type );
|
||||||
}
|
}
|
||||||
|
|
||||||
int registerUncreatableMetaObject(
|
inline int registerUncreatableMetaObject(
|
||||||
const QMetaObject& staticMetaObject, const char* qmlName )
|
const QMetaObject& staticMetaObject, const char* qmlName )
|
||||||
{
|
{
|
||||||
using namespace QQmlPrivate;
|
using namespace QQmlPrivate;
|
||||||
|
|
|
@ -58,12 +58,12 @@ static const int qskDuration = 150;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
inline double operator ""_dp( long double value )
|
Q_DECL_UNUSED inline double operator ""_dp( long double value )
|
||||||
{
|
{
|
||||||
return qskDpToPixels( static_cast< qreal >( value ) );
|
return qskDpToPixels( static_cast< qreal >( value ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline double operator ""_dp( unsigned long long value )
|
Q_DECL_UNUSED inline double operator ""_dp( unsigned long long value )
|
||||||
{
|
{
|
||||||
return qskDpToPixels( value );
|
return qskDpToPixels( value );
|
||||||
}
|
}
|
||||||
|
@ -115,25 +115,17 @@ namespace
|
||||||
return QskGraphicIO::read( path );
|
return QskGraphicIO::read( path );
|
||||||
}
|
}
|
||||||
|
|
||||||
void setStandardSymbol( QskAspect aspect,
|
|
||||||
QskStandardSymbol::Type symbolType )
|
|
||||||
{
|
|
||||||
setSymbol( aspect, QskStandardSymbol::graphic( symbolType ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
const QskMaterial3Theme& m_pal;
|
const QskMaterial3Theme& m_pal;
|
||||||
};
|
};
|
||||||
|
|
||||||
QFont createFont( const QString& name, int lineHeight,
|
QFont createFont( const QString& name, qreal lineHeight,
|
||||||
int size, qreal tracking, QFont::Weight weight )
|
qreal size, qreal tracking, QFont::Weight weight )
|
||||||
{
|
{
|
||||||
QFont font( name, size );
|
QFont font( name, qRound( size ) );
|
||||||
font.setPixelSize( lineHeight );
|
font.setPixelSize( qRound( lineHeight ) );
|
||||||
|
|
||||||
if( !qskFuzzyCompare( tracking, 0.0 ) )
|
if( !qskFuzzyCompare( tracking, 0.0 ) )
|
||||||
{
|
|
||||||
font.setLetterSpacing( QFont::AbsoluteSpacing, tracking );
|
font.setLetterSpacing( QFont::AbsoluteSpacing, tracking );
|
||||||
}
|
|
||||||
|
|
||||||
font.setWeight( weight );
|
font.setWeight( weight );
|
||||||
|
|
||||||
|
@ -498,8 +490,8 @@ void Editor::setupSegmentedBar()
|
||||||
using A = QskAspect;
|
using A = QskAspect;
|
||||||
using Q = QskSegmentedBar;
|
using Q = QskSegmentedBar;
|
||||||
|
|
||||||
const QSize panelStrutSize( -1, 48_dp );
|
const QSizeF panelStrutSize( -1, 48_dp );
|
||||||
const QSize segmentStrutSize( 48_dp, 40_dp );
|
const QSizeF segmentStrutSize( 48_dp, 40_dp );
|
||||||
|
|
||||||
{
|
{
|
||||||
// Container
|
// Container
|
||||||
|
|
|
@ -53,12 +53,12 @@ static const int qskDuration = 200;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
inline double operator ""_dp( long double value )
|
Q_DECL_UNUSED inline double operator ""_dp( long double value )
|
||||||
{
|
{
|
||||||
return qskDpToPixels( static_cast< qreal >( value ) );
|
return qskDpToPixels( static_cast< qreal >( value ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline double operator ""_dp( unsigned long long value )
|
Q_DECL_UNUSED inline double operator ""_dp( unsigned long long value )
|
||||||
{
|
{
|
||||||
return qskDpToPixels( value );
|
return qskDpToPixels( value );
|
||||||
}
|
}
|
||||||
|
@ -571,7 +571,7 @@ void Editor::setupSegmentedBar()
|
||||||
|
|
||||||
setBoxBorderColors( Q::Panel, borderColors );
|
setBoxBorderColors( Q::Panel, borderColors );
|
||||||
|
|
||||||
const QSize strutSize( 100_dp, 50_dp );
|
const QSizeF strutSize( 100_dp, 50_dp );
|
||||||
|
|
||||||
setStrutSize( Q::Panel | A::Horizontal, strutSize );
|
setStrutSize( Q::Panel | A::Horizontal, strutSize );
|
||||||
setStrutSize( Q::Panel | A::Vertical, strutSize.transposed() );
|
setStrutSize( Q::Panel | A::Vertical, strutSize.transposed() );
|
||||||
|
|
|
@ -59,7 +59,7 @@ class QSK_EXPORT QskBoxShapeMetrics
|
||||||
|
|
||||||
Proportional
|
Proportional
|
||||||
};
|
};
|
||||||
Q_ENUM( ScalingMode );
|
Q_ENUM( ScalingMode )
|
||||||
|
|
||||||
constexpr QskBoxShapeMetrics() noexcept;
|
constexpr QskBoxShapeMetrics() noexcept;
|
||||||
|
|
||||||
|
|
|
@ -327,7 +327,7 @@ int QskGradient::stepCount() const noexcept
|
||||||
if ( !isValid() )
|
if ( !isValid() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int steps = m_stops.count() - 1;
|
auto steps = static_cast< int >( m_stops.count() ) - 1;
|
||||||
|
|
||||||
if ( m_stops.first().position() > 0.0 )
|
if ( m_stops.first().position() > 0.0 )
|
||||||
steps++;
|
steps++;
|
||||||
|
|
|
@ -102,8 +102,10 @@ QDebug operator<<( QDebug debug, const QskGradientStop& stop )
|
||||||
static inline QColor qskInterpolatedColor(
|
static inline QColor qskInterpolatedColor(
|
||||||
const QskGradientStops& stops, int index1, int index2, qreal position )
|
const QskGradientStops& stops, int index1, int index2, qreal position )
|
||||||
{
|
{
|
||||||
index1 = qBound( 0, index1, stops.count() - 1 );
|
const auto max = static_cast< int >( stops.count() ) - 1;
|
||||||
index2 = qBound( 0, index2, stops.count() - 1 );
|
|
||||||
|
index1 = qBound( 0, index1, max );
|
||||||
|
index2 = qBound( 0, index2, max );
|
||||||
|
|
||||||
return QskGradientStop::interpolated( stops[ index1 ], stops[ index2 ], position );
|
return QskGradientStop::interpolated( stops[ index1 ], stops[ index2 ], position );
|
||||||
}
|
}
|
||||||
|
@ -138,7 +140,7 @@ QskGradientStops qskTransparentGradientStops( const QskGradientStops& stops, qre
|
||||||
for ( auto& stop : newStops )
|
for ( auto& stop : newStops )
|
||||||
{
|
{
|
||||||
auto c = stop.color();
|
auto c = stop.color();
|
||||||
c.setAlpha( c.alpha() * ratio );
|
c.setAlpha( qRound( c.alpha() * ratio ) );
|
||||||
|
|
||||||
stop.setColor( c );
|
stop.setColor( c );
|
||||||
}
|
}
|
||||||
|
|
|
@ -544,7 +544,7 @@ static XYZ nthVertex( double y, int n )
|
||||||
return { -1.0, -1.0, -1.0 };
|
return { -1.0, -1.0, -1.0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
void bisectToSegment( double y, double targetHue, XYZ& left, XYZ& right )
|
static void bisectToSegment( double y, double targetHue, XYZ& left, XYZ& right )
|
||||||
{
|
{
|
||||||
left = { -1.0, -1.0, -1.0 };
|
left = { -1.0, -1.0, -1.0 };
|
||||||
right = left;
|
right = left;
|
||||||
|
|
|
@ -154,7 +154,7 @@ int QskMetaFunction::returnType() const
|
||||||
|
|
||||||
size_t QskMetaFunction::parameterCount() const
|
size_t QskMetaFunction::parameterCount() const
|
||||||
{
|
{
|
||||||
int count = 0;
|
size_t count = 0;
|
||||||
|
|
||||||
if ( auto types = parameterTypes() )
|
if ( auto types = parameterTypes() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,9 +35,9 @@ class QskMetaFunction::FunctionCall : public QtPrivate::QSlotObjectBase
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit inline FunctionCall( InvokeFunction f,
|
explicit inline FunctionCall( InvokeFunction f,
|
||||||
const int* m_parameterTypes = nullptr ):
|
const int* parameterTypes = nullptr ):
|
||||||
QSlotObjectBase( f ),
|
QSlotObjectBase( f ),
|
||||||
m_parameterTypes( m_parameterTypes )
|
m_parameterTypes( parameterTypes )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ QMetaMethod qskNotifySignal( const QMetaObject* metaObject, const char* property
|
||||||
|
|
||||||
static void qskInvokeMetaCall(
|
static void qskInvokeMetaCall(
|
||||||
QObject* object, const QMetaObject* metaObject,
|
QObject* object, const QMetaObject* metaObject,
|
||||||
QMetaObject::Call call, int offset, int index, void* argv[],
|
QMetaObject::Call call, ushort offset, ushort index, void* argv[],
|
||||||
Qt::ConnectionType connectionType )
|
Qt::ConnectionType connectionType )
|
||||||
{
|
{
|
||||||
QPointer< QObject > receiver( object );
|
QPointer< QObject > receiver( object );
|
||||||
|
@ -196,6 +196,7 @@ static void qskInvokeMetaCall(
|
||||||
|
|
||||||
QSemaphore semaphore;
|
QSemaphore semaphore;
|
||||||
|
|
||||||
|
Q_ASSERT( metaObject == nullptr || receiver->metaObject() == metaObject );
|
||||||
qskInvokeMetaCallQueued( receiver, call,
|
qskInvokeMetaCallQueued( receiver, call,
|
||||||
offset, index, argv, &semaphore );
|
offset, index, argv, &semaphore );
|
||||||
|
|
||||||
|
@ -256,6 +257,7 @@ static void qskInvokeMetaCall(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Q_ASSERT( metaObject == nullptr || receiver->metaObject() == metaObject );
|
||||||
qskInvokeMetaCallQueued( object, call, offset, index, arguments, nullptr );
|
qskInvokeMetaCallQueued( object, call, offset, index, arguments, nullptr );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -132,8 +132,8 @@ QSK_EXPORT void qskInvokeMetaPropertyWrite(
|
||||||
void* args[], Qt::ConnectionType = Qt::AutoConnection );
|
void* args[], Qt::ConnectionType = Qt::AutoConnection );
|
||||||
|
|
||||||
QSK_EXPORT void qskInvokeMetaPropertyWrite(
|
QSK_EXPORT void qskInvokeMetaPropertyWrite(
|
||||||
const QObject* object, const QMetaProperty&,
|
QObject*, const QMetaProperty&, void* args[],
|
||||||
void* args[], Qt::ConnectionType = Qt::AutoConnection );
|
Qt::ConnectionType = Qt::AutoConnection );
|
||||||
|
|
||||||
QSK_EXPORT QMetaMethod qskNotifySignal( const QMetaObject*, const char* propertyName );
|
QSK_EXPORT QMetaMethod qskNotifySignal( const QMetaObject*, const char* propertyName );
|
||||||
QSK_EXPORT QMetaMethod qskNotifySignal( const QObject*, const char* propertyName );
|
QSK_EXPORT QMetaMethod qskNotifySignal( const QObject*, const char* propertyName );
|
||||||
|
|
|
@ -27,15 +27,17 @@ QskScaleTickmarks::~QskScaleTickmarks()
|
||||||
|
|
||||||
int QskScaleTickmarks::tickCount() const noexcept
|
int QskScaleTickmarks::tickCount() const noexcept
|
||||||
{
|
{
|
||||||
return m_ticks[ MajorTick ].count()
|
const auto count = m_ticks[ MajorTick ].count()
|
||||||
+ m_ticks[ MediumTick ].count()
|
+ m_ticks[ MediumTick ].count()
|
||||||
+ m_ticks[ MinorTick ].count();
|
+ m_ticks[ MinorTick ].count();
|
||||||
|
|
||||||
|
return static_cast< int >( count );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int QskScaleTickmarks::tickCount( TickType type ) const noexcept
|
int QskScaleTickmarks::tickCount( TickType type ) const noexcept
|
||||||
{
|
{
|
||||||
return m_ticks[ type ].count();
|
return static_cast< int >( m_ticks[ type ].count() );
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector< qreal > QskScaleTickmarks::ticks( TickType type ) const noexcept
|
QVector< qreal > QskScaleTickmarks::ticks( TickType type ) const noexcept
|
||||||
|
|
|
@ -25,7 +25,7 @@ class QSK_EXPORT QskMenuSkinlet : public QskPopupSkinlet
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_INVOKABLE QskMenuSkinlet( QskSkin* = nullptr );
|
Q_INVOKABLE QskMenuSkinlet( QskSkin* = nullptr );
|
||||||
~QskMenuSkinlet();
|
~QskMenuSkinlet() override;
|
||||||
|
|
||||||
QRectF subControlRect( const QskSkinnable*,
|
QRectF subControlRect( const QskSkinnable*,
|
||||||
const QRectF&, QskAspect::Subcontrol ) const override;
|
const QRectF&, QskAspect::Subcontrol ) const override;
|
||||||
|
|
|
@ -382,9 +382,11 @@ bool QskPopup::hasFaderEffect() const
|
||||||
|
|
||||||
void QskPopup::setPopupFlags( PopupFlags flags )
|
void QskPopup::setPopupFlags( PopupFlags flags )
|
||||||
{
|
{
|
||||||
if ( static_cast< int >( flags ) != m_data->flags )
|
const auto newFlags = static_cast< int >( flags );
|
||||||
|
|
||||||
|
if ( newFlags != m_data->flags )
|
||||||
{
|
{
|
||||||
m_data->flags = flags;
|
m_data->flags = newFlags;
|
||||||
updateInputGrabber();
|
updateInputGrabber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace
|
||||||
class RootNode : public QSGNode
|
class RootNode : public QSGNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
~RootNode()
|
~RootNode() override
|
||||||
{
|
{
|
||||||
delete m_clipNode;
|
delete m_clipNode;
|
||||||
delete m_transformNode;
|
delete m_transformNode;
|
||||||
|
|
|
@ -85,7 +85,6 @@ QRectF QskProgressBarSkinlet::subControlRect(
|
||||||
|
|
||||||
if( subControl == QskProgressBar::Bar )
|
if( subControl == QskProgressBar::Bar )
|
||||||
{
|
{
|
||||||
const auto bar = static_cast< const QskProgressBar* >( skinnable );
|
|
||||||
return barRect( bar );
|
return barRect( bar );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,16 +177,13 @@ void QskRadioBox::keyPressEvent( QKeyEvent* event )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setFocusedIndex( ( float ) nextTabIndex );
|
setFocusedIndex( nextTabIndex );
|
||||||
|
|
||||||
const auto aspect = Ripple | QskAspect::Metric | QskAspect::Position;
|
const auto aspect = Ripple | QskAspect::Metric | QskAspect::Position;
|
||||||
const auto hint = animationHint( aspect | skinStates() );
|
const auto hint = animationHint( aspect | skinStates() );
|
||||||
|
|
||||||
if( hint.isValid() )
|
if( hint.isValid() )
|
||||||
{
|
startTransition( aspect, hint, currentTabIndex, nextTabIndex );
|
||||||
startTransition( aspect, hint,
|
|
||||||
( float ) currentTabIndex, ( float ) nextTabIndex );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "QskFunctions.h"
|
#include "QskFunctions.h"
|
||||||
|
|
||||||
#include <qfontmetrics.h>
|
#include <qfontmetrics.h>
|
||||||
|
#include <qmath.h>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
@ -83,7 +84,7 @@ QSGNode* QskRadioBoxSkinlet::updateSubNode( const QskSkinnable* skinnable,
|
||||||
|
|
||||||
case RippleRole:
|
case RippleRole:
|
||||||
return updateBoxNode( skinnable, node, Q::Ripple );
|
return updateBoxNode( skinnable, node, Q::Ripple );
|
||||||
};
|
}
|
||||||
|
|
||||||
return Inherited::updateSubNode( skinnable, nodeRole, node );
|
return Inherited::updateSubNode( skinnable, nodeRole, node );
|
||||||
}
|
}
|
||||||
|
@ -100,7 +101,7 @@ QRectF QskRadioBoxSkinlet::rippleRect(
|
||||||
{
|
{
|
||||||
using Q = QskRadioBox;
|
using Q = QskRadioBox;
|
||||||
|
|
||||||
const auto index = radioBox->positionHint( Q::Ripple );
|
const auto index = qFloor( radioBox->positionHint( Q::Ripple ) );
|
||||||
if( index < 0 )
|
if( index < 0 )
|
||||||
return QRectF();
|
return QRectF();
|
||||||
|
|
||||||
|
|
|
@ -201,7 +201,7 @@ namespace
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ClipItem( QskScrollArea* );
|
ClipItem( QskScrollArea* );
|
||||||
virtual ~ClipItem();
|
~ClipItem() override;
|
||||||
|
|
||||||
void enableGeometryListener( bool on );
|
void enableGeometryListener( bool on );
|
||||||
|
|
||||||
|
|
|
@ -251,7 +251,7 @@ void QskSkin::setupFonts( const QString& family, int weight, bool italic )
|
||||||
|
|
||||||
for ( int i = TinyFont; i <= HugeFont; i++ )
|
for ( int i = TinyFont; i <= HugeFont; i++ )
|
||||||
{
|
{
|
||||||
font.setPixelSize( qskDpToPixels( sizes[i - 1] ) );
|
font.setPixelSize( qRound( qskDpToPixels( sizes[i - 1] ) ) );
|
||||||
m_data->fonts[ i ] = font;
|
m_data->fonts[ i ] = font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -203,23 +203,6 @@ namespace
|
||||||
return m_skinMap.keys();
|
return m_skinMap.keys();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList skinNames( const QString& factoryId ) const
|
|
||||||
{
|
|
||||||
const auto it = m_factoryMap.constFind( factoryId );
|
|
||||||
if ( it != m_factoryMap.constEnd() )
|
|
||||||
{
|
|
||||||
const auto& data = it.value();
|
|
||||||
|
|
||||||
if ( data.factory )
|
|
||||||
return data.factory->skinNames();
|
|
||||||
|
|
||||||
if ( data.loader )
|
|
||||||
return data.loader->skinNames();
|
|
||||||
}
|
|
||||||
|
|
||||||
return QStringList();
|
|
||||||
}
|
|
||||||
|
|
||||||
void insertFactory( FactoryLoader* loader )
|
void insertFactory( FactoryLoader* loader )
|
||||||
{
|
{
|
||||||
auto& data = m_factoryMap[ loader->factoryId() ];
|
auto& data = m_factoryMap[ loader->factoryId() ];
|
||||||
|
@ -251,11 +234,11 @@ namespace
|
||||||
|
|
||||||
void removeFactory( const QString& factoryId )
|
void removeFactory( const QString& factoryId )
|
||||||
{
|
{
|
||||||
const auto it = m_factoryMap.find( factoryId );
|
const auto itFactory = m_factoryMap.find( factoryId );
|
||||||
if ( it == m_factoryMap.end() )
|
if ( itFactory == m_factoryMap.end() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_factoryMap.erase( it );
|
m_factoryMap.erase( itFactory );
|
||||||
|
|
||||||
if ( m_isValid )
|
if ( m_isValid )
|
||||||
{
|
{
|
||||||
|
|
|
@ -160,7 +160,7 @@ namespace
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~ApplicationAnimator();
|
~ApplicationAnimator() override;
|
||||||
|
|
||||||
WindowAnimator* windowAnimator( const QQuickWindow* );
|
WindowAnimator* windowAnimator( const QQuickWindow* );
|
||||||
|
|
||||||
|
|
|
@ -753,10 +753,12 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter(
|
||||||
aspect.setSection( QskAspect::Body );
|
aspect.setSection( QskAspect::Body );
|
||||||
aspect.setVariation( QskAspect::NoVariation );
|
aspect.setVariation( QskAspect::NoVariation );
|
||||||
|
|
||||||
const auto v = animatedHint( aspect, nullptr );
|
{
|
||||||
|
const auto v = animatedHint( aspect, nullptr );
|
||||||
|
|
||||||
if ( v.canConvert< QskColorFilter >() )
|
if ( v.canConvert< QskColorFilter >() )
|
||||||
return v.value< QskColorFilter >();
|
return v.value< QskColorFilter >();
|
||||||
|
}
|
||||||
|
|
||||||
if ( auto control = owningControl() )
|
if ( auto control = owningControl() )
|
||||||
{
|
{
|
||||||
|
@ -816,16 +818,18 @@ QskAnimationHint QskSkinnable::effectiveAnimation(
|
||||||
|
|
||||||
QskAnimationHint hint;
|
QskAnimationHint hint;
|
||||||
|
|
||||||
const auto a = m_data->hintTable.resolvedAnimator( aspect, hint );
|
|
||||||
if ( a.isAnimator() )
|
|
||||||
{
|
{
|
||||||
if ( status )
|
const auto a = m_data->hintTable.resolvedAnimator( aspect, hint );
|
||||||
|
if ( a.isAnimator() )
|
||||||
{
|
{
|
||||||
status->source = QskSkinHintStatus::Skinnable;
|
if ( status )
|
||||||
status->aspect = a;
|
{
|
||||||
}
|
status->source = QskSkinHintStatus::Skinnable;
|
||||||
|
status->aspect = a;
|
||||||
|
}
|
||||||
|
|
||||||
return hint;
|
return hint;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( auto skin = effectiveSkin() )
|
if ( auto skin = effectiveSkin() )
|
||||||
|
@ -1390,9 +1394,9 @@ bool QskSkinnable::startHintTransitions(
|
||||||
that differ between the states
|
that differ between the states
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for ( uint i = 0; i < primitiveCount; i++ )
|
for ( uint j = 0; j < primitiveCount; j++ )
|
||||||
{
|
{
|
||||||
const auto primitive = static_cast< QskAspect::Primitive >( i );
|
const auto primitive = static_cast< QskAspect::Primitive >( j );
|
||||||
aspect.setPrimitive( type, primitive );
|
aspect.setPrimitive( type, primitive );
|
||||||
|
|
||||||
const auto a1 = aspect | oldStates;
|
const auto a1 = aspect | oldStates;
|
||||||
|
|
|
@ -184,7 +184,7 @@ namespace
|
||||||
auto boxSize = viewContentsRect().size();
|
auto boxSize = viewContentsRect().size();
|
||||||
boxSize = qskConstrainedItemSize( box, boxSize );
|
boxSize = qskConstrainedItemSize( box, boxSize );
|
||||||
|
|
||||||
if ( auto box = buttonBox() )
|
if ( box )
|
||||||
box->setSize( boxSize );
|
box->setSize( boxSize );
|
||||||
|
|
||||||
enableAutoTranslation( false );
|
enableAutoTranslation( false );
|
||||||
|
|
|
@ -138,7 +138,7 @@ static inline void qskReadStateData(
|
||||||
quint16 flags;
|
quint16 flags;
|
||||||
s >> flags;
|
s >> flags;
|
||||||
|
|
||||||
data.flags = ( QPaintEngine::DirtyFlags ) flags;
|
data.flags = static_cast< QPaintEngine::DirtyFlags >( flags );
|
||||||
|
|
||||||
if ( data.flags & QPaintEngine::DirtyPen )
|
if ( data.flags & QPaintEngine::DirtyPen )
|
||||||
s >> data.pen;
|
s >> data.pen;
|
||||||
|
@ -316,7 +316,7 @@ bool QskGraphicIO::write( const QskGraphic& graphic, QIODevice* dev )
|
||||||
stream.setByteOrder( QDataStream::BigEndian );
|
stream.setByteOrder( QDataStream::BigEndian );
|
||||||
stream.writeRawData( qskMagicNumber, 4 );
|
stream.writeRawData( qskMagicNumber, 4 );
|
||||||
|
|
||||||
const int numCommands = graphic.commands().size();
|
const auto numCommands = graphic.commands().size();
|
||||||
const QskPainterCommand* cmds = graphic.commands().constData();
|
const QskPainterCommand* cmds = graphic.commands().constData();
|
||||||
|
|
||||||
stream << static_cast< quint32 >( numCommands );
|
stream << static_cast< quint32 >( numCommands );
|
||||||
|
|
|
@ -32,7 +32,7 @@ static inline QSize qskGraphicSize( const QskGraphic& graphic,
|
||||||
if ( requestedSize.width() < 0 )
|
if ( requestedSize.width() < 0 )
|
||||||
{
|
{
|
||||||
const auto f = requestedSize.height() / defaultSize.height();
|
const auto f = requestedSize.height() / defaultSize.height();
|
||||||
return QSize( f * defaultSize.width(),
|
return QSize( static_cast< int >( f * defaultSize.width() ),
|
||||||
static_cast< int >( requestedSize.height() ) );
|
static_cast< int >( requestedSize.height() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -554,7 +554,7 @@ QskTextPredictor* QskInputContextFactory::createPredictor( const QLocale& locale
|
||||||
#if HUNSPELL
|
#if HUNSPELL
|
||||||
return new QskHunspellTextPredictor( locale );
|
return new QskHunspellTextPredictor( locale );
|
||||||
#else
|
#else
|
||||||
Q_UNUSED( locale );
|
Q_UNUSED( locale )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -48,7 +48,7 @@ class QSK_EXPORT QskInputContext : public QObject
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QskInputContext();
|
QskInputContext();
|
||||||
virtual ~QskInputContext();
|
~QskInputContext() override;
|
||||||
|
|
||||||
void setFactory( QskInputContextFactory* );
|
void setFactory( QskInputContextFactory* );
|
||||||
QskInputContextFactory* factory() const;
|
QskInputContextFactory* factory() const;
|
||||||
|
|
|
@ -148,16 +148,14 @@ namespace
|
||||||
// Let the input field update right away, otherwise
|
// Let the input field update right away, otherwise
|
||||||
// we'll get weird effects with fast backspace presses:
|
// we'll get weird effects with fast backspace presses:
|
||||||
Q_EMIT keyProcessingFinished( m_currentResult );
|
Q_EMIT keyProcessingFinished( m_currentResult );
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_currentResult.key = Qt::Key_Backspace;
|
m_currentResult.key = Qt::Key_Backspace;
|
||||||
Q_EMIT keyProcessingFinished( m_currentResult );
|
Q_EMIT keyProcessingFinished( m_currentResult );
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
case Qt::Key_Return:
|
case Qt::Key_Return:
|
||||||
{
|
{
|
||||||
|
|
|
@ -518,10 +518,10 @@ void QskGridBox::dump() const
|
||||||
|
|
||||||
if ( auto item = engine.itemAt( i ) )
|
if ( auto item = engine.itemAt( i ) )
|
||||||
{
|
{
|
||||||
const auto constraint = qskSizeConstraint( item, Qt::PreferredSize );
|
const auto size = qskSizeConstraint( item, Qt::PreferredSize );
|
||||||
|
|
||||||
debug << item->metaObject()->className()
|
debug << item->metaObject()->className()
|
||||||
<< " w:" << constraint.width() << " h:" << constraint.height();
|
<< " w:" << size.width() << " h:" << size.height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -485,11 +485,11 @@ int QskGridLayoutEngine::insertSpacer( const QSizeF& spacing, const QRect& grid
|
||||||
|
|
||||||
bool QskGridLayoutEngine::removeAt( int index )
|
bool QskGridLayoutEngine::removeAt( int index )
|
||||||
{
|
{
|
||||||
const auto element = m_data->elementAt( index );
|
const auto elementAt = m_data->elementAt( index );
|
||||||
if ( element == nullptr )
|
if ( elementAt == nullptr )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const auto grid = element->minimumGrid();
|
const auto grid = elementAt->minimumGrid();
|
||||||
|
|
||||||
auto& elements = m_data->elements;
|
auto& elements = m_data->elements;
|
||||||
elements.erase( elements.begin() + index );
|
elements.erase( elements.begin() + index );
|
||||||
|
@ -504,10 +504,10 @@ bool QskGridLayoutEngine::removeAt( int index )
|
||||||
|
|
||||||
for ( const auto& element : elements )
|
for ( const auto& element : elements )
|
||||||
{
|
{
|
||||||
const auto grid = element.minimumGrid();
|
const auto minGrid = element.minimumGrid();
|
||||||
|
|
||||||
maxRow = qMax( maxRow, grid.bottom() );
|
maxRow = qMax( maxRow, minGrid.bottom() );
|
||||||
maxColumn = qMax( maxColumn, grid.right() );
|
maxColumn = qMax( maxColumn, minGrid.right() );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_data->rowCount = maxRow + 1;
|
m_data->rowCount = maxRow + 1;
|
||||||
|
|
|
@ -250,7 +250,7 @@ QskLayoutChain::Segments QskLayoutChain::segments( qreal size ) const
|
||||||
const qreal padding = size - m_boundingMetrics.maximum();
|
const qreal padding = size - m_boundingMetrics.maximum();
|
||||||
|
|
||||||
qreal offset = 0.0;
|
qreal offset = 0.0;
|
||||||
qreal extra = 0.0;;
|
qreal extra = 0.0;
|
||||||
|
|
||||||
switch( m_fillMode )
|
switch( m_fillMode )
|
||||||
{
|
{
|
||||||
|
@ -424,13 +424,13 @@ QskLayoutChain::Segments QskLayoutChain::preferredStretched( qreal size ) const
|
||||||
if ( factors[i] < 0.0 )
|
if ( factors[i] < 0.0 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const auto size = sumSizes * factors[i] / sumFactors;
|
const auto sz = sumSizes * factors[i] / sumFactors;
|
||||||
|
|
||||||
const auto& hint = m_cells[i].metrics;
|
const auto& hint = m_cells[i].metrics;
|
||||||
const auto boundedSize =
|
const auto boundedSize =
|
||||||
qBound( hint.preferred(), size, hint.maximum() );
|
qBound( hint.preferred(), sz, hint.maximum() );
|
||||||
|
|
||||||
if ( boundedSize != size )
|
if ( boundedSize != sz )
|
||||||
{
|
{
|
||||||
segments[i].length = boundedSize;
|
segments[i].length = boundedSize;
|
||||||
sumSizes -= boundedSize;
|
sumSizes -= boundedSize;
|
||||||
|
|
|
@ -556,9 +556,9 @@ void QskLinearBox::dump() const
|
||||||
|
|
||||||
if ( auto item = engine.itemAt( i ) )
|
if ( auto item = engine.itemAt( i ) )
|
||||||
{
|
{
|
||||||
const auto constraint = qskSizeConstraint( item, Qt::PreferredSize );
|
const auto size = qskSizeConstraint( item, Qt::PreferredSize );
|
||||||
debug << item->metaObject()->className()
|
debug << item->metaObject()->className()
|
||||||
<< " w:" << constraint.width() << " h:" << constraint.height();
|
<< " w:" << size.width() << " h:" << size.height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -450,9 +450,9 @@ void QskStackBox::dump() const
|
||||||
|
|
||||||
debug << " " << i << ": ";
|
debug << " " << i << ": ";
|
||||||
|
|
||||||
const auto constraint = qskSizeConstraint( item, Qt::PreferredSize );
|
const auto size = qskSizeConstraint( item, Qt::PreferredSize );
|
||||||
debug << item->metaObject()->className()
|
debug << item->metaObject()->className()
|
||||||
<< " w:" << constraint.width() << " h:" << constraint.height();
|
<< " w:" << size.width() << " h:" << size.height();
|
||||||
|
|
||||||
if ( i == m_data->currentIndex )
|
if ( i == m_data->currentIndex )
|
||||||
debug << " [X]";
|
debug << " [X]";
|
||||||
|
|
|
@ -50,6 +50,4 @@ QskHashValue QskArcNode::hash( const void* nodeData ) const
|
||||||
|
|
||||||
auto h = arcData->metrics.hash();
|
auto h = arcData->metrics.hash();
|
||||||
return arcData->gradient.hash( h );
|
return arcData->gradient.hash( h );
|
||||||
|
|
||||||
return h;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int edgeToIndex( Qt::Edge edge )
|
inline int edgeToIndex( Qt::Edge edge )
|
||||||
{ return qCountTrailingZeroBits( (quint8) edge ); }
|
{ return qCountTrailingZeroBits( static_cast< quint8 >( edge ) ); }
|
||||||
|
|
||||||
class CornerIterator : public QskVertex::ArcIterator
|
class CornerIterator : public QskVertex::ArcIterator
|
||||||
{
|
{
|
||||||
|
|
|
@ -183,7 +183,7 @@ namespace
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Point() = default;
|
Point() = default;
|
||||||
inline Point( qreal x, qreal y, qreal v ): x( x ), y( y ), v( v ) {};
|
inline Point( qreal x, qreal y, qreal v ): x( x ), y( y ), v( v ) {}
|
||||||
|
|
||||||
qreal x = 0;
|
qreal x = 0;
|
||||||
qreal y = 0;
|
qreal y = 0;
|
||||||
|
@ -625,10 +625,10 @@ namespace
|
||||||
{
|
{
|
||||||
const auto p = vec.pointAt( it.position() );
|
const auto p = vec.pointAt( it.position() );
|
||||||
|
|
||||||
const qreal y1 = p.y() + ( p.x() - c1.x ) / m;
|
const qreal ly1 = p.y() + ( p.x() - c1.x ) / m;
|
||||||
const qreal x2 = p.x() + ( p.y() - c1.y ) * m;
|
const qreal lx2 = p.x() + ( p.y() - c1.y ) * m;
|
||||||
|
|
||||||
setLine( c1.x, y1, x2, c1.y, it.color(), l++ );
|
setLine( c1.x, ly1, lx2, c1.y, it.color(), l++ );
|
||||||
it.advance();
|
it.advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,10 +642,10 @@ namespace
|
||||||
{
|
{
|
||||||
const auto p = vec.pointAt( it.position() );
|
const auto p = vec.pointAt( it.position() );
|
||||||
|
|
||||||
const qreal y1 = p.y() + ( p.x() - c2.x ) / m;
|
const qreal ly1 = p.y() + ( p.x() - c2.x ) / m;
|
||||||
const qreal y2 = p.y() + ( p.x() - c3.x ) / m;
|
const qreal ly2 = p.y() + ( p.x() - c3.x ) / m;
|
||||||
|
|
||||||
setLine( c2.x, y1, c3.x, y2, it.color(), l++ );
|
setLine( c2.x, ly1, c3.x, ly2, it.color(), l++ );
|
||||||
it.advance();
|
it.advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -661,10 +661,10 @@ namespace
|
||||||
{
|
{
|
||||||
const auto p = vec.pointAt( it.position() );
|
const auto p = vec.pointAt( it.position() );
|
||||||
|
|
||||||
const qreal x1 = p.x() + ( p.y() - c2.y ) * m;
|
const qreal lx1 = p.x() + ( p.y() - c2.y ) * m;
|
||||||
const qreal x2 = p.x() + ( p.y() - c3.y ) * m;
|
const qreal lx2 = p.x() + ( p.y() - c3.y ) * m;
|
||||||
|
|
||||||
setLine( x1, c2.y, x2, c3.y, it.color(), l++ );
|
setLine( lx1, c2.y, lx2, c3.y, it.color(), l++ );
|
||||||
it.advance();
|
it.advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -675,10 +675,10 @@ namespace
|
||||||
{
|
{
|
||||||
const auto p = vec.pointAt( it.position() );
|
const auto p = vec.pointAt( it.position() );
|
||||||
|
|
||||||
const qreal y1 = p.y() + ( p.x() - c4.x ) / m;
|
const qreal ly1 = p.y() + ( p.x() - c4.x ) / m;
|
||||||
const qreal x2 = p.x() + ( p.y() - c4.y ) * m;
|
const qreal lx2 = p.x() + ( p.y() - c4.y ) * m;
|
||||||
|
|
||||||
setLine( c4.x, y1, x2, c4.y, it.color(), l++ );
|
setLine( c4.x, ly1, lx2, c4.y, it.color(), l++ );
|
||||||
it.advance();
|
it.advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void qskUpdateChildren( QSGNode* parentNode, quint8 role, QSGNode* node )
|
static void qskUpdateChildren( QSGNode* parentNode, quint8 role, QSGNode* node )
|
||||||
{
|
{
|
||||||
static const QVector< quint8 > roles = { ShadowRole, BoxRole, FillRole };
|
static const QVector< quint8 > roles = { ShadowRole, BoxRole, FillRole };
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace
|
||||||
setVerticalWrapMode( wrapMode );
|
setVerticalWrapMode( wrapMode );
|
||||||
|
|
||||||
setFiltering( QSGTexture::Linear );
|
setFiltering( QSGTexture::Linear );
|
||||||
};
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static inline QSGTexture::WrapMode wrapMode( QskGradient::SpreadMode spreadMode )
|
static inline QSGTexture::WrapMode wrapMode( QskGradient::SpreadMode spreadMode )
|
||||||
|
|
|
@ -526,18 +526,18 @@ namespace
|
||||||
// Angles as ratio of a rotation
|
// Angles as ratio of a rotation
|
||||||
|
|
||||||
float start = fmod( dir.startAngle(), 360.0 ) / 360.0;
|
float start = fmod( dir.startAngle(), 360.0 ) / 360.0;
|
||||||
if ( start < 0.0)
|
if ( start < 0.0f)
|
||||||
start += 1.0;
|
start += 1.0f;
|
||||||
|
|
||||||
float span;
|
float span;
|
||||||
|
|
||||||
if ( dir.spanAngle() >= 360.0 )
|
if ( dir.spanAngle() >= 360.0 )
|
||||||
{
|
{
|
||||||
span = 1.0;
|
span = 1.0f;
|
||||||
}
|
}
|
||||||
else if ( dir.spanAngle() <= -360.0 )
|
else if ( dir.spanAngle() <= -360.0 )
|
||||||
{
|
{
|
||||||
span = -1.0;
|
span = -1.0f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -83,15 +83,15 @@ namespace
|
||||||
|
|
||||||
inline void setAlignment( Qt::Alignment alignment )
|
inline void setAlignment( Qt::Alignment alignment )
|
||||||
{
|
{
|
||||||
setHAlign( ( QQuickText::HAlignment )( int( alignment ) & 0x0f ) );
|
setHAlign( static_cast< QQuickText::HAlignment >( int( alignment ) & 0x0f ) );
|
||||||
setVAlign( ( QQuickText::VAlignment )( int( alignment ) & 0xf0 ) );
|
setVAlign( static_cast< QQuickText::VAlignment >( int( alignment ) & 0xf0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setOptions( const QskTextOptions& options )
|
inline void setOptions( const QskTextOptions& options )
|
||||||
{
|
{
|
||||||
// what about Qt::TextShowMnemonic ???
|
// what about Qt::TextShowMnemonic ???
|
||||||
setTextFormat( ( QQuickText::TextFormat ) options.format() );
|
setTextFormat( static_cast< QQuickText::TextFormat >( options.format() ) );
|
||||||
setElideMode( ( QQuickText::TextElideMode ) options.elideMode() );
|
setElideMode( static_cast< QQuickText::TextElideMode >( options.elideMode() ) );
|
||||||
setMaximumLineCount( options.maximumLineCount() );
|
setMaximumLineCount( options.maximumLineCount() );
|
||||||
setWrapMode( static_cast< QQuickText::WrapMode >( options.wrapMode() ) );
|
setWrapMode( static_cast< QQuickText::WrapMode >( options.wrapMode() ) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,8 +174,12 @@ QSGNode* QskScaleRenderer::updateTicksNode(
|
||||||
if( ticksNode == nullptr )
|
if( ticksNode == nullptr )
|
||||||
ticksNode = new QskTickmarksNode;
|
ticksNode = new QskTickmarksNode;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
const int tickWidth = qRound( m_data->tickWidth );
|
||||||
|
#endif
|
||||||
|
|
||||||
ticksNode->update( m_data->tickColor, rect, m_data->boundaries,
|
ticksNode->update( m_data->tickColor, rect, m_data->boundaries,
|
||||||
m_data->tickmarks, m_data->tickWidth, m_data->orientation,
|
m_data->tickmarks, tickWidth, m_data->orientation,
|
||||||
m_data->alignment );
|
m_data->alignment );
|
||||||
|
|
||||||
return ticksNode;
|
return ticksNode;
|
||||||
|
|
|
@ -28,7 +28,7 @@ class QSK_EXPORT QskScaleRenderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QskScaleRenderer();
|
QskScaleRenderer();
|
||||||
~QskScaleRenderer();
|
virtual ~QskScaleRenderer();
|
||||||
|
|
||||||
void setOrientation( Qt::Orientation );
|
void setOrientation( Qt::Orientation );
|
||||||
void setAlignment( Qt::Alignment );
|
void setAlignment( Qt::Alignment );
|
||||||
|
|
|
@ -73,7 +73,7 @@ namespace QskVertex
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Color Color::interpolatedTo( Color colorTo, double ratio ) const noexcept
|
inline Color Color::interpolatedTo( Color colorTo, qreal ratio ) const noexcept
|
||||||
{
|
{
|
||||||
if ( ratio <= 0.0 )
|
if ( ratio <= 0.0 )
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -81,11 +81,15 @@ namespace QskVertex
|
||||||
if ( ratio >= 1.0 )
|
if ( ratio >= 1.0 )
|
||||||
return colorTo;
|
return colorTo;
|
||||||
|
|
||||||
const double t = ratio;
|
const auto t = ratio;
|
||||||
const double rt = 1.0 - ratio;
|
const auto rt = 1.0 - ratio;
|
||||||
|
|
||||||
return Color( rt * r + t * colorTo.r, rt * g + t * colorTo.g,
|
return Color(
|
||||||
rt * b + t * colorTo.b, rt * a + t * colorTo.a );
|
static_cast< unsigned char >( rt * r + t * colorTo.r ),
|
||||||
|
static_cast< unsigned char >( rt * g + t * colorTo.g ),
|
||||||
|
static_cast< unsigned char >( rt * b + t * colorTo.b ),
|
||||||
|
static_cast< unsigned char >( rt * a + t * colorTo.a )
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline constexpr bool Color::operator==( const Color& other ) const noexcept
|
inline constexpr bool Color::operator==( const Color& other ) const noexcept
|
||||||
|
|
Loading…
Reference in New Issue