mirror of
https://github.com/Serial-Studio/Serial-Studio.git
synced 2025-01-15 05:22:53 +08:00
76 lines
2.5 KiB
C++
76 lines
2.5 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_OPENGL_CANVAS_H
|
|
#define QWT_PLOT_OPENGL_CANVAS_H
|
|
|
|
#include "qwt_global.h"
|
|
#include "qwt_plot_abstract_canvas.h"
|
|
|
|
#include <qopenglwidget.h>
|
|
|
|
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( const QSurfaceFormat&, 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( const QSurfaceFormat& );
|
|
virtual void clearBackingStore() QWT_OVERRIDE;
|
|
|
|
class PrivateData;
|
|
PrivateData* m_data;
|
|
};
|
|
|
|
#endif
|