You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/iBase/iUtils/ZxScaleHelper.h

56 lines
1.5 KiB
C

#pragma once
#include "Defines.h"
#include "LlUtils_global.h"
/// @brief 坐标轴刻度的计算
class I_UTILS_EXPORT ZxScaleHelper
{
public:
ZxScaleHelper();
~ZxScaleHelper();
/// @brief 求取坐标轴的刻度显示
/// @param dMin 左值,通常为最小值
/// @param dMax 右值,通常为最大值
/// @param bAxisX 是否X轴
/// @param bLinear 是否线性
/// @param bExpand 是否流量自动扩展一个tick
/// @param pVecScales结果存储位置
/// @note 1通常 dMin < dMax; 对于dMin > dMax 的情况也做了相应处理(返回结果也是倒着)
bool calAxisScales(double& dMin, double& dMax, \
bool bAxisX, \
bool bLinear = true, \
bool bExpand = false, \
QVector<double>* pVecScales = nullptr);
private:
// 内部接口(目前刻度计算函数,还有待较大完善空间)
bool checkReverse();
void normalizeRange();
bool checkSameValue();
bool checkLogicalZero();
void adjustIncrease(double& d, double& dMin);
bool calScaleByLinear();
bool calScaleByLogical();
void finalAdjustP();
private:
// 计算过程中涉及到的一些中间变量
double m_dMax;
double m_dMin;
double m_dMinRaw;
double m_dMaxRaw;
bool m_bAxisX;
bool m_bLinear;
bool m_bNeedTurn;
bool m_bExpand;
double m_dTickIncrease;
QVector<double>* m_pVecTicks;
};