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.
282 lines
6.8 KiB
C++
282 lines
6.8 KiB
C++
#include "stdafx.h"
|
|
#include <cctype>
|
|
|
|
#include "WellPoleDoc.h"
|
|
#include "WellPoleView.h"
|
|
|
|
#include "WellPoleLib/WellBaseObj.h"
|
|
#include "WellPoleLib/InTrackDepthSegment.h"
|
|
#include "WellPoleLib/TrackObj.h"
|
|
|
|
#include "WellPoleLib/InclinedTrack.h"
|
|
#include "WellPoleLib/InTrackLith.h"
|
|
#include "WellPoleLib/InTrackSymbol.h"
|
|
#include "WellPoleLib/InTrackResult.h"
|
|
#include "WellPoleLib/InTrackTextRange.h"
|
|
|
|
#include "WellPoleLib/TrackGroup.h"
|
|
#include "WellPoleLib/WellPole.h"
|
|
|
|
#include "WellPoleLib/TrackDepth.h"
|
|
#include "WellPoleLib/TrackCurve.h"
|
|
#include "WellPoleLib/TrackSymbol.h"
|
|
#include "WellPoleLib/TrackResult.h"
|
|
#include "WellPoleLib/TrackLith.h"
|
|
#include "WellPoleLib/TrackText.h"
|
|
#include "WellPoleLib/WellObjExtendInfo.h"
|
|
#include "ItemSingleWell.h"
|
|
|
|
#include "CPlusCallBack.h"
|
|
|
|
extern "C" __declspec(dllexport)
|
|
CWellPoleView* CreateWellPoleView()
|
|
{
|
|
CWellPoleView* pWellView = new CWellPoleView();
|
|
return pWellView;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
CWellPole* CreateNewWell(CWellPoleView* pWellView, LPCTSTR wellName,double top,double bottom,double ratio,LPCTSTR wellTemplateFile)
|
|
{
|
|
CWellPole* pWell = NULL;
|
|
|
|
pWell = pWellView->GetDocument()->CreateNewWell(wellName, top, bottom, ratio, wellTemplateFile);
|
|
return pWell;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void ViewExtendCenter(CWellPoleView* pWellView)
|
|
{
|
|
pWellView->ViewExtendCenter();
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void ViewExtendWidth(CWellPoleView* pWellView)
|
|
{
|
|
pWellView->ViewExtendWidth();
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void InitWellPosition(CWellPoleView* pWellView,int lrEdge)//刚打开井文件时,把井移动道图中间
|
|
{
|
|
pWellView->InitWellPosition(lrEdge);
|
|
}
|
|
|
|
// 导出注册回调的函数
|
|
extern "C"
|
|
NATIVEDLL_API void RegisterCallback(CWellPoleView* pWellView,InvalidateWndCallback callback)
|
|
{
|
|
pWellView->m_pWndCallBack = callback;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
int ViewSetItemForSelectedElement(CWellPoleView* pWellView, int x, int y)
|
|
{
|
|
return pWellView->ViewSetItemForSelectedElement(x,y);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL SelectWellPoleSetCursor(CWellPoleView * pView, int ptX, int ptY, int& handle)
|
|
{
|
|
handle = -1;
|
|
if (pView == NULL)
|
|
return FALSE;
|
|
|
|
CItem * pItem = pView->GetItem();
|
|
if (pItem == NULL)
|
|
return FALSE;
|
|
|
|
if (pItem->GetType() != ITEM_WELLPOLE)
|
|
return FALSE;
|
|
|
|
CItemSingleWell * pItemSingleWell = (CItemSingleWell *)pItem;
|
|
|
|
BOOL bSuccess = pItemSingleWell->OnSetCursor(CPoint(ptX, ptY), handle);
|
|
return bSuccess;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void SetWellPoleViewOperationKind(CWellPoleView* pWellView, int kind)
|
|
{
|
|
if (kind == 1)
|
|
{
|
|
pWellView->SetViewPan();
|
|
}
|
|
else if (kind == 2) {
|
|
pWellView->SetViewWindow();
|
|
}
|
|
else if (kind == 3)
|
|
{
|
|
pWellView->SetWellPoleViewPan();
|
|
}
|
|
else if (kind == 0)
|
|
{
|
|
pWellView->SetViewPanInvalidate();
|
|
}
|
|
}
|
|
extern "C" __declspec(dllexport)
|
|
BOOL IsLockWellHead(CWellPoleView* pWellView)
|
|
{
|
|
return pWellView->m_bLockWellHead;
|
|
}
|
|
extern "C" __declspec(dllexport)
|
|
void SetLockWellHead(CWellPoleView* pWellView,bool block)
|
|
{
|
|
pWellView->SetLockWellHead(block);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void MouseWheelForLockWellHead(CWellPoleView* pWellView,UINT nFlags, int zDelta, int x, int y)
|
|
{
|
|
CPoint pt;
|
|
pt.x = x; pt.y = y;
|
|
if (nFlags == 0)
|
|
{
|
|
if (pWellView->m_bLockWellHead) //目前只用来在锁定井头时使用
|
|
{
|
|
pWellView->MouseWheelVLockHead(nFlags, zDelta, pt);
|
|
}
|
|
}
|
|
//else
|
|
// pWellView->MouseWheelH(nFlags, zDelta, pt);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void ScrollVForLockWellHead(CWellPoleView* pWellView, int nFlags, int scrollValue, int pageSize, int lineSize, int scrollMin,int scrollMax)
|
|
{
|
|
pWellView->ScrollVForLockWellHead(nFlags, scrollValue, pageSize, lineSize, scrollMin, scrollMax);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void SetScrollBarVRangeForLockWellHead(CWellPoleView* pWellView, int& vrange, int & page, int &value)
|
|
{
|
|
pWellView->SetScrollBarVRangeForLockWellHead(vrange, page, value);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL GetSelectWellObject(CWellPoleView* pWellView, int& type,int& ttype, ULONGLONG& objHandle)
|
|
{
|
|
BOOL b = false;
|
|
type = -1;
|
|
ttype = -1;
|
|
objHandle = 0;
|
|
|
|
b = pWellView->GetSelectWellObject(type, ttype, objHandle);
|
|
|
|
return b;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
void FreeByteArray(BYTE* pBuff)
|
|
{
|
|
delete []pBuff;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
int GetWellTrackTypeInfo(BYTE*& typeBuff, int& typeBuffLen, BYTE*& typeStrBuf, int& typeStrLen)
|
|
{
|
|
int typeNum = 0;
|
|
typeBuff = NULL;
|
|
typeBuffLen = 0;
|
|
typeStrBuf = NULL;
|
|
typeStrLen = 0;
|
|
std::vector<CWellObjExtendInfo*> trackInfos = CWellObjExtendInfoMgr::GetInstance()->GetWellTrackInfos();
|
|
if (trackInfos.size() == 0)
|
|
return typeNum;
|
|
|
|
typeNum = int(trackInfos.size());
|
|
int* typeArr = (int*)(new BYTE[typeNum*sizeof(int)]);
|
|
CString strTypeStr;
|
|
|
|
for (int ii = 0; ii < int(trackInfos.size()); ii++)
|
|
{
|
|
typeArr[ii] = trackInfos[ii]->m_type;
|
|
strTypeStr = strTypeStr + "|" + trackInfos[ii]->m_cTypeStr;
|
|
}
|
|
|
|
typeBuff = (BYTE*)typeArr;
|
|
typeBuffLen = sizeof(int)* int(trackInfos.size());
|
|
|
|
strTypeStr.TrimLeft("|");
|
|
typeStrBuf = (new BYTE[strTypeStr.GetLength()]);
|
|
memcpy((char*)typeStrBuf, strTypeStr.GetBuffer(),strTypeStr.GetLength());
|
|
typeStrLen = strTypeStr.GetLength();
|
|
|
|
return typeNum;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL AddTrackAfterSelectedWellObject(CWellPoleView* pWellView, int trackType[],int trackNum)
|
|
{
|
|
return pWellView->AddTrackAfterSelectedWellObject(trackType,trackNum);
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL DeleteSelectedWellObject(CWellPoleView* pWellView)
|
|
{
|
|
return pWellView->DeleteSelectedWellObject();
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL SelectedTrackCombineLeftTrack(CWellPoleView* pWellView)
|
|
{
|
|
return pWellView->CombineLeftTrack();
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL SelectedTrackCombineRightTrack(CWellPoleView* pWellView)
|
|
{
|
|
return pWellView->CombineRightTrack();
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL GetSelectedWell(CWellPoleView* pWellView, ULONGLONG& objHandle)
|
|
{
|
|
BOOL b = FALSE;
|
|
objHandle = 0;
|
|
|
|
b = pWellView->GetSelectedWell(objHandle);
|
|
|
|
return b;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL GetWellTrackDataJson(CWellPoleView* pWellView, ULONGLONG trackHandle, BYTE*& jsonBuf, int& dataLen)
|
|
{
|
|
BOOL b = FALSE;
|
|
jsonBuf = NULL;
|
|
dataLen = 0;
|
|
|
|
CString strJson;
|
|
|
|
if (pWellView->GetWellTrackDataJson(trackHandle,strJson) == FALSE)
|
|
return b;
|
|
|
|
jsonBuf = (new BYTE[strJson.GetLength()]);
|
|
memcpy((char*)jsonBuf, strJson.GetBuffer(), strJson.GetLength());
|
|
dataLen = strJson.GetLength();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL SetWellTrackDataJson(CWellPoleView* pWellView, ULONGLONG trackHandle, BYTE* jsonBuf, int dataLen)
|
|
{
|
|
|
|
char* pBuf = new char[dataLen + 1];
|
|
pBuf[dataLen] = 0;
|
|
memcpy(pBuf, jsonBuf, dataLen);
|
|
BOOL b = pWellView->SetWellTrackDataJson(trackHandle, pBuf);
|
|
return b;
|
|
}
|
|
|
|
extern "C" __declspec(dllexport)
|
|
BOOL SetPictureInWellTrack(CWellPoleView* pWellView, ULONGLONG pictureObjHandle, LPCSTR filePath)
|
|
{
|
|
BOOL b = FALSE;
|
|
|
|
b = pWellView->SetPictureInWellTrack(pictureObjHandle, filePath);
|
|
|
|
return b;
|
|
}
|