APIs for setting box hints changed

This commit is contained in:
Uwe Rathmann 2017-10-18 20:00:06 +02:00
parent b3e4360ad1
commit 6df27afcc0
21 changed files with 167 additions and 123 deletions

View File

@ -102,8 +102,8 @@ void DefaultSkin::initHints()
setGradient( SoundControl::CrossHair, m_palette->color3 ); setGradient( SoundControl::CrossHair, m_palette->color3 );
setGradient( SoundControl::Marker, m_palette->color5 ); setGradient( SoundControl::Marker, m_palette->color5 );
setBoxBorder( SoundControl::Marker, 2 ); setBoxBorderMetrics( SoundControl::Marker, 2 );
setBoxRadius( SoundControl::Marker, 100, Qt::RelativeSize ); setBoxShape( SoundControl::Marker, 100, Qt::RelativeSize );
setGradient( QskSeparator::Panel, m_palette->color3 ); setGradient( QskSeparator::Panel, m_palette->color3 );
setMetric( QskSeparator::Panel | QskAspect::Size, 2 ); setMetric( QskSeparator::Panel | QskAspect::Size, 2 );
@ -138,8 +138,8 @@ void DefaultSkin::initHints()
setGradient( QskSlider::Fill, m_palette->color4.darker( 200 ) ); setGradient( QskSlider::Fill, m_palette->color4.darker( 200 ) );
setMetric( QskSlider::Handle | QskAspect::Size, 24 ); setMetric( QskSlider::Handle | QskAspect::Size, 24 );
setBoxBorder( QskSlider::Handle, 0 ); setBoxBorderMetrics( QskSlider::Handle, 0 );
setBoxRadius( QskSlider::Handle, 100.0, Qt::RelativeSize ); setBoxShape( QskSlider::Handle, 100.0, Qt::RelativeSize );
setGradient( QskSlider::Handle, m_palette->color5 ); setGradient( QskSlider::Handle, m_palette->color5 );
// handle expanding, when being pressed // handle expanding, when being pressed

View File

@ -79,22 +79,22 @@ void OtherSkin::initHints()
setGradient( SoundControl::CrossHair, QColor( "OliveDrab" ).lighter( 120 ) ); setGradient( SoundControl::CrossHair, QColor( "OliveDrab" ).lighter( 120 ) );
setGradient( SoundControl::Marker, QColor( "OliveDrab" ) ); setGradient( SoundControl::Marker, QColor( "OliveDrab" ) );
setBoxBorder( SoundControl::Marker, 2 ); setBoxBorderMetrics( SoundControl::Marker, 2 );
setBoxRadius( SoundControl::Marker, 100, Qt::RelativeSize ); setBoxShape( SoundControl::Marker, 100, Qt::RelativeSize );
setSkinHint( ButtonBar::Indicator | QskAspect::GraphicRole, SkinFactory::Indicator ); setSkinHint( ButtonBar::Indicator | QskAspect::GraphicRole, SkinFactory::Indicator );
setSkinHint( SoundControl::Vehicle | QskAspect::GraphicRole, SkinFactory::Vehicle ); setSkinHint( SoundControl::Vehicle | QskAspect::GraphicRole, SkinFactory::Vehicle );
setSkinHint( SoundControl::MarkerControl | QskAspect::GraphicRole, SkinFactory::Vehicle ); setSkinHint( SoundControl::MarkerControl | QskAspect::GraphicRole, SkinFactory::Vehicle );
setBoxBorder( QskSeparator::Panel, 0 ); setBoxBorderMetrics( QskSeparator::Panel, 0 );
setGradient( QskSeparator::Panel, m_palette->color3 ); setGradient( QskSeparator::Panel, m_palette->color3 );
setMetric( QskSeparator::Panel | QskAspect::Size, 1 ); setMetric( QskSeparator::Panel | QskAspect::Size, 1 );
// -- push buttons // -- push buttons
setMargins( QskPushButton::Panel | QskAspect::Padding, 8 ); setMargins( QskPushButton::Panel | QskAspect::Padding, 8 );
setBoxBorder( QskPushButton::Panel, 0 ); setBoxBorderMetrics( QskPushButton::Panel, 0 );
setBoxRadius( QskPushButton::Panel, 4 ); setBoxShape( QskPushButton::Panel, 4 );
setGradient( QskPushButton::Panel, m_palette->color1 ); setGradient( QskPushButton::Panel, m_palette->color1 );
setGradient( QskPushButton::Panel | QskPushButton::Pressed, m_palette->color2 ); setGradient( QskPushButton::Panel | QskPushButton::Pressed, m_palette->color2 );
@ -109,8 +109,8 @@ void OtherSkin::initHints()
setGradient( SoundControl::Overlay, overlayColor ); setGradient( SoundControl::Overlay, overlayColor );
// -- slider control buttons // -- slider control buttons
setBoxBorder( SoundControl::SliderControl, 0 ); setBoxBorderMetrics( SoundControl::SliderControl, 0 );
setBoxRadius( SoundControl::SliderControl, 4 ); setBoxShape( SoundControl::SliderControl, 4 );
setGradient( SoundControl::SliderControl, m_palette->color1 ); setGradient( SoundControl::SliderControl, m_palette->color1 );
setGradient( SoundControl::SliderControl | QskPushButton::Pressed, m_palette->color2 ); setGradient( SoundControl::SliderControl | QskPushButton::Pressed, m_palette->color2 );
@ -133,8 +133,8 @@ void OtherSkin::initHints()
setGradient( QskSlider::Fill, m_palette->color3.lighter( 150 ) ); setGradient( QskSlider::Fill, m_palette->color3.lighter( 150 ) );
setMetric( QskSlider::Handle | QskAspect::Size, 22 ); setMetric( QskSlider::Handle | QskAspect::Size, 22 );
setBoxBorder( QskSlider::Handle, 0 ); setBoxBorderMetrics( QskSlider::Handle, 0 );
setBoxRadius( QskSlider::Handle, 6 ); setBoxShape( QskSlider::Handle, 6 );
setGradient( QskSlider::Handle, m_palette->color3 ); setGradient( QskSlider::Handle, m_palette->color3 );
} }

