0028148: Samples - add 3D Viewer sample for iOS platform
[occt.git] / samples / ios / UIKitSample / UIKitSample / OcctViewer.h
1 // Copyright (c) 2017 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef OcctViewer_H
15 #define OcctViewer_H
16
17 #include "OcctDocument.h"
18 #include "CafShapePrs.h"
19
20 #include <AIS_ColoredDrawer.hxx>
21 #include <AIS_InteractiveContext.hxx>
22 #include <OSD_Timer.hxx>
23 #include <TColStd_HPackedMapOfInteger.hxx>
24 #include <V3d_DirectionalLight.hxx>
25 #include <XSControl_WorkSession.hxx>
26 #include <XCAFDoc_ShapeTool.hxx>
27 #include <XCAFDoc_ColorTool.hxx>
28 #include <XCAFPrs_Style.hxx>
29
30 #import <UIKit/UIKit.h>
31
32 //! OCCT 3D Viewer holder.
33 class OcctViewer
34 {
35 public:
36   
37   //! Empty constructor.
38   Standard_EXPORT OcctViewer();
39   
40   //! Destructor.
41   Standard_EXPORT virtual ~OcctViewer();
42   
43   //! Release the viewer.
44   Standard_EXPORT void release();
45   
46 public:
47   
48   //! Return viewer instance.
49   const Handle(V3d_Viewer)& V3dViewer() const { return myViewer; }
50   
51   //! Return active view.
52   const Handle(V3d_View)& ActiveView() const { return myView; }
53   
54   //! Interactive context.
55   const Handle(AIS_InteractiveContext)& AisContex() const { return myContext; }
56   
57   //! Invalidate active viewer.
58   void Invalidate()
59   {
60     myView->Invalidate();
61   }
62   
63 public:
64   
65   //! Perform OCCT Viewer (re)initialization.
66   Standard_EXPORT bool InitViewer (UIView* theWin);
67   
68   Standard_EXPORT void FitAll();
69   
70   Standard_EXPORT void StartRotation(int theX, int theY);
71   Standard_EXPORT void Rotation(int theX, int theY);
72   Standard_EXPORT void Pan(int theX, int theY);
73   Standard_EXPORT void Zoom(int theX, int theY, double theDelta);
74   Standard_EXPORT void Select(int theX, int theY);
75   
76   Standard_EXPORT bool ImportSTEP(std::string theFilename);
77   
78 private:
79   void clearSession(const Handle(XSControl_WorkSession)& theSession);
80   
81   void displayWithChildren (XCAFDoc_ShapeTool&             theShapeTool,
82                             XCAFDoc_ColorTool&             theColorTool,
83                             const TDF_Label&               theLabel,
84                             const TopLoc_Location&         theParentTrsf,
85                             const XCAFPrs_Style&           theParentStyle,
86                             const TCollection_AsciiString& theParentId,
87                             MapOfPrsForShapes&             theMapOfShapes);
88   void clearContext();
89   
90 protected:
91   
92   Handle(V3d_Viewer)              myViewer;            //!< main viewer
93   Handle(V3d_View)                myView;              //!< main view
94   Handle(AIS_InteractiveContext)  myContext;           //!< interactive context containing displayed objects
95   Handle(OcctDocument)            myDoc;
96 };
97
98 #endif // OcctViewer_H