21 #include <cairo_base.h> 23 #include <TCL_obj_base.h> 31 #include <boost/date_time/posix_time/posix_time_types.hpp> 32 #include <boost/date_time/posix_time/ptime.hpp> 48 static constexpr
double portSpace=10;
49 double clickX, clickY, oldLegendLeft,
oldLegendTop, oldLegendFontSz;
55 classdesc::Exclude<boost::posix_time::ptime>
56 lastAdd{boost::posix_time::microsec_clock::local_time()},
57 lastAccumulatedBlitTime{boost::posix_time::microsec_clock::local_time()};
61 mutable bool justDataChanged=
false;
62 friend struct PlotItem;
64 bool xIsSecsSinceEpoch=
false;
65 bool redraw(
int,
int,
int,
int)
override;
71 mutable double yoffs=0;
73 Formatter formatter=defaultFormatter;
77 size_t startPen(
size_t port)
const;
79 bool clearPensOnLabelling=
false;
84 using ecolab::CairoSurface::surface;
87 static constexpr
unsigned nBoundsPorts=6;
90 std::vector<std::vector<std::shared_ptr<VariableValue>>>
yvars;
91 std::vector<std::shared_ptr<VariableValue>>
xvars;
95 void labelPen(
size_t pen,
const std::string& label) {
96 if (clearPensOnLabelling) {penLabels.clear(); clearPensOnLabelling=
false;}
97 if (penLabels.size()<=pen+1) penLabels.resize(pen+1);
103 std::shared_ptr<VariableValue> xminVar, xmaxVar,
yminVar, ymaxVar, y1minVar, y1maxVar;
106 double xmin=nan(
""), xmax=xmin, ymin=xmin, ymax=xmin, y1min=xmin, y1max=xmin;
108 unsigned displayNTicks{3};
109 double displayFontSize{3};
117 PlotType plotType=automatic;
126 size_t numLines(
size_t n);
137 std::string
const&
xlabel()
const {
return m_xlabel;}
138 std::string
const&
xlabel(
const std::string& x) {
142 std::string
const&
ylabel()
const {
return m_ylabel;}
143 std::string
const&
ylabel(
const std::string& x) {
147 std::string
const&
y1label()
const {
return m_y1label;}
148 std::string
const&
y1label(
const std::string& x) {
155 double barWidth()
const;
156 double barWidth(
double w);
159 void addPlotPt(
double t);
162 void addConstantCurves();
164 void connectVar(
const std::shared_ptr<VariableValue>&
var,
unsigned port);
165 void disconnectAllVars();
166 using ecolab::Plot::draw;
167 void draw(cairo_t* cairo)
const override;
168 void requestRedraw();
172 void makeDisplayPlot();
174 void resize(
const LassoBox&)
override;
180 void autoScale() {xminVar=xmaxVar=yminVar=ymaxVar=y1minVar=y1maxVar=
nullptr;}
186 void mouseMove(
float,
float)
override;
191 bool onMouseOver(
float,
float)
override;
197 void exportAsCSV(
const string& filename) {ecolab::Plot::exportAsCSV(filename);}
202 std::set<std::string> availableMarkers()
const;
209 #pragma omit pack PlotItem 210 #pragma omit unpack PlotItem 213 inline void xml_pack(classdesc::xml_pack_t&,
const ecolab::string&,ecolab::Plot&) {}
214 inline void xml_unpack(classdesc::xml_unpack_t&,
const ecolab::string&,ecolab::Plot&) {}
216 #include "plotWidget.cd" 217 #include "plotWidget.xcd"
std::string latexToPango(const char *s)
represents rectangular region of a lasso operation
Creation and access to the minskyTCL_obj object, which has code to record whenever Minsky's state cha...
double yearToPTime(double x)
#define CLASSDESC_ACCESS(type)
string latexToPangoNonItalicised(const char *input)