View File

@ -48,8 +48,9 @@ QskSkin* SkinFactory::createSkin( const QString& skinName )
skin->setSkinHint( SoundControl::Vehicle | QskAspect::GraphicRole, SkinFactory::Vehicle ); skin->setSkinHint( SoundControl::Vehicle | QskAspect::GraphicRole, SkinFactory::Vehicle );
skin->setGradient( SoundControl::Marker, themeColor ); skin->setGradient( SoundControl::Marker, themeColor );
skin->setBoxBorder( SoundControl::Marker, 1 ); skin->setBoxBorderMetrics( SoundControl::Marker, 1 );
skin->setBoxRadius( SoundControl::Marker, 6 ); skin->setBoxShape( SoundControl::Marker, 6 );
skin->setColor( QskTextLabel::Text, "PeachPuff" ); skin->setColor( QskTextLabel::Text, "PeachPuff" );
skin->setGradient( QskPushButton::Text, themeColor ); skin->setGradient( QskPushButton::Text, themeColor );
@ -72,8 +73,8 @@ QskSkin* SkinFactory::createSkin( const QString& skinName )
skin->setSkinHint( SoundControl::MarkerControl | QskAspect::GraphicRole, SkinFactory::Indicator ); skin->setSkinHint( SoundControl::MarkerControl | QskAspect::GraphicRole, SkinFactory::Indicator );
skin->setBoxBorder( SoundControl::Marker, 1 ); skin->setBoxBorderMetrics( SoundControl::Marker, 1 );
skin->setBoxRadius( SoundControl::Marker, 8 ); skin->setBoxShape( SoundControl::Marker, 8 );
skin->setGradient( SoundControl::Marker, QColor( "SaddleBrown" ) ); skin->setGradient( SoundControl::Marker, QColor( "SaddleBrown" ) );
skin->setGradient( SoundControl::CrossHair, QColor( "Sienna" ) ); skin->setGradient( SoundControl::CrossHair, QColor( "Sienna" ) );

View File

@ -11,8 +11,8 @@ Box::Box( QQuickItem* parentItem ):
// decoupling the hints from the skin // decoupling the hints from the skin
setBoxShapeHint( QskBox::Panel, QskBoxShapeMetrics() ); setBoxShapeHint( QskBox::Panel, QskBoxShapeMetrics() );
setBoxBorderHint( QskBox::Panel, QskBoxBorderMetrics() ); setBoxBorderMetricsHint( QskBox::Panel, QskBoxBorderMetrics() );
setBoxBorderColorHint( QskBox::Panel, QskBoxBorderColors() ); setBoxBorderColorsHint( QskBox::Panel, QskBoxBorderColors() );
setGradientHint( QskBox::Panel, QskGradient() ); setGradientHint( QskBox::Panel, QskGradient() );
} }
@ -116,23 +116,23 @@ void Box::setBorderColors( const QColor& left, const QColor& top,
const QColor& right, const QColor& bottom ) const QColor& right, const QColor& bottom )
{ {
QskBoxBorderColors colors( left, top, right, bottom ); QskBoxBorderColors colors( left, top, right, bottom );
setBoxBorderColorHint( QskBox::Panel, colors ); setBoxBorderColorsHint( QskBox::Panel, colors );
} }
void Box::setBorderColor( const QColor& color ) void Box::setBorderColor( const QColor& color )
{ {
setBoxBorderColorHint( QskBox::Panel, color ); setBoxBorderColorsHint( QskBox::Panel, color );
} }
void Box::setBorderWidth( qreal left, qreal top, qreal right, qreal bottom ) void Box::setBorderWidth( qreal left, qreal top, qreal right, qreal bottom )
{ {
setBoxBorderHint( QskBox::Panel, setBoxBorderMetricsHint( QskBox::Panel,
QskMargins( left, top, right, bottom ) ); QskMargins( left, top, right, bottom ) );
} }
void Box::setBorderWidth( int width ) void Box::setBorderWidth( int width )
{ {
setBoxBorderHint( QskBox::Panel, QskMargins( width ) ); setBoxBorderMetricsHint( QskBox::Panel, QskMargins( width ) );
} }
void Box::setGradient( QRgb rgb ) void Box::setGradient( QRgb rgb )

View File

@ -49,9 +49,9 @@ public:
const Aspect aspect = Panel | placement; const Aspect aspect = Panel | placement;
setMetric( aspect | Size, h ); setMetric( aspect | Size, h );
setBoxBorderHint( aspect, 1 );
setBoxShapeHint( aspect, 4 ); setBoxShapeHint( aspect, 4 );
setBoxBorderColorHint( aspect, Grey900 ); setBoxBorderMetricsHint( aspect, 1 );
setBoxBorderColorsHint( aspect, Grey900 );
setGradientHint( aspect, Grey400 ); setGradientHint( aspect, Grey400 );
if ( placement == Preserved ) if ( placement == Preserved )
@ -67,7 +67,7 @@ public:
const Aspect aspect = Groove | placement; const Aspect aspect = Groove | placement;
setMetric( aspect | Size, 4 ); setMetric( aspect | Size, 4 );
setBoxBorderHint( aspect, 0 ); setBoxBorderMetricsHint( aspect, 0 );
setBoxShapeHint( aspect, 1 ); setBoxShapeHint( aspect, 1 );
setGradientHint( aspect, Qt::black ); setGradientHint( aspect, Qt::black );
@ -86,7 +86,7 @@ public:
{ {
const Aspect aspect = Handle | placement; const Aspect aspect = Handle | placement;
setBoxBorderHint( aspect, 1 ); setBoxBorderMetricsHint( aspect, 1 );
setBoxShapeHint( aspect, 4 ); setBoxShapeHint( aspect, 4 );
const qreal m = 0.5 * qCeil( 0.5 * ( w - h ) ) + 1; const qreal m = 0.5 * qCeil( 0.5 * ( w - h ) ) + 1;
@ -98,7 +98,7 @@ public:
for ( auto state : { NoState, Pressed } ) for ( auto state : { NoState, Pressed } )
{ {
setBoxBorderColorHint( aspect | state, Grey600 ); setBoxBorderColorsHint( aspect | state, Grey600 );
setGradientHint( aspect | state, Blue400 ); setGradientHint( aspect | state, Blue400 );
} }
} }

