201 lines
6.9 KiB
C
201 lines
6.9 KiB
C
|
|
#ifndef DrawBase_H
|
|||
|
|
#define DrawBase_H
|
|||
|
|
//格线类型
|
|||
|
|
|
|||
|
|
//字体对齐方式
|
|||
|
|
#define LEFT Qt::AlignLeft
|
|||
|
|
#define RIGHT Qt::AlignRight// 1
|
|||
|
|
#define CENTER Qt::AlignCenter// 2
|
|||
|
|
#define VCENTER Qt::AlignVCenter//3
|
|||
|
|
|
|||
|
|
#pragma warning( push ,0)
|
|||
|
|
#include "OSGFramework.h"
|
|||
|
|
// #include "QtWellTrackNode.h"
|
|||
|
|
// #include "QtWellSceneManager.h"
|
|||
|
|
#include "ObjWelllog.h"
|
|||
|
|
// #include "HeadObj.h"
|
|||
|
|
// #include "QtWellLogTrackNode.h"
|
|||
|
|
#include "drawbase_global.h"
|
|||
|
|
#include "VecCoordinate.h"
|
|||
|
|
#include <QImage>
|
|||
|
|
#pragma warning( pop )
|
|||
|
|
//#ifdef _WINDOWS
|
|||
|
|
//#ifdef DRAWBASE_LIB
|
|||
|
|
//#define DRAWBASE_EXPORT __declspec(dllexport)
|
|||
|
|
//#else
|
|||
|
|
//#define DRAWBASE_EXPORT __declspec(dllimport)
|
|||
|
|
//#endif
|
|||
|
|
//#else
|
|||
|
|
//#define DRAWBASE_EXPORT
|
|||
|
|
//#endif
|
|||
|
|
BEGIN_OSGGRAPHICS_NAMESPACE;
|
|||
|
|
|
|||
|
|
struct DRAWBASE_EXPORT ColorMessage
|
|||
|
|
{
|
|||
|
|
int ColorNum; //颜色级数
|
|||
|
|
int Mode; //调色方式
|
|||
|
|
QColor Color[256]; //定义颜色数组
|
|||
|
|
};
|
|||
|
|
// 边结构数据类型
|
|||
|
|
typedef struct Edge{
|
|||
|
|
int ymax; // 边的最大y坐标
|
|||
|
|
float x; // 与当前扫描线的交点x坐标
|
|||
|
|
float dx; // 边所在直线斜率的倒数
|
|||
|
|
struct Edge * pNext; // 指向下一条边
|
|||
|
|
} Edge, * LPEdge;
|
|||
|
|
|
|||
|
|
struct DRAWBASE_EXPORT WaveMessage
|
|||
|
|
{
|
|||
|
|
int WaveType; // 绘图类型0-波形,1-填充,2-变密度
|
|||
|
|
int Mode; //绘填充或变密度图形时的填充方式,1-正半周,-1--负半周,0-全周
|
|||
|
|
float m_Left; //波列左刻度时间
|
|||
|
|
float m_Right; //波列右刻度时间
|
|||
|
|
float m_MaxRange; //波列最大幅度
|
|||
|
|
float m_Base; //波列基值
|
|||
|
|
int m_WaveSpace; //绘制波列间隔数,即每隔m_WaveSpace个点画一个波列
|
|||
|
|
float m_WaveHight; //波列高度
|
|||
|
|
QColor WaveColor; //波列曲线的颜色
|
|||
|
|
QColor FillColor; //填充的颜色
|
|||
|
|
ColorMessage m_ColorMessage;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class DRAWBASE_EXPORT CDrawBase/*:public CQtWellLogTrackNode*/
|
|||
|
|
{
|
|||
|
|
// Q_OBJECT
|
|||
|
|
public:
|
|||
|
|
CDrawBase();
|
|||
|
|
virtual ~CDrawBase();
|
|||
|
|
virtual void Destory();
|
|||
|
|
public:
|
|||
|
|
virtual float ConvertY(eCoordType eInCoordType, double flDep,
|
|||
|
|
eCoordType eOutCoordType );
|
|||
|
|
float ConvertY(float fDep);
|
|||
|
|
virtual void _Build();
|
|||
|
|
virtual void DrawCurve(QPainter* pdc,QRectF mrt);
|
|||
|
|
virtual void _UpdateHUD();
|
|||
|
|
double getYOSGGlobalFromPixel(double y);
|
|||
|
|
double getXOSGGlobalFromPixel(double x);
|
|||
|
|
double getYGeoNormalFromPixel(double y);
|
|||
|
|
double getYGeoFromOSGGlobal(double yOSGGlobal);
|
|||
|
|
double getXGeoFromOSGGlobal(double xOSGGlobal,bool IsWF=0);
|
|||
|
|
// osg::Vec3d OSGPixleToOSGLocal(osg::Vec3d vOSGPixel );
|
|||
|
|
double getYFromOSGPixel(double y);
|
|||
|
|
double getXFromOSGPixel(double x,bool IsWF=0,bool CalType=0);
|
|||
|
|
// float YConvertToGEO(float y);
|
|||
|
|
// float XConvertToGEO(float x);
|
|||
|
|
|
|||
|
|
// virtual void _Update( eUpdateEvent e,CObjectEventParam *pEventParam );
|
|||
|
|
virtual void Refurbish();
|
|||
|
|
virtual void ReadData();
|
|||
|
|
virtual void SaveData();
|
|||
|
|
virtual void InitProperty();
|
|||
|
|
virtual void GetProperty();
|
|||
|
|
void JudgePixel(QImage &pDC,QColor bc,unsigned char *strPixel);
|
|||
|
|
void JudgePixel(unsigned char *iptrn,unsigned char *strPixel);
|
|||
|
|
void FillLith(QPainter *pDC,QPointF *lpPoints,int nCount,QColor crFore,QColor crBack,QPointF *pixels,int *pointn,int nWidth,int nHeight);
|
|||
|
|
void LineFillLith(QPainter *hdc,int x1,int x2,int y,int penw,QColor crFore,QColor crBack,QPointF *pixels,int *pointn,int nWidth,int nHeight);
|
|||
|
|
void LineFillLith(QPainter *hdc,int x1,int x2,int y,int ipen,QColor crFore,QColor crBack,QImage image,int x0,int y0);
|
|||
|
|
void FillLith(QPainter *pDC,QPointF *lpPoints,int nCount,QColor crFore,QColor crBack,QImage image,int x0,int y0);
|
|||
|
|
void DrawLith(QPainter *pDC,QPointF *pt,int nPoint,QBrush FhName,QColor pForeColor,QColor bkColor);
|
|||
|
|
int LITH_HEIGHT,LITH_WIDTH;
|
|||
|
|
int nHeight;
|
|||
|
|
int nWidth;
|
|||
|
|
/*Slf_WAVE WaveInfo;*/
|
|||
|
|
float m_nVertRatio,m_nHoriRatio,m_DepthScale,m_MMScale,m_HDepthScale;
|
|||
|
|
int m_Ishorizontal;
|
|||
|
|
bool m_IsPrint;
|
|||
|
|
int DrawDev;
|
|||
|
|
float m_PlotSdep,m_PlotEdep;//,m_MoveSdep,m_MoveEdep,m_MoveDep;
|
|||
|
|
MyDataTypeEnum v,vCurve;
|
|||
|
|
char* m_Value,*m_BackData;
|
|||
|
|
QBrush m_brush;
|
|||
|
|
float m_SDep,m_EDep,m_Rlev;
|
|||
|
|
bool mIsCut,m_bSecond; //第二比例
|
|||
|
|
float m_LeftVal; //左刻度
|
|||
|
|
float m_RightVal; //右刻度
|
|||
|
|
int m_nMaxAmp; //最大幅度
|
|||
|
|
int m_nWaveHeight; //波形幅度
|
|||
|
|
float m_flRlev2; //二维曲线采样间隔
|
|||
|
|
float m_flStart,m_flEnd; //二维曲线开始值、结束值
|
|||
|
|
int m_nSamples; //每深度间隔的数据点
|
|||
|
|
int m_PointNum;
|
|||
|
|
float *m_WaveValue; //波列数组
|
|||
|
|
short *m_ShortWaveValue; //波列数组
|
|||
|
|
Slf_WAVE WaveInfo; //波列基本信息
|
|||
|
|
// WaveMessage mWaveMes; //波列设置消息
|
|||
|
|
void GetDepth(QPainter *pDC,QRectF &mrt,QRectF &rt,
|
|||
|
|
float &sdep,//屏幕显示起始斜深
|
|||
|
|
float &edep,//屏幕显示终止斜深
|
|||
|
|
float &sdepc,//水平位移显示下,斜深对应的水平位移;垂深显示下,斜深对应的垂深;
|
|||
|
|
float &edepc);//水平位移显示下,斜深对应的水平位移;垂深显示下,斜深对应的垂深;
|
|||
|
|
|
|||
|
|
int iIndex;
|
|||
|
|
|
|||
|
|
QString sName;
|
|||
|
|
QString sUnit;
|
|||
|
|
QString sFilePath;
|
|||
|
|
|
|||
|
|
float ScreenWidth;
|
|||
|
|
float ScreenHeight;
|
|||
|
|
|
|||
|
|
float ComputeCurvePos(float flVal,float lsc,float rsc,float lps,float rps,int iType,float scale,float flMin=-99999,float flMax=99999);
|
|||
|
|
float ComputePosToCurveVal(float x,float lsc,float rsc,float lps,float rps,int iType,float scale,float flMin=-99999,float flMax=99999);
|
|||
|
|
|
|||
|
|
// void WriteStr(QPainter *pDC,QRectF rt1,CString cs,LOGFONT lf,
|
|||
|
|
// QColor crColor,int iAlign,
|
|||
|
|
// BOOL bVert,float flHoriRatio,int iBkMode,QColor crBack,UINT nFormat);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
/**
|
|||
|
|
* @brief 设置来自document的sheet句柄
|
|||
|
|
*/
|
|||
|
|
// void SetWellSheet(CSheet* wellSheet);
|
|||
|
|
/**
|
|||
|
|
* @brief 控制图头部分显示属性
|
|||
|
|
*/
|
|||
|
|
virtual void SettingHeaderElements();
|
|||
|
|
/**
|
|||
|
|
* @brief 绘制曲线道头
|
|||
|
|
*/
|
|||
|
|
virtual void DrawHead(QPainter *pPainter,QRectF rect,QRectF trect=QRectF());
|
|||
|
|
/**
|
|||
|
|
* @brief 绘制曲线体
|
|||
|
|
*/
|
|||
|
|
virtual void DrawClient(QPainter *pPainter,QRectF rt);
|
|||
|
|
virtual void GetClientItem(float sdep,float edep, QVector<QLine> &lines);
|
|||
|
|
virtual void DrawSidelines(QPainter *pPainter,QRectF rt);
|
|||
|
|
double GetDdep();
|
|||
|
|
public:
|
|||
|
|
double GetData(int RepCode,char *buffer);
|
|||
|
|
void SetData(int RepCode,char *buffer,float yy);
|
|||
|
|
// CItemText *m_pLeftText; //左刻度
|
|||
|
|
// CItemText *m_pRightText;//右刻度
|
|||
|
|
// CItemText *m_pUnitText; //单位
|
|||
|
|
// CItemText *m_pCurveNameText;//曲线名称
|
|||
|
|
// virtual CQtWellTrackNode * GetWellTrackNode(); //得到wellNode实例
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
CObjWellLog *m_pWellLog;
|
|||
|
|
// CSheet* m_pWellSheet;
|
|||
|
|
protected:
|
|||
|
|
private:
|
|||
|
|
//FontMessage *MyFontMes; //字体类型
|
|||
|
|
|
|||
|
|
// private:
|
|||
|
|
/**
|
|||
|
|
* @brief 初始化波列显示参数
|
|||
|
|
*/
|
|||
|
|
/**
|
|||
|
|
* @brief 初始化波列属性
|
|||
|
|
*/
|
|||
|
|
/**
|
|||
|
|
* @brief 更新色标颜色
|
|||
|
|
* @param colorMode:显示模式,0:灰度;1:渐变
|
|||
|
|
*/
|
|||
|
|
// HeadObj* hHeadObj;
|
|||
|
|
// ClientItem* m_pWave;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
END_OSGGRAPHICS_NAMESPACE
|
|||
|
|
#endif // DrawBase_H
|