void GradientRenderer::paint(QPainter *p) { QPolygonF pts = m_hoverPoints->points(); QGradient g; if (m_gradientType == Qt::LinearGradientPattern) { g = QLinearGradient(pts.at(0), pts.at(1)); } else if (m_gradientType == Qt::RadialGradientPattern) { g = QRadialGradient(pts.at(0), qMin(width(), height()) / 3.0, pts.at(1)); } else { QLineF l(pts.at(0), pts.at(1)); qreal angle = l.angle(QLineF(0, 0, 1, 0)); if (l.dy() > 0) angle = 360 - angle; g = QConicalGradient(pts.at(0), angle); } for (int i=0; i<m_stops.size(); ++i) g.setColorAt(m_stops.at(i).first, m_stops.at(i).second); g.setSpread(m_spread); p->setBrush(g); p->setPen(Qt::NoPen); p->drawRect(rect()); }
QGradient GradientRangeEditor::gradient() const { QGradient g; switch( gradientType ) { case QGradient::LinearGradient: g = QLinearGradient( _startPoint, _endPoint ); break; case QGradient::RadialGradient: { QLineF l( _startPoint, _endPoint ); if( l.length() > 0.5 ) l.setLength( 0.5 - 0.001 ); g = QRadialGradient( l.p1(), 0.5, l.p2() ); break; } default: g = QConicalGradient( _startPoint, angle() ); break; } g.setStops( stops ); g.setSpread( spreadType ); return g; }
void tst_QBrush::operator_eq_eq_data() { QTest::addColumn<QBrush>("brush1"); QTest::addColumn<QBrush>("brush2"); QTest::addColumn<bool>("isEqual"); QLinearGradient lg(10, 10, 100, 100); lg.setColorAt(0, Qt::red); lg.setColorAt(0.5, Qt::blue); lg.setColorAt(1, Qt::green); QTest::newRow("black vs black") << QBrush(Qt::black) << QBrush(Qt::black) << true; QTest::newRow("black vs blue") << QBrush(Qt::black) << QBrush(Qt::blue) << false; QTest::newRow("red vs no") << QBrush(Qt::red) << QBrush(Qt::NoBrush) << false; QTest::newRow("no vs no") << QBrush(Qt::NoBrush) << QBrush(Qt::NoBrush) << true; QTest::newRow("lg vs same lg") << QBrush(lg) << QBrush(lg) << true; QTest::newRow("lg vs diff lg") << QBrush(lg) << QBrush(QLinearGradient(QPoint(0, 0), QPoint(1, 1))) << false; QTest::newRow("rad vs con") << QBrush(QRadialGradient(0, 0, 0, 0, 0)) << QBrush(QConicalGradient(0, 0, 0)) << false; QBrush b1(lg); QBrush b2(lg); b1.setTransform(QTransform().scale(2, 2)); QTest::newRow("lg with transform vs same lg") << b1 << b2 << false; b2.setTransform(QTransform().scale(2, 2)); QTest::newRow("lg w/transform vs same lg w/same transform") << b1 << b2 << true; }
CircularIndicatorMeterWidget::CircularIndicatorMeterWidget(QString Name, QWidget *parent, QString Source) : MeterWidget(Name, parent, Source) { //defaut settings IndicatorGradient = QConicalGradient(0, 0, 150); IndicatorGradient.setColorAt(0.0, QColor(255,0,0,180)); IndicatorGradient.setColorAt(0.3, QColor(255,255,0,180)); IndicatorGradient.setColorAt(0.7, QColor(0,255,0,180)); IndicatorGradient.setColorAt(1.0, QColor(0,255,0,180)); }
void tst_QBrush::stream_data() { QTest::addColumn<QBrush>("brush"); QLinearGradient lg(10, 10, 100, 100); lg.setColorAt(0, Qt::red); lg.setColorAt(0.5, Qt::blue); lg.setColorAt(1, Qt::green); QTest::newRow("black") << QBrush(Qt::black); QTest::newRow("red") << QBrush(Qt::red); QTest::newRow("no") << QBrush(Qt::NoBrush); QTest::newRow("lg") << QBrush(lg); QTest::newRow("rad") << QBrush(QRadialGradient(0, 0, 0, 0, 0)); QTest::newRow("con") << QBrush(QConicalGradient(0, 0, 0)); }
void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setPen(Qt::NoPen); painter.setRenderHint(QPainter::Antialiasing); if(currentBrush->style() == Qt::LinearGradientPattern) { currentBrush = new QBrush(QLinearGradient(0, 0, width(), 60)); } else if(currentBrush->style() == Qt::RadialGradientPattern) { QRadialGradient radial(width() / 2, 30, width() / 2, width() / 2, 30); radial.setColorAt(0, Qt::white); radial.setColorAt(1, Qt::black); currentBrush = new QBrush(radial); } else if(currentBrush->style() == Qt::ConicalGradientPattern) { currentBrush = new QBrush(QConicalGradient(width() / 2, 30, 90)); } painter.setBrush(*currentBrush); QPainterPath path; path.addRect(0, 0, parentWidget()->width(), 60); painter.drawPath(path); }
QgsColorWheel::QgsColorWheel( QWidget *parent ) : QgsColorWidget( parent ) , mMargin( 4 ) , mWheelThickness( 18 ) , mClickedPart( QgsColorWheel::None ) , mWheelImage( nullptr ) , mTriangleImage( nullptr ) , mWidgetImage( nullptr ) , mWheelDirty( true ) , mTriangleDirty( true ) { //create wheel hue brush - only do this once QConicalGradient wheelGradient = QConicalGradient( 0, 0, 0 ); int wheelStops = 20; QColor gradColor = QColor::fromHsvF( 1.0, 1.0, 1.0 ); for ( int pos = 0; pos <= wheelStops; ++pos ) { double relativePos = ( double )pos / wheelStops; gradColor.setHsvF( relativePos, 1, 1 ); wheelGradient.setColorAt( relativePos, gradColor ); } mWheelBrush = QBrush( wheelGradient ); }
StyleWidget::StyleWidget(QWidget *parent) : QWidget(parent) { solid = new RenderArea(new QBrush(Qt::SolidPattern)); dense1 = new RenderArea(new QBrush(Qt::Dense1Pattern)); dense2 = new RenderArea(new QBrush(Qt::Dense2Pattern)); dense3 = new RenderArea(new QBrush(Qt::Dense3Pattern)); dense4 = new RenderArea(new QBrush(Qt::Dense4Pattern)); dense5 = new RenderArea(new QBrush(Qt::Dense5Pattern)); dense6 = new RenderArea(new QBrush(Qt::Dense6Pattern)); dense7 = new RenderArea(new QBrush(Qt::Dense7Pattern)); no = new RenderArea(new QBrush(Qt::NoBrush)); hor = new RenderArea(new QBrush(Qt::HorPattern)); ver = new RenderArea(new QBrush(Qt::VerPattern)); cross = new RenderArea(new QBrush(Qt::CrossPattern)); bdiag = new RenderArea(new QBrush(Qt::BDiagPattern)); fdiag = new RenderArea(new QBrush(Qt::FDiagPattern)); diagCross = new RenderArea(new QBrush(Qt::DiagCrossPattern)); linear = new RenderArea(new QBrush(QLinearGradient())); radial = new RenderArea(new QBrush(QRadialGradient())); conical = new RenderArea(new QBrush(QConicalGradient())); texture = new RenderArea(new QBrush(QPixmap("qt-logo.png"))); solidLabel = new QLabel("Qt::SolidPattern"); dense1Label = new QLabel("Qt::Dense1Pattern"); dense2Label = new QLabel("Qt::Dense2Pattern"); dense3Label = new QLabel("Qt::Dense3Pattern"); dense4Label = new QLabel("Qt::Dense4Pattern"); dense5Label = new QLabel("Qt::Dense5Pattern"); dense6Label = new QLabel("Qt::Dense6Pattern"); dense7Label = new QLabel("Qt::Dense7Pattern"); noLabel = new QLabel("Qt::NoPattern"); horLabel = new QLabel("Qt::HorPattern"); verLabel = new QLabel("Qt::VerPattern"); crossLabel = new QLabel("Qt::CrossPattern"); bdiagLabel = new QLabel("Qt::BDiagPattern"); fdiagLabel = new QLabel("Qt::FDiagPattern"); diagCrossLabel = new QLabel("Qt::DiagCrossPattern"); linearLabel = new QLabel("Qt::LinearGradientPattern"); radialLabel = new QLabel("Qt::RadialGradientPattern"); conicalLabel = new QLabel("Qt::ConicalGradientPattern"); textureLabel = new QLabel("Qt::TexturePattern"); QGridLayout *layout = new QGridLayout; layout->addWidget(solid, 0, 0); layout->addWidget(dense1, 0, 1); layout->addWidget(dense2, 0, 2); layout->addWidget(solidLabel, 1, 0); layout->addWidget(dense1Label, 1, 1); layout->addWidget(dense2Label, 1, 2); layout->addWidget(dense3, 2, 0 ); layout->addWidget(dense4, 2, 1); layout->addWidget(dense5, 2, 2); layout->addWidget(dense3Label, 3, 0); layout->addWidget(dense4Label, 3, 1); layout->addWidget(dense5Label, 3, 2); layout->addWidget(dense6, 4, 0); layout->addWidget(dense7, 4, 1); layout->addWidget(no, 4, 2); layout->addWidget(dense6Label, 5, 0); layout->addWidget(dense7Label, 5, 1); layout->addWidget(noLabel, 5, 2); layout->addWidget(hor, 6, 0); layout->addWidget(ver, 6, 1); layout->addWidget(cross, 6, 2); layout->addWidget(horLabel, 7, 0); layout->addWidget(verLabel, 7, 1); layout->addWidget(crossLabel, 7, 2); layout->addWidget(bdiag, 8, 0); layout->addWidget(fdiag, 8, 1); layout->addWidget(diagCross, 8, 2); layout->addWidget(bdiagLabel, 9, 0); layout->addWidget(fdiagLabel, 9, 1); layout->addWidget(diagCrossLabel, 9, 2); layout->addWidget(linear, 10, 0); layout->addWidget(radial, 10, 1); layout->addWidget(conical, 10, 2); layout->addWidget(linearLabel, 11, 0); layout->addWidget(radialLabel, 11, 1); layout->addWidget(conicalLabel, 11, 2); layout->addWidget(texture, 12, 0, 1, 3); layout->addWidget(textureLabel, 13, 0, 1, 3); setLayout(layout); QPalette newPalette = palette(); newPalette.setColor(QPalette::Window, Qt::white); setPalette(newPalette); setWindowTitle(tr("Brush Styles")); resize(430, 605); }