SAGA API  v9.9
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 
120 // //
121 // CSG_Tool //
122 // //
124 
125 //---------------------------------------------------------
133 //---------------------------------------------------------
135 {
139  friend class CSG_Tool_Chain;
140 
141 public:
142 
143  CSG_Tool(void);
144  virtual ~CSG_Tool(void);
145 
146  virtual void Destroy (void);
147 
148  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Base ); }
149 
150  const CSG_String & Get_ID (void) const { return( m_ID ); }
151 
152  const CSG_String & Get_Library (void) const;
153  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.
154  const CSG_String & Get_Name (void) const;
155  const CSG_String & Get_Author (void) const;
156  const CSG_String & Get_Version (void) const;
157  const CSG_String & Get_Description (void) const;
158  const CSG_Strings & Get_References (void) const;
159  const SG_Char * Get_Icon (void) { return( NULL ); }
160  CSG_String Get_Summary (bool bParameters = true, const CSG_String &Menu = "", const CSG_String &Description = "", int Format = SG_SUMMARY_FMT_HTML);
161 
162  virtual CSG_String Get_MenuPath (void) { return( SG_T("") ); }
163  virtual CSG_String Get_MenuPath (bool bSolved);
164 
165  CSG_Parameters * Get_Parameters (void) { return( &Parameters ); }
166 
167  int Get_Parameters_Count (void) const { return( (int)m_pParameters.Get_Size() ); }
168  CSG_Parameters * Get_Parameters (int i) const { return( i >= 0 && i < Get_Parameters_Count() ? (CSG_Parameters *)m_pParameters[i] : NULL ); }
169  CSG_Parameters * Get_Parameters (int i) { return( i >= 0 && i < Get_Parameters_Count() ? (CSG_Parameters *)m_pParameters[i] : NULL ); }
170  CSG_Parameters * Get_Parameters (const CSG_String &Identifier) const;
171 
172  CSG_Parameter * Get_Parameter (const CSG_String &ID) const { return( Parameters(ID) ); }
173  CSG_Parameter * Get_Parameter (const char *ID) const { return( Parameters(ID) ); }
174  CSG_Parameter * Get_Parameter (const wchar_t *ID) const { return( Parameters(ID) ); }
175  bool Set_Parameter (const CSG_String &ID, CSG_Parameter *pValue);
176  bool Set_Parameter (const char *ID, CSG_Parameter *pValue);
177  bool Set_Parameter (const wchar_t *ID, CSG_Parameter *pValue);
178  bool Set_Parameter (const CSG_String &ID, int Value, int Type = PARAMETER_TYPE_Undefined);
179  bool Set_Parameter (const char *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
180  bool Set_Parameter (const wchar_t *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
181  bool Set_Parameter (const CSG_String &ID, double Value, int Type = PARAMETER_TYPE_Undefined);
182  bool Set_Parameter (const char *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
183  bool Set_Parameter (const wchar_t *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
184  bool Set_Parameter (const CSG_String &ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
185  bool Set_Parameter (const char *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
186  bool Set_Parameter (const wchar_t *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
187  bool Set_Parameter (const CSG_String &ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
188  bool Set_Parameter (const char *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
189  bool Set_Parameter (const wchar_t *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
190  bool Set_Parameter (const CSG_String &ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
191  bool Set_Parameter (const char *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
192  bool Set_Parameter (const wchar_t *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
193  bool Set_Parameter (const CSG_String &ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
194  bool Set_Parameter (const char *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
195  bool Set_Parameter (const wchar_t *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
196 
197  bool Reset (bool bManager = true);
198  bool Reset_Manager (void);
199  bool Reset_Grid_System (void);
200 
201  bool Update_Parameter_States (void);
202 
203  void Set_Callback (bool bActive = true);
204 
205  bool Set_Manager (class CSG_Data_Manager *pManager);
206  class CSG_Data_Manager * Get_Manager (void) const;
207  class CSG_Data_Manager * Create_Manager (void);
208  bool Delete_Manager (bool bDetachData = false, bool bReset = true);
209 
210  bool Set_Grid_System (const CSG_Grid_System &System);
211  CSG_Grid_System * Get_Grid_System (void) const;
212 
213  bool Settings_Push (class CSG_Data_Manager *pManager = NULL);
214  bool Settings_Pop (void);
215 
216  virtual bool do_Sync_Projections (void) const { return( true ); }
217 
218  virtual bool needs_GUI (void) const { return( false ); }
219  bool has_GUI (void) const;
220  bool has_CMD (void) const;
221 
222  virtual bool is_Grid (void) const { return( false ); }
223  virtual bool is_Interactive (void) const { return( false ); }
224  bool is_Progress (void) const { return( SG_UI_Process_Get_Okay(false) ); }
225  bool is_Executing (void) const { return( m_bExecutes ); }
226 
227  void Set_Show_Progress (bool bOn = true);
228 
229  virtual bool On_Before_Execution (void) { return( true ); }
230  virtual bool On_After_Execution (void) { return( true ); }
231 
232  bool Execute (bool bAddHistory = false);
233 
234  const SG_Char * Get_Execution_Info (void) const { return( m_Execution_Info ); }
235 
236  CSG_MetaData Get_History (int Depth = -1);
237  bool Set_History (CSG_Data_Object *pDataObject, int Depth = -1);
238 
239 
240  //-----------------------------------------------------
241  enum class Script_Format
242  {
243  CMD_Shell, CMD_Batch, CMD_Usage,
244  Toolchain,
245  Python,
246  Python_Wrapper_Func_Name, Python_Wrapper_Func_ID,
247  Python_Wrapper_Call_Name, Python_Wrapper_Call_ID
248  };
249 
250  CSG_String Get_Script (Script_Format Format, bool bHeader = true, int Arguments = 0, bool bWrapArgs = true);
251 
252 
253 protected:
254 
256 
258 
259 
260  //-----------------------------------------------------
261  void Set_Name (const CSG_String &String);
262  void Set_Author (const CSG_String &String);
263  void Set_Version (const CSG_String &String);
264  void Set_Description (const CSG_String &String);
265 
266  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);
267  void Add_Reference (const CSG_String &Link, const SG_Char *Link_Text = NULL);
268 
269  //-----------------------------------------------------
270  virtual bool On_Execute (void) = 0;
271 
272  virtual int On_Parameter_Changed (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
273  virtual int On_Parameters_Enable (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
274 
275  TSG_PFNC_Parameter_Changed Get_Parameter_Changed (void) { return( _On_Parameter_Changed ); }
276 
277  //-----------------------------------------------------
278  CSG_Parameters * Add_Parameters (const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description);
279  bool Dlg_Parameters (const CSG_String &Identifier); // deprecated
280 
281  bool Dlg_Parameters (CSG_Parameters *pParameters, const CSG_String &Caption = "");
282  bool Dlg_Parameters (CSG_Parameters &Parameters, const CSG_String &Caption = "");
283 
284  //-----------------------------------------------------
285  virtual bool Set_Progress (int Position, int Range ) const;
286  virtual bool Set_Progress (sLong Position, sLong Range ) const;
287  virtual bool Set_Progress (double Position, double Range = 1.) const;
288 
289  bool Stop_Execution (bool bDialog = true);
290 
291  void Message_Dlg (const CSG_String &Text, const SG_Char *Caption = NULL);
292  bool Message_Dlg_Confirm (const CSG_String &Text, const SG_Char *Caption = NULL);
293 
294  void Message_Add (const CSG_String &Text, bool bNewLine = true);
295  void Message_Fmt (const char *Format, ...);
296  void Message_Fmt (const wchar_t *Format, ...);
297 
298  bool Error_Set (TSG_Tool_Error Error_ID = TOOL_ERROR_Unknown);
299  bool Error_Set (const CSG_String &Text);
300  bool Error_Fmt (const char *Format, ...);
301  bool Error_Fmt (const wchar_t *Format, ...);
302 
303  //-----------------------------------------------------
304  bool DataObject_Add (CSG_Data_Object *pDataObject, bool bUpdate = false);
305 
306  bool DataObject_Update_All (void);
307 
308  bool DataObject_Set_History (CSG_Parameter *pParameter, CSG_MetaData *pHistory = NULL);
309 
310  bool Get_Projection (CSG_Projection &Projection) const;
311 
312 
313 protected: // static functions...
314 
315  static int _On_Parameter_Changed (CSG_Parameter *pParameter, int Flags);
316 
317  static bool Process_Get_Okay (bool bBlink = false);
318  static void Process_Set_Text (const CSG_String &Text);
319  static void Process_Set_Text (const char *Format, ...);
320  static void Process_Set_Text (const wchar_t *Format, ...);
321 
322  static bool DataObject_Update (CSG_Data_Object *pDataObject , int Show = SG_UI_DATAOBJECT_UPDATE);
323  static bool DataObject_Update (CSG_Data_Object *pDataObject, double Minimum, double Maximum, int Show = SG_UI_DATAOBJECT_UPDATE);
324 
325  static bool DataObject_Get_Colors (CSG_Data_Object *pDataObject, CSG_Colors &Colors);
326  static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_Colors &Colors);
327  static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, int nColors, int Colors = SG_COLORS_DEFAULT, bool bRevert = false);
328 
329  static bool DataObject_Get_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
330  static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
331  static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy);
332 
333  static CSG_Parameter * DataObject_Get_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID);
334  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Parameter *pParameter);
335  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy, const CSG_String &ID);
336  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, int Value);
337  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double Value);
338  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, void *Value);
339  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, const SG_Char *Value);
340  static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double loVal, double hiVal); // Range Parameter
341 
342  static bool DataObject_Set_Stretch_Linear (CSG_Data_Object *pDataObject, int Field = -1, double Minimum = 5., double Maximum = 95. , int Interval_Mode = 0, double Interval_Log = 1., int Colors = -1, bool bUpdateNow = false);
343  static bool DataObject_Set_Stretch_StdDev (CSG_Data_Object *pDataObject, int Field = -1, double StdDev = 2., bool bKeepInRange = false, int Interval_Mode = 0, double Interval_Log = 1., int Colors = -1, bool bUpdateNow = false);
344  static bool DataObject_Set_Stretch_Percentile (CSG_Data_Object *pDataObject, int Field = -1, double Minimum = 2., double Maximum = 98. , int Interval_Mode = 0, double Interval_Log = 1., int Colors = -1, bool bUpdateNow = false);
345  static bool DataObject_Set_Stretch (CSG_Data_Object *pDataObject, int Field , double Minimum , double Maximum , int Interval_Mode = 0, double Interval_Log = 1., int Colors = -1, bool bUpdateNow = false);
346 
347  static bool DataObject_Classify_Unique (CSG_Data_Object *pDataObject, int Field = -1, int Classes_Max = 1024 , int Colors = -1);
348  static bool DataObject_Classify_Equal (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
349  static bool DataObject_Classify_Defined (CSG_Data_Object *pDataObject, int Field , double Interval, bool bOffset = false, double Offset = 0., int Colors = -1);
350  static bool DataObject_Classify_Quantile (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bHistogram = true , int Colors = -1);
351  static bool DataObject_Classify_Geometric (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bIncreasing = true , int Colors = -1);
352  static bool DataObject_Classify_Natural (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
353  static bool DataObject_Classify_StdDev (CSG_Data_Object *pDataObject, int Field = -1, double StdDev = 0.5, double StdDev_Max = 4.5 , int Colors = -1);
354 
355 
356 private:
357 
358  bool m_bExecutes, m_bError_Ignore, m_bShow_Progress, m_bGUI, m_bCMD;
359 
360  CSG_Array_Pointer m_pParameters;
361 
362  CSG_String m_ID, m_Library, m_Library_Menu, m_File_Name, m_Author, m_Version, m_Execution_Info;
363 
364 
365  bool _Synchronize_DataObjects (void);
366 
367  CSG_String _Get_Script_CMD (bool bHeader , bool bAllArguments, bool bWrapArgs, bool bBatch);
368  void _Get_Script_CMD (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, bool bWrapArgs, bool bBatch);
369 
370  CSG_String _Get_Script_CMD_Usage (void);
371  void _Get_Script_CMD_Usage (CSG_Parameters *pParameters, class wxCmdLineParser &Parser);
372 
373  CSG_String _Get_Script_Python (bool bHeader, bool bAllArguments);
374  void _Get_Script_Python (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, const CSG_String &Prefix = "");
375 
376  CSG_String _Get_Script_Python_Wrap (bool bHeader, bool bName, bool bCall, int AllArguments, bool bWrapArgs);
377  bool _Get_Script_Python_Wrap (const CSG_Parameter &Parameter, int Constraint, CSG_String &Arguments, CSG_String &Description, CSG_String &Code, bool bCall, bool bOnlyNonDefaults, bool bWrapArgs, const CSG_String &Prefix = "");
378 
379  void _Set_Output_History (void);
380 
381  void _Update_Parameter_States (CSG_Parameters *pParameters);
382 
383 };
384 
385 
387 // //
388 // CSG_Tool_Grid //
389 // //
391 
392 //---------------------------------------------------------
396 //---------------------------------------------------------
398 {
399 public:
400  CSG_Tool_Grid(void);
401  virtual ~CSG_Tool_Grid(void);
402 
403  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid ); }
404 
405  const CSG_Grid_System & Get_System (void) const { return( *Parameters.Get_Grid_System() ); }
406  bool Set_System (const CSG_Grid_System &System);
407 
408  virtual bool is_Grid (void) const { return( true ); }
409 
410 
411 protected:
412 
413  virtual bool Set_Progress_Cells (sLong Cell) const;
414  virtual bool Set_Progress_Rows (int Row) const;
415 
416  //-----------------------------------------------------
417  int Get_NX (void) const { return( Get_System().Get_NX () ); }
418  int Get_NY (void) const { return( Get_System().Get_NY () ); }
419  sLong Get_NCells (void) const { return( Get_System().Get_NCells () ); }
420  double Get_XMin (void) const { return( Get_System().Get_XMin () ); }
421  double Get_YMin (void) const { return( Get_System().Get_YMin () ); }
422  double Get_XMax (void) const { return( Get_System().Get_XMax () ); }
423  double Get_YMax (void) const { return( Get_System().Get_YMax () ); }
424  double Get_Cellsize (void) const { return( Get_System().Get_Cellsize() ); }
425  double Get_Cellarea (void) const { return( Get_System().Get_Cellarea() ); }
426 
427  double Get_Length (int i) const { return( Get_System().Get_Length (i) ); }
428  double Get_UnitLength (int i) const { return( Get_System().Get_UnitLength(i) ); }
429  bool is_InGrid (int x, int y) const { return( Get_System().is_InGrid(x, y) ); }
430  bool is_InGrid (int x, int y, int Rand) const { return( Get_System().is_InGrid(x, y, Rand) ); }
431 
432  static int Get_xTo (int i, int x = 0) { return( CSG_Grid_System::Get_xTo (i, x) ); }
433  static int Get_yTo (int i, int y = 0) { return( CSG_Grid_System::Get_yTo (i, y) ); }
434  static int Get_xFrom (int i, int x = 0) { return( CSG_Grid_System::Get_xFrom(i, x) ); }
435  static int Get_yFrom (int i, int y = 0) { return( CSG_Grid_System::Get_yFrom(i, y) ); }
436 
437  //-----------------------------------------------------
438  void Lock_Create (void);
439  void Lock_Destroy (void);
440 
441  bool is_Locked (int x, int y) { return( Lock_Get(x, y) != 0 ); }
442  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 ); }
443 
444  void Lock_Set (int x, int y, char Value = 1)
445  {
446  if( m_pLock && x >= 0 && x < Get_NX() && y >= 0 && y < Get_NY() )
447  {
448  m_pLock->Set_Value(x, y, Value);
449  }
450  }
451 
452 
453 private:
454 
455  CSG_Grid *m_pLock;
456 
457 };
458 
459 
461 // //
462 // CSG_Tool_Interactive_Base //
463 // //
465 
466 //---------------------------------------------------------
467 typedef enum
468 {
483 }
485 
486 //---------------------------------------------------------
487 typedef enum
488 {
493 }
495 
496 //---------------------------------------------------------
497 #define TOOL_INTERACTIVE_KEY_LEFT 0x01
498 #define TOOL_INTERACTIVE_KEY_MIDDLE 0x02
499 #define TOOL_INTERACTIVE_KEY_RIGHT 0x04
500 #define TOOL_INTERACTIVE_KEY_SHIFT 0x08
501 #define TOOL_INTERACTIVE_KEY_ALT 0x10
502 #define TOOL_INTERACTIVE_KEY_CTRL 0x20
503 
504 //---------------------------------------------------------
508 //---------------------------------------------------------
510 {
511  friend class CSG_Tool_Interactive;
513 
514 public:
516  virtual ~CSG_Tool_Interactive_Base(void);
517 
518  bool Set_Projection (const CSG_Projection &Projection);
519 
520  bool Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys);
521  bool Execute_Keyboard (int Character, int Keys);
522  bool Execute_Finish (void);
523 
524  int Get_Drag_Mode (void) const { return( m_Drag_Mode ); }
525 
526 
527 protected:
528 
529  const CSG_Projection & Get_Projection (void) const { return( m_Projection ); }
530 
531  virtual bool On_Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode);
532  virtual bool On_Execute_Keyboard (int Character);
533  virtual bool On_Execute_Finish (void);
534 
535  const CSG_Point & Get_Position (void) const { return( m_Point ); }
536  double Get_xPosition (void) const { return( m_Point .x ); }
537  double Get_yPosition (void) const { return( m_Point .y ); }
538 
539  const CSG_Point & Get_Position_Last (void) const { return( m_Point_Last ); }
540  double Get_xPosition_Last (void) const { return( m_Point_Last.x ); }
541  double Get_yPosition_Last (void) const { return( m_Point_Last.y ); }
542 
543  bool is_Shift (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_SHIFT) != 0 ); }
544  bool is_Alt (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_ALT ) != 0 ); }
545  bool is_Ctrl (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_CTRL ) != 0 ); }
546 
547  void Set_Drag_Mode (int Drag_Mode);
548 
549 
550 private:
551 
552  int m_Keys, m_Drag_Mode;
553 
554  CSG_Point m_Point, m_Point_Last;
555 
556  CSG_Projection m_Projection;
557 
558  CSG_Tool *m_pTool;
559 
560 };
561 
562 
564 // //
565 // CSG_Tool_Interactive //
566 // //
568 
569 //---------------------------------------------------------
573 //---------------------------------------------------------
575 {
576 public:
577  CSG_Tool_Interactive(void);
578  virtual ~CSG_Tool_Interactive(void);
579 
580  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Interactive ); }
581 
582  virtual bool needs_GUI (void) const { return( true ); }
583 
584  virtual bool is_Interactive (void) const { return( true ); }
585 
586 };
587 
588 
590 // //
591 // CSG_Tool_Grid_Interactive //
592 // //
594 
595 //---------------------------------------------------------
599 //---------------------------------------------------------
601 {
602 public:
604  virtual ~CSG_Tool_Grid_Interactive(void);
605 
606  virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid_Interactive ); }
607 
608  virtual bool needs_GUI (void) const { return( true ); }
609 
610  virtual bool is_Interactive (void) const { return( true ); }
611 
612 
613 protected:
614 
615  bool Get_Grid_Pos (int &x, int &y) const;
616 
617  int Get_xGrid (void) const;
618  int Get_yGrid (void) const;
619 
620 };
621 
622 
624 // //
625 // Tool Library Interface Definitions //
626 // //
628 
629 //---------------------------------------------------------
630 typedef enum
631 {
643 }
645 
646 //---------------------------------------------------------
647 typedef CSG_Tool * (* TSG_PFNC_TLB_Create_Tool) (int i);
648 typedef CSG_String (* TSG_PFNC_TLB_Get_Info ) (int i);
649 
650 //---------------------------------------------------------
652 {
653 public:
655  virtual ~CSG_Tool_Library_Interface(void);
656 
657  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);
658  bool Destroy (void);
659 
660  const CSG_String & Get_Info (int ID);
661 
662  int Get_Count (void);
663  CSG_Tool * Get_Tool (int i);
664 
665  CSG_Tool * Create_Tool (int i, bool bWithGUI = false, bool bWithCMD =true);
666  bool Delete_Tool (CSG_Tool *pTool);
667  bool Delete_Tools (void);
668 
669 
670 private:
671 
672  CSG_Strings m_Info;
673 
674  CSG_Array_Pointer m_Tools, m_xTools;
675 
676  TSG_PFNC_TLB_Create_Tool m_Fnc_Create_Tool;
677 
678 };
679 
680 //---------------------------------------------------------
681 #define SYMBOL_TLB_Initialize "TLB_Initialize"
682 typedef bool (* TSG_PFNC_TLB_Initialize) (const SG_Char *);
683 
684 #define SYMBOL_TLB_Finalize "TLB_Finalize"
685 typedef bool (* TSG_PFNC_TLB_Finalize) (void);
686 
687 #define SYMBOL_TLB_Get_Interface "TLB_Get_Interface"
688 typedef CSG_Tool_Library_Interface * (* TSG_PFNC_TLB_Get_Interface) (void);
689 
690 //---------------------------------------------------------
691 #define TLB_INTERFACE_SKIP_TOOL ((CSG_Tool *)0x1)
692 
693 //---------------------------------------------------------
694 #define TLB_INTERFACE_ESTABLISH CSG_Tool_Library_Interface TLB_Interface;\
695 \
696 extern "C" _SAGA_DLL_EXPORT CSG_Tool_Library_Interface * TLB_Get_Interface (void)\
697 {\
698  return( &TLB_Interface );\
699 }\
700 
701 //---------------------------------------------------------
702 #define TLB_INTERFACE_INITIALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Initialize(const SG_Char *TLB_Path)\
703 {\
704  return( TLB_Interface.Create(SAGA_VERSION, TLB_Path, Get_Info, Create_Tool) );\
705 }\
706 
707 //---------------------------------------------------------
708 #define TLB_INTERFACE_FINALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Finalize (void)\
709 {\
710  return( true );\
711 }\
712 
713 //---------------------------------------------------------
714 #define TLB_INTERFACE TLB_INTERFACE_ESTABLISH TLB_INTERFACE_INITIALIZE TLB_INTERFACE_FINALIZE
715 
716 //---------------------------------------------------------
717 #ifndef SWIG
718 
720 
721 #endif // #ifdef SWIG
722 
723 
725 // //
726 // //
727 // //
729 
730 //---------------------------------------------------------
731 #endif // #ifndef HEADER_INCLUDED__SAGA_API__tool_H
TOOL_INTERACTIVE_LDCLICK
@ TOOL_INTERACTIVE_LDCLICK
Definition: tool.h:472
CSG_Tool_Grid::is_InGrid
bool is_InGrid(int x, int y) const
Definition: tool.h:429
CSG_Tool_Interactive
Definition: tool.h:575
CSG_Tool_Library_Interface
Definition: tool.h:652
CSG_Grid_System::Get_xTo
static int Get_xTo(int Direction, int x=0)
Definition: grid.h:338
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:435
CSG_Tool::Reset_Manager
bool Reset_Manager(void)
Definition: tool.cpp:1376
CSG_Tool::Parameters
CSG_Parameters Parameters
Definition: tool.h:255
SG_T
#define SG_T(s)
Definition: api_core.h:537
CSG_Tool_Grid::Lock_Get
char Lock_Get(int x, int y)
Definition: tool.h:442
CSG_Tool::Get_Parameters
CSG_Parameters * Get_Parameters(int i) const
Definition: tool.h:168
CSG_Tool_Interactive_Base::Get_xPosition_Last
double Get_xPosition_Last(void) const
Definition: tool.h:540
CSG_Tool_Grid::Get_UnitLength
double Get_UnitLength(int i) const
Definition: tool.h:428
TOOL_INTERACTIVE_DRAG_LINE
@ TOOL_INTERACTIVE_DRAG_LINE
Definition: tool.h:490
TOOL_TYPE_Chain
@ TOOL_TYPE_Chain
Definition: tool.h:106
CSG_Tool_Grid::Get_XMax
double Get_XMax(void) const
Definition: tool.h:422
TLB_INFO_Library
@ TLB_INFO_Library
Definition: tool.h:640
CSG_Tool::History_Supplement
CSG_MetaData History_Supplement
Definition: tool.h:257
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:539
CSG_Tool::Get_Parameters
CSG_Parameters * Get_Parameters(int i)
Definition: tool.h:169
CSG_Tool_Interactive_Base::is_Shift
bool is_Shift(void) const
Definition: tool.h:543
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:230
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:275
TLB_INFO_Version
@ TLB_INFO_Version
Definition: tool.h:635
CSG_Tool_Grid::Get_NY
int Get_NY(void) const
Definition: tool.h:418
TLB_INFO_SAGA_Version
@ TLB_INFO_SAGA_Version
Definition: tool.h:641
CSG_Tool_Interactive_Base::Get_yPosition
double Get_yPosition(void) const
Definition: tool.h:537
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:220
CSG_Tool_Interactive::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:582
CSG_Tool_Grid::Get_Length
double Get_Length(int i) const
Definition: tool.h:427
CSG_Tool_Interactive_Base::is_Ctrl
bool is_Ctrl(void) const
Definition: tool.h:545
CSG_Tool_Grid::Get_yTo
static int Get_yTo(int i, int y=0)
Definition: tool.h:433
CSG_Tool::Get_Parameter
CSG_Parameter * Get_Parameter(const char *ID) const
Definition: tool.h:173
TOOL_INTERACTIVE_DRAG_NONE
@ TOOL_INTERACTIVE_DRAG_NONE
Definition: tool.h:489
SG_UI_Process_Get_Okay
bool SG_UI_Process_Get_Okay(bool bBlink)
Definition: api_callback.cpp:207
CSG_Tool::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:218
TLB_INFO_Category
@ TLB_INFO_Category
Definition: tool.h:637
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:225
CSG_Tool_Grid::Get_YMin
double Get_YMin(void) const
Definition: tool.h:421
TOOL_INTERACTIVE_KEY_CTRL
#define TOOL_INTERACTIVE_KEY_CTRL
Definition: tool.h:502
CSG_Tool
Definition: tool.h:135
CSG_Grid_System::Get_yTo
static int Get_yTo(int Direction, int y=0)
Definition: grid.h:352
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:529
CSG_Tool::~CSG_Tool
virtual ~CSG_Tool(void)
Definition: tool.cpp:86
TOOL_INTERACTIVE_RUP
@ TOOL_INTERACTIVE_RUP
Definition: tool.h:477
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:132
CSG_Tool_Grid
Definition: tool.h:398
TLB_INFO_User
@ TLB_INFO_User
Definition: tool.h:638
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:216
SG_SUMMARY_FMT_XML
@ SG_SUMMARY_FMT_XML
Definition: tool.h:95
TLB_INFO_Name
@ TLB_INFO_Name
Definition: tool.h:632
TOOL_INTERACTIVE_MOVE
@ TOOL_INTERACTIVE_MOVE
Definition: tool.h:479
CSG_Tool::Get_References
const CSG_Strings & Get_References(void) const
Definition: tool.cpp:181
CSG_Tool_Interactive_Base::Get_xPosition
double Get_xPosition(void) const
Definition: tool.h:536
CSG_Tool_Interactive_Base::Execute_Keyboard
bool Execute_Keyboard(int Character, int Keys)
Definition: tool_interactive_base.cpp:141
TSG_Tool_Interactive_Mode
TSG_Tool_Interactive_Mode
Definition: tool.h:468
TSG_Tool_Interactive_DragMode
TSG_Tool_Interactive_DragMode
Definition: tool.h:488
TOOL_INTERACTIVE_RDOWN
@ TOOL_INTERACTIVE_RDOWN
Definition: tool.h:476
CSG_Tool_Grid::Get_Cellarea
double Get_Cellarea(void) const
Definition: tool.h:425
CSG_Tool::Get_Parameters_Count
int Get_Parameters_Count(void) const
Definition: tool.h:167
CSG_Tool::Script_Format
Script_Format
Definition: tool.h:242
CSG_Tool::Get_Version
const CSG_String & Get_Version(void) const
Definition: tool.cpp:154
CSG_Tool_Grid::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:403
TLB_INFO_Count
@ TLB_INFO_Count
Definition: tool.h:642
CSG_Tool_Interactive_Base::CSG_Tool_Interactive
friend class CSG_Tool_Interactive
Definition: tool.h:511
CSG_Tool::Set_Parameter
bool Set_Parameter(const CSG_String &ID, CSG_Parameter *pValue)
Definition: tool.cpp:1283
SG_UI_DATAOBJECT_UPDATE
@ SG_UI_DATAOBJECT_UPDATE
Definition: api_core.h:1588
TLB_INFO_Description
@ TLB_INFO_Description
Definition: tool.h:633
TSG_PFNC_TLB_Get_Info
CSG_String(* TSG_PFNC_TLB_Get_Info)(int i)
Definition: tool.h:648
CSG_Tool::Get_Parameter
CSG_Parameter * Get_Parameter(const wchar_t *ID) const
Definition: tool.h:174
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:208
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:166
TSG_Tool_Error
TSG_Tool_Error
Definition: tool.h:112
TOOL_INTERACTIVE_LDOWN
@ TOOL_INTERACTIVE_LDOWN
Definition: tool.h:470
TLB_INFO_File
@ TLB_INFO_File
Definition: tool.h:639
SG_COLORS_DEFAULT
@ SG_COLORS_DEFAULT
Definition: api_core.h:1329
CSG_Tool_Grid_Interactive::needs_GUI
virtual bool needs_GUI(void) const
Definition: tool.h:608
CSG_Tool::Get_Parameters
CSG_Parameters * Get_Parameters(void)
Definition: tool.h:165
CSG_Tool_Grid::Lock_Set
void Lock_Set(int x, int y, char Value=1)
Definition: tool.h:444
CSG_Tool_Grid::Get_YMax
double Get_YMax(void) const
Definition: tool.h:423
TOOL_INTERACTIVE_MDCLICK
@ TOOL_INTERACTIVE_MDCLICK
Definition: tool.h:475
CSG_Tool::Get_MenuPath
virtual CSG_String Get_MenuPath(void)
Definition: tool.h:162
sLong
signed long long sLong
Definition: api_core.h:158
CSG_Tool::Get_Library
const CSG_String & Get_Library(void) const
Definition: tool.cpp:115
CSG_Tool_Interactive_Base::Get_yPosition_Last
double Get_yPosition_Last(void) const
Definition: tool.h:541
CSG_Tool::Destroy
virtual void Destroy(void)
Definition: tool.cpp:102
CSG_Tool::Set_Callback
void Set_Callback(bool bActive=true)
Definition: tool.cpp:559
TSG_PFNC_TLB_Finalize
bool(* TSG_PFNC_TLB_Finalize)(void)
Definition: tool.h:685
CSG_Tool::is_Grid
virtual bool is_Grid(void) const
Definition: tool.h:222
CSG_Tool::Get_Execution_Info
const SG_Char * Get_Execution_Info(void) const
Definition: tool.h:234
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:606
CSG_Tool::Get_ID
const CSG_String & Get_ID(void) const
Definition: tool.h:150
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:224
CSG_Tool_Grid_Interactive::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:610
CSG_Tool_Grid::is_Grid
virtual bool is_Grid(void) const
Definition: tool.h:408
CSG_Tool_Interactive_Base::Get_Drag_Mode
int Get_Drag_Mode(void) const
Definition: tool.h:524
CSG_Strings
Definition: api_core.h:701
CSG_Tool::Update_Parameter_States
bool Update_Parameter_States(void)
Definition: tool.cpp:1424
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:535
CSG_Tool_Grid::Get_xTo
static int Get_xTo(int i, int x=0)
Definition: tool.h:432
CSG_Tool::Get_File_Name
const CSG_String & Get_File_Name(void) const
Definition: tool.cpp:121
TOOL_INTERACTIVE_KEY_ALT
#define TOOL_INTERACTIVE_KEY_ALT
Definition: tool.h:501
parameters.h
CSG_Grid_System::Get_yFrom
static int Get_yFrom(int Direction, int y=0)
Definition: grid.h:367
TOOL_INTERACTIVE_UNDEFINED
@ TOOL_INTERACTIVE_UNDEFINED
Definition: tool.h:469
CSG_Tool_Chain
Definition: tool_chain.h:78
CSG_Projection
Definition: geo_tools.h:827
CSG_Tool_Grid::is_Locked
bool is_Locked(int x, int y)
Definition: tool.h:441
TLB_INFO_Author
@ TLB_INFO_Author
Definition: tool.h:634
CSG_Tool::Reset_Grid_System
bool Reset_Grid_System(void)
Definition: tool.cpp:1386
CSG_Tool_Grid::is_InGrid
bool is_InGrid(int x, int y, int Rand) const
Definition: tool.h:430
TOOL_INTERACTIVE_MOVE_LDOWN
@ TOOL_INTERACTIVE_MOVE_LDOWN
Definition: tool.h:480
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:512
CSG_Tool_Chain::Get_MenuPath
virtual CSG_String Get_MenuPath(void)
Definition: tool_chain.h:99
SG_Char
#define SG_Char
Definition: api_core.h:536
TOOL_INTERACTIVE_MUP
@ TOOL_INTERACTIVE_MUP
Definition: tool.h:474
TSG_PFNC_TLB_Initialize
bool(* TSG_PFNC_TLB_Initialize)(const SG_Char *)
Definition: tool.h:682
CSG_String
Definition: api_core.h:563
CSG_Array_Pointer
Definition: api_core.h:368
CSG_Tool::Get_Author
const CSG_String & Get_Author(void) const
Definition: tool.cpp:143
CSG_Tool::Set_Manager
bool Set_Manager(class CSG_Data_Manager *pManager)
Definition: tool.cpp:570
CSG_Data_Manager
Definition: data_manager.h:129
CSG_MetaData
Definition: metadata.h:88
TOOL_INTERACTIVE_LUP
@ TOOL_INTERACTIVE_LUP
Definition: tool.h:471
TOOL_INTERACTIVE_MOVE_MDOWN
@ TOOL_INTERACTIVE_MOVE_MDOWN
Definition: tool.h:481
TOOL_INTERACTIVE_RDCLICK
@ TOOL_INTERACTIVE_RDCLICK
Definition: tool.h:478
CSG_Tool::Get_Description
const CSG_String & Get_Description(void) const
Definition: tool.cpp:165
CSG_Tool_Grid::Get_NX
int Get_NX(void) const
Definition: tool.h:417
CSG_Tool_Interactive_Base
Definition: tool.h:510
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:172
CSG_Tool_Grid::Get_XMin
double Get_XMin(void) const
Definition: tool.h:420
CSG_Tool::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:223
CSG_Grid_System::Get_xFrom
static int Get_xFrom(int Direction, int x=0)
Definition: grid.h:366
CSG_Tool_Interactive::is_Interactive
virtual bool is_Interactive(void) const
Definition: tool.h:584
TOOL_INTERACTIVE_DRAG_CIRCLE
@ TOOL_INTERACTIVE_DRAG_CIRCLE
Definition: tool.h:492
CSG_Tool_Grid_Interactive
Definition: tool.h:601
CSG_Grid
Definition: grid.h:501
CSG_Tool_Grid::Get_System
const CSG_Grid_System & Get_System(void) const
Definition: tool.h:405
CSG_Tool::CSG_Tool
CSG_Tool(void)
Definition: tool.cpp:67
TSG_PFNC_Parameter_Changed
int(* TSG_PFNC_Parameter_Changed)(CSG_Parameter *pParameter, int Flags)
Definition: parameters.h:1692
TSG_PFNC_TLB_Create_Tool
CSG_Tool *(* TSG_PFNC_TLB_Create_Tool)(int i)
Definition: tool.h:647
TOOL_INTERACTIVE_DRAG_BOX
@ TOOL_INTERACTIVE_DRAG_BOX
Definition: tool.h:491
CSG_Tool_Grid::Get_NCells
sLong Get_NCells(void) const
Definition: tool.h:419
CSG_Tool_Grid::Get_Cellsize
double Get_Cellsize(void) const
Definition: tool.h:424
CSG_Tool::On_Before_Execution
virtual bool On_Before_Execution(void)
Definition: tool.h:229
CSG_Tool_Interactive_Base::is_Alt
bool is_Alt(void) const
Definition: tool.h:544
CSG_Tool_Interactive::Get_Type
virtual TSG_Tool_Type Get_Type(void) const
Definition: tool.h:580
CSG_Parameters
Definition: parameters.h:1696
TSG_TLB_Info
TSG_TLB_Info
Definition: tool.h:631
TOOL_INTERACTIVE_MOVE_RDOWN
@ TOOL_INTERACTIVE_MOVE_RDOWN
Definition: tool.h:482
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:148
CSG_Tool::Get_Icon
const SG_Char * Get_Icon(void)
Definition: tool.h:159
TLB_Interface
CSG_Tool_Library_Interface TLB_Interface
TOOL_INTERACTIVE_KEY_SHIFT
#define TOOL_INTERACTIVE_KEY_SHIFT
Definition: tool.h:500
CSG_Tool_Library_Manager
Definition: tool_library.h:184
CSG_Colors
Definition: api_core.h:1408
TLB_INFO_Menu_Path
@ TLB_INFO_Menu_Path
Definition: tool.h:636
TOOL_TYPE_Grid
@ TOOL_TYPE_Grid
Definition: tool.h:104
TOOL_INTERACTIVE_MDOWN
@ TOOL_INTERACTIVE_MDOWN
Definition: tool.h:473
CSG_Tool_Grid::Get_xFrom
static int Get_xFrom(int i, int x=0)
Definition: tool.h:434
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