6 Star 11 Fork 4

GIScript/GIScript2016

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
UGProcessModel.h 6.83 KB
一键复制 编辑 原始数据 按行查看 历史
liyq0307 提交于 2017-03-14 17:06 +08:00 . GIScript更新,和主版本保持一致
/*!
* \file UGProcessModel.h
* \author 北京超图软件股份有限公司
* \attention
* Copyright &copy; 1997-2009 SuperMap Software Co., Ltd.<br>
* All Rights Reserved
* \version 1.0
* \date 2009年8月12日
**/
#ifndef UGPROCESSMODEL_H
#define UGPROCESSMODEL_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Stream/ugdefs.h"
#include "Toolkit/UGThread.h"
#include "ProcessModeling/UGProcessModelStyle.h"
#include "ProcessModeling/UGParaItem.h"
#include "ProcessModeling/UGEventItem.h"
namespace UGC{
class UGParaItem;
class UGEventItem;
//using namespace std;
//! \brief 模型的进度条回调函数
//! \remarks
typedef void (*ProgressExecuting) (void* pParam, UGint nProgressValue);
//! \brief 模型的断点保存 回调函数
//! \remarks
typedef void (*PausePointSaving) (void* pParam, UGDict<UGString,UGString>& m_strPointSaving);
//! \brief 模型含有多线程时线程进度条回调函数
//! \remarks
//typedef void (*ThreadProgressExecuting) (UGfloat fIncrement);
//! \brief 模型的绑定事件 回调函数
//! \remarks
typedef void (*EventTriggering) (void* pParam, UGString strKey, UGDict<UGString,UGString>& m_strEventParam, UGDict<UGString,UGVariant*> m_eventParam);
//! \brief 该空间处理对应功能执行前事件
//! \remarks
typedef void (*ExecutingProc) (UGlong pSpatialProcess,UGbool &isCancel,UGString message);
//! \brief 该空间处理对应功能执行完成后事件
//! \remarks
typedef void (*ExecutedProc) (UGlong pSpatialProcess,UGString message);
class PROCESSMODELING_API UGProcessModel
{
/*
* 地理处理器接口类
* 所有地理处理模型都必须实现该接口
* 属于过滤器/管道架构模式中的过滤器类
*/
public:
UGProcessModel();
virtual ~UGProcessModel();
//! \brief 得到模型ID
virtual UGint GetID();
//! \brief 设置模型ID
//! \param nID:模型ID
virtual void SetID(UGint nID);
//! \brief 得到模型名字
virtual UGString GetName();
//! \brief 得到模型标题说明
virtual UGString GetCaption();
//! \brief 得到模型描述信息
virtual UGString GetDescription();
//! \brief 设置模型描述信息
//! \param nDescription:模型描述信息
virtual void SetDescription(UGString& nDescription);
//! \brief 得到模型风格
virtual UGProcessModelStyle* GetStyle();
//! \brief
virtual UGArray<UGParaItem*> GetInputParameters();
//! \brief
virtual UGArray<UGParaItem*> GetOutputParameters();
//! \brief
virtual UGArray<UGEventItem*> GetEvents();
//! \brief
virtual UGbool GetIsReady();
virtual UGbool SetInputValue(UGString parameter, UGVariant* value);
virtual UGVariant* GetInputValue(UGString parameter);
virtual UGVariant* GetOutputValue (UGString parameter);
virtual UGProcessModel* Clone() = 0;
protected:
virtual void SetName(UGString name);
virtual void SetCaption(UGString caption);
virtual void SetStyle(UGProcessModelStyle* style);
virtual void SetInputParameters(UGArray<UGParaItem*> items);
virtual void SetOutputParameters(UGArray<UGParaItem*> items);
virtual void SetEvents(UGArray<UGEventItem*> items);
virtual void SetOutputValue(UGString parameter, UGVariant* value);
virtual void BaseClone(UGProcessModel* process);
public:
//! \brief
//! \return
//virtual UGbool CanExecute() = 0;
//! \brief 模型执行接口
//! \return 执行正确返回true,否则返回false
virtual UGbool Execute() = 0;
//UGbool ConnectIncoming(UGString id, UGConnector connector);
//UGbool ConnectOutgoing(UGString id, UGConnector connector);
//! \brief 输入值,常用于处理器属性参数设置
//! \param id: 输入值的关键字标识,用于区分多个输入值
//! \param UGVariant* value: value: 输入值
//! \return 找到关键字id,设置正确返回true,否则返回false
//UGbool ImportValue(UGString id, UGVariant* value);
//! \brief 输出值
//! \param id: 输出值的关键字标识,用于区分多个输出值
//! \return 找到则返回id所对应的对象,否则返回NULL
//UGVariant* OutportValue(UGString id);
//! \brief 中断当前处理
//! \return 成功返回true,否则返回false
virtual UGbool Pause() = 0;
//! \brief 恢复执行处理
//! \param state: 断点状态
//! \return 恢复成功返回true,否则返回false
virtual UGbool Resume(UGDict<UGString,UGString>& state) = 0;
//! \brief 取消执行处理
//! \return 成功返回true,否则返回false
virtual UGbool Cancel() = 0;
//! \brief 设置进度条显示回调函数
//! \param pProgressExecuting: 函数指针值
//! \return void
void SetProgressExecuting(ProgressExecuting pProgressExecuting, void* pParam);
//! \brief 设置断点保存回调函数
//! \param pPausePointSaving: 函数指针值
//! \return void
void SetPausePointSaving(PausePointSaving pPausePointSaving, void* pParam);
//! \brief 设置绑定事件回调函数
//! \param pEventTrigger: 函数指针值
//! \return void
void SetEventTriggering(EventTriggering pEventTrigger, void* pParam);
//! \brief 模型含有多线程时供线程进行回调的进度函数
//! \remarks
void ThreadProgressExecuting(UGfloat fIncrement);
//! \brief 绑定事件Executing回调函数
void SetExecutingFunc(UGlong pSptialProcess,ExecutingProc pExecuting);
//! \brief 触发事件Executing
void SendExecutingFunc(UGbool& isCancel,UGString message);
//! \brief 绑定事件Executed回调函数
void SetExecutedFunc(UGlong pSpaitalProcess,ExecutedProc pExecuted);
//! \brief 触发事件Executed
void SendExecutedFunc(UGString message);
private:
UGArray<UGParaItem*> m_arrayParametersInput;
UGArray<UGParaItem*> m_arrayParametersOutput;
UGArray<UGEventItem*> m_arrayEvents;
UGbool m_bIsReady;
UGlong m_pSpatialProcess;
protected:
//! \brief 模型ID
UGint m_id;
//! \brief 模型名字
UGString m_name;
//! \brief 模型标题说明
UGString m_caption;
//! \brief 模型描述信息
UGString m_description;
//! \brief 输入参数映射表
UGDict<UGString, UGVariant*> m_imports;
//! \brief 输出参数映射表
UGDict<UGString, UGVariant*> m_exports;
//! \brief 进度条显示回调函数指针
//! \remarks
ProgressExecuting m_pProgressExecuting;
//! \brief 进度条显示回调函数的备用参数
//! \remarks 用于实现组件对象句柄的传递与复原
void* m_pProgressExecutingParam;
//! \brief 断点保存回调函数指针
//! \remarks
PausePointSaving m_pPausePointSaving;
//! \brief 断点保存回调函数的备用参数
//! \remarks 用于实现组件对象句柄的传递与复原
void* m_pPausePointSavingParam;
//! \brief 绑定事件回调函数指针
//! \remarks
EventTriggering m_pEventTriggering;
//! \brief 绑定事件回调函数的备用参数
//! \remarks 用于实现组件对象句柄的传递与复原
void* m_pEventTriggeringParam;
//! \brief Executing事件的回调函数指针
ExecutingProc m_pExecuting;
//! \brief Executed事件的回调函数指针
ExecutedProc m_pExecuted;
//! \brief 当前进度值
//! \remarks 主要用于多线程辅助处理
UGfloat m_fCurrentProgress;
//! \brief 保证运行状态多线程读写安全
UGReadWriteLock m_rwLock;
//! \brief 保证函数调用多线程安全
UGMutex m_mutex;
};
}
#endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/GIScript/GIScript2016.git
git@gitee.com:GIScript/GIScript2016.git
GIScript
GIScript2016
GIScript2016
master

搜索帮助