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/mTool/mToolDiffusion/iWxDiffusionSubKK.h

164 lines
5.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 "iTagHelper.h"
#include "iWxDiffusionSub.h"
namespace Ui {
class iWxDiffusionSubKK;
}
// KK绘图相关的预定义
#define s_KK_Curve_L "CurveL"
#define s_KK_Curve_R "CurveR"
#define s_KK_Curve_S "CurveS"
#define s_KK_Curve_Raw_L "RawCurveL"
#define s_KK_Curve_Raw_R "RawCurveR"
#define s_KK_Point_L1 "PointL1"
#define s_KK_Point_L2 "PointL2"
#define s_KK_Point_R1 "PointR1"
#define s_KK_Point_R2 "PointR2"
class M_TOOL_DIFFUSION_EXPORT iWxDiffusionSubKK : public iWxDiffusionSub
{
Q_OBJECT
public:
explicit iWxDiffusionSubKK(QString sDiffusion, \
QWidget* parent = 0);
~iWxDiffusionSubKK();
// 初始化
virtual void initUI();
// 导出导入
virtual bool importOrExport(bool bImport);
// 当主窗体相态发生改变时的处理(主+次,其中次为组合,需要解析)
virtual void freshOnPhaseChanged(QMap<QString, QVariant>& map);
/// @brief 获取 Diffusion页面中某个参数的具体数值
/// @param sPara,参数,英文标识而且大小写敏感
/// @param d,返回的结果
/// @note 主要是左侧属性页上的各项的数据参照xml定义进行读取
virtual bool getDiffParaOf(QString sPara, double& d);
/// @brief 获取 Diffusion页面中计算结果基本上就是右侧对应表格的数据
/// @param vvec,返回数据,即计算结果,与右侧表格对应
virtual bool getDiffRstOf(VVecDouble& vvec);
protected:
// 标识
virtual void configLabels();
virtual void resetAllTags();
virtual void resetMembers();
virtual QStringList getTableTitles();
virtual void initUI_Chart();
// 默认值
virtual void initDefault();
// 返回数据
virtual bool getParaValue(QString sPara,
double &dValue,
QString sUnitDest = "");
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
protected:
// 算法相关
virtual bool makesureAlg();
virtual bool configAlg();
// 组织初始x数值
virtual VecDouble defaultInputs();
virtual double defaultScaleMax();
virtual double defaultScaleMin();
virtual int defaultInputCount();
// 数据刷新相关(表格+图形)
virtual void refreshRstCharts(VVecDouble& vvec);
virtual void _refreshRstCurves(iGuiPlot* pWxPlot, VVecDouble& vvec, bool bClearAll = true);
virtual void _refreshRstPoints(iGuiPlot* pWxPlot, VVecDouble& vvec);
virtual void _refreshRawCurves(iGuiPlot* pWxPlot);
virtual void _recalPtBounds(iGuiPlot* pWxPlot);
virtual void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true); //false时只清空曲线不清空点
// 返回指定的绘图对象体
virtual iGuiPlot* getWxPlotOf(int n = 0);
// 对于表格输入后的处理
virtual void refreshTableAbouts(VVecDouble& vvec);
virtual bool makesureTableInputs(VVecDouble& vvec);
bool parseFirstAndLast(VVecDouble& vvec, int& n1, int& n2);
bool organizePara2Map(VVecDouble& vvec, int& n1, int& n2, \
QMap<QString, double>& map);
bool appendDataWithUser(QMap<QString, double>& map);
void forceUpdateGridPty(QMap<QString, double>& map);
void forceUpdateTableData(VVecDouble& vvec, int& n1, int& n2, \
QMap<QString, double>& map);
// 重新计算兄弟节点位置
virtual void _refreshRstPointBrother(iGuiPlot* pWxPlot, \
VVecDouble& vvec, \
QStringList& listNames);
QPointF _getRstPointOf(iGuiPlot* pWxPlot, \
VVecDouble& vvec, QString sPointTag);
// 调用算法
virtual bool calRstByGridPty(VVecDouble& vvec);
/// @brief 根据dX/dY(左侧/右侧的第二个点),反算求解指数
/// @param dIndex求解的指数
/// @param dX,dY 点通常指的是鼠标移动后对应的数值点
/// @param bL(左侧还是右侧)
virtual bool inversCalIndexBy(double& dIndex, \
double dX, double dY, \
bool bL);
// 曲线基础操作
// 配置曲线
void configCurveDecs(iCurveDesc* pDesc, \
QString sName, QColor clr, \
VecDouble& x, VecDouble& y, \
bool bLineVisible = true, bool bPtVisible = false);
// 添加曲线
virtual bool addCurveBy(iGuiPlot* pWxPlot, VecPointF& vecFts, QString sName, \
bool bLineVisible = true, bool bPtVisible = false, \
QColor clr = QColor(), bool bUseY2 = false);
virtual bool addCurveBy(iGuiPlot* pWxPlot, VecDouble& x, VecDouble& y, QString sName, \
bool bLineVisible = true, bool bPtVisible = false, \
QColor clr = QColor(), bool bUseY2 = false);
// 移除指定曲线
virtual void removeCurveOf(iGuiPlot* pWxPlot, QString sName);
// 获取曲线名称
QString getCurveNameOf(iGuiPlot* pWxPlot, int nIndexName);
// 对图形进行最后调整
virtual void adjustPlots(iGuiPlot* pWxPlot, bool bForceLineVisible = false);
// 根据当前的Plot查看对应的Helper
iTagHelper* checkPlotHelper(iGuiPlot* pWxPlot);
private slots:
// 点移动
void slotObjPtsChanged();
private:
Ui::iWxDiffusionSubKK *ui;
protected:
iTagHelper m_oTag1;
iTagHelper m_oTag2;
};