From 12c76beeb050c2bb5727b29e673c17687a0d4703 Mon Sep 17 00:00:00 2001 From: aba Date: Thu, 5 Dec 2013 15:03:53 +0400 Subject: [PATCH] 0023931: Incorrect image export code in MFC sample: Added OCC_BaseDoc::ExportView() method to unify image export procedure in all MFC samples. Compilation errors were corrected. --- .../standard/01_Geometry/src/GeometryDoc.h | 21 +-- .../standard/01_Geometry/src/GeometryView.cpp | 18 +-- .../standard/03_Viewer2d/src/Viewer2dDoc.cpp | 144 +++++++++--------- .../04_Viewer3d/src/ModelClippingDlg.cpp | 26 +++- .../mfc/standard/04_Viewer3d/src/Viewer3d.rc | 2 +- .../standard/04_Viewer3d/src/Viewer3dDoc.cpp | 21 +-- .../07_Triangulation/res/Triangulation.rc | 2 +- .../07_Triangulation/src/TriangulationDoc.cpp | 19 +-- .../standard/09_Animation/src/AnimationDoc.h | 130 +++++++--------- .../09_Animation/src/AnimationView3D.cpp | 19 +-- .../standard/10_Convert/src/WNT/OCCDemo.rc | 2 +- .../10_Convert/src/WNT/OCCDemoDoc.cpp | 17 +-- .../standard/10_Convert/src/WNT/OCCDemoDoc.h | 7 +- samples/mfc/standard/Common/OCC_2dView.cpp | 31 +--- samples/mfc/standard/Common/OCC_3dBaseDoc.h | 2 +- samples/mfc/standard/Common/OCC_3dView.cpp | 28 +--- samples/mfc/standard/Common/OCC_BaseDoc.cpp | 49 ++++++ samples/mfc/standard/Common/OCC_BaseDoc.h | 23 ++- 18 files changed, 242 insertions(+), 319 deletions(-) diff --git a/samples/mfc/standard/01_Geometry/src/GeometryDoc.h b/samples/mfc/standard/01_Geometry/src/GeometryDoc.h index 3b286b9900..7ab5419b78 100755 --- a/samples/mfc/standard/01_Geometry/src/GeometryDoc.h +++ b/samples/mfc/standard/01_Geometry/src/GeometryDoc.h @@ -9,11 +9,12 @@ #pragma once #endif // _MSC_VER >= 1000 +#include "OCC_BaseDoc.h" #include "ResultDialog.h" class Handle_AIS_Point; -class CGeometryDoc : public CDocument +class CGeometryDoc : public OCC_BaseDoc { public: void Put2DOnTop(bool isMax = true); @@ -210,26 +211,16 @@ protected: //}}AFX_MSG DECLARE_MESSAGE_MAP() - -private: - Handle_V3d_Viewer myViewer; - Handle_V3d_Viewer myViewerCollector; - Handle_AIS_InteractiveContext myAISContext; -public : - Handle_AIS_InteractiveContext& GetAISContext(){ return myAISContext; }; - Handle_V3d_Viewer GetViewer() { return myViewer; }; - Handle_V3d_Viewer GetViewerCollector() { return myViewerCollector; }; - - private: Handle_V3d_Viewer myViewer2D; Handle_AIS_InteractiveContext myAISContext2D; -public : + +public: int Current; void Minimize3D(); void Minimize2D(); - Handle_V3d_Viewer GetViewer2D() { return myViewer2D; }; - Handle_AIS_InteractiveContext& GetISessionContext(){ return myAISContext2D; }; + Handle_V3d_Viewer GetViewer2D() { return myViewer2D; }; + Handle_AIS_InteractiveContext& GetISessionContext() { return myAISContext2D; }; BOOL FitMode; public : diff --git a/samples/mfc/standard/01_Geometry/src/GeometryView.cpp b/samples/mfc/standard/01_Geometry/src/GeometryView.cpp index 4232cefd24..2ca07f7008 100755 --- a/samples/mfc/standard/01_Geometry/src/GeometryView.cpp +++ b/samples/mfc/standard/01_Geometry/src/GeometryView.cpp @@ -79,23 +79,7 @@ CGeometryDoc* CGeometryView::GetDocument() // non-debug version is inline void CGeometryView::OnFileExportImage() { - CFileDialog aDlg (FALSE, "*.BMP", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "BMP Files (*.BMP)|*.bmp|" - "GIF Files (*.GIF)|*.gif|" - "PNG Files (*.PNG)|*.png|" - "JPEG Files (*.JPG)|*.jpg|" - "PPM Files (*.PPM)|*.ppm|" - "TIFF Files (*.TIFF)|*.tiff|" - "TGA Files (*.TGA)|*.tga|" - "EXR Files (*.EXR)|*.exr||", NULL); - if (aDlg.DoModal() != IDOK) - { - return; - } - - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); - myView->Dump (aDlg.GetPathName()); - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); + GetDocument()->ExportView (myView); } void CGeometryView::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/) diff --git a/samples/mfc/standard/03_Viewer2d/src/Viewer2dDoc.cpp b/samples/mfc/standard/03_Viewer2d/src/Viewer2dDoc.cpp index 3efcbe45a3..d7d01f427c 100755 --- a/samples/mfc/standard/03_Viewer2d/src/Viewer2dDoc.cpp +++ b/samples/mfc/standard/03_Viewer2d/src/Viewer2dDoc.cpp @@ -317,114 +317,110 @@ void CViewer2dDoc::OnBUTTONTestCurve() void CViewer2dDoc::OnBUTTONTestImage() { - CFileDialog dlg(TRUE, - NULL, - NULL, - OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "image Files (*.bmp , *.gif , *.jpeg, *.bmp, *.ppm, *.exr, *.tga, *.tiff, *.pgf, *.pdf)" - "|*.bmp; *.gif; *.jpeg; *.bmp; *.ppm; *.exr; *.tga; *.tiff; *.pgf; *.pdf;" - "| all files (*.*)|*.*;||", - NULL ); - - CString initdir(((OCC_App*) AfxGetApp())->GetInitDataDir()); - initdir += "\\Data"; - - dlg.m_ofn.lpstrInitialDir = initdir; - if(dlg.DoModal() == IDOK) + CFileDialog anOpenImageDlg (TRUE, + NULL, + NULL, + OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, + SupportedImageFormats() + "| all files (*.*)|*.*;||", + NULL); + + CString anInitDir (((OCC_App*) AfxGetApp())->GetInitDataDir()); + anInitDir += "\\Data"; + + anOpenImageDlg.m_ofn.lpstrInitialDir = anInitDir; + if(anOpenImageDlg.DoModal() == IDOK) { - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); - CString filename = dlg.GetPathName(); - TCollection_AsciiString aFileName(filename); + SetCursor(AfxGetApp()->LoadStandardCursor (IDC_WAIT)); + CString aFilePath = anOpenImageDlg.GetPathName(); + TCollection_AsciiString aFileName (aFilePath); //erase viewer if(myAISContext->HasOpenedContext()) myAISContext->CloseAllContexts(); myAISContext->EraseAll(); - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(40,50) ; - anImage->SetScale(1.0); - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); - FitAll2DViews(Standard_True); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (40,50) ; + anImage->SetScale (1.0); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage,3,Standard_False); + FitAll2DViews (Standard_True); } } void CViewer2dDoc::OnBUTTONMultipleImage() { - CFileDialog dlg(TRUE, - NULL, - NULL, - OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "image Files (*.bmp , *.gif , *.jpeg, *.bmp, *.ppm, *.exr, *.tga, *.tiff, *.pgf, *.pdf)" - "|*.bmp; *.gif; *.jpeg; *.bmp; *.ppm; *.exr; *.tga; *.tiff; *.pgf; *.pdf;" - "| all files (*.*)|*.*;||", - NULL ); + CFileDialog anOpenImageDlg (TRUE, + NULL, + NULL, + OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, + SupportedImageFormats() + "| all files (*.*)|*.*;||", + NULL); - CString initdir(((OCC_App*) AfxGetApp())->GetInitDataDir()); - initdir += "\\Data"; + CString anInitDir (((OCC_App*) AfxGetApp())->GetInitDataDir()); + anInitDir += "\\Data"; - dlg.m_ofn.lpstrInitialDir = initdir; - + anOpenImageDlg.m_ofn.lpstrInitialDir = anInitDir; - if (dlg.DoModal() == IDOK) + if (anOpenImageDlg.DoModal() == IDOK) { - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); - CString filename = dlg.GetPathName(); - TCollection_AsciiString aFileName(filename); + SetCursor(AfxGetApp()->LoadStandardCursor (IDC_WAIT)); + CString aFilePath = anOpenImageDlg.GetPathName(); + TCollection_AsciiString aFileName (aFilePath); + //erase viewer if(myAISContext->HasOpenedContext()) myAISContext->CloseAllContexts(); myAISContext->EraseAll(); + //create images { // 1 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(40,50) ; - anImage->SetScale(0.5); - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (40, 50); + anImage->SetScale (0.5); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 2 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - - anImage->SetCoord(100,50) ; - anImage->SetScale(0.9); - myAISContext->Display(anImage,Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (100, 50); + anImage->SetScale (0.9); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 3 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(40,40) ; - anImage->SetScale(0.3); - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (40, 40); + anImage->SetScale (0.3); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 4 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(50,40) ; - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (50, 40); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 5 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(80,45) ; - anImage->SetScale(2); - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (80, 45); + anImage->SetScale (2); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 6 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(20,-20) ; - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (20, -20); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } { // 7 - Handle(Sample2D_Image) anImage = new Sample2D_Image(aFileName); - anImage->SetCoord(0,0) ; - anImage->SetScale(0.5); - myAISContext->Display(anImage, Standard_False); - myAISContext->SetDisplayMode(anImage,3,Standard_False); + Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName); + anImage->SetCoord (0, 0); + anImage->SetScale (0.5); + myAISContext->Display (anImage, Standard_False); + myAISContext->SetDisplayMode (anImage, 3, Standard_False); } - FitAll2DViews(Standard_True); // Update Viewer + FitAll2DViews (Standard_True); // Update Viewer } } diff --git a/samples/mfc/standard/04_Viewer3d/src/ModelClippingDlg.cpp b/samples/mfc/standard/04_Viewer3d/src/ModelClippingDlg.cpp index 7aa3274f2f..9023600534 100755 --- a/samples/mfc/standard/04_Viewer3d/src/ModelClippingDlg.cpp +++ b/samples/mfc/standard/04_Viewer3d/src/ModelClippingDlg.cpp @@ -120,7 +120,18 @@ BOOL CModelClippingDlg::OnInitDialog() if (m_ModelClippingONOFF) { // register and activate clipping plane - if (!myView->GetClipPlanes().Contains (myClippingPlane)) + Standard_Boolean toAddPlane = Standard_True; + Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (myView->GetClipPlanes()); + for (; aPlaneIt.More(); aPlaneIt.Next()) + { + if (aPlaneIt.Value() == myClippingPlane) + { + toAddPlane = Standard_False; + break; + } + } + + if (toAddPlane) { myView->AddClipPlane (myClippingPlane); } @@ -188,7 +199,18 @@ void CModelClippingDlg::OnCheckModelclippingonoff() if (m_ModelClippingONOFF) { // register and activate clipping plane - if (!myView->GetClipPlanes().Contains (myClippingPlane)) + Standard_Boolean toAddPlane = Standard_True; + Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (myView->GetClipPlanes()); + for (; aPlaneIt.More(); aPlaneIt.Next()) + { + if (aPlaneIt.Value() == myClippingPlane) + { + toAddPlane = Standard_False; + break; + } + } + + if (toAddPlane) { myView->AddClipPlane (myClippingPlane); } diff --git a/samples/mfc/standard/04_Viewer3d/src/Viewer3d.rc b/samples/mfc/standard/04_Viewer3d/src/Viewer3d.rc index 94113f4959..66bb00d783 100755 --- a/samples/mfc/standard/04_Viewer3d/src/Viewer3d.rc +++ b/samples/mfc/standard/04_Viewer3d/src/Viewer3d.rc @@ -511,7 +511,7 @@ END STRINGTABLE BEGIN - ID_DUMP_VIEW "Save current frame into a GIF file\nExport view to GIF (F12)" + ID_DUMP_VIEW "Save current frame into an image file\nExport view (F12)" ID_TEXTURE_ON "Run texture example\nRun texture example" END diff --git a/samples/mfc/standard/04_Viewer3d/src/Viewer3dDoc.cpp b/samples/mfc/standard/04_Viewer3d/src/Viewer3dDoc.cpp index a749ca293a..6aa782fd44 100755 --- a/samples/mfc/standard/04_Viewer3d/src/Viewer3dDoc.cpp +++ b/samples/mfc/standard/04_Viewer3d/src/Viewer3dDoc.cpp @@ -1057,30 +1057,17 @@ void CViewer3dDoc::OnUpdateBUTTONEnd(CCmdUI* pCmdUI) pCmdUI->Enable (isTextureSampleStarted); } -void CViewer3dDoc::OnDumpView() -{ - CFileDialog aDlg (false, "gif", "OCCView.gif", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "GIF Files (*.GIF)|*.gif|" - "BMP Files (*.BMP)|*.bmp|" - "PNG Files (*.PNG)|*.png|" - "JPEG Files (*.JPG)|*.jpg|" - "PPM Files (*.PPM)|*.ppm|" - "TIFF Files (*.TIFF)|*.tiff|" - "TGA Files (*.TGA)|*.tga|" - "EXR Files (*.EXR)|*.exr||", NULL); - if (aDlg.DoModal() != IDOK) - { - return; - } - +void CViewer3dDoc::OnDumpView() +{ for (POSITION aPos = GetFirstViewPosition(); aPos != NULL;) { CViewer3dView* pView = (CViewer3dView* )GetNextView (aPos); pView->UpdateWindow(); } + myViewer->InitActiveViews(); Handle(V3d_View) aView = myViewer->ActiveView(); - aView->Dump (aDlg.GetPathName()); + ExportView (aView); } void CViewer3dDoc::Start() diff --git a/samples/mfc/standard/07_Triangulation/res/Triangulation.rc b/samples/mfc/standard/07_Triangulation/res/Triangulation.rc index ee150facfb..ab6b27c663 100755 --- a/samples/mfc/standard/07_Triangulation/res/Triangulation.rc +++ b/samples/mfc/standard/07_Triangulation/res/Triangulation.rc @@ -202,7 +202,7 @@ BEGIN ID_BUTTONStart "Press to go to the first sample\nFirst sample (Home)" ID_BUTTONNext "Press to go to the next sample\nNext sample (PgDn)" ID_BUTTONEnd "Press to go to the last sample\nLast sample (End)" - ID_DUMP_VIEW "Save current frame into a GIF file\nExport view to GIF (F12)" + ID_DUMP_VIEW "Save current frame into an image file\nExport view (F12)" END #endif // English (U.S.) resources diff --git a/samples/mfc/standard/07_Triangulation/src/TriangulationDoc.cpp b/samples/mfc/standard/07_Triangulation/src/TriangulationDoc.cpp index b05539fd20..67d9008a01 100755 --- a/samples/mfc/standard/07_Triangulation/src/TriangulationDoc.cpp +++ b/samples/mfc/standard/07_Triangulation/src/TriangulationDoc.cpp @@ -405,30 +405,17 @@ void CTriangulationDoc::OnUpdateBUTTONPrev(CCmdUI* pCmdUI) pCmdUI->Enable (!myPresentation->AtFirstSample()); } -void CTriangulationDoc::OnDumpView() +void CTriangulationDoc::OnDumpView() { - CFileDialog aDlg (false, "gif", "OCCView.gif", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "GIF Files (*.GIF)|*.gif|" - "BMP Files (*.BMP)|*.bmp|" - "PNG Files (*.PNG)|*.png|" - "JPEG Files (*.JPEG)|*.jpeg|" - "PPM Files (*.PPM)|*.ppm|" - "TIFF Files (*.TIFF)|*.tiff|" - "TGA Files (*.TGA)|*.tga|" - "EXR Files (*.EXR)|*.exr||", NULL); - if (aDlg.DoModal() != IDOK) - { - return; - } - for (POSITION aPos = GetFirstViewPosition(); aPos != NULL;) { OCC_3dView* pView = (OCC_3dView* )GetNextView (aPos); pView->UpdateWindow(); } + myViewer->InitActiveViews(); Handle(V3d_View) aView = myViewer->ActiveView(); - aView->Dump (aDlg.GetPathName()); + ExportView (aView); } void CTriangulationDoc::Fit() diff --git a/samples/mfc/standard/09_Animation/src/AnimationDoc.h b/samples/mfc/standard/09_Animation/src/AnimationDoc.h index 1312b90121..c847d79411 100755 --- a/samples/mfc/standard/09_Animation/src/AnimationDoc.h +++ b/samples/mfc/standard/09_Animation/src/AnimationDoc.h @@ -9,103 +9,83 @@ #pragma once #endif // _MSC_VER >= 1000 - +#include "OCC_BaseDoc.h" #include "AIS_ConnectedInteractive.hxx" #include "Geom_Transformation.hxx" -class CAnimationDoc : public CDocument +class CAnimationDoc : public OCC_BaseDoc { public: - void DragEvent (const Standard_Integer x , - const Standard_Integer y , - const Standard_Integer TheState, - const Handle(V3d_View)& aView ); - void InputEvent (const Standard_Integer x , - const Standard_Integer y , - const Handle(V3d_View)& aView ); - void MoveEvent (const Standard_Integer x , - const Standard_Integer y , - const Handle(V3d_View)& aView ); - void ShiftMoveEvent (const Standard_Integer x , - const Standard_Integer y , - const Handle(V3d_View)& aView ); - void ShiftDragEvent (const Standard_Integer x , - const Standard_Integer y , - const Standard_Integer TheState, - const Handle(V3d_View)& aView ); - void ShiftInputEvent(const Standard_Integer x , - const Standard_Integer y , - const Handle(V3d_View)& aView ); - void Popup (const Standard_Integer x , - const Standard_Integer y , - const Handle(V3d_View)& aView ); + void DragEvent (const Standard_Integer x, + const Standard_Integer y, + const Standard_Integer TheState, + const Handle(V3d_View)& aView); -protected: // create from serialization only - CAnimationDoc(); - DECLARE_DYNCREATE(CAnimationDoc) + void InputEvent (const Standard_Integer x, + const Standard_Integer y, + const Handle(V3d_View)& aView); -// Attributes -public: + void MoveEvent (const Standard_Integer x, + const Standard_Integer y, + const Handle(V3d_View)& aView); -// Operations -public: + void ShiftMoveEvent (const Standard_Integer x, + const Standard_Integer y, + const Handle(V3d_View)& aView); -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CAnimationDoc) - public: - //}}AFX_VIRTUAL + void ShiftDragEvent (const Standard_Integer x, + const Standard_Integer y, + const Standard_Integer TheState, + const Handle(V3d_View)& aView); + + void ShiftInputEvent (const Standard_Integer x, + const Standard_Integer y, + const Handle(V3d_View)& aView); + + void Popup (const Standard_Integer x, + const Standard_Integer y, + const Handle(V3d_View)& aView); + +protected: // create from serialization only + CAnimationDoc(); + DECLARE_DYNCREATE(CAnimationDoc) // Implementation public: - virtual ~CAnimationDoc(); + virtual ~CAnimationDoc(); #ifdef _DEBUG - virtual void AssertValid() const; - virtual void Dump(CDumpContext& dc) const; + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; #endif -protected: - // Generated message map functions protected: - //{{AFX_MSG(CAnimationDoc) - afx_msg void OnShading(); - afx_msg void OnThread(); - afx_msg void OnFileLoadgrid(); - afx_msg void OnUpdateWalkWalkthru(CCmdUI* pCmdUI); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -public : + //{{AFX_MSG(CAnimationDoc) + afx_msg void OnShading(); + afx_msg void OnThread(); + afx_msg void OnFileLoadgrid(); + afx_msg void OnUpdateWalkWalkthru(CCmdUI* pCmdUI); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +private: + Handle_AIS_Shape myAisCrankArm ; + Handle_AIS_Shape myAisCylinderHead ; + Handle_AIS_Shape myAisPropeller ; + Handle_AIS_Shape myAisPiston ; + Handle_AIS_Shape myAisEngineBlock ; + Standard_Real myDeviation; + Standard_Integer myAngle; -private: - Handle_V3d_Viewer myViewer; - Handle_AIS_InteractiveContext myAISContext; -public : - Handle_AIS_InteractiveContext& GetAISContext(){ return myAISContext; }; - Handle_V3d_Viewer GetViewer() { return myViewer; }; - - - -private : - Handle_AIS_Shape myAisCrankArm ; - Handle_AIS_Shape myAisCylinderHead ; - Handle_AIS_Shape myAisPropeller ; - Handle_AIS_Shape myAisPiston ; - Handle_AIS_Shape myAisEngineBlock ; - - Standard_Real myDeviation; - Standard_Integer myAngle; - -public : - void OnMyTimer(); - Standard_Integer myCount; - Standard_Integer thread; - double m_Xmin, m_Ymin, m_Zmin, m_Xmax, m_Ymax, m_Zmax; - BOOL m_bIsGridLoaded; +public: + void OnMyTimer(); + Standard_Integer myCount; + Standard_Integer thread; + double m_Xmin, m_Ymin, m_Zmin, m_Xmax, m_Ymax, m_Zmax; + BOOL m_bIsGridLoaded; }; ///////////////////////////////////////////////////////////////////////////// diff --git a/samples/mfc/standard/09_Animation/src/AnimationView3D.cpp b/samples/mfc/standard/09_Animation/src/AnimationView3D.cpp index aa3ef38156..18d08046ba 100755 --- a/samples/mfc/standard/09_Animation/src/AnimationView3D.cpp +++ b/samples/mfc/standard/09_Animation/src/AnimationView3D.cpp @@ -225,24 +225,7 @@ CAnimationDoc* CAnimationView3D::GetDocument() // non-debug version is inline // CAnimationView3D message handlers void CAnimationView3D::OnFileExportImage() { - CFileDialog aDlg (FALSE, "*.BMP", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "BMP Files (*.BMP)|*.bmp|" - "GIF Files (*.GIF)|*.gif|" - "PNG Files (*.PNG)|*.png|" - "JPEG Files (*.JPEG)|*.jpeg|" - "PPM Files (*.PPM)|*.ppm|" - "TIFF Files (*.TIFF)|*.tiff|" - "TGA Files (*.TGA)|*.tga|" - "EXR Files (*.EXR)|*.exr||", - NULL); - if (aDlg.DoModal() != IDOK) - { - return; - } - - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); - myView->Dump (aDlg.GetPathName()); - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); + GetDocument()->ExportView (myView); } void CAnimationView3D::OnSize(UINT /*nType*/, int cx, int cy) diff --git a/samples/mfc/standard/10_Convert/src/WNT/OCCDemo.rc b/samples/mfc/standard/10_Convert/src/WNT/OCCDemo.rc index 26c102b1e8..352d2b678a 100755 --- a/samples/mfc/standard/10_Convert/src/WNT/OCCDemo.rc +++ b/samples/mfc/standard/10_Convert/src/WNT/OCCDemo.rc @@ -352,7 +352,7 @@ BEGIN ID_BUTTONStart "Press to go to the first sample\nFirst sample (Home)" ID_BUTTONNext "Press to go to the next sample\nNext sample (PgDn)" ID_BUTTONShowResult "Press to toggle show of source code on/off\nSource code (F11)" - ID_DUMP_VIEW "Save current frame into a GIF file\nExport view to GIF (F12)" + ID_DUMP_VIEW "Save current frame into an image file\nExport view (F12)" ID_BUTTONEnd "Press to go to the last sample\nLast sample (End)" ID_BUTTONPrev "Press to go to the previous sample\nPrevious sample (PgUp)" ID_BUTTONRepeat "Press to repeat the current sample\nRepeat sample (Space)" diff --git a/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.cpp b/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.cpp index f813941f2a..c63713cd8c 100755 --- a/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.cpp +++ b/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.cpp @@ -225,28 +225,15 @@ void COCCDemoDoc::OnUpdateBUTTONShowResult(CCmdUI* pCmdUI) void COCCDemoDoc::OnDumpView() { - CFileDialog aDlg (false, "gif", "OCCView.gif", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "GIF Files (*.GIF)|*.gif|" - "BMP Files (*.BMP)|*.bmp|" - "PNG Files (*.PNG)|*.png|" - "JPEG Files (*.JPEG)|*.jpeg|" - "PPM Files (*.PPM)|*.ppm|" - "TIFF Files (*.TIFF)|*.tiff|" - "TGA Files (*.TGA)|*.tga|" - "EXR Files (*.EXR)|*.exr||", NULL); - if (aDlg.DoModal() != IDOK) - { - return; - } - for (POSITION aPos = GetFirstViewPosition(); aPos != NULL;) { COCCDemoView* pView = (COCCDemoView* )GetNextView (aPos); pView->UpdateWindow(); } + myViewer->InitActiveViews(); Handle(V3d_View) aView = myViewer->ActiveView(); - aView->Dump (aDlg.GetPathName()); + ExportView (aView); } void COCCDemoDoc::Fit() diff --git a/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.h b/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.h index 6493883892..0907c148c0 100755 --- a/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.h +++ b/samples/mfc/standard/10_Convert/src/WNT/OCCDemoDoc.h @@ -9,14 +9,13 @@ #pragma once #endif // _MSC_VER > 1000 +#include #include "ResultDialog.h" class OCCDemo_Presentation; -class COCCDemoDoc : public CDocument +class COCCDemoDoc : public OCC_BaseDoc { public: - Handle_V3d_Viewer GetViewer() const { return myViewer; }; - Handle_AIS_InteractiveContext GetAISContext() const { return myAISContext; }; CResultDialog* GetResultDialog () {return &myCResultDialog;} Standard_CString GetDataDir() {return myDataDir;} @@ -72,8 +71,6 @@ protected: DECLARE_MESSAGE_MAP() private: - Handle_V3d_Viewer myViewer; - Handle_AIS_InteractiveContext myAISContext; OCCDemo_Presentation *myPresentation; CResultDialog myCResultDialog; BOOL myShowResult; diff --git a/samples/mfc/standard/Common/OCC_2dView.cpp b/samples/mfc/standard/Common/OCC_2dView.cpp index 74ff4e2bc6..439c7e08b9 100755 --- a/samples/mfc/standard/Common/OCC_2dView.cpp +++ b/samples/mfc/standard/Common/OCC_2dView.cpp @@ -121,36 +121,7 @@ void OCC_2dView::OnInitialUpdate() void OCC_2dView::OnFileExportImage() { - LPCTSTR filter; - filter = _T("EXR Files (*.EXR)|*.exr|TGA Files (*.TGA)|*.tga|TIFF Files (*.TIFF)|*.tiff|" - "PPM Files (*.PPM)|*.ppm|JPEG Files(*.JPEG)|*.jpeg|PNG Files (*.PNG)|*.png|" - "GIF Files (*.GIF)|*.gif|BMP Files (*.BMP)|*.bmp|PS Files (*.PS)|*.ps|" - "EPS Files (*.EPS)|*.eps|TEX Files (*.TEX)|*.tex|PDF Files (*.PDF)|*.pdf" - "|SVG Files (*.SVG)|*.svg|PGF Files (*.PGF)|*.pgf|EMF Files (*.EMF)|*.emf||"); - CFileDialog dlg(FALSE,_T("*.BMP"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - filter, - NULL ); - - -if (dlg.DoModal() == IDOK) -{ - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); - CString aFileName = dlg.GetPathName(); - CString ext = dlg.GetFileExt(); - if (!(ext.CompareNoCase("ps")) || !(ext.CompareNoCase("emf")) - || !(ext.CompareNoCase("pdf")) || !(ext.CompareNoCase("eps")) - || !(ext.CompareNoCase("tex")) || !(ext.CompareNoCase("svg")) - || !(ext.CompareNoCase("pgf"))) - { - Graphic3d_ExportFormat exFormat; - if (!(ext.CompareNoCase("ps"))) exFormat = Graphic3d_EF_PostScript; - else exFormat = Graphic3d_EF_EnhPostScript; - myV2dView->View()->Export( aFileName, exFormat ); - return; - } - myV2dView->Dump(aFileName); - SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); -} + GetDocument()->ExportView (myV2dView); } ///////////////////////////////////////////////////////////////////////////// diff --git a/samples/mfc/standard/Common/OCC_3dBaseDoc.h b/samples/mfc/standard/Common/OCC_3dBaseDoc.h index d0bba86a78..5c179b2bf9 100755 --- a/samples/mfc/standard/Common/OCC_3dBaseDoc.h +++ b/samples/mfc/standard/Common/OCC_3dBaseDoc.h @@ -13,7 +13,7 @@ #include "DimensionDlg.h" #include -class AFX_EXT_CLASS OCC_3dBaseDoc : public OCC_BaseDoc +class AFX_EXT_CLASS OCC_3dBaseDoc : public OCC_BaseDoc { protected: CDimensionDlg myDimensionDlg; diff --git a/samples/mfc/standard/Common/OCC_3dView.cpp b/samples/mfc/standard/Common/OCC_3dView.cpp index e53fbf10b9..9f1f7e9baa 100755 --- a/samples/mfc/standard/Common/OCC_3dView.cpp +++ b/samples/mfc/standard/Common/OCC_3dView.cpp @@ -146,33 +146,7 @@ OCC_3dDoc* OCC_3dView::GetDocument() // non-debug version is inline // OCC_3dView message handlers void OCC_3dView::OnFileExportImage() { - LPCTSTR filter; - filter = _T("EXR Files (*.EXR)|*.exr|TGA Files (*.TGA)|*.tga|TIFF Files (*.TIFF)|*.tiff|" - "PPM Files (*.PPM)|*.ppm|JPEG Files(*.JPEG)|*.jpeg|PNG Files (*.PNG)|*.png|" - "GIF Files (*.GIF)|*.gif|BMP Files (*.BMP)|*.bmp|PS Files (*.PS)|*.ps|" - "EPS Files (*.EPS)|*.eps|TEX Files (*.TEX)|*.tex|PDF Files (*.PDF)|*.pdf" - "|SVG Files (*.SVG)|*.svg|PGF Files (*.PGF)|*.pgf|EMF Files (*.EMF)|*.emf||"); - CFileDialog dlg(FALSE,_T("*.BMP"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - filter, - NULL ); - - if (dlg.DoModal() == IDOK) - { - CString aFileName = dlg.GetPathName(); - CString ext = dlg.GetFileExt(); - if (!(ext.CompareNoCase("ps")) || !(ext.CompareNoCase("emf")) - || !(ext.CompareNoCase("pdf")) || !(ext.CompareNoCase("eps")) - || !(ext.CompareNoCase("tex")) || !(ext.CompareNoCase("svg")) - || !(ext.CompareNoCase("pgf"))) - { - Graphic3d_ExportFormat exFormat; - if (!(ext.CompareNoCase("ps"))) exFormat = Graphic3d_EF_PostScript; - else exFormat = Graphic3d_EF_EnhPostScript; - myView->View()->Export( aFileName, exFormat ); - return; - } - myView->Dump(aFileName); - } + GetDocument()->ExportView (myView); } void OCC_3dView::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/) diff --git a/samples/mfc/standard/Common/OCC_BaseDoc.cpp b/samples/mfc/standard/Common/OCC_BaseDoc.cpp index 4ce15a771c..46c9e74252 100755 --- a/samples/mfc/standard/Common/OCC_BaseDoc.cpp +++ b/samples/mfc/standard/Common/OCC_BaseDoc.cpp @@ -5,6 +5,55 @@ #include #include "OCC_BaseDoc.h" +const CString OCC_BaseDoc::SupportedImageFormats() const +{ + return ("BMP Files (*.BMP)|*.bmp|GIF Files (*.GIF)|*.gif|TIFF Files (*.TIFF)|*.tiff|" + "PPM Files (*.PPM)|*.ppm|JPEG Files(*.JPEG)|*.jpeg|PNG Files (*.PNG)|*.png|" + "EXR Files (*.EXR)|*.exr|TGA Files (*.TGA)|*.tga|PS Files (*.PS)|*.ps|" + "EPS Files (*.EPS)|*.eps|TEX Files (*.TEX)|*.tex|PDF Files (*.PDF)|*.pdf" + "|SVG Files (*.SVG)|*.svg|PGF Files (*.PGF)|*.pgf"); +} + +void OCC_BaseDoc::ExportView (const Handle(V3d_View)& theView) const +{ + CFileDialog anExportDlg (FALSE,_T("*.BMP"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, + SupportedImageFormats() + "||", NULL ); + + if (anExportDlg.DoModal() == IDOK) + { + // Set waiting cursor + SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); + + CString aFileName = anExportDlg.GetPathName(); + CString aFileExt = anExportDlg.GetFileExt(); + + // For vector formats use V3d_View::Export() method + if (!(aFileExt.CompareNoCase ("ps")) || !(aFileExt.CompareNoCase ("pdf")) + || !(aFileExt.CompareNoCase ("eps")) || !(aFileExt.CompareNoCase ("tex")) + || !(aFileExt.CompareNoCase ("svg")) || !(aFileExt.CompareNoCase ("pgf"))) + { + Graphic3d_ExportFormat anExportFormat; + + if (!(aFileExt.CompareNoCase ("ps"))) anExportFormat = Graphic3d_EF_PostScript; + else if (!(aFileExt.CompareNoCase ("eps"))) anExportFormat = Graphic3d_EF_EnhPostScript; + else if (!(aFileExt.CompareNoCase ("pdf"))) anExportFormat = Graphic3d_EF_PDF; + else if (!(aFileExt.CompareNoCase ("tex"))) anExportFormat = Graphic3d_EF_TEX; + else if (!(aFileExt.CompareNoCase ("svg"))) anExportFormat = Graphic3d_EF_SVG; + else anExportFormat = Graphic3d_EF_PGF; + + theView->View()->Export (aFileName, anExportFormat); + } + else + { + // For pixel formats use V3d_View:Dump() method + theView->Dump (aFileName); + } + + // Restore cursor + SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); + } +} + ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// diff --git a/samples/mfc/standard/Common/OCC_BaseDoc.h b/samples/mfc/standard/Common/OCC_BaseDoc.h index ebff305043..46a0b2ba6f 100755 --- a/samples/mfc/standard/Common/OCC_BaseDoc.h +++ b/samples/mfc/standard/Common/OCC_BaseDoc.h @@ -9,9 +9,18 @@ #pragma once #endif // _MSC_VER > 1000 -#include - -class OCC_BaseDoc : public CDocument +#include +#include + +// Base class for all documents in the sample. +// Declares base functionlaity and interface for the sample documents. +// Common properties: +// - interactive context +// - 3d viewer +// Common methods: +// - base events +// - export into one of supported export formats. +class AFX_EXT_CLASS OCC_BaseDoc : public CDocument { public: @@ -21,7 +30,13 @@ public: Handle(AIS_InteractiveContext)& GetAISContext() { return myAISContext; } - Handle(V3d_Viewer) GetViewer() { return myViewer; } + Handle(V3d_Viewer) GetViewer() { return myViewer; } + + // Returns string with supported export pixel and vector images formats. + const CString SupportedImageFormats() const; + + // Exports the given view into of the supported formats. + void ExportView (const Handle(V3d_View)& theView) const; //Events virtual void DragEvent (const Standard_Integer /*theMouseX*/, -- 2.20.1