代码拉取完成,页面将自动刷新
/*!
* \file UGProcessModel.h
* \author 北京超图软件股份有限公司
* \attention
* Copyright © 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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。