close to something working somehow
This commit is contained in:
parent
fcc9031a98
commit
355a3da77d
|
@ -421,7 +421,7 @@ static void addColoredBorderRectangles6( QskLinearBox* parent )
|
||||||
{ 1.0, Qt::black } } );
|
{ 1.0, Qt::black } } );
|
||||||
QskGradient gradient3( Qt::green );
|
QskGradient gradient3( Qt::green );
|
||||||
QskGradient gradient4( Qt::Vertical, Qt::red, Qt::blue );
|
QskGradient gradient4( Qt::Vertical, Qt::red, Qt::blue );
|
||||||
box->setBorderGradients( gradient4, gradient3, gradient3, gradient3 );
|
box->setBorderGradients( gradient1, gradient3, gradient3, gradient3 );
|
||||||
box->setShape( 30, Qt::AbsoluteSize );
|
box->setShape( 30, Qt::AbsoluteSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,9 +100,9 @@ namespace
|
||||||
bool m_inverted;
|
bool m_inverted;
|
||||||
};
|
};
|
||||||
|
|
||||||
int colorsInGradient( const QskGradient& gradient )
|
int additionalGradientStops( const QskGradient& gradient )
|
||||||
{
|
{
|
||||||
return gradient.isMonochrome() ? 1 : gradient.stops().count();
|
return qMax( 0, gradient.stops().count() - 2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,6 +495,7 @@ namespace
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static inline constexpr Color colorAt( int ) { return Color(); }
|
static inline constexpr Color colorAt( int ) { return Color(); }
|
||||||
|
inline QskGradient gradient() const { return QskGradient(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class BorderMapSolid
|
class BorderMapSolid
|
||||||
|
@ -506,6 +507,7 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Color colorAt( int ) const { return m_color; }
|
inline Color colorAt( int ) const { return m_color; }
|
||||||
|
inline QskGradient gradient() const { return QskGradient(); }
|
||||||
|
|
||||||
const Color m_color;
|
const Color m_color;
|
||||||
};
|
};
|
||||||
|
@ -526,6 +528,11 @@ namespace
|
||||||
return m_color1.interpolatedTo( m_color2, step / m_stepCount );
|
return m_color1.interpolatedTo( m_color2, step / m_stepCount );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline QskGradient gradient() const
|
||||||
|
{
|
||||||
|
return m_gradient;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const qreal m_stepCount;
|
const qreal m_stepCount;
|
||||||
const Color m_color1, m_color2;
|
const Color m_color1, m_color2;
|
||||||
|
@ -563,10 +570,15 @@ namespace
|
||||||
{
|
{
|
||||||
if ( borderLines )
|
if ( borderLines )
|
||||||
{
|
{
|
||||||
|
// linesBR = borderLines + additionalGradientStops( borderMapBR.gradient() );
|
||||||
|
// linesTR = linesBR + numCornerLines + additionalGradientStops( borderMapTR.gradient() );
|
||||||
|
// linesTL = linesTR + numCornerLines + additionalGradientStops( borderMapTL.gradient() );
|
||||||
|
// linesBL = linesTL + numCornerLines + additionalGradientStops( borderMapBL.gradient() );
|
||||||
|
|
||||||
linesBR = borderLines;
|
linesBR = borderLines;
|
||||||
linesTR = linesBR + numCornerLines;
|
linesTR = linesBR + numCornerLines;
|
||||||
linesTL = linesTR + numCornerLines;
|
linesTL = linesTR + numCornerLines;
|
||||||
linesBL = linesTL + numCornerLines;
|
linesBL = linesTL + numCornerLines + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( fillLines )
|
if ( fillLines )
|
||||||
|
@ -579,10 +591,16 @@ namespace
|
||||||
{
|
{
|
||||||
if ( borderLines )
|
if ( borderLines )
|
||||||
{
|
{
|
||||||
linesTR = borderLines + 1;
|
qDebug() << "additional horizontal border lines:"
|
||||||
linesTL = linesTR + numCornerLines;
|
<< additionalGradientStops( borderMapTR.gradient() )
|
||||||
linesBL = linesTL + numCornerLines;
|
<< additionalGradientStops( borderMapTL.gradient() )
|
||||||
linesBR = linesBL + numCornerLines;
|
<< additionalGradientStops( borderMapBL.gradient() )
|
||||||
|
<< additionalGradientStops( borderMapBR.gradient() );
|
||||||
|
|
||||||
|
linesTR = borderLines + 1 + additionalGradientStops( borderMapTR.gradient() );
|
||||||
|
linesTL = linesTR + numCornerLines + additionalGradientStops( borderMapTL.gradient() );
|
||||||
|
linesBL = linesTL + numCornerLines + additionalGradientStops( borderMapBL.gradient() );
|
||||||
|
linesBR = linesBL + numCornerLines + additionalGradientStops( borderMapBR.gradient() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( fillLines )
|
if ( fillLines )
|
||||||
|
@ -610,14 +628,6 @@ namespace
|
||||||
{
|
{
|
||||||
constexpr auto corner = TopLeft;
|
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;
|
|
||||||
// ;
|
|
||||||
|
|
||||||
linesTL[ j ].setLine(
|
linesTL[ j ].setLine(
|
||||||
c[ corner ].centerX - v.dx1( corner ),
|
c[ corner ].centerX - v.dx1( corner ),
|
||||||
c[ corner ].centerY - v.dy1( corner ),
|
c[ corner ].centerY - v.dy1( corner ),
|
||||||
|
@ -625,10 +635,57 @@ namespace
|
||||||
c[ corner ].centerY - v.dy2( corner ),
|
c[ corner ].centerY - v.dy2( corner ),
|
||||||
borderMapTL.colorAt( j ) );
|
borderMapTL.colorAt( j ) );
|
||||||
// Color( 255, 0, 0, 255 ) );
|
// Color( 255, 0, 0, 255 ) );
|
||||||
|
|
||||||
|
// if(j==0)
|
||||||
|
// {
|
||||||
|
// qDebug() << "TL first 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 );
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### maybe here check whether gradient isn't monochrome and add lines?
|
// ### maybe here check whether gradient isn't monochrome and add lines?
|
||||||
|
|
||||||
|
if( j == numCornerLines - 1 )
|
||||||
|
{
|
||||||
|
int additionalStopCount = additionalGradientStops( borderMapTL.gradient() );
|
||||||
|
|
||||||
|
if( additionalStopCount > 0 )
|
||||||
|
{
|
||||||
|
auto stops = borderMapTL.gradient().stops();
|
||||||
|
|
||||||
|
qDebug() << "here add" << additionalStopCount << "stops" << stops;
|
||||||
|
|
||||||
|
float x1TL = c[ TopLeft ].centerX - v.dx1( TopLeft ),
|
||||||
|
y1TL = c[ TopLeft ].centerY - v.dy1( TopLeft ),
|
||||||
|
x2TL = c[ TopLeft ].centerX - v.dx2( TopLeft ),
|
||||||
|
y2TL = c[ TopLeft ].centerY - v.dy2( TopLeft ),
|
||||||
|
|
||||||
|
x1BL = c[ BottomLeft ].centerX - v.dx1( BottomLeft ),
|
||||||
|
y1BL = c[ BottomLeft ].centerY + v.dy1( BottomLeft ),
|
||||||
|
x2BL = c[ BottomLeft ].centerX - v.dx2( BottomLeft ),
|
||||||
|
y2BL = c[ BottomLeft ].centerY + v.dy2( BottomLeft );
|
||||||
|
|
||||||
|
qDebug() << "TL coordinates:" << x1TL << y1TL << x2TL << y2TL;
|
||||||
|
qDebug() << "BL coordinates:" << x1BL << y1BL << x2BL << y2BL;
|
||||||
|
|
||||||
|
for( int l = 1; l <= additionalStopCount; ++l )
|
||||||
|
{
|
||||||
|
float xStart = x1TL + stops.at( l ).position() * ( x1BL - x1TL ),
|
||||||
|
yStart = y1TL + stops.at( l ).position() * ( y1BL - y1TL ),
|
||||||
|
xEnd = x2TL + stops.at( l ).position() * ( x2BL - x2TL ),
|
||||||
|
yEnd = y2TL + stops.at( l ).position() * ( y2BL - y2TL );
|
||||||
|
|
||||||
|
qDebug() << "here set line for stop" << stops.at( l )
|
||||||
|
<< "and line number" << j + l;
|
||||||
|
|
||||||
|
linesTL[ j + l ].setLine( xStart, yStart, xEnd, yEnd, stops.at( l ).color() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
constexpr auto corner = TopRight;
|
constexpr auto corner = TopRight;
|
||||||
|
|
||||||
|
@ -650,6 +707,23 @@ namespace
|
||||||
c[ corner ].centerY + v.dy2( corner ),
|
c[ corner ].centerY + v.dy2( corner ),
|
||||||
borderMapBL.colorAt( k ) );
|
borderMapBL.colorAt( k ) );
|
||||||
// Color( 255, 255, 0, 255 ) );
|
// Color( 255, 255, 0, 255 ) );
|
||||||
|
// if(j==0)
|
||||||
|
// {
|
||||||
|
// qDebug() << "BL first 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 );
|
||||||
|
// }
|
||||||
|
// if( j == numCornerLines - 1 )
|
||||||
|
// {
|
||||||
|
// qDebug() << "BL last 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 );
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -1236,13 +1310,11 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
||||||
{
|
{
|
||||||
borderLineCount = 4 * ( stepCount + 1 ) + 1;
|
borderLineCount = 4 * ( stepCount + 1 ) + 1;
|
||||||
|
|
||||||
const int additionalLines =
|
const int additionalLines = qMax( 0, -1
|
||||||
colorsInGradient( borderColors.gradient( Qsk::Left ) ) - 1
|
+ additionalGradientStops( borderColors.gradient( Qsk::Left ) )
|
||||||
+ colorsInGradient( borderColors.gradient( Qsk::Top ) ) - 1
|
+ additionalGradientStops( borderColors.gradient( Qsk::Top ) )
|
||||||
+ colorsInGradient( borderColors.gradient( Qsk::Right ) ) - 1
|
+ additionalGradientStops( borderColors.gradient( Qsk::Right ) )
|
||||||
+ colorsInGradient( borderColors.gradient( Qsk::Bottom ) ) - 1;
|
+ additionalGradientStops( borderColors.gradient( Qsk::Bottom ) ) );
|
||||||
|
|
||||||
qDebug() << "additional lines:" << additionalLines << borderColors.gradientAt(Qt::LeftEdge).stops();
|
|
||||||
|
|
||||||
borderLineCount += additionalLines;
|
borderLineCount += additionalLines;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue