SAGA API Version 9.11
Loading...
Searching...
No Matches
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//---------------------------------------------------------
72
73
75// //
76// //
77// //
79
80//---------------------------------------------------------
81#include "parameters.h"
82
83
85// //
86// //
87// //
89
90//---------------------------------------------------------
98
99//---------------------------------------------------------
109
110//---------------------------------------------------------
117
118
120// //
121// CSG_Tool //
122// //
124
125//---------------------------------------------------------
133//---------------------------------------------------------
135{
139 friend class CSG_Tool_Chain;
140
141public:
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 //-----------------------------------------------------
250
251 CSG_String Get_Script (Script_Format Format, bool bHeader = true, int Arguments = 0, bool bWrapArgs = true);
252
253
254protected:
255
257
259
260
261 //-----------------------------------------------------
262 void Set_Name (const CSG_String &String);
263 void Set_Author (const CSG_String &String);
264 void Set_Version (const CSG_String &String);
265 void Set_Description (const CSG_String &String);
266 void Add_Description (const CSG_String &String, bool bNewLine = true);
267
268 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);
269 void Add_Reference (const CSG_String &Link, const SG_Char *Link_Text = NULL);
270
271 //-----------------------------------------------------
272 virtual bool On_Execute (void) = 0;
273
274 virtual int On_Parameter_Changed (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
275 virtual int On_Parameters_Enable (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
276
278
279 //-----------------------------------------------------
280 CSG_Parameters * Add_Parameters (const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description);
281 bool Dlg_Parameters (const CSG_String &Identifier); // deprecated
282
283 bool Dlg_Parameters (CSG_Parameters *pParameters, const CSG_String &Caption = "");
284 bool Dlg_Parameters (CSG_Parameters &Parameters, const CSG_String &Caption = "");
285
286 //-----------------------------------------------------
287 virtual bool Set_Progress (int Position, int Range ) const;
288 virtual bool Set_Progress (sLong Position, sLong Range ) const;
289 virtual bool Set_Progress (double Position, double Range = 1.) const;
290
291 bool Stop_Execution (bool bDialog = true);
292
293 void Message_Dlg (const CSG_String &Text, const SG_Char *Caption = NULL);
294 bool Message_Dlg_Confirm (const CSG_String &Text, const SG_Char *Caption = NULL);
295
296 void Message_Add (const CSG_String &Text, bool bNewLine = true);
297 void Message_Fmt (const char *Format, ...);
298 void Message_Fmt (const wchar_t *Format, ...);
299
300 bool Error_Set (TSG_Tool_Error Error_ID = TOOL_ERROR_Unknown);
301 bool Error_Set (const CSG_String &Text);
302 bool Error_Fmt (const char *Format, ...);
303 bool Error_Fmt (const wchar_t *Format, ...);
304
305 //-----------------------------------------------------
306 bool DataObject_Add (CSG_Data_Object *pDataObject, bool bUpdate = false);
307
308 bool DataObject_Update_All (void);
309
310 bool DataObject_Set_History (CSG_Parameter *pParameter, CSG_MetaData *pHistory = NULL);
311
312 bool Get_Projection (CSG_Projection &Projection) const;
313
314
315protected: // static functions...
316
317 static int _On_Parameter_Changed (CSG_Parameter *pParameter, int Flags);
318
319 static bool Process_Get_Okay (bool bBlink = false);
320 static void Process_Set_Text (const CSG_String &Text);
321 static void Process_Set_Text (const char *Format, ...);
322 static void Process_Set_Text (const wchar_t *Format, ...);
323
324 static bool DataObject_Update (CSG_Data_Object *pDataObject , int Show = SG_UI_DATAOBJECT_UPDATE);
325 static bool DataObject_Update (CSG_Data_Object *pDataObject, double Minimum, double Maximum, int Show = SG_UI_DATAOBJECT_UPDATE);
326
327 static bool DataObject_Get_Colors (CSG_Data_Object *pDataObject, CSG_Colors &Colors);
328 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_Colors &Colors);
329 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, int nColors = 0, int Colors = SG_COLORS_DEFAULT, bool bRevert = false);
330 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_String &Colors, int nColors = 0, bool bRevert = false);
331
332 static bool DataObject_Get_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
333 static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
334 static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy);
335
336 static CSG_Parameter * DataObject_Get_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID);
337 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Parameter *pParameter);
338 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy, const CSG_String &ID);
339 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, int Value);
340 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double Value);
341 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, void *Value);
342 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, const SG_Char *Value);
343 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double loVal, double hiVal); // Range Parameter
344
345 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);
346 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);
347 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);
348 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);
349
350 static bool DataObject_Classify_Unique (CSG_Data_Object *pDataObject, int Field = -1, int Classes_Max = 1024 , int Colors = -1);
351 static bool DataObject_Classify_Equal (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
352 static bool DataObject_Classify_Defined (CSG_Data_Object *pDataObject, int Field , double Interval, bool bOffset = false, double Offset = 0., int Colors = -1);
353 static bool DataObject_Classify_Quantile (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bHistogram = true , int Colors = -1);
354 static bool DataObject_Classify_Geometric (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bIncreasing = true , int Colors = -1);
355 static bool DataObject_Classify_Natural (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
356 static bool DataObject_Classify_StdDev (CSG_Data_Object *pDataObject, int Field = -1, double StdDev = 0.5, double StdDev_Max = 4.5 , int Colors = -1);
357
358
359private:
360
361 bool m_bExecutes, m_bError_Ignore, m_bShow_Progress, m_bGUI, m_bCMD;
362
363 CSG_Array_Pointer m_pParameters;
364
365 CSG_String m_ID, m_Library, m_Library_Menu, m_File_Name, m_Author, m_Version, m_Execution_Info;
366
367
368 bool _Synchronize_DataObjects (void);
369
370 CSG_String _Get_Script_CMD (bool bHeader , bool bAllArguments, bool bWrapArgs, bool bBatch);
371 void _Get_Script_CMD (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, bool bWrapArgs, bool bBatch);
372
373 CSG_String _Get_Script_CMD_Usage (void);
374 void _Get_Script_CMD_Usage (CSG_Parameters *pParameters, class wxCmdLineParser &Parser);
375
376 CSG_String _Get_Script_Python (bool bHeader, bool bAllArguments);
377 void _Get_Script_Python (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, const CSG_String &Prefix = "");
378
379 CSG_String _Get_Script_Python_Wrap (bool bHeader, bool bName, bool bCall, int AllArguments, bool bWrapArgs);
380 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 = "");
381
382 CSG_String _Get_Script_Markdown (bool bHeader, int iArguments);
383 void _Get_Script_Markdown (CSG_String &Description, CSG_Parameters *pParameters, int iArguments, const CSG_String &Prefix = "");
384 void _Format_Markdown (CSG_Parameter *p, CSG_String &Script, CSG_MetaData &Properties, int iArguments, CSG_String Prefix);
385
386 void _Set_Output_History (void);
387
388 void _Update_Parameter_States (CSG_Parameters *pParameters);
389
390};
391
392
394// //
395// CSG_Tool_Grid //
396// //
398
399//---------------------------------------------------------
403//---------------------------------------------------------
405{
406public:
407 CSG_Tool_Grid(void);
408 virtual ~CSG_Tool_Grid(void);
409
410 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid ); }
411
412 const CSG_Grid_System & Get_System (void) const { return( *Parameters.Get_Grid_System() ); }
413 bool Set_System (const CSG_Grid_System &System);
414
415 virtual bool is_Grid (void) const { return( true ); }
416
417
418protected:
419
420 virtual bool Set_Progress_Cells (sLong Cell) const;
421 virtual bool Set_Progress_Rows (int Row) const;
422
423 //-----------------------------------------------------
424 int Get_NX (void) const { return( Get_System().Get_NX () ); }
425 int Get_NY (void) const { return( Get_System().Get_NY () ); }
426 sLong Get_NCells (void) const { return( Get_System().Get_NCells () ); }
427 double Get_XMin (void) const { return( Get_System().Get_XMin () ); }
428 double Get_YMin (void) const { return( Get_System().Get_YMin () ); }
429 double Get_XMax (void) const { return( Get_System().Get_XMax () ); }
430 double Get_YMax (void) const { return( Get_System().Get_YMax () ); }
431 double Get_Cellsize (void) const { return( Get_System().Get_Cellsize() ); }
432 double Get_Cellarea (void) const { return( Get_System().Get_Cellarea() ); }
433
434 double Get_Length (int i) const { return( Get_System().Get_Length (i) ); }
435 double Get_UnitLength (int i) const { return( Get_System().Get_UnitLength(i) ); }
436 bool is_InGrid (int x, int y) const { return( Get_System().is_InGrid(x, y) ); }
437 bool is_InGrid (int x, int y, int Rand) const { return( Get_System().is_InGrid(x, y, Rand) ); }
438
439 static int Get_xTo (int i, int x = 0) { return( CSG_Grid_System::Get_xTo (i, x) ); }
440 static int Get_yTo (int i, int y = 0) { return( CSG_Grid_System::Get_yTo (i, y) ); }
441 static int Get_xFrom (int i, int x = 0) { return( CSG_Grid_System::Get_xFrom(i, x) ); }
442 static int Get_yFrom (int i, int y = 0) { return( CSG_Grid_System::Get_yFrom(i, y) ); }
443
444 //-----------------------------------------------------
445 void Lock_Create (void);
446 void Lock_Destroy (void);
447
448 bool is_Locked (int x, int y) { return( Lock_Get(x, y) != 0 ); }
449 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 ); }
450
451 void Lock_Set (int x, int y, char Value = 1)
452 {
453 if( m_pLock && x >= 0 && x < Get_NX() && y >= 0 && y < Get_NY() )
454 {
455 m_pLock->Set_Value(x, y, Value);
456 }
457 }
458
459
460private:
461
462 CSG_Grid *m_pLock;
463
464};
465
466
468// //
469// CSG_Tool_Interactive_Base //
470// //
472
473//---------------------------------------------------------
492
493//---------------------------------------------------------
502
503//---------------------------------------------------------
504#define TOOL_INTERACTIVE_KEY_LEFT 0x01
505#define TOOL_INTERACTIVE_KEY_MIDDLE 0x02
506#define TOOL_INTERACTIVE_KEY_RIGHT 0x04
507#define TOOL_INTERACTIVE_KEY_SHIFT 0x08
508#define TOOL_INTERACTIVE_KEY_ALT 0x10
509#define TOOL_INTERACTIVE_KEY_CTRL 0x20
510
511//---------------------------------------------------------
515//---------------------------------------------------------
517{
520
521public:
523 virtual ~CSG_Tool_Interactive_Base(void);
524
526
527 bool Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys);
528 bool Execute_Keyboard (int Character, int Keys);
529 bool Execute_Finish (void);
530
531 int Get_Drag_Mode (void) const { return( m_Drag_Mode ); }
532
533
534protected:
535
536 const CSG_Projection & Get_Projection (void) const { return( m_Projection ); }
537
538 virtual bool On_Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode);
539 virtual bool On_Execute_Keyboard (int Character);
540 virtual bool On_Execute_Finish (void);
541
542 const CSG_Point & Get_Position (void) const { return( m_Point ); }
543 double Get_xPosition (void) const { return( m_Point .x ); }
544 double Get_yPosition (void) const { return( m_Point .y ); }
545
546 const CSG_Point & Get_Position_Last (void) const { return( m_Point_Last ); }
547 double Get_xPosition_Last (void) const { return( m_Point_Last.x ); }
548 double Get_yPosition_Last (void) const { return( m_Point_Last.y ); }
549
550 bool is_Shift (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_SHIFT) != 0 ); }
551 bool is_Alt (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_ALT ) != 0 ); }
552 bool is_Ctrl (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_CTRL ) != 0 ); }
553
554 void Set_Drag_Mode (int Drag_Mode);
555
556
557private:
558
559 int m_Keys, m_Drag_Mode;
560
561 CSG_Point m_Point, m_Point_Last;
562
563 CSG_Projection m_Projection;
564
565 CSG_Tool *m_pTool;
566
567};
568
569
571// //
572// CSG_Tool_Interactive //
573// //
575
576//---------------------------------------------------------
580//---------------------------------------------------------
582{
583public:
585 virtual ~CSG_Tool_Interactive(void);
586
587 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Interactive ); }
588
589 virtual bool needs_GUI (void) const { return( true ); }
590
591 virtual bool is_Interactive (void) const { return( true ); }
592
593};
594
595
597// //
598// CSG_Tool_Grid_Interactive //
599// //
601
602//---------------------------------------------------------
606//---------------------------------------------------------
608{
609public:
611 virtual ~CSG_Tool_Grid_Interactive(void);
612
613 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid_Interactive ); }
614
615 virtual bool needs_GUI (void) const { return( true ); }
616
617 virtual bool is_Interactive (void) const { return( true ); }
618
619
620protected:
621
622 bool Get_Grid_Pos (int &x, int &y) const;
623
624 int Get_xGrid (void) const;
625 int Get_yGrid (void) const;
626
627};
628
629
631// //
632// Tool Library Interface Definitions //
633// //
635
636//---------------------------------------------------------
652
653//---------------------------------------------------------
654typedef CSG_Tool * (* TSG_PFNC_TLB_Create_Tool) (int i);
656
657//---------------------------------------------------------
659{
660public:
662 virtual ~CSG_Tool_Library_Interface(void);
663
664 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);
665 bool Destroy (void);
666
667 const CSG_String & Get_Info (int ID);
668
669 int Get_Count (void);
670 CSG_Tool * Get_Tool (int i);
671
672 CSG_Tool * Create_Tool (int i, bool bWithGUI = false, bool bWithCMD =true);
673 bool Delete_Tool (CSG_Tool *pTool);
674 bool Delete_Tools (void);
675
676
677private:
678
679 CSG_Strings m_Info;
680
681 CSG_Array_Pointer m_Tools, m_xTools;
682
683 TSG_PFNC_TLB_Create_Tool m_Fnc_Create_Tool;
684
685};
686
687//---------------------------------------------------------
688#define SYMBOL_TLB_Initialize "TLB_Initialize"
689typedef bool (* TSG_PFNC_TLB_Initialize) (const SG_Char *);
690
691#define SYMBOL_TLB_Finalize "TLB_Finalize"
692typedef bool (* TSG_PFNC_TLB_Finalize) (void);
693
694#define SYMBOL_TLB_Get_Interface "TLB_Get_Interface"
695typedef CSG_Tool_Library_Interface * (* TSG_PFNC_TLB_Get_Interface) (void);
696
697//---------------------------------------------------------
698#define TLB_INTERFACE_SKIP_TOOL ((CSG_Tool *)0x1)
699
700//---------------------------------------------------------
701#define TLB_INTERFACE_ESTABLISH CSG_Tool_Library_Interface TLB_Interface;\
702\
703extern "C" _SAGA_DLL_EXPORT CSG_Tool_Library_Interface * TLB_Get_Interface (void)\
704{\
705 return( &TLB_Interface );\
706}\
707
708//---------------------------------------------------------
709#define TLB_INTERFACE_INITIALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Initialize(const SG_Char *TLB_Path)\
710{\
711 return( TLB_Interface.Create(SAGA_VERSION, TLB_Path, Get_Info, Create_Tool) );\
712}\
713
714//---------------------------------------------------------
715#define TLB_INTERFACE_FINALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Finalize (void)\
716{\
717 return( true );\
718}\
719
720//---------------------------------------------------------
721#define TLB_INTERFACE TLB_INTERFACE_ESTABLISH TLB_INTERFACE_INITIALIZE TLB_INTERFACE_FINALIZE
722
723//---------------------------------------------------------
724#ifndef SWIG
725
727
728#endif // #ifdef SWIG
729
730
732// //
733// //
734// //
736
737//---------------------------------------------------------
738#endif // #ifndef HEADER_INCLUDED__SAGA_API__tool_H
bool SG_UI_Process_Get_Okay(bool bBlink)
signed long long sLong
Definition api_core.h:158
#define SG_T(s)
Definition api_core.h:537
@ SG_UI_DATAOBJECT_UPDATE
Definition api_core.h:1597
#define SAGA_API_DLL_EXPORT
Definition api_core.h:94
#define SG_Char
Definition api_core.h:536
@ SG_COLORS_DEFAULT
Definition api_core.h:1329
static int Get_yTo(int Direction, int y=0)
Definition grid.h:352
static int Get_yFrom(int Direction, int y=0)
Definition grid.h:367
static int Get_xTo(int Direction, int x=0)
Definition grid.h:338
static int Get_xFrom(int Direction, int x=0)
Definition grid.h:366
virtual bool needs_GUI(void) const
Definition tool.h:615
virtual bool is_Interactive(void) const
Definition tool.h:617
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:613
double Get_Cellarea(void) const
Definition tool.h:432
void Lock_Set(int x, int y, char Value=1)
Definition tool.h:451
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:410
double Get_Length(int i) const
Definition tool.h:434
bool is_InGrid(int x, int y) const
Definition tool.h:436
double Get_XMin(void) const
Definition tool.h:427
double Get_UnitLength(int i) const
Definition tool.h:435
bool is_InGrid(int x, int y, int Rand) const
Definition tool.h:437
static int Get_xTo(int i, int x=0)
Definition tool.h:439
static int Get_yFrom(int i, int y=0)
Definition tool.h:442
double Get_XMax(void) const
Definition tool.h:429
virtual bool is_Grid(void) const
Definition tool.h:415
const CSG_Grid_System & Get_System(void) const
Definition tool.h:412
static int Get_yTo(int i, int y=0)
Definition tool.h:440
static int Get_xFrom(int i, int x=0)
Definition tool.h:441
int Get_NX(void) const
Definition tool.h:424
CSG_Tool_Grid(void)
Definition tool_grid.cpp:63
double Get_YMin(void) const
Definition tool.h:428
char Lock_Get(int x, int y)
Definition tool.h:449
bool is_Locked(int x, int y)
Definition tool.h:448
double Get_Cellsize(void) const
Definition tool.h:431
int Get_NY(void) const
Definition tool.h:425
sLong Get_NCells(void) const
Definition tool.h:426
double Get_YMax(void) const
Definition tool.h:430
int Get_Drag_Mode(void) const
Definition tool.h:531
bool is_Ctrl(void) const
Definition tool.h:552
double Get_xPosition(void) const
Definition tool.h:543
bool is_Alt(void) const
Definition tool.h:551
bool Set_Projection(const CSG_Projection &Projection)
double Get_yPosition(void) const
Definition tool.h:544
double Get_xPosition_Last(void) const
Definition tool.h:547
bool is_Shift(void) const
Definition tool.h:550
friend class CSG_Tool_Grid_Interactive
Definition tool.h:519
const CSG_Projection & Get_Projection(void) const
Definition tool.h:536
const CSG_Point & Get_Position_Last(void) const
Definition tool.h:546
bool Execute_Keyboard(int Character, int Keys)
double Get_yPosition_Last(void) const
Definition tool.h:548
friend class CSG_Tool_Interactive
Definition tool.h:518
const CSG_Point & Get_Position(void) const
Definition tool.h:542
bool Execute_Position(CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys)
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:587
virtual bool needs_GUI(void) const
Definition tool.h:589
virtual bool is_Interactive(void) const
Definition tool.h:591
CSG_Tool * Create_Tool(int i, bool bWithGUI=false, bool bWithCMD=true)
const CSG_String & Get_Info(int ID)
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)
int Get_Parameters_Count(void) const
Definition tool.h:167
virtual bool On_After_Execution(void)
Definition tool.h:230
friend class CSG_Tool_Library_Interface
Definition tool.h:137
friend class CSG_Tool_Interactive_Base
Definition tool.h:136
friend class CSG_Tool_Library_Manager
Definition tool.h:138
const SG_Char * Get_Execution_Info(void) const
Definition tool.h:234
virtual bool is_Interactive(void) const
Definition tool.h:223
CSG_Parameters * Get_Parameters(void)
Definition tool.h:165
CSG_Parameter * Get_Parameter(const wchar_t *ID) const
Definition tool.h:174
virtual void Destroy(void)
Definition tool.cpp:102
virtual bool On_Execute(void)=0
friend class CSG_Tool_Chain
Definition tool.h:139
CSG_MetaData History_Supplement
Definition tool.h:258
CSG_Parameter * Get_Parameter(const CSG_String &ID) const
Definition tool.h:172
virtual bool On_Before_Execution(void)
Definition tool.h:229
static int _On_Parameter_Changed(CSG_Parameter *pParameter, int Flags)
Definition tool.cpp:461
void Add_Description(const CSG_String &String, bool bNewLine=true)
Definition tool.cpp:165
virtual bool needs_GUI(void) const
Definition tool.h:218
CSG_Parameters Parameters
Definition tool.h:256
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:148
virtual bool do_Sync_Projections(void) const
Definition tool.h:216
CSG_Tool(void)
Definition tool.cpp:67
virtual CSG_String Get_MenuPath(void)
Definition tool.h:162
void Set_Description(const CSG_String &String)
Definition tool.cpp:160
TSG_PFNC_Parameter_Changed Get_Parameter_Changed(void)
Definition tool.h:277
void Set_Author(const CSG_String &String)
Definition tool.cpp:138
virtual bool is_Grid(void) const
Definition tool.h:222
bool is_Progress(void) const
Definition tool.h:224
const CSG_String & Get_ID(void) const
Definition tool.h:150
Script_Format
Definition tool.h:242
virtual int On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
Definition tool.cpp:491
bool is_Executing(void) const
Definition tool.h:225
virtual int On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
Definition tool.cpp:485
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)
Definition tool.cpp:180
void Set_Version(const CSG_String &String)
Definition tool.cpp:149
const SG_Char * Get_Icon(void)
Definition tool.h:159
CSG_Parameters * Get_Parameters(int i) const
Definition tool.h:168
void Set_Name(const CSG_String &String)
Definition tool.cpp:127
CSG_Parameter * Get_Parameter(const char *ID) const
Definition tool.h:173
CSG_Parameters * Get_Parameters(int i)
Definition tool.h:169
int(* TSG_PFNC_Parameter_Changed)(CSG_Parameter *pParameter, int Flags)
@ PARAMETER_TYPE_Undefined
Definition parameters.h:166
TSG_Tool_Interactive_DragMode
Definition tool.h:495
@ TOOL_INTERACTIVE_DRAG_BOX
Definition tool.h:498
@ TOOL_INTERACTIVE_DRAG_LINE
Definition tool.h:497
@ TOOL_INTERACTIVE_DRAG_CIRCLE
Definition tool.h:499
@ TOOL_INTERACTIVE_DRAG_NONE
Definition tool.h:496
CSG_Tool *(* TSG_PFNC_TLB_Create_Tool)(int i)
Definition tool.h:654
CSG_Tool_Library_Interface TLB_Interface
TSG_Summary_Format
Definition tool.h:92
@ SG_SUMMARY_FMT_HTML
Definition tool.h:94
@ SG_SUMMARY_FMT_FLAT
Definition tool.h:93
@ SG_SUMMARY_FMT_XML
Definition tool.h:95
TSG_TLB_Info
Definition tool.h:638
@ TLB_INFO_Library
Definition tool.h:647
@ TLB_INFO_SAGA_Version
Definition tool.h:648
@ TLB_INFO_Menu_Path
Definition tool.h:643
@ TLB_INFO_Name
Definition tool.h:639
@ TLB_INFO_Version
Definition tool.h:642
@ TLB_INFO_Category
Definition tool.h:644
@ TLB_INFO_Description
Definition tool.h:640
@ TLB_INFO_User
Definition tool.h:645
@ TLB_INFO_File
Definition tool.h:646
@ TLB_INFO_Count
Definition tool.h:649
@ TLB_INFO_Author
Definition tool.h:641
#define TOOL_INTERACTIVE_KEY_SHIFT
Definition tool.h:507
TSG_Tool_Error
Definition tool.h:112
@ TOOL_ERROR_Calculation
Definition tool.h:114
@ TOOL_ERROR_Unknown
Definition tool.h:113
bool(* TSG_PFNC_TLB_Finalize)(void)
Definition tool.h:692
TSG_Tool_Type
Definition tool.h:101
@ TOOL_TYPE_Interactive
Definition tool.h:103
@ TOOL_TYPE_Grid
Definition tool.h:104
@ TOOL_TYPE_Base
Definition tool.h:102
@ TOOL_TYPE_Chain
Definition tool.h:106
@ TOOL_TYPE_Grid_Interactive
Definition tool.h:105
TSG_Tool_Interactive_Mode
Definition tool.h:475
@ TOOL_INTERACTIVE_RDOWN
Definition tool.h:483
@ TOOL_INTERACTIVE_LUP
Definition tool.h:478
@ TOOL_INTERACTIVE_MOVE_RDOWN
Definition tool.h:489
@ TOOL_INTERACTIVE_LDCLICK
Definition tool.h:479
@ TOOL_INTERACTIVE_LDOWN
Definition tool.h:477
@ TOOL_INTERACTIVE_MOVE_LDOWN
Definition tool.h:487
@ TOOL_INTERACTIVE_RUP
Definition tool.h:484
@ TOOL_INTERACTIVE_MUP
Definition tool.h:481
@ TOOL_INTERACTIVE_MOVE_MDOWN
Definition tool.h:488
@ TOOL_INTERACTIVE_UNDEFINED
Definition tool.h:476
@ TOOL_INTERACTIVE_MDOWN
Definition tool.h:480
@ TOOL_INTERACTIVE_RDCLICK
Definition tool.h:485
@ TOOL_INTERACTIVE_MOVE
Definition tool.h:486
@ TOOL_INTERACTIVE_MDCLICK
Definition tool.h:482
CSG_String(* TSG_PFNC_TLB_Get_Info)(int i)
Definition tool.h:655
bool(* TSG_PFNC_TLB_Initialize)(const SG_Char *)
Definition tool.h:689
#define TOOL_INTERACTIVE_KEY_ALT
Definition tool.h:508
#define TOOL_INTERACTIVE_KEY_CTRL
Definition tool.h:509