From 476305d1bec11361859c3d2aa8c0b33ef426f742 Mon Sep 17 00:00:00 2001 From: Charles PIGNEROL <> Date: Fri, 24 Jan 2025 11:24:08 +0100 Subject: [PATCH 1/2] Version 5.3.2. Fixes display of histograms in cases where only one class is re quested, this resulted in flat histograms, without axis legend. --- cmake/version.cmake | 2 +- src/QwtCharts/QwtChartPanel.cpp | 233 ++++++++------------- src/QwtCharts/QwtExtendedMultiBarChart.cpp | 26 +-- versions.txt | 7 + 4 files changed, 114 insertions(+), 154 deletions(-) diff --git a/cmake/version.cmake b/cmake/version.cmake index 41eec77..373c622 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -4,7 +4,7 @@ set (QWT_CHARTS_MAJOR_VERSION "5") set (QWT_CHARTS_MINOR_VERSION "3") -set (QWT_CHARTS_RELEASE_VERSION "1") +set (QWT_CHARTS_RELEASE_VERSION "2") set (QWT_CHARTS_VERSION ${QWT_CHARTS_MAJOR_VERSION}.${QWT_CHARTS_MINOR_VERSION}.${QWT_CHARTS_RELEASE_VERSION}) diff --git a/src/QwtCharts/QwtChartPanel.cpp b/src/QwtCharts/QwtChartPanel.cpp index 1fba359..4c0527c 100644 --- a/src/QwtCharts/QwtChartPanel.cpp +++ b/src/QwtCharts/QwtChartPanel.cpp @@ -89,8 +89,7 @@ static const Charset charset ("àéèùô"); -static void absExtrema ( - const QwtSeriesData* data, double& min, double& max) +static void absExtrema (const QwtSeriesData* data, double& min, double& max) { if (0 == data) return; @@ -102,15 +101,37 @@ static void absExtrema ( min = sample.value < min ? sample.value : min; max = sample.value > max ? sample.value : max; } // for (size_t i = 0; i < count; i++) + + if (1 == count) + { // CP v 5.3.2 : min == max => absence d'échelle au niveau des abscisses. Ce fix améliore la chose sans vraiment être satisfaisant :( + min *= 0.8; + max *= 1.2; + } // if (1 == count) } // absExtrema -static void ordExtrema ( - const QwtSeriesData* data, double& min, double& max) +static void ordExtrema (const QwtSeriesData* data, double& min, double& max) { if (0 == data) return; + // CP v 5.3.2 : correctif recherche des extrema au niveau des ordonnées => on parcourt toutes les séries + const int numClasses = data->size ( ); + for (int c = 0; c < numClasses; c++) + { + QwtSetSample sample = data->sample (c); + + for (int s = 0; s < sample.set.size ( ); s++) + { + min = min > sample.set [s] ? sample.set [s] : min; + max = max < sample.set [s] ? sample.set [s] : max; + } // for (int c = 0; c < numClasses; c++) + } // for (int i = 0; i < numClasses; i++) + if (min == max) + { // CP v 5.3.2 : min == max => absence d'échelle au niveau des abscisses. Ce fix amméliore la chose sans vraiment être satisfaisant :( + min = 0.; + } // if (1 == count) +/* OLD CODE const size_t count = data->size ( ); for (size_t i = 0; i < count; i++) { @@ -121,6 +142,7 @@ static void ordExtrema ( min = value < min ? value : min; max = value > max ? value : max; } // for (size_t i = 0; i < count; i++) +! OLD CODE */ } // ordExtrema @@ -219,8 +241,7 @@ QwtChartPanel& QwtChartPanel::QwtChartSpecificPanelCreator::getChartPanel ( ) // --------------------------------------------------------------------------- QwtChartPanel::DataPaintAttributes::DataPaintAttributes (QwtPlotItem* plotItem, const PaintAttributes& pen) - : _plotItem (plotItem), _name ( ), _pen (pen), - _fgValid (true), _bgValid (true) + : _plotItem (plotItem), _name ( ), _pen (pen), _fgValid (true), _bgValid (true) { if (0 != _plotItem) _name = _plotItem->title ( ).text ( ).toStdString ( ); @@ -228,21 +249,18 @@ QwtChartPanel::DataPaintAttributes::DataPaintAttributes (QwtPlotItem* plotItem, QwtChartPanel::DataPaintAttributes::DataPaintAttributes (const string& name, const PaintAttributes& pen) - : _plotItem (0), _name (name), _pen (pen), - _fgValid (true), _bgValid (true) + : _plotItem (0), _name (name), _pen (pen), _fgValid (true), _bgValid (true) { } // DataPaintAttributes::DataPaintAttributes QwtChartPanel::DataPaintAttributes::DataPaintAttributes (const QwtChartPanel::DataPaintAttributes& copied) - : _plotItem (copied._plotItem), _name (copied._name), _pen (copied._pen), - _fgValid (copied._fgValid), _bgValid (copied._bgValid) + : _plotItem (copied._plotItem), _name (copied._name), _pen (copied._pen), _fgValid (copied._fgValid), _bgValid (copied._bgValid) { } // DataPaintAttributes::DataPaintAttributes -QwtChartPanel::DataPaintAttributes& - QwtChartPanel::DataPaintAttributes::operator = (const QwtChartPanel::DataPaintAttributes& copied) +QwtChartPanel::DataPaintAttributes& QwtChartPanel::DataPaintAttributes::operator = (const QwtChartPanel::DataPaintAttributes& copied) { if (&copied != this) { @@ -370,10 +388,8 @@ QwtChartPanel::QwtChartPanel (QWidget* parent) CHECK_NULL_PTR_ERROR (_coordsPicker) _coordsPicker->setChartPanel (this); */ - QwtPlotCanvas* canvas = - dynamic_cast(_plotWidget->canvas ( )); - _zoomer = new QwtExtendedPlotZoomer ( - QwtPlot::xBottom, QwtPlot::yLeft, canvas); + QwtPlotCanvas* canvas = dynamic_cast(_plotWidget->canvas ( )); + _zoomer = new QwtExtendedPlotZoomer (QwtPlot::xBottom, QwtPlot::yLeft, canvas); CHECK_NULL_PTR_ERROR (_zoomer) _zoomer->setRubberBand (QwtPicker::RectRubberBand); _zoomer->setRubberBandPen (QColor (Qt::green)); @@ -384,8 +400,7 @@ QwtChartPanel::QwtChartPanel (QWidget* parent) // Qt::ControlModifier); // _zoomer->setMousePattern (QwtEventPattern::MouseSelect3, Qt::RightButton); _zoomer->setEnabled (false); - connect (_zoomer, SIGNAL (zoomed (const QRectF&)), this, - SLOT (zoomCallback_Qwt6 (const QRectF&))); + connect (_zoomer, SIGNAL (zoomed (const QRectF&)), this, SLOT (zoomCallback_Qwt6 (const QRectF&))); // QwtPlotRescaler::Fitting : le graphique utilise tout l'espace, et // utilise la politique d'expansion => tout le graphique n'est pas @@ -399,8 +414,7 @@ QwtChartPanel::QwtChartPanel (QWidget* parent) // circonstances la totalité des courbes, sauf spécification contraire de // l'utilisateur. // Ce rescaler est inactivé par défaut. - _rescaler = new QwtPlotRescaler ( - _plotWidget->canvas( ), QwtPlot::xBottom, QwtPlotRescaler::Fitting); + _rescaler = new QwtPlotRescaler (_plotWidget->canvas( ), QwtPlot::xBottom, QwtPlotRescaler::Fitting); _rescaler->setExpandingDirection (QwtPlotRescaler::ExpandBoth); _rescaler->setAspectRatio (1.); _rescaler->setEnabled (false); @@ -488,8 +502,7 @@ void QwtChartPanel::setDisplayMode (DISPLAY_MODE mode) } // if (false == isDisplayModeAllowed (mode)) // Ugly code, to redefine : - QwtPlotCurveCoordinatesPicker* curvePicker = - dynamic_cast(&getCoordinatesPicker ( )); + QwtPlotCurveCoordinatesPicker* curvePicker = dynamic_cast(&getCoordinatesPicker ( )); if (0 != curvePicker) curvePicker->setDisplayMode ((QwtChartPanel::DISPLAY_MODE)mode); @@ -595,10 +608,8 @@ bool QwtChartPanel::getAbscissaScale (double& min, double& max, bool& autoScale) vector::iterator iti = _plotItems.begin ( ); for ( ; _plotItems.end ( ) != iti; iti++) { - QwtPlotCurve* curve = - dynamic_cast(*iti); - QwtPlotMultiBarChart* barChart = - dynamic_cast(*iti); + QwtPlotCurve* curve = dynamic_cast(*iti); + QwtPlotMultiBarChart* barChart = dynamic_cast(*iti); if (0 != curve) { double mn = curve->minXValue ( ); @@ -608,8 +619,7 @@ bool QwtChartPanel::getAbscissaScale (double& min, double& max, bool& autoScale) } // if (0 != curve) else if (0 != barChart) { - const QwtSeriesData* data = - barChart->data ( ); + const QwtSeriesData* data = barChart->data ( ); absExtrema (data, min, max); } // else if (0 != barChart) } // for ( ; _plotItems.end ( ) != iti; iti++) @@ -644,10 +654,8 @@ bool QwtChartPanel::getVisibleAbscissaScale (double& min, double& max) if (false == (*iti)->isVisible ( )) continue; - QwtPlotCurve* curve = - dynamic_cast(*iti); - QwtPlotMultiBarChart* barChart = - dynamic_cast(*iti); + QwtPlotCurve* curve = dynamic_cast(*iti); + QwtPlotMultiBarChart* barChart = dynamic_cast(*iti); if (0 != curve) { ok = true; @@ -668,8 +676,7 @@ bool QwtChartPanel::getVisibleAbscissaScale (double& min, double& max) } // QwtChartPanel::getVisibleAbscissaScale -void QwtChartPanel::setAbscissaScale ( - double min, double max, bool autoScale, double tickStep) +void QwtChartPanel::setAbscissaScale (double min, double max, bool autoScale, double tickStep) { _abscissaScale._auto = autoScale; _abscissaScale._tickStep = tickStep; @@ -713,10 +720,8 @@ bool QwtChartPanel::getOrdinateScale (double& min, double& max, bool& autoScale) vector::iterator iti = _plotItems.begin ( ); for ( ; _plotItems.end ( ) != iti; iti++) { - QwtPlotCurve* curve = - dynamic_cast(*iti); - QwtPlotMultiBarChart* barChart = - dynamic_cast(*iti); + QwtPlotCurve* curve = dynamic_cast(*iti); + QwtPlotMultiBarChart* barChart = dynamic_cast(*iti); if (0 != curve) { double mn = curve->minYValue ( ); @@ -726,8 +731,7 @@ bool QwtChartPanel::getOrdinateScale (double& min, double& max, bool& autoScale) } // if (0 != curve) else if (0 != barChart) { - const QwtSeriesData* data = - barChart->data ( ); + const QwtSeriesData* data = barChart->data ( ); ordExtrema (data, min, max); } // else if (0 != barChart) } // for ( ; _plotItems.end ( ) != iti; iti++) @@ -761,10 +765,8 @@ bool QwtChartPanel::getVisibleOrdinateScale (double& min, double& max) if (false == (*iti)->isVisible ( )) continue; - QwtPlotCurve* curve = - dynamic_cast(*iti); - QwtPlotMultiBarChart* barChart = - dynamic_cast(*iti); + QwtPlotCurve* curve = dynamic_cast(*iti); + QwtPlotMultiBarChart* barChart = dynamic_cast(*iti); if (0 != curve) { ok = true; @@ -785,8 +787,7 @@ bool QwtChartPanel::getVisibleOrdinateScale (double& min, double& max) } // QwtChartPanel::getVisibleOrdinateScale -void QwtChartPanel::setOrdinateScale ( - double min, double max, bool autoScale, double tickStep) +void QwtChartPanel::setOrdinateScale (double min, double max, bool autoScale, double tickStep) { _ordinateScale._auto = autoScale; _ordinateScale._tickStep = tickStep; @@ -794,12 +795,8 @@ void QwtChartPanel::setOrdinateScale ( { _ordinateScale._min = min; _ordinateScale._max = max; - getPlot ( ).setAxisScale ( - QwtPlot::yLeft, _ordinateScale._min, _ordinateScale._max, - tickStep); - getPlot ( ).setAxisScale ( - QwtPlot::yRight, _ordinateScale._min, _ordinateScale._max, - tickStep); + getPlot ( ).setAxisScale (QwtPlot::yLeft, _ordinateScale._min, _ordinateScale._max, tickStep); + getPlot ( ).setAxisScale (QwtPlot::yRight, _ordinateScale._min, _ordinateScale._max, tickStep); _ordinateScale._updated = true; } // if (false == autoScale) else @@ -889,20 +886,17 @@ void QwtChartPanel::showLegend (bool show, QwtPlot::LegendPosition pos) legend->setFrameStyle (QFrame::Box | QFrame::Plain); legend->setLineWidth (0); legend->setMidLineWidth (0); - connect (legend, SIGNAL (checked (const QVariant&, bool, int)), - this, SLOT (legendCheckedCallback(const QVariant&, bool, int))); + connect (legend, SIGNAL (checked (const QVariant&, bool, int)), this, SLOT (legendCheckedCallback(const QVariant&, bool, int))); legend->setDefaultItemMode (_legendCheckable); // Nous spécifions tous les paramètres de légende : // legend->setDisplayPolicy (QwtLegend::NoIdentifier, // On insère la légende en premier afin que itemToInfo fonctionne. getPlot ( ).insertLegend (legend, pos); - const QwtPlotItemList& items = - getPlot ( ).itemList (QwtPlotItem::Rtti_PlotCurve); + const QwtPlotItemList& items = getPlot ( ).itemList (QwtPlotItem::Rtti_PlotCurve); for (QwtPlotItemIterator it = items.begin( ); items.end( ) != it; it++) { CHECK_NULL_PTR_ERROR (*it) - QWidget* widget = - legend->legendWidget (getPlot ( ).itemToInfo (*it)); + QWidget* widget = legend->legendWidget (getPlot ( ).itemToInfo (*it)); QwtLegendLabel* label = dynamic_cast(widget); CHECK_NULL_PTR_ERROR (label) label->setChecked ((*it)->isVisible ( )); @@ -931,8 +925,7 @@ void QwtChartPanel::setLegendFrameWidth (int width) int QwtChartPanel::getLegendMargin ( ) const { - const QWidget* widget = - 0 == getLegend ( ) ? 0 : getLegend ( )->contentsWidget( ); + const QWidget* widget = 0 == getLegend ( ) ? 0 : getLegend ( )->contentsWidget( ); const QLayout* layout = 0 == widget ? 0 : widget->layout ( ); int left = 0, top = 0, right = 0, bottom = 0; @@ -957,8 +950,7 @@ void QwtChartPanel::setLegendMargin (int margin) if (0 == getLegend ( )) throw Exception ("Modification des marges d'une légende : absence de légende."); - QWidget* widget = 0 == getLegend ( ) ? - 0 : getLegend ( )->contentsWidget ( ); + QWidget* widget = 0 == getLegend ( ) ? 0 : getLegend ( )->contentsWidget ( ); QLayout* layout = 0 == widget ? 0 : widget->layout ( ); if (0 != layout) @@ -998,8 +990,7 @@ void QwtChartPanel::setLegendCheckable (bool checkable) { if (checkable == _legendCheckable) return; - _legendCheckable = true == checkable ? - QwtLegendData::Checkable : QwtLegendData::ReadOnly; + _legendCheckable = true == checkable ? QwtLegendData::Checkable : QwtLegendData::ReadOnly; if (0 != getLegend ( )) { // Changement de mode pour les items : nécessite de reconstruire la @@ -1024,14 +1015,12 @@ void QwtChartPanel::showSelectionLegend (bool show) return; _showSelectionLegend = show; - QwtPlotCurveCoordinatesPicker* picker = - dynamic_cast(_coordsPicker); + QwtPlotCurveCoordinatesPicker* picker = dynamic_cast(_coordsPicker); if ((0 != picker) && (0 != picker->getSelectionRepresentation ( ))) { QwtPlot* plot = picker->getSelectionRepresentation ( )->plot ( ); picker->getSelectionRepresentation ( )->detach ( ); - picker->getSelectionRepresentation ( )->setItemAttribute ( - QwtPlotItem::Legend, show); + picker->getSelectionRepresentation ( )->setItemAttribute (QwtPlotItem::Legend, show); if (0 != plot) { picker->getSelectionRepresentation ( )->attach (plot); @@ -1056,11 +1045,9 @@ void QwtChartPanel::setLegendCurveWidth (int width) if (0 != getLegend ( )) { QList items; - QwtPlotItemList list = - getPlot ( ).itemList (QwtPlotItem::Rtti_PlotCurve); + QwtPlotItemList list = getPlot ( ).itemList (QwtPlotItem::Rtti_PlotCurve); for (int i = 0; i < list.size ( ); i++) - items.push_back (getLegend ( )->legendWidget ( - getPlot ( ).itemToInfo (list [i]))); + items.push_back (getLegend ( )->legendWidget (getPlot ( ).itemToInfo (list [i]))); /* for (size_t i = 0; i < items.size ( ); i++) { @@ -1078,8 +1065,7 @@ void QwtChartPanel::setLegendCurveWidth (int width) unsigned char QwtChartPanel::getScaleLabelPrecision ( ) const { - const QwtExtendedScaleDraw* scaleDraw = - dynamic_cast(getPlot ( ).axisScaleDraw(0)); + const QwtExtendedScaleDraw* scaleDraw = dynamic_cast(getPlot ( ).axisScaleDraw(0)); if (0 == scaleDraw) throw Exception ("Précision utilisée lors des conversions valeur -> texte inaccessible, la classe utilisée n'est pas du type QwtExtendedScaleDraw."); @@ -1092,8 +1078,7 @@ void QwtChartPanel::setScaleLabelPrecision (unsigned char precision) { for (int i = QwtPlot::yLeft; i < QwtPlot::axisCnt; i++) { - QwtExtendedScaleDraw* scaleDraw = - dynamic_cast(getPlot ( ).axisScaleDraw (i)); + QwtExtendedScaleDraw* scaleDraw = dynamic_cast(getPlot ( ).axisScaleDraw (i)); if (0 == scaleDraw) throw Exception ("Précision utilisée lors des conversions valeur -> texte inaccessible, la classe utilisée n'est pas du type QwtExtendedScaleDraw."); @@ -1106,8 +1091,7 @@ void QwtChartPanel::setScaleLabelPrecision (unsigned char precision) char QwtChartPanel::getScaleLabelFormat ( ) const { - const QwtExtendedScaleDraw* scaleDraw = - dynamic_cast(getPlot ( ).axisScaleDraw(0)); + const QwtExtendedScaleDraw* scaleDraw = dynamic_cast(getPlot ( ).axisScaleDraw(0)); if (0 == scaleDraw) throw Exception ("Format utilisée lors des conversions valeur -> texte inaccessible, la classe utilisée n'est pas du type QwtExtendedScaleDraw."); @@ -1120,8 +1104,7 @@ void QwtChartPanel::setScaleLabelFormat (char format) { for (int i = QwtPlot::yLeft; i < QwtPlot::axisCnt; i++) { - QwtExtendedScaleDraw* scaleDraw = - dynamic_cast(getPlot ( ).axisScaleDraw (i)); + QwtExtendedScaleDraw* scaleDraw = dynamic_cast(getPlot ( ).axisScaleDraw (i)); if (0 == scaleDraw) throw Exception ("Format utilisée lors des conversions valeur -> texte inaccessible, la classe utilisée n'est pas du type QwtExtendedScaleDraw."); @@ -1152,28 +1135,21 @@ void QwtChartPanel::setScaleLabelFormat (char format) * d'une dimension du graphique. Un bogue au niveau de l'affichage * est possible au delà de cette zone à risque. */ -static bool computeRect ( - const QPrinter& printer, const QwtPlot& plot, QRect& rect) +static bool computeRect (const QPrinter& printer, const QwtPlot& plot, QRect& rect) { CHECK_NULL_PTR_ERROR (plot.canvas ( )) - if ((printer.width ( ) < 100) || (printer.width ( ) > 1E6) || - (printer.height ( ) < 100) || (printer.height ( ) > 1E6)) + if ((printer.width ( ) < 100) || (printer.width ( ) > 1E6) || (printer.height ( ) < 100) || (printer.height ( ) > 1E6)) { UTF8String msg (charset); msg << "Impression impossible, dimensions de l'imprimantes invalides (" - << (unsigned long)printer.width ( ) << ", " - << (unsigned long)printer.height ( ) << ")."; + << (unsigned long)printer.width ( ) << ", " << (unsigned long)printer.height ( ) << ")."; throw Exception (msg); } // if ((printer.width ( ) < 100) || (printer.width ( ) > 1E6) || ... - if ((plot.canvas ( )->width ( ) < 100) || - (plot.canvas ( )->width ( ) > 1E6) || - (plot.canvas ( )->height ( ) < 100) || - (plot.canvas ( )->height ( ) > 1E6)) + if ((plot.canvas ( )->width ( ) < 100) || (plot.canvas ( )->width ( ) > 1E6) || (plot.canvas ( )->height ( ) < 100) || (plot.canvas ( )->height ( ) > 1E6)) { UTF8String msg (charset); msg << "Impression impossible, dimensions du graphique invalides (" - << (unsigned long)plot.canvas ( )->width ( )<< ", " - << (unsigned long)plot.canvas ( )->height ( ) << ")."; + << (unsigned long)plot.canvas ( )->width ( )<< ", " << (unsigned long)plot.canvas ( )->height ( ) << ")."; throw Exception (msg); } // if ((plot.canvas ( )->width ( ) < 100) || ... @@ -1181,8 +1157,7 @@ static bool computeRect ( rect.setCoords (0, 0, printer.width ( ), printer.height ( )); // Le rapport hauteur / largeur du graphique, à conserver : - double ratio = plot.canvas ( )->height ( ) / - (double)plot.canvas ( )->width ( ); + double ratio = plot.canvas ( )->height ( ) / (double)plot.canvas ( )->width ( ); if (printer.width ( ) >= printer.height ( )) // Paysage { @@ -1280,12 +1255,10 @@ bool QwtChartPanel::print (QPrinter& printer) << "\n" << "- (Annuler) l'impression ?"; switch (QtMessageBox::displayWarningMessage ( - &getPlot ( ), "Impression : risque d'erreur", question, - 100, "Imprimer", "Poursuivre", "Annuler")) + &getPlot ( ), "Impression : risque d'erreur", question, 100, "Imprimer", "Poursuivre", "Annuler")) { case 0 : - painterRect.setCoords ( - 0, 0, printer.width ( ), printer.height ( )); + painterRect.setCoords (0, 0, printer.width ( ), printer.height ( )); break; case 1 : break; default : return false; @@ -1510,8 +1483,7 @@ void QwtChartPanel::zoom (double factor) // Le QwtPlotZoomer n'est pas notifié des éventuelles translations de la // vue, type panning (on n'est plus centré sur le milieu des courbes, - // l'utilisateur a effectué une translation de la vue au bouton central de - // la souris). + // l'utilisateur a effectué une translation de la vue au bouton central de la souris). // => On récupère les coordonnées du centre de la vue afin de centrer la // future vue sur ce même point. const double xMin = absScaleDiv.lowerBound ( ); @@ -1561,8 +1533,7 @@ void QwtChartPanel::adjustScales ( ) CHECK_NULL_PTR_ERROR (_rescaler) double minx = 0., maxx = 0.; double miny = 0., maxy = 0.; - if ((false == getVisibleAbscissaScale (minx, maxx)) || - (false == getVisibleOrdinateScale (miny, maxy))) + if ((false == getVisibleAbscissaScale (minx, maxx)) || (false == getVisibleOrdinateScale (miny, maxy))) return; if (true == _rescaler->isEnabled ( )) @@ -1588,8 +1559,7 @@ void QwtChartPanel::adjustScales ( ) bool QwtChartPanel::zoomUndoable ( ) const { CHECK_NULL_PTR_ERROR (_zoomer) - if ((1 < _zoomer->zoomStack ( ).size ( )) && - (0 != _zoomer->zoomRectIndex ( ))) + if ((1 < _zoomer->zoomStack ( ).size ( )) && (0 != _zoomer->zoomRectIndex ( ))) return true; return false; @@ -1607,8 +1577,7 @@ void QwtChartPanel::undoZoom ( ) bool QwtChartPanel::zoomRedoable ( ) const { CHECK_NULL_PTR_ERROR (_zoomer) - if ((1 < _zoomer->zoomStack ( ).size ( )) && - (_zoomer->zoomStack ( ).size ( ) != (_zoomer->zoomRectIndex ( ) + 1))) + if ((1 < _zoomer->zoomStack ( ).size ( )) && (_zoomer->zoomStack ( ).size ( ) != (_zoomer->zoomRectIndex ( ) + 1))) return true; return false; @@ -1625,8 +1594,7 @@ void QwtChartPanel::redoZoom ( ) bool QwtChartPanel::isModified ( ) const { - for (vector::const_iterator itm = _modificationList.begin ( ); - _modificationList.end ( ) != itm; itm++) + for (vector::const_iterator itm = _modificationList.begin ( ); _modificationList.end ( ) != itm; itm++) if (true == *itm) return true; @@ -1673,8 +1641,7 @@ void QwtChartPanel::dataModified ( ) getAbscissaScale (x1, x2, as); getOrdinateScale (y1, y2, as); // La nouvelle reference (etat non zoome) : - if ((0 != isValid (x1)) && (0 != isValid (x2)) && - (0 != isValid (y1)) && (0 != isValid (y2))) + if ((0 != isValid (x1)) && (0 != isValid (x2)) && (0 != isValid (y1)) && (0 != isValid (y2))) newStack.push (QRectF (x1, y1, x2 - x1, y2 - y1)); else newStack.push (QRectF (0., 0., 1., 1.)); @@ -1697,6 +1664,7 @@ void QwtChartPanel::adjustChart ( ) _rescaler->setIntervalHint (QwtPlot::xBottom, interval); _rescaler->setIntervalHint (QwtPlot::xTop, interval); getOrdinateScale (mn, mx, as); + mn = mn == mx ? 0. : mn; // CP v 5.3.2 : utile dans les cas 1 série/1 classe, min == max => classe plate. interval = QwtInterval (mn, mx); _rescaler->setIntervalHint (QwtPlot::yLeft, interval); _rescaler->setIntervalHint (QwtPlot::yRight, interval); @@ -1713,8 +1681,7 @@ void QwtChartPanel::legendCheckedCallback (QwtPlotItem* item, bool checked) } // QwtChartPanel::legendCheckedCallback -void QwtChartPanel::legendCheckedCallback ( - const QVariant& itemInfo, bool checked, int index) +void QwtChartPanel::legendCheckedCallback (const QVariant& itemInfo, bool checked, int index) { QwtPlotItem* item = getPlot ( ).infoToItem (itemInfo); if (0 == item) @@ -1755,16 +1722,14 @@ bool QwtChartPanel::useQImage (const QPrinter& printer) return false; File file (printer.outputFileName ( ).toStdString ( )); - if ((0 == strcasecmp (file.getExtension ( ).c_str ( ), "ps")) || - (0 == strcasecmp (file.getExtension ( ).c_str ( ), "pdf"))) + if ((0 == strcasecmp (file.getExtension ( ).c_str ( ), "ps")) || (0 == strcasecmp (file.getExtension ( ).c_str ( ), "pdf"))) return false; return true; } // QwtChartPanel::useQImage -void QwtChartPanel::getImageSize ( - const QPrinter& printer, int& width, int& height) +void QwtChartPanel::getImageSize (const QPrinter& printer, int& width, int& height) { /* const int printerWidth = printer.width ( ); @@ -1860,15 +1825,13 @@ void QwtChartPanel::setAspectRatio (double ar) } // QwtChartPanel::setAspectRatio -QwtPlotCoordinatesPicker::SELECTION_MODE - QwtChartPanel::getSelectionMode ( ) const +QwtPlotCoordinatesPicker::SELECTION_MODE QwtChartPanel::getSelectionMode ( ) const { return getCoordinatesPicker ( ).getSelectionMode ( ); } // QwtChartPanel::getSelectionMode -void QwtChartPanel::setSelectionMode ( - QwtPlotCoordinatesPicker::SELECTION_MODE mode) +void QwtChartPanel::setSelectionMode (QwtPlotCoordinatesPicker::SELECTION_MODE mode) { getCoordinatesPicker ( ).setSelectionMode (mode); } // QwtChartPanel::setSelectionMode @@ -1892,22 +1855,19 @@ void QwtChartPanel::clearSelection ( ) } // QwtChartPanel::clearSelection -void QwtChartPanel::getSelectionArea ( - double& x1, double& y1, double& x2, double& y2) const +void QwtChartPanel::getSelectionArea (double& x1, double& y1, double& x2, double& y2) const { return getCoordinatesPicker ( ).getSelectionArea (x1, y1, x2, y2); } // QwtChartPanel::getSelectionArea -void QwtChartPanel::getSelectionExtrema ( - double& xmin, double& ymin, double& xmax, double& ymax) const +void QwtChartPanel::getSelectionExtrema (double& xmin, double& ymin, double& xmax, double& ymax) const { return getCoordinatesPicker ( ).getSelectionExtrema(xmin, ymin, xmax, ymax); } // QwtChartPanel::getSelectionExtrema -vector - QwtChartPanel::createEditionPanels (QWidget* parent) +vector QwtChartPanel::createEditionPanels (QWidget* parent) { vector panels; @@ -1918,22 +1878,19 @@ vector } // QwtChartPanel::createEditionPanels -vector - QwtChartPanel::getDataPaintAttributes ( ) const +vector QwtChartPanel::getDataPaintAttributes ( ) const { throw Exception ("QwtChartPanel::getDataPaintAttributes should be verloaded."); } // QwtChartPanel::getDataPaintAttributes -void QwtChartPanel::setDataPaintAttributes ( - size_t index, const QwtChartPanel::DataPaintAttributes& paintAttributes) +void QwtChartPanel::setDataPaintAttributes (size_t index, const QwtChartPanel::DataPaintAttributes& paintAttributes) { throw Exception ("QwtChartPanel::setDataPaintAttributes should be verloaded."); } // QwtChartPanel::setDataPaintAttributes -void QwtChartPanel::setSpecificsPanelsCreator ( - QwtChartSpecificPanelCreator* creator) +void QwtChartPanel::setSpecificsPanelsCreator (QwtChartSpecificPanelCreator* creator) { delete _specificPanelCreator; _specificPanelCreator = creator; @@ -1962,8 +1919,7 @@ void QwtChartPanel::addPlotItem (QwtPlotItem& plotItem) { if (0 != getEditionDialog ( )) { - QwtExtendedPlotCurve* curve = - dynamic_cast(&plotItem); + QwtExtendedPlotCurve* curve = dynamic_cast(&plotItem); if (0 != curve) getEditionDialog ( )->curveAdded (curve); } // if (0 != getEditionDialog ( )) @@ -1976,8 +1932,7 @@ void QwtChartPanel::addPlotItem (QwtPlotItem& plotItem) QwtLegend* legend = dynamic_cast(getPlot ( ).legend ( )); if (0 != legend) { - QWidget* widget = - legend->legendWidget (getPlot ( ).itemToInfo (&plotItem)); + QWidget* widget = legend->legendWidget (getPlot ( ).itemToInfo (&plotItem)); QwtLegendLabel* label = dynamic_cast(widget); if (0 != label) label->setChecked (plotItem.isVisible ( )); @@ -1993,8 +1948,7 @@ void QwtChartPanel::removePlotItem (QwtPlotItem& plotItem) { if (0 != getEditionDialog ( )) { - QwtExtendedPlotCurve* curve = - dynamic_cast(&plotItem); + QwtExtendedPlotCurve* curve = dynamic_cast(&plotItem); if (0 != curve) getEditionDialog ( )->curveRemoved (curve); } // if (0 != getEditionDialog ( )) @@ -2033,8 +1987,7 @@ const QwtPlotCoordinatesPicker& QwtChartPanel::getCoordinatesPicker ( ) const void QwtChartPanel::setCoordinatesPicker (QwtPlotCoordinatesPicker& picker) { CHECK_NULL_PTR_ERROR (_zoomer) - bool enabled = 0 == _coordsPicker ? - !_zoomer->isEnabled ( ) : _coordsPicker->isEnabled ( ); + bool enabled = 0 == _coordsPicker ? !_zoomer->isEnabled ( ) : _coordsPicker->isEnabled ( ); delete _coordsPicker; _coordsPicker = &picker; picker.setEnabled (enabled); diff --git a/src/QwtCharts/QwtExtendedMultiBarChart.cpp b/src/QwtCharts/QwtExtendedMultiBarChart.cpp index 1c9125c..427ad93 100644 --- a/src/QwtCharts/QwtExtendedMultiBarChart.cpp +++ b/src/QwtCharts/QwtExtendedMultiBarChart.cpp @@ -330,27 +330,27 @@ void QwtExtendedMultiBarChart::drawSample ( switch (getHistogramStyle ( )) { case QwtExtendedMultiBarChart::STYLE_GROUPED : - case QwtExtendedMultiBarChart::STYLE_STACKED : - QwtPlotMultiBarChart::drawSample ( - painter, xMap, yMap, canvasRect, boundingInterval, index, sample); + case QwtExtendedMultiBarChart::STYLE_STACKED : QwtPlotMultiBarChart::drawSample (painter, xMap, yMap, canvasRect, boundingInterval, index, sample); break; case QwtExtendedMultiBarChart::STYLE_OVERLAPPED : { - double sampleWidth = Qt::Vertical == orientation ( ) ? - QwtPlotMultiBarChart::sampleWidth (xMap, canvasRect.width ( ), - boundingInterval.width(), sample.value) : - QwtPlotMultiBarChart::sampleWidth (yMap, canvasRect.height ( ), - boundingInterval.width(), sample.value); - drawOverlappedBars ( - painter, xMap, yMap, canvasRect, index, sampleWidth, sample); + double sampleWidth = Qt::Vertical == orientation ( ) ? + QwtPlotMultiBarChart::sampleWidth (xMap, canvasRect.width ( ), boundingInterval.width(), sample.value) : + QwtPlotMultiBarChart::sampleWidth (yMap, canvasRect.height ( ), boundingInterval.width(), sample.value); + const size_t numSamples = dataSize ( ); // CP v 5.3.2 : nombre de classes + const size_t numSeries = _visibleSeries.size ( ); // CP v 5.3.2 : nombre de séries à superposer + if (1 == numSamples) + { // CP v 5.3.2 : si plusieurs séries on prévoit la largeur d'une barre pour les décalages de superpositions : + sampleWidth = 1 == numSeries ? (canvasRect.width ( ) - (numSamples + 1) * spacing ( )) / numSamples : (canvasRect.width ( ) - (numSamples + 2) * spacing ( )) / (numSamples + 1); + } // if (1 == numSamples) + drawOverlappedBars (painter, xMap, yMap, canvasRect, index, sampleWidth, sample); } break; default : { UTF8String mess (charset); -mess << "QwtExtendedMultiBarChart::drawSample, style non supporté (" - << (unsigned long)getHistogramStyle ( ) << ")."; - ConsoleOutput::cout ( ) << mess << co_endl; + mess << "QwtExtendedMultiBarChart::drawSample, style non supporté (" << (unsigned long)getHistogramStyle ( ) << ")."; + ConsoleOutput::cout ( ) << mess << co_endl; } } // switch (getHistogramStyle ( )) } // QwtExtendedMultiBarChart::drawSample diff --git a/versions.txt b/versions.txt index 297295a..713707d 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,13 @@ A FAIRE : Affichage optionnel des symboles => option dans les panneaux. +Version 5.3.2 : 24/01/25 +=============== + +Correctifs affichage des histogrammes dans les cas où l'on ne demande qu'une classe, cela aboutissait à des histogrammes plats, +sans légende des axes. + + Version 5.3.1 : 12/01/24 =============== From 5800ba8fd06af14ff0169a1a60ccc828fcced507 Mon Sep 17 00:00:00 2001 From: Charles PIGNEROL <> Date: Fri, 24 Jan 2025 11:26:17 +0100 Subject: [PATCH 2/2] Version 5.3.2. Fixes display of histograms in cases where only one class is re quested, this resulted in flat histograms, without axis legend. --- versions.txt | 230 +++++++++++++++++++++++++-------------------------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/versions.txt b/versions.txt index 713707d..0ddad03 100644 --- a/versions.txt +++ b/versions.txt @@ -4,8 +4,8 @@ Affichage optionnel des symboles => option dans les panneaux. Version 5.3.2 : 24/01/25 =============== -Correctifs affichage des histogrammes dans les cas où l'on ne demande qu'une classe, cela aboutissait à des histogrammes plats, -sans légende des axes. +Correctifs affichage des histogrammes dans les cas où l'on ne demande qu'une classe, cela aboutissait à des histogrammes plats, +sans légende des axes. Version 5.3.1 : 12/01/24 @@ -13,7 +13,7 @@ Version 5.3.1 : 12/01/24 Ajout #include manquants. -GUIToolkitsVariables v 1.4.3 : FindQwt.cmake gère les dépendances de Qwt à Qt. +GUIToolkitsVariables v 1.4.3 : FindQwt.cmake gère les dépendances de Qwt à Qt. Version 5.3.0 : 13/12/23 @@ -29,13 +29,13 @@ Version 5.2.0 : 23/06/23 Sortie du projet GUIToolkits. -Les includes (FindQwt.cmake) sont remplacés par des find_package/dependency (Qwt) +Les includes (FindQwt.cmake) sont remplacés par des find_package/dependency (Qwt) Version 5.1.1 : 06/06/23 =============== -Retouches cmake (dépendance GUIToolkitsVariables pour accéder à FindQwt.cmake). +Retouches cmake (dépendance GUIToolkitsVariables pour accéder à FindQwt.cmake). Version 5.1.0 : 31/03/23 @@ -47,13 +47,13 @@ Portage GitHub environnement podman/spack/tests CI. Version 5.0.0 : 10/01/23 =============== -Intégration au projet GUIToolkits. +Intégration au projet GUIToolkits. Version 4.4.13 : 25/11/22 ================ -Suppression répertoire module. +Suppression répertoire module. Version 4.4.12 : 09/02/22 @@ -80,69 +80,69 @@ Version 4.4.9 : 24/08/21 Suppression des noms de services et laboratoires. -Version 4.4.8 : 22/12/20 Révisions svn 394/395 +Version 4.4.8 : 22/12/20 Révisions svn 394/395 =============== Retouche mineure CMakeLists.txt -Version 4.4.7 : 14/12/20 Révisions svn 392/393 +Version 4.4.7 : 14/12/20 Révisions svn 392/393 =============== Retouche mineure CMakeLists.txt racine -Version 4.4.6 : 04/11/20 Révisions svn 390/391 +Version 4.4.6 : 04/11/20 Révisions svn 390/391 =============== -Ajout dépendance à QtUtil pour les utilisateurs de cette bibliothèque. -Retouches fichiers CMakeLists.txt relatives à l'utilisation de Qt. +Ajout dépendance à QtUtil pour les utilisateurs de cette bibliothèque. +Retouches fichiers CMakeLists.txt relatives à l'utilisation de Qt. -Version 4.4.5 : 06/10/20 Révisions svn 388/389 +Version 4.4.5 : 06/10/20 Révisions svn 388/389 =============== Retouches mineures pour export. -Version 4.4.4 : 22/07/20 Révisions svn 385/386 +Version 4.4.4 : 22/07/20 Révisions svn 385/386 =============== v 0.8.0 de cmake/workarounds.cmake (LC_ALL=C) -Version 4.4.3 : 15/07/20 Révisions svn 382/383 +Version 4.4.3 : 15/07/20 Révisions svn 382/383 =============== -- Ajout -DNDEBUG à la compilation en mode non debug. +- Ajout -DNDEBUG à la compilation en mode non debug. - Actualisation des fichiers d'installation par scripting (build.sh, configurations/*). -Version 4.4.2 : 25/06/20 Révisions svn 3XX/3XX +Version 4.4.2 : 25/06/20 Révisions svn 3XX/3XX =============== Petits correctifs pour import/export. -Version 4.4.1 : 08/06/20 Révisions svn 377/378 +Version 4.4.1 : 08/06/20 Révisions svn 377/378 =============== Petits correctifs pour import/export. -cmake/common.cmake : ajout à CMAKE_CXX_FLAGS de la variable EXTRA_CXX_FLAGS éventuellement transmise en argument +cmake/common.cmake : ajout à CMAKE_CXX_FLAGS de la variable EXTRA_CXX_FLAGS éventuellement transmise en argument de cmake. -Version 4.4.0 : 04/06/20 Révisions svn 375/376 +Version 4.4.0 : 04/06/20 Révisions svn 375/376 =============== -Fin réintégration en environnement CEA suite confinement covid-19. -Procédure d'exportation ouverte des sources : cible export avec script export.sh +Fin réintégration en environnement CEA suite confinement covid-19. +Procédure d'exportation ouverte des sources : cible export avec script export.sh Version 4.3.0 : 06/04/20 =============== -Déplacement des en-têtes dans le répertoire QwtCharts +Déplacement des en-têtes dans le répertoire QwtCharts TkUtil v 5.4.0 QtUtil v 5.3.0 @@ -152,52 +152,52 @@ Version 4.2.0 : 28/03/20 Correctifs mineurs : - QwtHistogramCoordinatesPicker::trackerTextF : dans sprintf, %u -> %lu -- QwtExtendedMultiBarChart::drawBar : adaptation à l'API QFontMetrics introduite à la v 5.11.0 +- QwtExtendedMultiBarChart::drawBar : adaptation à l'API QFontMetrics introduite à la v 5.11.0 Passage du projet en UTF-8 Portage g++ v 7.5.0 auto_ptr -> unique_ptr -Version 4.1.0 : 17/02/20. Révisions svn 367 +Version 4.1.0 : 17/02/20. Révisions svn 367 =============== -- Retouches compatibilité (SameMinorVersion -> SameMajorVersion) +- Retouches compatibilité (SameMinorVersion -> SameMajorVersion) -Version 4.0.3 : 03/02/20. Révisions svn 363 +Version 4.0.3 : 03/02/20. Révisions svn 363 =============== -Retouches gestion des dépendances. +Retouches gestion des dépendances. -Version 4.0.2 : 21/01/20. Révisions svn 362 +Version 4.0.2 : 21/01/20. Révisions svn 362 =============== -Script de génération de l'archive des sources, script create_tarball.sh. +Script de génération de l'archive des sources, script create_tarball.sh. Fichier LISEZMOI.txt -Version 4.0.1 : 06/01/20 révisions svn 361 +Version 4.0.1 : 06/01/20 révisions svn 361 =============== Portage (Atos_7__x86_64). Retouche workarounds.cmake pour lib stdc++ GNU. -Version 4.0.0 : 18/12/19 révisions svn r358/r359 +Version 4.0.0 : 18/12/19 révisions svn r358/r359 =============== -Portage CMake/Spack g++ 8.3/intel 18.0.3 (arrêt GSCC). +Portage CMake/Spack g++ 8.3/intel 18.0.3 (arrêt GSCC). Portage Qwt 6.1.4 -Version 3.8.0 : 26/09/19 révision svn r351/r352 +Version 3.8.0 : 26/09/19 révision svn r351/r352 =============== TK_variants v 4.10.0. -Version 3.7.1 : 12/09/19 révision svn r348/r349 +Version 3.7.1 : 12/09/19 révision svn r348/r349 =============== TK_variants v 4.9.1. @@ -205,10 +205,10 @@ TK_variants v 4.9.1. - QwtExtendedScaleDraw::label : correctif concernant la gestion des exposants dans les labels des axes. Ex : 4e-5 -> 4e-e-5, -2e-5 -> -2ee-5. -Ce bogue était il à l'origine de plantages dans des applications ??? +Ce bogue était il à l'origine de plantages dans des applications ??? -Version 3.7.0 : 06/09/19 révision svn r345/r346 +Version 3.7.0 : 06/09/19 révision svn r345/r346 =============== TK_variants v 4.9.0. @@ -217,32 +217,32 @@ TkUtil v 4.6.0, QtUtil v 4.6.0. Utilisation de QColorDialog non natives. -Version 3.6.1 : 04/06/19 révision svn r340/r342 +Version 3.6.1 : 04/06/19 révision svn r340/r342 =============== QwtChartsManager::selectionModeCallback ne propage l'exception -levée par un panneau que si il s'agit du panneau courrant. +levée par un panneau que si il s'agit du panneau courrant. QwtChartsManager::displayErrorMessage prend en compte l'encodage des messages d'erreur. -Cela concerne à l'origine la sélection par interpolation linéaire -qui levait systématiquement une exception dès lors qu'il y avait +Cela concerne à l'origine la sélection par interpolation linéaire +qui levait systématiquement une exception dès lors qu'il y avait au moins 2 panneaux. -Version 3.6.0 : 28/11/18 révision svn r334/r336 +Version 3.6.0 : 28/11/18 révision svn r334/r336 =============== TkUtil v 4.5.0 (TK_Variants v 4.6.0). -Version 3.5.0 : 16/11/18 révision svn r330/r332 +Version 3.5.0 : 16/11/18 révision svn r330/r332 =============== TkUtil v 4.4.0. -Version 3.4.0 : 14/09/18 révision svn r327/r329 +Version 3.4.0 : 14/09/18 révision svn r327/r329 =============== TkUtil v 4.3.0. @@ -250,24 +250,24 @@ TkUtil v 4.3.0. Utilisation de ConsoleOutput::cout ( ) et cerr ( ) de TkUtil. -Version 3.3.0 : 04/09/18 révision svn r324/r326 +Version 3.3.0 : 04/09/18 révision svn r324/r326 =============== TK_Variants v 4.3.0 (TkUtil v 4.2.0, QtUtil v 4.3.0) -Version 3.2.0 : 08/06/18 révision svn r321/r323 +Version 3.2.0 : 08/06/18 révision svn r321/r323 =============== TK_Variants v 4.2.0 (TkUtil v 4.1.0, nouveaux services UTF8String) -Version 3.1.0 : 08/06/18 révision svn r318/r320 +Version 3.1.0 : 08/06/18 révision svn r318/r320 =============== TK_Variants v 4.1.0 (Qt591, ECM_Variants v 1.22.0 => arret cible BullEL_6_AE__x86_64). -Utilisation du scenario de deploiement QT_LIBS. Déploiement uniquement des +Utilisation du scenario de deploiement QT_LIBS. Déploiement uniquement des versions statiques. @@ -276,8 +276,8 @@ Version 3.0.0 : 22/03/18 TK_Variants v 4.0.0 -Utilisation des nouveaux services de TkUtil/QtUtil dans l'auto-détection du jeu -de caractères utilisé pour encoder les fichiers sources. +Utilisation des nouveaux services de TkUtil/QtUtil dans l'auto-détection du jeu +de caractères utilisé pour encoder les fichiers sources. Version 2.5.0 : 10/11/17 @@ -287,16 +287,16 @@ TK_Variants v 3.0.0 (ECM_Variants v 1.21.0 : portage RH 7, compilateurs gcc 6.2.0, icpc 17.0.4) Fichier CharToLatinQString : macro permettant de transformer automatiquement des -char* en QLatin1String, utile à partir de Qt 5.?. +char* en QLatin1String, utile à partir de Qt 5.?. -Retouche de la règle de conversion .h -> moc_* requise à partir de Qt 5.?. En +Retouche de la règle de conversion .h -> moc_* requise à partir de Qt 5.?. En effet moc, lorsque la sortie est un fichier (et non stdout), fait les includes -vers le .h compilé en relatif et non pas en asbsolu, et, du coup, ça ne marche -pas forcément ... +vers le .h compilé en relatif et non pas en asbsolu, et, du coup, ça ne marche +pas forcément ... Suppression des QtCore/, QtGui/ et autre au niveau des include car incompatible -avec les stations RH7 qui ont ses répertoires dans /usr/include => les fichiers -inclus viennent de là en priorité et ce peut être incompatible avec ceux issus +avec les stations RH7 qui ont ses répertoires dans /usr/include => les fichiers +inclus viennent de là en priorité et ce peut être incompatible avec ceux issus de notre distribution ... @@ -331,7 +331,7 @@ Version 2.0.0 : 09/12/16 TkUtil/QtUtil v 3.0.0 -Arrêt variant MT +Arrêt variant MT Version 1.14.0 : 29/08/16 @@ -352,17 +352,17 @@ Version 1.12.0 : 09/02/16 Correctifs : - QwtExtendedMultiBarChart::drawOverlappedBars : position x0 - QwtHistogramCoordinatesPicker::trackerText : surcharge de trackerTextF -utilisé pour les histogrammes, différntes retouches pour afficher +utilisé pour les histogrammes, différntes retouches pour afficher l'abscisse de la barre et non plus du point. -=> Méthode QwtExtendedMultiBarChart::intersects +=> Méthode QwtExtendedMultiBarChart::intersects Version 1.11.0 : 21/01/16 ================ -- Nombre de caractères des échelles réduit au maximum sur les -axes pour les modes "concis" si le nombre de décimales n'est pas -imposé. +- Nombre de caractères des échelles réduit au maximum sur les +axes pour les modes "concis" si le nombre de décimales n'est pas +imposé. Format "le plus concis possible". - Classe QtExtStringNumberFormatComboBox. @@ -420,17 +420,17 @@ Version 1.3.0 : 25/09/14 Version 1.2.0 : 17/09/14 =============== -- Affichage optionnel de la légende de la sélection d'un graphique. +- Affichage optionnel de la légende de la sélection d'un graphique. Version 1.1.0 : 25/06/14 =============== -- QwtChartPanel::addPlotItem : correctif de bogue : le bouton "légende" est -enfoncé si la courbe est visible. +- QwtChartPanel::addPlotItem : correctif de bogue : le bouton "légende" est +enfoncé si la courbe est visible. - QwtHistogramChartPanel::legendCheckedCallback : correctif de bogue : -l'ensemble des classes réagissent à chaque bouton de légende. -Méthodes QwtExtendedMultiBarChart::set/isVisible. +l'ensemble des classes réagissent à chaque bouton de légende. +Méthodes QwtExtendedMultiBarChart::set/isVisible. - QwtExtendedPlotZoomer : constructeurs. Correctif de bogue. Le panning annulait le zoom en cours => initMousePattern (2). @@ -438,7 +438,7 @@ annulait le zoom en cours => initMousePattern (2). Version 1.0.0 : 03/06/14 =============== -- Remise en service des méthodes QwtChartPanel::getSelectedCurve et +- Remise en service des méthodes QwtChartPanel::getSelectedCurve et QwtPlotCoordinatesPicker::getSelectedCurve. - Suppression du code Qwt 5.x. @@ -458,7 +458,7 @@ Version 0.50.0 : 10/02/14 Version 0.49.0 : 13/12/13 ================ -RESTE A IMPLEMENTER la sélection au rectangle élastique pour les barres +RESTE A IMPLEMENTER la sélection au rectangle élastique pour les barres d'histogramme. - TK_Variants v 1.33.0. @@ -471,14 +471,14 @@ Correctif bogue QwtPlotCoordinatesPicker::operator = (return *this). Version 0.48.0 : 17/10/13 ================ -RESTE A IMPLEMENTER la sélection au rectangle élastique pour les barres +RESTE A IMPLEMENTER la sélection au rectangle élastique pour les barres d'histogramme. - TK_Variants v 1.31.0. - Portage Qwt 6.1.0 -- Suppression canvaspicker (qui était obsolète) et QwtGenericChartPanel -(inutilisé). +- Suppression canvaspicker (qui était obsolète) et QwtGenericChartPanel +(inutilisé). - Suppression code Qwt < 5.2.0 Corrections de bogues : @@ -486,15 +486,15 @@ Corrections de bogues : correctif de bogue concernant la valeur de retour de autoScale. Ce bogue existait il sous Qwt 5.x ? - QwtPlotCoordinatesPicker::setSelectionMode : plantage en mode -interpolation linéaire lorsque la courbe était sélectionnée via les modes +interpolation linéaire lorsque la courbe était sélectionnée via les modes POINT ou RUBBER_BAND. - tests/QtCurvesMainWindow : mise en place d'un contournement de bogue dans -la classe QtCurveView (méthodes mouseXXXEvent) : on pouvait redimensionner les -fenêtres MDI via drag sur le clic gauche depuis la légende des graphiques. +la classe QtCurveView (méthodes mouseXXXEvent) : on pouvait redimensionner les +fenêtres MDI via drag sur le clic gauche depuis la légende des graphiques. Correctif pas parfait, mais finition difficile car repose sur du Qt non surchargeable. -Nouveautés : +Nouveautés : - Classe utilitaire QwtUtilities. - Support des graphiques type histogrammes => classes Qwt*Histogram*, QwtExtendedMultiBarChart. @@ -528,42 +528,42 @@ Version 0.43.0 : 20/12/12 Version 0.42.0 : 30/10/12 ================ -- TK_Variants v 1.22.0 : Qt 4.7.4, arrêt Qt 3.3.6. +- TK_Variants v 1.22.0 : Qt 4.7.4, arrêt Qt 3.3.6. - Cible RedHat_6_x86_64. Version 0.41.0 : 20/03/12 ================ -Suite à des problèmes de calcul automatique des axes, et une difficultée à -maintenir des sources communs à Qwt 5 et Qwt 6, réintegration des sources de +Suite à des problèmes de calcul automatique des axes, et une difficultée à +maintenir des sources communs à Qwt 5 et Qwt 6, réintegration des sources de la version 0.39.0. -Le support de la version 6 de Qwt est récupérable avec les sources de la -version 0.40.0 de cette bibliothèque. +Le support de la version 6 de Qwt est récupérable avec les sources de la +version 0.40.0 de cette bibliothèque. - TK_Variants v 1.21.0 -Version 0.40.0 : 06/01/12 (premier déploiement le 24/11/11) +Version 0.40.0 : 06/01/12 (premier déploiement le 24/11/11) ================ -Rem : redéploiement effectué le 06/01/12 suite à réinsertion d'une ligne de -code enlevée par erreur dans le constructeur de QwtChartPanel (rechercher -06/01/12). Cette version de la bibliothèque n'était pas encore utilisée. +Rem : redéploiement effectué le 06/01/12 suite à réinsertion d'une ligne de +code enlevée par erreur dans le constructeur de QwtChartPanel (rechercher +06/01/12). Cette version de la bibliothèque n'était pas encore utilisée. - TK_Variants v 1.20.0 (TkUtil v 2.26.0, QtUtil v 2.34.0) -- Début de portage Qwt v 6.0.1. -Problèmes rencontrés et en suspend : +- Début de portage Qwt v 6.0.1. +Problèmes rencontrés et en suspend : - Maintien du rapport d'aspect lors des impressions. - - Lors d'opérations de zoom ou sélection par rectangle élastique, - l'évènement de déplacement du curseur avec bouton gauche enfoncé est bien - pris en compte pour le tracé élastique. Mais il est également traité par + - Lors d'opérations de zoom ou sélection par rectangle élastique, + l'évènement de déplacement du curseur avec bouton gauche enfoncé est bien + pris en compte pour le tracé élastique. Mais il est également traité par ailleurs et provoque le redimensionnement du widget du graphique. A - désactiver. - Ce problème existe également sous Qwt 5.2.0, mais n'existe pas dans le - cadre d'un projet utilisant cette API. Principale différence : les - fenêtres graphiques héritent ici de QMdiSubWindow, alors que dans l'autre - projet elles héritent de QWidget puis sont attachées ensuite à un parent + désactiver. + Ce problème existe également sous Qwt 5.2.0, mais n'existe pas dans le + cadre d'un projet utilisant cette API. Principale différence : les + fenêtres graphiques héritent ici de QMdiSubWindow, alors que dans l'autre + projet elles héritent de QWidget puis sont attachées ensuite à un parent de type QMdiSubWindow. - Suppression de la classe CanvasPicker. @@ -617,7 +617,7 @@ Version 0.33.0 : 01/09/10 - TK_Variants v 1.9.0 - TkUtil 2.20.0 - QtUtil 2.27.0 -- Arrêt déploiement Qt 4.4.1 +- Arrêt déploiement Qt 4.4.1 - Remplacement #include "*.h" par #include <*.h> @@ -663,7 +663,7 @@ de Qwt 5.2.0 (incompatibilite QwpPlotRescaler/QwtPlotPanner). modification du mode de selection => icone grisee, moins trompeuse pour les utilisateurs. -REM : Correspond à la version 0.27.0 du module QwtCharts sous Toolkits. +REM : Correspond à la version 0.27.0 du module QwtCharts sous Toolkits. Version 0.29.0 : 11/12/09 @@ -760,9 +760,9 @@ interpolation lineaire. Version 0.22.0 : 07/05/09 ================ -Version 5.2.0 de Qwt patchée par CP pour correction de bogue lors de l'écriture -du titre des axes des ordonnées. -Le fichier correctif est sauvegardé dans le répertoire data/qwt. +Version 5.2.0 de Qwt patchée par CP pour correction de bogue lors de l'écriture +du titre des axes des ordonnées. +Le fichier correctif est sauvegardé dans le répertoire data/qwt. Les options d'impression proposees par defaut (imprimante/fichier, nom du fichier) sont celles de la dernieres impression realisee. @@ -771,10 +771,10 @@ fichier) sont celles de la dernieres impression realisee. Version 0.21.0 : 30/04/09 ================ -Version 5.2.0 de Qwt (compatibilité maintenue avec les versions précédentes). +Version 5.2.0 de Qwt (compatibilité maintenue avec les versions précédentes). - Correction de bogue dans QwtChartPanel::print lorsque l'impression est -dirigée vers une imprimante. +dirigée vers une imprimante. - Gestion du rapport d'aspect (version de Qwt >= 5.2.0). Il demeure des problemes, notamment lors d'impressions papier, PS et PDF (cas ou l'on ne passe pas par des QImage). Le probleme est que Qt 4.3.2 ne propose @@ -823,16 +823,16 @@ Version 0.16.0 : 09/03/09 - Utilise Qt.Util version 2.15.0 (classe QtExclusiveActionGroup) -- Nouvelles fonctionnalitées liées à la sélection : - - Méthodes QwtChartPanel::getSelectedCurve, getSelectionArea et +- Nouvelles fonctionnalitées liées à la sélection : + - Méthodes QwtChartPanel::getSelectedCurve, getSelectionArea et getSelectionExtrema. - QwtPlotCoordinatesPicker : - - Modes de sélection CURVE, LINEAR_INTERPOLATION + - Modes de sélection CURVE, LINEAR_INTERPOLATION - getSelectedCurve devient publique. - _selectionArea devient _viewportSelectionArea - - Méthodes getSelectionArea et getSelectionExtrema. + - Méthodes getSelectionArea et getSelectionExtrema. - QwtChartsManager utilise QtExclusiveActionGroup et supporte - les modes de sélection QwtPlotCoordinatesPicker::CURVE et + les modes de sélection QwtPlotCoordinatesPicker::CURVE et LINEAR_INTERPOLATION. @@ -841,8 +841,8 @@ Version 0.15.0 : 16/02/09 - Les classes QtActionAutoLock, QtFontPanel, QtPaintAttributes et QtPenPanel sont transferees dans le module QtUtil. -- QwtCurveChartPanel::adjustChart : autocorrection des min et max affichés en -abscisses et ordonnées lorsque les min et max des courbes sont identiques ou +- QwtCurveChartPanel::adjustChart : autocorrection des min et max affichés en +abscisses et ordonnées lorsque les min et max des courbes sont identiques ou presque. - QwtAxisOptionsPanel : le nombre de decimales maximum affichable passe a 15. Davantage de precision dans l'affichage et la recuperation des valeurs @@ -867,7 +867,7 @@ derivees de choisir le type des courbes crees. n'etaient plus affichees. - Correctif de bogue dans le constructeur : initialisation de la police de caracteres a celle reellement utilisee par defaut (bogue Qwt 5.0.2 ?). -- Les classes de panneau d'édition des differents composants des graphiques +- Les classes de panneau d'édition des differents composants des graphiques derivent de QwtChartPanel::QwtChartEditionPanel. Ces panneaux sont notifies de l'ajout ou de la suppression de courbes. - QwtChartOptionsPanel et Dialog : @@ -906,9 +906,9 @@ Version 0.12.0 : 29/10/08 graphe etaient considerees comme actives et executaient le callback. - Raccourcis clavier sur undo/redo zoom. - QwtPlotCoordinatesPicker : - - Adaptations pour compatitbilité avec le panner. + - Adaptations pour compatitbilité avec le panner. - widgetMouseMoveEvent : Correction de bogue (test sur le bouton de la - souris qui est enfoncé). + souris qui est enfoncé). Version 0.10.0 : 25/06/08 @@ -955,7 +955,7 @@ Correctif dans updateFromPlot. Version 0.7.0 : 06/05/08 =============== -- QwtPlotCoordinatesPicker : gestion du mode de sélection (point unique/ +- QwtPlotCoordinatesPicker : gestion du mode de sélection (point unique/ ensemble de points selectionnes par rectangle englobant). Coloration de la selection. - QwtChartPanel : undoZoom et redoZoom. @@ -970,7 +970,7 @@ Version 0.6.0 : 05/05/08 - Classe QwtPlotCoordinatesPicker en remplacement de la classe CanvasPicker (maintenue). - QwtChartPanel utilise la classe QwtPlotCoordinatesPicker pour afficher les -coordonnées survolées. +coordonnées survolées. - La classe QwtCurveChartPanel utilise la classe QwtPlotCoordinatesPicker a la place de la classe CanvasPicker. @@ -993,7 +993,7 @@ Version 0.5.0 : XX/04/08 - Integration dans Toolkits. -Versions antérieures : +Versions antérieures : ====================== Voir fichier versions.old.