QskGradientDirection introduced - no more classes derived from
QskGradient
This commit is contained in:
parent
a658a2a4e4
commit
b140d1b30a
|
@ -10,9 +10,8 @@
|
|||
#include <QskBoxShapeMetrics.h>
|
||||
#include <QskHctColor.h>
|
||||
#include <QskRgbValue.h>
|
||||
#include <QskLinearGradient.h>
|
||||
|
||||
static inline void setStartStop( Box::FillType type, QskLinearGradient& gradient )
|
||||
static inline void setStartStop( Box::FillType type, QskGradient& gradient )
|
||||
{
|
||||
qreal x1 = 0.0, y1 = 0.0, x2 = 0.0, y2 = 0.0;
|
||||
|
||||
|
@ -22,8 +21,7 @@ static inline void setStartStop( Box::FillType type, QskLinearGradient& gradient
|
|||
if ( type != Box::Vertical )
|
||||
x2 = 1.0;
|
||||
|
||||
gradient.setStart( x1, y1 );
|
||||
gradient.setStop( x2, y2 );
|
||||
gradient.setLinearDirection( x1, y1, x2, y2 );
|
||||
}
|
||||
|
||||
Box::Box( QQuickItem* parentItem )
|
||||
|
@ -46,7 +44,7 @@ void Box::setWebGradient( FillType type, QGradient::Preset preset, bool inverted
|
|||
return;
|
||||
}
|
||||
|
||||
QskLinearGradient gradient( preset );
|
||||
QskGradient gradient( preset );
|
||||
|
||||
if ( type == Solid )
|
||||
{
|
||||
|
@ -72,7 +70,7 @@ void Box::setTonalGradient( FillType type, const QRgb base, bool inverted )
|
|||
return;
|
||||
}
|
||||
|
||||
QskLinearGradient gradient;
|
||||
QskGradient gradient;
|
||||
|
||||
const QskHctColor htcColor( base );
|
||||
if ( type == Solid )
|
||||
|
@ -101,7 +99,7 @@ void Box::setTonalPalette( FillType type, const QRgb base )
|
|||
return;
|
||||
}
|
||||
|
||||
QskLinearGradient gradient;
|
||||
QskGradient gradient;
|
||||
setStartStop( type, gradient );
|
||||
|
||||
{
|
||||
|
@ -211,7 +209,7 @@ void Box::setGradient( Qt::GlobalColor color )
|
|||
|
||||
void Box::setGradient( const QColor& color )
|
||||
{
|
||||
setPanelGradient( QskLinearGradient( color ) );
|
||||
setPanelGradient( QskGradient( color ) );
|
||||
}
|
||||
|
||||
void Box::setGradient( FillType fillType,
|
||||
|
@ -237,7 +235,7 @@ void Box::setGradient( FillType fillType,
|
|||
|
||||
void Box::setGradient( FillType fillType, const QskGradientStops& stops )
|
||||
{
|
||||
QskLinearGradient gradient( stops );
|
||||
QskGradient gradient( stops );
|
||||
setStartStop( fillType, gradient );
|
||||
|
||||
setPanelGradient( gradient );
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include <SkinnyShortcut.h>
|
||||
|
||||
#include <QskAspect.h>
|
||||
#include <QskLinearGradient.h>
|
||||
#include <QskGraphicLabel.h>
|
||||
#include <QskObjectCounter.h>
|
||||
#include <QskShortcutMap.h>
|
||||
|
@ -58,9 +57,11 @@ int main( int argc, char* argv[] )
|
|||
|
||||
SkinnyShortcut::enable( SkinnyShortcut::AllShortcuts );
|
||||
|
||||
QskGradient gradient( QskRgb::DarkSlateGray, QskRgb::LightSlateGray );
|
||||
gradient.setLinearDirection( 0.0, 0.0, 1.0, 1.0 );
|
||||
|
||||
QskSubWindowArea* area = new QskSubWindowArea();
|
||||
area->setGradientHint( QskSubWindowArea::Panel,
|
||||
QskLinearGradient( 0.0, 0.0, 1.0, 1.0, QskRgb::DarkSlateGray, QskRgb::LightSlateGray ) );
|
||||
area->setGradientHint( QskSubWindowArea::Panel, gradient );
|
||||
|
||||
QRectF windowRect( 0, 0, 250, 250 );
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include <QskBoxShapeMetrics.h>
|
||||
#include <QskBoxBorderMetrics.h>
|
||||
#include <QskBoxBorderColors.h>
|
||||
#include <QskLinearGradient.h>
|
||||
#include <QskFunctions.h>
|
||||
#include <QskShadowMetrics.h>
|
||||
#include <QskSkinHintTableEditor.h>
|
||||
|
@ -142,8 +141,11 @@ void Skin::initHints( const Palette& palette )
|
|||
{
|
||||
ed.setBoxShape( subControl, 6 );
|
||||
|
||||
QskLinearGradient normal( Qt::Vertical, 0xff6776ff, 0xff6100ff );
|
||||
QskLinearGradient bright( Qt::Vertical, 0xffff7d34, 0xffff3122 );
|
||||
QskGradient normal( 0xff6776ff, 0xff6100ff );
|
||||
normal.setLinearDirection( Qt::Vertical );
|
||||
|
||||
QskGradient bright( 0xffff7d34, 0xffff3122 );
|
||||
bright.setLinearDirection( Qt::Vertical );
|
||||
|
||||
if ( subControl == RoundedIcon::PalePanel )
|
||||
{
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include <QskSkin.h>
|
||||
#include <QskPlatform.h>
|
||||
#include <QskRgbValue.h>
|
||||
#include <QskLinearGradient.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
|
@ -57,8 +56,10 @@ namespace
|
|||
ed.setBoxBorderMetrics( Q::Knob, 2 );
|
||||
ed.setStrutSize( Q::Knob, 30, 30 );
|
||||
ed.setBoxShape( Q::Knob, 100, Qt::RelativeSize );
|
||||
ed.setGradient( Q::Knob,
|
||||
QskLinearGradient( 0.0, 0.0, 1.0, 1.0, rgb2, rgb1 ) );
|
||||
|
||||
QskGradient gradient( rgb2, rgb1 );
|
||||
gradient.setLinearDirection( 0.0, 0.0, 1.0, 1.0 );
|
||||
ed.setGradient( Q::Knob, gradient );
|
||||
|
||||
ed.setMetric( Q::Needle | QskAspect::Size, 2 );
|
||||
ed.setMetric( Q::Needle | QskAspect::Margin, 10 );
|
||||
|
|
|
@ -10,9 +10,7 @@
|
|||
#include <QskRgbValue.h>
|
||||
#include <QskLinearBox.h>
|
||||
#include <QskTabView.h>
|
||||
#include <QskLinearGradient.h>
|
||||
#include <QskRadialGradient.h>
|
||||
#include <QskConicGradient.h>
|
||||
#include <QskGradientDirection.h>
|
||||
|
||||
#include <SkinnyShortcut.h>
|
||||
#include <SkinnyShapeFactory.h>
|
||||
|
@ -65,7 +63,8 @@ namespace
|
|||
shapeItem->setPath( path( SkinnyShapeFactory::Hexagon ) );
|
||||
shapeItem->setPen( pen( QColorConstants::Svg::indigo ) );
|
||||
|
||||
QskLinearGradient gradient( 0.0, 0.0, 0.2, 0.5, QGradient::PhoenixStart );
|
||||
QskGradient gradient( QGradient::PhoenixStart );
|
||||
gradient.setLinearDirection( 0.0, 0.0, 0.2, 0.5 );
|
||||
gradient.setSpread( QGradient::ReflectSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -78,7 +77,8 @@ namespace
|
|||
const QVector< QskGradientStop > stops =
|
||||
{ { 0.5, QskRgb::RoyalBlue }, { 0.5, QskRgb::LemonChiffon } };
|
||||
|
||||
QskLinearGradient gradient( 0.0, 0.0, 0.05, 0.1, stops );
|
||||
QskGradient gradient( stops );
|
||||
gradient.setLinearDirection( 0.0, 0.0, 0.05, 0.1 );
|
||||
gradient.setSpread( QGradient::RepeatSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -90,7 +90,8 @@ namespace
|
|||
const QVector< QskGradientStop > stops =
|
||||
{ { 0.5, QskRgb::MediumVioletRed }, { 0.5, QskRgb::Navy } };
|
||||
|
||||
QskLinearGradient gradient( 0.5, 0.0, 0.5, 0.5, stops );
|
||||
QskGradient gradient( stops );
|
||||
gradient.setLinearDirection( 0.5, 0.0, 0.5, 0.5 );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
}
|
||||
|
@ -109,8 +110,8 @@ namespace
|
|||
shapeItem->setPath( path( SkinnyShapeFactory::Rectangle ) );
|
||||
shapeItem->setPen( pen( QColorConstants::Svg::indigo ) );
|
||||
|
||||
QskRadialGradient gradient;
|
||||
gradient.setStops( QskRgb::LightYellow, QskRgb::MidnightBlue );
|
||||
QskGradient gradient( QskRgb::LightYellow, QskRgb::MidnightBlue );
|
||||
gradient.setRadialDirection( QskRadialDirection() );
|
||||
gradient.setSpread( QGradient::PadSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -134,7 +135,8 @@ namespace
|
|||
stops += QskGradientStop( 0.8, Qt::darkCyan );
|
||||
stops += QskGradientStop( 1.0, Qt::darkCyan );
|
||||
|
||||
QskRadialGradient gradient( stops );
|
||||
QskGradient gradient( stops );
|
||||
gradient.setRadialDirection();
|
||||
gradient.setSpread( QGradient::PadSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -145,7 +147,8 @@ namespace
|
|||
shapeItem->setPath( path( SkinnyShapeFactory::Rectangle ) );
|
||||
shapeItem->setPen( pen( QskRgb::Indigo ) );
|
||||
|
||||
QskRadialGradient gradient( 0.5, 0.7, 0.25, QGradient::LilyMeadow );
|
||||
QskGradient gradient( QGradient::LilyMeadow );
|
||||
gradient.setRadialDirection( QskRadialDirection( 0.5, 0.7, 0.25 ) );
|
||||
gradient.setSpread( QGradient::RepeatSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -156,7 +159,8 @@ namespace
|
|||
shapeItem->setPath( path( SkinnyShapeFactory::Rectangle ) );
|
||||
shapeItem->setPen( pen( QskRgb::Indigo ) );
|
||||
|
||||
QskRadialGradient gradient( 0.6, 0.4, 0.1, Qt::red, Qt::blue );
|
||||
QskGradient gradient( Qt::red, Qt::blue );
|
||||
gradient.setRadialDirection( 0.6, 0.4, 0.1 );
|
||||
gradient.setSpread( QGradient::ReflectSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
@ -175,9 +179,9 @@ namespace
|
|||
|
||||
shapeItem->setPath( path( SkinnyShapeFactory::Ellipse ) );
|
||||
|
||||
QskConicGradient gradient( 0.5, 0.5, 30.0, 60.0 );
|
||||
QskGradient gradient( QGradient::JuicyPeach );
|
||||
gradient.setConicDirection( 0.5, 0.5, 30.0, 60.0 );
|
||||
gradient.setSpread( QGradient::ReflectSpread );
|
||||
gradient.setStops( QGradient::JuicyPeach );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
}
|
||||
|
@ -186,9 +190,9 @@ namespace
|
|||
|
||||
shapeItem->setPath( path( SkinnyShapeFactory::TriangleUp ) );
|
||||
|
||||
QskConicGradient gradient( 0.5, 0.5, 30.0, 60.0 );
|
||||
QskGradient gradient( QGradient::WinterNeva );
|
||||
gradient.setConicDirection( 0.5, 0.5, 30.0, 60.0 );
|
||||
gradient.setSpread( QGradient::RepeatSpread );
|
||||
gradient.setStops( QGradient::WinterNeva );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
}
|
||||
|
@ -197,8 +201,8 @@ namespace
|
|||
|
||||
shapeItem->setPath( path( SkinnyShapeFactory::Arc ) );
|
||||
|
||||
QskConicGradient gradient( 0.5, 0.5, 300.0, -240.0 );
|
||||
gradient.setStops( QGradient::SpikyNaga );
|
||||
QskGradient gradient( QGradient::SpikyNaga );
|
||||
gradient.setConicDirection( 0.5, 0.5, 300.0, -240.0 );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
}
|
||||
|
@ -207,8 +211,8 @@ namespace
|
|||
|
||||
shapeItem->setPath( path( SkinnyShapeFactory::Diamond ) );
|
||||
|
||||
QskConicGradient gradient( 0.5, 0.5, 45.0, 180.0 );
|
||||
gradient.setStops( QGradient::FabledSunset );
|
||||
QskGradient gradient( QGradient::FabledSunset );
|
||||
gradient.setConicDirection( 0.5, 0.5, 45.0, 180.0 );
|
||||
gradient.setSpread( QGradient::ReflectSpread );
|
||||
|
||||
shapeItem->setGradient( gradient );
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#include <QskBoxBorderMetrics.h>
|
||||
#include <QskBoxShapeMetrics.h>
|
||||
#include <QskPlatform.h>
|
||||
#include <QskLinearGradient.h>
|
||||
#include <QskMargins.h>
|
||||
#include <QskNamespace.h>
|
||||
#include <QskRgbValue.h>
|
||||
|
@ -188,7 +187,8 @@ void Editor::setButton( QskAspect aspect, PanelStyle style, qreal border )
|
|||
#endif
|
||||
QskBoxBorderColors borderColors;
|
||||
|
||||
QskLinearGradient gradient( Qt::Vertical );
|
||||
QskGradient gradient;
|
||||
gradient.setLinearDirection( Qt::Vertical );
|
||||
|
||||
switch ( style )
|
||||
{
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#include "QskConicGradient.h"
|
||||
|
||||
QskConicGradient::QskConicGradient( qreal cx, qreal cy, qreal startAngle,
|
||||
const QColor& color1, const QColor& color2 )
|
||||
: QskConicGradient( cx, cy, startAngle )
|
||||
{
|
||||
setStops( color1, color2 );
|
||||
}
|
||||
|
||||
QskConicGradient::QskConicGradient( qreal cx, qreal cy,
|
||||
qreal startAngle, QGradient::Preset preset )
|
||||
: QskConicGradient( cx, cy, startAngle )
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskConicGradient::QskConicGradient( qreal cx, qreal cy,
|
||||
qreal startAngle, const QVector< QskGradientStop >& stops )
|
||||
: QskConicGradient( cx, cy, startAngle )
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
inline void QskConicGradient::setCenter( const QPointF& center ) noexcept
|
||||
{
|
||||
m_values[0] = center.x();
|
||||
m_values[1] = center.y();
|
||||
}
|
||||
|
||||
inline void QskConicGradient::setCenter( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_values[0] = x;
|
||||
m_values[1] = y;
|
||||
}
|
||||
|
||||
inline void QskConicGradient::setStartAngle( qreal degrees ) noexcept
|
||||
{
|
||||
m_values[2] = degrees;
|
||||
}
|
||||
|
||||
inline void QskConicGradient::setSpanAngle( qreal degrees ) noexcept
|
||||
{
|
||||
m_values[3] = qBound( -360.0, degrees, 360.0 );
|
||||
}
|
||||
|
||||
#include "moc_QskConicGradient.cpp"
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef QSK_CONIC_GRADIENT_H
|
||||
#define QSK_CONIC_GRADIENT_H
|
||||
|
||||
#include "QskGradient.h"
|
||||
|
||||
class QSK_EXPORT QskConicGradient : public QskGradient
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( QPointF center READ center WRITE setCenter )
|
||||
Q_PROPERTY( qreal startAngle READ startAngle WRITE setStartAngle )
|
||||
Q_PROPERTY( qreal spanAngle READ spanAngle WRITE setSpanAngle )
|
||||
|
||||
public:
|
||||
// counter-clockwise
|
||||
QskConicGradient() noexcept;
|
||||
|
||||
QskConicGradient( const QColor&, const QColor& );
|
||||
QskConicGradient( QGradient::Preset );
|
||||
QskConicGradient( const QVector< QskGradientStop >& );
|
||||
|
||||
QskConicGradient( const QPointF&,
|
||||
qreal startAngle = 0.0, qreal spanAngle = 360.0 ) noexcept;
|
||||
|
||||
QskConicGradient( qreal cx, qreal cy,
|
||||
qreal startAngle = 0.0, qreal spanAngle = 360.0 ) noexcept;
|
||||
|
||||
QskConicGradient( qreal cx, qreal cy, qreal startAngle,
|
||||
const QColor&, const QColor& );
|
||||
|
||||
QskConicGradient( const QPointF&, qreal startAngle,
|
||||
const QColor&, const QColor& );
|
||||
|
||||
QskConicGradient( qreal cx, qreal cy, qreal startAngle, QGradient::Preset );
|
||||
|
||||
QskConicGradient( const QPointF&, qreal startAngle, QGradient::Preset );
|
||||
|
||||
QskConicGradient( qreal cx, qreal cy, qreal startAngle,
|
||||
const QVector< QskGradientStop >& );
|
||||
|
||||
QskConicGradient( const QPointF&, qreal startAngle,
|
||||
const QVector< QskGradientStop >& );
|
||||
|
||||
QPointF center() const noexcept;
|
||||
void setCenter(const QPointF& center) noexcept;
|
||||
void setCenter(qreal x, qreal y) noexcept;
|
||||
|
||||
qreal startAngle() const noexcept;
|
||||
void setStartAngle( qreal ) noexcept;
|
||||
|
||||
qreal spanAngle() const noexcept;
|
||||
void setSpanAngle( qreal ) noexcept;
|
||||
};
|
||||
|
||||
inline QskConicGradient::QskConicGradient() noexcept
|
||||
: QskConicGradient( Conic, 0.5, 0.5, 0.0, 360.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskConicGradient::QskConicGradient(
|
||||
const QPointF& center, qreal startAngle, qreal spanAngle ) noexcept
|
||||
: QskConicGradient( center.x(), center.y(), startAngle, spanAngle )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskConicGradient::QskConicGradient(
|
||||
qreal cx, qreal cy, qreal startAngle, qreal spanAngle ) noexcept
|
||||
: QskGradient( Conic, cx, cy, startAngle, spanAngle )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskConicGradient::QskConicGradient( const QPointF& center,
|
||||
qreal startAngle, const QColor& color1, const QColor& color2 )
|
||||
: QskConicGradient( center.x(), center.y(), startAngle, color1, color2 )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskConicGradient::QskConicGradient( const QPointF& center,
|
||||
qreal startAngle, const QVector< QskGradientStop >& stops )
|
||||
: QskConicGradient( center.x(), center.y(), startAngle, stops )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskConicGradient::QskConicGradient( const QPointF& center,
|
||||
qreal startAngle, QGradient::Preset preset )
|
||||
: QskConicGradient( center.x(), center.y(), startAngle, preset )
|
||||
{
|
||||
}
|
||||
|
||||
inline QPointF QskConicGradient::center() const noexcept
|
||||
{
|
||||
return QPointF( m_values[0], m_values[1] );
|
||||
}
|
||||
|
||||
inline qreal QskConicGradient::startAngle() const noexcept
|
||||
{
|
||||
return m_values[2];
|
||||
}
|
||||
|
||||
inline qreal QskConicGradient::spanAngle() const noexcept
|
||||
{
|
||||
return m_values[3];
|
||||
}
|
||||
|
||||
#endif
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "QskGradient.h"
|
||||
#include "QskRgbValue.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qvariant.h>
|
||||
|
||||
|
@ -386,7 +387,104 @@ QskHashValue QskGradient::hash( QskHashValue seed ) const
|
|||
return hash;
|
||||
}
|
||||
|
||||
void QskGradient::setLinear( const QVector< qreal >& params )
|
||||
void QskGradient::setLinearDirection( Qt::Orientation orientation )
|
||||
{
|
||||
setLinearDirection( QskLinearDirection( orientation ) );
|
||||
}
|
||||
|
||||
void QskGradient::setLinearDirection( qreal x1, qreal y1, qreal x2, qreal y2 )
|
||||
{
|
||||
setLinearDirection( QskLinearDirection( x1, y1, x2, y2 ) );
|
||||
}
|
||||
|
||||
void QskGradient::setLinearDirection( const QskLinearDirection& direction )
|
||||
{
|
||||
m_type = Linear;
|
||||
|
||||
m_values[0] = direction.x1();
|
||||
m_values[1] = direction.y1();
|
||||
m_values[2] = direction.x2();
|
||||
m_values[3] = direction.y2();
|
||||
}
|
||||
|
||||
QskLinearDirection QskGradient::linearDirection() const
|
||||
{
|
||||
Q_ASSERT( m_type == Linear );
|
||||
|
||||
if ( m_type != Linear )
|
||||
return QskLinearDirection();
|
||||
|
||||
return QskLinearDirection( m_values[0], m_values[1], m_values[2], m_values[3] );
|
||||
}
|
||||
|
||||
void QskGradient::setRadialDirection()
|
||||
{
|
||||
setRadialDirection( QskRadialDirection() );
|
||||
}
|
||||
|
||||
void QskGradient::setRadialDirection( const qreal x, qreal y, qreal radius )
|
||||
{
|
||||
setRadialDirection( QskRadialDirection( x, y, radius ) );
|
||||
}
|
||||
|
||||
void QskGradient::setRadialDirection( const QskRadialDirection& direction )
|
||||
{
|
||||
m_type = Radial;
|
||||
|
||||
m_values[0] = direction.center().x();
|
||||
m_values[1] = direction.center().y();
|
||||
m_values[2] = direction.radius();
|
||||
m_values[3] = 0.0;
|
||||
}
|
||||
|
||||
QskRadialDirection QskGradient::radialDirection() const
|
||||
{
|
||||
Q_ASSERT( m_type == Radial );
|
||||
|
||||
if ( m_type != Radial )
|
||||
return QskRadialDirection();
|
||||
|
||||
return QskRadialDirection( m_values[0], m_values[1], m_values[2] );
|
||||
}
|
||||
|
||||
void QskGradient::setConicDirection( qreal x, qreal y )
|
||||
{
|
||||
setConicDirection( QskConicDirection( x, y ) );
|
||||
}
|
||||
|
||||
void QskGradient::setConicDirection( qreal x, qreal y,
|
||||
qreal startAngle, qreal spanAngle )
|
||||
{
|
||||
setConicDirection( QskConicDirection( x, y, startAngle, spanAngle ) );
|
||||
}
|
||||
|
||||
void QskGradient::setConicDirection( const QskConicDirection& direction )
|
||||
{
|
||||
m_type = Conic;
|
||||
|
||||
m_values[0] = direction.center().x();
|
||||
m_values[1] = direction.center().y();
|
||||
m_values[2] = direction.startAngle();
|
||||
m_values[3] = direction.spanAngle();
|
||||
}
|
||||
|
||||
QskConicDirection QskGradient::conicDirection() const
|
||||
{
|
||||
Q_ASSERT( m_type == Conic );
|
||||
|
||||
if ( m_type != Conic )
|
||||
return QskConicDirection();
|
||||
|
||||
return QskConicDirection( m_values[0], m_values[1], m_values[2], m_values[3] );
|
||||
}
|
||||
|
||||
void QskGradient::resetDirection()
|
||||
{
|
||||
m_type = Stops;
|
||||
m_values[0] = m_values[1] = m_values[2] = m_values[3] = 0.0;
|
||||
}
|
||||
|
||||
void QskGradient::setLinearAsList( const QVector< qreal >& params )
|
||||
{
|
||||
Q_ASSERT( params.size() == 4 );
|
||||
|
||||
|
@ -398,13 +496,13 @@ void QskGradient::setLinear( const QVector< qreal >& params )
|
|||
m_values[3] = params[3];
|
||||
}
|
||||
|
||||
QVector< qreal > QskGradient::linear() const
|
||||
QVector< qreal > QskGradient::linearAsList() const
|
||||
{
|
||||
Q_ASSERT( m_type == Linear );
|
||||
return { m_values[0], m_values[1], m_values[2], m_values[3] };
|
||||
}
|
||||
|
||||
void QskGradient::setRadial( const QVector< qreal >& params )
|
||||
void QskGradient::setRadialAsList( const QVector< qreal >& params )
|
||||
{
|
||||
Q_ASSERT( params.size() == 3 );
|
||||
|
||||
|
@ -416,17 +514,17 @@ void QskGradient::setRadial( const QVector< qreal >& params )
|
|||
m_values[3] = 0.0;
|
||||
}
|
||||
|
||||
QVector< qreal > QskGradient::radial() const
|
||||
QVector< qreal > QskGradient::radialAsList() const
|
||||
{
|
||||
Q_ASSERT( m_type == Radial );
|
||||
return { m_values[0], m_values[1], m_values[2] };
|
||||
}
|
||||
|
||||
void QskGradient::setConic( const QVector< qreal >& params )
|
||||
void QskGradient::setConicAsList( const QVector< qreal >& params )
|
||||
{
|
||||
Q_ASSERT( params.size() >= 2 && params.size() <= 4 );
|
||||
|
||||
m_type = Linear;
|
||||
m_type = Conic;
|
||||
|
||||
m_values[0] = params[0];
|
||||
m_values[1] = params[1];
|
||||
|
@ -442,52 +540,12 @@ void QskGradient::setConic( const QVector< qreal >& params )
|
|||
m_values[2] = 360.0;
|
||||
}
|
||||
|
||||
QVector< qreal > QskGradient::conic() const
|
||||
QVector< qreal > QskGradient::conicAsList() const
|
||||
{
|
||||
Q_ASSERT( m_type == Conic );
|
||||
return { m_values[0], m_values[1], m_values[2], m_values[3] };
|
||||
}
|
||||
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskRadialGradient.h"
|
||||
#include "QskConicGradient.h"
|
||||
|
||||
QskLinearGradient& QskGradient::asLinearGradient()
|
||||
{
|
||||
assert( m_type == QskGradient::Linear );
|
||||
return *reinterpret_cast< QskLinearGradient* >( this );
|
||||
}
|
||||
|
||||
const QskLinearGradient& QskGradient::asLinearGradient() const
|
||||
{
|
||||
assert( m_type == QskGradient::Linear );
|
||||
return *reinterpret_cast< const QskLinearGradient* >( this );
|
||||
}
|
||||
|
||||
QskRadialGradient& QskGradient::asRadialGradient()
|
||||
{
|
||||
assert( m_type == QskGradient::Radial );
|
||||
return *reinterpret_cast< QskRadialGradient* >( this );
|
||||
}
|
||||
|
||||
const QskRadialGradient& QskGradient::asRadialGradient() const
|
||||
{
|
||||
assert( m_type == QskGradient::Radial );
|
||||
return *reinterpret_cast< const QskRadialGradient* >( this );
|
||||
}
|
||||
|
||||
QskConicGradient& QskGradient::asConicGradient()
|
||||
{
|
||||
assert( m_type == QskGradient::Conic );
|
||||
return *reinterpret_cast< QskConicGradient* >( this );
|
||||
}
|
||||
|
||||
const QskConicGradient& QskGradient::asConicGradient() const
|
||||
{
|
||||
assert( m_type == QskGradient::Conic );
|
||||
return *reinterpret_cast< const QskConicGradient* >( this );
|
||||
}
|
||||
|
||||
#ifndef QT_NO_DEBUG_STREAM
|
||||
|
||||
#include <qdebug.h>
|
||||
|
@ -505,9 +563,9 @@ QDebug operator<<( QDebug debug, const QskGradient& gradient )
|
|||
{
|
||||
debug << "L(";
|
||||
|
||||
const auto& g = gradient.asLinearGradient();
|
||||
debug << g.start().x() << "," << g.start().y()
|
||||
<< "," << g.stop().x() << "," << g.stop().y() << ")";
|
||||
const auto dir = gradient.linearDirection();
|
||||
debug << dir.start().x() << "," << dir.start().y()
|
||||
<< "," << dir.stop().x() << "," << dir.stop().y() << ")";
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -516,10 +574,10 @@ QDebug operator<<( QDebug debug, const QskGradient& gradient )
|
|||
{
|
||||
debug << "R(";
|
||||
|
||||
const auto& g = gradient.asRadialGradient();
|
||||
const auto dir = gradient.radialDirection();
|
||||
|
||||
debug << g.center().x() << "," << g.center().y()
|
||||
<< "," << g.radius() << ")";
|
||||
debug << dir.center().x() << "," << dir.center().y()
|
||||
<< "," << dir.radius() << ")";
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -528,10 +586,10 @@ QDebug operator<<( QDebug debug, const QskGradient& gradient )
|
|||
{
|
||||
debug << "C(";
|
||||
|
||||
const auto& g = gradient.asConicGradient();
|
||||
const auto dir = gradient.conicDirection();
|
||||
|
||||
debug << g.center().x() << "," << g.center().y()
|
||||
<< ",[" << g.startAngle() << "," << g.spanAngle() << "])";
|
||||
debug << dir.center().x() << "," << dir.center().y()
|
||||
<< ",[" << dir.startAngle() << "," << dir.spanAngle() << "])";
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
#include <qbrush.h>
|
||||
#include <qmetatype.h>
|
||||
|
||||
class QskLinearGradient;
|
||||
class QskRadialGradient;
|
||||
class QskConicGradient;
|
||||
class QskLinearDirection;
|
||||
class QskRadialDirection;
|
||||
class QskConicDirection;
|
||||
|
||||
class QVariant;
|
||||
|
||||
|
@ -28,10 +28,6 @@ class QSK_EXPORT QskGradient
|
|||
|
||||
Q_PROPERTY( Type type READ type )
|
||||
|
||||
Q_PROPERTY( QVector< qreal > linear READ linear WRITE setLinear )
|
||||
Q_PROPERTY( QVector< qreal > conic READ linear WRITE setConic )
|
||||
Q_PROPERTY( QVector< qreal > radial READ radial WRITE setRadial )
|
||||
|
||||
Q_PROPERTY( QVector< QskGradientStop > stops READ stops WRITE setStops )
|
||||
|
||||
Q_PROPERTY( bool valid READ isValid )
|
||||
|
@ -71,6 +67,24 @@ class QSK_EXPORT QskGradient
|
|||
|
||||
QskGradient::Type type() const noexcept;
|
||||
|
||||
void setLinearDirection( const QskLinearDirection& );
|
||||
void setLinearDirection( qreal, qreal, qreal, qreal );
|
||||
void setLinearDirection( Qt::Orientation );
|
||||
QskLinearDirection linearDirection() const;
|
||||
|
||||
void setRadialDirection( const QskRadialDirection& );
|
||||
void setRadialDirection( const qreal x, qreal y, qreal radius );
|
||||
void setRadialDirection();
|
||||
|
||||
QskRadialDirection radialDirection() const;
|
||||
|
||||
void setConicDirection( qreal, qreal );
|
||||
void setConicDirection( qreal, qreal, qreal, qreal = 360.0 );
|
||||
void setConicDirection( const QskConicDirection& );
|
||||
QskConicDirection conicDirection() const;
|
||||
|
||||
void resetDirection();
|
||||
|
||||
bool isValid() const noexcept;
|
||||
bool isMonochrome() const noexcept;
|
||||
bool isVisible() const noexcept;
|
||||
|
@ -112,35 +126,32 @@ class QSK_EXPORT QskGradient
|
|||
|
||||
int stepCount() const noexcept;
|
||||
|
||||
QskLinearGradient& asLinearGradient();
|
||||
const QskLinearGradient& asLinearGradient() const;
|
||||
|
||||
QskRadialGradient& asRadialGradient();
|
||||
const QskRadialGradient& asRadialGradient() const;
|
||||
|
||||
QskConicGradient& asConicGradient();
|
||||
const QskConicGradient& asConicGradient() const;
|
||||
|
||||
private:
|
||||
friend class QskLinearGradient;
|
||||
friend class QskRadialGradient;
|
||||
friend class QskConicGradient;
|
||||
|
||||
QskGradient( Type ) noexcept;
|
||||
QskGradient( Type, qreal, qreal, qreal, qreal ) noexcept;
|
||||
|
||||
void updateStatusBits() const;
|
||||
|
||||
private:
|
||||
// for QML
|
||||
QVector< qreal > linear() const;
|
||||
void setLinear( const QVector< qreal >& );
|
||||
|
||||
QVector< qreal > radial() const;
|
||||
void setRadial( const QVector< qreal >& );
|
||||
#if 1
|
||||
/*
|
||||
Couldn't find a way how to assign a struct to another struct
|
||||
that is used as proprty from QML without creating extra QObjects.
|
||||
So for the moment we are using lists, that are more
|
||||
error prone and less intuitive. Let's see if some day we will have
|
||||
the QML system being capable of this. TODO ...
|
||||
*/
|
||||
Q_PROPERTY( QVector< qreal > linear READ linearAsList WRITE setLinearAsList )
|
||||
Q_PROPERTY( QVector< qreal > conic READ conicAsList WRITE setConicAsList )
|
||||
Q_PROPERTY( QVector< qreal > radial READ radialAsList WRITE setRadialAsList )
|
||||
|
||||
QVector< qreal > conic() const;
|
||||
void setConic( const QVector< qreal >& );
|
||||
QVector< qreal > linearAsList() const;
|
||||
void setLinearAsList( const QVector< qreal >& );
|
||||
|
||||
QVector< qreal > radialAsList() const;
|
||||
void setRadialAsList( const QVector< qreal >& );
|
||||
|
||||
QVector< qreal > conicAsList() const;
|
||||
void setConicAsList( const QVector< qreal >& );
|
||||
#endif
|
||||
|
||||
private:
|
||||
QVector< QskGradientStop > m_stops;
|
||||
|
@ -163,18 +174,6 @@ class QSK_EXPORT QskGradient
|
|||
|
||||
Q_DECLARE_METATYPE( QskGradient )
|
||||
|
||||
inline QskGradient::QskGradient( QskGradient::Type type ) noexcept
|
||||
: m_type( type )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskGradient::QskGradient( QskGradient::Type type,
|
||||
qreal v1, qreal v2, qreal v3, qreal v4 ) noexcept
|
||||
: m_values{ v1, v2, v3, v4 }
|
||||
, m_type( type )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskGradient::QskGradient( Qt::GlobalColor color )
|
||||
: QskGradient( QColor( color ) )
|
||||
{
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
// -- QskLinearDirection
|
||||
|
||||
void QskLinearDirection::setOrientation( Qt::Orientation orientation ) noexcept
|
||||
{
|
||||
setStart( 0.0, 0.0 );
|
||||
|
||||
if ( orientation == Qt::Vertical )
|
||||
setStop( 0.0, 1.0 );
|
||||
else
|
||||
setStop( 1.0, 0.0 );
|
||||
}
|
||||
|
||||
void QskLinearDirection::setStart( const QPointF& pos ) noexcept
|
||||
{
|
||||
m_x1 = pos.x();
|
||||
m_y1 = pos.y();
|
||||
}
|
||||
|
||||
void QskLinearDirection::setStart( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_x1 = x;
|
||||
m_y1 = y;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setStop( const QPointF& pos ) noexcept
|
||||
{
|
||||
m_x2 = pos.x();
|
||||
m_y2 = pos.y();
|
||||
}
|
||||
|
||||
void QskLinearDirection::setStop( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_x2 = x;
|
||||
m_y2 = y;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setX1( qreal x ) noexcept
|
||||
{
|
||||
m_x1 = x;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setY1( qreal y ) noexcept
|
||||
{
|
||||
m_y1 = y;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setX2( qreal x ) noexcept
|
||||
{
|
||||
m_x2 = x;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setY2( qreal y ) noexcept
|
||||
{
|
||||
m_y2 = y;
|
||||
}
|
||||
|
||||
void QskLinearDirection::setInterval( Qt::Orientation orientation, qreal from, qreal to )
|
||||
{
|
||||
if ( orientation == Qt::Vertical )
|
||||
{
|
||||
m_y1 = from;
|
||||
m_y2 = to;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_x1 = from;
|
||||
m_x2 = to;
|
||||
}
|
||||
}
|
||||
|
||||
// -- QskConicDirection
|
||||
|
||||
void QskConicDirection::setCenter( const QPointF& center ) noexcept
|
||||
{
|
||||
m_x = center.x();
|
||||
m_y = center.y();
|
||||
}
|
||||
|
||||
void QskConicDirection::setCenter( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_x = x;
|
||||
m_y = y;
|
||||
}
|
||||
|
||||
void QskConicDirection::setStartAngle( qreal degrees ) noexcept
|
||||
{
|
||||
m_startAngle = degrees;
|
||||
}
|
||||
|
||||
void QskConicDirection::setSpanAngle( qreal degrees ) noexcept
|
||||
{
|
||||
m_spanAngle = qBound( -360.0, degrees, 360.0 );
|
||||
}
|
||||
|
||||
// -- QskRadialDirection
|
||||
|
||||
void QskRadialDirection::setCenter( const QPointF& center ) noexcept
|
||||
{
|
||||
m_x = center.x();
|
||||
m_y = center.y();
|
||||
}
|
||||
|
||||
void QskRadialDirection::setCenter( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_x = x;
|
||||
m_y = y;
|
||||
}
|
||||
|
||||
void QskRadialDirection::setRadius( qreal radius ) noexcept
|
||||
{
|
||||
m_radius = radius;
|
||||
}
|
||||
|
||||
#include "moc_QskGradientDirection.cpp"
|
|
@ -0,0 +1,269 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef QSK_GRDIENT_DIRECTION_H
|
||||
#define QSK_GRDIENT_DIRECTION_H
|
||||
|
||||
#include "QskGlobal.h"
|
||||
|
||||
#include <qmetatype.h>
|
||||
#include <qpoint.h>
|
||||
|
||||
class QSK_EXPORT QskLinearDirection
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( qreal x1 READ x1 WRITE setX1 )
|
||||
Q_PROPERTY( qreal y1 READ y1 WRITE setY1 )
|
||||
Q_PROPERTY( qreal x2 READ x2 WRITE setX2 )
|
||||
Q_PROPERTY( qreal y2 READ y2 WRITE setY2 )
|
||||
|
||||
public:
|
||||
constexpr QskLinearDirection() noexcept = default;
|
||||
|
||||
constexpr QskLinearDirection( Qt::Orientation ) noexcept;
|
||||
|
||||
constexpr QskLinearDirection( const QPointF&, const QPointF& ) noexcept;
|
||||
constexpr QskLinearDirection( qreal x1, qreal y1, qreal x2, qreal y2 ) noexcept;
|
||||
|
||||
void setStart( const QPointF& ) noexcept;
|
||||
void setStart( qreal x, qreal y ) noexcept;
|
||||
|
||||
void setStop(const QPointF& ) noexcept;
|
||||
void setStop( qreal x, qreal y ) noexcept;
|
||||
|
||||
void setInterval( Qt::Orientation, qreal, qreal );
|
||||
|
||||
void setOrientation( Qt::Orientation ) noexcept;
|
||||
constexpr bool isOriented( Qt::Orientation ) const noexcept;
|
||||
|
||||
constexpr bool isHorizontal() const noexcept;
|
||||
constexpr bool isVertical() const noexcept;
|
||||
constexpr bool isTilted() const noexcept;
|
||||
|
||||
constexpr QPointF start() const noexcept;
|
||||
constexpr QPointF stop() const noexcept;
|
||||
|
||||
constexpr qreal x1() const noexcept;
|
||||
void setX1( qreal ) noexcept;
|
||||
|
||||
constexpr qreal y1() const noexcept;
|
||||
void setY1( qreal ) noexcept;
|
||||
|
||||
constexpr qreal x2() const noexcept;
|
||||
void setX2( qreal ) noexcept;
|
||||
|
||||
constexpr qreal y2() const noexcept;
|
||||
void setY2( qreal ) noexcept;
|
||||
|
||||
private:
|
||||
qreal m_x1 = 0.0;
|
||||
qreal m_y1 = 0.0;
|
||||
qreal m_x2 = 0.0;
|
||||
qreal m_y2 = 1.0;
|
||||
};
|
||||
|
||||
class QSK_EXPORT QskConicDirection
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( QPointF center READ center WRITE setCenter )
|
||||
Q_PROPERTY( qreal startAngle READ startAngle WRITE setStartAngle )
|
||||
Q_PROPERTY( qreal spanAngle READ spanAngle WRITE setSpanAngle )
|
||||
|
||||
public:
|
||||
// counter-clockwise
|
||||
constexpr QskConicDirection() noexcept = default;
|
||||
|
||||
constexpr QskConicDirection( qreal x, qreal y, qreal startAngle = 0.0 ) noexcept;
|
||||
constexpr QskConicDirection( qreal x, qreal y, qreal startAngle, qreal spanAngle ) noexcept;
|
||||
|
||||
constexpr QskConicDirection( const QPointF&, qreal startAngle = 0.0 ) noexcept;
|
||||
constexpr QskConicDirection( const QPointF&, qreal startAngle, qreal spanAngle ) noexcept;
|
||||
|
||||
constexpr QPointF center() const noexcept;
|
||||
void setCenter(const QPointF& center) noexcept;
|
||||
void setCenter(qreal x, qreal y) noexcept;
|
||||
|
||||
constexpr qreal startAngle() const noexcept;
|
||||
void setStartAngle( qreal ) noexcept;
|
||||
|
||||
constexpr qreal spanAngle() const noexcept;
|
||||
void setSpanAngle( qreal ) noexcept;
|
||||
|
||||
private:
|
||||
qreal m_x = 0.5;
|
||||
qreal m_y = 0.5;
|
||||
qreal m_startAngle = 0.0;
|
||||
qreal m_spanAngle = 360.0;
|
||||
};
|
||||
|
||||
class QSK_EXPORT QskRadialDirection
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( QPointF center READ center WRITE setCenter )
|
||||
Q_PROPERTY( qreal radius READ radius WRITE setRadius )
|
||||
|
||||
public:
|
||||
constexpr QskRadialDirection() noexcept = default;
|
||||
|
||||
constexpr QskRadialDirection( const QPointF& center, qreal radius ) noexcept;
|
||||
constexpr QskRadialDirection( qreal cx, qreal cy, qreal radius ) noexcept;
|
||||
|
||||
constexpr QPointF center() const noexcept;
|
||||
void setCenter(const QPointF& center) noexcept;
|
||||
void setCenter(qreal x, qreal y) noexcept;
|
||||
|
||||
constexpr qreal radius() const noexcept;
|
||||
void setRadius( qreal radius ) noexcept;
|
||||
|
||||
private:
|
||||
qreal m_x = 0.5;
|
||||
qreal m_y = 0.5;
|
||||
qreal m_radius = 0.5;
|
||||
};
|
||||
|
||||
inline constexpr QskLinearDirection::QskLinearDirection(
|
||||
Qt::Orientation orientation ) noexcept
|
||||
: m_x2( ( orientation == Qt::Vertical ) ? 0.0 : 1.0 )
|
||||
, m_y2( ( orientation == Qt::Vertical ) ? 1.0 : 0.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskLinearDirection::QskLinearDirection(
|
||||
const QPointF& start, const QPointF& stop ) noexcept
|
||||
: QskLinearDirection( start.x(), start.y(), stop.x(), stop.y() )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskLinearDirection::QskLinearDirection(
|
||||
qreal x1, qreal y1, qreal x2, qreal y2 ) noexcept
|
||||
: m_x1( x1 )
|
||||
, m_y1( y1 )
|
||||
, m_x2( x2 )
|
||||
, m_y2( y2 )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr qreal QskLinearDirection::x1() const noexcept
|
||||
{
|
||||
return m_x1;
|
||||
}
|
||||
|
||||
inline constexpr qreal QskLinearDirection::y1() const noexcept
|
||||
{
|
||||
return m_y1;
|
||||
}
|
||||
|
||||
inline constexpr qreal QskLinearDirection::x2() const noexcept
|
||||
{
|
||||
return m_x2;
|
||||
}
|
||||
|
||||
inline constexpr qreal QskLinearDirection::y2() const noexcept
|
||||
{
|
||||
return m_y2;
|
||||
}
|
||||
|
||||
inline constexpr QPointF QskLinearDirection::start() const noexcept
|
||||
{
|
||||
return QPointF( m_x1, m_y1 );
|
||||
}
|
||||
|
||||
inline constexpr QPointF QskLinearDirection::stop() const noexcept
|
||||
{
|
||||
return QPointF( m_x2, m_y2 );
|
||||
}
|
||||
|
||||
inline constexpr bool QskLinearDirection::isOriented(
|
||||
Qt::Orientation orientation ) const noexcept
|
||||
{
|
||||
return ( orientation == Qt::Horizontal )
|
||||
? isHorizontal() : isVertical();
|
||||
}
|
||||
|
||||
inline constexpr bool QskLinearDirection::isHorizontal() const noexcept
|
||||
{
|
||||
return !isVertical() && ( m_y1 == m_y2 );
|
||||
}
|
||||
|
||||
inline constexpr bool QskLinearDirection::isVertical() const noexcept
|
||||
{
|
||||
return m_x1 == m_x2;
|
||||
}
|
||||
|
||||
inline constexpr bool QskLinearDirection::isTilted() const noexcept
|
||||
{
|
||||
return ( m_x1 != m_x2 ) && ( m_y1 != m_y2 );
|
||||
}
|
||||
|
||||
inline constexpr QskConicDirection::QskConicDirection(
|
||||
qreal x, qreal y, qreal startAngle ) noexcept
|
||||
: QskConicDirection( x, y, startAngle, 360.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskConicDirection::QskConicDirection(
|
||||
qreal x, qreal y, qreal startAngle, qreal spanAngle ) noexcept
|
||||
: m_x( x )
|
||||
, m_y( y )
|
||||
, m_startAngle( startAngle )
|
||||
, m_spanAngle( spanAngle )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskConicDirection::QskConicDirection(
|
||||
const QPointF& pos, qreal startAngle ) noexcept
|
||||
: QskConicDirection( pos.x(), pos.y(), startAngle )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskConicDirection::QskConicDirection(
|
||||
const QPointF& pos, qreal startAngle, qreal spanAngle ) noexcept
|
||||
: QskConicDirection( pos.x(), pos.y(), startAngle, spanAngle )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QPointF QskConicDirection::center() const noexcept
|
||||
{
|
||||
return QPointF( m_x, m_y );
|
||||
}
|
||||
|
||||
inline constexpr qreal QskConicDirection::startAngle() const noexcept
|
||||
{
|
||||
return m_startAngle;
|
||||
}
|
||||
|
||||
inline constexpr qreal QskConicDirection::spanAngle() const noexcept
|
||||
{
|
||||
return m_spanAngle;
|
||||
}
|
||||
|
||||
inline constexpr QskRadialDirection::QskRadialDirection(
|
||||
qreal x, qreal y, qreal radius ) noexcept
|
||||
: m_x( x )
|
||||
, m_y( y )
|
||||
, m_radius( radius )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QskRadialDirection::QskRadialDirection(
|
||||
const QPointF& center, qreal radius ) noexcept
|
||||
: QskRadialDirection( center.x(), center.y(), radius )
|
||||
{
|
||||
}
|
||||
|
||||
inline constexpr QPointF QskRadialDirection::center() const noexcept
|
||||
{
|
||||
return QPointF( m_x, m_y );
|
||||
}
|
||||
|
||||
inline constexpr qreal QskRadialDirection::radius() const noexcept
|
||||
{
|
||||
return m_radius;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,155 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#include "QskLinearGradient.h"
|
||||
|
||||
QskLinearGradient::QskLinearGradient( Qt::Orientation orientation ) noexcept
|
||||
: QskGradient( QskGradient::Linear )
|
||||
{
|
||||
setOrientation( orientation );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( const QColor& color )
|
||||
: QskLinearGradient( Qt::Vertical )
|
||||
{
|
||||
setStops( color );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient(
|
||||
const QColor& startColor, const QColor& stopColor )
|
||||
: QskLinearGradient( Qt::Vertical )
|
||||
{
|
||||
setStops( startColor, stopColor );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( QGradient::Preset preset )
|
||||
: QskLinearGradient( Qt::Vertical )
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( const QVector< QskGradientStop >& stops )
|
||||
: QskLinearGradient( Qt::Vertical )
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( Qt::Orientation orientation, const QColor& color )
|
||||
: QskLinearGradient( orientation )
|
||||
{
|
||||
setStops( color );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( Qt::Orientation orientation,
|
||||
const QColor& startColor, const QColor& stopColor )
|
||||
: QskLinearGradient( orientation )
|
||||
{
|
||||
setStops( startColor, stopColor );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient(
|
||||
Qt::Orientation orientation, QGradient::Preset preset )
|
||||
: QskLinearGradient( orientation )
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient(
|
||||
Qt::Orientation orientation, const QVector< QskGradientStop >& stops )
|
||||
: QskLinearGradient( orientation )
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
void QskLinearGradient::setOrientation( Qt::Orientation orientation ) noexcept
|
||||
{
|
||||
setStart( 0.0, 0.0 );
|
||||
|
||||
if ( orientation == Qt::Vertical )
|
||||
setStop( 0.0, 1.0 );
|
||||
else
|
||||
setStop( 1.0, 0.0 );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, const QColor& color1, const QColor& color2 )
|
||||
: QskLinearGradient( x1, y1, x2, y2 )
|
||||
{
|
||||
setStops( color1, color2 );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, QGradient::Preset preset )
|
||||
: QskLinearGradient( x1, y1, x2, y2 )
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskLinearGradient::QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, const QVector< QskGradientStop >& stops )
|
||||
: QskLinearGradient( x1, y1, x2, y2 )
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
void QskLinearGradient::setStart( const QPointF& pos ) noexcept
|
||||
{
|
||||
m_values[0] = pos.x();
|
||||
m_values[1] = pos.y();
|
||||
}
|
||||
|
||||
void QskLinearGradient::setStart( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_values[0] = x;
|
||||
m_values[1] = y;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setStop( const QPointF& pos ) noexcept
|
||||
{
|
||||
m_values[2] = pos.x();
|
||||
m_values[3] = pos.y();
|
||||
}
|
||||
|
||||
void QskLinearGradient::setStop( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_values[2] = x;
|
||||
m_values[3] = y;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setX1( qreal x ) noexcept
|
||||
{
|
||||
m_values[0] = x;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setY1( qreal y ) noexcept
|
||||
{
|
||||
m_values[1] = y;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setX2( qreal x ) noexcept
|
||||
{
|
||||
m_values[2] = x;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setY2( qreal y ) noexcept
|
||||
{
|
||||
m_values[3] = y;
|
||||
}
|
||||
|
||||
void QskLinearGradient::setInterval( Qt::Orientation orientation, qreal from, qreal to )
|
||||
{
|
||||
if ( orientation == Qt::Vertical )
|
||||
{
|
||||
m_values[1] = from;
|
||||
m_values[3] = to;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_values[0] = from;
|
||||
m_values[2] = to;
|
||||
}
|
||||
}
|
||||
|
||||
#include "moc_QskLinearGradient.cpp"
|
|
@ -1,200 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef QSK_LINEAR_GRADIENT_H
|
||||
#define QSK_LINEAR_GRADIENT_H
|
||||
|
||||
#include "QskGradient.h"
|
||||
|
||||
class QSK_EXPORT QskLinearGradient : public QskGradient
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( qreal x1 READ x1 WRITE setX1 )
|
||||
Q_PROPERTY( qreal y1 READ y1 WRITE setY1 )
|
||||
Q_PROPERTY( qreal x2 READ x2 WRITE setX2 )
|
||||
Q_PROPERTY( qreal y2 READ y2 WRITE setY2 )
|
||||
|
||||
public:
|
||||
QskLinearGradient() noexcept;
|
||||
|
||||
QskLinearGradient( Qt::GlobalColor );
|
||||
QskLinearGradient( QRgb );
|
||||
QskLinearGradient( const QColor& );
|
||||
QskLinearGradient( const QColor&, const QColor& );
|
||||
QskLinearGradient( QGradient::Preset );
|
||||
QskLinearGradient( const QVector< QskGradientStop >& );
|
||||
|
||||
QskLinearGradient( Qt::Orientation ) noexcept;
|
||||
QskLinearGradient( Qt::Orientation, Qt::GlobalColor );
|
||||
QskLinearGradient( Qt::Orientation, QRgb );
|
||||
QskLinearGradient( Qt::Orientation, const QColor& );
|
||||
QskLinearGradient( Qt::Orientation, const QColor&, const QColor& );
|
||||
QskLinearGradient( Qt::Orientation, QGradient::Preset );
|
||||
QskLinearGradient( Qt::Orientation, const QVector< QskGradientStop >& );
|
||||
|
||||
QskLinearGradient( const QPointF&, const QPointF& ) noexcept;
|
||||
QskLinearGradient( qreal x1, qreal y1, qreal x2, qreal y2 ) noexcept;
|
||||
|
||||
QskLinearGradient( const QPointF&, const QPointF&,
|
||||
const QColor&, const QColor& );
|
||||
|
||||
QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, const QColor&, const QColor& );
|
||||
|
||||
QskLinearGradient( const QPointF&, const QPointF&, QGradient::Preset );
|
||||
|
||||
QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, QGradient::Preset );
|
||||
|
||||
QskLinearGradient( const QPointF&, const QPointF&,
|
||||
const QVector< QskGradientStop >& );
|
||||
|
||||
QskLinearGradient( qreal x1, qreal y1,
|
||||
qreal x2, qreal y2, const QVector< QskGradientStop >& );
|
||||
|
||||
void setStart(const QPointF& start) noexcept;
|
||||
void setStart( qreal x, qreal y ) noexcept;
|
||||
|
||||
void setStop(const QPointF& start) noexcept;
|
||||
void setStop( qreal x, qreal y ) noexcept;
|
||||
|
||||
void setInterval( Qt::Orientation, qreal, qreal );
|
||||
|
||||
void setOrientation( Qt::Orientation ) noexcept;
|
||||
bool isOriented( Qt::Orientation ) const noexcept;
|
||||
|
||||
bool isHorizontal() const noexcept;
|
||||
bool isVertical() const noexcept;
|
||||
bool isTilted() const noexcept;
|
||||
|
||||
QPointF start() const noexcept;
|
||||
QPointF stop() const noexcept;
|
||||
|
||||
qreal x1() const noexcept;
|
||||
void setX1( qreal ) noexcept;
|
||||
|
||||
qreal y1() const noexcept;
|
||||
void setY1( qreal ) noexcept;
|
||||
|
||||
qreal x2() const noexcept;
|
||||
void setX2( qreal ) noexcept;
|
||||
|
||||
qreal y2() const noexcept;
|
||||
void setY2( qreal ) noexcept;
|
||||
};
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient() noexcept
|
||||
: QskGradient( QskGradient::Linear, 0.0, 0.0, 0.0, 1.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient( Qt::GlobalColor color )
|
||||
: QskLinearGradient( QColor( color ) )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient( QRgb rgb )
|
||||
: QskLinearGradient( QColor::fromRgba( rgb ) )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
Qt::Orientation orientation, Qt::GlobalColor color )
|
||||
: QskLinearGradient( orientation, QColor( color ) )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
Qt::Orientation orientation, QRgb rgb )
|
||||
: QskLinearGradient( orientation, QColor::fromRgba( rgb ) )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
const QPointF& start, const QPointF& stop,
|
||||
const QColor& color1, const QColor& color2 )
|
||||
: QskLinearGradient( start.x(), start.y(), stop.x(), stop.y(), color1, color2 )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
const QPointF& start, const QPointF& stop, QGradient::Preset preset )
|
||||
: QskLinearGradient( start.x(), start.y(), stop.x(), stop.y(), preset )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
const QPointF& start, const QPointF& stop,
|
||||
const QVector< QskGradientStop >& stops )
|
||||
: QskLinearGradient( start.x(), start.y(), stop.x(), stop.y(), stops )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
const QPointF& start, const QPointF& stop ) noexcept
|
||||
: QskLinearGradient( start.x(), start.y(), stop.x(), stop.y() )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskLinearGradient::QskLinearGradient(
|
||||
qreal x1, qreal y1, qreal x2, qreal y2 ) noexcept
|
||||
: QskGradient( QskGradient::Linear, x1, y1, x2, y2 )
|
||||
{
|
||||
}
|
||||
|
||||
inline qreal QskLinearGradient::x1() const noexcept
|
||||
{
|
||||
return m_values[0];
|
||||
}
|
||||
|
||||
inline qreal QskLinearGradient::y1() const noexcept
|
||||
{
|
||||
return m_values[1];
|
||||
}
|
||||
|
||||
inline qreal QskLinearGradient::x2() const noexcept
|
||||
{
|
||||
return m_values[2];
|
||||
}
|
||||
|
||||
inline qreal QskLinearGradient::y2() const noexcept
|
||||
{
|
||||
return m_values[3];
|
||||
}
|
||||
|
||||
inline QPointF QskLinearGradient::start() const noexcept
|
||||
{
|
||||
return QPointF( x1(), y1() );
|
||||
}
|
||||
|
||||
inline QPointF QskLinearGradient::stop() const noexcept
|
||||
{
|
||||
return QPointF( x2(), y2() );
|
||||
}
|
||||
|
||||
inline bool QskLinearGradient::isOriented(
|
||||
Qt::Orientation orientation ) const noexcept
|
||||
{
|
||||
return ( orientation == Qt::Horizontal )
|
||||
? isHorizontal() : isVertical();
|
||||
}
|
||||
|
||||
inline bool QskLinearGradient::isHorizontal() const noexcept
|
||||
{
|
||||
return !isVertical() && ( y1() == y2() );
|
||||
}
|
||||
|
||||
inline bool QskLinearGradient::isVertical() const noexcept
|
||||
{
|
||||
return x1() == x2();
|
||||
}
|
||||
|
||||
inline bool QskLinearGradient::isTilted() const noexcept
|
||||
{
|
||||
return ( x1() != x2() ) && ( y1() != y2() );
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,69 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#include "QskRadialGradient.h"
|
||||
|
||||
QskRadialGradient::QskRadialGradient( qreal cx, qreal cy, qreal radius ) noexcept
|
||||
: QskGradient( Radial, cx, cy, radius, 0.0 )
|
||||
{
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( const QColor& color1, const QColor& color2 )
|
||||
: QskRadialGradient()
|
||||
{
|
||||
setStops( color1, color2 );
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( QGradient::Preset preset )
|
||||
: QskRadialGradient()
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( const QVector< QskGradientStop >& stops )
|
||||
: QskRadialGradient()
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( qreal cx, qreal cy, qreal radius,
|
||||
const QColor& color1, const QColor& color2 )
|
||||
: QskRadialGradient( cx, cy, radius )
|
||||
{
|
||||
setStops( color1, color2 );
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( qreal cx, qreal cy,
|
||||
qreal radius, QGradient::Preset preset )
|
||||
: QskRadialGradient( cx, cy, radius )
|
||||
{
|
||||
setStops( preset );
|
||||
}
|
||||
|
||||
QskRadialGradient::QskRadialGradient( qreal cx, qreal cy,
|
||||
qreal radius, const QVector< QskGradientStop >& stops )
|
||||
: QskRadialGradient( cx, cy, radius )
|
||||
{
|
||||
setStops( stops );
|
||||
}
|
||||
|
||||
void QskRadialGradient::setCenter( const QPointF& center ) noexcept
|
||||
{
|
||||
m_values[0] = center.x();
|
||||
m_values[1] = center.y();
|
||||
}
|
||||
|
||||
void QskRadialGradient::setCenter( qreal x, qreal y ) noexcept
|
||||
{
|
||||
m_values[0] = x;
|
||||
m_values[1] = y;
|
||||
}
|
||||
|
||||
void QskRadialGradient::setRadius( qreal radius ) noexcept
|
||||
{
|
||||
m_values[2] = radius;
|
||||
}
|
||||
|
||||
#include "moc_QskRadialGradient.cpp"
|
|
@ -1,90 +0,0 @@
|
|||
/******************************************************************************
|
||||
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef QSK_RADIAL_GRADIENT_H
|
||||
#define QSK_RADIAL_GRADIENT_H
|
||||
|
||||
#include "QskGradient.h"
|
||||
|
||||
class QSK_EXPORT QskRadialGradient : public QskGradient
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
Q_PROPERTY( QPointF center READ center WRITE setCenter )
|
||||
Q_PROPERTY( qreal radius READ radius WRITE setRadius )
|
||||
|
||||
public:
|
||||
QskRadialGradient() noexcept;
|
||||
|
||||
QskRadialGradient( const QColor&, const QColor& );
|
||||
QskRadialGradient( QGradient::Preset );
|
||||
QskRadialGradient( const QVector< QskGradientStop >& );
|
||||
|
||||
QskRadialGradient( const QPointF& center, qreal radius ) noexcept;
|
||||
QskRadialGradient( qreal cx, qreal cy, qreal radius ) noexcept;
|
||||
|
||||
QskRadialGradient( const QPointF& center, qreal radius,
|
||||
const QColor&, const QColor& );
|
||||
|
||||
QskRadialGradient( qreal cx, qreal cy, qreal radius,
|
||||
const QColor&, const QColor& );
|
||||
|
||||
QskRadialGradient( const QPointF& center, qreal radius, QGradient::Preset );
|
||||
QskRadialGradient( qreal cx, qreal cy, qreal radius, QGradient::Preset );
|
||||
|
||||
QskRadialGradient( const QPointF& center, qreal radius,
|
||||
const QVector< QskGradientStop >& );
|
||||
|
||||
QskRadialGradient( qreal cx, qreal cy, qreal radius,
|
||||
const QVector< QskGradientStop >& );
|
||||
|
||||
QPointF center() const noexcept;
|
||||
void setCenter(const QPointF& center) noexcept;
|
||||
void setCenter(qreal x, qreal y) noexcept;
|
||||
|
||||
qreal radius() const noexcept;
|
||||
void setRadius( qreal radius ) noexcept;
|
||||
};
|
||||
|
||||
inline QskRadialGradient::QskRadialGradient() noexcept
|
||||
: QskGradient( Radial, 0.5, 0.5, 0.5, 0.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskRadialGradient::QskRadialGradient(
|
||||
const QPointF& center, qreal radius ) noexcept
|
||||
: QskRadialGradient( center.x(), center.y(), radius )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskRadialGradient::QskRadialGradient(
|
||||
const QPointF& center, qreal radius, const QColor& start, const QColor& stop )
|
||||
: QskRadialGradient( center.x(), center.y(), radius, start, stop )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskRadialGradient::QskRadialGradient(
|
||||
const QPointF& center, qreal radius, QGradient::Preset preset )
|
||||
: QskRadialGradient( center.x(), center.y(), radius, preset )
|
||||
{
|
||||
}
|
||||
|
||||
inline QskRadialGradient::QskRadialGradient(
|
||||
const QPointF& center, qreal radius, const QVector< QskGradientStop >& stops )
|
||||
: QskRadialGradient( center.x(), center.y(), radius, stops )
|
||||
{
|
||||
}
|
||||
|
||||
inline QPointF QskRadialGradient::center() const noexcept
|
||||
{
|
||||
return QPointF( m_values[0], m_values[1] );
|
||||
}
|
||||
|
||||
inline qreal QskRadialGradient::radius() const noexcept
|
||||
{
|
||||
return m_values[2];
|
||||
}
|
||||
|
||||
#endif
|
|
@ -14,7 +14,6 @@
|
|||
#include "QskFunctions.h"
|
||||
#include "QskMargins.h"
|
||||
#include "QskFunctions.h"
|
||||
#include "QskLinearGradient.h"
|
||||
|
||||
#include <qfontmetrics.h>
|
||||
#include <qmath.h>
|
||||
|
@ -534,7 +533,7 @@ QSGNode* QskMenuSkinlet::updateSampleNode( const QskSkinnable* skinnable,
|
|||
{
|
||||
auto gradient = menu->gradientHint( subControl );
|
||||
if ( ( gradient.type() == QskGradient::Stops ) && !gradient.isMonochrome() )
|
||||
gradient = QskLinearGradient( Qt::Vertical, gradient.stops() );
|
||||
gradient.setLinearDirection( Qt::Vertical );
|
||||
|
||||
return updateBoxNode( menu, node, rect, gradient, subControl );
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "QskProgressBar.h"
|
||||
#include "QskIntervalF.h"
|
||||
#include "QskBoxBorderMetrics.h"
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qeasingcurve.h>
|
||||
#include <cmath>
|
||||
|
@ -141,10 +141,11 @@ QSGNode* QskProgressBarSkinlet::updateBarNode(
|
|||
|
||||
const auto intv = qskBarInterval( bar );
|
||||
|
||||
auto stops = qskExtractedGradientStops( gradient.stops(),
|
||||
const auto stops = qskExtractedGradientStops( gradient.stops(),
|
||||
intv.lowerBound(), intv.upperBound() );
|
||||
|
||||
gradient = QskLinearGradient( bar->orientation(), stops );
|
||||
gradient.setStops( stops );
|
||||
gradient.setLinearDirection( bar->orientation() );
|
||||
if ( bar->orientation() == Qt::Vertical || bar->layoutMirroring() )
|
||||
gradient.reverse();
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "QskSeparatorSkinlet.h"
|
||||
#include "QskSeparator.h"
|
||||
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
#include "QskAspect.h"
|
||||
|
||||
QskSeparatorSkinlet::QskSeparatorSkinlet( QskSkin* skin )
|
||||
|
@ -50,7 +50,7 @@ QSGNode* QskSeparatorSkinlet::updateSubNode(
|
|||
const auto orientation = ( separator->orientation() == Qt::Vertical )
|
||||
? Qt::Horizontal : Qt::Vertical;
|
||||
|
||||
gradient = QskLinearGradient( orientation, gradient.stops() );
|
||||
gradient.setLinearDirection( orientation );
|
||||
}
|
||||
|
||||
return updateBoxNode( separator, node, rect, gradient, Q::Panel );
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "QskBoxBorderMetrics.h"
|
||||
#include "QskBoxBorderColors.h"
|
||||
#include "QskShadowMetrics.h"
|
||||
#include "QskLinearGradient.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
@ -225,7 +224,9 @@ void QskSkinHintTableEditor::setHGradient(
|
|||
QskAspect aspect, const QColor& color1, const QColor& color2,
|
||||
QskStateCombination combination )
|
||||
{
|
||||
const QskLinearGradient gradient( Qt::Horizontal, color1, color2 );
|
||||
QskGradient gradient( color1, color2 );
|
||||
gradient.setLinearDirection( Qt::Horizontal );
|
||||
|
||||
setGradient( aspect, gradient, combination );
|
||||
}
|
||||
|
||||
|
@ -233,7 +234,9 @@ void QskSkinHintTableEditor::setVGradient(
|
|||
QskAspect aspect, const QColor& color1, const QColor& color2,
|
||||
QskStateCombination combination )
|
||||
{
|
||||
const QskLinearGradient gradient( Qt::Vertical, color1, color2 );
|
||||
QskGradient gradient( color1, color2 );
|
||||
gradient.setLinearDirection( Qt::Vertical );
|
||||
|
||||
setGradient( aspect, gradient, combination );
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
|
||||
#include "QskArcRenderer.h"
|
||||
#include "QskArcMetrics.h"
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qpainter.h>
|
||||
#include <qrect.h>
|
||||
|
@ -21,7 +22,7 @@ void QskArcRenderer::renderArc(const QRectF& rect,
|
|||
Horizontal is interpreted as conic ( in direction of the arc ),
|
||||
while Vertical means radial ( inner to outer border )
|
||||
*/
|
||||
isRadial = gradient.asLinearGradient().isVertical();
|
||||
isRadial = gradient.linearDirection().isVertical();
|
||||
}
|
||||
|
||||
QBrush brush;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "QskBoxRenderer.h"
|
||||
#include "QskBoxShapeMetrics.h"
|
||||
#include "QskGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qglobalstatic.h>
|
||||
#include <qsgflatcolormaterial.h>
|
||||
|
@ -39,56 +40,53 @@ static inline QskHashValue qskColorsHash(
|
|||
|
||||
#if 1
|
||||
|
||||
#include "QskLinearGradient.h"
|
||||
|
||||
static inline QskLinearGradient qskEffectiveGradient( const QskGradient& gradient )
|
||||
static inline QskGradient qskEffectiveGradient( const QskGradient& gradient )
|
||||
{
|
||||
QskLinearGradient g;
|
||||
QskGradient g;
|
||||
|
||||
if ( gradient.isVisible() )
|
||||
{
|
||||
if ( gradient.isMonochrome() )
|
||||
{
|
||||
g.setLinearDirection( Qt::Vertical );
|
||||
g.setStops( gradient.startColor() );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
switch( gradient.type() )
|
||||
{
|
||||
case QskGradient::Linear:
|
||||
{
|
||||
const auto& linearGradient = gradient.asLinearGradient();
|
||||
auto dir = gradient.linearDirection();
|
||||
|
||||
if ( linearGradient.isVertical() )
|
||||
if ( dir.isTilted() )
|
||||
{
|
||||
g.setOrientation( Qt::Vertical );
|
||||
}
|
||||
else if ( linearGradient.isHorizontal() )
|
||||
{
|
||||
g.setOrientation( Qt::Horizontal );
|
||||
}
|
||||
else
|
||||
{
|
||||
g.setStart( 0.0, 0.0 );
|
||||
g.setStop( 1.0, 1.0 );
|
||||
dir.setStart( 0.0, 0.0 );
|
||||
dir.setStop( 1.0, 1.0 );
|
||||
}
|
||||
|
||||
g.setStops( gradient.stops() );
|
||||
g.setLinearDirection( dir );
|
||||
|
||||
break;
|
||||
}
|
||||
case QskGradient::Radial:
|
||||
case QskGradient::Conic:
|
||||
{
|
||||
qWarning() << "QskBoxNode does not support radial/conic gradients";
|
||||
g.setStops( Qt::black );
|
||||
g.setLinearDirection( Qt::Vertical );
|
||||
|
||||
break;
|
||||
}
|
||||
case QskGradient::Stops:
|
||||
{
|
||||
g.setStops( gradient.stops() );
|
||||
g.setLinearDirection( Qt::Vertical );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g.setStops( gradient.stops() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
class QskBoxBorderMetrics;
|
||||
class QskBoxBorderColors;
|
||||
class QskLinearGradient;
|
||||
class QskGradient;
|
||||
|
||||
class QSGGeometry;
|
||||
|
@ -33,7 +32,7 @@ class QSK_EXPORT QskBoxRenderer
|
|||
|
||||
void renderBox( const QRectF&,
|
||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
||||
const QskBoxBorderColors&, const QskLinearGradient&, QSGGeometry& );
|
||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||
|
||||
class Quad
|
||||
{
|
||||
|
@ -116,7 +115,7 @@ class QSK_EXPORT QskBoxRenderer
|
|||
|
||||
void renderRect( const QRectF&,
|
||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
||||
const QskBoxBorderColors&, const QskLinearGradient&, QSGGeometry& );
|
||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||
|
||||
void renderRectellipseFill( const QRectF&,
|
||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
||||
|
@ -126,12 +125,12 @@ class QSK_EXPORT QskBoxRenderer
|
|||
|
||||
void renderRectellipse( const QRectF&,
|
||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
||||
const QskBoxBorderColors&, const QskLinearGradient&, QSGGeometry& );
|
||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||
|
||||
void renderDiagonalFill( const Metrics&, const QskGradient&,
|
||||
int lineCount, QskVertex::ColoredLine* );
|
||||
|
||||
void renderRectFill( const Quad&, const QskLinearGradient&, QskVertex::ColoredLine* );
|
||||
void renderRectFill( const Quad&, const QskGradient&, QskVertex::ColoredLine* );
|
||||
};
|
||||
|
||||
inline void QskBoxRenderer::renderBorder(
|
||||
|
@ -156,7 +155,7 @@ inline void QskBoxRenderer::renderFill(
|
|||
|
||||
inline void QskBoxRenderer::renderBox( const QRectF& rect,
|
||||
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border,
|
||||
const QskBoxBorderColors& borderColors, const QskLinearGradient& gradient,
|
||||
const QskBoxBorderColors& borderColors, const QskGradient& gradient,
|
||||
QSGGeometry& geometry )
|
||||
{
|
||||
if ( shape.isRectangle() )
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "QskBoxRenderer.h"
|
||||
#include "QskLinearGradient.h"
|
||||
|
||||
#include "QskBoxBorderColors.h"
|
||||
#include "QskBoxBorderMetrics.h"
|
||||
#include "QskBoxRendererColorMap.h"
|
||||
#include "QskBoxShapeMetrics.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qmath.h>
|
||||
#include <qsggeometry.h>
|
||||
|
@ -868,13 +868,13 @@ namespace
|
|||
};
|
||||
}
|
||||
|
||||
static inline Qt::Orientation qskQtOrientation( const QskLinearGradient& gradient )
|
||||
static inline Qt::Orientation qskQtOrientation( const QskGradient& gradient )
|
||||
{
|
||||
return gradient.isVertical() ? Qt::Vertical : Qt::Horizontal;
|
||||
return gradient.linearDirection().isVertical() ? Qt::Vertical : Qt::Horizontal;
|
||||
}
|
||||
|
||||
static inline int qskFillLineCount(
|
||||
const QskBoxRenderer::Metrics& metrics, const QskLinearGradient& gradient )
|
||||
const QskBoxRenderer::Metrics& metrics, const QskGradient& gradient )
|
||||
{
|
||||
const int stepCount = metrics.corner[ 0 ].stepCount;
|
||||
|
||||
|
@ -883,7 +883,9 @@ static inline int qskFillLineCount(
|
|||
|
||||
int lineCount = 0;
|
||||
|
||||
if ( gradient.isVertical() )
|
||||
const auto dir = gradient.linearDirection();
|
||||
|
||||
if ( dir.isVertical() )
|
||||
{
|
||||
lineCount += qMax( metrics.corner[ TopLeft ].stepCount,
|
||||
metrics.corner[ TopRight ].stepCount ) + 1;
|
||||
|
@ -894,7 +896,7 @@ static inline int qskFillLineCount(
|
|||
if ( metrics.centerQuad.top >= metrics.centerQuad.bottom )
|
||||
lineCount--;
|
||||
}
|
||||
else if ( gradient.isHorizontal() )
|
||||
else if ( dir.isHorizontal() )
|
||||
{
|
||||
lineCount += qMax( metrics.corner[ TopLeft ].stepCount,
|
||||
metrics.corner[ BottomLeft ].stepCount ) + 1;
|
||||
|
@ -1029,7 +1031,7 @@ static inline void qskRenderBorder( const QskBoxRenderer::Metrics& metrics,
|
|||
|
||||
static inline void qskRenderFillRandom(
|
||||
const QskBoxRenderer::Metrics& metrics,
|
||||
const QskLinearGradient& gradient, ColoredLine* line )
|
||||
const QskGradient& gradient, ColoredLine* line )
|
||||
{
|
||||
const auto orientation = qskQtOrientation( gradient );
|
||||
|
||||
|
@ -1047,7 +1049,7 @@ static inline void qskRenderFillRandom(
|
|||
|
||||
static inline void qskRenderBoxRandom(
|
||||
const QskBoxRenderer::Metrics& metrics, const QskBoxBorderColors& borderColors,
|
||||
const QskLinearGradient& gradient, ColoredLine* fillLine, ColoredLine* borderLine )
|
||||
const QskGradient& gradient, ColoredLine* fillLine, ColoredLine* borderLine )
|
||||
{
|
||||
const auto& bc = borderColors;
|
||||
|
||||
|
@ -1099,7 +1101,7 @@ static inline void qskRenderBoxRandom(
|
|||
|
||||
static inline void qskRenderFillOrdered(
|
||||
const QskBoxRenderer::Metrics& metrics,
|
||||
const QskLinearGradient& gradient, ColoredLine* lines )
|
||||
const QskGradient& gradient, ColoredLine* lines )
|
||||
{
|
||||
const auto& r = metrics.innerQuad;
|
||||
|
||||
|
@ -1108,7 +1110,7 @@ static inline void qskRenderFillOrdered(
|
|||
implemented TODO ...
|
||||
*/
|
||||
|
||||
if ( gradient.isHorizontal() )
|
||||
if ( gradient.linearDirection().isHorizontal() )
|
||||
{
|
||||
HRectEllipseIterator it( metrics );
|
||||
QskVertex::fillOrdered( it, r.left, r.right, gradient, lines );
|
||||
|
@ -1333,7 +1335,7 @@ void QskBoxRenderer::renderRectellipseFill(
|
|||
|
||||
void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
||||
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border,
|
||||
const QskBoxBorderColors& borderColors, const QskLinearGradient& gradient,
|
||||
const QskBoxBorderColors& borderColors, const QskGradient& gradient,
|
||||
QSGGeometry& geometry )
|
||||
{
|
||||
const Metrics metrics( rect, shape, border );
|
||||
|
@ -1351,7 +1353,7 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
|||
#if 1
|
||||
// code copied from QskBoxRendererRect.cpp TODO ...
|
||||
|
||||
if ( gradient.isTilted() )
|
||||
if ( gradient.linearDirection().isTilted() )
|
||||
{
|
||||
if ( metrics.centerQuad.width == metrics.centerQuad.height )
|
||||
{
|
||||
|
@ -1394,7 +1396,7 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
|||
bool extraLine = false;
|
||||
if ( borderLineCount > 0 && fillLineCount > 0 )
|
||||
{
|
||||
if ( !gradient.isMonochrome() && gradient.isTilted() )
|
||||
if ( !gradient.isMonochrome() && gradient.linearDirection().isTilted() )
|
||||
{
|
||||
/*
|
||||
The filling ends at 45° and we have no implementation
|
||||
|
@ -1417,7 +1419,7 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
|||
}
|
||||
else if ( !gradient.isMonochrome() )
|
||||
{
|
||||
if ( gradient.stepCount() > 1 || gradient.isTilted() )
|
||||
if ( gradient.stepCount() > 1 || gradient.linearDirection().isTilted() )
|
||||
fillRandom = false;
|
||||
}
|
||||
|
||||
|
@ -1447,7 +1449,7 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
|||
{
|
||||
renderRectFill( metrics.innerQuad, gradient, line );
|
||||
}
|
||||
else if ( gradient.isTilted() )
|
||||
else if ( gradient.linearDirection().isTilted() )
|
||||
{
|
||||
renderDiagonalFill( metrics, gradient, fillLineCount, line );
|
||||
}
|
||||
|
@ -1483,7 +1485,7 @@ void QskBoxRenderer::renderRectellipse( const QRectF& rect,
|
|||
{
|
||||
renderRectFill( metrics.innerQuad, gradient, line );
|
||||
}
|
||||
else if ( gradient.isTilted() )
|
||||
else if ( gradient.linearDirection().isTilted() )
|
||||
{
|
||||
renderDiagonalFill( metrics, gradient, fillLineCount, line );
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include "QskBoxRenderer.h"
|
||||
#include "QskBoxRendererColorMap.h"
|
||||
#include "QskFunctions.h"
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
#include "QskVertex.h"
|
||||
|
||||
using namespace QskVertex;
|
||||
|
@ -343,14 +343,16 @@ namespace
|
|||
}
|
||||
|
||||
static inline void qskCreateFillOrdered( const QskBoxRenderer::Quad& rect,
|
||||
const QskLinearGradient& gradient, ColoredLine* line )
|
||||
const QskGradient& gradient, ColoredLine* line )
|
||||
{
|
||||
if ( gradient.isHorizontal() )
|
||||
const auto dir = gradient.linearDirection();
|
||||
|
||||
if ( dir.isHorizontal() )
|
||||
{
|
||||
HRectIterator it( rect );
|
||||
line = QskVertex::fillOrdered( it, rect.left, rect.right, gradient, line );
|
||||
}
|
||||
else if ( gradient.isVertical() )
|
||||
else if ( dir.isVertical() )
|
||||
{
|
||||
VRectIterator it( rect );
|
||||
line = QskVertex::fillOrdered( it, rect.top, rect.bottom, gradient, line );
|
||||
|
@ -554,7 +556,7 @@ void QskBoxRenderer::renderRectFill(
|
|||
void QskBoxRenderer::renderRect(
|
||||
const QRectF& rect, const QskBoxShapeMetrics& shape,
|
||||
const QskBoxBorderMetrics& border, const QskBoxBorderColors& borderColors,
|
||||
const QskLinearGradient& gradient, QSGGeometry& geometry )
|
||||
const QskGradient& gradient, QSGGeometry& geometry )
|
||||
{
|
||||
Q_UNUSED( shape )
|
||||
|
||||
|
@ -566,7 +568,7 @@ void QskBoxRenderer::renderRect(
|
|||
{
|
||||
fillLineCount = gradient.stepCount() + 1;
|
||||
|
||||
if ( gradient.isTilted() )
|
||||
if ( gradient.linearDirection().isTilted() )
|
||||
{
|
||||
if ( in.width == in.height )
|
||||
{
|
||||
|
@ -633,12 +635,13 @@ void QskBoxRenderer::renderRect(
|
|||
but we didn't implement a random fill algo for
|
||||
diagonal gradients yet.
|
||||
*/
|
||||
fillRandom = !gd.isTilted();
|
||||
fillRandom = !gd.linearDirection().isTilted();
|
||||
}
|
||||
|
||||
if ( fillRandom )
|
||||
{
|
||||
const auto orientation = gd.isVertical() ? Qt::Vertical : Qt::Horizontal;
|
||||
const auto orientation = gd.linearDirection().isVertical()
|
||||
? Qt::Vertical : Qt::Horizontal;
|
||||
|
||||
const ColorMapGradient colorMap( gd.startColor(), gd.endColor() );
|
||||
qskCreateFillRandom( orientation, in, colorMap, line );
|
||||
|
@ -668,7 +671,7 @@ void QskBoxRenderer::renderRect(
|
|||
}
|
||||
|
||||
void QskBoxRenderer::renderRectFill( const QskBoxRenderer::Quad& rect,
|
||||
const QskLinearGradient& gradient, QskVertex::ColoredLine* line )
|
||||
const QskGradient& gradient, QskVertex::ColoredLine* line )
|
||||
{
|
||||
qskCreateFillOrdered( rect, gradient, line );
|
||||
}
|
||||
|
|
|
@ -6,10 +6,7 @@
|
|||
#include "QskGradientMaterial.h"
|
||||
#include "QskFunctions.h"
|
||||
#include "QskRgbValue.h"
|
||||
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskRadialGradient.h"
|
||||
#include "QskConicGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
QSK_QT_PRIVATE_BEGIN
|
||||
#include <private/qrhi_p.h>
|
||||
|
@ -317,7 +314,7 @@ namespace
|
|||
{
|
||||
}
|
||||
|
||||
bool setGradient( const QRectF& rect, const QskLinearGradient& gradient )
|
||||
bool setGradient( const QRectF& rect, const QskGradient& gradient )
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
|
@ -337,11 +334,13 @@ namespace
|
|||
QTransform transform( rect.width(), 0, 0, rect.height(), rect.x(), rect.y());
|
||||
#endif
|
||||
|
||||
const auto dir = gradient.linearDirection();
|
||||
|
||||
const QVector4D vector(
|
||||
rect.left() + gradient.start().x() * rect.width(),
|
||||
rect.top() + gradient.start().y() * rect.height(),
|
||||
gradient.stop().x() * rect.width(),
|
||||
gradient.stop().y() * rect.height() );
|
||||
rect.left() + dir.start().x() * rect.width(),
|
||||
rect.top() + dir.start().y() * rect.height(),
|
||||
dir.stop().x() * rect.width(),
|
||||
dir.stop().y() * rect.height() );
|
||||
|
||||
if ( m_gradientVector != vector )
|
||||
{
|
||||
|
@ -476,7 +475,7 @@ namespace
|
|||
return &type;
|
||||
}
|
||||
|
||||
bool setGradient( const QRectF& rect, const QskRadialGradient& gradient )
|
||||
bool setGradient( const QRectF& rect, const QskGradient& gradient )
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
|
@ -492,14 +491,14 @@ namespace
|
|||
changed = true;
|
||||
}
|
||||
|
||||
const auto& center = gradient.center();
|
||||
const auto r = gradient.radius();
|
||||
const auto dir = gradient.radialDirection();
|
||||
|
||||
const QVector2D pos(
|
||||
rect.left() + center.x() * rect.width(),
|
||||
rect.top() + center.y() * rect.height() );
|
||||
rect.left() + dir.center().x() * rect.width(),
|
||||
rect.top() + dir.center().y() * rect.height() );
|
||||
|
||||
const QVector2D radius( r * rect.width(), r * rect.height() );
|
||||
const QVector2D radius( dir.radius() * rect.width(),
|
||||
dir.radius() * rect.height() );
|
||||
|
||||
if ( ( pos != m_center ) || ( m_radius != radius ) )
|
||||
{
|
||||
|
@ -647,7 +646,7 @@ namespace
|
|||
return &type;
|
||||
}
|
||||
|
||||
bool setGradient( const QRectF& rect, const QskConicGradient& gradient )
|
||||
bool setGradient( const QRectF& rect, const QskGradient& gradient )
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
|
@ -663,17 +662,19 @@ namespace
|
|||
changed = true;
|
||||
}
|
||||
|
||||
const auto dir = gradient.conicDirection();
|
||||
|
||||
const QVector2D center(
|
||||
rect.left() + gradient.center().x() * rect.width(),
|
||||
rect.top() + gradient.center().y() * rect.height() );
|
||||
rect.left() + dir.center().x() * rect.width(),
|
||||
rect.top() + dir.center().y() * rect.height() );
|
||||
|
||||
// Angles as ratio of a rotation
|
||||
|
||||
float start = fmod( gradient.startAngle(), 360.0 ) / 360.0;
|
||||
float start = fmod( dir.startAngle(), 360.0 ) / 360.0;
|
||||
if ( start < 0.0)
|
||||
start += 1.0;
|
||||
|
||||
const float span = fmod( gradient.spanAngle(), 360.0 ) / 360.0;
|
||||
const float span = fmod( dir.spanAngle(), 360.0 ) / 360.0;
|
||||
|
||||
if ( center != m_center )
|
||||
{
|
||||
|
@ -842,19 +843,19 @@ bool QskGradientMaterial::updateGradient( const QRectF& rect, const QskGradient&
|
|||
case QskGradient::Linear:
|
||||
{
|
||||
auto material = static_cast< LinearMaterial* >( this );
|
||||
return material->setGradient( rect, gradient.asLinearGradient() );
|
||||
return material->setGradient( rect, gradient );
|
||||
}
|
||||
|
||||
case QskGradient::Radial:
|
||||
{
|
||||
auto material = static_cast< RadialMaterial* >( this );
|
||||
return material->setGradient( rect, gradient.asRadialGradient() );
|
||||
return material->setGradient( rect, gradient );
|
||||
}
|
||||
|
||||
case QskGradient::Conic:
|
||||
{
|
||||
auto material = static_cast< ConicMaterial* >( this );
|
||||
return material->setGradient( rect, gradient.asConicGradient() );
|
||||
return material->setGradient( rect, gradient );
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "QskShapeNode.h"
|
||||
#include "QskGradientMaterial.h"
|
||||
#include "QskGradient.h"
|
||||
#include "QskLinearGradient.h"
|
||||
#include "QskGradientDirection.h"
|
||||
|
||||
#include <qsgflatcolormaterial.h>
|
||||
|
||||
|
@ -19,7 +19,13 @@ QSK_QT_PRIVATE_END
|
|||
static inline QskGradient qskEffectiveGradient( const QskGradient& gradient )
|
||||
{
|
||||
if ( gradient.type() == QskGradient::Stops )
|
||||
return QskLinearGradient( Qt::Vertical, gradient.stops() );
|
||||
{
|
||||
QskGradient g;
|
||||
g.setLinearDirection( Qt::Vertical );
|
||||
g.setStops( gradient.stops() );
|
||||
|
||||
return g;
|
||||
}
|
||||
|
||||
return gradient;
|
||||
}
|
||||
|
|
|
@ -26,10 +26,8 @@ HEADERS += \
|
|||
common/QskFunctions.h \
|
||||
common/QskGlobal.h \
|
||||
common/QskGradient.h \
|
||||
common/QskGradientDirection.h \
|
||||
common/QskGradientStop.h \
|
||||
common/QskConicGradient.h \
|
||||
common/QskLinearGradient.h \
|
||||
common/QskRadialGradient.h \
|
||||
common/QskHctColor.h \
|
||||
common/QskIntervalF.h \
|
||||
common/QskMargins.h \
|
||||
|
@ -58,9 +56,7 @@ SOURCES += \
|
|||
common/QskBoxHints.cpp \
|
||||
common/QskFunctions.cpp \
|
||||
common/QskGradient.cpp \
|
||||
common/QskConicGradient.cpp \
|
||||
common/QskLinearGradient.cpp \
|
||||
common/QskRadialGradient.cpp \
|
||||
common/QskGradientDirection.cpp \
|
||||
common/QskGradientStop.cpp \
|
||||
common/QskHctColor.cpp \
|
||||
common/QskIntervalF.cpp \
|
||||
|
|
Loading…
Reference in New Issue