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.

210 lines
7.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef _APP_FUNC_H
#define _APP_FUNC_H
#include <vector>
#include "ColorItem.h"
#include "PlineList.h"
#include "ControlPoint2d.h"
#define FUNC_EXPORT _declspec(dllexport)
//初始化场景
extern "C" FUNC_EXPORT void Func_InitView(void* hwnd, char* rootPath);
extern "C" FUNC_EXPORT void Func_InitViewWithColor(void* hwnd, int r = 200, int g = 200, int b = 200);
//绘制一帧
extern "C" FUNC_EXPORT void Func_RenderView();
//场景居中
extern "C" FUNC_EXPORT void Func_ZoomView();
//创建2维网格对象
extern "C" FUNC_EXPORT int Func_CreateMesh(unsigned int numx, unsigned int numy, double x0, double y0, double dx, double dy, double* values);
//设置Z值范围
extern "C" FUNC_EXPORT void Func_SetZRange(double zMin, double zMax);
//设置颜色列表
extern "C" FUNC_EXPORT void Func_SetColorList(const std::vector<ColorItem>& colorList);
//设置等值线
extern "C" FUNC_EXPORT void Func_SetContourList(const std::vector<PlineList>& contourList);
//设置断层线
extern "C" FUNC_EXPORT void Func_SetFaultList(const std::vector<PlineList>& faultList, bool isOffset);
//设置控制点
extern "C" FUNC_EXPORT void Func_SetControlPoint(const std::vector<ControlPoint2d>&pointList);
//设置边界线
extern "C" FUNC_EXPORT void Func_SetBoundary(const PlineList& bound);
//设置其它线
extern "C" FUNC_EXPORT void Func_SetOtherLines(const PlineList& otherLines);
//获取Z值
extern "C" FUNC_EXPORT double* Func_GetValue();
//获取等值线
extern "C" FUNC_EXPORT void Func_GetContourList(std::vector<PlineList>& contourList);
//释放内存
extern "C" FUNC_EXPORT void Func_FreeAll();
//屏幕上画圆
//(ipx,ipy):鼠标位置rad:半径
extern "C" FUNC_EXPORT void Func_DrawCircle(int ipx, int ipy, float rad);
extern "C" FUNC_EXPORT void Func_ClearCircle();//擦除屏幕上圆
//抬升操作
//(ipx,ipy):鼠标位置rad:半径per:压力type:方式类型0方式一1方式二
//wellRad:井点约束半径。默认为0表示不约束
extern "C" FUNC_EXPORT void Func_StrechUp(int ipx, int ipy, float rad, float per, int type, float wellrad = 0);
//下压操作,参数同上
extern "C" FUNC_EXPORT void Func_PushDown(int ipx, int ipy, float rad, float per, int type, float wellrad = 0);
//涂抹拖拽操作,(startx,starty):拖拽的鼠标起始位置,(endx,endy):拖拽的鼠标拖拽的位置,其他参数同上
extern "C" FUNC_EXPORT void Func_DragAway(int startx, int starty, int endx, int endy, float rad, float per, int type, float wellrad = 0);
//平滑操作,参数同上
extern "C" FUNC_EXPORT void Func_Smooth(int ipx, int ipy, float rad, float per, int type, float wellrad = 0);
//平滑操作,参数同上
extern "C" FUNC_EXPORT void Func_OffsetFault();
//平滑操作,参数同上
extern "C" FUNC_EXPORT void Func_CutContourByFault();
//显示隐藏网格等值线断层控制点边界线网格z值顶点
//true:显示, false:隐藏
extern "C" FUNC_EXPORT void Func_ShowMesh(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowIsopleth(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowControlPoint(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowFault(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowBound(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowOtherLines(bool bShow);
extern "C" FUNC_EXPORT void Func_ShowMeshVertex(bool bShow);
//设置属性
extern "C" FUNC_EXPORT void Func_SetProperty(double isopStep, int markStep, double minIsop, double maxIsop,
double zMin, double zMax);
extern "C" FUNC_EXPORT void Func_GetProperty(double& isopStep, int& markStep, double& minIsop, double& maxIsop,
double& zMin, double& zMax);
/*******************undo/redo相关功能*******************/
//开始一次操作(抬升,下压,拖拽,平滑任意操作)
extern "C" FUNC_EXPORT void Func_StartCommand();
//结束一次操作
extern "C" FUNC_EXPORT void Func_EndCommand();
//撤销上一次操作
extern "C" FUNC_EXPORT void Func_Undo();
//重做下一次操作
extern "C" FUNC_EXPORT void Func_Redo();
//是否可以撤销
extern "C" FUNC_EXPORT bool Func_CanUndo();
//是否可以重做
extern "C" FUNC_EXPORT bool Func_CanRedo();
/*******************二期新增功能*******************/
//Func_StrechUp\Func_PushDown\Func_DragAway\Func_Smooth加了井点约束范围的参数
//井点Z值绑定功能
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_WellAdaptiveAdjust(float rad, float range, float miu);
//开启查看Z值
extern "C" FUNC_EXPORT void Func_EnablePickMeshZ(bool bEnable);
//设置井点文字颜色
extern "C" FUNC_EXPORT void Func_SetWellColor(int r=255, int g=255, int b = 255);
//设置井点文字尺寸
extern "C" FUNC_EXPORT void Func_SetWellTxtSize(float size);
//填充断层
extern "C" FUNC_EXPORT void Func_EnableFillFault(bool bEnable);
//过滤等值线
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_FilterMesh(float throld);
//打开/退出绘制多边形(可以在多边形操作窗口初始化的时候打开,窗口关闭的时候退出)
extern "C" FUNC_EXPORT void Func_EnableDrawPolygon(bool bEnable);
//多边形拉升
//闭合多边形后,就可以调用了
//per:强度wellRad:井点约束半径。默认为0表示不约束
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_StretchlUpPolygon(float per, bool state, float wellRad = 0);
//多边形下压,用法同上
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_PushDownPolygon(float per, bool state, float wellRad = 0);
//多边形平滑,用法同上
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_SmoothPolygon(float per, bool state, float wellRad = 0);
//网格优化用法同Func_StrechUp
//这个功能支持undo/redo,可以在调用之前加Func_StartCommand调用结束加Func_EndCommand
extern "C" FUNC_EXPORT void Func_OptimizeMesh(int startx, int starty, int endx, int endy, float rad, float per);
//获取显示位置
//px,py表示窗口左上角对应网格上的坐标
// scale表示网格缩放比例一个像素多少米
extern "C" FUNC_EXPORT void Func_GetViewPos(double& px, double& py, double& scale);
//设置显示位置
extern "C" FUNC_EXPORT void Func_SetViewPos(double px, double py, double scale);
//获取鼠标位置
extern "C" FUNC_EXPORT void Func_GetMousePos(double& px, double& py);
//设置鼠标位置
extern "C" FUNC_EXPORT void Func_SetMousePos(double px, double py);
//检测表达式合法性
extern "C" FUNC_EXPORT bool Func_CompileExpressionZ(char* expressionStr);
//Z值运算
extern "C" FUNC_EXPORT bool Func_CalculateZByExpression(char* expressionStr);
//获取最小z值
extern "C" FUNC_EXPORT double Func_GetZMin();
//获取最大z值
extern "C" FUNC_EXPORT double Func_GetZMax();
//设置显示小数位数
extern "C" FUNC_EXPORT void Func_SetDecimalNumber(int num);
//获取显示的小数位数
extern "C" FUNC_EXPORT int Func_GetDecimalNumber();
//设置断层控制点状态
extern "C" FUNC_EXPORT void Func_SetFaultControlState(bool state);
//断层控制点状态
extern "C" FUNC_EXPORT bool Func_GetFaultControlState();
//井点校正
extern "C" FUNC_EXPORT bool Func_RectificationMeshWellCompute(double deltaz, int type, double factor);
//井点校正 线程终止
extern "C" FUNC_EXPORT void Func_MeshWellThreadStop();
//井点校正 进度
extern "C" FUNC_EXPORT int Func_GetWellRectificationProgress();
//
extern "C" FUNC_EXPORT void Func_UpdateObjectView();
#endif