View File

@ -87,7 +87,7 @@ int main( int argc, char* argv[] )
auto focusIndicator = new QskFocusIndicator(); auto focusIndicator = new QskFocusIndicator();
focusIndicator->setObjectName( "FocusIndicator" ); focusIndicator->setObjectName( "FocusIndicator" );
focusIndicator->setBoxBorderColorHint( QskFocusIndicator::Panel, Qt::red ); focusIndicator->setBoxBorderColorsHint( QskFocusIndicator::Panel, Qt::red );
QskWindow window; QskWindow window;
window.resize( 600, 400 ); window.resize( 600, 400 );

View File

@ -112,16 +112,16 @@ public:
using namespace QskAspect; using namespace QskAspect;
// settings usually done in the skins // settings usually done in the skins
setBoxBorderHint( Viewport, 2 ); setBoxBorderMetricsHint( Viewport, 2 );
setBoxShapeHint( Viewport, 20 ); setBoxShapeHint( Viewport, 20 );
for ( auto subControl : { HorizontalScrollBar, VerticalScrollBar } ) for ( auto subControl : { HorizontalScrollBar, VerticalScrollBar } )
setMetric( subControl | Size, 20 ); setMetric( subControl | Size, 20 );
setBoxBorderHint( VerticalScrollHandle, 1 ); setBoxBorderMetricsHint( VerticalScrollHandle, 1 );
setBoxShapeHint( VerticalScrollHandle, 8 ); setBoxShapeHint( VerticalScrollHandle, 8 );
setBoxBorderHint( HorizontalScrollHandle, 1 ); setBoxBorderMetricsHint( HorizontalScrollHandle, 1 );
setBoxShapeHint( HorizontalScrollHandle, 8 ); setBoxShapeHint( HorizontalScrollHandle, 8 );
} }
}; };

View File

@ -172,6 +172,7 @@ void QskListView::keyPressEvent( QKeyEvent* event )
return; return;
int row = selectedRow(); int row = selectedRow();
switch ( event->key() ) switch ( event->key() )
{ {
case Qt::Key_Down: case Qt::Key_Down:

View File

@ -278,6 +278,7 @@ void QskListViewSkinlet::updateForegroundNodes(
node = node->nextSibling(); node = node->nextSibling();
x += listView->columnWidth( col ); x += listView->columnWidth( col );
} }
y += rowHeight; y += rowHeight;
} }

View File

@ -183,7 +183,7 @@ QSizeF QskScrollView::scrollableSize() const
QRectF QskScrollView::viewContentsRect() const QRectF QskScrollView::viewContentsRect() const
{ {
// This code should be done in the skinlet. TODO ... // This code should be done in the skinlet. TODO ...
const qreal bw = boxBorderHint( Viewport | QskAspect::Border ).widthAt( Qt::TopEdge ); const qreal bw = boxBorderMetricsHint( Viewport ).widthAt( Qt::TopEdge );
const QRectF r = subControlRect( Viewport ); const QRectF r = subControlRect( Viewport );
return r.adjusted( bw, bw, -bw, -bw ); return r.adjusted( bw, bw, -bw, -bw );

View File

@ -209,9 +209,18 @@ QskGradient QskSkin::gradient( QskAspect::Aspect aspect ) const
return m_data->hintTable.gradient( aspect ); return m_data->hintTable.gradient( aspect );
} }
void QskSkin::setBoxRadius( QskAspect::Aspect aspect, qreal radius, Qt::SizeMode sizeMode ) void QskSkin::setBoxShape( QskAspect::Aspect aspect,
qreal radius, Qt::SizeMode sizeMode )
{ {
m_data->hintTable.setBoxShape( aspect, QskBoxShapeMetrics( radius, sizeMode ) ); m_data->hintTable.setBoxShape( aspect,
QskBoxShapeMetrics( radius, radius, radius, radius, sizeMode ) );
}
void QskSkin::setBoxShape( QskAspect::Aspect aspect, qreal topLeft, qreal topRight,
qreal bottomLeft, qreal bottomRight, Qt::SizeMode sizeMode )
{
m_data->hintTable.setBoxShape( aspect,
QskBoxShapeMetrics( topLeft, topRight, bottomLeft, bottomRight, sizeMode ) );
} }
void QskSkin::setBoxShape( QskAspect::Aspect aspect, const QskBoxShapeMetrics& shape ) void QskSkin::setBoxShape( QskAspect::Aspect aspect, const QskBoxShapeMetrics& shape )
@ -224,12 +233,20 @@ QskBoxShapeMetrics QskSkin::boxShape( QskAspect::Aspect aspect ) const
return m_data->hintTable.boxShape( aspect ); return m_data->hintTable.boxShape( aspect );
} }
void QskSkin::setBoxBorder( QskAspect::Aspect aspect, const QskBoxBorderMetrics& border ) void QskSkin::setBoxBorderMetrics( QskAspect::Aspect aspect,
qreal left, qreal top, qreal right, qreal bottom, Qt::SizeMode sizeMode )
{
m_data->hintTable.setBoxBorder( aspect,
QskBoxBorderMetrics( left, top, right, bottom, sizeMode ) );
}
void QskSkin::setBoxBorderMetrics(
QskAspect::Aspect aspect, const QskBoxBorderMetrics& border )
{ {
m_data->hintTable.setBoxBorder( aspect, border ); m_data->hintTable.setBoxBorder( aspect, border );
} }
QskBoxBorderMetrics QskSkin::boxBorder( QskAspect::Aspect aspect ) const QskBoxBorderMetrics QskSkin::boxBorderMetrics( QskAspect::Aspect aspect ) const
{ {
return m_data->hintTable.boxBorder( aspect ); return m_data->hintTable.boxBorder( aspect );
} }

