logplus/logPlus/DrawTvd.h
2026-01-16 09:04:49 +08:00

218 lines
6.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DrawTvd_H
#define DrawTvd_H
#include <QObject>
#include <QPainter>
#include <QGraphicsWidget>
//#include "QtNodeBuilder.h"
//#include "QtWellTrackNode.h"
//#include "QtWellSceneManager.h"
//#include "ObjWelllog.h"
//#include "WellSectionConst.h"
//#include "WellSheetItem.h"
//#include "ObjWellLogWavefile.h"
#include "ViewInfo.h"
//#include "Graphics2D/palettecolor/PaiColorTableData.h"
#include "DrawBase.h"
//BEGIN_OSGGRAPHICS_NAMESPACE;
#pragma execution_character_set("utf-8")
//#define GetClassID_ObjDrawTvd() "{98EB165F-1371-4D9F-9476-E4F5C19869B7}"
typedef struct BxPointMessage
{
int Style;
int Size;
QColor Color;
char MiaoShu[16];
};
struct LSCX_DATA
{
int NO;// 序号 NONE INT 4
float DEPTH;// 深度 m FLOAT 4
float TVD ;// 垂直深度 m FLOAT 4
float DEVI ;// 井斜角 G FLOAT 4
float AZIM ;// 井斜方位 G FLOAT 4
float AZZ ;// 真方位 G FLOAT 4
float XE ;// 东西位移 m FLOAT 4
float YN ;// 南北位移 m FLOAT 4
float HOFS ;// 水平位移 m FLOAT 4
float HOAZ ;// 闭合方位 G FLOAT 4
float GLD ;// 狗腿度 NONE FLOAT 4
};
struct TVD_BXPAR
{
int NO;;//靶心号
float BxDep;//设计垂深
float BxFw;//设计方位
float BxWy;//设计位移
float BxBj;//靶心半径
float BBG;//靶半高
float BBK;//靶半宽
char BNAME[16];
float BxScTDep;//实测垂深
float BxXDep;//对应斜深
float BxScFw;//实测方位
float BxScWy;//实测位移
float BxJ;//靶心距
float BxCzJ;//靶垂直距离
};
struct TVD_BXINF
{
int BxNum;
TVD_BXPAR Tvd_BxPar[10];
};
struct TABLE_ZD_INF
{
char name[16];
char aliasname[32];//字段别名
char unit[16];//单位
int w;//打印宽度(字符数)
int num;//数据位数
int dnum;//小数位数
int mode;//对齐方式
};
struct TABLE_PAR
{
float Head_Height;
float Rec_Height;
int ZdNum;//字段个数
TABLE_ZD_INF Zd_Inf[12];
};
struct FST_PAR
{
float MinXes;
float MaxXes;
float MinYns;
float MaxYns;
float MinXe;
float MaxXe;
float MinYn;
float MaxYn;
};
struct CST_PAR
{
float MaxWys;
float MaxTVD;
float MinTVD;
float MaxWy;
float MinWy;
float DepSpace;
float CsAngle;
};
struct LTGJT_PAR
{
float MaxWys;
float MaxWy;
float DepSpace;
float PrintDepSpace;
float CsAngle;
};
//class CObjDrawTvd :public CObjWellLog
//{
//public:
// CObjDrawTvd(){};
// virtual ~CObjDrawTvd(){};
// virtual QUuid GetTypeID()const{return GetClassID_ObjDrawTvd();};
//};
class CDrawTvd:public CDrawBase
{
public:
CDrawTvd(void);
virtual ~CDrawTvd(void);
virtual void ReadData();
//virtual void SaveData();
virtual void Refurbish();
virtual void InitProperty();
virtual void GetProperty();
//virtual void _Update( eUpdateEvent e,CObjectEventParam *pEventParam );
int m_PointNum;
CViewInfo* objViewInfo;
CViewInfo* m_pViewInfo;
// 以下变量需保存在模板里
//Tvd
QString m_TableName;
QString m_AliasName;
QString m_AliasWellName;//显示井名
bool m_IsDrawBxcs;
bool m_IsDrawTable;
bool m_IsDrawFst;
bool m_IsDrawCst;
bool m_IsDrawCst1;
bool m_IsDrawCst2;
bool m_IsDrawCst3;
bool m_IsDrawLtgjt;
LSCX_DATA *m_Lscx;
int DrawTable(int y_Start, QPainter* pDC,QRectF mrt);
int DrawFst(int y_Start, QPainter* pDC,QRectF mrt);
int DrawCst(int y_Start, QPainter* pDC,QRectF mrt,CST_PAR CPar,int no=3);
int DrawLtgjt(int y_Start, QPainter* pDC,QRectF mrt);
int DrawBxcs(int y_Start, QPainter* pDC,QRectF mrt);
// 4-边框,格线,轨迹线,靶心半径,靶心连线的宽度、类型和颜色
int m_FrameWidth,m_GridWidth,m_GuijiWidth,m_BxbjWidth,m_BxlxWidth;
QColor m_FrameColor,m_GridColor,m_GuijiColor,m_BxbjColor,m_BxlxColor;
//道头(井眼轨迹)、标题(三图一表的标题)、数据表、刻度、注释的字体属性
QFont m_HeadFont,m_TitleFont,m_TableFont,m_ScaleFont,m_NoteFont;
QColor m_HeadColor,m_TitleColor,m_TableColor,m_ScaleColor,m_NoteColor;
int m_FontAngle[5];
BOOL IsVert[5];//字符串方向是否垂直1
int hFormat[5],vFormat[5];//水平、垂直对齐方式
BOOL ShowHComb,ShowVComb,ShowVertCheck;//水平、垂直对齐方式设置组件、字符串方向(垂直)设置
QFont *Font1,*Font2,*FontTable;
QPen m_GuiJiPen,m_FramePen,m_GridPen,m_BxbjPen,m_BxlxPen;
QString m_Title_table,m_Title_cst,m_Title_fst,m_Title_ltgj;
float Xmax,Xmin,Ymax,Ymin,delt;//刻度最大最小值
float Xmaxs,Xmins,Ymaxs,Ymins;//实际最大最小值
float BxDep,BxDep2,BxBj,BxBj2,BxFw,BxFw2,BxWy,BxWy2;
float xfactor,yfactor,xscale,yscale;
int TableFontWidth,ScaleFontWidth,ScaleFontHeight,NoteFontWidth,NoteFontHeight;
int TitleFontWidth,TitleFontHeight;
float m_Width;
float m_Height;
float m_Bottom;
float m_Left;
float m_Right;
float m_Top;
int XCenter;
int flag;
TVD_BXINF Tvd_BxInf,Tvd_BxInf_Int;
FST_PAR FPar;
TABLE_PAR TPar;
CST_PAR CPar;
CST_PAR CPar_HOFF;
CST_PAR CPar_XE;
CST_PAR CPar_YN;
LTGJT_PAR LPar;
// 2013.6.8 add for 绘制靶心
BxPointMessage m_SjBxPointMessage,m_ScBxPointMessage;//设计靶心点信息,实测靶心点信息
BOOL m_FstPlotBx;
BOOL m_CstPlotBx;
BOOL m_LtgjtPlotBx;
BOOL m_PlotBxlx;
BOOL m_bPlotBhx; //绘制闭合线
//Tvd
void DrawTvd(QPainter* pdc,QRectF mrt);
/**
* @brief 绘制曲线道头
*/
virtual void DrawHead(QPainter *pPainter,QRectF rect,QRectF trect=QRectF());
/**
* @brief 绘制曲线体
*/
virtual void DrawClient(QPainter *pPainter,QRectF rt);
virtual void DrawSidelines(QPainter *pPainter,QRectF rt);
QPoint ComputeXY(float val_x,float val_y,float val_z,float angle_x,float angle_y,float angle_z,float x0,float y0,float xfac,float yfac);
QFont TableFont;
QFont ScaleFont;
QFont NoteFont;
QFont TitleFont;
QList<QRgb> rgbList;
};
//END_OSGGRAPHICS_NAMESPACE
#endif // DrawTvd_H