27 #include "../../../dataaccess/dataset/ObjectId.h" 28 #include "../../../dataaccess/dataset/ObjectIdSet.h" 29 #include "../../../dataaccess/utils/Utils.h" 30 #include "../../../qt/widgets/se/Utils.h" 31 #include "../../../se/Stroke.h" 45 #include <qwt_column_symbol.h> 55 m_histogram(histogram),
56 m_histogramStyle(style)
66 barBrush.setStyle(Qt::SolidPattern);
86 QVector<QwtIntervalSample> samples;
91 std::map<double, unsigned int> values;
94 std::map<double, unsigned int>::const_iterator it;
97 std::map<int, unsigned int> vmap;
105 while(vx <= values.rbegin()->first)
108 if(fabs(vx) < 0.000000000001)
110 while(it != values.end())
112 if(it->first >= ini && it->first < vx)
113 vmap[i] += it->second;
119 QwtInterval qinterval(ini, vx);
120 qinterval.setBorderFlags(QwtInterval::ExcludeMaximum);
121 samples.push_back(QwtIntervalSample(vmap[i], qinterval));
132 std::map<std::string, unsigned int> values;
135 std::map<std::string, unsigned int>::iterator it;
139 QVector<QwtIntervalSample> samples((
int)values.size());
140 double LabelInterval = 0.0;
142 while (it != values.end())
144 QwtInterval qwtInterval(LabelInterval, LabelInterval+1);
145 qwtInterval.setBorderFlags(QwtInterval::ExcludeMaximum);
146 samples[LabelInterval] = QwtIntervalSample(it->second, qwtInterval);
154 std::map<double, unsigned int> values;
155 std::map<double, unsigned int>::const_iterator it;
163 const double min = values.begin()->first;
164 const double max = values.rbegin()->first;
174 while (it != values.end())
176 QwtInterval qwtInterval(ini, vx);
177 samples.push_back(QwtIntervalSample(it->second, qwtInterval));
185 while (it != values.end())
187 double interval = it->first;
188 QwtInterval qwtInterval(interval, interval + 1);
189 samples.push_back(QwtIntervalSample(it->second, qwtInterval));
194 QPen blankPen = QPen(Qt::transparent);
198 blankStroke->
setOpacity(QString::number(0,
'g', 2).toUtf8().data());
233 plot->axisScaleDraw(QwtPlot::xBottom)->setLabelAlignment(Qt::AlignLeft | Qt::AlignVCenter);
234 plot->axisScaleDraw(QwtPlot::xBottom)->setLabelRotation(-60);
237 QwtPlotHistogram::attach(plot);
268 barBrush.setStyle(Qt::SolidPattern);
280 std::set<te::da::ObjectId*, te::common::LessCmp<te::da::ObjectId*> >::const_iterator itObjSet;
281 QwtSeriesData<QwtIntervalSample>* values = data();
289 std::map<double, unsigned int> highlightedIntervals;
290 std::set<std::string> highlightedPkeys;
293 for(itObjSet = oids->
begin(); itObjSet != oids->
end(); ++itObjSet)
299 highlightedIntervals.insert(std::make_pair(interval, 0));
304 std::pair<std::string, int> dsProps;
308 for(itObjSet = oids->
begin(); itObjSet != oids->
end(); ++itObjSet)
314 if(highlightedPkeys.insert(pKey).second)
320 ++highlightedIntervals.at(interval);
330 ++highlightedIntervals.at(interval);
335 QVector<QwtIntervalSample> highlightedSamples((
int)highlightedIntervals.size());
338 for(
size_t i = 0; i < values->size(); ++i)
340 for (std::map<double, unsigned int>::iterator it = highlightedIntervals.begin(); it != highlightedIntervals.end(); ++it)
343 if(values->sample(i).interval.minValue() == it->first)
345 QwtInterval qwtInterval(values->sample(i).interval.minValue(), values->sample(i).interval.maxValue());
346 highlightedSamples.push_back(QwtIntervalSample(it->second, qwtInterval));
350 m_selection->setData(
new QwtIntervalSeriesData(highlightedSamples));
357 std::map<std::string, unsigned int> highlightedIntervals;
360 for(itObjSet = oids->
begin(); itObjSet != oids->
end(); ++itObjSet)
365 std::string interval = data->
getValue();
366 highlightedIntervals.insert(std::make_pair(interval, 0));
371 for(itObjSet = oids->
begin(); itObjSet != oids->
end(); ++itObjSet)
375 ++highlightedIntervals.at(interval);
379 QVector<QwtIntervalSample> highlightedSamples((
int)highlightedIntervals.size());
382 for(
size_t i = 0; i < values->size(); ++i)
384 for (std::map<std::string, unsigned int>::iterator it = highlightedIntervals.begin(); it != highlightedIntervals.end(); ++it)
389 QwtInterval qwtInterval(values->sample(i).interval.minValue(), values->sample(i).interval.maxValue());
390 highlightedSamples.push_back(QwtIntervalSample(it->second, qwtInterval));
394 m_selection->setData(
new QwtIntervalSeriesData(highlightedSamples));
403 QwtSeriesData<QwtIntervalSample>* values = data();
408 for(
size_t i = 0; i < values->size(); ++i)
410 if(values->sample(i).interval.minValue() < point.rx() && values->sample(i).interval.maxValue() > point.rx() && values->sample(i).value > point.ry())
418 std::unique_ptr<te::dt::Double> data(
new te::dt::Double(std::numeric_limits<double>::max()));
420 for(
size_t i = 0; i < values->size(); ++i)
422 if(values->sample(i).interval.minValue() < point.rx() && values->sample(i).interval.maxValue() > point.rx() && values->sample(i).value > point.ry())
423 data.reset(
new te::dt::Double(values->sample(i).interval.minValue()));
432 QwtSeriesData<QwtIntervalSample>* values = data();
433 std::vector<te::dt::AbstractData*> selected;
437 for(
size_t i = 0; i < values->size(); ++i)
439 QwtInterval temp(rect.x(), (rect.x() + rect.width()));
440 int frequency = values->sample(i).value;
442 if((values->sample(i).interval.contains(rect.x()) || values->sample(i).interval.intersects(temp))
443 && frequency > rect.y())
449 for(
size_t i = 0; i < values->size(); ++i)
451 QwtInterval temp(rect.x(), (rect.x() + rect.width()));
452 int frequency = values->sample(i).value;
454 if((values->sample(i).interval.contains(rect.x()) || values->sample(i).interval.intersects(temp))
455 && frequency > rect.y())
456 selected.push_back(
new te::dt::Double(values->sample(i).interval.minValue()));
A class that models the description of a dataset.
T getValue() const
It returns the associated value.
A class to represent a set of labels to be used on a histogram's chart.
TEDATAACCESSEXPORT void GetOIDDatasetProps(const DataSetType *type, std::pair< std::string, int > &dsProps)
A class used to define the style of a histogram's chart.
A class to represent a histogram.
void setOpacity(const std::string &opacity)
This class represents a set of unique ids created in the same context. i.e. from the same data set...
A class to represent a histogram chart.
Utility functions for the data access module.
std::set< ObjectId *, te::common::LessCmp< ObjectId * > >::const_iterator end() const
Returns an iterator for the object ids in container.
A Stroke specifies the appearance of a linear geometry.
TEDATAACCESSEXPORT std::string getBasePkey(te::da::ObjectId *oid, std::pair< std::string, int > &dsProps)
A template for atomic data types (integers, floats, strings and others).
std::set< ObjectId *, te::common::LessCmp< ObjectId * > >::const_iterator begin() const
Returns an iterator for the object ids in container.