00001
00090 #ifndef INC_MI32_GEOFRMLA_H
00091 #define INC_MI32_GEOFRMLA_H
00092
00093 #ifndef INC_RVC_TIN_H
00094 #include <rvc/tin.h>
00095 #endif
00096
00097 #ifndef INC_RVC_VECTOR_H
00098 #include <rvc/vector.h>
00099 #endif
00100
00101 #ifndef INC_RVC_RASTER_H
00102 #include <rvc/raster.h>
00103 #endif
00104
00105 #ifndef INC_MI32_CONTRASTPARM_H
00106 #include <mi32/contrastparm.h>
00107 #endif
00108
00109 #ifndef INC_MI32_SERIALIZERITEM_H
00110 #include <mi32/serializeritem.h>
00111 #endif
00112
00113 #if !defined(INC_MI32_XBASE_H) && defined(X_NATIVE)
00114 #include <mi32/xbase.h>
00115 #endif
00116
00117
00118 #ifndef GENERATING_DOXYGEN_OUTPUT
00119 class RASTINTERP;
00120 struct MENUITEM;
00121 struct MxPromptCallbackStruct;
00122 namespace SML {
00123 class SYMBOL;
00124 class EDITOR;
00125 class CONTEXT;
00126 }
00127 #endif
00128
00129
00131 class GEOFORMULA {
00132 public:
00133
00135
00136 enum OUTPUTTYPE {
00137 OUTPUTTYPE_Numeric = 0,
00138 OUTPUTTYPE_Color = 1
00139 };
00140
00142
00143 enum EXTENTSMODE {
00144 EXTENTSMODE_UserDefined = 0,
00145 EXTENTSMODE_Intersection = 1,
00146 EXTENTSMODE_Union = 2,
00147 EXTENTSMODE_Region = 3
00148 };
00149
00150 enum SCRIPTFLAGS {
00151 SCRIPTFLAG_None = 0x00,
00152 SCRIPTFLAG_AllSymbols = 0x01,
00153 SCRIPTFLAG_NoParse = 0x02
00154 };
00155
00156
00157 class EDITOR;
00158
00160 class OBJECT {
00161 public:
00162
00164 OBJECT (
00165 const OBJECT& rhs
00166 );
00167
00169 virtual ~OBJECT (
00170 ) = 0;
00171
00173 OBJECT& operator= (
00174 const OBJECT& rhs
00175 );
00176
00177 ERRVALUE AddSymbols (
00178 GEOFORMULA& formula,
00179 bool OnlyIfUsed = true
00180 );
00181
00182 void ClearSymbols (
00183 );
00184
00185 void Close (
00186 );
00187
00188 const RVC::OBJITEM& GetObjectItem (
00189 ) const { return (m_objitem); }
00190
00191 const FILEPATH& GetPath (
00192 ) const { return (m_objitem.GetFilePath()); }
00193
00194 const SPATREF::COORDREFSYS& GetCoordRefSys (
00195 ) const { return (GetMapRegion().GetCoordRefSys()); }
00196
00197 const REGION2D& GetMapRegion (
00198 ) const { return (m_MapRegion); }
00199
00200 const REGION2D& GetObjRegion (
00201 ) const { return (m_ObjRegion); }
00202
00203 const MISTRING& GetSymbolName (
00204 ) const { return (m_SymbolName); }
00205
00206 ERRVALUE Open (
00207 );
00208
00209 protected:
00210
00211 MISTRING m_SymbolName;
00212 SML::SYMBOL *m_symobj;
00213 SIMPLE_ARRAY<DPOINT2D> m_pointbuf;
00214
00216 OBJECT (
00217 const RVC::OBJITEM& objitem
00218 );
00219
00221 OBJECT (
00222 RVC::OBJTYPE objtype,
00223 INIHANDLE handle,
00224 int objnum
00225 );
00226
00228 OBJECT (
00229 RVC::OBJTYPE objtype,
00230 const MISTRING& SymbolName,
00231 const RVC::OBJITEM& ObjItem
00232 );
00233
00234 ERRVALUE SetObjPoint (
00235 int idx
00236 );
00237
00238 void WriteDefn (
00239 INIHANDLE handle,
00240 int objnum
00241 ) const;
00242
00243 private:
00244 #ifndef GENERATING_DOXYGEN_OUTPUT
00245
00246 SML::SYMBOL *m_symx;
00247 SML::SYMBOL *m_symy;
00248 MAT3X3 m_fwd, m_inv;
00249 bool m_IsAffine;
00250
00251 RVC::OBJITEM m_objitem;
00252 REGION2D m_ObjRegion;
00253 REGION2D m_MapRegion;
00254 TRANS2D_MAPGEN m_trans;
00255
00256 ERRVALUE CalcObjPoints (
00257 const GEOFORMULA& formula,
00258 const DPOINT2D& start,
00259 const DPOINT2D& inc,
00260 INT32 numvals
00261 );
00262
00263 ERRVALUE SetupTrans (
00264 GEOFORMULA& formula
00265 );
00266
00267 virtual ERRVALUE v_AddSymbols (
00268 GEOFORMULA& formula,
00269 bool OnlyIfUsed
00270 );
00271
00272 virtual void v_ClearSymbols (
00273 );
00274
00275 virtual void v_Close (
00276 ) = 0;
00277
00278 virtual ERRVALUE v_Open (
00279 ) = 0;
00280
00281 virtual ERRVALUE v_SetObjPoint (
00282 int idx
00283 ) = 0;
00284
00285 virtual void v_WriteDefn (
00286 INIHANDLE handle,
00287 int objnum
00288 ) const = 0;
00289
00290 friend class GEOFORMULA;
00291 #endif // GENERATING_DOXYGEN_OUTPUT
00292 };
00293
00294
00296 class RASTER : public OBJECT {
00297 public:
00298
00300 RASTER (
00301 const RASTER& rhs
00302 );
00303
00305 virtual ~RASTER (
00306 );
00307
00309 RASTER& operator= (
00310 const RASTER& rhs
00311 );
00312
00313 void SetContrastType (
00314 CONTRASTPARM::METHOD ContrastMethod
00315 ) { m_ContrastMethod = ContrastMethod; }
00316
00317 void SetContrastUseTable (
00318 bool contusetable
00319 ) { m_UseContrastTable = contusetable; }
00320
00321 private:
00322 #ifndef GENERATING_DOXYGEN_OUTPUT
00323
00324 enum DATATYPE {
00325 DATATYPE_RasterNumeric = 0,
00326 DATATYPE_RasterColor = 1,
00327 DATATYPE_RasterComplex = 2
00328 };
00329
00330 RVC::RASTER m_ObjRaster;
00331 DATATYPE m_datatype;
00332 CONTRASTPARM::METHOD m_ContrastMethod;
00333 bool m_UseContrastTable;
00334 RASTINTERP *m_pRastInterp;
00335 SML::SYMBOL *m_symval;
00336 SML::SYMBOL *m_symred;
00337 SML::SYMBOL *m_symgreen;
00338 SML::SYMBOL *m_symblue;
00339 bool m_NeedValue;
00340
00342 RASTER (
00343 const RVC::OBJITEM& ObjItem
00344 );
00345
00347 RASTER (
00348 INIHANDLE handle,
00349 int objnum
00350 );
00351
00353 RASTER (
00354 const MISTRING& SymbolName,
00355 const RVC::OBJITEM& ObjItem
00356 );
00357
00358 ERRVALUE SerialWrite (
00359 SERIALIZER& serializer
00360 );
00361 #endif // GENERATING_DOXYGEN_OUTPUT
00362
00363 virtual ERRVALUE v_AddSymbols (
00364 GEOFORMULA& formula,
00365 bool OnlyIfUsed
00366 );
00367
00368 virtual void v_ClearSymbols (
00369 );
00370
00371 virtual void v_Close (
00372 );
00373
00374 virtual ERRVALUE v_Open (
00375 );
00376
00377 virtual ERRVALUE v_SetObjPoint (
00378 int idx
00379 );
00380
00381 virtual void v_WriteDefn (
00382 INIHANDLE handle,
00383 int objnum
00384 ) const;
00385
00386 friend class GEOFORMULA;
00387 friend class EDITOR;
00388 };
00389
00390
00392 class VECTOR : public OBJECT {
00393 public:
00394
00396 VECTOR (
00397 );
00398
00400 VECTOR (
00401 const VECTOR& rhs
00402 );
00403
00405 virtual ~VECTOR (
00406 );
00407
00409 VECTOR& operator= (
00410 const VECTOR& rhs
00411 );
00412
00413 private:
00414 #ifndef GENERATING_DOXYGEN_OUTPUT
00415
00416 RVC::VECTOR m_VectObj;
00417
00419 VECTOR (
00420 const RVC::OBJITEM& ObjItem
00421 );
00422
00424 VECTOR (
00425 INIHANDLE handle,
00426 int objnum
00427 ):
00428 OBJECT(RVC::OBJTYPE_Vector,handle,objnum)
00429 { }
00430
00432 VECTOR (
00433 const MISTRING& SymbolName,
00434 const RVC::OBJITEM& ObjItem
00435 );
00436
00437 ERRVALUE SerialWrite (
00438 SERIALIZER& serializer
00439 );
00440 #endif // GENERATING_DOXYGEN_OUTPUT
00441
00442 virtual void v_Close (
00443 );
00444
00445 virtual ERRVALUE v_Open (
00446 );
00447
00448 virtual ERRVALUE v_SetObjPoint (
00449 int idx
00450 );
00451
00452 virtual void v_WriteDefn (
00453 INIHANDLE handle,
00454 int objnum
00455 ) const;
00456
00457 friend class GEOFORMULA;
00458 };
00459
00460
00462 class TIN : public OBJECT {
00463 public:
00464
00466 TIN (
00467 );
00468
00470 TIN (
00471 const TIN& rhs
00472 );
00473
00475 virtual ~TIN (
00476 );
00477
00479 TIN& operator= (
00480 const TIN& rhs
00481 );
00482
00483 private:
00484 #ifndef GENERATING_DOXYGEN_OUTPUT
00485
00486 RVC::TIN m_TinObj;
00487 SML::SYMBOL *m_symval;
00488
00490 TIN (
00491 const RVC::OBJITEM& ObjItem
00492 );
00493
00495 TIN (
00496 INIHANDLE handle,
00497 int objnum
00498 ):
00499 OBJECT(RVC::OBJTYPE_TIN,handle,objnum)
00500 { }
00501
00503 TIN (
00504 const MISTRING& SymbolName,
00505 const RVC::OBJITEM& ObjItem
00506 );
00507
00508 ERRVALUE SerialWrite (
00509 SERIALIZER& serializer
00510 );
00511 #endif // GENERATING_DOXYGEN_OUTPUT
00512
00513 virtual ERRVALUE v_AddSymbols (
00514 GEOFORMULA& formula,
00515 bool OnlyIfUsed
00516 );
00517
00518 virtual void v_ClearSymbols (
00519 );
00520
00521 virtual void v_Close (
00522 );
00523
00524 virtual ERRVALUE v_Open (
00525 );
00526
00527 virtual ERRVALUE v_SetObjPoint (
00528 int idx
00529 );
00530
00531 virtual void v_WriteDefn (
00532 INIHANDLE handle,
00533 int objnum
00534 ) const;
00535
00536 friend class GEOFORMULA;
00537 };
00538
00539
00541 class VALUE {
00542 public:
00543
00544 VALUE (
00545 );
00546
00547 VALUE (
00548 const VALUE& rhs
00549 );
00550
00551 virtual ~VALUE (
00552 ) {
00553 }
00554
00555 VALUE& operator= (
00556 const VALUE& rhs
00557 );
00558
00559 void ClearSymbol (
00560 ) { m_Symbol = 0; }
00561
00562 void CreateSymbol (
00563 SML::CONTEXT *context
00564 );
00565
00566 double GetDefaultValue (
00567 ) const { return (m_DefaultValue); }
00568
00569 const MISTRING& GetSymbolName (
00570 ) const { return (m_SymbolName); }
00571
00572 void SetDefaultValue (
00573 double value
00574 ) { m_DefaultValue = m_UserValue = value; }
00575
00576 void SetSymbolName (
00577 const MIUNICODE* SymbolName
00578 ) { m_SymbolName = SymbolName; }
00579
00580 void SetUserValue (
00581 double value
00582 ) { m_UserValue = value; }
00583
00584 void WriteDefn (
00585 INIHANDLE handle,
00586 int idx
00587 ) const;
00588
00589 private:
00590 #ifndef GENERATING_DOXYGEN_OUTPUT
00591
00592 MISTRING m_SymbolName;
00593 double m_DefaultValue;
00594 double m_UserValue;
00595 SML::SYMBOL *m_Symbol;
00596
00598 VALUE (
00599 INIHANDLE handle,
00600 int valnum
00601 );
00602
00604 VALUE (
00605 const MIUNICODE *name,
00606 double dftvalue
00607 );
00608
00609 static const SERIALIZERITEM* SerialGetItemDef ();
00610
00611 ERRVALUE SerialRead (
00612 SERIALIZER& serializer
00613 );
00614
00615 ERRVALUE SerialWrite (
00616 SERIALIZER& serializer
00617 );
00618
00619 #endif // GENERATING_DOXYGEN_OUTPUT
00620 friend class GEOFORMULA;
00621 friend class EDITOR;
00622 };
00623
00624
00626 #ifdef X_NATIVE
00627 class EDITOR {
00628 public:
00629
00631 explicit EDITOR (
00632 GEOFORMULA& formula
00633 );
00634
00636 ~EDITOR (
00637 ) {
00638 }
00639
00640 bool CheckValid (
00641 Widget pageform,
00642 int scriptpage
00643 );
00644
00645 Widget CreateFormExtents (
00646 Widget pwidget,
00647 void *arglist,
00648 int argcount
00649 );
00650
00651 void CreatePageObjects (Widget);
00652
00653 void CreatePageValues (Widget);
00654
00655 void CreatePageScript (Widget);
00656
00657 void DisableUpdateContext (
00658 ) { ++m_UpdateContextDisabled; }
00659
00660 void EnableUpdateContext (
00661 ) { if (m_UpdateContextDisabled) --m_UpdateContextDisabled; }
00662
00663 SML::EDITOR* GetScriptEditHandle (
00664 ) const {
00665 return (m_qehandle);
00666 }
00667
00668 const MISTRING& GetScript (
00669 ) const;
00670
00671 void* GetTextEditHandle (
00672 ) const {
00673 return (m_tehandle);
00674 }
00675
00676 bool IsChanged (
00677 ) const { return (m_IsChanged); }
00678
00679 int Reset (
00680 );
00681
00682 ERRVALUE SelectExtentsRegion (
00683 );
00684
00685 void SetChanged (
00686 bool ischanged = true
00687 ) { m_IsChanged = ischanged; }
00688
00689 void SetMsgLine (
00690 Widget MsgLine
00691 );
00692
00693 void ShowAllDetails (
00694 );
00695
00696 void ShowObjListDetails (
00697 bool show = true
00698 );
00699
00700 void ShowValListDetails (
00701 bool show = true
00702 );
00703
00704 int UpdateObjects (
00705 );
00706
00707 void UpdateScriptContext (
00708 bool doinit
00709 );
00710
00711 private:
00712 #ifndef GENERATING_DOXYGEN_OUTPUT
00713
00714 struct OBJINFO {
00715
00716 EDITOR& m_editor;
00717 OBJECT& m_object;
00718 Widget m_form;
00719 Widget m_DetailsTB;
00720 Widget m_SymbolP;
00721 Widget m_ObjectLabel;
00722 Widget m_detform;
00723 Widget m_ContrastMethodOM;
00724 Widget m_usecontabTB;
00725 MIUNICODE m_symname[32];
00726
00727 OBJINFO (
00728 EDITOR& editor,
00729 OBJECT& object
00730 ):
00731 m_editor(editor),
00732 m_object(object)
00733 {
00734 }
00735 };
00736
00737 struct VALINFO {
00738
00739 EDITOR& m_editor;
00740 VALUE& m_value;
00741 Widget m_form;
00742 Widget m_SymbolP;
00743 Widget m_detform;
00744 MIUNICODE m_symname[32];
00745
00746 VALINFO (
00747 EDITOR& editor,
00748 VALUE& value
00749 ):
00750 m_editor(editor),
00751 m_value(value)
00752 {
00753 }
00754 };
00755
00756 GEOFORMULA& m_Formula;
00757 Widget m_Shell;
00758 Widget m_MsgLine;
00759 Widget m_ObjectsPage;
00760 Widget m_ObjectsRC;
00761 Widget m_ShowObjListDetailsTB;
00762 Widget m_ValuesPage;
00763 Widget m_ValuesRC;
00764 Widget m_ShowValListDetailsTB;
00765 Widget m_ScriptPage;
00766 Widget m_ScriptXeT;
00767 Widget m_ExtentsOM;
00768 Widget m_ExtentsRegionPB;
00769 Widget m_ExtentsRegionXeT;
00770 void *m_tehandle;
00771 SML::EDITOR *m_qehandle;
00772 bool m_IsChanged;
00773 bool m_HasRaster;
00774 bool m_ShowObjListDetails;
00775 bool m_ShowValListDetails;
00776 UINT32 m_UpdateContextDisabled;
00777 MIUNICODE m_NewValueName[16];
00778 double m_NewValueDefault;
00779
00780 MILIST<OBJINFO> m_ObjInfoList;
00781 MILIST<VALINFO> m_ValInfoList;
00782 REGION2D m_MapRegionUnion;
00783 REGION2D m_MapRegionIntersection;
00784
00785 static void CB_AddValue (Widget, void*, void*);
00786 static void CB_OptionExtentsMode (Widget, void*, void*);
00787 static void CB_OptionRastContType (Widget, void*, void*);
00788 static void CB_SelectExtentsRegion (Widget, void*, void*);
00789 static void CB_ToggleRastContUseTab (Widget, void*, void*);
00790
00791 static MENUITEM* GetMenuOptionContrast ();
00792 static MENUITEM* GetMenuOptionExtentsMode ();
00793
00794 static void PCB_ChangeObjectSymbolName (
00795 MxPromptCallbackStruct *cbs,
00796 void *vobjinfo
00797 );
00798
00799 static void PCB_ChangeValueSymbolName (
00800 MxPromptCallbackStruct *cbs,
00801 void *vobjinfo
00802 );
00803
00804 static bool NewValueCheckOK (
00805 void *veditor
00806 );
00807
00808 static Widget NewValueCreateForm (
00809 Widget pwidget,
00810 void *veditor,
00811 void *arglist,
00812 int argcount
00813 );
00814
00815 void ClearMessage (
00816 ) const;
00817
00818 void CreateObjectForm (
00819 OBJECT& obj,
00820 const char *IconName
00821 );
00822
00823 void CreateValueForm (
00824 VALUE& val
00825 );
00826
00827 void SetSensitive () const;
00828
00829 EDITOR (const EDITOR&);
00830 EDITOR& operator= (const EDITOR&);
00831 #endif // GENERATING_DOXYGEN_OUTPUT
00832
00833 friend class GEOFORMULA;
00834 };
00835 #endif
00836
00837
00839 GEOFORMULA (
00840 );
00841
00843 GEOFORMULA (
00844 const GEOFORMULA& rhs
00845 );
00846
00848 ~GEOFORMULA (
00849 );
00850
00852 GEOFORMULA& operator= (
00853 const GEOFORMULA& rhs
00854 );
00855
00857 ERRVALUE AddValue (
00858 const MIUNICODE *SymbolName,
00859 double value
00860 );
00861
00863 ERRVALUE CreateFromObjects (
00864 const RVC::OBJITEMLIST& objitems
00865 );
00866
00867 #ifdef USE_MGUI
00869 ERRVALUE DlgSelectExtentsRegion (
00870 MDLGPARENT dlgparent,
00871 const REGION2D *testregion = 0
00872 );
00873 #endif
00874
00875 #ifdef USE_MGUI
00877 ERRVALUE DlgSelectObjects (
00878 MDLGPARENT dlgparent
00879 );
00880 #endif
00881
00883 ERRVALUE Evaluate (
00884 const DPOINT2D& start,
00885 const DPOINT2D& increment,
00886 INT32 numvals,
00887 void *buffer,
00888 UINT8 *omask
00889 );
00890
00892 const REGION2D& GetExtMapRegion (
00893 ) const { return (m_ExtMapRegion); }
00894
00896 ERRVALUE GetFirstObjectCoordRefSys (
00897 SPATREF::COORDREFSYS& CoordRefSys
00898 ) const;
00899
00901 ERRVALUE GetMinRasterCellSize (
00902 double& MinCellSize
00903 ) const;
00904
00906 int GetNumObjects (
00907 ) const {
00908 return (m_Rasters.GetNumItems() + m_Vectors.GetNumItems() + m_TINs.GetNumItems());
00909 }
00910
00912 void GetObjItems(RVC::OBJITEMLIST& objitems);
00913
00915 const MILIST<RASTER>& GetObjectListRaster (
00916 ) const {
00917 return (m_Rasters);
00918 }
00919
00921 const MILIST<TIN>& GetObjectListTIN (
00922 ) const {
00923 return (m_TINs);
00924 }
00925
00927 const MILIST<VECTOR>& GetObjectListVector (
00928 ) const {
00929 return (m_Vectors);
00930 }
00931
00933 OUTPUTTYPE GetOutputType (
00934 ) const {
00935 return (m_OutputType);
00936 }
00937
00939 const MISTRING& GetScript (
00940 ) const {
00941 return (m_Script);
00942 }
00943
00945 ERRVALUE GetTransToExtCRS (
00946 TRANS2D_MAPGEN& Trans,
00947 bool dooutput = false
00948 ) const;
00949
00951 ERRVALUE OpenObjects (
00952 );
00953
00955 ERRVALUE ReadDefn (
00956 const FILEPATH& filepath
00957 );
00958
00960 ERRVALUE SerialRead (
00961 SERIALIZER& serializer
00962 );
00963
00965 ERRVALUE SerialWrite (
00966 SERIALIZER& serializer,
00967 const char *tagname = 0
00968 );
00969
00971 void SetExtMapCoordRefSys (
00972 const SPATREF::COORDREFSYS& CoordRefSys
00973 ) { m_ExtMapRegion.SetCoordRefSys(CoordRefSys); m_Trans.SetOutputMapCoordRefSys(CoordRefSys); }
00974
00976 ERRVALUE SetObjItems (const RVC::OBJITEMLIST& objitems);
00977
00979 void SetOutputCoordRefSys (
00980 const SPATREF::COORDREFSYS& CoordRefSys
00981 ) { m_Trans.SetInputMapCoordRefSys(CoordRefSys); }
00982
00984 void SetOutputTrans (
00985 const MAT3X3 fwd,
00986 const MAT3X3 inv
00987 ) { m_Trans.SetInputTrans(fwd,inv); }
00988
00990 void SetOutputTrans (
00991 const TRANS2D_AFFINE& trans
00992 ) { m_Trans.SetInputTrans(trans); }
00993
00995 void SetOutputTrans (
00996 const TRANS2D_MAPGEN& trans
00997 ) { m_Trans.CopyOutputToInput(trans); }
00998
01000 void SetOutputTransIdentity (
01001 ) { m_Trans.SetInputTransIdentity(); }
01002
01004 void SetOutputType (
01005 OUTPUTTYPE OutputType
01006 ) { m_OutputType = OutputType; }
01007
01009 void SetScript (
01010 const MIUNICODE* script
01011 ) { m_Script = script; }
01012
01014 ERRVALUE Start (
01015 const DRECT2D *extents,
01016 SCRIPTFLAGS flags = SCRIPTFLAG_None
01017 );
01018
01020 void Stop (
01021 );
01022
01024 ERRVALUE WriteDefn (
01025 const FILEPATH& filepath
01026 );
01027
01028 private:
01029 #ifndef GENERATING_DOXYGEN_OUTPUT
01030
01031 OUTPUTTYPE m_OutputType;
01032 EXTENTSMODE m_ExtentsMode;
01033 SML::CONTEXT *m_Context;
01034 int m_Segment;
01035 SML::SYMBOL *m_symred;
01036 SML::SYMBOL *m_symgreen;
01037 SML::SYMBOL *m_symblue;
01038 bool m_AllAffine;
01039 #ifdef X_NATIVE
01040 EDITOR *m_editor;
01041 #endif
01042
01043 MILIST<RASTER> m_Rasters;
01044 MILIST<VECTOR> m_Vectors;
01045 MILIST<TIN> m_TINs;
01046 MILIST<VALUE> m_Values;
01047 MISTRING m_Script;
01048 RVC::OBJITEM m_ObjItemRegion;
01049 REGION2D m_ExtMapRegion;
01050 TRANS2D_MAPGEN m_Trans;
01051 SIMPLE_ARRAY<DPOINT2D> m_ipointbuf;
01052
01053 static const SERIALIZERITEM* SerialGetItemDef ();
01054 static ERRVALUE SerializerCB_Object (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
01055 static ERRVALUE SerializerCB_Value (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
01056
01057 ERRVALUE AddObjectRegion (
01058 const OBJECT& object
01059 );
01060
01061 SML::SYMBOL* AddSymbol (
01062 const MISTRING& basename,
01063 const char* subname,
01064 bool OnlyIfUsed
01065 );
01066
01067 void Clear ();
01068
01069 void Copy (
01070 const GEOFORMULA& rhs
01071 );
01072
01073 OBJECT* FindObjectByName (
01074 const MIUNICODE *symname
01075 );
01076
01077 const VALUE* FindValueByName (
01078 const MIUNICODE *symname
01079 ) const;
01080
01081 const OBJECT* GetFirstObject () const;
01082
01083 int GetNumNameUses (const MISTRING& symname) const;
01084
01085 ERRVALUE InitQuery (
01086 SCRIPTFLAGS flags = SCRIPTFLAG_None
01087 );
01088
01090 bool SetObjectSymbolName (
01091 OBJECT& obj,
01092 const MIUNICODE *symname
01093 );
01094
01096 bool SetValueSymbolName (
01097 VALUE& obj,
01098 const MIUNICODE *symname
01099 );
01100
01101 void StopQuery ();
01102 #endif // GENERATING_DOXYGEN_OUTPUT
01103
01104 friend class EDITOR;
01105 friend class OBJECT;
01106 friend class RASTER;
01107 friend class VECTOR;
01108 friend class TIN;
01109 };
01110
01111 #ifndef GENERATING_DOXYGEN_OUTPUT
01112 DEFINE_ENUM_OP_BITWISE(GEOFORMULA::SCRIPTFLAGS)
01113 #endif
01114
01115 #endif // INC_MI32_GEOFRMLA_H