/****************************************************************************** * Qwt Widget Library * Copyright (C) 1997 Josef Wilgen * Copyright (C) 2002 Uwe Rathmann * * This library is free software; you can redistribute it and/or * modify it under the terms of the Qwt License, Version 1.0 *****************************************************************************/ #ifndef QWT_PLOT_OPENGL_CANVAS_H #define QWT_PLOT_OPENGL_CANVAS_H #include "qwt_global.h" #include "qwt_plot_abstract_canvas.h" #include class QwtPlot; /*! \brief An alternative canvas for a QwtPlot derived from QOpenGLWidget Even if QwtPlotOpenGLCanvas is not derived from QFrame it imitates its API. When using style sheets it supports the box model - beside backgrounds with rounded borders. \sa QwtPlot::setCanvas(), QwtPlotCanvas, QwtPlotCanvas::OpenGLBuffer \note Another way for getting hardware accelerated graphics is using an OpenGL offscreen buffer ( QwtPlotCanvas::OpenGLBuffer ) with QwtPlotCanvas. Performance is worse, than rendering straight to a QOpenGLWidget, but is usually better integrated into a desktop application. */ class QWT_EXPORT QwtPlotOpenGLCanvas : public QOpenGLWidget, public QwtPlotAbstractGLCanvas { Q_OBJECT Q_PROPERTY( QFrame::Shadow frameShadow READ frameShadow WRITE setFrameShadow ) Q_PROPERTY( QFrame::Shape frameShape READ frameShape WRITE setFrameShape ) Q_PROPERTY( int lineWidth READ lineWidth WRITE setLineWidth ) Q_PROPERTY( int midLineWidth READ midLineWidth WRITE setMidLineWidth ) Q_PROPERTY( int frameWidth READ frameWidth ) Q_PROPERTY( QRect frameRect READ frameRect DESIGNABLE false ) Q_PROPERTY( double borderRadius READ borderRadius WRITE setBorderRadius ) public: explicit QwtPlotOpenGLCanvas( QwtPlot* = NULL ); explicit QwtPlotOpenGLCanvas( int samples, QwtPlot* = NULL); virtual ~QwtPlotOpenGLCanvas(); Q_INVOKABLE virtual void invalidateBackingStore() QWT_OVERRIDE; Q_INVOKABLE QPainterPath borderPath( const QRect& ) const; virtual bool event( QEvent* ) QWT_OVERRIDE; public Q_SLOTS: void replot(); protected: virtual void paintEvent( QPaintEvent* ) QWT_OVERRIDE; virtual void initializeGL() QWT_OVERRIDE; virtual void paintGL() QWT_OVERRIDE; virtual void resizeGL( int width, int height ) QWT_OVERRIDE; private: void init(); virtual void clearBackingStore() QWT_OVERRIDE; class PrivateData; PrivateData* m_data; }; #endif