logplus/logPlus/formdraw.h

301 lines
12 KiB
C
Raw Normal View History

2025-10-29 17:23:30 +08:00
#ifndef FORMDRAW_H
#define FORMDRAW_H
#include <QWidget>
#include <QPainter>
#include <QPaintEvent>
#include "qmycustomplot.h"
#include "formtitle.h"
#include "formtrack.h"
#include "LogIO.h"
#include "MemRdWt.h"
#include "FormLine.h"
#include "FormBase.h"
2025-10-29 17:23:30 +08:00
#pragma execution_character_set("utf-8")
2026-01-04 16:54:55 +08:00
//const int iFracType=15;
2025-10-29 17:23:30 +08:00
namespace Ui {
class FormDraw;
}
class FormDraw : public FormBase
2025-10-29 17:23:30 +08:00
{
Q_OBJECT
public:
explicit FormDraw(QWidget *parent, QString strSlfName, QString m_strWellName="", QString strTrackName="");
2025-10-29 17:23:30 +08:00
~FormDraw();
void setDrawData(QStringList slist, QJsonObject objInfo);
void setDrawPropert(QJsonObject obj);
//展示所有曲线
void DisplayLines(QJsonArray linesArray);
//曲线
void DisplayLine_One(QJsonObject lineObjInfo);
//波列
void DisplayType_One(QJsonObject objInfo);
2026-04-08 16:28:14 +08:00
2026-03-27 18:06:40 +08:00
// 岩心分析
void displayCorePhysics(QJsonObject lineObjInfo);
// 岩心照片
void displayImageData(QJsonObject lineObjInfo);
//表格:固井结论等
void DisplayTable_One(QJsonObject lineObjInfo);
//蝌蚪图
void DisplayKedou_One(QJsonObject lineObjInfo);
//气测/FMT/射孔/文本
void DisplayJiegutext_One(QJsonObject lineObjInfo);
2026-03-08 23:22:36 +08:00
//沉积相
void DisplayFac_One(QJsonObject lineObjInfo);
//套管組件
void DisplayTubing_One(QJsonObject lineObjInfo);
//斜井三图一表
void DisplayTvd_One(QJsonObject lineObjInfo);
//获取斜井三图一表属性
void GetTvdProperty(CDrawTvd *drawTvd, QJsonObject lineObjInfo);
2026-03-08 23:22:36 +08:00
// 跨道设置
2026-04-18 13:59:53 +08:00
void crossTrackSetting(bool bcross = false);
// 添加绘图
void addCusPlot(QMyCustomPlot* plot);
// 绘图是否有显示横线格子;
bool isHvRowGridLine();
// 根据曲线名字获取曲线
QMyCustomPlot* getCurve(QString strCurveName);
void setGridProperty(int ncuGrid, // 粗网格间隔
QPen cuPen,
int nzhongGrid, // 中网格间隔
QPen zhongPen,
int nxiGrid, // 细网格间隔
QPen xiPen);
// 更新绘图区域网格线
void changeGridProperty(QString strGroup, int nInv,
int nWidth, QColor clor, int nType);
2025-10-29 17:23:30 +08:00
private:
Ui::FormDraw *ui;
2025-10-29 17:23:30 +08:00
protected:
QMyCustomPlot* addTableLine(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QStringList listOtherProperty={});
QMyCustomPlot* addKedou(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QJsonObject listOtherProperty={});
2025-10-29 17:23:30 +08:00
public slots:
void dragEnterEvent(QDragEnterEvent* event);
void dragMoveEvent(QDragMoveEvent* event);
void dropEvent(QDropEvent* event);
//
void s_mouseWheel(QWheelEvent *event);
2025-10-29 17:23:30 +08:00
void setRowHeight(double dHight, QProgressBar *progressBar, int iSplit);
void setColWidth(float fNewWidth);
2025-10-29 17:23:30 +08:00
public:
QString m_strTrackName;
double m_nTrackW = 0;
2025-10-29 17:23:30 +08:00
2026-01-23 18:20:18 +08:00
int m_iScale=200;
double m_iY1=0;
double m_iY2=0;
int m_nxiGrid = 1; // 细网格间隔
QPen m_xiPen;
int m_nzhongGrid = 2; // 中网格间隔
QPen m_zhongPen;
int m_ncuGrid = 10; // 粗网格间隔
QPen m_cuPen;
2026-04-18 13:59:53 +08:00
int m_nLeftDao = 0; // 左边跨道个数
2026-01-23 18:20:18 +08:00
2026-03-08 23:22:36 +08:00
QMyCustomPlot *m_curv = NULL;
// 曲线列表
QVector<QMyCustomPlot*> m_vecCurv;
FormTrack *m_formTrack = NULL;
2025-10-29 17:23:30 +08:00
QStringList m_listLineName;
BorderFlags m_BorderFlags;
2025-10-29 17:23:30 +08:00
//X坐标
float m_vmax;
float m_vmin;
public:
2025-10-30 11:55:37 +08:00
void initForm(QMyCustomPlot *widget, QString strSlfName, QString strLineName,
double newLeftScale=-9999, double newRightScale=-9999, QString strScaleType="线性", QColor lineColor=QColor(0,0,0), double width=1, Qt::PenStyle lineStyle=Qt::SolidLine, QStringList listOtherProperty={});
void addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName, QString strAliasName, QString strUnit,
double newLeftScale=-9999, double newRightScale=-9999, QString strScaleType="线性", QColor lineColor=QColor(0,0,0), double width=1, Qt::PenStyle lineStyle=Qt::SolidLine, QStringList listOtherProperty={});
2025-10-29 17:23:30 +08:00
void setupLineStyleDemo(QMyCustomPlot *customPlot);
void setupSelectionDemo(QMyCustomPlot *customPlot);
//波列
2025-12-30 17:38:11 +08:00
void initWave_3D(QMyCustomPlot *widget, QString strSlfName, QString strWaveName, int &_nSamples);
//图像-3d成图
int getColorConfig(QVector <QString> &qFiles);
2025-12-30 17:38:11 +08:00
void DrawImageNew_NoFilter(QMyCustomPlot *widget, QString strSlfName, QString &strWaveName, int &_nSamples);
//表格曲线
void initKedou(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "蝌蚪图", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={});
void ReadFracDef();
void ReadData(QString strSlfName, QString strLineName);//表格
void ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve);//曲线
2025-12-25 15:10:14 +08:00
void DrawStck(QMyCustomPlot *widget);
2025-11-26 11:24:46 +08:00
void CalcDipWidth(int nColumn,float *flWidth,float factor,int x1,int x2,float flHoriRatio);
void Refurbish();
void DrawJykt(QMyCustomPlot *widget, QString strSlfName);
void DrawDenv(QMyCustomPlot *widget, QString strSlfName);
int m_PointNum;
//
int FracNum;
float *m_pflTab_Frac;
bool m_bFracIsOK;
//
Slf_CURVE m_Curve,m_Curve2,m_Curve3;
char *m_Value = NULL,*m_Value2 = NULL,*m_Value3 = NULL;
float m_flGrad1,m_flGrad2; // 可信度
int m_bTableData = 0; //表格或曲线
float m_nRadius,m_nCircleWidth; // 半径,圆线宽度
float m_nTailWidth,m_nTailLen; // 尾宽度、尾长
float m_nSltk; // 杆状图长度
QColor m_crPointFill,m_crTail,m_crCircle;
QColor m_crGridSmall;
//TabDip
QString m_qsWellName,m_qsTable; //
QString m_qsDepth,m_qsDIP,m_qsDIR,m_qsID,m_qsProperty; // 控制曲线
QList<FRAC_DEF> m_FracDefList;
QList<FRAC_TABLE> m_FracTabList;
bool m_bTypeDraw[iFracType];
bool m_bDrawValue;
int m_iPrecision;//小数位数
float m_SDep,m_EDep,m_Rlev;
QString m_csCurveDDIR,m_csCurveDANG,m_csCurveGrad;
float m_LeftVal; //左刻度
float m_RightVal; //右刻度
//井眼垮塌矢量图
QString m_csCurveCAL;
float m_flStep;// 增加深度间隔
float m_nCircleLineWidth;//增加圆线宽
QColor m_crLine,m_crTailLine; // 圆线颜色,尾线颜色
float m_nOffset; // 角度偏移=0,主应力方向,=90长轴方向
//井斜方位图
QString m_csCurveAZIM, m_csCurveDEVI; // 方位/倾角/可信度 曲线名
QColor m_TailColor,m_crCirCleColor;// add m_crCirCleColor圆线颜色
QColor m_crPointFillDenv;
//文字结论
void initWords(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "文字结论", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});
//地质层位
void initLayer(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "地质分层", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});
//解释结论
void initResult(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
bool LoadFromSLF_Result(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
//录井剖面
void initGeoLith(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "录井剖面", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});
2025-12-22 18:22:45 +08:00
//井壁取心
void initSwallCore(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "井壁取心", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});
2025-12-22 18:22:45 +08:00
2025-12-23 17:15:39 +08:00
//固井结论
void initGujing(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "固井结论", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});
2025-12-23 17:15:39 +08:00
2026-03-25 10:43:36 +08:00
// 岩心分析
2026-03-27 18:06:40 +08:00
void initCorePhysics(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QStringList listOtherProperty={});
//岩心图片数据
2026-03-27 18:06:40 +08:00
void initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QStringList listOtherProperty={});
// bool LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
2026-03-27 18:06:40 +08:00
2026-04-10 09:15:08 +08:00
// 深度
void initDepth(QMyCustomPlot *widget);
//频率统计图
void initFgrq(QMyCustomPlot *widget);
//玫瑰图
void initRose(QMyCustomPlot *widget);
2026-04-08 16:28:14 +08:00
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
2026-01-17 22:35:34 +08:00
// DCA检测
void initDCA(QMyCustomPlot *widget);
float ComputeCurvePos(float flVal,float lsc,float rsc,float lps,float rps,int iType,float scale,float flMin=-99999,float flMax=99999);
TDTResultItem* LoadTDTResult_SLF(QString strSlfName);
void initTDT(QMyCustomPlot *widget);
2025-10-29 17:23:30 +08:00
signals:
//void sig_AddLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
public slots:
void s_addLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
void s_AddLine_Property(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
double newLeftScale, double newRightScale, QString strScaleType, QColor lineColor, double width, Qt::PenStyle lineStyle, QStringList listOtherProperty);//新建曲线,带属性
//改变曲线名
void s_changeLineName(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strNewLineName);
2025-10-30 11:55:37 +08:00
void s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep);
2025-10-29 17:23:30 +08:00
void s_handleRectRangeChange(QCPRange newRange);
void s_selectionRectAccepted(const QRect &rect, QMouseEvent *event);
2025-12-25 15:10:14 +08:00
void s_addGanZuangTu(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);//杆状图
//井眼垮塌矢量图
void s_addJykt(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//井斜方位图
void s_addDenv(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//图像 成像
void s_addDrawImage(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//斜井三图一表
FormLine* s_addSantuyibiao(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//裂缝
2026-01-04 16:54:55 +08:00
void s_addCrack(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//气测/FMT/射孔/文本
void s_addJiegutext(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW, QStringList listOtherProperty);
2026-01-06 16:03:55 +08:00
//沉积相
void s_addLogface(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW, QStringList listOtherProperty);
2026-01-06 16:03:55 +08:00
//多臂井径
void s_addMCals(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//套管组件
void s_addTubingstring(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW, QStringList listOtherProperty);
//TDT
// void s_addTDT(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//
void s_addWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
//
void s_addTableLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);
void s_delTableLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
//改变固井曲线名
void s_changeGujingLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strNewLineName);
//改变曲线名 //气测/FMT/射孔/文本
void s_changeJiegutextLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strNewLineName);
2025-10-29 17:23:30 +08:00
};
#endif // FORMDRAW_H