View File

@ -76,13 +76,18 @@ public:
void setGradient( QskAspect::Aspect, const QskGradient& ); void setGradient( QskAspect::Aspect, const QskGradient& );
QskGradient gradient( QskAspect::Aspect ) const; QskGradient gradient( QskAspect::Aspect ) const;
void setBoxRadius( QskAspect::Aspect, qreal radius, Qt::SizeMode = Qt::AbsoluteSize ); void setBoxShape( QskAspect::Aspect, qreal radius, Qt::SizeMode = Qt::AbsoluteSize );
void setBoxShape( QskAspect::Aspect, qreal topLeft, qreal topRight,
qreal bottomLeft, qreal bottomRight, Qt::SizeMode = Qt::AbsoluteSize );
void setBoxShape( QskAspect::Aspect, const QskBoxShapeMetrics& ); void setBoxShape( QskAspect::Aspect, const QskBoxShapeMetrics& );
QskBoxShapeMetrics boxShape( QskAspect::Aspect ) const; QskBoxShapeMetrics boxShape( QskAspect::Aspect ) const;
void setBoxBorder( QskAspect::Aspect, const QskBoxBorderMetrics& ); void setBoxBorderMetrics( QskAspect::Aspect, qreal left, qreal top,
QskBoxBorderMetrics boxBorder( QskAspect::Aspect ) const; qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize );
void setBoxBorderMetrics( QskAspect::Aspect, const QskBoxBorderMetrics& );
QskBoxBorderMetrics boxBorderMetrics( QskAspect::Aspect ) const;
void setBoxBorderColors( QskAspect::Aspect, const QskBoxBorderColors& ); void setBoxBorderColors( QskAspect::Aspect, const QskBoxBorderColors& );
QskBoxBorderColors boxBorderColors( QskAspect::Aspect ) const; QskBoxBorderColors boxBorderColors( QskAspect::Aspect ) const;

View File

