00001 #include "GradientRenderer.h"
00002
00003 GradientRenderer::GradientRenderer(QWidget *parent): QWidget(parent)
00004 {
00005 printf("creating GradientRenderer\n");
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 m_spread = QGradient::PadSpread;
00019 m_gradientType = Qt::LinearGradientPattern;
00020 }
00021
00022 void GradientRenderer::paintEvent(QPaintEvent *event)
00023 {
00024 QPainter painter;
00025 painter.begin(this);
00026 painter.setRenderHint(QPainter::Antialiasing);
00027 paint(&painter);
00028 painter.end();
00029 }
00030
00031 void GradientRenderer::setGradientStops(const QGradientStops &stops)
00032 {
00033 m_stops = stops;
00034 update();
00035 }
00036
00037
00038 void GradientRenderer::paint(QPainter *p)
00039 {
00040 QPalette pal = palette();
00041 pal.setBrush( backgroundRole(), QBrush(QColor( Qt::black )) );
00042 setAutoFillBackground( true );
00043 setPalette( pal );
00044
00045 QPolygonF pts;
00046
00047
00048 pts << QPointF(0.0, (float) rect().height() / 2) << QPointF((float) rect().width(), (float) rect().height() / 2);
00049
00050 QGradient g;
00051
00052
00053
00054 g = QLinearGradient(pts.at(0), pts.at(1));
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 for (int i=0; i<m_stops.size(); ++i)
00071 {
00072 g.setColorAt( m_stops.at(i).first, m_stops.at(i).second );
00073 }
00074
00075 g.setSpread(m_spread);
00076
00077 p->setBrush(g);
00078 p->setPen(Qt::NoPen);
00079
00080 p->drawRect(rect());
00081 }