|
@@
-0,0
+1,373
|
|
|
|
|
1
|
#### Version 1.2.1 released on 07.04.14 ####
|
|
|
|
|
2
|
|
|
|
|
|
3
|
Bugfixes:
|
|
|
|
|
4
|
- Fixed regression which garbled date-time tick labels on axes, if setTickLabelType is ltDateTime and setNumberFormat contains the "b" option
|
|
|
|
|
5
|
|
|
|
|
|
6
|
#### Version 1.2.0 released on 14.03.14 ####
|
|
|
|
|
7
|
|
|
|
|
|
8
|
Bugfixes:
|
|
|
|
|
9
|
- Fixed bug that caused crash if clicked-on legend item is removed in mousePressEvent.
|
|
|
|
|
10
|
- On some systems, font size defaults to -1, which used to cause a debug output in QCPAxisPainterPrivate::TickLabelDataQCP. Now it's checked before setting values based on the default font size.
|
|
|
|
|
11
|
- When using multiple axes on one side, setting one to invisible didn't properly compress the freed space.
|
|
|
|
|
12
|
- Fixed bug that allowed selection of plottables when clicking in the bottom or top margin of a QCPAxisRect (outside the inner rect)
|
|
|
|
|
13
|
|
|
|
|
|
14
|
#### Version 1.2.0-beta released on 28.01.14 ####
|
|
|
|
|
15
|
|
|
|
|
|
16
|
Added features:
|
|
|
|
|
17
|
- Adaptive Sampling for QCPGraph greatly improves performance for high data densities (see QCPGraph::setAdaptiveSampling)
|
|
|
|
|
18
|
- QCPColorMap plottable with QCPColorScale layout element allows plotting of 2D color maps
|
|
|
|
|
19
|
- QCustomPlot::savePdf now has additional optional parameters pdfCreator and pdfTitle to set according PDF metadata fields
|
|
|
|
|
20
|
- QCustomPlot::replot now allows specifying whether the widget update is immediate (repaint) or queued (update)
|
|
|
|
|
21
|
- QCPRange operators +, -, *, / with double operand for range shifting and scaling, and ==, != for range comparison
|
|
|
|
|
22
|
- Layers now have a visibility property (QCPLayer::setVisible)
|
|
|
|
|
23
|
- static functions QCPAxis::opposite and QCPAxis::orientation now offer more convenience when handling axis types
|
|
|
|
|
24
|
- added notification signals for selectability change (selectableChanged) on all objects that have a selected/selectable property
|
|
|
|
|
25
|
- added notification signal for QCPAxis scaleType property
|
|
|
|
|
26
|
- added notification signal QCPLayerable::layerChanged
|
|
|
|
|
27
|
|
|
|
|
|
28
|
Bugfixes:
|
|
|
|
|
29
|
- Fixed assert halt, when QCPAxis auto tick labels not disabled but nevertheless a custom non-number tick label ending in "e" given
|
|
|
|
|
30
|
- Fixed painting glitches when QCustomPlot resized inside a QMdiArea or under certain conditions inside a QLayout
|
|
|
|
|
31
|
- If changing QCPAxis::scaleType and thus causing range sanitizing and a range modification, rangeChanged wouldn't be emitted
|
|
|
|
|
32
|
- Fixed documentation bug that caused indentation to be lost in code examples
|
|
|
|
|
33
|
|
|
|
|
|
34
|
Other:
|
|
|
|
|
35
|
- In method QCPAbstractPlottable::getKeyRange/getValueRange, renamed parameter "validRange" to "foundRange", to better reflect its meaning (and contrast it from QCPRange::validRange)
|
|
|
|
|
36
|
- QCPAxis low-level axis painting methods exported to QCPAxisPainterPrivate
|
|
|
|
|
37
|
|
|
|
|
|
38
|
#### Version 1.1.1 released on 09.12.13 ####
|
|
|
|
|
39
|
|
|
|
|
|
40
|
Bugfixes:
|
|
|
|
|
41
|
- Fixed bug causing legends blocking input events from reaching underlying axis rect even if legend is invisible
|
|
|
|
|
42
|
- Added missing Q_PROPERTY for QCPAxis::setDateTimeSpec
|
|
|
|
|
43
|
- Fixed behaviour of QCPAxisRect::setupFullAxesBox (now transfers more properties from bottom/left to top/right axes and sets visibility of bottom/left axes to true)
|
|
|
|
|
44
|
- Made sure PDF export doesn't default to grayscale output on some systems
|
|
|
|
|
45
|
|
|
|
|
|
46
|
Other:
|
|
|
|
|
47
|
- Plotting hint QCP::phForceRepaint is now enabled on all systems (and not only on windows) by default
|
|
|
|
|
48
|
- Documentation improvements
|
|
|
|
|
49
|
|
|
|
|
|
50
|
#### Version 1.1.0 released on 04.11.13 ####
|
|
|
|
|
51
|
|
|
|
|
|
52
|
Added features:
|
|
|
|
|
53
|
- Added QCPRange::expand and QCPRange::expanded
|
|
|
|
|
54
|
- Added QCPAxis::rescale to rescale axis to all associated plottables
|
|
|
|
|
55
|
- Added QCPAxis::setDateTimeSpec/dateTimeSpec to allow axis labels either in UTC or local time
|
|
|
|
|
56
|
- QCPAxis now additionally emits a rangeChanged signal overload that provides the old range as second parameter
|
|
|
|
|
57
|
|
|
|
|
|
58
|
Bugfixes:
|
|
|
|
|
59
|
- Fixed QCustomPlot::rescaleAxes not rescaling properly if first plottable has an empty range
|
|
|
|
|
60
|
- QCPGraph::rescaleAxes/rescaleKeyAxis/rescaleValueAxis are no longer virtual (never were in base class, was a mistake)
|
|
|
|
|
61
|
- Fixed bugs in QCPAxis::items and QCPAxisRect::items not properly returning associated items and potentially stalling
|
|
|
|
|
62
|
|
|
|
|
|
63
|
Other:
|
|
|
|
|
64
|
- Internal change from QWeakPointer to QPointer, thus got rid of deprecated Qt functionality
|
|
|
|
|
65
|
- Qt5.1 and Qt5.2 (beta1) compatibility
|
|
|
|
|
66
|
- Release packages now extract to single subdirectory and don't place multiple files in current working directory
|
|
|
|
|
67
|
|
|
|
|
|
68
|
#### Version 1.0.1 released on 05.09.13 ####
|
|
|
|
|
69
|
|
|
|
|
|
70
|
Bugfixes:
|
|
|
|
|
71
|
- using define flag QCUSTOMPLOT_CHECK_DATA caused debug output when data was correct, instead of invalid (fixed QCP::isInvalidData)
|
|
|
|
|
72
|
- documentation images are now properly shown when viewed with Qt Assistant
|
|
|
|
|
73
|
- fixed various documentation mistakes
|
|
|
|
|
74
|
|
|
|
|
|
75
|
Other:
|
|
|
|
|
76
|
- Adapted documentation style sheet to better match Qt5 documentation
|
|
|
|
|
77
|
|
|
|
|
|
78
|
#### Version 1.0.0 released on 01.08.13 ####
|
|
|
|
|
79
|
|
|
|
|
|
80
|
Added features:
|
|
|
|
|
81
|
- Added QCustomPlot::toPainter method, to allow rendering with existing painter
|
|
|
|
|
82
|
- QCPItemEllipse now provides a center anchor
|
|
|
|
|
83
|
|
|
|
|
|
84
|
Bugfixes:
|
|
|
|
|
85
|
- Fixed bug that clipped the rightmost pixel column of tick labels when caching activated (only visible on windows for superscript exponents)
|
|
|
|
|
86
|
- Restored compatibility to Qt4.6
|
|
|
|
|
87
|
- Restored support for -no-RTTI compilation
|
|
|
|
|
88
|
- Empty manual tick labels are handled more gracefully (no QPainter qDebug messages anymore)
|
|
|
|
|
89
|
- Fixed type ambiguity in QCPLineEnding::draw causing compile error on ARM
|
|
|
|
|
90
|
- Fixed bug of grid layouts not propagating the minimum size from their child elements to the parent layout correctly
|
|
|
|
|
91
|
- Fixed bug of child elements (e.g. axis rects) of inset layouts not properly receiving mouse events
|
|
|
|
|
92
|
|
|
|
|
|
93
|
#### Version 1.0.0-beta released on 19.05.13 ####
|
|
|
|
|
94
|
|
|
|
|
|
95
|
Quick Summary:
|
|
|
|
|
96
|
- Layout system for multiple axis rects in one plot
|
|
|
|
|
97
|
- Multiple axes per side
|
|
|
|
|
98
|
- Qt5 compatibility
|
|
|
|
|
99
|
- More flexible and consistent scatter configuration with QCPScatterStyle
|
|
|
|
|
100
|
- Various interface cleanups/refactoring
|
|
|
|
|
101
|
- Pixmap-cached axis labels for improved replot performance
|
|
|
|
|
102
|
|
|
|
|
|
103
|
Changes that break backward compatibility:
|
|
|
|
|
104
|
- QCustomPlot::axisRect() changed meaning due to the extensive changes to how axes and axis rects are handled
|
|
|
|
|
105
|
it now returns a pointer to a QCPAxisRect and takes an integer index as parameter.
|
|
|
|
|
106
|
- QCPAxis constructor changed to now take QCPAxisRect* as parent
|
|
|
|
|
107
|
- setAutoMargin, setMarginLeft/Right/Top/Bottom removed due to the axis rect changes (see QCPAxisRect::setMargins/setAutoMargins)
|
|
|
|
|
108
|
- setAxisRect removed due to the axis rect changes
|
|
|
|
|
109
|
- setAxisBackground(-Scaled/-ScaledMode) now moved to QCPAxisRect as setBackground(-Scaled/ScaledMode) (access via QCustomPlot::axisRects())
|
|
|
|
|
110
|
- QCPLegend now is a QCPLayoutElement
|
|
|
|
|
111
|
- QCPAbstractPlottable::drawLegendIcon parameter "rect" changed from QRect to QRectF
|
|
|
|
|
112
|
- QCPAbstractLegendItem::draw second parameter removed (position/size now handled via QCPLayoutElement base class)
|
|
|
|
|
113
|
- removed QCPLegend::setMargin/setMarginLeft/Right/Top/Bottom (now inherits the capability from QCPLayoutElement::setMargins)
|
|
|
|
|
114
|
- removed QCPLegend::setMinimumSize (now inherits the capability from QCPLayoutElement::setMinimumSize)
|
|
|
|
|
115
|
- removed enum QCPLegend::PositionStyle, QCPLegend::positionStyle/setPositionStyle/position/setPosition (replaced by capabilities of QCPLayoutInset)
|
|
|
|
|
116
|
- QCPLegend transformed to work with new layout system (almost everything changed)
|
|
|
|
|
117
|
- removed entire title interface: QCustomPlot::setTitle/setTitleFont/setTitleColor/setTitleSelected/setTitleSelectedFont/setTitleSelectedColor and
|
|
|
|
|
118
|
the QCustomPlot::iSelectTitle interaction flag (all functionality is now given by the layout element "QCPPlotTitle" which can be added to the plot layout)
|
|
|
|
|
119
|
- selectTest functions now take two additional parameters: bool onlySelectable and QVariant *details=0
|
|
|
|
|
120
|
- selectTest functions now ignores visibility of objects and (if parameter onlySelectable is true) does not anymore ignore selectability of the object
|
|
|
|
|
121
|
- moved QCustomPlot::Interaction/Interactions to QCP namespace as QCP::Interaction/Interactions
|
|
|
|
|
122
|
- moved QCustomPlot::setupFullAxesBox() to QCPAxisRect::setupFullAxesBox. Now also accepts parameter to decide whether to connect opposite axis ranges
|
|
|
|
|
123
|
- moved range dragging/zooming interface from QCustomPlot to QCPAxisRect (setRangeDrag, setRangeZoom, setRangeDragAxes, setRangeZoomAxes,...)
|
|
|
|
|
124
|
- rangeDrag/Zoom is now set to Qt::Horizontal|Qt::Vertical instead of 0 by default, on the other hand, iRangeDrag/Zoom is unset in interactions by
|
|
|
|
|
125
|
default (this makes enabling dragging/zooming easier by just adding the interaction flags)
|
|
|
|
|
126
|
- QCPScatterStyle takes over everything related to handling scatters in all plottables
|
|
|
|
|
127
|
- removed setScatterPen/Size on QCPGraph and QCPCurve, removed setOutlierPen/Size on QCPStatisticalBox (now handled via QCPScatterStyle)
|
|
|
|
|
128
|
- modified setScatterStyle on QCPGraph and QCPCurve, and setOutlierStyle on QCPStatisticalBox, to take QCPScatterStyle
|
|
|
|
|
129
|
- axis grid and subgrid are now reachable via the QCPGrid *QCPAxis::grid() method. (e.g. instead of xAxis->setGrid(true), write xAxis->grid()->setVisible(true))
|
|
|
|
|
130
|
|
|
|
|
|
131
|
Added features:
|
|
|
|
|
132
|
- Axis tick labels are now pixmap-cached, thus increasing replot performance (in usual setups by about 24%). See plotting hint phCacheLabels which is set by default
|
|
|
|
|
133
|
- Advanced layout system, including the classes QCPLayoutElement, QCPLayout, QCPLayoutGrid, QCPLayoutInset, QCPAxisRect
|
|
|
|
|
134
|
- QCustomPlot::axisRects() returns all the axis rects in the QCustomPlot.
|
|
|
|
|
135
|
- QCustomPlot::plotLayout() returns the top level layout (initially a QCPLayoutGrid with one QCPAxisRect inside)
|
|
|
|
|
136
|
- QCPAxis now may have an offset to the axis rect (setOffset)
|
|
|
|
|
137
|
- Multiple axes per QCPAxisRect side are now supported (see QCPAxisRect::addAxis)
|
|
|
|
|
138
|
- QCustomPlot::toPixmap renders the plot into a pixmap and returns it
|
|
|
|
|
139
|
- When setting tick label rotation to +90 or -90 degrees on a vertical axis, the labels are now centered vertically on the tick height
|
|
|
|
|
140
|
(This allows space saving vertical tick labels by having the text direction parallel to the axis)
|
|
|
|
|
141
|
- Substantially increased replot performance when using very large manual tick vectors (> 10000 ticks) via QCPAxis::setTickVector
|
|
|
|
|
142
|
- QCPAxis and QCPAxisRect now allow easy access to all plottables(), graphs() and items() that are associated with them
|
|
|
|
|
143
|
- Added QCustomPlot::hasItem method for consistency with plottable interface, hasPlottable
|
|
|
|
|
144
|
- Added QCPAxisRect::setMinimumMargins as replacement for hardcoded minimum axis margin (15 px) when auto margin is enabled
|
|
|
|
|
145
|
- Added Flags type QCPAxis::AxisTypes (from QCPAxis::AxisType), used in QCPAxisRect interface
|
|
|
|
|
146
|
- Automatic margin calculation can now be enabled/disabled on a per-side basis, see QCPAxisRect::setAutoMargins
|
|
|
|
|
147
|
- QCPAxisRect margins of multiple axis rects can be coupled via QCPMarginGroup
|
|
|
|
|
148
|
- Added new default layers "background" and "legend" (QCPAxisRect draws its background on the "background" layer, QCPLegend is on the "legend" layer by default)
|
|
|
|
|
149
|
- Custom scatter style via QCP::ssCustom and respective setCustomScatter functions that take a QPainterPath
|
|
|
|
|
150
|
- Filled scatters via QCPScatterStyle::setBrush
|
|
|
|
|
151
|
|
|
|
|
|
152
|
Bugfixes:
|
|
|
|
|
153
|
- Fixed compile error on ARM
|
|
|
|
|
154
|
- Wrong legend icons were displayed if using pixmaps for scatters that are smaller than the legend icon rect
|
|
|
|
|
155
|
- Fixed clipping inaccuracy for rotated tick labels (were hidden too early, because the non-rotated bounding box was used)
|
|
|
|
|
156
|
- Fixed bug that caused wrong clipping of axis ticks and subticks when the ticks were given manually by QCPAxis::setTickVector
|
|
|
|
|
157
|
- Fixed Qt5 crash when dragging graph out of view (iterator out of bounds in QCPGraph::getVisibleDataBounds)
|
|
|
|
|
158
|
- Fixed QCPItemText not scaling properly when using scaled raster export
|
|
|
|
|
159
|
|
|
|
|
|
160
|
|
|
|
|
|
161
|
Other:
|
|
|
|
|
162
|
- Opened up non-amalgamated project structure to public via git repository
|
|
|
|
|
163
|
|
|
|
|
|
164
|
#### Version released on 09.06.12 ####
|
|
|
|
|
165
|
|
|
|
|
|
166
|
Quick Summary:
|
|
|
|
|
167
|
- Items (arrows, text,...)
|
|
|
|
|
168
|
- Layers (easier control over rendering order)
|
|
|
|
|
169
|
- New antialiasing system (Each objects controls own antialiasing with setAntialiased)
|
|
|
|
|
170
|
- Performance Improvements
|
|
|
|
|
171
|
- improved pixel-precise drawing
|
|
|
|
|
172
|
- easier shared library creation/usage
|
|
|
|
|
173
|
|
|
|
|
|
174
|
Changes that (might) break backward compatibility:
|
|
|
|
|
175
|
- enum QCPGraph::ScatterSymbol was moved to QCP namespace (now QCP::ScatterSymbol).
|
|
|
|
|
176
|
This replace should fix your code: "QCPGraph::ss" -> "QCP::ss"
|
|
|
|
|
177
|
- enum QCustomPlot::AntialiasedElement and flag QCustomPlot::AntialiasedElements was moved to QCP namespace
|
|
|
|
|
178
|
This replace should fix your code: "QCustomPlot::ae" -> "QCP::ae"
|
|
|
|
|
179
|
- the meaning of QCustomPlot::setAntialiasedElements has changed slightly: It is now an override to force elements to be antialiased. If you want to force
|
|
|
|
|
180
|
elements to not be drawn antialiased, use the new setNotAntialiasedElements. If an element is mentioned in neither of those functions, it now controls
|
|
|
|
|
181
|
its antialiasing itself via its "setAntialiased" function(s). (e.g. QCPAxis::setAntialiased(bool), QCPAbstractPlottable::setAntialiased(bool),
|
|
|
|
|
182
|
QCPAbstractPlottable::setAntialiasedScatters(bool), etc.)
|
|
|
|
|
183
|
- QCPAxis::setTickVector and QCPAxis::setTickVectorLabels no longer take a pointer but a const reference of the respective QVector as parameter.
|
|
|
|
|
184
|
(handing over a pointer didn't give any noticeable performance benefits but was inconsistent with the rest of the interface)
|
|
|
|
|
185
|
- Equally QCPAxis::tickVector and QCPAxis::tickVectorLabels don't return by pointer but by value now
|
|
|
|
|
186
|
- QCustomPlot::savePngScaled was removed, its purpose is now included as optional parameter "scale" of savePng.
|
|
|
|
|
187
|
- If you have derived from QCPAbstractPlottable: all selectTest functions now consistently take the argument "const QPointF &pos" which is the test point in pixel coordinates.
|
|
|
|
|
188
|
(the argument there was "double key, double value" in plot coordinates, before).
|
|
|
|
|
189
|
- QCPAbstractPlottable, QCPAxis and QCPLegend now inherit from QCPLayerable
|
|
|
|
|
190
|
- If you have derived from QCPAbstractPlottable: the draw method signature has changed from "draw (..) const" to "draw (..)", i.e. the method
|
|
|
|
|
191
|
is not const anymore. This allows the draw function of your plottable to perform buffering/caching operations, if necessary.
|
|
|
|
|
192
|
|
|
|
|
|
193
|
Added features:
|
|
|
|
|
194
|
- Item system: QCPAbstractItem, QCPItemAnchor, QCPItemPosition, QCPLineEnding. Allows placing of lines, arrows, text, pixmaps etc.
|
|
|
|
|
195
|
- New Items: QCPItemStraightLine, QCPItemLine, QCPItemCurve, QCPItemEllipse, QCPItemRect, QCPItemPixmap, QCPItemText, QCPItemBracket, QCPItemTracer
|
|
|
|
|
196
|
- QCustomPlot::addItem/itemCount/item/removeItem/selectedItems
|
|
|
|
|
197
|
- signals QCustomPlot::itemClicked/itemDoubleClicked
|
|
|
|
|
198
|
- the QCustomPlot interactions property now includes iSelectItems (for selection of QCPAbstractItem)
|
|
|
|
|
199
|
- QCPLineEnding. Represents the different styles a line/curve can end (e.g. different arrows, circle, square, bar, etc.), see e.g. QCPItemCurve::setHead
|
|
|
|
|
200
|
- Layer system: QCPLayerable, QCPLayer. Allows more sophisticated control over drawing order and a kind of grouping.
|
|
|
|
|
201
|
- QCPAbstractPlottable, QCPAbstractItem, QCPAxis, QCPGrid, QCPLegend are layerables and derive from QCPLayerable
|
|
|
|
|
202
|
- QCustomPlot::addLayer/moveLayer/removeLayer/setCurrentLayer/layer/currentLayer/layerCount
|
|
|
|
|
203
|
- Initially there are three layers: "grid", "main", and "axes". The "main" layer is initially empty and set as current layer, so new plottables/items are put there.
|
|
|
|
|
204
|
- QCustomPlot::viewport now makes the previously inaccessible viewport rect read-only-accessible (needed that for item-interface)
|
|
|
|
|
205
|
- PNG export now allows transparent background by calling QCustomPlot::setColor(Qt::transparent) before savePng
|
|
|
|
|
206
|
- QCPStatisticalBox outlier symbols may now be all scatter symbols, not only hardcoded circles.
|
|
|
|
|
207
|
- perfect precision of scatter symbol/error bar drawing and clipping in both antialiased and non-antialiased mode, by introducing QCPPainter
|
|
|
|
|
208
|
that works around some QPainter bugs/inconveniences. Further, more complex symbols like ssCrossSquare used to look crooked, now they look good.
|
|
|
|
|
209
|
- new antialiasing control system: Each drawing element now has its own "setAntialiased" function to control whether it is drawn antialiased.
|
|
|
|
|
210
|
- QCustomPlot::setAntialiasedElements and QCustomPlot::setNotAntialiasedElements can be used to override the individual settings.
|
|
|
|
|
211
|
- Subclasses of QCPAbstractPlottable can now use the convenience functions like applyFillAntialiasingHint or applyScattersAntialiasingHint to
|
|
|
|
|
212
|
easily make their drawing code comply with the overall antialiasing system.
|
|
|
|
|
213
|
- QCustomPlot::setNoAntialiasingOnDrag allows greatly improved performance and responsiveness by temporarily disabling all antialiasing while
|
|
|
|
|
214
|
the user is dragging axis ranges
|
|
|
|
|
215
|
- QCPGraph can now show scatter symbols at data points and hide its line (see QCPGraph::setScatterStyle, setScatterSize, setScatterPixmap, setLineStyle)
|
|
|
|
|
216
|
- Grid drawing code was sourced out from QCPAxis to QCPGrid. QCPGrid is mainly an internal class and every QCPAxis owns one. The grid interface still
|
|
|
|
|
217
|
works through QCPAxis and hasn't changed. The separation allows the grid to be drawn on a different layer as the axes, such that e.g. a graph can
|
|
|
|
|
218
|
be above the grid but below the axes.
|
|
|
|
|
219
|
- QCustomPlot::hasPlottable(plottable), returns whether the QCustomPlot contains the plottable
|
|
|
|
|
220
|
- QCustomPlot::setPlottingHint/setPlottingHints, plotting hints control details about the plotting quality/speed
|
|
|
|
|
221
|
- export to jpg and bmp added (QCustomPlot::saveJpg/saveBmp), as well as control over compression quality for png and jpg
|
|
|
|
|
222
|
- multi-select-modifier may now be specified with QCustomPlot::setMultiSelectModifier and is not fixed to Ctrl anymore
|
|
|
|
|
223
|
|
|
|
|
|
224
|
Bugfixes:
|
|
|
|
|
225
|
- fixed QCustomPlot ignores replot after it had size (0,0) even if size becomes valid again
|
|
|
|
|
226
|
- on Windows, a repaint used to be delayed during dragging/zooming of a complex plot, until the drag operation was done.
|
|
|
|
|
227
|
This was fixed, i.e. repaints are forced after a replot() call. See QCP::phForceRepaint and setPlottingHints.
|
|
|
|
|
228
|
- when using the raster paintengine and exporting to scaled PNG, pen widths are now scaled correctly (QPainter bug workaround via QCPPainter)
|
|
|
|
|
229
|
- PDF export now respects QCustomPlot background color (QCustomPlot::setColor), also Qt::transparent
|
|
|
|
|
230
|
- fixed a bug on QCPBars and QCPStatisticalBox where auto-rescaling of axis would fail when all data is very small (< 1e-11)
|
|
|
|
|
231
|
- fixed mouse event propagation bug that prevented range dragging from working on KDE (GNU/Linux)
|
|
|
|
|
232
|
- fixed a compiler warning on 64-bit systems due to pointer cast to int instead of quintptr in a qDebug output
|
|
|
|
|
233
|
|
|
|
|
|
234
|
Other:
|
|
|
|
|
235
|
- Added support for easier shared library creation (including examples for compiling and using QCustomPlot as shared library)
|
|
|
|
|
236
|
- QCustomPlot now has the Qt::WA_OpaquePaintEvent widget attribute (gives slightly improved performance).
|
|
|
|
|
237
|
- QCP::aeGraphs (enum QCP::AntialiasedElement, previously QCustomPlot::aeGraphs) has been marked deprecated since version 02.02.12 and
|
|
|
|
|
238
|
was now removed. Use QCP::aePlottables instead.
|
|
|
|
|
239
|
- optional performance-quality-tradeoff for solid graph lines (see QCustomPlot::setPlottingHints).
|
|
|
|
|
240
|
- marked data classes and QCPRange as Q_MOVABLE_TYPE
|
|
|
|
|
241
|
- replaced usage of own macro FUNCNAME with Qt macro Q_FUNC_INFO
|
|
|
|
|
242
|
- QCustomPlot now returns a minimum size hint of 50*50
|
|
|
|
|
243
|
|
|
|
|
|
244
|
#### Version released on 31.03.12 ####
|
|
|
|
|
245
|
|
|
|
|
|
246
|
Changes that (might) break backward compatibility:
|
|
|
|
|
247
|
- QCPAbstractLegendItem now inherits from QObject
|
|
|
|
|
248
|
- mousePress, mouseMove and mouseRelease signals are now emitted before and not after any QCustomPlot processing (range dragging, selecting, etc.)
|
|
|
|
|
249
|
|
|
|
|
|
250
|
Added features:
|
|
|
|
|
251
|
- Interaction system: now allows selecting of objects like plottables, axes, legend and plot title, see QCustomPlot::setInteractions documentation
|
|
|
|
|
252
|
- Interaction system for plottables:
|
|
|
|
|
253
|
- setSelectable, setSelected, setSelectedPen, setSelectedBrush, selectTest on QCPAbstractPlottable and all derived plottables
|
|
|
|
|
254
|
- setSelectionTolerance on QCustomPlot
|
|
|
|
|
255
|
- selectedPlottables and selectedGraphs on QCustomPlot (returns the list of currently selected plottables/graphs)
|
|
|
|
|
256
|
- Interaction system for axes:
|
|
|
|
|
257
|
- setSelectable, setSelected, setSelectedBasePen, setSelectedTickPen, setSelectedSubTickPen, setSelectedLabelFont, setSelectedTickLabelFont,
|
|
|
|
|
258
|
setSelectedLabelColor, setSelectedTickLabelColor, selectTest on QCPAxis
|
|
|
|
|
259
|
- selectedAxes on QCustomPlot (returns a list of the axes that currently have selected parts)
|
|
|
|
|
260
|
- Interaction system for legend:
|
|
|
|
|
261
|
- setSelectable, setSelected, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, setSelectedFont, setSelectedTextColor, selectedItems on QCPLegend
|
|
|
|
|
262
|
- setSelectedFont, setSelectedTextColor, setSelectable, setSelected on QCPAbstractLegendItem
|
|
|
|
|
263
|
- selectedLegends on QCustomPlot
|
|
|
|
|
264
|
- Interaction system for title:
|
|
|
|
|
265
|
- setSelectedTitleFont, setSelectedTitleColor, setTitleSelected on QCustomPlot
|
|
|
|
|
266
|
- new signals in accordance with the interaction system:
|
|
|
|
|
267
|
- selectionChangedByUser on QCustomPlot
|
|
|
|
|
268
|
- selectionChanged on QCPAbstractPlottable
|
|
|
|
|
269
|
- selectionChanged on QCPAxis
|
|
|
|
|
270
|
- selectionChanged on QCPLegend and QCPAbstractLegendItem
|
|
|
|
|
271
|
- plottableClick, legendClick, axisClick, titleClick, plottableDoubleClick, legendDoubleClick, axisDoubleClick, titleDoubleClick on QCustomPlot
|
|
|
|
|
272
|
- QCustomPlot::deselectAll (deselects everything, i.e. axes and plottables)
|
|
|
|
|
273
|
- QCPAbstractPlottable::pixelsToCoords (inverse function to the already existing coordsToPixels function)
|
|
|
|
|
274
|
- QCPRange::contains(double value)
|
|
|
|
|
275
|
- QCPAxis::setLabelColor and setTickLabelColor
|
|
|
|
|
276
|
- QCustomPlot::setTitleColor
|
|
|
|
|
277
|
- QCustomPlot now emits beforeReplot and afterReplot signals. Note that it is safe to make two customPlots mutually call eachothers replot functions
|
|
|
|
|
278
|
in one of these slots, it will not cause an infinite loop. (usefull for synchronizing axes ranges between two customPlots, because setRange alone doesn't replot)
|
|
|
|
|
279
|
- If the Qt version is 4.7 or greater, the tick label strings in date-time-mode now support sub-second accuracy (e.g. with format like "hh:mm:ss.zzz").
|
|
|
|
|
280
|
|
|
|
|
|
281
|
Bugfixes:
|
|
|
|
|
282
|
- tick labels/margins should no longer oscillate by one pixel when dragging range or replotting repeatedly while changing e.g. data. This
|
|
|
|
|
283
|
was caused by a bug in Qt's QFontMetrics::boundingRect function when the font has an integer point size (probably some rounding problem).
|
|
|
|
|
284
|
The fix hence consists of creating a temporary font (only for bounding-box calculation) which is 0.05pt larger and thus avoiding the
|
|
|
|
|
285
|
jittering rounding outcome.
|
|
|
|
|
286
|
- tick label, axis label and plot title colors used to be undefined. This was fixed by providing explicit color properties.
|
|
|
|
|
287
|
|
|
|
|
|
288
|
Other:
|
|
|
|
|
289
|
- fixed some glitches in the documentation
|
|
|
|
|
290
|
- QCustomPlot::replot and QCustomPlot::rescaleAxes are now slots
|
|
|
|
|
291
|
|
|
|
|
|
292
|
#### Version released on 02.02.12 ####
|
|
|
|
|
293
|
|
|
|
|
|
294
|
Changes that break backward compatibility:
|
|
|
|
|
295
|
- renamed all secondary classes from QCustomPlot[...] to QCP[...]:
|
|
|
|
|
296
|
QCustomPlotAxis -> QCPAxis
|
|
|
|
|
297
|
QCustomPlotGraph -> QCPGraph
|
|
|
|
|
298
|
QCustomPlotRange -> QCPRange
|
|
|
|
|
299
|
QCustomPlotData -> QCPData
|
|
|
|
|
300
|
QCustomPlotDataMap -> QCPDataMap
|
|
|
|
|
301
|
QCustomPlotLegend -> QCPLegend
|
|
|
|
|
302
|
QCustomPlotDataMapIterator -> QCPDataMapIterator
|
|
|
|
|
303
|
QCustomPlotDataMutableMapIterator -> QCPDataMutableMapIterator
|
|
|
|
|
304
|
A simple search and replace on all code files should make your code run again, e.g. consider the regex "QCustomPlot(?=[AGRDL])" -> "QCP".
|
|
|
|
|
305
|
Make sure not to just replace "QCustomPlot" with "QCP" because the main class QCustomPlot hasn't changed to QCP.
|
|
|
|
|
306
|
This change was necessary because class names became unhandy, pardon my bad naming decision in the beginning.
|
|
|
|
|
307
|
- QCPAxis::tickLength() and QCPAxis::subTickLength() now each split into two functions for inward and outward ticks (tickLengthIn/tickLengthOut).
|
|
|
|
|
308
|
- QCPLegend now uses QCPAbstractLegendItem to carry item data (before, the legend was passed QCPGraphs directly)
|
|
|
|
|
309
|
- QCustomPlot::addGraph() now doesn't return the index of the created graph anymore, but a pointer to the created QCPGraph.
|
|
|
|
|
310
|
- QCustomPlot::setAutoAddGraphToLegend is replaced by setAutoAddPlottableToLegend
|
|
|
|
|
311
|
|
|
|
|
|
312
|
Added features:
|
|
|
|
|
313
|
- Reversed axis range with QCPAxis::setRangeReversed(bool)
|
|
|
|
|
314
|
- Tick labels are now only drawn if not clipped by the viewport (widget border) on the sides (e.g. left and right on a horizontal axis).
|
|
|
|
|
315
|
- Zerolines. Like grid lines only with a separate pen (QCPAxis::setZeroLinePen), at tick position zero.
|
|
|
|
|
316
|
- Outward ticks. QCPAxis::setTickLength/setSubTickLength now accepts two arguments for inward and outward tick length. This doesn't break
|
|
|
|
|
317
|
backward compatibility because the second argument (outward) has default value zero and thereby a call with one argument hasn't changed its meaning.
|
|
|
|
|
318
|
- QCPGraph now inherits from QCPAbstractPlottable
|
|
|
|
|
319
|
- QCustomPlot::addPlottable/plottable/removePlottable/clearPlottables added to interface with the new QCPAbstractPlottable-based system. The simpler interface
|
|
|
|
|
320
|
which only acts on QCPGraphs (addGraph, graph, removeGraph, etc.) was adapted internally and is kept for backward compatibility and ease of use.
|
|
|
|
|
321
|
- QCPLegend items for plottables (e.g. graphs) can automatically wrap their texts to fit the widths, see QCPLegend::setMinimumSize and QCPPlottableLegendItem::setTextWrap.
|
|
|
|
|
322
|
- QCustomPlot::rescaleAxes. Adapts axis ranges to show all plottables/graphs, by calling QCPAbstractPlottable::rescaleAxes on all plottables in the plot.
|
|
|
|
|
323
|
- QCPCurve. For plotting of parametric curves.
|
|
|
|
|
324
|
- QCPBars. For plotting of bar charts.
|
|
|
|
|
325
|
- QCPStatisticalBox. For statistical box plots.
|
|
|
|
|
326
|
|
|
|
|
|
327
|
Bugfixes:
|
|
|
|
|
328
|
- Fixed QCustomPlot::removeGraph(int) not being able to remove graph index 0
|
|
|
|
|
329
|
- made QCustomPlot::replot() abort painting when painter initialization fails (e.g. because width/height of QCustomPlot is zero)
|
|
|
|
|
330
|
- The distance of the axis label from the axis ignored the tick label padding, this could have caused overlapping axis labels and tick labels
|
|
|
|
|
331
|
- fixed memory leak in QCustomPlot (dtor didn't delete legend)
|
|
|
|
|
332
|
- fixed bug that prevented QCPAxis::setRangeLower/Upper from setting the value to exactly 0.
|
|
|
|
|
333
|
|
|
|
|
|
334
|
Other:
|
|
|
|
|
335
|
- Changed default error bar handle size (QCustomPlotGraph::setErrorBarSize) from 4 to 6.
|
|
|
|
|
336
|
- Removed QCustomPlotDataFetcher. Was deprecated and not used class.
|
|
|
|
|
337
|
- Extended documentation, especially class descriptions.
|
|
|
|
|
338
|
|
|
|
|
|
339
|
#### Version released on 15.01.12 ####
|
|
|
|
|
340
|
|
|
|
|
|
341
|
Changes that (might) break backward compatibility:
|
|
|
|
|
342
|
- QCustomPlotGraph now inherits from QObject
|
|
|
|
|
343
|
|
|
|
|
|
344
|
Added features:
|
|
|
|
|
345
|
- Added axis background pixmap (QCustomPlot::setAxisBackground, setAxisBackgroundScaled, setAxisBackgroundScaledMode)
|
|
|
|
|
346
|
- Added width and height parameter on PDF export function QCustomPlot::savePdf(). This now allows PDF export to
|
|
|
|
|
347
|
have arbitrary dimensions, independent of the current geometry of the QCustomPlot.
|
|
|
|
|
348
|
- Added overload of QCustomPlot::removeGraph that takes QCustomPlotGraph* as parameter, instead the index of the graph
|
|
|
|
|
349
|
- Added all enums to the Qt meta system via Q_ENUMS(). The enums can now be transformed
|
|
|
|
|
350
|
to QString values easily with the Qt meta system, which makes saving state e.g. as XML
|
|
|
|
|
351
|
significantly nicer.
|
|
|
|
|
352
|
- added typedef QMapIterator<double,QCustomPlotData> QCustomPlotDataMapIterator
|
|
|
|
|
353
|
and typedef QMutableMapIterator<double,QCustomPlotData> QCustomPlotDataMutableMapIterator
|
|
|
|
|
354
|
for improved information hiding, when using iterators outside QCustomPlot code
|
|
|
|
|
355
|
|
|
|
|
|
356
|
Bugfixes:
|
|
|
|
|
357
|
- Fixed savePngScaled. Axis/label drawing functions used to reset the painter transform
|
|
|
|
|
358
|
and thereby break savePngScaled. Now they buffer the current transform and restore it afterwards.
|
|
|
|
|
359
|
- Fixed some glitches in the doxygen comments (affects documentation only)
|
|
|
|
|
360
|
|
|
|
|
|
361
|
Other:
|
|
|
|
|
362
|
- Changed the default tickLabelPadding of top axis from 3 to 6 pixels. Looks better.
|
|
|
|
|
363
|
- Changed the default QCustomPlot::setAntialiasedElements setting: Graph fills are now antialiased
|
|
|
|
|
364
|
by default. That's a bit slower, but makes fill borders look better.
|
|
|
|
|
365
|
|
|
|
|
|
366
|
#### Version released on 19.11.11 ####
|
|
|
|
|
367
|
|
|
|
|
|
368
|
Changes that break backward compatibility:
|
|
|
|
|
369
|
- QCustomPlotAxis: tickFont and setTickFont renamed to tickLabelFont and setTickLabelFont (for naming consistency)
|
|
|
|
|
370
|
|
|
|
|
|
371
|
Other:
|
|
|
|
|
372
|
- QCustomPlotAxis: Added rotated tick labels, see setTickLabelRotation
|
|
|
|
|
373
|
|