@ -94,6 +94,26 @@ const std::unordered_map< QskAspect::Aspect, QVariant >& QskSkinHintTable::hints
return dummyHints; return dummyHints;
} }
void QskSkinHintTable::setAnimation(
QskAspect::Aspect aspect, QskAnimationHint animation )
{
aspect.setAnimator( true );
const QVariant v = QVariant::fromValue( animation );
if ( aspect.type() == 0 )
{
using namespace QskAspect;
setHint( aspect | Color, v );
setHint( aspect | Metric, v );
}
else
{
setHint( aspect, v );
}
}
void QskSkinHintTable::setHint( QskAspect::Aspect aspect, const QVariant& skinHint ) void QskSkinHintTable::setHint( QskAspect::Aspect aspect, const QVariant& skinHint )
{ {
if ( m_hints == nullptr ) if ( m_hints == nullptr )

View File

@ -222,13 +222,6 @@ inline QskBoxBorderColors QskSkinHintTable::boxBorderColors( QskAspect::Aspect a
return hint( aspect | Border | Color ).value< QskBoxBorderColors >(); return hint( aspect | Border | Color ).value< QskBoxBorderColors >();
} }
inline void QskSkinHintTable::setAnimation(
QskAspect::Aspect aspect, QskAnimationHint animation )
{
aspect.setAnimator( true );
setHint( aspect, QVariant::fromValue( animation ) );
}
inline QskAnimationHint QskSkinHintTable::animation( QskAspect::Aspect aspect ) const inline QskAnimationHint QskSkinHintTable::animation( QskAspect::Aspect aspect ) const
{ {
aspect.setAnimator( true ); aspect.setAnimator( true );

View File

@ -203,9 +203,9 @@ QskBoxOptions QskSkinRenderer::boxOptions( const QskSkinnable* skinnable,
QskBoxOptions options; QskBoxOptions options;
options.shape = skinnable->boxShapeHint( subControl | Shape ).toAbsolute( size ); options.shape = skinnable->boxShapeHint( subControl ).toAbsolute( size );
options.border = skinnable->boxBorderHint( subControl | Border ).toAbsolute( size ); options.border = skinnable->boxBorderMetricsHint( subControl ).toAbsolute( size );
options.borderColors = skinnable->boxBorderColorHint( subControl | Border ); options.borderColors = skinnable->boxBorderColorsHint( subControl );
options.fillGradient = skinnable->gradientHint( subControl ); options.fillGradient = skinnable->gradientHint( subControl );
return options; return options;

View File

@ -241,6 +241,11 @@ qreal QskSkinnable::metric( QskAspect::Aspect aspect, QskSkinHintStatus* status
return effectiveHint( aspect | QskAspect::Metric, status ).toReal(); return effectiveHint( aspect | QskAspect::Metric, status ).toReal();
} }
void QskSkinnable::setMarginsHint( QskAspect::Aspect aspect, qreal margins )
{
m_data->hintTable.setMargins( aspect, QskMargins( margins ) );
}
void QskSkinnable::setMarginsHint( QskAspect::Aspect aspect, const QMarginsF& margins ) void QskSkinnable::setMarginsHint( QskAspect::Aspect aspect, const QMarginsF& margins )
{ {
m_data->hintTable.setMargins( aspect, margins ); m_data->hintTable.setMargins( aspect, margins );
@ -273,33 +278,34 @@ void QskSkinnable::setBoxShapeHint(
QskBoxShapeMetrics QskSkinnable::boxShapeHint( QskBoxShapeMetrics QskSkinnable::boxShapeHint(
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
{ {
return effectiveHint( aspect | QskAspect::Metric, status ).value< QskBoxShapeMetrics >(); using namespace QskAspect;
return effectiveHint( aspect | Metric | Shape, status ).value< QskBoxShapeMetrics >();
} }
void QskSkinnable::setBoxBorderHint( void QskSkinnable::setBoxBorderMetricsHint(
QskAspect::Aspect aspect, const QskBoxBorderMetrics& border ) QskAspect::Aspect aspect, const QskBoxBorderMetrics& border )
{ {
m_data->hintTable.setBoxBorder( aspect, border ); m_data->hintTable.setBoxBorder( aspect, border );
} }
QskBoxBorderMetrics QskSkinnable::boxBorderHint( QskBoxBorderMetrics QskSkinnable::boxBorderMetricsHint(
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
{ {
using namespace QskAspect; using namespace QskAspect;
return effectiveHint( aspect | Metric, status ).value< QskBoxBorderMetrics >(); return effectiveHint( aspect | Metric | Border, status ).value< QskBoxBorderMetrics >();
} }
void QskSkinnable::setBoxBorderColorHint( void QskSkinnable::setBoxBorderColorsHint(
QskAspect::Aspect aspect, const QskBoxBorderColors& colors ) QskAspect::Aspect aspect, const QskBoxBorderColors& colors )
{ {
m_data->hintTable.setBoxBorderColors( aspect, colors ); m_data->hintTable.setBoxBorderColors( aspect, colors );
} }
QskBoxBorderColors QskSkinnable::boxBorderColorHint( QskBoxBorderColors QskSkinnable::boxBorderColorsHint(
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
{ {
using namespace QskAspect; using namespace QskAspect;
return effectiveHint( aspect | Color, status ).value< QskBoxBorderColors >(); return effectiveHint( aspect | Color | Border, status ).value< QskBoxBorderColors >();
} }
void QskSkinnable::setFontRole( QskAspect::Aspect aspect, int role ) void QskSkinnable::setFontRole( QskAspect::Aspect aspect, int role )
@ -605,7 +611,7 @@ static inline QMarginsF qskMargins( const QskSkinnable* skinnable,
const QMarginsF padding1 = QskSkinRenderer::paddingHint( const QMarginsF padding1 = QskSkinRenderer::paddingHint(
skinnable->boxShapeHint( aspect | Shape), skinnable->boxShapeHint( aspect | Shape),
skinnable->boxBorderHint( aspect | Border ), skinnable->boxBorderMetricsHint( aspect | Border ),
size, inner ); size, inner );
const QMarginsF padding2 = skinnable->marginsHint( aspect | Padding ); const QMarginsF padding2 = skinnable->marginsHint( aspect | Padding );

View File

@ -80,6 +80,7 @@ public:
void setMetric( QskAspect::Aspect, qreal metric ); void setMetric( QskAspect::Aspect, qreal metric );
qreal metric( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; qreal metric( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
void setMarginsHint( QskAspect::Aspect, qreal );
void setMarginsHint( QskAspect::Aspect, const QMarginsF& ); void setMarginsHint( QskAspect::Aspect, const QMarginsF& );
QMarginsF marginsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; QMarginsF marginsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
@ -89,11 +90,11 @@ public:
void setBoxShapeHint( QskAspect::Aspect, const QskBoxShapeMetrics& ); void setBoxShapeHint( QskAspect::Aspect, const QskBoxShapeMetrics& );
QskBoxShapeMetrics boxShapeHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; QskBoxShapeMetrics boxShapeHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
void setBoxBorderHint( QskAspect::Aspect, const QskBoxBorderMetrics& ); void setBoxBorderMetricsHint( QskAspect::Aspect, const QskBoxBorderMetrics& );
QskBoxBorderMetrics boxBorderHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; QskBoxBorderMetrics boxBorderMetricsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
void setBoxBorderColorHint( QskAspect::Aspect, const QskBoxBorderColors& ); void setBoxBorderColorsHint( QskAspect::Aspect, const QskBoxBorderColors& );
QskBoxBorderColors boxBorderColorHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; QskBoxBorderColors boxBorderColorsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
void setFlagHint( QskAspect::Aspect, int flag ); void setFlagHint( QskAspect::Aspect, int flag );
int flagHint( QskAspect::Aspect ) const; int flagHint( QskAspect::Aspect ) const;

View File

@ -13,7 +13,7 @@ static QMarginsF qskPadding(
const QskSlider* slider, QskAspect::Subcontrol subControl ) const QskSlider* slider, QskAspect::Subcontrol subControl )
{ {
return slider->marginsHint( subControl | QskAspect::Padding ) return slider->marginsHint( subControl | QskAspect::Padding )
+ slider->boxBorderHint( subControl ).widths(); + slider->boxBorderMetricsHint( subControl ).widths();
} }
QskSliderSkinlet::QskSliderSkinlet( QskSkin* skin ): QskSliderSkinlet::QskSliderSkinlet( QskSkin* skin ):

View File

@ -81,7 +81,7 @@ QSGNode* QskSubWindowSkinlet::updateTitleBarNode(
QRectF QskSubWindowSkinlet::titleBarRect( const QskSubWindow* subWindow ) const QRectF QskSubWindowSkinlet::titleBarRect( const QskSubWindow* subWindow ) const
{ {
const auto border = subWindow->boxBorderHint( QskSubWindow::Panel | QskAspect::Border ); const auto border = subWindow->boxBorderMetricsHint( QskSubWindow::Panel );
QRectF rect = subWindow->contentsRect().marginsRemoved( border.widths() ); QRectF rect = subWindow->contentsRect().marginsRemoved( border.widths() );
rect.setHeight( titleBarHeight( subWindow ) ); rect.setHeight( titleBarHeight( subWindow ) );

View File

@ -196,8 +196,8 @@ void QskMaterialSkin::initFocusIndicatorHints()
const ColorPalette& pal = m_data->palette; const ColorPalette& pal = m_data->palette;
setMargins( Q::Panel | Padding, 5 ); setMargins( Q::Panel | Padding, 5 );
setBoxRadius( Q::Panel, 4 ); setBoxShape( Q::Panel, 4 );
setBoxBorder( Q::Panel, 2 ); setBoxBorderMetrics( Q::Panel, 2 );
setBoxBorderColors( Q::Panel, pal.accentColor ); setBoxBorderColors( Q::Panel, pal.accentColor );
setGradient( Q::Panel, QskGradient() ); setGradient( Q::Panel, QskGradient() );
} }
@ -214,8 +214,8 @@ void QskMaterialSkin::initSeparatorHints()
const Aspect aspect = Q::Panel | placement; const Aspect aspect = Q::Panel | placement;
setMetric( aspect | Size, 4 ); setMetric( aspect | Size, 4 );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setGradient( aspect, pal.baseColor ); setGradient( aspect, pal.baseColor );
} }
} }
@ -232,8 +232,8 @@ void QskMaterialSkin::initPageIndicatorHints()
setMetric( subControl | Size, qskDpiScaled( 10 ) ); setMetric( subControl | Size, qskDpiScaled( 10 ) );
// circles, without border // circles, without border
setBoxRadius( subControl, 100, Qt::RelativeSize ); setBoxShape( subControl, 100, Qt::RelativeSize );
setBoxBorder( subControl | Border, 0 ); setBoxBorderMetrics( subControl, 0 );
const QColor color = ( subControl == Q::Bullet ) const QColor color = ( subControl == Q::Bullet )
? pal.lighter150 : pal.accentColor; ? pal.lighter150 : pal.accentColor;
@ -243,8 +243,7 @@ void QskMaterialSkin::initPageIndicatorHints()
} }
// no visible background panel // no visible background panel
setBoxBorder( Q::Panel | Shape, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setBoxBorder( Q::Panel | Border, 0 );
setGradient( Q::Panel, QskGradient() ); setGradient( Q::Panel, QskGradient() );
setMetric( Q::Panel | Spacing, 3 ); setMetric( Q::Panel | Spacing, 3 );
@ -273,8 +272,8 @@ void QskMaterialSkin::initPushButtonHints()
QskBoxBorderColors noBorderColors = borderColors; QskBoxBorderColors noBorderColors = borderColors;
noBorderColors.setAlpha( 0 ); noBorderColors.setAlpha( 0 );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, QskMargins( 1, 2, 1, 2 ) ); setBoxBorderMetrics( Q::Panel, QskMargins( 1, 2, 1, 2 ) );
setBoxBorderColors( Q::Panel, noBorderColors ); setBoxBorderColors( Q::Panel, noBorderColors );
setGradient( Q::Panel, White ); setGradient( Q::Panel, White );
@ -333,8 +332,8 @@ void QskMaterialSkin::initDialogButtonHints()
QskBoxBorderColors noBorderColors = borderColors; QskBoxBorderColors noBorderColors = borderColors;
noBorderColors.setAlpha( 0 ); noBorderColors.setAlpha( 0 );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, QskMargins( 1, 2, 1, 2 ) ); setBoxBorderMetrics( Q::Panel, QskMargins( 1, 2, 1, 2 ) );
setBoxBorderColors( Q::Panel, noBorderColors ); setBoxBorderColors( Q::Panel, noBorderColors );
setGradient( Q::Panel, White ); setGradient( Q::Panel, White );
@ -372,8 +371,8 @@ void QskMaterialSkin::initDialogButtonBoxHints()
const ColorPalette& pal = m_data->palette; const ColorPalette& pal = m_data->palette;
setGradient( Q::Panel, pal.baseColor ); setGradient( Q::Panel, pal.baseColor );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
} }
void QskMaterialSkin::initSliderHints() void QskMaterialSkin::initSliderHints()
@ -389,8 +388,8 @@ void QskMaterialSkin::initSliderHints()
// Panel // Panel
setMetric( Q::Panel | Size, dim ); setMetric( Q::Panel | Size, dim );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setGradient( Q::Panel, QskGradient() ); setGradient( Q::Panel, QskGradient() );
setMargins( Q::Panel | Preserved | Padding, QskMargins( 0.5 * dim, 0 ) ); setMargins( Q::Panel | Preserved | Padding, QskMargins( 0.5 * dim, 0 ) );
@ -403,8 +402,8 @@ void QskMaterialSkin::initSliderHints()
setMetric( subControl | Size, 5 ); setMetric( subControl | Size, 5 );
setMargins( subControl | Padding, 0 ); setMargins( subControl | Padding, 0 );
setBoxRadius( subControl, 0 ); setBoxShape( subControl, 0 );
setBoxBorder( subControl, 0 ); setBoxBorderMetrics( subControl, 0 );
setGradient( subControl, QskGradient() ); setGradient( subControl, QskGradient() );
} }
@ -415,8 +414,8 @@ void QskMaterialSkin::initSliderHints()
// handle // handle
setBoxRadius( Q::Handle, 100, Qt::RelativeSize ); setBoxShape( Q::Handle, 100, Qt::RelativeSize );
setBoxBorder( Q::Handle, 4 ); setBoxBorderMetrics( Q::Handle, 4 );
// handle expanding, when being pressed // handle expanding, when being pressed
setMetric( Q::Handle | Size, 0.6 * dim ); setMetric( Q::Handle | Size, 0.6 * dim );
@ -468,11 +467,11 @@ void QskMaterialSkin::initTabButtonHints()
// The highlighted button has a accented bar at the bottom/right edge // The highlighted button has a accented bar at the bottom/right edge
setBoxRadius( aspect, 0 ); setBoxShape( aspect, 0 );
QskBoxBorderMetrics border; QskBoxBorderMetrics border;
border.setWidthAt( edge, 3 ); border.setWidthAt( edge, 3 );
setBoxBorder( aspect, border ); setBoxBorderMetrics( aspect, border );
QskBoxBorderColors borderColors( QskRgbValue::White ); QskBoxBorderColors borderColors( QskRgbValue::White );
setBoxBorderColors( placement, borderColors ); setBoxBorderColors( placement, borderColors );
@ -498,8 +497,8 @@ void QskMaterialSkin::initTabBarHints()
using namespace QskAspect; using namespace QskAspect;
using Q = QskTabBar; using Q = QskTabBar;
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setGradient( Q::Panel, QskGradient() ); setGradient( Q::Panel, QskGradient() );
} }
@ -510,8 +509,8 @@ void QskMaterialSkin::initTabViewHints()
const ColorPalette& pal = m_data->palette; const ColorPalette& pal = m_data->palette;
setBoxRadius( Q::Page, 0 ); setBoxShape( Q::Page, 0 );
setBoxBorder( Q::Page, 0 ); setBoxBorderMetrics( Q::Page, 0 );
setGradient( Q::Page, pal.darker150 ); setGradient( Q::Page, pal.darker150 );
setBoxBorderColors( Q::Page, pal.baseColor ); setBoxBorderColors( Q::Page, pal.baseColor );
@ -528,8 +527,8 @@ void QskMaterialSkin::initInputPanelHints()
// key panel // key panel
setMargins( Q::KeyPanel | Margin, 2 ); setMargins( Q::KeyPanel | Margin, 2 );
setBoxRadius( Q::KeyPanel, 20.0, Qt::RelativeSize ); setBoxShape( Q::KeyPanel, 20.0, Qt::RelativeSize );
setBoxBorder( Q::KeyPanel, 2 ); setBoxBorderMetrics( Q::KeyPanel, 2 );
setGradient( Q::KeyPanel, pal.darker125 ); setGradient( Q::KeyPanel, pal.darker125 );
setBoxBorderColors( Q::KeyPanel, pal.baseColor ); setBoxBorderColors( Q::KeyPanel, pal.baseColor );
@ -548,8 +547,8 @@ void QskMaterialSkin::initInputPanelHints()
setColor( Q::KeyGlyph | Q::Disabled, pal.darker200 ); setColor( Q::KeyGlyph | Q::Disabled, pal.darker200 );
// panel // panel
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setGradient( Q::Panel, pal.darker150 ); setGradient( Q::Panel, pal.darker150 );
setBoxBorderColors( Q::Panel, pal.baseColor ); setBoxBorderColors( Q::Panel, pal.baseColor );
} }
@ -563,8 +562,8 @@ void QskMaterialSkin::initScrollViewHints()
setMetric( Q::Panel | Spacing, 2 ); setMetric( Q::Panel | Spacing, 2 );
setBoxRadius( Q::Viewport, 5 ); setBoxShape( Q::Viewport, 5 );
setBoxBorder( Q::Viewport, 1 ); setBoxBorderMetrics( Q::Viewport, 1 );
setGradient( Q::Viewport, QskRgbValue::White ); setGradient( Q::Viewport, QskRgbValue::White );
setBoxBorderColors( Q::Viewport, Qt::black ); setBoxBorderColors( Q::Viewport, Qt::black );
@ -579,8 +578,8 @@ void QskMaterialSkin::initScrollViewHints()
for ( auto subControl : { Q::HorizontalScrollHandle, Q::VerticalScrollHandle } ) for ( auto subControl : { Q::HorizontalScrollHandle, Q::VerticalScrollHandle } )
{ {
setBoxRadius( subControl, 3 ); setBoxShape( subControl, 3 );
setBoxBorder( subControl, 1 ); setBoxBorderMetrics( subControl, 1 );
setGradient( subControl, pal.accentColor ); setGradient( subControl, pal.accentColor );
setBoxBorderColors( subControl, QskRgbValue::White ); setBoxBorderColors( subControl, QskRgbValue::White );
@ -623,8 +622,8 @@ void QskMaterialSkin::initSubWindowHints()
// panel // panel
setMargins( Q::Panel | Padding, 10 ); setMargins( Q::Panel | Padding, 10 );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
setBoxBorder( Q::Panel, 2 ); setBoxBorderMetrics( Q::Panel, 2 );
setGradient( Q::Panel, pal.baseColor ); setGradient( Q::Panel, pal.baseColor );
QskBoxBorderColors colors; QskBoxBorderColors colors;

View File

@ -127,8 +127,8 @@ void QskSquiekSkin::setSeparator(
gradient.setOrientation( QskGradient::Horizontal ); gradient.setOrientation( QskGradient::Horizontal );
setGradient( aspect, gradient ); setGradient( aspect, gradient );
setBoxRadius( aspect, 0 ); setBoxShape( aspect, 0 );
setBoxBorder( aspect, 0 ); setBoxBorderMetrics( aspect, 0 );
} }
void QskSquiekSkin::setButton( void QskSquiekSkin::setButton(
@ -187,8 +187,8 @@ void QskSquiekSkin::setButton(
setBoxBorderColors( aspect, borderColors ); setBoxBorderColors( aspect, borderColors );
setGradient( aspect, gradient ); setGradient( aspect, gradient );
setBoxRadius( aspect, 4 ); setBoxShape( aspect, 4 );
setBoxBorder( aspect, border ); setBoxBorderMetrics( aspect, border );
} }
void QskSquiekSkin::setPanel( QskAspect::Aspect aspect, PanelStyle style ) void QskSquiekSkin::setPanel( QskAspect::Aspect aspect, PanelStyle style )
@ -220,7 +220,7 @@ void QskSquiekSkin::setTab( QskAspect::Aspect aspect,
shape.setRadius( Qt::BottomRightCorner, 0 ); shape.setRadius( Qt::BottomRightCorner, 0 );
} }
setBoxBorder( aspect, border ); setBoxBorderMetrics( aspect, border );
setBoxShape( aspect, shape ); setBoxShape( aspect, shape );
} }
@ -293,8 +293,8 @@ void QskSquiekSkin::initFocusIndicatorHints()
const ColorPalette& pal = m_data->palette; const ColorPalette& pal = m_data->palette;
setMargins( Q::Panel | Padding, 5 ); setMargins( Q::Panel | Padding, 5 );
setBoxBorder( Q::Panel, 2 ); setBoxBorderMetrics( Q::Panel, 2 );
setBoxRadius( Q::Panel, 4 ); setBoxShape( Q::Panel, 4 );
setGradient( Q::Panel, Qt::transparent ); setGradient( Q::Panel, Qt::transparent );
setBoxBorderColors( Q::Panel, pal.highlighted ); setBoxBorderColors( Q::Panel, pal.highlighted );
} }
@ -321,8 +321,8 @@ void QskSquiekSkin::initPageIndicatorHints()
{ {
setMetric( subControl | Size, qskDpiScaled( 12 ) ); setMetric( subControl | Size, qskDpiScaled( 12 ) );
setBoxBorder( subControl, QskBoxBorderMetrics( 50, Qt::RelativeSize ) ); setBoxBorderMetrics( subControl, QskBoxBorderMetrics( 50, Qt::RelativeSize ) );
setBoxRadius( subControl, 100, Qt::RelativeSize ); setBoxShape( subControl, 100, Qt::RelativeSize );
setGradient( subControl, setGradient( subControl,
( subControl == Q::Bullet ) ? pal.darker150 : pal.lighter150 ); ( subControl == Q::Bullet ) ? pal.darker150 : pal.lighter150 );
@ -330,8 +330,8 @@ void QskSquiekSkin::initPageIndicatorHints()
} }
// no visible background panel // no visible background panel
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setBoxRadius( Q::Panel, 2 ); setBoxShape( Q::Panel, 2 );
setGradient( Q::Panel, QskGradient() ); setGradient( Q::Panel, QskGradient() );
setMetric( Q::Panel | Spacing, 3 ); setMetric( Q::Panel | Spacing, 3 );
@ -416,8 +416,8 @@ void QskSquiekSkin::initDialogButtonBoxHints()
setBoxBorderColors( Q::Panel, pal.theme ); setBoxBorderColors( Q::Panel, pal.theme );
setGradient( Q::Panel, pal.lighter135 ); setGradient( Q::Panel, pal.lighter135 );
setBoxBorder( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 );
setBoxRadius( Q::Panel, 2 ); setBoxShape( Q::Panel, 2 );
} }
void QskSquiekSkin::initTabButtonHints() void QskSquiekSkin::initTabButtonHints()
@ -485,8 +485,8 @@ void QskSquiekSkin::initSliderHints()
const auto aspect = Q::Panel | placement; const auto aspect = Q::Panel | placement;
setMetric( aspect | Size, dim ); setMetric( aspect | Size, dim );
setBoxBorder( aspect, 0 ); setBoxBorderMetrics( aspect, 0 );
setBoxRadius( aspect, 0 ); setBoxShape( aspect, 0 );
setGradient( aspect, QskGradient() ); setGradient( aspect, QskGradient() );
} }
@ -504,8 +504,8 @@ void QskSquiekSkin::initSliderHints()
setMetric( aspect | Size, 0.3 * dim ); setMetric( aspect | Size, 0.3 * dim );
setMargins( aspect | Padding, 0 ); setMargins( aspect | Padding, 0 );
setBoxBorder( aspect, 0 ); setBoxBorderMetrics( aspect, 0 );
setBoxRadius( aspect, 0.1 * dim ); setBoxShape( aspect, 0.1 * dim );
if ( subControl == Q::Groove ) if ( subControl == Q::Groove )
setGradient( aspect, pal.darker200 ); setGradient( aspect, pal.darker200 );
@ -521,7 +521,7 @@ void QskSquiekSkin::initSliderHints()
Aspect aspect = Q::Handle | placement; Aspect aspect = Q::Handle | placement;
setButton( aspect, Raised, 1 ); setButton( aspect, Raised, 1 );
setBoxRadius( aspect, 20.0, Qt::RelativeSize ); setBoxShape( aspect, 20.0, Qt::RelativeSize );
setButton( aspect | Q::Pressed, Sunken, 1 ); setButton( aspect | Q::Pressed, Sunken, 1 );
setMetric( Q::Handle | Size, 0.75 * dim ); setMetric( Q::Handle | Size, 0.75 * dim );
} }
@ -593,8 +593,8 @@ void QskSquiekSkin::initScrollViewHints()
setMetric( Q::Panel | Spacing, 4 ); setMetric( Q::Panel | Spacing, 4 );
setBoxBorder( Q::Viewport, 2 ); setBoxBorderMetrics( Q::Viewport, 2 );
setBoxRadius( Q::Viewport, 8 ); setBoxShape( Q::Viewport, 8 );
QColor fillColor( Qt::white ); QColor fillColor( Qt::white );
@ -663,8 +663,8 @@ void QskSquiekSkin::initSubWindowHints()
// Panel // Panel
setMargins( Q::Panel | Padding, 10 ); setMargins( Q::Panel | Padding, 10 );
setBoxBorder( Q::Panel, 2 ); setBoxBorderMetrics( Q::Panel, 2 );
setBoxRadius( Q::Panel, 0 ); setBoxShape( Q::Panel, 0 );
QskBoxBorderColors borderColors; QskBoxBorderColors borderColors;
borderColors.setColorsAt( Qt::TopEdge | Qt::LeftEdge, pal.lighter125 ); borderColors.setColorsAt( Qt::TopEdge | Qt::LeftEdge, pal.lighter125 );