21 #include <cairo_base.h> 30 #include <boost/date_time/posix_time/posix_time_types.hpp> 31 #include <boost/date_time/posix_time/ptime.hpp> 47 static constexpr
double portSpace=10;
48 double clickX, clickY, oldLegendLeft,
oldLegendTop, oldLegendFontSz;
54 classdesc::Exclude<boost::posix_time::ptime>
55 lastAdd{boost::posix_time::microsec_clock::local_time()},
56 lastAccumulatedBlitTime{boost::posix_time::microsec_clock::local_time()};
60 mutable bool justDataChanged=
false;
61 friend struct PlotItem;
63 bool xIsSecsSinceEpoch=
false;
64 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 RenderNativeWindow::surface;
86 using RenderNativeWindow::renderToSVG;
89 static constexpr
unsigned nBoundsPorts=6;
92 std::vector<std::vector<std::shared_ptr<VariableValue>>>
yvars;
93 std::vector<std::shared_ptr<VariableValue>>
xvars;
97 void labelPen(
size_t pen,
const std::string& label) {
98 if (clearPensOnLabelling) {penLabels.clear(); clearPensOnLabelling=
false;}
99 if (penLabels.size()<=pen+1) penLabels.resize(pen+1);
100 penLabels[pen]=label;
105 std::shared_ptr<VariableValue> xminVar, xmaxVar,
yminVar, ymaxVar, y1minVar, y1maxVar;
108 double xmin=nan(
""), xmax=xmin, ymin=xmin, ymax=xmin, y1min=xmin, y1max=xmin;
110 unsigned displayNTicks{3};
111 double displayFontSize{3};
119 PlotType plotType=automatic;
128 size_t numLines(
size_t n);
139 std::string
const&
xlabel()
const {
return m_xlabel;}
140 std::string
const&
xlabel(
const std::string& x) {
144 std::string
const&
ylabel()
const {
return m_ylabel;}
145 std::string
const&
ylabel(
const std::string& x) {
149 std::string
const&
y1label()
const {
return m_y1label;}
150 std::string
const&
y1label(
const std::string& x) {
157 double barWidth()
const;
158 double barWidth(
double w);
161 void addPlotPt(
double t);
164 void addConstantCurves();
166 void connectVar(
const std::shared_ptr<VariableValue>&
var,
unsigned port);
167 void disconnectAllVars();
168 using ecolab::Plot::draw;
169 void draw(cairo_t* cairo)
const override;
170 void requestRedraw();
174 void makeDisplayPlot();
176 void resize(
const LassoBox&)
override;
182 void autoScale() {xminVar=xmaxVar=yminVar=ymaxVar=y1minVar=y1maxVar=
nullptr;}
187 void mouseDown(
float,
float)
override;
188 void mouseMove(
float,
float)
override;
193 bool onMouseOver(
float,
float)
override;
199 void exportAsCSV(
const string& filename) {ecolab::Plot::exportAsCSV(filename);}
204 std::set<std::string> availableMarkers()
const;
211 #pragma omit pack PlotItem 212 #pragma omit unpack PlotItem 215 inline void xml_pack(classdesc::xml_pack_t&,
const ecolab::string&,ecolab::Plot&) {}
216 inline void xml_unpack(classdesc::xml_unpack_t&,
const ecolab::string&,ecolab::Plot&) {}
218 #include "plotWidget.cd" 219 #include "plotWidget.xcd"
std::string latexToPango(const char *s)
represents rectangular region of a lasso operation
double yearToPTime(double x)
#define CLASSDESC_ACCESS(type)
string latexToPangoNonItalicised(const char *input)