Version: 6.3.1

src/VISU_I/VISU_View_i.hh

Go to the documentation of this file.
00001 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 //  VISU OBJECT : interactive object for VISU entities implementation
00024 //  File   : VISU_View_i.hh
00025 //  Author : Alexey PETROV
00026 //  Module : VISU
00027 //
00028 #ifndef VISU_View_i_HeaderFile
00029 #define VISU_View_i_HeaderFile
00030 
00031 #include "VISUConfig.hh"
00032 #include "SALOME_GenericObj_i.hh"
00033 
00034 class QWidget;
00035 
00036 class VISU_TableDlg;
00037 
00038 class SalomeApp_Application;
00039 
00040 class SUIT_ViewManager;
00041 class SUIT_ViewWindow;
00042 
00043 class Plot2d_ViewFrame;
00044 
00045 namespace VISU
00046 {
00047   class Prs3d_i;
00048   class Curve_i;
00049 
00050   class VISU_I_EXPORT View_i : public virtual POA_VISU::View,
00051                       public virtual SALOME::GenericObj_i,
00052                       public virtual Storable
00053   {
00054   public:
00055     View_i (SalomeApp_Application *theApplication,
00056             SUIT_ViewManager* theViewManager);
00057     virtual ~View_i();
00058 
00059   public:
00060     virtual void ShowPart( VISU::View::ViewRepresentation ViewRepr, CORBA::Boolean state );
00061     virtual CORBA::Boolean IsPartShown( VISU::View::ViewRepresentation ViewRepr );
00062 
00063     // Begin: New methods for view parameters management
00064     virtual void SplitRight();
00065     virtual void SplitLeft();
00066     virtual void SplitBottom();
00067     virtual void SplitTop();
00068 
00069     virtual void OnTop();
00070 
00071     virtual void Attract   (VISU::View_ptr theView);
00072     virtual void AttractAll(VISU::View_ptr theView);
00073 
00074     virtual void SetRelativePositionInSplitter(CORBA::Double thePosition);
00075     virtual void SetRelativeSizeInSplitter(CORBA::Double theSize);
00076 
00077     virtual void SetRelativePositionX(CORBA::Double thePosition);
00078     virtual void SetRelativePositionY(CORBA::Double thePosition);
00079 
00080     virtual void SetRelativeSizeX(CORBA::Double theSize);
00081     virtual void SetRelativeSizeY(CORBA::Double theSize);
00082     // End: New methods for view parameters management
00083 
00084     // Begin: Old methods for view parameters management, they don't work now
00085     virtual void SetViewWidth(CORBA::Long Width);
00086     virtual void SetViewHeight(CORBA::Long Height);
00087     virtual CORBA::Long GetViewWidth();
00088     virtual CORBA::Long GetViewHeight();
00089     virtual void SetViewPositionHorizontal(VISU::View::ViewPosition ViewPosHor);
00090     virtual void SetViewPositionVertical(VISU::View::ViewPosition ViewPosVer);
00091     virtual void SetRelativePosition( CORBA::Double x, CORBA::Double y );
00092     virtual void SetRelativeSize( CORBA::Double x, CORBA::Double y );
00093     virtual void Minimize();
00094     virtual void Restore();
00095     virtual void Maximize();
00096     // End: Old methods for view parameters management, they don't work now
00097 
00098     virtual void SetBackground(const SALOMEDS::Color& theColor);
00099     virtual SALOMEDS::Color GetBackground();
00100 
00101     virtual void EraseAll();
00102     virtual void DisplayAll();
00103     virtual void Erase(PrsObject_ptr thePrsObj);
00104     virtual void Display(PrsObject_ptr thePrsObj);
00105     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
00106 
00107     virtual void Update();
00108 
00109     virtual CORBA::Boolean SavePicture(const char* theFileName);
00110 
00111     virtual void Close() = 0;
00112     virtual void ToStream(std::ostringstream& theStr);
00113     virtual const char* GetComment() const;
00114 
00115     SUIT_ViewWindow* GetViewWindow();
00116     void             SetViewWindow(SUIT_ViewWindow* theViewWindow);
00117 
00118   public:
00119     QWidget *myWorkspace;
00120 
00121     SalomeApp_Application *myApplication;
00122     SUIT_ViewManager      *myViewManager;
00123 
00124   private:
00125     SUIT_ViewWindow *myViewWindow;
00126   };
00127 
00128 
00129   //===========================================================================
00130   class VISU_I_EXPORT XYPlot_i : public virtual POA_VISU::XYPlot,
00131                      public virtual View_i
00132   {
00133   public:
00134     typedef VISU::XYPlot TInterface;
00135 
00136     XYPlot_i (SalomeApp_Application *theApplication);
00137     virtual ~XYPlot_i();
00138 
00139     virtual VISU::VISUType GetType() { return VISU::TXYPLOT; };
00140 
00141     virtual void SetTitle (const char* theTitle);
00142     virtual char* GetTitle();
00143 
00144     virtual void SetSubTitle (const char* theTitle);
00145     virtual char* GetSubTitle();
00146 
00147     virtual void SetCurveType (VISU::XYPlot::CurveType theType);
00148     virtual VISU::XYPlot::CurveType GetCurveType();
00149 
00150     virtual void SetMarkerSize (CORBA::Long theSize);
00151     virtual CORBA::Long GetMarkerSize();
00152 
00153     virtual void EnableXGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
00154                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
00155     virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
00156                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
00157 
00158     virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
00159                               CORBA::Boolean theMinor, CORBA::Long theNumMinor,
00160                      CORBA::Boolean the2Major, CORBA::Long the2NumMajor,
00161                               CORBA::Boolean the2Minor, CORBA::Long the2NumMinor);
00162                      
00163     virtual void SetHorScaling (VISU::Scaling theScaling);
00164     virtual VISU::Scaling GetHorScaling();
00165     virtual void SetVerScaling (VISU::Scaling theScaling);
00166     virtual VISU::Scaling GetVerScaling();
00167 
00168     virtual void SetXTitle (const char* theTitle);
00169     virtual char* GetXTitle();
00170 
00171     virtual void SetYTitle (const char* theTitle);
00172     virtual char* GetYTitle();
00173 
00174     virtual void ShowLegend (CORBA::Boolean theShowing);
00175 
00176     virtual void EraseAll();
00177     virtual void Erase (PrsObject_ptr thePrsObj);
00178     virtual void Display (PrsObject_ptr thePrsObj);
00179     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
00180     virtual void Update();
00181 
00182     virtual void FitAll();
00183     virtual void FitXRange(CORBA::Double xMin, CORBA::Double xMax);
00184     virtual void FitYRange(CORBA::Double yMin, CORBA::Double yMax);
00185     virtual void FitRange(CORBA::Double xMin, CORBA::Double xMax,
00186                              CORBA::Double yMin, CORBA::Double yMax);
00187     virtual void GetFitRanges(double& xMin, double& xMax, double& yMin, double& yMax);
00188 
00189     virtual void Close();
00190 
00191     Plot2d_ViewFrame* GetView() { return myView; }
00192   protected:
00193     Plot2d_ViewFrame* myView;
00194   public:
00195     virtual Storable* Create (int theNew);
00196   };
00197 
00198 
00199   //===========================================================================
00200   class VISU_I_EXPORT TableView_i : public virtual POA_VISU::TableView,
00201                       public virtual View_i
00202   {
00203   public:
00204     typedef VISU::TableView TInterface;
00205 
00206     TableView_i (SalomeApp_Application *theApplication);
00207     virtual ~TableView_i();
00208 
00209     virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW; };
00210 
00211     virtual void SetTitle (const char* theTitle);
00212     virtual char* GetTitle();
00213 
00214     virtual void Close();
00215   protected:
00216     VISU_TableDlg* myView;
00217   public:
00218     virtual Storable* Create (VISU::Table_ptr theTable);
00219   };
00220 
00221 
00222   //===========================================================================
00223   class VISU_I_EXPORT View3D_i : public virtual POA_VISU::View3D,
00224                      public virtual View_i
00225   {
00226   public:
00227     typedef VISU::View3D TInterface;
00228 
00229     View3D_i (SalomeApp_Application *theApplication);
00230     virtual ~View3D_i();
00231 
00232     virtual VISU::VISUType GetType() { return VISU::TVIEW3D; };
00233 
00234     //View interface
00235     virtual void SetTitle (const char* theTitle);
00236     virtual char* GetTitle();
00237 
00238     static  void SetBackground (SUIT_ViewWindow* theViewWindow,
00239                                 const SALOMEDS::Color& theColor);
00240 
00241     static  SALOMEDS::Color GetBackground (SUIT_ViewWindow* theViewWindow);
00242 
00243     virtual void EraseAll();
00244     virtual void DisplayAll();
00245     virtual void Erase (PrsObject_ptr thePrsObj);
00246     virtual void Display (PrsObject_ptr thePrsObj);
00247     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
00248     virtual void Update();
00249 
00250     //View3D interface
00251     virtual void FitAll();
00252     virtual void SetView (VISU::View3D::ViewType theType);
00253 
00254     static  void SetPointOfView (SUIT_ViewWindow* theViewWindow,
00255                                  const CORBA::Double thePosition[3]);
00256     virtual void SetPointOfView (const VISU::View3D::XYZ theCoord);
00257 
00258     static  void GetPointOfView (SUIT_ViewWindow* theViewWindow,
00259                                  CORBA::Double thePosition[3]);
00260     virtual VISU::View3D::XYZ_slice* GetPointOfView();
00261 
00262     static  void SetViewUp (SUIT_ViewWindow* theViewWindow,
00263                             const CORBA::Double theViewUp[3]);
00264     virtual void SetViewUp (const VISU::View3D::XYZ theDir);
00265 
00266     static  void GetViewUp (SUIT_ViewWindow* theViewWindow, CORBA::Double theViewUp[3]);
00267     virtual VISU::View3D::XYZ_slice* GetViewUp();
00268 
00269     static  void SetFocalPoint (SUIT_ViewWindow* theViewWindow, const CORBA::Double theFocalPnt[3]);
00270     virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
00271 
00272     static  void GetFocalPoint (SUIT_ViewWindow* theViewWindow, CORBA::Double theFocalPnt[3]);
00273     virtual VISU::View3D::XYZ_slice* GetFocalPoint();
00274 
00275     static  void SetParallelScale (SUIT_ViewWindow* theViewWindow, CORBA::Double theScale);
00276     virtual void SetParallelScale (CORBA::Double theScale);
00277 
00278     static  CORBA::Double GetParallelScale (SUIT_ViewWindow* theViewWindow);
00279     virtual CORBA::Double GetParallelScale ();
00280 
00281     static  void ScaleView (SUIT_ViewWindow* theViewWindow,
00282                             VISU::View3D::Axis theAxis, CORBA::Double theParam);
00283     virtual void ScaleView (VISU::View3D::Axis theAxis, CORBA::Double theParam);
00284     virtual void RemoveScale();
00285 
00286     static std::string ToString (SUIT_ViewWindow* theViewWindow);
00287 
00288     static void ToStream (SUIT_ViewWindow* theViewWindow, std::ostringstream& theStr);
00289 
00290     static  bool           SaveViewParams (SUIT_ViewManager* theViewManager,
00291                                            const std::string& theName);
00292     virtual CORBA::Boolean SaveViewParams (const char* theViewParamsName);
00293 
00294     static  bool           RestoreViewParams (SUIT_ViewManager* theViewManager,
00295                                               const std::string& theName);
00296     virtual CORBA::Boolean RestoreViewParams (const char* theViewParamsName);
00297 
00298     static QString GenerateViewParamsName();
00299 
00300     static  void Restore (SUIT_ViewWindow* theViewWindow,
00301                           const Storable::TRestoringMap& theMap);
00302 
00303     virtual void Close();
00304 
00305     // Certain presentation view parameters management
00306     virtual PresentationType GetPresentationType(ScalarMap_ptr thePrs);
00307     virtual CORBA::Boolean   IsShrinked         (ScalarMap_ptr thePrs);
00308     virtual CORBA::Boolean   IsShaded           (ScalarMap_ptr thePrs);
00309     virtual CORBA::Double    GetOpacity         (ScalarMap_ptr thePrs);
00310     virtual CORBA::Double    GetLineWidth       (ScalarMap_ptr thePrs);
00311     virtual Quadratic2DPresentationType GetQuadratic2DPresentationType(ScalarMap_ptr thePrs);
00312 
00313     virtual char* SetPresentationType(ScalarMap_ptr thePrs, PresentationType thePrsType);
00314     virtual char* SetShrinked        (ScalarMap_ptr thePrs, CORBA::Boolean   isShrinked);
00315     virtual char* SetShaded          (ScalarMap_ptr thePrs, CORBA::Boolean   isShaded);
00316     virtual char* SetOpacity         (ScalarMap_ptr thePrs, CORBA::Double    theOpacity);
00317     virtual char* SetLineWidth       (ScalarMap_ptr thePrs, CORBA::Double    theLineWidth);
00318     virtual char* SetQuadratic2DPresentationType(ScalarMap_ptr thePrs, Quadratic2DPresentationType theType);
00319 
00320   protected:
00321     static int myNbViewParams;
00322 
00323   public:
00324     virtual Storable* Create (int theNew);
00325     virtual void ToStream (std::ostringstream& theStr);
00326     virtual const char* GetComment() const;
00327     static const std::string myComment;
00328   };
00329 }
00330 
00331 #endif
Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS