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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
};