SAGA API Version 9.12
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_String & Get_Dynamic_Description (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 static bool Set_Description_Source (const CSG_String &Source = "");
163 static const CSG_String & Get_Description_Source (void);
164 CSG_String Get_Description_Editors (bool bHTML = true);
165 bool Load_Description (void);
166
167 virtual CSG_String Get_MenuPath (void) { return( "" ); }
168 virtual CSG_String Get_MenuPath (bool bSolved);
169
170 const CSG_Table & Get_References_Table (void) const { return( m_References ); }
171 CSG_Strings Get_References (bool bHTML = true) const;
172 bool Del_References (void);
173
174 CSG_Table Get_Parameters_Table (void) const;
175 CSG_Parameters * Get_Parameters (void) { return( &Parameters ); }
176
177 int Get_Parameters_Count (void) const { return( (int)m_pParameters.Get_Size() ); }
178 CSG_Parameters * Get_Parameters (int i) const { return( i >= 0 && i < Get_Parameters_Count() ? (CSG_Parameters *)m_pParameters[i] : NULL ); }
179 CSG_Parameters * Get_Parameters (int i) { return( i >= 0 && i < Get_Parameters_Count() ? (CSG_Parameters *)m_pParameters[i] : NULL ); }
180 CSG_Parameters * Get_Parameters (const CSG_String &Identifier) const;
181
182 CSG_Parameter * Get_Parameter (const CSG_String &ID) const;
183 CSG_Parameter * Get_Parameter (const char *ID) const;
184 CSG_Parameter * Get_Parameter (const wchar_t *ID) const;
185 bool Set_Parameter (const CSG_String &ID, CSG_Parameter *pValue);
186 bool Set_Parameter (const char *ID, CSG_Parameter *pValue);
187 bool Set_Parameter (const wchar_t *ID, CSG_Parameter *pValue);
188 bool Set_Parameter (const CSG_String &ID, int Value, int Type = PARAMETER_TYPE_Undefined);
189 bool Set_Parameter (const char *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
190 bool Set_Parameter (const wchar_t *ID, int Value, int Type = PARAMETER_TYPE_Undefined);
191 bool Set_Parameter (const CSG_String &ID, double Value, int Type = PARAMETER_TYPE_Undefined);
192 bool Set_Parameter (const char *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
193 bool Set_Parameter (const wchar_t *ID, double Value, int Type = PARAMETER_TYPE_Undefined);
194 bool Set_Parameter (const CSG_String &ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
195 bool Set_Parameter (const char *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
196 bool Set_Parameter (const wchar_t *ID, void *Value, int Type = PARAMETER_TYPE_Undefined);
197 bool Set_Parameter (const CSG_String &ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
198 bool Set_Parameter (const char *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
199 bool Set_Parameter (const wchar_t *ID, const CSG_String &Value, int Type = PARAMETER_TYPE_Undefined);
200 bool Set_Parameter (const CSG_String &ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
201 bool Set_Parameter (const char *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
202 bool Set_Parameter (const wchar_t *ID, const char *Value, int Type = PARAMETER_TYPE_Undefined);
203 bool Set_Parameter (const CSG_String &ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
204 bool Set_Parameter (const char *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
205 bool Set_Parameter (const wchar_t *ID, const wchar_t *Value, int Type = PARAMETER_TYPE_Undefined);
206
207 bool Reset (bool bManager = true);
208 bool Reset_Manager (void);
209 bool Reset_Grid_System (void);
210
211 bool Update_Parameter_States (void);
212
213 void Set_Callback (bool bActive = true);
214
215 bool Set_Manager (class CSG_Data_Manager *pManager);
216 class CSG_Data_Manager * Get_Manager (void) const;
217 class CSG_Data_Manager * Create_Manager (void);
218 bool Delete_Manager (bool bDetachData = false, bool bReset = true);
219
220 bool Set_Grid_System (const CSG_Grid_System &System);
221 CSG_Grid_System * Get_Grid_System (void) const;
222
223 bool Settings_Push (class CSG_Data_Manager *pManager = NULL);
224 bool Settings_Pop (void);
225
226 virtual bool do_Sync_Projections (void) const { return( true ); }
227
228 virtual bool needs_GUI (void) const { return( false ); }
229 bool has_GUI (void) const;
230 bool has_CMD (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_MetaData Get_History (int Depth = -1);
247 bool Set_History (CSG_Data_Object *pDataObject, int Depth = -1);
248
249
250 //-----------------------------------------------------
260
261 CSG_String Get_Script (Script_Format Format, bool bHeader = true, int Arguments = 0, bool bWrapArgs = true);
262
263
264protected:
265
267
269
270
271 //-----------------------------------------------------
272 void Set_Name (const CSG_String &String);
273 void Set_Author (const CSG_String &String);
274 void Set_Version (const CSG_String &String);
275 void Set_Description (const CSG_String &String);
276 void Add_Description (const CSG_String &String, bool bNewLine = true);
277 void Set_Dynamic_Description (const CSG_String &String);
278 void Add_Dynamic_Description (const CSG_String &String, bool bNewLine = true);
279
280 void Add_Reference (const CSG_String &Authors, const CSG_String &Date, const CSG_String &Title, const CSG_String &Source, const CSG_String &Link = "", const CSG_String &Link_Text = "");
281 void Add_Reference ( const CSG_String &Link , const CSG_String &Link_Text = "");
282
283 //-----------------------------------------------------
284 virtual bool On_Execute (void) = 0;
285
286 virtual int On_Parameter_Changed (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
287 virtual int On_Parameters_Enable (CSG_Parameters *pParameters, CSG_Parameter *pParameter);
288
290
291 //-----------------------------------------------------
292 CSG_Parameters * Add_Parameters (const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description);
293 bool Dlg_Parameters (const CSG_String &Identifier); // deprecated
294
295 bool Dlg_Parameters (CSG_Parameters *pParameters, const CSG_String &Caption = "");
296 bool Dlg_Parameters (CSG_Parameters &Parameters, const CSG_String &Caption = "");
297
298 //-----------------------------------------------------
299 virtual bool Set_Progress (int Position, int Range ) const;
300 virtual bool Set_Progress (sLong Position, sLong Range ) const;
301 virtual bool Set_Progress (double Position, double Range = 1.) const;
302
303 bool Stop_Execution (bool bDialog = true);
304
305 void Message_Dlg (const CSG_String &Text, const SG_Char *Caption = NULL);
306 bool Message_Dlg_Confirm (const CSG_String &Text, const SG_Char *Caption = NULL);
307
308 void Message_Add (const CSG_String &Text, bool bNewLine = true);
309 void Message_Fmt (const char *Format, ...);
310 void Message_Fmt (const wchar_t *Format, ...);
311
312 bool Error_Set (TSG_Tool_Error Error_ID = TOOL_ERROR_Unknown);
313 bool Error_Set (const CSG_String &Text);
314 bool Error_Fmt (const char *Format, ...);
315 bool Error_Fmt (const wchar_t *Format, ...);
316
317 //-----------------------------------------------------
318 bool DataObject_Add (CSG_Data_Object *pDataObject, bool bUpdate = false);
319
320 bool DataObject_Update_All (void);
321
322 bool DataObject_Set_History (CSG_Parameter *pParameter, CSG_MetaData *pHistory = NULL);
323
324 bool Get_Projection (CSG_Projection &Projection) const;
325
326
327protected: // static functions...
328
329 static int _On_Parameter_Changed (CSG_Parameter *pParameter, int Flags);
330
331 static bool Process_Get_Okay (bool bBlink = false);
332 static void Process_Set_Text (const CSG_String &Text);
333 static void Process_Set_Text (const char *Format, ...);
334 static void Process_Set_Text (const wchar_t *Format, ...);
335
336 static bool DataObject_Update (CSG_Data_Object *pDataObject , int Show = SG_UI_DATAOBJECT_UPDATE);
337 static bool DataObject_Update (CSG_Data_Object *pDataObject, double Minimum, double Maximum, int Show = SG_UI_DATAOBJECT_UPDATE);
338
339 static bool DataObject_Get_Colors (CSG_Data_Object *pDataObject, CSG_Colors &Colors);
340 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_Colors &Colors);
341 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, int nColors = 0, int Colors = SG_COLORS_DEFAULT, bool bRevert = false);
342 static bool DataObject_Set_Colors (CSG_Data_Object *pDataObject, const CSG_String &Colors, int nColors = 0, bool bRevert = false);
343
344 static bool DataObject_Get_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
345 static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Parameters &Parameters);
346 static bool DataObject_Set_Parameters (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy);
347
348 static CSG_Parameter * DataObject_Get_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID);
349 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Parameter *pParameter);
350 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, CSG_Data_Object *pCopy, const CSG_String &ID);
351 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, int Value);
352 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double Value);
353 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, void *Value);
354 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, const SG_Char *Value);
355 static bool DataObject_Set_Parameter (CSG_Data_Object *pDataObject, const CSG_String &ID, double loVal, double hiVal); // Range Parameter
356
357 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);
358 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);
359 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);
360 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);
361
362 static bool DataObject_Classify_Unique (CSG_Data_Object *pDataObject, int Field = -1, int Classes_Max = 1024 , int Colors = -1);
363 static bool DataObject_Classify_Equal (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
364 static bool DataObject_Classify_Defined (CSG_Data_Object *pDataObject, int Field , double Interval, bool bOffset = false, double Offset = 0., int Colors = -1);
365 static bool DataObject_Classify_Quantile (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bHistogram = true , int Colors = -1);
366 static bool DataObject_Classify_Geometric (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10, bool bIncreasing = true , int Colors = -1);
367 static bool DataObject_Classify_Natural (CSG_Data_Object *pDataObject, int Field = -1, int Classes = 10 , int Colors = -1);
368 static bool DataObject_Classify_StdDev (CSG_Data_Object *pDataObject, int Field = -1, double StdDev = 0.5, double StdDev_Max = 4.5 , int Colors = -1);
369
370
371private:
372
373 static CSG_String m_Description_Source;
374
375 bool m_bExecutes, m_bError_Ignore, m_bShow_Progress, m_bGUI, m_bCMD;
376
377 CSG_Array_Pointer m_pParameters;
378
379 CSG_String m_ID, m_Library, m_Library_Menu, m_File_Name, m_Author, m_Version, m_Execution_Info, m_Dynamic_Description;
380
381 CSG_Table m_References, m_Editors;
382
383
384 bool _Synchronize_DataObjects (void);
385
386 bool _Add_Parameters (CSG_Table &Table, const CSG_Parameters *pParameters, const CSG_String &IDprefix = "") const;
387
388 CSG_String _Get_Script_CMD (bool bHeader , bool bAllArguments, bool bWrapArgs, bool bBatch);
389 void _Get_Script_CMD (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, bool bWrapArgs, bool bBatch);
390
391 CSG_String _Get_Script_CMD_Usage (void);
392 void _Get_Script_CMD_Usage (CSG_Parameters *pParameters, class wxCmdLineParser &Parser);
393
394 CSG_String _Get_Script_Python (bool bHeader, bool bAllArguments);
395 void _Get_Script_Python (CSG_String &Script, CSG_Parameters *pParameters, bool bAllArguments, const CSG_String &Prefix = "");
396
397 CSG_String _Get_Script_Python_Wrap (bool bHeader, bool bName, bool bCall, int AllArguments, bool bWrapArgs);
398 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 = "");
399
400 CSG_String _Get_Script_Markdown (bool bHeader, int iArguments);
401 void _Get_Script_Markdown (CSG_String &Description, CSG_Parameters *pParameters, int iArguments, const CSG_String &Prefix = "");
402 void _Format_Markdown (CSG_Parameter *p, CSG_String &Script, CSG_MetaData &Properties, int iArguments, CSG_String Prefix);
403
404 void _Set_Output_History (void);
405
406 void _Update_Parameter_States (CSG_Parameters *pParameters);
407
408};
409
410
412// //
413// CSG_Tool_Grid //
414// //
416
417//---------------------------------------------------------
421//---------------------------------------------------------
423{
424public:
425 CSG_Tool_Grid(void);
426 virtual ~CSG_Tool_Grid(void);
427
428 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid ); }
429
430 const CSG_Grid_System & Get_System (void) const { return( *Parameters.Get_Grid_System() ); }
431 bool Set_System (const CSG_Grid_System &System);
432
433 virtual bool is_Grid (void) const { return( true ); }
434
435
436protected:
437
438 virtual bool Set_Progress_Cells (sLong Cell) const;
439 virtual bool Set_Progress_Rows (int Row) const;
440
441 //-----------------------------------------------------
442 int Get_NX (void) const { return( Get_System().Get_NX () ); }
443 int Get_NY (void) const { return( Get_System().Get_NY () ); }
444 sLong Get_NCells (void) const { return( Get_System().Get_NCells () ); }
445 double Get_XMin (void) const { return( Get_System().Get_XMin () ); }
446 double Get_YMin (void) const { return( Get_System().Get_YMin () ); }
447 double Get_XMax (void) const { return( Get_System().Get_XMax () ); }
448 double Get_YMax (void) const { return( Get_System().Get_YMax () ); }
449 double Get_Cellsize (void) const { return( Get_System().Get_Cellsize() ); }
450 double Get_Cellarea (void) const { return( Get_System().Get_Cellarea() ); }
451
452 double Get_Length (int i) const { return( Get_System().Get_Length (i) ); }
453 double Get_UnitLength (int i) const { return( Get_System().Get_UnitLength(i) ); }
454 bool is_InGrid (int x, int y) const { return( Get_System().is_InGrid(x, y) ); }
455 bool is_InGrid (int x, int y, int Rand) const { return( Get_System().is_InGrid(x, y, Rand) ); }
456
457 static int Get_xTo (int i, int x = 0) { return( CSG_Grid_System::Get_xTo (i, x) ); }
458 static int Get_yTo (int i, int y = 0) { return( CSG_Grid_System::Get_yTo (i, y) ); }
459 static int Get_xFrom (int i, int x = 0) { return( CSG_Grid_System::Get_xFrom(i, x) ); }
460 static int Get_yFrom (int i, int y = 0) { return( CSG_Grid_System::Get_yFrom(i, y) ); }
461
462 //-----------------------------------------------------
463 void Lock_Create (void);
464 void Lock_Destroy (void);
465
466 bool is_Locked (int x, int y) { return( Lock_Get(x, y) != 0 ); }
467 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 ); }
468
469 void Lock_Set (int x, int y, char Value = 1)
470 {
471 if( m_pLock && x >= 0 && x < Get_NX() && y >= 0 && y < Get_NY() )
472 {
473 m_pLock->Set_Value(x, y, Value);
474 }
475 }
476
477
478private:
479
480 CSG_Grid *m_pLock;
481
482};
483
484
486// //
487// CSG_Tool_Interactive_Base //
488// //
490
491//---------------------------------------------------------
510
511//---------------------------------------------------------
520
521//---------------------------------------------------------
522#define TOOL_INTERACTIVE_KEY_LEFT 0x01
523#define TOOL_INTERACTIVE_KEY_MIDDLE 0x02
524#define TOOL_INTERACTIVE_KEY_RIGHT 0x04
525#define TOOL_INTERACTIVE_KEY_SHIFT 0x08
526#define TOOL_INTERACTIVE_KEY_ALT 0x10
527#define TOOL_INTERACTIVE_KEY_CTRL 0x20
528
529//---------------------------------------------------------
533//---------------------------------------------------------
535{
538
539public:
541 virtual ~CSG_Tool_Interactive_Base(void);
542
544
545 bool Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys);
546 bool Execute_Keyboard (int Character, int Keys);
547 bool Execute_Finish (void);
548
549 int Get_Drag_Mode (void) const { return( m_Drag_Mode ); }
550
551
552protected:
553
554 const CSG_Projection & Get_Projection (void) const { return( m_Projection ); }
555
556 virtual bool On_Execute_Position (CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode);
557 virtual bool On_Execute_Keyboard (int Character);
558 virtual bool On_Execute_Finish (void);
559
560 const CSG_Point & Get_Position (void) const { return( m_Point ); }
561 double Get_xPosition (void) const { return( m_Point .x ); }
562 double Get_yPosition (void) const { return( m_Point .y ); }
563
564 const CSG_Point & Get_Position_Last (void) const { return( m_Point_Last ); }
565 double Get_xPosition_Last (void) const { return( m_Point_Last.x ); }
566 double Get_yPosition_Last (void) const { return( m_Point_Last.y ); }
567
568 bool is_Shift (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_SHIFT) != 0 ); }
569 bool is_Alt (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_ALT ) != 0 ); }
570 bool is_Ctrl (void) const { return( (m_Keys & TOOL_INTERACTIVE_KEY_CTRL ) != 0 ); }
571
572 void Set_Drag_Mode (int Drag_Mode);
573
574
575private:
576
577 int m_Keys, m_Drag_Mode;
578
579 CSG_Point m_Point, m_Point_Last;
580
581 CSG_Projection m_Projection;
582
583 CSG_Tool *m_pTool;
584
585};
586
587
589// //
590// CSG_Tool_Interactive //
591// //
593
594//---------------------------------------------------------
598//---------------------------------------------------------
600{
601public:
603 virtual ~CSG_Tool_Interactive(void);
604
605 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Interactive ); }
606
607 virtual bool needs_GUI (void) const { return( true ); }
608
609 virtual bool is_Interactive (void) const { return( true ); }
610
611};
612
613
615// //
616// CSG_Tool_Grid_Interactive //
617// //
619
620//---------------------------------------------------------
624//---------------------------------------------------------
626{
627public:
629 virtual ~CSG_Tool_Grid_Interactive(void);
630
631 virtual TSG_Tool_Type Get_Type (void) const { return( TOOL_TYPE_Grid_Interactive ); }
632
633 virtual bool needs_GUI (void) const { return( true ); }
634
635 virtual bool is_Interactive (void) const { return( true ); }
636
637
638protected:
639
640 bool Get_Grid_Pos (int &x, int &y) const;
641
642 int Get_xGrid (void) const;
643 int Get_yGrid (void) const;
644
645};
646
647
649// //
650// Tool Library Interface Definitions //
651// //
653
654//---------------------------------------------------------
670
671//---------------------------------------------------------
672typedef CSG_Tool * (* TSG_PFNC_TLB_Create_Tool) (int i);
674
675//---------------------------------------------------------
677{
678public:
680 virtual ~CSG_Tool_Library_Interface(void);
681
682 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);
683 bool Destroy (void);
684
685 const CSG_String & Get_Info (int ID);
686
687 int Get_Count (void);
688 CSG_Tool * Get_Tool (int i);
689
690 CSG_Tool * Create_Tool (int i, bool bWithGUI = false, bool bWithCMD =true);
691 bool Delete_Tool (CSG_Tool *pTool);
692 bool Delete_Tools (void);
693
694
695private:
696
697 CSG_Strings m_Info;
698
699 CSG_Array_Pointer m_Tools, m_xTools;
700
701 TSG_PFNC_TLB_Create_Tool m_Fnc_Create_Tool;
702
703};
704
705//---------------------------------------------------------
706#define SYMBOL_TLB_Initialize "TLB_Initialize"
707typedef bool (* TSG_PFNC_TLB_Initialize) (const SG_Char *);
708
709#define SYMBOL_TLB_Finalize "TLB_Finalize"
710typedef bool (* TSG_PFNC_TLB_Finalize) (void);
711
712#define SYMBOL_TLB_Get_Interface "TLB_Get_Interface"
713typedef CSG_Tool_Library_Interface * (* TSG_PFNC_TLB_Get_Interface) (void);
714
715//---------------------------------------------------------
716#define TLB_INTERFACE_SKIP_TOOL ((CSG_Tool *)0x1)
717
718//---------------------------------------------------------
719#define TLB_INTERFACE_ESTABLISH CSG_Tool_Library_Interface TLB_Interface;\
720\
721extern "C" _SAGA_DLL_EXPORT CSG_Tool_Library_Interface * TLB_Get_Interface (void)\
722{\
723 return( &TLB_Interface );\
724}\
725
726//---------------------------------------------------------
727#define TLB_INTERFACE_INITIALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Initialize(const SG_Char *TLB_Path)\
728{\
729 return( TLB_Interface.Create(SAGA_VERSION, TLB_Path, Get_Info, Create_Tool) );\
730}\
731
732//---------------------------------------------------------
733#define TLB_INTERFACE_FINALIZE extern "C" _SAGA_DLL_EXPORT bool TLB_Finalize (void)\
734{\
735 return( true );\
736}\
737
738//---------------------------------------------------------
739#define TLB_INTERFACE TLB_INTERFACE_ESTABLISH TLB_INTERFACE_INITIALIZE TLB_INTERFACE_FINALIZE
740
741//---------------------------------------------------------
742#ifndef SWIG
743
745
746#endif // #ifdef SWIG
747
748
750// //
751// //
752// //
754
755//---------------------------------------------------------
756#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
@ SG_UI_DATAOBJECT_UPDATE
Definition api_core.h:1639
#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:1371
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:633
virtual bool is_Interactive(void) const
Definition tool.h:635
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:631
double Get_Cellarea(void) const
Definition tool.h:450
void Lock_Set(int x, int y, char Value=1)
Definition tool.h:469
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:428
double Get_Length(int i) const
Definition tool.h:452
bool is_InGrid(int x, int y) const
Definition tool.h:454
double Get_XMin(void) const
Definition tool.h:445
double Get_UnitLength(int i) const
Definition tool.h:453
bool is_InGrid(int x, int y, int Rand) const
Definition tool.h:455
static int Get_xTo(int i, int x=0)
Definition tool.h:457
static int Get_yFrom(int i, int y=0)
Definition tool.h:460
double Get_XMax(void) const
Definition tool.h:447
virtual bool is_Grid(void) const
Definition tool.h:433
const CSG_Grid_System & Get_System(void) const
Definition tool.h:430
static int Get_yTo(int i, int y=0)
Definition tool.h:458
static int Get_xFrom(int i, int x=0)
Definition tool.h:459
int Get_NX(void) const
Definition tool.h:442
CSG_Tool_Grid(void)
Definition tool_grid.cpp:63
double Get_YMin(void) const
Definition tool.h:446
char Lock_Get(int x, int y)
Definition tool.h:467
bool is_Locked(int x, int y)
Definition tool.h:466
double Get_Cellsize(void) const
Definition tool.h:449
int Get_NY(void) const
Definition tool.h:443
sLong Get_NCells(void) const
Definition tool.h:444
double Get_YMax(void) const
Definition tool.h:448
int Get_Drag_Mode(void) const
Definition tool.h:549
bool is_Ctrl(void) const
Definition tool.h:570
double Get_xPosition(void) const
Definition tool.h:561
bool is_Alt(void) const
Definition tool.h:569
bool Set_Projection(const CSG_Projection &Projection)
double Get_yPosition(void) const
Definition tool.h:562
double Get_xPosition_Last(void) const
Definition tool.h:565
bool is_Shift(void) const
Definition tool.h:568
friend class CSG_Tool_Grid_Interactive
Definition tool.h:537
const CSG_Projection & Get_Projection(void) const
Definition tool.h:554
const CSG_Point & Get_Position_Last(void) const
Definition tool.h:564
bool Execute_Keyboard(int Character, int Keys)
double Get_yPosition_Last(void) const
Definition tool.h:566
friend class CSG_Tool_Interactive
Definition tool.h:536
const CSG_Point & Get_Position(void) const
Definition tool.h:560
bool Execute_Position(CSG_Point ptWorld, TSG_Tool_Interactive_Mode Mode, int Keys)
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:605
virtual bool needs_GUI(void) const
Definition tool.h:607
virtual bool is_Interactive(void) const
Definition tool.h:609
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:177
virtual bool On_After_Execution(void)
Definition tool.h:240
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 CSG_Table & Get_References_Table(void) const
Definition tool.h:170
const SG_Char * Get_Execution_Info(void) const
Definition tool.h:244
virtual bool is_Interactive(void) const
Definition tool.h:233
CSG_Parameters * Get_Parameters(void)
Definition tool.h:175
void Add_Reference(const CSG_String &Authors, const CSG_String &Date, const CSG_String &Title, const CSG_String &Source, const CSG_String &Link="", const CSG_String &Link_Text="")
Definition tool.cpp:294
virtual void Destroy(void)
Definition tool.cpp:114
virtual bool On_Execute(void)=0
friend class CSG_Tool_Chain
Definition tool.h:139
CSG_MetaData History_Supplement
Definition tool.h:268
virtual bool On_Before_Execution(void)
Definition tool.h:239
static int _On_Parameter_Changed(CSG_Parameter *pParameter, int Flags)
Definition tool.cpp:756
void Add_Description(const CSG_String &String, bool bNewLine=true)
Definition tool.cpp:179
virtual bool needs_GUI(void) const
Definition tool.h:228
CSG_Parameters Parameters
Definition tool.h:266
virtual TSG_Tool_Type Get_Type(void) const
Definition tool.h:148
virtual bool do_Sync_Projections(void) const
Definition tool.h:226
void Add_Dynamic_Description(const CSG_String &String, bool bNewLine=true)
Definition tool.cpp:199
CSG_Tool(void)
Definition tool.cpp:67
virtual CSG_String Get_MenuPath(void)
Definition tool.h:167
void Set_Description(const CSG_String &String)
Definition tool.cpp:174
TSG_PFNC_Parameter_Changed Get_Parameter_Changed(void)
Definition tool.h:289
void Set_Author(const CSG_String &String)
Definition tool.cpp:152
virtual bool is_Grid(void) const
Definition tool.h:232
bool is_Progress(void) const
Definition tool.h:234
const CSG_String & Get_ID(void) const
Definition tool.h:150
Script_Format
Definition tool.h:252
virtual int On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
Definition tool.cpp:786
bool is_Executing(void) const
Definition tool.h:235
virtual int On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
Definition tool.cpp:780
void Set_Dynamic_Description(const CSG_String &String)
Definition tool.cpp:194
void Set_Version(const CSG_String &String)
Definition tool.cpp:163
const SG_Char * Get_Icon(void)
Definition tool.h:159
CSG_Parameters * Get_Parameters(int i) const
Definition tool.h:178
void Set_Name(const CSG_String &String)
Definition tool.cpp:141
CSG_Parameters * Get_Parameters(int i)
Definition tool.h:179
int(* TSG_PFNC_Parameter_Changed)(CSG_Parameter *pParameter, int Flags)
@ PARAMETER_TYPE_Undefined
Definition parameters.h:166
TSG_Tool_Interactive_DragMode
Definition tool.h:513
@ TOOL_INTERACTIVE_DRAG_BOX
Definition tool.h:516
@ TOOL_INTERACTIVE_DRAG_LINE
Definition tool.h:515
@ TOOL_INTERACTIVE_DRAG_CIRCLE
Definition tool.h:517
@ TOOL_INTERACTIVE_DRAG_NONE
Definition tool.h:514
CSG_Tool *(* TSG_PFNC_TLB_Create_Tool)(int i)
Definition tool.h:672
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:656
@ TLB_INFO_Library
Definition tool.h:665
@ TLB_INFO_SAGA_Version
Definition tool.h:666
@ TLB_INFO_Menu_Path
Definition tool.h:661
@ TLB_INFO_Name
Definition tool.h:657
@ TLB_INFO_Version
Definition tool.h:660
@ TLB_INFO_Category
Definition tool.h:662
@ TLB_INFO_Description
Definition tool.h:658
@ TLB_INFO_User
Definition tool.h:663
@ TLB_INFO_File
Definition tool.h:664
@ TLB_INFO_Count
Definition tool.h:667
@ TLB_INFO_Author
Definition tool.h:659
#define TOOL_INTERACTIVE_KEY_SHIFT
Definition tool.h:525
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:710
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:493
@ TOOL_INTERACTIVE_RDOWN
Definition tool.h:501
@ TOOL_INTERACTIVE_LUP
Definition tool.h:496
@ TOOL_INTERACTIVE_MOVE_RDOWN
Definition tool.h:507
@ TOOL_INTERACTIVE_LDCLICK
Definition tool.h:497
@ TOOL_INTERACTIVE_LDOWN
Definition tool.h:495
@ TOOL_INTERACTIVE_MOVE_LDOWN
Definition tool.h:505
@ TOOL_INTERACTIVE_RUP
Definition tool.h:502
@ TOOL_INTERACTIVE_MUP
Definition tool.h:499
@ TOOL_INTERACTIVE_MOVE_MDOWN
Definition tool.h:506
@ TOOL_INTERACTIVE_UNDEFINED
Definition tool.h:494
@ TOOL_INTERACTIVE_MDOWN
Definition tool.h:498
@ TOOL_INTERACTIVE_RDCLICK
Definition tool.h:503
@ TOOL_INTERACTIVE_MOVE
Definition tool.h:504
@ TOOL_INTERACTIVE_MDCLICK
Definition tool.h:500
CSG_String(* TSG_PFNC_TLB_Get_Info)(int i)
Definition tool.h:673
bool(* TSG_PFNC_TLB_Initialize)(const SG_Char *)
Definition tool.h:707
#define TOOL_INTERACTIVE_KEY_ALT
Definition tool.h:526
#define TOOL_INTERACTIVE_KEY_CTRL
Definition tool.h:527