QGIS/external/qwt-6.3.0/qwt_plot_glcanvas.h
Juergen E. Fischer 33fc476d89 * replace external qwtpolar with qwt 6.3
* require qwt >=6.2 (and fallback to internal 6.3 if system's qwt doesn't suffice)
* debian doesn't have qwt for Qt6 and won't have it for trixie
2025-07-23 07:11:51 +10:00

87 lines
2.9 KiB
C++

/******************************************************************************
* 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_GLCANVAS_H
#define QWT_PLOT_GLCANVAS_H
#include "qwt_global.h"
#include "qwt_plot_abstract_canvas.h"
#include <qgl.h>
class QwtPlot;
/*!
\brief An alternative canvas for a QwtPlot derived from QGLWidget
QwtPlotGLCanvas implements the very basics to act as canvas
inside of a QwtPlot widget. It might be extended to a full
featured alternative to QwtPlotCanvas in a future version of Qwt.
Even if QwtPlotGLCanvas is not derived from QFrame it imitates
its API. When using style sheets it supports the box model - beside
backgrounds with rounded borders.
Since Qt 5.4 QOpenGLWidget is available, that is used by QwtPlotOpenGLCanvas.
\sa QwtPlot::setCanvas(), QwtPlotCanvas, QwtPlotOpenGLCanvas
\note With Qt4 you might want to use the QPaintEngine::OpenGL paint engine
( see QGL::setPreferredPaintEngine() ). On a Linux test system
QPaintEngine::OpenGL2 shows very basic problems like translated
geometries.
\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 QGLWidget, but is usually
better integrated into a desktop application.
*/
class QWT_EXPORT QwtPlotGLCanvas : public QGLWidget, 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 QwtPlotGLCanvas( QwtPlot* = NULL );
explicit QwtPlotGLCanvas( const QGLFormat&, QwtPlot* = NULL );
virtual ~QwtPlotGLCanvas();
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