qskinny/playground/plots/QskPlotView.h
2023-11-28 13:36:47 +01:00

57 lines
1.4 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#pragma once
#include "QskControl.h"
#include "QskPlotNamespace.h"
class QskPlotItem;
class QskTickmarks;
class QskIntervalF;
class QTransform;
class QskPlotView : public QskControl
{
Q_OBJECT
using Inherited = QskControl;
public:
QSK_SUBCONTROLS( Panel, AxisScale, Canvas )
QskPlotView( QQuickItem* parent = nullptr );
~QskPlotView() override;
void setBoundaries( QskPlot::Axis, qreal, qreal );
void setBoundaries( QskPlot::Axis, const QskIntervalF& );
QskIntervalF boundaries( QskPlot::Axis axis ) const;
QskTickmarks tickmarks( QskPlot::Axis axis ) const;
// scales -> item coordinates
QTransform transformation( QskPlot::Axis xAxis, QskPlot::Axis yAxis ) const;
QRectF canvasRect() const;
virtual QVariant labelAt( QskPlot::Axis, qreal pos ) const;
protected:
void geometryChange( const QRectF&, const QRectF& ) override;
void updateNode( QSGNode* ) override;
void updateResources() override;
void changeEvent( QEvent* ) override;
private:
friend class QskPlotItem;
void attachItem( QskPlotItem* );
void detachItem( QskPlotItem* );
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};