ResInsight/ThirdParty/Qwt/playground/shapes/shapes.cpp

101 lines
2.2 KiB
C++

#include <qapplication.h>
#include <qpainterpath.h>
#include <qwt_plot.h>
#include <qwt_legend.h>
#include <qwt_point_data.h>
#include <qwt_plot_canvas.h>
#include <qwt_plot_panner.h>
#include <qwt_plot_magnifier.h>
#include <qwt_plot_shapeitem.h>
#include <qwt_scale_engine.h>
class Plot : public QwtPlot
{
public:
Plot( QWidget *parent = NULL );
private:
void populate();
};
Plot::Plot( QWidget *parent ):
QwtPlot( parent )
{
setPalette( QColor( 60, 60, 60 ) );
canvas()->setPalette( Qt::white );
// panning with the left mouse button
( void ) new QwtPlotPanner( canvas() );
// zoom in/out with the wheel
( void ) new QwtPlotMagnifier( canvas() );
setTitle( "Shapes" );
insertLegend( new QwtLegend(), QwtPlot::RightLegend );
// axes
setAxisTitle( xBottom, "x -->" );
setAxisTitle( yLeft, "y -->" );
#if 0
setAxisScaleEngine( xBottom, new QwtLog10ScaleEngine );
setAxisScaleEngine( yLeft, new QwtLog10ScaleEngine );
#endif
populate();
}
void Plot::populate()
{
const double d = 900.0;
const QRectF rect( 1.0, 1.0, d, d );
QPainterPath path;
//path.setFillRule( Qt::WindingFill );
path.addEllipse( rect );
const QRectF rect2 = rect.adjusted( 0.2 * d, 0.3 * d, -0.22 * d, 1.5 * d );
path.addEllipse( rect2 );
#if 0
QFont font;
font.setPointSizeF( 200 );
QPainterPath textPath;
textPath.addText( rect.center(), font, "Seppi" );
QTransform transform;
transform.translate( rect.center().x() - 600, rect.center().y() + 50 );
transform.rotate( 180.0, Qt::XAxis );
textPath = transform.map( textPath );
path.addPath( textPath );
#endif
QwtPlotShapeItem *item = new QwtPlotShapeItem( "Shape" );
item->setItemAttribute( QwtPlotItem::Legend, true );
item->setRenderHint( QwtPlotItem::RenderAntialiased, true );
#if 1
item->setRenderTolerance( 1.0 );
#endif
item->setShape( path );
item->setPen( Qt::yellow );
QColor c = Qt::darkRed;
c.setAlpha( 100 );
item->setBrush( c );
item->attach( this );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
Plot plot;
plot.resize( 600, 400 );
plot.show();
return a.exec();
}