SAGA API  v9.2
tool.h
Go to the documentation of this file.
1 
3 // //
4 // SAGA //
5 // //
6 // System for Automated Geoscientific Analyses //
7 // //
8 // Application Programming Interface //
9 // //
10 // Library: SAGA_API //
11 // //
12 //-------------------------------------------------------//
13 // //
14 // tool.h //
15 // //
16 // Copyright (C) 2005 by Olaf Conrad //
17 // //
18 //-------------------------------------------------------//
19 // //
20 // This file is part of 'SAGA - System for Automated //
21 // Geoscientific Analyses'. //
22 // //
23 // This library is free software; you can redistribute //
24 // it and/or modify it under the terms of the GNU Lesser //
25 // General Public License as published by the Free //
26 // Software Foundation, either version 2.1 of the //
27 // License, or (at your option) any later version. //
28 // //
29 // This library is distributed in the hope that it will //
30 // be useful, but WITHOUT ANY WARRANTY; without even the //
31 // implied warranty of MERCHANTABILITY or FITNESS FOR A //
32 // PARTICULAR PURPOSE. See the GNU Lesser General Public //
33 // License for more details. //
34 // //
35 // You should have received a copy of the GNU Lesser //
36 // General Public License along with this program; if //
37 // not, see <http://www.gnu.org/licenses/>. //
38 // //
39 //-------------------------------------------------------//
40 // //
41 // contact: Olaf Conrad //
42 // Institute of Geography //
43 // University of Goettingen //
44 // Goldschmidtstr. 5 //
45 // 37077 Goettingen //
46 // Germany //
47 // //
48 // e-mail: oconrad@saga-gis.org //
49 // //
51 
52 //---------------------------------------------------------
53 #ifndef HEADER_INCLUDED__SAGA_API__tool_H
54 #define HEADER_INCLUDED__SAGA_API__tool_H
55 
56 
58 // //
59 // //
60 // //
62 
63 //---------------------------------------------------------
74 // //
76 // //
77 // //
79 
80 //---------------------------------------------------------
81 #include "parameters.h"
82 
83 
85 // //
86 // //
87 // //
89 
90 //---------------------------------------------------------
91 typedef enum
92 {
96 }
98 
99 //---------------------------------------------------------
100 typedef enum
101 {
107 }
109 
110 //---------------------------------------------------------
111 typedef enum
112 {
115 }
117 
118 //---------------------------------------------------------
119 typedef enum
120 {
129 }
131 
132 
134 // //
135 // CSG_Tool //
136 // //
138 
139 //---------------------------------------------------------
147 //---------------------------------------------------------
149 {
152  friend class CSG_Tool_Chain;
153 
154 public:
155 
156  CSG_Tool(void);
157  virtual ~CSG_Tool(void);
158 
159  virtual void Destroy (void);
160 
161  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Base ); }
162 
163  const CSG_String & Get_ID (void) const { return( m_ID ); }
164 
165  const CSG_String & Get_Library (void) const;
166  const CSG_String & Get_File_Name (void) const; // Returns the file name of the tool's library or, if this is a tool chain, the associated XML file.
167  const CSG_String & Get_Name (void) const;
168  const CSG_String & Get_Author (void) const;
169  const CSG_String & Get_Version (void) const;
170  const CSG_String & Get_Description (void) const;
171  const CSG_Strings & Get_References (void) const;
172  const SG_Char * Get_Icon (void) { return( NULL ); }
173  CSG_String Get_Summary (bool bParameters = true, const CSG_String &Menu = "", const CSG_String &Description = "", int Format = SG_SUMMARY_FMT_HTML);
174 
175  virtual CSG_String Get_MenuPath (void) { return( SG_T("") ); }
176  virtual CSG_String Get_MenuPath (bool bSolved);
177 
178  int Get_Parameters_Count (void) { return( m_npParameters ); }
179  CSG_Parameters * Get_Parameters (void) { return( &Parameters ); }
180  CSG_Parameters * Get_Parameters (int i) { return( i >= 0 && i < m_npParameters ? m_pParameters[i] : NULL ); }
181  CSG_Parameters * Get_Parameters (const CSG_String &Identifier);
182 
183  CSG_Parameter * Get_Parameter (const CSG_String &ID) const { return( Parameters(ID) ); }
184  CSG_Parameter * Get_Parameter (const char *ID) const { return( Parameters(ID) ); }
185  CSG_Parameter * Get_Parameter (const wchar_t *ID) const { return( Parameters(ID) ); }
186  bool Set_Parameter (const CSG_String &ID, CSG_Parameter *pValue);
187  bool Set_Parameter (const char *ID, CSG_Parameter *pValue);
188  bool Set_Parameter (const wchar_t *ID, CSG_Parameter *pValue);
189  bool Set_Parameter (const CSG_String &ID, int Value, int Type = PARAMETER_TYPE_Undefined);
190  bool Set_Parameter (const char *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
191  bool Set_Parameter (const wchar_t *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
192  bool Set_Parameter (const CSG_String &ID, double Value, int Type = PARAMETER_TYPE_Undefined);
193  bool Set_Parameter (const char *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
194  bool Set_Parameter (const wchar_t *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
195  bool Set_Parameter (const CSG_String &ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
196  bool Set_Parameter (const char *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
197  bool Set_Parameter (const wchar_t *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
198  bool Set_Parameter (const CSG_String &ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
199  bool Set_Parameter (const char *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
200  bool Set_Parameter (const wchar_t *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
201  bool Set_Parameter (const CSG_String &ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
202  bool Set_Parameter (const char *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
203  bool Set_Parameter (const wchar_t *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
204  bool Set_Parameter (const CSG_String &ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
205  bool Set_Parameter (const char *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
206  bool Set_Parameter (const wchar_t *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
207 
208  bool Reset (bool bManager = true);
209  bool Reset_Manager (void);
210  bool Reset_Grid_System (void);
211 
212  bool Update_Parameter_States (void);
213 
214  void Set_Callback (bool bActive = true);
215 
216  bool Set_Manager (class CSG_Data_Manager *pManager);
217  class CSG_Data_Manager * Get_Manager (void) const;
218  class CSG_Data_Manager * Create_Manager (void);
219  bool Delete_Manager (bool bDetachData = false, bool bReset = true);
220 
221  bool Set_Grid_System (const CSG_Grid_System &System);
222  CSG_Grid_System * Get_Grid_System (void) const;
223 
224  bool Settings_Push (class CSG_Data_Manager *pManager = NULL);
225  bool Settings_Pop (void);
226 
227  virtual bool do_Sync_Projections (void) const { return( true ); }
228 
229  virtual bool needs_GUI (void) const { return( false ); }
230  bool has_GUI (void) const;
231 
232  virtual bool is_Grid (void) const { return( false ); }
233  virtual bool is_Interactive (void) const { return( false ); }
234  bool is_Progress (void) const { return( SG_UI_Process_Get_Okay(false) ); }
235  bool is_Executing (void) const { return( m_bExecutes ); }
236 
237  void Set_Show_Progress (bool bOn = true);
238 
239  virtual bool On_Before_Execution (void) { return( true ); }
240  virtual bool On_After_Execution (void) { return( true ); }
241 
242  bool Execute (bool bAddHistory = false);
243 
244  const SG_Char * Get_Execution_Info (void) const { return( m_Execution_Info ); }
245 
246  CSG_String Get_Script (TSG_Tool_Script_Type Type, bool bHeader, bool bAllParameters = false);
247 
248 
249 protected:
250 
252 
254 
255 
256  //-----------------------------------------------------
257  void Set_Name (const CSG_String &String);
258  void Set_Author (const CSG_String &String);
259  void Set_Version (const CSG_String &String);
260  void Set_Description (const CSG_String &String);
261 
262  void Add_Reference (const CSG_String &Authors, const CSG_String &Year, const CSG_String &Title, const CSG_String &Where, const SG_Char *Link = NULL, const SG_Char *Link_Text = NULL);
263  void Add_Reference (const CSG_String &Link, const SG_Char *Link_Text = NULL);
264 
265  //-----------------------------------------------------
266  virtual bool On_Execute (void) = 0;
267 
268  virtual int On_Parameter_Changed (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
269  virtual int On_Parameters_Enable (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
270 
271  TSG_PFNC_Parameter_Changed Get_Parameter_Changed (void) { return( _On_Parameter_Changed ); }
272 
273  //-----------------------------------------------------
274  CSG_Parameters * Add_Parameters (const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description);
275  bool Dlg_Parameters (const CSG_String &Identifier);
276  bool Dlg_Parameters (CSG_Parameters *pParameters, const CSG_String &Caption);
277 
278  //-----------------------------------------------------
279  virtual bool Set_Progress (int Position, int Range ) const;
280  virtual bool Set_Progress (sLong Position, sLong Range ) const;
281  virtual bool Set_Progress (double Position, double Range = 1.) const;
282 
283  bool Stop_Execution (bool bDialog = true);
284 
285  void Message_Dlg (const CSG_String &Text, const SG_Char *Caption = NULL);
286  bool Message_Dlg_Confirm (const CSG_String &Text, const SG_Char *Caption = NULL);
287 
288  void Message_Add (const CSG_String &Text, bool bNewLine = true);
289  void Message_Fmt (const char *Format, ...);
290  void Message_Fmt (const wchar_t *Format, ...);
291 
292  bool Error_Set (TSG_Tool_Error Error_ID = TOOL_ERROR_Unknown);
293  bool Error_Set (const CSG_String &Text);
294  bool Error_Fmt (const char *Format, ...);
295  bool Error_Fmt (const wchar_t *Format, ...);
296 
297  //-----------------------------------------------------
298  bool DataObject_Add (CSG_Data_Object *pDataObject, bool bUpdate = false);
299 
300  void DataObject_Update_All (void);
301 
302  bool DataObject_Set_History (CSG_Parameter *pParameter, CSG_MetaData *pHistory = NULL);
303 
304  bool Get_Projection (CSG_Projection &Projection) const;
305 
306 
307 public: // static functions...
308 
309  static bool Process_Get_Okay (bool bBlink = false);
310  static void Process_Set_Text (const CSG_String &Text);
311  static void Process_Set_Text (const char *Format, ...);
312  static void Process_Set_Text (const wchar_t *Format, ...);
313 
314  static bool DataObject_Update (CSG_Data_Object *pDataObject , int Show = SG_UI_DATAOBJECT_UPDATE);
315  static bool DataObject_Update (CSG_Data_Object *pDataObject, double Minimum, double Maximum, int Show = SG_UI_DATAOBJECT_UPDATE);
316 
317  static bool DataObject_Get_Colors (CSG_Data_Object *pDataObject, CSG_Colors &Colors);
318  static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_Colors &Colors);
319  static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, int nColors, int Palette = SG_COLORS_DEFAULT, bool bRevert = false);
320 
321  static bool DataObject_Get_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
322  static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
323  static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy);
324 
325  static CSG_Parameter * DataObject_Get_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID);
326  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Parameter *pParameter);
327  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy, const CSG_String &ID);
328  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, int Value);
329  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double Value);
330  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, void *Value);
331  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, const SG_Char *Value);
332  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double loVal, double hiVal); // Range Parameter
333 
334 
335 private:
336 
337  bool m_bExecutes, m_bError_Ignore, m_bShow_Progress, m_bWithGUI;
338 
339  int m_npParameters;
340 
341  CSG_Array m_Settings_Stack;
342 
343  CSG_Parameters **m_pParameters;
344 
345  CSG_String m_ID, m_Library, m_Library_Menu, m_File_Name, m_Author, m_Version, m_Execution_Info;
346 
347 
348  bool _Synchronize_DataObjects (void);
349 
350  CSG_String _Get_Script_CMD (bool bHeader, bool bAllParameters, TSG_Tool_Script_Type Type);
351  void _Get_Script_CMD (CSG_String &Script, CSG_Parameters *pParameters, bool bAllParameters, TSG_Tool_Script_Type Type);
352 
353  CSG_String _Get_Script_Python (bool bHeader, bool bAllParameters);
354  void _Get_Script_Python (CSG_String &Script, CSG_Parameters *pParameters, bool bAllParameters, const CSG_String &Prefix = "");
355 
356  CSG_String _Get_Script_Python_Wrap (bool bHeader, bool bName, bool bCall);
357  bool _Get_Script_Python_Wrap (const CSG_Parameter &Parameter, int Constraint, CSG_String &Arguments, CSG_String &Description, CSG_String &Code, bool bCall, const CSG_String &Prefix = "");
358 
359  CSG_MetaData _Get_Output_History (void);
360  void _Set_Output_History (void);
361 
362  void _Update_Parameter_States (CSG_Parameters *pParameters);
363 
364  static int _On_Parameter_Changed (CSG_Parameter *pParameter, int Flags);
365 
366 };
367 
368 
370 // //
371 // CSG_Tool_Grid //
372 // //
374 
375 //---------------------------------------------------------
379 //---------------------------------------------------------
381 {
382 public:
383  CSG_Tool_Grid(void);
384  virtual ~CSG_Tool_Grid(void);
385 
386  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid ); }
387 
388  const CSG_Grid_System & Get_System (void) const { return( *Parameters.Get_Grid_System() ); }
389  bool Set_System (const CSG_Grid_System &System);
390 
391  virtual bool is_Grid (void) const { return( true ); }
392 
393 
394 protected:
395 
396  virtual bool Set_Progress_Cells (sLong Cell) const;
397  virtual bool Set_Progress_Rows (int Row) const;
398 
399  //-----------------------------------------------------
400  int Get_NX (void) const { return( Get_System().Get_NX () ); }
401  int Get_NY (void) const { return( Get_System().Get_NY () ); }
402  sLong Get_NCells (void) const { return( Get_System().Get_NCells () ); }
403  double Get_XMin (void) const { return( Get_System().Get_XMin () ); }
404  double Get_YMin (void) const { return( Get_System().Get_YMin () ); }
405  double Get_XMax (void) const { return( Get_System().Get_XMax () ); }
406  double Get_YMax (void) const { return( Get_System().Get_YMax () ); }
407  double Get_Cellsize (void) const { return( Get_System().Get_Cellsize() ); }
408  double Get_Cellarea (void) const { return( Get_System().Get_Cellarea() ); }
409 
410  double Get_Length (int i) const { return( Get_System().Get_Length (i) ); }
411  double Get_UnitLength (int i) const { return( Get_System().Get_UnitLength(i) ); }
412  bool is_InGrid (int x, int y) const { return( Get_System().is_InGrid(x, y) ); }
413  bool is_InGrid (int x, int y, int Rand) const { return( Get_System().is_InGrid(x, y, Rand) ); }
414 
415  static int Get_xTo (int i, int x = 0) { return( CSG_Grid_System::Get_xTo (i, x) ); }
416  static int Get_yTo (int i, int y = 0) { return( CSG_Grid_System::Get_yTo (i, y) ); }
417  static int Get_xFrom (int i, int x = 0) { return( CSG_Grid_System::Get_xFrom(i, x) ); }
418  static int Get_yFrom (int i, int y = 0) { return( CSG_Grid_System::Get_yFrom(i, y) ); }
419 
420  //-----------------------------------------------------
421  void Lock_Create (void);
422  void Lock_Destroy (void);
423 
424  bool is_Locked (int x, int y) { return( Lock_Get(x, y) != 0 ); }
425  char Lock_Get (int x, int y) { return( m_pLock && x >= 0 && x < Get_NX() && y >= 0 && y < Get_NY() ? m_pLock->asChar(x, y) : 0 ); }
426 
427  void Lock_Set (int x, int y, char Value = 1)
428  {
429  if( m_pLock && x >= 0 && x < Get_NX() && y >= 0 && y < Get_NY() )
430  {
431  m_pLock->Set_Value(x, y, Value);
432  }
433  }
434 
435 
436 private:
437 
438  CSG_Grid *m_pLock;
439 
440 };
441 
442 
444 // //
445 // CSG_Tool_Interactive_Base //
446 // //
448 
449 //---------------------------------------------------------
450 typedef enum
451 {
466 }
468 
469 //---------------------------------------------------------
470 typedef enum
471 {
476 }
478 
479 //---------------------------------------------------------
480 #define TOOL_INTERACTIVE_KEY_LEFT 0x01
481 #define TOOL_INTERACTIVE_KEY_MIDDLE 0x02
482 #define TOOL_INTERACTIVE_KEY_RIGHT 0x04
483 #define TOOL_INTERACTIVE_KEY_SHIFT 0x08
484 #define TOOL_INTERACTIVE_KEY_ALT 0x10
485 #define TOOL_INTERACTIVE_KEY_CTRL 0x20
486 
487 //---------------------------------------------------------
491 //---------------------------------------------------------
493 {
494  friend class CSG_Tool_Interactive;
496 
497 public:
499  virtual ~CSG_Tool_Interactive_Base(void);
500 
501  bool Set_Projection (const CSG_Projection &Projection);
502 
503  bool Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys);
504  bool Execute_Keyboard (int Character, int Keys);
505  bool Execute_Finish (void);
506 
507  int Get_Drag_Mode (void) const { return( m_Drag_Mode ); }
508 
509 
510 protected:
511 
512  const CSG_Projection & Get_Projection (void) const { return( m_Projection ); }
513 
514  virtual bool On_Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode);
515  virtual bool On_Execute_Keyboard (int Character);
516  virtual bool On_Execute_Finish (void);
517 
518  const CSG_Point & Get_Position (void) const { return( m_Point ); }
519  double Get_xPosition (void) const { return( m_Point .x ); }
520  double Get_yPosition (void) const { return( m_Point .y ); }
521 
522  const CSG_Point & Get_Position_Last (void) const { return( m_Point_Last ); }
523  double Get_xPosition_Last (void) const { return( m_Point_Last.x ); }
524  double Get_yPosition_Last (void) const { return( m_Point_Last.y ); }
525 
526  bool is_Shift (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_SHIFT) != 0 ); }
527  bool is_Alt (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_ALT ) != 0 ); }
528  bool is_Ctrl (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_CTRL ) != 0 ); }
529 
530  void Set_Drag_Mode (int Drag_Mode);
531 
532 
533 private:
534 
535  int m_Keys, m_Drag_Mode;
536 
537  CSG_Point m_Point, m_Point_Last;
538 
539  CSG_Projection m_Projection;
540 
541  CSG_Tool *m_pTool;
542 
543 };
544 
545 
547 // //
548 // CSG_Tool_Interactive //
549 // //
551 
552 //---------------------------------------------------------
556 //---------------------------------------------------------
558 {
559 public:
560  CSG_Tool_Interactive(void);
561  virtual ~CSG_Tool_Interactive(void);
562 
563  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Interactive ); }
564 
565  virtual bool needs_GUI (void) const { return( true ); }
566 
567  virtual bool is_Interactive (void) const { return( true ); }
568 
569 };
570 
571 
573 // //
574 // CSG_Tool_Grid_Interactive //
575 // //
577 
578 //---------------------------------------------------------
582 //---------------------------------------------------------
584 {
585 public:
587  virtual ~CSG_Tool_Grid_Interactive(void);
588 
589  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid_Interactive ); }
590 
591  virtual bool needs_GUI (void) const { return( true ); }
592 
593  virtual bool is_Interactive (void) const { return( true ); }
594 
595 
596 protected:
597 
598  bool Get_Grid_Pos (int &x, int &y) const;
599 
600  int Get_xGrid (void) const;
601  int Get_yGrid (void) const;
602 
603 };
604 
605 
607 // //
608 // Tool Library Interface Definitions //
609 // //
611 
612 //---------------------------------------------------------
613 typedef enum
614 {
626 }
628 
629 //---------------------------------------------------------
630 typedef CSG_Tool * (* TSG_PFNC_TLB_Create_Tool) (int i);
631 typedef CSG_String (* TSG_PFNC_TLB_Get_Info ) (int i);
632 
633 //---------------------------------------------------------
635 {
636 public:
638  virtual ~CSG_Tool_Library_Interface(void);
639 
640  bool Create (const CSG_String &Version, const CSG_String &TLB_Path, TSG_PFNC_TLB_Get_Info Fnc_Info, TSG_PFNC_TLB_Create_Tool Fnc_Create_Tool);
641  bool Destroy (void);
642 
643  const CSG_String & Get_Info (int ID);
644 
645  int Get_Count (void);
646  CSG_Tool * Get_Tool (int i);
647 
648  CSG_Tool * Create_Tool (int i, bool bWithGUI = false);
649  bool Delete_Tool (CSG_Tool *pTool);
650  bool Delete_Tools (void);
651 
652 
653 private:
654 
655  CSG_Strings m_Info;
656 
657  CSG_Array_Pointer m_Tools, m_xTools;
658 
659  TSG_PFNC_TLB_Create_Tool m_Fnc_Create_Tool;
660 
661 };
662 
663 //---------------------------------------------------------
664 #define SYMBOL_TLB_Initialize "TLB_Initialize"
665 typedef bool (* TSG_PFNC_TLB_Initialize) (const SG_Char *);
666 
667 #define SYMBOL_TLB_Finalize "TLB_Finalize"
668 typedef bool (* TSG_PFNC_TLB_Finalize) (void);
669 
670 #define SYMBOL_TLB_Get_Interface "TLB_Get_Interface"
671 typedef CSG_Tool_Library_Interface * (* TSG_PFNC_TLB_Get_Interface) (void);
672 
673 //---------------------------------------------------------
674 #define TLB_INTERFACE_SKIP_TOOL ((CSG_Tool *)0x1)
675 
676 //---------------------------------------------------------
677 #define TLB_INTERFACE_INITIALIZE CSG_Tool_Library_Interface TLB_Interface;\
678 \
679 extern "C" _SAGA_DLL_EXPORT CSG_Tool_Library_Interface * TLB_Get_Interface (void)\
680 {\
681  return( &TLB_Interface );\
682 }\
683 \
684 extern "C" _SAGA_DLL_EXPORT bool TLB_Initialize (const SG_Char *TLB_Path)\
685 {\
686  return( TLB_Interface.Create(SAGA_VERSION, TLB_Path, Get_Info, Create_Tool) );\
687 }\
688 
689 //---------------------------------------------------------
690 #define TLB_INTERFACE_FINALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Finalize (void)\
691 {\
692  return( true );\
693 }\
694 
695 //---------------------------------------------------------
696 #define TLB_INTERFACE TLB_INTERFACE_INITIALIZE TLB_INTERFACE_FINALIZE
697 
698 //---------------------------------------------------------
699 #ifndef SWIG
700 
702 
703 #endif // #ifdef SWIG
704 
705 
707 // //
708 // //
709 // //
711 
712 //---------------------------------------------------------
713 #endif // #ifndef HEADER_INCLUDED__SAGA_API__tool_H
TOOL_INTERACTIVE_LDCLICK
@ TOOL_INTERACTIVE_LDCLICK
Definition: tool.h:455
CSG_Tool_Grid::is_InGrid
bool is_InGrid(int x, int y) const
Definition: tool.h:412
CSG_Tool_Interactive
Definition: tool.h:558
CSG_Tool_Library_Interface
Definition: tool.h:635
CSG_Grid_System::Get_xTo
static int Get_xTo(int Direction, int x=0)
Definition: grid.h:310
CSG_Tool_Interactive_Base::CSG_Tool_Interactive_Base
CSG_Tool_Interactive_Base(void)
Definition: tool_interactive_base.cpp:81
CSG_Tool_Grid::Get_yFrom
static int Get_yFrom(int i, int y=0)
Definition: tool.h:418
CSG_Tool::Reset_Manager
bool Reset_Manager(void)
Definition: tool.cpp:1237
CSG_Tool::Parameters
CSG_Parameters Parameters
Definition: tool.h:251
SG_T
#define SG_T(s)
Definition: api_core.h:531
CSG_Tool_Grid::Lock_Get
char Lock_Get(int x, int y)
Definition: tool.h:425
CSG_Tool_Interactive_Base::Get_xPosition_Last
double Get_xPosition_Last(void) const
Definition: tool.h:523
CSG_Tool_Grid::Get_UnitLength
double Get_UnitLength(int i) const
Definition: tool.h:411
TOOL_INTERACTIVE_DRAG_LINE
@ TOOL_INTERACTIVE_DRAG_LINE
Definition: tool.h:473
TOOL_TYPE_Chain
@ TOOL_TYPE_Chain
Definition: tool.h:106
TOOL_SCRIPT_CHAIN
@ TOOL_SCRIPT_CHAIN
Definition: tool.h:123
CSG_Tool_Grid::Get_XMax
double Get_XMax(void) const
Definition: tool.h:405
TLB_INFO_Library
@ TLB_INFO_Library
Definition: tool.h:623
CSG_Tool::History_Supplement
CSG_MetaData History_Supplement
Definition: tool.h:253
CSG_Tool_Interactive_Base::On_Execute_Keyboard
virtual bool On_Execute_Keyboard(int Character)
Definition: tool_interactive_base.cpp:166
CSG_Tool_Interactive_Base::Get_Position_Last
const CSG_Point & Get_Position_Last(void) const
Definition: tool.h:522
CSG_Tool::Get_Parameters
CSG_Parameters * Get_Parameters(int i)
Definition: tool.h:180
CSG_Tool_Interactive_Base::is_Shift
bool is_Shift(void) const
Definition: tool.h:526
CSG_Tool::Get_Summary
CSG_String Get_Summary(bool bParameters=true, const CSG_String &Menu="", const CSG_String &Description="", int Format=SG_SUMMARY_FMT_HTML)
Definition: tool_summary.cpp:258
CSG_Tool::On_After_Execution
virtual bool On_After_Execution(void)
Definition: tool.h:240
CSG_Tool_Interactive_Base::On_Execute_Finish
virtual bool On_Execute_Finish(void)
Definition: tool_interactive_base.cpp:201
CSG_Tool::Get_Parameter_Changed
TSG_PFNC_Parameter_Changed Get_Parameter_Changed(void)
Definition: tool.h:271
TLB_INFO_Version
@ TLB_INFO_Version
Definition: tool.h:618
CSG_Tool_Grid::Get_NY
int Get_NY(void) const
Definition: tool.h:401
TLB_INFO_SAGA_Version
@ TLB_INFO_SAGA_Version
Definition: tool.h:624
CSG_Tool_Interactive_Base::Get_yPosition
double Get_yPosition(void) const
Definition: tool.h:520
CSG_Tool_Interactive_Base::~CSG_Tool_Interactive_Base
virtual ~CSG_Tool_Interactive_Base(void)
Definition: tool_interactive_base.cpp:93
CSG_Grid_System
Definition: grid.h:200
CSG_Tool_Interactive::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:565
CSG_Tool_Grid::Get_Length
double Get_Length(int i) const
Definition: tool.h:410
CSG_Tool_Interactive_Base::is_Ctrl
bool is_Ctrl(void) const
Definition: tool.h:528
CSG_Tool_Grid::Get_yTo
static int Get_yTo(int i, int y=0)
Definition: tool.h:416
CSG_Tool::Get_Parameter
CSG_Parameter * Get_Parameter(const char *ID) const
Definition: tool.h:184
TOOL_INTERACTIVE_DRAG_NONE
@ TOOL_INTERACTIVE_DRAG_NONE
Definition: tool.h:472
SG_UI_Process_Get_Okay
bool SG_UI_Process_Get_Okay(bool bBlink)
Definition: api_callback.cpp:201
CSG_Tool::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:229
TLB_INFO_Category
@ TLB_INFO_Category
Definition: tool.h:620
CSG_Tool_Interactive_Base::Execute_Position
bool Execute_Position(CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys)
Definition: tool_interactive_base.cpp:108
CSG_Tool::is_Executing
bool is_Executing(void) const
Definition: tool.h:235
TOOL_SCRIPT_CMD_SHELL
@ TOOL_SCRIPT_CMD_SHELL
Definition: tool.h:121
CSG_Tool_Grid::Get_YMin
double Get_YMin(void) const
Definition: tool.h:404
TOOL_INTERACTIVE_KEY_CTRL
#define TOOL_INTERACTIVE_KEY_CTRL
Definition: tool.h:485
CSG_Tool
Definition: tool.h:149
CSG_Grid_System::Get_yTo
static int Get_yTo(int Direction, int y=0)
Definition: grid.h:324
TOOL_ERROR_Unknown
@ TOOL_ERROR_Unknown
Definition: tool.h:113
CSG_Tool_Interactive_Base::Get_Projection
const CSG_Projection & Get_Projection(void) const
Definition: tool.h:512
CSG_Tool::~CSG_Tool
virtual ~CSG_Tool(void)
Definition: tool.cpp:86
TOOL_INTERACTIVE_RUP
@ TOOL_INTERACTIVE_RUP
Definition: tool.h:460
SG_SUMMARY_FMT_HTML
@ SG_SUMMARY_FMT_HTML
Definition: tool.h:94
CSG_Tool::Get_Name
const CSG_String & Get_Name(void) const
Definition: tool.cpp:145
TOOL_SCRIPT_PYTHON_WRAP_NAME_CALL
@ TOOL_SCRIPT_PYTHON_WRAP_NAME_CALL
Definition: tool.h:126
CSG_Tool_Grid
Definition: tool.h:381
TLB_INFO_User
@ TLB_INFO_User
Definition: tool.h:621
TSG_Tool_Type
TSG_Tool_Type
Definition: tool.h:101
CSG_Tool::do_Sync_Projections
virtual bool do_Sync_Projections(void) const
Definition: tool.h:227
SG_SUMMARY_FMT_XML
@ SG_SUMMARY_FMT_XML
Definition: tool.h:95
TLB_INFO_Name
@ TLB_INFO_Name
Definition: tool.h:615
TOOL_INTERACTIVE_MOVE
@ TOOL_INTERACTIVE_MOVE
Definition: tool.h:462
CSG_Tool::Get_References
const CSG_Strings & Get_References(void) const
Definition: tool.cpp:194
TOOL_SCRIPT_PYTHON_WRAP_ID_CALL
@ TOOL_SCRIPT_PYTHON_WRAP_ID_CALL
Definition: tool.h:128
CSG_Tool_Interactive_Base::Get_xPosition
double Get_xPosition(void) const
Definition: tool.h:519
CSG_Tool_Interactive_Base::Execute_Keyboard
bool Execute_Keyboard(int Character, int Keys)
Definition: tool_interactive_base.cpp:141
CSG_Data_Manager::Get_Grid_System
CSG_Grid_Collection * Get_Grid_System(size_t i) const
Definition: data_manager.h:175
TSG_Tool_Interactive_Mode
TSG_Tool_Interactive_Mode
Definition: tool.h:451
TSG_Tool_Interactive_DragMode
TSG_Tool_Interactive_DragMode
Definition: tool.h:471
TOOL_INTERACTIVE_RDOWN
@ TOOL_INTERACTIVE_RDOWN
Definition: tool.h:459
CSG_Tool_Grid::Get_Cellarea
double Get_Cellarea(void) const
Definition: tool.h:408
CSG_Tool::Get_Version
const CSG_String & Get_Version(void) const
Definition: tool.cpp:167
CSG_Tool_Grid::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:386
TLB_INFO_Count
@ TLB_INFO_Count
Definition: tool.h:625
CSG_Tool_Interactive_Base::CSG_Tool_Interactive
friend class CSG_Tool_Interactive
Definition: tool.h:494
CSG_Tool::Set_Parameter
bool Set_Parameter(const CSG_String &ID, CSG_Parameter *pValue)
Definition: tool.cpp:1144
SG_UI_DATAOBJECT_UPDATE
@ SG_UI_DATAOBJECT_UPDATE
Definition: api_core.h:1509
TLB_INFO_Description
@ TLB_INFO_Description
Definition: tool.h:616
TSG_PFNC_TLB_Get_Info
CSG_String(* TSG_PFNC_TLB_Get_Info)(int i)
Definition: tool.h:631
CSG_Tool::Get_Parameter
CSG_Parameter * Get_Parameter(const wchar_t *ID) const
Definition: tool.h:185
CSG_Tool_Interactive_Base::Execute_Finish
bool Execute_Finish(void)
Definition: tool_interactive_base.cpp:172
CSG_Data_Object
Definition: dataobject.h:180
CSG_Point
Definition: geo_tools.h:135
CSG_Parameter
Definition: parameters.h:207
CSG_Tool_Interactive_Base::Set_Drag_Mode
void Set_Drag_Mode(int Drag_Mode)
Definition: tool_interactive_base.cpp:212
SG_SUMMARY_FMT_FLAT
@ SG_SUMMARY_FMT_FLAT
Definition: tool.h:93
CSG_Tool_Interactive_Base::Set_Projection
bool Set_Projection(const CSG_Projection &Projection)
Definition: tool_interactive_base.cpp:102
PARAMETER_TYPE_Undefined
@ PARAMETER_TYPE_Undefined
Definition: parameters.h:165
TSG_Tool_Error
TSG_Tool_Error
Definition: tool.h:112
TOOL_INTERACTIVE_LDOWN
@ TOOL_INTERACTIVE_LDOWN
Definition: tool.h:453
TLB_INFO_File
@ TLB_INFO_File
Definition: tool.h:622
SG_COLORS_DEFAULT
@ SG_COLORS_DEFAULT
Definition: api_core.h:1285
CSG_Tool_Grid_Interactive::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:591
CSG_Tool::Get_Parameters
CSG_Parameters * Get_Parameters(void)
Definition: tool.h:179
CSG_Tool_Grid::Lock_Set
void Lock_Set(int x, int y, char Value=1)
Definition: tool.h:427
CSG_Tool_Grid::Get_YMax
double Get_YMax(void) const
Definition: tool.h:406
TOOL_INTERACTIVE_MDCLICK
@ TOOL_INTERACTIVE_MDCLICK
Definition: tool.h:458
CSG_Tool::Get_MenuPath
virtual CSG_String Get_MenuPath(void)
Definition: tool.h:175
sLong
signed long long sLong
Definition: api_core.h:158
CSG_Tool::Get_Library
const CSG_String & Get_Library(void) const
Definition: tool.cpp:128
CSG_Tool_Interactive_Base::Get_yPosition_Last
double Get_yPosition_Last(void) const
Definition: tool.h:524
CSG_Tool::Destroy
virtual void Destroy(void)
Definition: tool.cpp:115
CSG_Tool::Set_Callback
void Set_Callback(bool bActive=true)
Definition: tool.cpp:538
TSG_PFNC_TLB_Finalize
bool(* TSG_PFNC_TLB_Finalize)(void)
Definition: tool.h:668
CSG_Tool::is_Grid
virtual bool is_Grid(void) const
Definition: tool.h:232
TOOL_SCRIPT_CMD_BATCH
@ TOOL_SCRIPT_CMD_BATCH
Definition: tool.h:122
CSG_Tool::Get_Execution_Info
const SG_Char * Get_Execution_Info(void) const
Definition: tool.h:244
TOOL_SCRIPT_PYTHON
@ TOOL_SCRIPT_PYTHON
Definition: tool.h:124
TOOL_TYPE_Grid_Interactive
@ TOOL_TYPE_Grid_Interactive
Definition: tool.h:105
CSG_Tool_Grid_Interactive::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:589
CSG_Tool::Get_ID
const CSG_String & Get_ID(void) const
Definition: tool.h:163
SAGA_API_DLL_EXPORT
#define SAGA_API_DLL_EXPORT
Definition: api_core.h:94
CSG_Tool::is_Progress
bool is_Progress(void) const
Definition: tool.h:234
CSG_Tool_Grid_Interactive::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:593
CSG_Tool_Grid::is_Grid
virtual bool is_Grid(void) const
Definition: tool.h:391
CSG_Tool_Interactive_Base::Get_Drag_Mode
int Get_Drag_Mode(void) const
Definition: tool.h:507
CSG_Strings
Definition: api_core.h:693
CSG_Tool::Update_Parameter_States
bool Update_Parameter_States(void)
Definition: tool.cpp:1285
CSG_Tool::On_Execute
virtual bool On_Execute(void)=0
TOOL_ERROR_Calculation
@ TOOL_ERROR_Calculation
Definition: tool.h:114
CSG_Tool_Interactive_Base::Get_Position
const CSG_Point & Get_Position(void) const
Definition: tool.h:518
CSG_Tool_Grid::Get_xTo
static int Get_xTo(int i, int x=0)
Definition: tool.h:415
CSG_Tool::Get_File_Name
const CSG_String & Get_File_Name(void) const
Definition: tool.cpp:134
TOOL_INTERACTIVE_KEY_ALT
#define TOOL_INTERACTIVE_KEY_ALT
Definition: tool.h:484
parameters.h
CSG_Grid_System::Get_yFrom
static int Get_yFrom(int Direction, int y=0)
Definition: grid.h:339
TOOL_INTERACTIVE_UNDEFINED
@ TOOL_INTERACTIVE_UNDEFINED
Definition: tool.h:452
CSG_Tool_Chain
Definition: tool_chain.h:78
CSG_Projection
Definition: geo_tools.h:833
CSG_Tool_Grid::is_Locked
bool is_Locked(int x, int y)
Definition: tool.h:424
TLB_INFO_Author
@ TLB_INFO_Author
Definition: tool.h:617
CSG_Tool::Reset_Grid_System
bool Reset_Grid_System(void)
Definition: tool.cpp:1247
CSG_Tool_Grid::is_InGrid
bool is_InGrid(int x, int y, int Rand) const
Definition: tool.h:413
TOOL_INTERACTIVE_MOVE_LDOWN
@ TOOL_INTERACTIVE_MOVE_LDOWN
Definition: tool.h:463
TOOL_TYPE_Interactive
@ TOOL_TYPE_Interactive
Definition: tool.h:103
CSG_Tool_Interactive_Base::CSG_Tool_Grid_Interactive
friend class CSG_Tool_Grid_Interactive
Definition: tool.h:495
CSG_Tool_Chain::Get_MenuPath
virtual CSG_String Get_MenuPath(void)
Definition: tool_chain.h:99
TOOL_SCRIPT_PYTHON_WRAP_NAME
@ TOOL_SCRIPT_PYTHON_WRAP_NAME
Definition: tool.h:125
SG_Char
#define SG_Char
Definition: api_core.h:530
TOOL_INTERACTIVE_MUP
@ TOOL_INTERACTIVE_MUP
Definition: tool.h:457
CSG_Array
Definition: api_core.h:308
TSG_PFNC_TLB_Initialize
bool(* TSG_PFNC_TLB_Initialize)(const SG_Char *)
Definition: tool.h:665
CSG_String
Definition: api_core.h:557
CSG_Array_Pointer
Definition: api_core.h:368
CSG_Tool::Get_Author
const CSG_String & Get_Author(void) const
Definition: tool.cpp:156
CSG_Tool::Set_Manager
bool Set_Manager(class CSG_Data_Manager *pManager)
Definition: tool.cpp:549
CSG_Data_Manager
Definition: data_manager.h:164
CSG_MetaData
Definition: metadata.h:88
TOOL_INTERACTIVE_LUP
@ TOOL_INTERACTIVE_LUP
Definition: tool.h:454
TOOL_INTERACTIVE_MOVE_MDOWN
@ TOOL_INTERACTIVE_MOVE_MDOWN
Definition: tool.h:464
TOOL_INTERACTIVE_RDCLICK
@ TOOL_INTERACTIVE_RDCLICK
Definition: tool.h:461
CSG_Tool::Get_Description
const CSG_String & Get_Description(void) const
Definition: tool.cpp:178
CSG_Tool_Grid::Get_NX
int Get_NX(void) const
Definition: tool.h:400
CSG_Tool_Interactive_Base
Definition: tool.h:493
TOOL_TYPE_Base
@ TOOL_TYPE_Base
Definition: tool.h:102
CSG_Tool::Get_Parameter
CSG_Parameter * Get_Parameter(const CSG_String &ID) const
Definition: tool.h:183
CSG_Tool_Grid::Get_XMin
double Get_XMin(void) const
Definition: tool.h:403
CSG_Tool::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:233
TOOL_SCRIPT_PYTHON_WRAP_ID
@ TOOL_SCRIPT_PYTHON_WRAP_ID
Definition: tool.h:127
CSG_Grid_System::Get_xFrom
static int Get_xFrom(int Direction, int x=0)
Definition: grid.h:338
CSG_Tool_Interactive::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:567
TOOL_INTERACTIVE_DRAG_CIRCLE
@ TOOL_INTERACTIVE_DRAG_CIRCLE
Definition: tool.h:475
CSG_Tool_Grid_Interactive
Definition: tool.h:584
CSG_Grid
Definition: grid.h:473
CSG_Tool_Grid::Get_System
const CSG_Grid_System & Get_System(void) const
Definition: tool.h:388
CSG_Tool::CSG_Tool
CSG_Tool(void)
Definition: tool.cpp:66
TSG_PFNC_Parameter_Changed
int(* TSG_PFNC_Parameter_Changed)(CSG_Parameter *pParameter, int Flags)
Definition: parameters.h:1646
TSG_PFNC_TLB_Create_Tool
CSG_Tool *(* TSG_PFNC_TLB_Create_Tool)(int i)
Definition: tool.h:630
TOOL_INTERACTIVE_DRAG_BOX
@ TOOL_INTERACTIVE_DRAG_BOX
Definition: tool.h:474
CSG_Tool_Grid::Get_NCells
sLong Get_NCells(void) const
Definition: tool.h:402
TSG_Tool_Script_Type
TSG_Tool_Script_Type
Definition: tool.h:120
CSG_Tool_Grid::Get_Cellsize
double Get_Cellsize(void) const
Definition: tool.h:407
CSG_Tool::On_Before_Execution
virtual bool On_Before_Execution(void)
Definition: tool.h:239
CSG_Tool_Interactive_Base::is_Alt
bool is_Alt(void) const
Definition: tool.h:527
CSG_Tool_Interactive::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:563
CSG_Parameters
Definition: parameters.h:1650
TSG_TLB_Info
TSG_TLB_Info
Definition: tool.h:614
TOOL_INTERACTIVE_MOVE_RDOWN
@ TOOL_INTERACTIVE_MOVE_RDOWN
Definition: tool.h:465
TSG_Summary_Format
TSG_Summary_Format
Definition: tool.h:92
CSG_Tool::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:161
CSG_Tool::Get_Icon
const SG_Char * Get_Icon(void)
Definition: tool.h:172
TLB_Interface
CSG_Tool_Library_Interface TLB_Interface
TOOL_INTERACTIVE_KEY_SHIFT
#define TOOL_INTERACTIVE_KEY_SHIFT
Definition: tool.h:483
CSG_Tool::Get_Parameters_Count
int Get_Parameters_Count(void)
Definition: tool.h:178
CSG_Colors
Definition: api_core.h:1329
TLB_INFO_Menu_Path
@ TLB_INFO_Menu_Path
Definition: tool.h:619
TOOL_TYPE_Grid
@ TOOL_TYPE_Grid
Definition: tool.h:104
TOOL_INTERACTIVE_MDOWN
@ TOOL_INTERACTIVE_MDOWN
Definition: tool.h:456
CSG_Tool_Grid::Get_xFrom
static int Get_xFrom(int i, int x=0)
Definition: tool.h:417
CSG_Tool_Interactive_Base::On_Execute_Position
virtual bool On_Execute_Position(CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode)
Definition: tool_interactive_base.cpp:135