SIM_PLOT_PAINTER class
This commit is contained in:
parent
ae5424c44a
commit
91d1f7135b
|
@ -24,45 +24,12 @@
|
||||||
|
|
||||||
#include "sim_plot_panel.h"
|
#include "sim_plot_panel.h"
|
||||||
|
|
||||||
static SIM_PLOT_PANEL* panel = NULL;
|
|
||||||
|
|
||||||
static int drawPlotFunc( mglGraph* aGraph )
|
|
||||||
{
|
|
||||||
aGraph->Clf();
|
|
||||||
//aGraph->SetRanges(-10e-3,10e-3,-2,2);
|
|
||||||
aGraph->Axis( "x" );
|
|
||||||
aGraph->Label( 'x', "Time", 0 );
|
|
||||||
aGraph->SetRange( 'x', 0, 10e-3 );
|
|
||||||
|
|
||||||
aGraph->Axis( "y" );
|
|
||||||
aGraph->Label( 'y', "Voltage", 0 );
|
|
||||||
aGraph->SetRange( 'y', -1.5, 1.5 );
|
|
||||||
|
|
||||||
for( auto t : panel->m_traces )
|
|
||||||
{
|
|
||||||
aGraph->AddLegend( (const char*) t.name.c_str(), "" );
|
|
||||||
aGraph->Plot( t.y );
|
|
||||||
}
|
|
||||||
|
|
||||||
aGraph->Box();
|
|
||||||
aGraph->Grid();
|
|
||||||
|
|
||||||
if( panel->m_traces.size() )
|
|
||||||
aGraph->Legend( 1, "-#" );
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SIM_PLOT_PANEL::SIM_PLOT_PANEL( wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
SIM_PLOT_PANEL::SIM_PLOT_PANEL( wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
||||||
const wxSize& size, long style, const wxString& name )
|
const wxSize& size, long style, const wxString& name )
|
||||||
: wxMathGL( parent, id, pos, size, style, name )
|
: wxMathGL( parent, id, pos, size, style, name ), m_painter( this )
|
||||||
{
|
{
|
||||||
panel = this;
|
|
||||||
|
|
||||||
AutoResize = true;
|
AutoResize = true;
|
||||||
SetDraw( drawPlotFunc );
|
SetDraw( &m_painter );
|
||||||
// Update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,3 +57,36 @@ void SIM_PLOT_PANEL::DeleteTraces()
|
||||||
m_traces.clear();
|
m_traces.clear();
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SIM_PLOT_PAINTER::Draw( mglGraph* aGraph )
|
||||||
|
{
|
||||||
|
const std::vector<SIM_PLOT_PANEL::TRACE>& traces = m_parent->m_traces;
|
||||||
|
|
||||||
|
aGraph->Clf();
|
||||||
|
|
||||||
|
//aGraph->SetRanges(-10e-3,10e-3,-2,2);
|
||||||
|
aGraph->Axis( "x" );
|
||||||
|
aGraph->Label( 'x', "Time", 0 );
|
||||||
|
//aGraph->SetRange( 'x', 0, 10e-3 );
|
||||||
|
|
||||||
|
aGraph->Axis( "y" );
|
||||||
|
aGraph->Label( 'y', "Voltage", 0 );
|
||||||
|
//aGraph->SetRange( 'y', -1.5, 1.5 );
|
||||||
|
|
||||||
|
for( auto t : traces )
|
||||||
|
{
|
||||||
|
aGraph->AddLegend( (const char*) t.name.c_str(), "" );
|
||||||
|
aGraph->Plot( t.y );
|
||||||
|
}
|
||||||
|
|
||||||
|
aGraph->Box();
|
||||||
|
aGraph->Grid();
|
||||||
|
|
||||||
|
if( traces.size() )
|
||||||
|
aGraph->Legend( 1, "-#" );
|
||||||
|
|
||||||
|
aGraph->SetAutoRanges( 0, 0, 0, 0 );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -25,9 +25,31 @@
|
||||||
#ifndef __SIM_PLOT_PANEL_H
|
#ifndef __SIM_PLOT_PANEL_H
|
||||||
#define __SIM_PLOT_PANEL_H
|
#define __SIM_PLOT_PANEL_H
|
||||||
|
|
||||||
#include "mgl2/canvas_wnd.h"
|
|
||||||
#include "mgl2/wx.h"
|
#include "mgl2/wx.h"
|
||||||
|
|
||||||
|
class SIM_PLOT_PANEL;
|
||||||
|
|
||||||
|
class SIM_PLOT_PAINTER : public mglDraw
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SIM_PLOT_PAINTER( SIM_PLOT_PANEL* aParent )
|
||||||
|
: m_parent( aParent )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
~SIM_PLOT_PAINTER()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//void Click() override;
|
||||||
|
|
||||||
|
int Draw( mglGraph* aGraph ) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SIM_PLOT_PANEL* m_parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class SIM_PLOT_PANEL : public wxMathGL
|
class SIM_PLOT_PANEL : public wxMathGL
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -45,6 +67,9 @@ public:
|
||||||
|
|
||||||
void AddTrace( const wxString& name, int n_points, double *t, double *x, int flags = 0 );
|
void AddTrace( const wxString& name, int n_points, double *t, double *x, int flags = 0 );
|
||||||
void DeleteTraces();
|
void DeleteTraces();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SIM_PLOT_PAINTER m_painter;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue