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++

1 month ago
#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)//<2F>մ򿪾<D5B4><F2BFAABE>ļ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ѿ<EFBFBD><D1BE>ƶ<EFBFBD><C6B6><EFBFBD>ͼ<EFBFBD>м<EFBFBD>
{
pWellView->InitWellPosition(lrEdge);
}
// <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ص<EFBFBD><D8B5>ĺ<EFBFBD><C4BA><EFBFBD>
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) //Ŀǰֻ<C7B0><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷʱʹ<CAB1><CAB9>
{
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;
}