using degrees for arcs ( not multiplied by 16, what QPainter wants )
This commit is contained in:
parent
9c1265fdbe
commit
b5bc26eb63
@ -38,10 +38,10 @@ QSGNode* CircularProgressBarSkinlet::updateSubNode(
|
||||
}
|
||||
case BarRole:
|
||||
{
|
||||
const qreal startAngle = 90 * 16;
|
||||
const qreal startAngle = 90.0;
|
||||
const auto bar = static_cast< const CircularProgressBar* >( skinnable );
|
||||
const qreal spanAngle = bar->valueAsRatio() * -5760;
|
||||
return updateArcNode( skinnable, node, startAngle, spanAngle,
|
||||
const qreal spanAngle = 360.0 * bar->valueAsRatio();
|
||||
return updateArcNode( skinnable, node, startAngle, -spanAngle,
|
||||
CircularProgressBar::Bar );
|
||||
}
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ void LightDisplay::mouseMoveEvent( QMouseEvent* event )
|
||||
|
||||
const QskArcMetrics metrics = arcMetricsHint( ColdAndWarmArc );
|
||||
const qreal angle = angleFromPoint( rect, mousePos );
|
||||
const qreal ratio = ( metrics.spanAngle() - angle * 16 ) / metrics.spanAngle();
|
||||
const qreal ratio = ( metrics.spanAngle() - angle ) / metrics.spanAngle();
|
||||
setValueAsRatio( ratio );
|
||||
}
|
||||
|
||||
|
@ -118,10 +118,10 @@ void Skin::initHints( const Palette& palette )
|
||||
ed.setGradient( TopBarItem::Item4, { QskGradient::Horizontal, "#6100FF", "#6776FF" } );
|
||||
|
||||
// the bar gradient is defined through the top bar items above
|
||||
ed.setArcMetrics( CircularProgressBar::Groove, { 8.53, 90 * 16, -360 * 16 } );
|
||||
ed.setArcMetrics( CircularProgressBar::Groove, { 8.53, 90, -360 } );
|
||||
// the span angle will be set in the progress bar, we just give a dummy
|
||||
// value here:
|
||||
ed.setArcMetrics( CircularProgressBar::Bar, { 8.53, 90 * 16, -180 * 16 } );
|
||||
ed.setArcMetrics( CircularProgressBar::Bar, { 8.53, 90, -180 } );
|
||||
|
||||
ed.setFontRole( TimeTitleLabel::Text, Skin::TitleFont );
|
||||
|
||||
@ -184,7 +184,7 @@ void Skin::initHints( const Palette& palette )
|
||||
// light intensity:
|
||||
ed.setBoxShape( LightDisplay::Panel, 100, Qt::RelativeSize );
|
||||
|
||||
ed.setArcMetrics( LightDisplay::ColdAndWarmArc, 8.785, 0, 180 * 16 );
|
||||
ed.setArcMetrics( LightDisplay::ColdAndWarmArc, 8.785, 0, 180 );
|
||||
QskGradient coldGradient( Qt::Horizontal, { { 0.0, 0xffff3122 },
|
||||
{ 0.2, 0xfffeeeb7 },
|
||||
{ 0.3, 0xffa7b0ff },
|
||||
@ -193,7 +193,7 @@ void Skin::initHints( const Palette& palette )
|
||||
ed.setGradient( LightDisplay::ColdAndWarmArc, coldGradient );
|
||||
|
||||
ed.setMetric( LightDisplay::Tickmarks, 1 );
|
||||
ed.setArcMetrics( LightDisplay::Tickmarks, { 4.69, 0, 180 * 16 } );
|
||||
ed.setArcMetrics( LightDisplay::Tickmarks, { 4.69, 0, 180 } );
|
||||
ed.setColor( LightDisplay::Tickmarks, 0x55929CB2 );
|
||||
|
||||
ed.setFontRole( LightDisplay::ValueText, QskSkin::LargeFont );
|
||||
|
@ -40,12 +40,16 @@ void QskArcRenderer::renderArc(const QRectF& rect,
|
||||
}
|
||||
else
|
||||
{
|
||||
QConicalGradient gradient( rect.center(), metrics.startAngle() / 16.0 );
|
||||
QConicalGradient gradient( rect.center(), metrics.startAngle() );
|
||||
gradient.setStops( stops );
|
||||
|
||||
brush = gradient;
|
||||
}
|
||||
|
||||
painter->setPen( QPen( brush, metrics.width(), Qt::SolidLine, Qt::FlatCap ) );
|
||||
painter->drawArc( rect, metrics.startAngle(), metrics.spanAngle() );
|
||||
|
||||
const int startAngle = qRound( metrics.startAngle() * 16 );
|
||||
const int spanAngle = qRound( metrics.spanAngle() * 16 );
|
||||
|
||||
painter->drawArc( rect, startAngle, spanAngle );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user