mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 10:13:19 +02:00
75 lines
1.2 KiB
C++
75 lines
1.2 KiB
C++
#include "sim_plot_panel.h"
|
|
|
|
static SIM_PLOT_PANEL *panel = NULL;
|
|
|
|
static int drawPlotFunc( mglGraph *graph )
|
|
{
|
|
|
|
printf("DrawPlot [%d traces]!\n", panel->m_traces.size());
|
|
|
|
graph->Clf();
|
|
//graph->SetRanges(-10e-3,10e-3,-2,2);
|
|
graph->Axis("x");
|
|
graph->Label('x',"Time",0);
|
|
graph->SetRange('x', 0, 10e-3);
|
|
|
|
graph->Axis("y");
|
|
graph->Label('y',"Voltage",0);
|
|
graph->SetRange('y', -1.5, 1.5);
|
|
|
|
|
|
for(auto t : panel->m_traces)
|
|
{
|
|
graph->AddLegend((const char *)t.name.c_str(),"");
|
|
graph->Plot(t.y);
|
|
}
|
|
|
|
graph->Box();
|
|
graph->Grid();
|
|
if ( panel->m_traces.size() )
|
|
graph->Legend(1,"-#");
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
SIM_PLOT_PANEL::SIM_PLOT_PANEL( wxWindow * parent,
|
|
wxWindowID id,
|
|
const wxPoint & pos,
|
|
const wxSize & size,
|
|
long style,
|
|
const wxString & name )
|
|
: wxMathGL ( parent, id, pos, size, style, name )
|
|
{
|
|
panel = this;
|
|
|
|
AutoResize = true;
|
|
SetDraw( drawPlotFunc );
|
|
// Update();
|
|
}
|
|
|
|
|
|
SIM_PLOT_PANEL::~SIM_PLOT_PANEL()
|
|
{
|
|
|
|
}
|
|
|
|
void SIM_PLOT_PANEL::AddTrace(const wxString& name, int n_points, double *t, double *x, int flags )
|
|
{
|
|
Trace trace;
|
|
|
|
trace.name = name;
|
|
trace.x.Set(t, n_points);
|
|
trace.y.Set(x, n_points);
|
|
|
|
m_traces.push_back(trace);
|
|
Update();
|
|
}
|
|
|
|
void SIM_PLOT_PANEL::DeleteTraces()
|
|
{
|
|
m_traces.clear();
|
|
Update();
|
|
}
|