QWT API (中文) 7.0.1
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_scale_engine.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *
9 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_SCALE_ENGINE_H
28#define QWT_SCALE_ENGINE_H
29
30#include "qwt_global.h"
31#include "qwt_scale_div.h"
32
33class QwtInterval;
34class QwtTransform;
35
44class QWT_EXPORT QwtScaleArithmetic
45{
46public:
48 static double ceilEps(double value, double intervalSize);
50 static double floorEps(double value, double intervalSize);
51
53 static double divideEps(double intervalSize, double numSteps);
54
56 static double divideInterval(double intervalSize, int numSteps, uint base);
57};
58
75class QWT_EXPORT QwtScaleEngine
76{
77public:
89 {
91 NoAttribute = 0x00,
92
94 IncludeReference = 0x01,
95
97 Symmetric = 0x02,
98
111 Floating = 0x04,
112
114 Inverted = 0x08
115 };
116
117 Q_DECLARE_FLAGS(Attributes, Attribute)
118
119 explicit QwtScaleEngine(uint base = 10);
120 virtual ~QwtScaleEngine();
121
123 void setBase(uint base);
125 uint base() const;
126
128 void setAttribute(Attribute, bool on = true);
130 bool testAttribute(Attribute) const;
131
133 void setAttributes(Attributes);
135 Attributes attributes() const;
136
138 void setReference(double);
140 double reference() const;
141
143 void setMargins(double lower, double upper);
145 double lowerMargin() const;
147 double upperMargin() const;
148
150 virtual void autoScale(int maxNumSteps, double& x1, double& x2, double& stepSize) const = 0;
151
153 virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize = 0.0) const = 0;
154
156 void setTransformation(QwtTransform*);
158 QwtTransform* transformation() const;
159
160protected:
162 bool contains(const QwtInterval&, double value) const;
164 QList< double > strip(const QList< double >&, const QwtInterval&) const;
165
167 double divideInterval(double intervalSize, int numSteps) const;
168
170 QwtInterval buildInterval(double value) const;
171
172private:
173 Q_DISABLE_COPY(QwtScaleEngine)
174
175 class PrivateData;
176 PrivateData* m_data;
177};
178
190class QWT_EXPORT QwtLinearScaleEngine : public QwtScaleEngine
191{
192public:
193 explicit QwtLinearScaleEngine(uint base = 10);
194 virtual ~QwtLinearScaleEngine();
195
196 virtual void autoScale(int maxNumSteps, double& x1, double& x2, double& stepSize) const override;
197
198 virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize = 0.0) const override;
199
200protected:
201 QwtInterval align(const QwtInterval&, double stepSize) const;
202
203 void buildTicks(const QwtInterval&, double stepSize, int maxMinorSteps, QList< double > ticks[ QwtScaleDiv::NTickTypes ]) const;
204
205 QList< double > buildMajorTicks(const QwtInterval& interval, double stepSize) const;
206
207 void buildMinorTicks(const QList< double >& majorTicks, int maxMinorSteps, double stepSize, QList< double >& minorTicks, QList< double >& mediumTicks) const;
208};
209
228class QWT_EXPORT QwtLogScaleEngine : public QwtScaleEngine
229{
230public:
231 explicit QwtLogScaleEngine(uint base = 10);
232 virtual ~QwtLogScaleEngine();
233
234 virtual void autoScale(int maxNumSteps, double& x1, double& x2, double& stepSize) const override;
235
236 virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize = 0.0) const override;
237
238protected:
239 QwtInterval align(const QwtInterval&, double stepSize) const;
240
241 void buildTicks(const QwtInterval&, double stepSize, int maxMinorSteps, QList< double > ticks[ QwtScaleDiv::NTickTypes ]) const;
242
243 QList< double > buildMajorTicks(const QwtInterval& interval, double stepSize) const;
244
245 void buildMinorTicks(const QList< double >& majorTicks, int maxMinorSteps, double stepSize, QList< double >& minorTicks, QList< double >& mediumTicks) const;
246};
247
248Q_DECLARE_OPERATORS_FOR_FLAGS(QwtScaleEngine::Attributes)
249
250#endif
表示区间的类
Definition qwt_interval.h:45
线性刻度引擎
Definition qwt_scale_engine.h:191
对数刻度引擎
Definition qwt_scale_engine.h:229
包含公差的算术运算
Definition qwt_scale_engine.h:45
A class representing a scale division/表示刻度划分的类
Definition qwt_scale_div.h:53
@ NTickTypes
Number of valid tick types
Definition qwt_scale_div.h:71
刻度引擎的基类
Definition qwt_scale_engine.h:76
Attribute
布局属性
Definition qwt_scale_engine.h:89
virtual void autoScale(int maxNumSteps, double &x1, double &x2, double &stepSize) const =0
Align and divide an interval
virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize=0.0) const =0
Calculate a scale division
坐标系之间的变换
Definition qwt_transform.h:61