QPixmapmBackgroundImage;///A cache of the background of the widget. Contains the SVG or just white background with lines
#ifdef USE_QIMAGE
QImagemScrollableImage;///The scrollable image for the widget. Contains the SVG lines
#else
QPixmapmScrollableImage;///The scrollable image for the widget. Contains the SVG lines
#endif
intmScrollOffset;///The scrollable image is, well, scrolled in a wrap-around window. mScrollOffset determines where the left hand side of the mScrollableImage should be drawn relative to the right hand side of view. 0 <= mScrollOffset < mScrollableImage.width()
qrealmMinValue;///The minimum value (unscaled) currently being displayed
qrealmMaxValue;///The maximum value (unscaled) currently being displayed
qrealmUserMinValue;///The minimum value (unscaled) set by changeRange(). This is the _maximum_ value that the range will start from.
qrealmUserMaxValue;///The maximum value (unscaled) set by changeRange(). This is the _minimum_ value that the range will reach to.
unsignedintmRescaleTime;///The number of data points passed since a value that is within 70% of the current maximum was found. This is for scaling the graph
qrealmNiceMinValue;///The minimum value rounded down to a 'nice' value
qrealmNiceMaxValue;///The maximum value rounded up to a 'nice' value. The idea is to round the value, say, 93 to 100.
qrealmNiceRange;/// mNiceMaxValue - mNiceMinValue
intmPrecision;///The number of decimal place required to unambiguously label the axis
qrealmScaleDownBy;/// @see setScaleDownBy
boolmUseAutoRange;/// @see setUseAutoRange
/** Whether to show a white line on the left and bottom of the widget, for a 3D effect */
boolmShowThinFrame;
boolmShowVerticalLines;
uintmVerticalLinesDistance;
boolmVerticalLinesScroll;
uintmVerticalLinesOffset;
uintmHorizontalScale;
intmHorizontalLinesCount;
boolmShowHorizontalLines;
boolmStackBeams;/// Set to add the beam values onto each other
intmFillOpacity;/// Fill the area underneath the beams
boolmShowAxis;
QList<QList<qreal>>mBeamData;// Every item in the linked list contains a set of data points to plot. The first item is the newest
QList<QColor>mBeamColors;//These colors match up against the QList<qreal> in mBeamData
QList<QColor>mBeamColorsLight;//These colors match up against the QList<qreal> in mBeamData, and are lighter than mBeamColors. Done for gradient effects
unsignedintmMaxSamples;//This is what mBeamData.size() should equal when full. When we start off and have no data then mSamples will be higher. If we resize the widget so it's smaller, then for a short while this will be smaller
intmNewestIndex;//The index to the newest item added. newestIndex+1 is the second newest, and so on
KLocalizedStringmUnit;
intmAxisTextWidth;
intmActualAxisTextWidth;// Sometimes there just is not enough room for all the requested axisTextWidth
QRectmPlottingArea;/// The area in which the beams are drawn. Saved to make update() more efficient
boolmSmoothGraph;/// Whether to smooth the graph by averaging using the formula (value*2 + last_value)/3.
KSignalPlotter*q;
boolmAxisTextOverlapsPlotter;// Whether we need to redraw the axis text on every update
#ifdef USE_SEPERATE_WIDGET
GraphWidget*mGraphWidget;///< This is the widget that draws the actual graph
#endif
};
#ifdef USE_SEPERATE_WIDGET
/* A class to draw the actual widget. This is used for the QWidget version of KSignalPlotter in order to speed up redraws */