Skip to content

Commit 4c1e866

Browse files
committed
implement updateLegend() in HistogramItem
1 parent 673f7ba commit 4c1e866

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

src/gui/raster/qwt5_histogram_item.h

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class HistogramItem: public QwtPlotItem
3838
virtual void draw(QPainter *, const QwtScaleMap &xMap,
3939
const QwtScaleMap &yMap, const QRect &) const;
4040

41+
virtual void updateLegend(QwtLegend *) const;
42+
4143
void setBaseline(double reference);
4244
double baseline() const;
4345

@@ -67,6 +69,7 @@ class HistogramItem: public QwtPlotItem
6769
#include <qwt_interval_data.h>
6870
#include <qwt_painter.h>
6971
#include <qwt_scale_map.h>
72+
#include <qwt_legend_item.h>
7073

7174
class HistogramItem::PrivateData
7275
{
@@ -344,4 +347,63 @@ void HistogramItem::drawBar(QPainter *painter,
344347
painter->restore();
345348
}
346349

350+
//! Update the widget that represents the curve on the legend
351+
// this was adapted from QwtPlotCurve::updateLegend()
352+
void HistogramItem::updateLegend(QwtLegend *legend) const
353+
{
354+
if ( !legend )
355+
return;
356+
357+
QwtPlotItem::updateLegend(legend);
358+
359+
QWidget *widget = legend->find(this);
360+
if ( !widget || !widget->inherits("QwtLegendItem") )
361+
return;
362+
363+
QwtLegendItem *legendItem = (QwtLegendItem *)widget;
364+
365+
#if QT_VERSION < 0x040000
366+
const bool doUpdate = legendItem->isUpdatesEnabled();
367+
#else
368+
const bool doUpdate = legendItem->updatesEnabled();
369+
#endif
370+
legendItem->setUpdatesEnabled(false);
371+
372+
const int policy = legend->displayPolicy();
373+
374+
if (policy == QwtLegend::FixedIdentifier)
375+
{
376+
int mode = legend->identifierMode();
377+
378+
legendItem->setCurvePen(QPen(color()));
379+
380+
if (mode & QwtLegendItem::ShowText)
381+
legendItem->setText(title());
382+
else
383+
legendItem->setText(QwtText());
384+
385+
legendItem->setIdentifierMode(mode);
386+
}
387+
else if (policy == QwtLegend::AutoIdentifier)
388+
{
389+
int mode = 0;
390+
391+
legendItem->setCurvePen(QPen(color()));
392+
mode |= QwtLegendItem::ShowLine;
393+
if ( !title().isEmpty() )
394+
{
395+
legendItem->setText(title());
396+
mode |= QwtLegendItem::ShowText;
397+
}
398+
else
399+
{
400+
legendItem->setText(QwtText());
401+
}
402+
legendItem->setIdentifierMode(mode);
403+
}
404+
405+
legendItem->setUpdatesEnabled(doUpdate);
406+
legendItem->update();
407+
}
408+
347409
#endif

0 commit comments

Comments
 (0)