0023874: Converting OCCT MFC samples to CMake build system.
[occt.git] / samples / mfc / standard / Common / OCC_2dDoc.cpp
1 // OCC_2dDoc.cpp: implementation of the OCC_2dDoc class.
2 //
3 //////////////////////////////////////////////////////////////////////
4
5 #include <stdafx.h>
6
7 #include "OCC_2dDoc.h"
8
9 #include "OCC_App.h"
10 #include "OCC_2dView.h"
11
12 IMPLEMENT_DYNCREATE(OCC_2dDoc, CDocument)
13
14 //////////////////////////////////////////////////////////////////////
15 // Construction/Destruction
16 //////////////////////////////////////////////////////////////////////
17
18 OCC_2dDoc::OCC_2dDoc() : OCC_BaseDoc()
19 {
20   // Get the Graphic Driver from the application 
21   Handle(Graphic3d_GraphicDriver) aGraphicDriver = 
22     ((OCC_App*)AfxGetApp())->GetGraphicDriver();
23
24   // create the Viewer
25   TCollection_ExtendedString aName ("Viewer 2D");
26   TCollection_AsciiString aDomain ("My Domain");
27
28   myViewer = new V3d_Viewer (aGraphicDriver,
29                              aName.ToExtString(),
30                              aDomain.ToCString());
31
32   myViewer->SetDefaultLights();
33   myViewer->SetLightOn();
34   myViewer->SetDefaultViewProj (V3d_Zpos);
35
36   // set default values for grids
37   myViewer->SetCircularGridValues (0, 0, 10, 8, 0);
38   myViewer->SetRectangularGridValues (0, 0, 10, 10, 0);
39
40   myAISContext = new AIS_InteractiveContext (myViewer);
41
42   AfxInitRichEdit();
43 }
44
45 OCC_2dDoc::~OCC_2dDoc()
46 {
47 }
48
49 void OCC_2dDoc::FitAll2DViews(Standard_Boolean theUpdateViewer)
50 {
51   if (theUpdateViewer)
52   {
53     myViewer->Update();
54   }
55
56   POSITION aPosition = GetFirstViewPosition();
57   while (aPosition != (POSITION)NULL)
58   {
59     OCC_2dView* aCurrentView = (OCC_2dView*)GetNextView (aPosition);
60     ASSERT_VALID (aCurrentView);
61     aCurrentView->GetV2dView()->FitAll();
62   }
63 }
64
65 void OCC_2dDoc::MoveEvent(const Standard_Integer theMouseX,
66                           const Standard_Integer theMouseY,
67                           const Handle(V3d_View)& theView)
68 {
69   myAISContext->MoveTo (theMouseX, theMouseY, theView);
70 }
71
72 void OCC_2dDoc::ShiftMoveEvent(const Standard_Integer theMouseX,
73                                const Standard_Integer theMouseY,
74                                const Handle(V3d_View)& theView)
75 {
76   myAISContext->MoveTo (theMouseX, theMouseY, theView);
77 }