📄 module.h
字号:
void Lock_Create (void);
void Lock_Destroy (void);
bool is_Locked (int x, int y) { return( Lock_Get(x, y) != 0 ); }
char Lock_Get (int x, int y) { return( m_pLock && x >= 0 && x < Get_System()->Get_NX() && y >= 0 && y < Get_System()->Get_NY() ? m_pLock->asChar(x, y) : 0 ); }
void Lock_Set (int x, int y, char Value = 1)
{
if( m_pLock && x >= 0 && x < Get_System()->Get_NX() && y >= 0 && y < Get_System()->Get_NY() )
{
m_pLock->Set_Value(x, y, Value);
}
}
private:
CSG_Grid *m_pLock;
};
///////////////////////////////////////////////////////////
// //
// CSG_Module_Interactive_Base //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
typedef enum ESG_Module_Interactive_Mode
{
MODULE_INTERACTIVE_UNDEFINED = 0,
MODULE_INTERACTIVE_LDOWN,
MODULE_INTERACTIVE_LUP,
MODULE_INTERACTIVE_LDCLICK,
MODULE_INTERACTIVE_MDOWN,
MODULE_INTERACTIVE_MUP,
MODULE_INTERACTIVE_MDCLICK,
MODULE_INTERACTIVE_RDOWN,
MODULE_INTERACTIVE_RUP,
MODULE_INTERACTIVE_RDCLICK,
MODULE_INTERACTIVE_MOVE,
MODULE_INTERACTIVE_MOVE_LDOWN,
MODULE_INTERACTIVE_MOVE_MDOWN,
MODULE_INTERACTIVE_MOVE_RDOWN
}
TSG_Module_Interactive_Mode;
//---------------------------------------------------------
typedef enum ESG_Module_Interactive_DragMode
{
MODULE_INTERACTIVE_DRAG_NONE = 0,
MODULE_INTERACTIVE_DRAG_LINE,
MODULE_INTERACTIVE_DRAG_BOX,
MODULE_INTERACTIVE_DRAG_CIRCLE
}
TSG_Module_Interactive_DragMode;
//---------------------------------------------------------
#define MODULE_INTERACTIVE_KEY_LEFT 0x01
#define MODULE_INTERACTIVE_KEY_MIDDLE 0x02
#define MODULE_INTERACTIVE_KEY_RIGHT 0x04
#define MODULE_INTERACTIVE_KEY_SHIFT 0x08
#define MODULE_INTERACTIVE_KEY_ALT 0x10
#define MODULE_INTERACTIVE_KEY_CTRL 0x20
//---------------------------------------------------------
/**
* CSG_Module_Interactive_Base.
*/
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module_Interactive_Base
{
friend class CSG_Module_Interactive;
friend class CSG_Module_Grid_Interactive;
public:
CSG_Module_Interactive_Base(void);
virtual ~CSG_Module_Interactive_Base(void);
bool Execute_Position (CSG_Point ptWorld, TSG_Module_Interactive_Mode Mode, int Keys);
bool Execute_Keyboard (int Character, int Keys);
bool Execute_Finish (void);
int Get_Drag_Mode (void) { return( m_Drag_Mode ); }
protected:
virtual bool On_Execute_Position (CSG_Point ptWorld, TSG_Module_Interactive_Mode Mode);
virtual bool On_Execute_Keyboard (int Character);
virtual bool On_Execute_Finish (void);
CSG_Point & Get_Position (void) { return( m_Point ); }
double Get_xPosition (void) { return( m_Point.m_point.x ); }
double Get_yPosition (void) { return( m_Point.m_point.y ); }
CSG_Point & Get_Position_Last (void) { return( m_Point_Last ); }
double Get_xPosition_Last (void) { return( m_Point_Last.m_point.x ); }
double Get_yPosition_Last (void) { return( m_Point_Last.m_point.y ); }
bool is_Shift (void) { return( (m_Keys & MODULE_INTERACTIVE_KEY_SHIFT) != 0 ); }
bool is_Alt (void) { return( (m_Keys & MODULE_INTERACTIVE_KEY_ALT) != 0 ); }
bool is_Ctrl (void) { return( (m_Keys & MODULE_INTERACTIVE_KEY_CTRL) != 0 ); }
void Set_Drag_Mode (int Drag_Mode);
private:
int m_Keys, m_Drag_Mode;
CSG_Point m_Point, m_Point_Last;
CSG_Module *m_pModule;
};
///////////////////////////////////////////////////////////
// //
// CSG_Module_Interactive //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
/**
* CSG_Module_Interactive.
*/
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module_Interactive : public CSG_Module_Interactive_Base, public CSG_Module
{
public:
CSG_Module_Interactive(void);
virtual ~CSG_Module_Interactive(void);
virtual TSG_Module_Type Get_Type (void) { return( MODULE_TYPE_Interactive ); }
virtual bool is_Interactive (void) { return( true ); }
};
///////////////////////////////////////////////////////////
// //
// CSG_Module_Grid_Interactive //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
/**
* CSG_Module_Grid_Interactive.
*/
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module_Grid_Interactive : public CSG_Module_Interactive_Base, public CSG_Module_Grid
{
public:
CSG_Module_Grid_Interactive(void);
virtual ~CSG_Module_Grid_Interactive(void);
virtual TSG_Module_Type Get_Type (void) { return( MODULE_TYPE_Grid_Interactive ); }
virtual bool is_Interactive (void) { return( true ); }
protected:
bool Get_Grid_Pos (int &x, int &y);
int Get_xGrid (void);
int Get_yGrid (void);
};
///////////////////////////////////////////////////////////
// //
// Module Library Interface Definitions //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
typedef enum ESG_MLB_Info
{
MLB_INFO_Name = 0,
MLB_INFO_Description,
MLB_INFO_Author,
MLB_INFO_Version,
MLB_INFO_Menu_Path,
MLB_INFO_User,
MLB_INFO_Count
}
TSG_MLB_Info;
//---------------------------------------------------------
class SAGA_API_DLL_EXPORT CSG_Module_Library_Interface
{
public:
CSG_Module_Library_Interface(void);
virtual ~CSG_Module_Library_Interface(void);
void Set_Info (int ID, const SG_Char *Info);
const SG_Char * Get_Info (int ID);
int Get_Count (void);
bool Add_Module (CSG_Module *pModule);
CSG_Module * Get_Module (int iModule);
void Set_File_Name (const SG_Char *File_Name);
const SG_Char * Get_File_Name (void);
const SG_Char * Get_Translation (const SG_Char *Text);
private:
const SG_Char *m_Info[MLB_INFO_Count];
int m_nModules;
CSG_Module **m_Modules;
CSG_String m_File_Name;
CSG_Translator m_Translator;
};
//---------------------------------------------------------
#define SYMBOL_MLB_Initialize SG_T("MLB_Initialize")
typedef bool (* TSG_PFNC_MLB_Initialize) (const SG_Char *);
//---------------------------------------------------------
#define SYMBOL_MLB_Get_Interface SG_T("MLB_Get_Interface")
typedef CSG_Module_Library_Interface * (* TSG_PFNC_MLB_Get_Interface) (void);
//---------------------------------------------------------
#define MLB_INTERFACE CSG_Module_Library_Interface MLB_Interface;\
\
extern "C" _SAGA_DLL_EXPORT bool MLB_Initialize (const SG_Char *File_Name)\
{\
MLB_Interface.Set_File_Name(File_Name);\
\
int i = 0;\
\
while( MLB_Interface.Add_Module(Create_Module(i++)) );\
\
for(i=0; i<MLB_INFO_Count; i++)\
{\
MLB_Interface.Set_Info(i, Get_Info(i));\
}\
\
return( MLB_Interface.Get_Count() > 0 );\
}\
\
extern "C" _SAGA_DLL_EXPORT CSG_Module_Library_Interface * MLB_Get_Interface (void)\
{\
return( &MLB_Interface );\
}\
\
extern "C" _SAGA_DLL_EXPORT const SG_Char * Get_API_Version (void)\
{\
return( SAGA_API_VERSION );\
}\
//---------------------------------------------------------
#ifndef SWIG
extern CSG_Module_Library_Interface MLB_Interface;
#endif // #ifdef SWIG
//---------------------------------------------------------
#ifndef _SAGA_UNICODE
#define _TL MLB_Interface.Get_Translation
#define _TW MLB_Interface.Get_Translation
#else
#define _TL(s) MLB_Interface.Get_Translation(SG_T(s))
#define _TW(s) CSG_String(MLB_Interface.Get_Translation(CSG_String(s))).c_str()
#endif
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
#endif // #ifndef HEADER_INCLUDED__SAGA_API__module_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -