user border colors

This commit is contained in:
Peter Hartmann 2022-01-11 11:30:17 +01:00
parent 4da45d5606
commit fcc9031a98
2 changed files with 22 additions and 18 deletions

View File

@ -422,7 +422,6 @@ static void addColoredBorderRectangles6( QskLinearBox* parent )
QskGradient gradient3( Qt::green );
QskGradient gradient4( Qt::Vertical, Qt::red, Qt::blue );
box->setBorderGradients( gradient4, gradient3, gradient3, gradient3 );
qDebug() << "@@@ hint:" << gradient4.stops() << box->boxBorderColorsHint( QskBox::Panel ).gradientAt(Qt::LeftEdge).stops();
box->setShape( 30, Qt::AbsoluteSize );
}

View File

@ -513,10 +513,11 @@ namespace
class BorderMapGradient
{
public:
inline BorderMapGradient( int stepCount, QRgb rgb1, QRgb rgb2 )
inline BorderMapGradient( int stepCount, QRgb rgb1, QRgb rgb2, const QskGradient& gradient = {} )
: m_stepCount( stepCount )
, m_color1( rgb1 )
, m_color2( rgb2 )
, m_gradient( gradient )
{
}
@ -528,6 +529,7 @@ namespace
private:
const qreal m_stepCount;
const Color m_color1, m_color2;
const QskGradient m_gradient;
};
template< class Line, class BorderValues >
@ -608,21 +610,21 @@ namespace
{
constexpr auto corner = TopLeft;
qDebug() << "tl corners for" << j << "at coordinates"
<< c[ corner ].centerX - v.dx1( corner )
<< c[ corner ].centerY - v.dy1( corner )
<< c[ corner ].centerX - v.dx2( corner )
<< c[ corner ].centerY - v.dy2( corner )
<< "num corner lines:" << numCornerLines;
;
// qDebug() << "tl corners for" << j << "at coordinates"
// << c[ corner ].centerX - v.dx1( corner )
// << c[ corner ].centerY - v.dy1( corner )
// << c[ corner ].centerX - v.dx2( corner )
// << c[ corner ].centerY - v.dy2( corner )
// << "num corner lines:" << numCornerLines;
// ;
linesTL[ j ].setLine(
c[ corner ].centerX - v.dx1( corner ),
c[ corner ].centerY - v.dy1( corner ),
c[ corner ].centerX - v.dx2( corner ),
c[ corner ].centerY - v.dy2( corner ),
// borderMapTL.colorAt( j ) );
Color( 255, 0, 0, 255 ) );
borderMapTL.colorAt( j ) );
// Color( 255, 0, 0, 255 ) );
}
// ### maybe here check whether gradient isn't monochrome and add lines?
@ -646,8 +648,8 @@ namespace
c[ corner ].centerY + v.dy1( corner ),
c[ corner ].centerX - v.dx2( corner ),
c[ corner ].centerY + v.dy2( corner ),
// borderMapBL.colorAt( k ) );
Color( 255, 255, 0, 255 ) );
borderMapBL.colorAt( k ) );
// Color( 255, 255, 0, 255 ) );
}
{
@ -878,17 +880,20 @@ static inline void qskRenderBorder( const QskBoxRenderer::Metrics& metrics,
if ( colors.isMonochrome() )
{
qskRenderBorderLines( metrics, orientation, line, BorderMapSolid( c.gradient( Qsk::Left ).startColor().rgb() ) ); // ###
qskRenderBorderLines( metrics, orientation, line, BorderMapSolid( c.gradient( Qsk::Left ).startColor().rgb() ) );
}
else
{
const int stepCount = metrics.corner[ 0 ].stepCount;
auto left = c.gradient( Qsk::Left ), top = c.gradient( Qsk::Top ),
right = c.gradient( Qsk::Right ), bottom = c.gradient( Qsk::Bottom );
qskRenderBorderLines( metrics, orientation, line,
BorderMapGradient( stepCount, c.gradient( Qsk::Top ).startColor().rgb(), c.gradient( Qsk::Left ).endColor().rgb() ),
BorderMapGradient( stepCount, c.gradient( Qsk::Right ).startColor().rgb(), c.gradient( Qsk::Top ).endColor().rgb() ),
BorderMapGradient( stepCount, c.gradient( Qsk::Left ).startColor().rgb(), c.gradient( Qsk::Bottom ).endColor().rgb() ),
BorderMapGradient( stepCount, c.gradient( Qsk::Bottom ).startColor().rgb(), c.gradient( Qsk::Right ).endColor().rgb() ) );
BorderMapGradient( stepCount, top.startColor().rgb(), left.endColor().rgb(), left ),
BorderMapGradient( stepCount, right.startColor().rgb(), top.endColor().rgb(), top ),
BorderMapGradient( stepCount, left.startColor().rgb(), bottom.endColor().rgb(), bottom ),
BorderMapGradient( stepCount, bottom.startColor().rgb(), right.endColor().rgb(), right ) );
}
}