📄 module.h
字号:
///////////////////////////////////////////////////////////
// //
// SAGA //
// //
// System for Automated Geoscientific Analyses //
// //
// Application Programming Interface //
// //
// Library: SAGA_API //
// //
//-------------------------------------------------------//
// //
// module.h //
// //
// Copyright (C) 2005 by Olaf Conrad //
// //
//-------------------------------------------------------//
// //
// This file is part of 'SAGA - System for Automated //
// Geoscientific Analyses'. //
// //
// This library is free software; you can redistribute //
// it and/or modify it under the terms of the GNU Lesser //
// General Public License as published by the Free //
// Software Foundation, version 2.1 of the License. //
// //
// This library is distributed in the hope that it will //
// be useful, but WITHOUT ANY WARRANTY; without even the //
// implied warranty of MERCHANTABILITY or FITNESS FOR A //
// PARTICULAR PURPOSE. See the GNU Lesser General Public //
// License for more details. //
// //
// You should have received a copy of the GNU Lesser //
// General Public License along with this program; if //
// not, write to the Free Software Foundation, Inc., //
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, //
// USA. //
// //
//-------------------------------------------------------//
// //
// contact: Olaf Conrad //
// Institute of Geography //
// University of Goettingen //
// Goldschmidtstr. 5 //
// 37077 Goettingen //
// Germany //
// //
// e-mail: oconrad@saga-gis.org //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
// $Id: module.h,v 1.13 2007/02/26 17:48:37 oconrad Exp $
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
#ifndef HEADER_INCLUDED__SAGA_API__module_H
#define HEADER_INCLUDED__SAGA_API__module_H
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
#include "parameters.h"
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
typedef enum ESG_Module_Type
{
MODULE_TYPE_Base = 0,
MODULE_TYPE_Interactive,
MODULE_TYPE_Grid,
MODULE_TYPE_Grid_Interactive
}
TSG_Module_Type;
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
typedef enum ESG_Module_Error
{
MODULE_ERROR_Unknown = 0,
MODULE_ERROR_Calculation
}
TSG_Module_Error;
///////////////////////////////////////////////////////////
// //
// CSG_Module //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
/**
* CSG_Module is the base class for all executable SAGA modules.
* @see CSG_Parameters
* @see CSG_Module_Interactive
* @see CSG_Module_Grid
* @see CSG_Module_Grid_Interactive
*/
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module
{
friend class CSG_Module_Interactive_Base;
public:
CSG_Module(void);
virtual ~CSG_Module(void);
virtual void Destroy (void);
virtual TSG_Module_Type Get_Type (void) { return( MODULE_TYPE_Base ); }
const SG_Char * Get_Name (void);
const SG_Char * Get_Description (void);
const SG_Char * Get_Author (void);
const SG_Char * Get_Icon (void) { return( NULL ); }
virtual const SG_Char * Get_MenuPath (void) { return( NULL ); }
int Get_Parameters_Count (void) { return( m_npParameters ); }
CSG_Parameters * Get_Parameters (void) { return( &Parameters ); }
CSG_Parameters * Get_Parameters (int i) { return( i >= 0 && i < m_npParameters ? m_pParameters[i] : NULL ); }
CSG_Parameters * Get_Parameters (const SG_Char *Identifier);
#ifdef _SAGA_UNICODE
CSG_Parameters * Get_Parameters (const char *Identifier);
#endif
int Garbage_Get_Count (void) { return( m_nGarbage ); }
CSG_Data_Object * Garbage_Get_Item (int i) { return( i >= 0 && i < m_nGarbage ? m_Garbage[i] : NULL ); }
CSG_Data_Object * Garbage_Del_Item (int i, bool bFromListOnly = true);
void Garbage_Clear (void);
virtual bool is_Interactive (void) { return( false ); }
bool is_Progress (void) { return( SG_UI_Process_Get_Okay(false) ); }
bool is_Executing (void) { return( m_bExecutes ); }
void Set_Translation (CSG_Translator &Translator);
void Set_Managed (bool bOn = true);
void Set_Show_Progress (bool bOn = true);
bool Execute (void);
protected:
CSG_Parameters Parameters;
CSG_History History_Supplement;
//-----------------------------------------------------
void Set_Name (const SG_Char *String);
void Set_Description (const SG_Char *String);
void Set_Author (const SG_Char *String);
//-----------------------------------------------------
virtual bool On_Execute (void) = 0;
virtual int On_Parameter_Changed (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
//-----------------------------------------------------
CSG_Parameters * Add_Parameters (const SG_Char *Identifier, const SG_Char *Name, const SG_Char *Description);
bool Dlg_Parameters (const SG_Char *Identifier);
bool Dlg_Parameters (CSG_Parameters *pParameters, const SG_Char *Caption);
#ifdef _SAGA_UNICODE
CSG_Parameters * Add_Parameters (const char *Identifier, const SG_Char *Name, const SG_Char *Description);
bool Dlg_Parameters (const char *Identifier);
#endif
//-----------------------------------------------------
virtual bool Process_Get_Okay (bool bBlink);
virtual void Process_Set_Text (const SG_Char *Text);
virtual bool Set_Progress (int Position);
virtual bool Set_Progress (double Position, double Range);
void Message_Add (const SG_Char *Text, bool bNewLine = true);
void Message_Dlg (const SG_Char *Text, const SG_Char *Caption = NULL);
bool Error_Set (TSG_Module_Error Error_ID = MODULE_ERROR_Unknown);
bool Error_Set (const SG_Char *Error_Text);
//-----------------------------------------------------
bool DataObject_Add (CSG_Data_Object *pDataObject, bool bUpdate = false);
bool DataObject_Update (CSG_Data_Object *pDataObject, bool bShow = false);
bool DataObject_Update (CSG_Data_Object *pDataObject, double Parm_1, double Parm_2, bool bShow = false);
void DataObject_Update_All (void);
bool DataObject_Get_Colors (CSG_Data_Object *pDataObject, CSG_Colors &Colors);
bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_Colors &Colors);
bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, int nColors, int Palette = SG_COLORS_DEFAULT, bool bRevert = false);
bool DataObject_Get_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
private:
bool m_bExecutes, m_bError_Ignore, m_bManaged, m_bShow_Progress;
int m_npParameters, m_nGarbage;
CSG_Data_Object **m_Garbage;
CSG_Parameters **m_pParameters;
CSG_String m_Author;
bool _Garbage_Add_Item (CSG_Data_Object *pDataObject);
void _Set_Output_History (void);
static int _On_Parameter_Changed (CSG_Parameter *pParameter);
};
///////////////////////////////////////////////////////////
// //
// CSG_Module_Grid //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
/**
* CSG_Module_Grid.
*/
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module_Grid : public CSG_Module
{
public:
CSG_Module_Grid(void);
virtual ~CSG_Module_Grid(void);
virtual TSG_Module_Type Get_Type (void) { return( MODULE_TYPE_Grid ); }
CSG_Grid_System * Get_System (void) { return( Parameters.Get_Grid_System() ); }
protected:
virtual bool Set_Progress (int iRow);
virtual bool Set_Progress (double Position, double Range);
virtual bool Set_Progress_NCells (int iCell);
//-----------------------------------------------------
int Get_NX (void) { return( Get_System()->Get_NX() ); }
int Get_NY (void) { return( Get_System()->Get_NY() ); }
int Get_NCells (void) { return( Get_System()->Get_NCells() ); }
double Get_Cellsize (void) { return( Get_System()->Get_Cellsize() ); }
double Get_XMin (void) { return( Get_System()->Get_XMin() ); }
double Get_YMin (void) { return( Get_System()->Get_YMin() ); }
int Get_xTo (int Dir, int x = 0) { return( Get_System()->Get_xTo(Dir, x) ); }
int Get_yTo (int Dir, int y = 0) { return( Get_System()->Get_yTo(Dir, y) ); }
int Get_xFrom (int Dir, int x = 0) { return( Get_System()->Get_xFrom(Dir, x) ); }
int Get_yFrom (int Dir, int y = 0) { return( Get_System()->Get_yFrom(Dir, y) ); }
double Get_Length (int Dir) { return( Get_System()->Get_Length(Dir) ); }
double Get_UnitLength (int Dir) { return( Get_System()->Get_UnitLength(Dir) ); }
bool is_InGrid (int x, int y) { return( Get_System()->is_InGrid(x, y) ); }
bool is_InGrid (int x, int y, int Rand) { return( Get_System()->is_InGrid(x, y, Rand) ); }
//-----------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -