00001
00174 #ifndef INC_GRE_VIEWABLE_H
00175 #define INC_GRE_VIEWABLE_H
00176
00177 #ifndef INC_GRE_OBJECTBASE_H
00178 #include <gre/objectbase.h>
00179 #endif
00180
00181 #ifndef INC_MI32_SERIALIZERITEM_H
00182 #include <mi32/serializeritem.h>
00183 #endif
00184
00185 #ifndef INC_MI32_SERIALIZABLE_H
00186 #include <mi32/serializable.h>
00187 #endif
00188
00189 #ifndef INC_MI32_SIMPLEAR_H
00190 #include <mi32/simplear.h>
00191 #endif
00192
00193 #ifndef INC_MI32_RECT_H
00194 #include <mi32/rect.h>
00195 #endif
00196
00197 #ifndef INC_MI32_COLOR_H
00198 #include <mi32/color.h>
00199 #endif
00200
00201 #ifndef INC_RVC_OBJITEM_H
00202 #include <rvc/objitem.h>
00203 #endif
00204
00205 #ifndef INC_MI32_SMLBASE_H
00206 #include <mi32/smlbase.h>
00207 #endif
00208
00209 #ifndef INC_MI32_MILIST_H
00210 #include <mi32/milist.h>
00211 #endif
00212
00213
00214 #ifndef GENERATING_DOXYGEN_OUTPUT
00215 class STEREORENDER;
00216 #endif
00217
00218 namespace GRE {
00219
00220
00222 class VIEWABLE : public GRE::OBJECT {
00223 public:
00224
00225 #ifdef USE_MGUI
00226 class MAINSCRIPT : public SERIALIZABLE {
00227 public:
00229 enum FUNC {
00230 FUNC_OnViewDataTipShowRequest,
00231 FUNC_OnViewDataTipShowText,
00232 FUNC_OnGroupDrawLabelsBegin,
00233 FUNC_OnGroupDrawLabelsEnd,
00234 FUNC_OnLayerDrawLabelsBegin,
00235 FUNC_OnLayerDrawLabelsEnd,
00236 FUNC_OnDrawLabel,
00237 FUNC_COUNT
00238 };
00239
00240 MAINSCRIPT (VIEWABLE *viewable);
00241 virtual ~MAINSCRIPT ();
00242 int CallFunction (
00243 FUNC func,
00244 SMLARG *ArgIn,
00245 int NumArg,
00246 SMLARG *ArgRet = 0
00247 );
00248 int CallFunction (
00249 FUNC func,
00250 int NumArg,
00251 void *ArgPtr1,
00252 void *ArgPtr2 = 0,
00253 void *ArgPtr3 = 0
00254 );
00255 void Destroy ();
00256 int DlgEdit (MDLGPARENT dlgparent);
00257 bool HasFunction (FUNC func) const;
00258 bool HasScript () const;
00259 ERRVALUE Initialize ();
00260 void Terminate ();
00261 private:
00262 class CONTEXT;
00263 VIEWABLE *m_viewable;
00264 CONTEXT *m_pContext;
00265 MISTRING m_String;
00266 MISTRING m_DisplayString;
00267 bool m_IsEncrypted;
00268 MISTRING m_ScriptPath;
00269
00270 ERRVALUE CreateSMLContext (SMLCONTEXT *& smlcontext);
00271 static void GRECB_CtrlScript (const GRE::MSG *pMsg, void *vpCtrlScript);
00272 static const SERIALIZERITEM* SerialGetItemDef ();
00273 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00274 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00275 friend class MAINSCRIPT::CONTEXT;
00276 };
00277 #endif
00278
00279 class PARM_RENDERTORASTER {
00280 public:
00281
00283 PARM_RENDERTORASTER (
00284 COLORSPACE ColorSpace,
00285 INT32 RasterColumns,
00286 INT32 RasterRows,
00287 double CellSize
00288 );
00289
00291 PARM_RENDERTORASTER (
00292 COLORSPACE ColorSpace,
00293 INT32 RasterColumns,
00294 INT32 RasterRows
00295 );
00296
00298 PARM_RENDERTORASTER (
00299 COLORSPACE ColorSpace,
00300 double CellSize
00301 );
00302
00303 ~PARM_RENDERTORASTER ();
00304
00305 const COLOR& GetBackgroundColor () const
00306 { return (m_BackgroundColor); }
00307
00308 double GetCellSize () const
00309 { return (m_CellSize); }
00310
00311 const COLOR_ARRAY* GetColorPalette () const
00312 { return (m_pPalette); }
00313
00314 COLORSPACE GetColorSpace () const
00315 { return (m_ColorSpace); }
00316
00317 const DRECT2D& GetExtentsView () const
00318 { return (m_ExtentsView); }
00319
00320 MGD::PIXEL GetFallbackPixel () const
00321 { return (m_FallbackPixel); }
00322
00323 INT32 GetImageColumns () const
00324 { return (m_RasterColumns); }
00325
00326 INT32 GetImageRows () const
00327 { return (m_RasterRows); }
00328
00329 bool GetSaveGeoreference () const
00330 { return (m_SaveGeoreference); }
00331
00332 const STEREORENDER* GetStereoValues () const
00333 { return (m_pStereoValues); }
00334
00335 bool GetUseClosestColorIfNotInPalette () const
00336 { return (m_UseClosestIfNotInPalette); }
00337
00338 int GetViewNum () const
00339 { return (m_ViewNum); }
00340
00341 bool HasColorPalette () const
00342 { return (m_pPalette != 0); }
00343
00344 bool IsDrawingStereo () const
00345 { return (m_StereoDrawing && m_pStereoValues != 0); }
00346
00347 void SetBackgroundColor (
00348 const COLOR& BackgroundColor
00349 ) { m_BackgroundColor = BackgroundColor; }
00350
00351 void SetExtents (
00352 const DRECT2D& ExtentsView
00353 ) { m_ExtentsView = ExtentsView; }
00354
00355 void SetPalette (
00356 const COLOR_ARRAY* pPalette,
00357 bool UseClosestIfNotInPalette = false,
00358 MGD::PIXEL *pFallbackPixel = 0
00359 );
00360
00361 void SetSaveGeoreference (
00362 bool SaveGeoreference
00363 ) { m_SaveGeoreference = SaveGeoreference; }
00364
00365 void SetStereoDrawing (
00366 bool StereoDrawing = true
00367 ) { m_StereoDrawing = StereoDrawing; }
00368
00369 void SetStereoValues (
00370 const STEREORENDER& StereoValues
00371 );
00372
00373 void SetViewNum (
00374 int ViewNum
00375 ) { m_ViewNum = ViewNum; }
00376
00377 private:
00378 #ifndef GENERATING_DOXYGEN_OUTPUT
00379 COLORSPACE m_ColorSpace;
00380 INT32 m_RasterColumns;
00381 INT32 m_RasterRows;
00382 double m_CellSize;
00383 COLOR m_BackgroundColor;
00384 int m_ViewNum;
00385 bool m_SaveGeoreference;
00386 bool m_UseClosestIfNotInPalette;
00387 const COLOR_ARRAY *m_pPalette;
00388 MGD::PIXEL m_FallbackPixel;
00389 DRECT2D m_ExtentsView;
00390 STEREORENDER *m_pStereoValues;
00391 bool m_StereoDrawing;
00392
00393 void InitCommon ();
00394 #endif
00395 };
00396
00398 static void SMLClassInstall (
00399 SMLCONTEXT* context
00400 );
00401
00403 virtual ~VIEWABLE (
00404 );
00405
00407 void Clear (
00408 );
00409
00411 void ClearSaveLocation (
00412 ) { m_SaveObjItem.Clear(); }
00413
00414 #ifdef USE_MGUI
00415
00416 ERRVALUE ControlScriptEdit (
00417 MDLGPARENT dlgparent
00418 );
00419 #endif
00420
00422 void DestroyAllViews (
00423 );
00424
00426 ERRVALUE DrawAllViews (
00427 GRE::DRAWCONDITION condition = GRE::DRAWCONDITION_Always
00428 ) { return (v_DrawAllViews(condition)); }
00429
00430 #ifdef USE_MGUI
00432 MAINSCRIPT& GetControlScript (
00433 ) { return (m_CtrlScript); }
00434 #endif
00435
00437 GRE::LAYER* GetActiveLayer (
00438 ) const { return (v_GetActiveLayer()); }
00439
00441 const DRECT2D& GetExtents (
00442 ) const { return (v_GetExtents()); }
00443
00445 virtual GRE::LAYER *FindLayerByID (
00446 UINT32 LayerID
00447 ) const = 0;
00448
00450 double GetDesignScale (
00451 ) const { return (v_GetDesignScale()); }
00452
00454 GRE::HIGHLIGHTMODE GetElemHighlightMode (
00455 ) const { return (GetTopViewable()->m_ElemHighlightMode); }
00456
00466 GRE::VIEW* GetFirstView (
00467 ) const;
00468
00470 virtual void GetFullName (
00471 MISTRING& name
00472 ) const = 0;
00473
00475 const char* GetIniName (
00476 ) const { return (m_IniName); }
00477
00478 #ifdef USE_MGUI
00480 GRE::MACROSCRIPTLIST& GetMacroScriptList (
00481 ) { return (*m_pMacroScriptList); }
00482 #endif
00483
00486 double GetMaxScaleVisibleAny (
00487 ) const { return (v_GetMaxScaleVisibleAny()); }
00488
00490 double GetMinScaleVisibleAny (
00491 ) const { return (v_GetMinScaleVisibleAny()); }
00492
00494 virtual UINT32 GetNextLayerID (
00495 ) const = 0;
00496
00498 void GetNoRenderLayerList (MILIST<GRE::LAYER*>& LayerList);
00499
00501 const FILEPATH& GetSaveFilePath (
00502 ) const { return (m_SaveObjItem.GetFilePath()); }
00503
00505 const RVC::OBJITEM& GetSaveObjItem (
00506 ) const { return (m_SaveObjItem); }
00507
00509 virtual ERRVALUE GetSizeMeters (
00510 DPOINT2D& sizemeters
00511 ) = 0;
00512
00513 #ifdef USE_MGUI
00515 GRE::TOOLSCRIPTLIST& GetToolScriptList (
00516 ) { return (*m_pToolScriptList); }
00517 #endif
00518
00520 const VIEWABLE* GetTopViewable (
00521 ) const;
00522
00524 VIEWABLE* GetTopViewable (
00525 );
00526
00529 GRE::VIEW* GetView (
00530 int ViewNum
00531 ) const;
00532
00534 virtual bool HasLayers (
00535 ) const = 0;
00536
00538 bool HasSaveLocation (
00539 ) const;
00540
00542 bool IsModified (
00543 ) const { return (m_IsModified); }
00544
00546 bool IsTopViewable (
00547 ) const { return (this == GetTopViewable()); }
00548
00550 ERRVALUE RenderToRaster (
00551 RVC::OBJITEM& objitem,
00552 const PARM_RENDERTORASTER& parm
00553 );
00554
00556 void ResetModified (
00557 ) { m_IsModified = false; }
00558
00560 void SetDesignScale (
00561 double DesignScale,
00562 bool notify = true
00563 ) { v_SetDesignScale(DesignScale,notify); }
00564
00566 void SetElemHighlightMode (
00567 GRE::HIGHLIGHTMODE HighlightMode
00568 );
00569
00571 void SetIniBase (
00572 const char* name
00573 );
00574
00575 #ifdef USE_MGUI
00577 void SetMacroScriptList (
00578 const GRE::MACROSCRIPTLIST& ScriptList
00579 );
00580 #endif
00581
00584 void SetSaveFilePath (
00585 const FILEPATH& SaveFilePath
00586 );
00587
00589 void SetSaveObjItem (
00590 const RVC::OBJITEM& SaveObjItem
00591 ) { m_SaveObjItem = SaveObjItem; }
00592
00593 #ifdef USE_MGUI
00595 void SetToolScriptList (
00596 const GRE::TOOLSCRIPTLIST& ScriptList
00597 );
00598 #endif
00599
00600 #ifdef USE_MGUI
00602 void TreeViewGetAll (
00603 SIMPLE_ARRAY<GRE::CTRL_TREEVIEW*>& TreeViewPtrs
00604 ) const;
00605 #endif
00606
00607 #ifdef USE_MGUI
00610 void TreeViewSetPtr (
00611 GRE::CTRL_TREEVIEW *pTreeView
00612 ) { m_pTreeView = pTreeView; }
00613 #endif
00614
00616 void UpdateViewScriptUI (
00617 );
00618
00620 void UnhighlightAllElements (
00621 bool redrawviews
00622 ) { v_UnhighlightAllElements(redrawviews); }
00623
00624 protected:
00625
00626 bool m_IsModified;
00627
00629 explicit VIEWABLE (
00630 OBJECT::TYPE type,
00631 VIEWABLE *container
00632 );
00633
00634
00635 ERRVALUE ControlScriptInitialize (
00636 );
00637
00639 UINT8 GetIniIndex (
00640 ) const { return (m_IniIndex); }
00641
00643 static const SERIALIZERITEM* SerialGetItemDef (
00644 SERIALIZER&
00645 ) { return (TemplateGetItemDef()); }
00646
00648 void SetIniIndex (
00649 UINT8 IniIndex
00650 );
00651
00653 static const SERIALIZERITEM* TemplateGetItemDef (
00654 );
00655
00656 private:
00657 #ifndef GENERATING_DOXYGEN_OUTPUT
00658
00659 VIEWABLE *m_Container;
00660 char m_IniName[20];
00661 UINT8 m_IniIndex;
00662 UINT8 m_IniBaseLen;
00663 RVC::OBJITEM m_SaveObjItem;
00664 GRE::HIGHLIGHTMODE m_ElemHighlightMode;
00665 #ifdef USE_MGUI
00666 MAINSCRIPT m_CtrlScript;
00667 GRE::CTRL_TREEVIEW *m_pTreeView;
00668 GRE::TOOLSCRIPTLIST *m_pToolScriptList;
00669 GRE::MACROSCRIPTLIST *m_pMacroScriptList;
00670 #endif
00671
00672 #ifdef USE_MGUI
00673 static ERRVALUE SerialCB_MacroScript (SERIALIZER&, const SERIALIZERITEM*, VIEWABLE *viewable, SERIALIZERITEM::ACTION);
00674 static ERRVALUE SerialCB_ToolScript (SERIALIZER&, const SERIALIZERITEM*, VIEWABLE *viewable, SERIALIZERITEM::ACTION);
00675 #endif
00676
00677
00678 virtual void v_Clear () = 0;
00679 virtual ERRVALUE v_DrawAllViews (GRE::DRAWCONDITION condition) = 0;
00680 virtual GRE::LAYER* v_GetActiveLayer () const = 0;
00681 virtual double v_GetDesignScale () const = 0;
00682 virtual const DRECT2D& v_GetExtents () const = 0;
00683 virtual double v_GetMaxScaleVisibleAny () const = 0;
00684 virtual double v_GetMinScaleVisibleAny () const = 0;
00685 virtual void v_SetDesignScale (double DesignScale, bool notify) = 0;
00686 virtual void v_UnhighlightAllElements (bool redraw) = 0;
00687
00688 VIEWABLE (const VIEWABLE&);
00689 VIEWABLE& operator= (const VIEWABLE&);
00690
00691 #endif // GENERATING_DOXYGEN_OUTPUT
00692 };
00693
00694
00695
00698 int DlgEditScaleRanges (
00699 MDLGPARENT dlgparent,
00700 VIEWABLE *viewable
00701 );
00702
00704 ERRVALUE DlgRenderToRaster (
00705 MDLGPARENT dlgparent,
00706 VIEWABLE *viewable
00707 );
00708
00710 ERRVALUE DlgRenderToKML (
00711 MDLGPARENT dlgparent,
00712 VIEWABLE *viewable
00713 );
00714
00716 ERRVALUE DlgRenderToPDF (
00717 MDLGPARENT dlgparent,
00718 VIEWABLE *viewable
00719 );
00720
00722 ERRVALUE DlgRenderToSVG (
00723 MDLGPARENT dlgparent,
00724 VIEWABLE *viewable
00725 );
00726
00728 ERRVALUE DlgRenderToTileset (
00729 MDLGPARENT dlgparent,
00730 VIEWABLE *viewable
00731 );
00732
00733
00734
00735 }
00736
00737
00738 #endif // INC_GRE_VIEWABLE_H