// Created on: 1992-04-06 // Created by: Remi LEQUETTE // Copyright (c) 1992-1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef Draw_Viewer_HeaderFile #define Draw_Viewer_HeaderFile #include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #endif const Standard_Integer MAXVIEW = 30; class Draw_View; class Draw_Viewer { public : Standard_EXPORT Draw_Viewer (); Standard_EXPORT Standard_Boolean DefineColor (const Standard_Integer i, const char* colname); Standard_EXPORT void MakeView (const Standard_Integer id, const char* typ, const Standard_Integer X, const Standard_Integer Y, const Standard_Integer W, const Standard_Integer H); // build a view on a given window #ifdef _WIN32 Standard_EXPORT void MakeView (const Standard_Integer id, const char* typ, const Standard_Integer X, const Standard_Integer Y, const Standard_Integer W, const Standard_Integer H, HWND win, const Standard_Boolean useBuffer = Standard_False); #endif Standard_EXPORT void MakeView (const Standard_Integer id, const char* typ, const char* window); Standard_EXPORT void SetTitle (const Standard_Integer id, const char* name); Standard_EXPORT void ResetView (const Standard_Integer id); Standard_EXPORT void SetZoom (const Standard_Integer id, const Standard_Real z); Standard_EXPORT void RotateView (const Standard_Integer id, const gp_Dir2d&, const Standard_Real); Standard_EXPORT void RotateView (const Standard_Integer id, const gp_Pnt&, const gp_Dir&, const Standard_Real); Standard_EXPORT void SetFocal (const Standard_Integer id, const Standard_Real FocalDist); Standard_EXPORT char* GetType (const Standard_Integer id) const; Standard_EXPORT Standard_Real Zoom (const Standard_Integer id) const; Standard_EXPORT Standard_Real Focal (const Standard_Integer id) const; Standard_EXPORT void SetTrsf (const Standard_Integer id, gp_Trsf& T); Standard_EXPORT void GetTrsf (const Standard_Integer id, gp_Trsf& T) const; Standard_EXPORT void GetPosSize (const Standard_Integer id, Standard_Integer& X, Standard_Integer& Y, Standard_Integer& W, Standard_Integer& H); Standard_EXPORT Standard_Boolean Is3D (const Standard_Integer id) const; Standard_EXPORT void GetFrame (const Standard_Integer id, Standard_Integer& xmin, Standard_Integer& ymin, Standard_Integer& xmax, Standard_Integer& ymax); Standard_EXPORT void FitView (const Standard_Integer id, const Standard_Integer frame); Standard_EXPORT void PanView (const Standard_Integer id, const Standard_Integer DX, const Standard_Integer DY); Standard_EXPORT void SetPan (const Standard_Integer id, const Standard_Integer DX, const Standard_Integer DY); Standard_EXPORT void GetPan (const Standard_Integer id, Standard_Integer& DX, Standard_Integer& DY); Standard_EXPORT Standard_Boolean HasView (const Standard_Integer id) const; Standard_EXPORT void DisplayView (const Standard_Integer id) const; Standard_EXPORT void HideView (const Standard_Integer id) const; Standard_EXPORT void ClearView (const Standard_Integer id) const; Standard_EXPORT void RemoveView (const Standard_Integer id) ; Standard_EXPORT void RepaintView (const Standard_Integer id) const; #ifdef _WIN32 Standard_EXPORT void ResizeView (const Standard_Integer id) const; Standard_EXPORT void UpdateView (const Standard_Integer id, const Standard_Boolean forced = Standard_False) const; #endif Standard_EXPORT void ConfigView (const Standard_Integer id) const; Standard_EXPORT void PostScriptView (const Standard_Integer id, const Standard_Integer VXmin, const Standard_Integer VYmin, const Standard_Integer VXmax, const Standard_Integer VYmax, const Standard_Integer PXmin, const Standard_Integer PYmin, const Standard_Integer PXmax, const Standard_Integer PYmax, std::ostream& sortie) const; Standard_EXPORT void PostColor(const Standard_Integer icol, const Standard_Integer width, const Standard_Real gray); Standard_EXPORT Standard_Boolean SaveView(const Standard_Integer id, const char* filename); Standard_EXPORT void RepaintAll () const; Standard_EXPORT void Repaint2D () const; Standard_EXPORT void Repaint3D () const; Standard_EXPORT void DeleteView (const Standard_Integer id); Standard_EXPORT void Clear (); Standard_EXPORT void Clear2D (); Standard_EXPORT void Clear3D (); Standard_EXPORT void Flush (); Standard_EXPORT void DrawOnView (const Standard_Integer id, const Handle(Draw_Drawable3D)& D) const; Standard_EXPORT void HighlightOnView (const Standard_Integer id, const Handle(Draw_Drawable3D)& D, const Draw_ColorKind C = Draw_blanc) const; Standard_EXPORT void AddDrawable (const Handle(Draw_Drawable3D)& D); Standard_EXPORT void RemoveDrawable (const Handle(Draw_Drawable3D)& D); Standard_EXPORT Draw_Display MakeDisplay (const Standard_Integer id) const; Standard_EXPORT void Select (Standard_Integer& id, // View, -1 if none Standard_Integer& X, // Pick coordinates Standard_Integer& Y, Standard_Integer& Button, // Button pressed, 0 if none Standard_Boolean waitclick = Standard_True ); Standard_EXPORT Standard_Integer Pick(const Standard_Integer id, // returns the index (or 0) const Standard_Integer X, const Standard_Integer Y, const Standard_Integer Prec, Handle(Draw_Drawable3D)& D, const Standard_Integer First = 0) const; // search after this drawable Standard_EXPORT void LastPick(gp_Pnt& P1, gp_Pnt& P2, Standard_Real& Param); // returns the extremities and parameter of the last picked segment Standard_EXPORT ~Draw_Viewer(); Standard_EXPORT Draw_Viewer& operator<<(const Handle(Draw_Drawable3D)&); Standard_EXPORT const Draw_SequenceOfDrawable3D& GetDrawables(); private : Draw_View* myViews[MAXVIEW]; Draw_SequenceOfDrawable3D myDrawables; }; #endif