// Copyright (c) 2015 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 _ShapePersistent_Geom2d_HeaderFile #define _ShapePersistent_Geom2d_HeaderFile #include "ShapePersistent_Geom.hxx" #include "Geom2d_CartesianPoint.hxx" #include "Geom2d_Direction.hxx" #include "Geom2d_VectorWithMagnitude.hxx" #include "Geom2d_AxisPlacement.hxx" #include "Geom2d_Transformation.hxx" #include "Geom2d_Curve.hxx" class ShapePersistent_Geom2d : public ShapePersistent_Geom { typedef geometryBase basic; public: typedef ShapePersistent_Geom::Geometry Geometry; typedef subBase_empty Point; typedef instance CartesianPoint; typedef subBase_gp Vector; typedef instance Direction; typedef instance VectorWithMagnitude; typedef instance AxisPlacement; typedef instance, Geom2d_Transformation, gp_Trsf2d> Transformation; typedef geometryBase Curve; public: //! Create a persistent object for a curve Standard_EXPORT static occ::handle Translate( const occ::handle& theCurve, NCollection_DataMap, occ::handle>& theMap); }; //======================================================================= // Geometry //======================================================================= template <> inline const char* ShapePersistent_Geom::geometryBase::PName() const { return "PGeom2d_Geometry"; } //======================================================================= // Point //======================================================================= template <> inline const char* ShapePersistent_Geom::subBase_empty< ShapePersistent_Geom2d::geometryBase>::PName() const { return "PGeom2d_Point"; } //======================================================================= // CartesianPoint //======================================================================= template <> inline const char* ShapePersistent_Geom:: instance::PName() const { return "PGeom2d_CartesianPoint"; } template <> inline void ShapePersistent_Geom::instance::Write(StdObjMgt_WriteData& theWriteData) const { occ::handle aMyGeom = occ::down_cast(myTransient); theWriteData << aMyGeom->Pnt2d(); } //======================================================================= // Direction //======================================================================= template <> const char* ShapePersistent_Geom:: instance::PName() const; template <> void ShapePersistent_Geom::instance:: Write(StdObjMgt_WriteData& theWriteData) const; //======================================================================= // VectorWithMagnitude //======================================================================= template <> const char* ShapePersistent_Geom::instance::PName() const; template <> void ShapePersistent_Geom::instance::Write(StdObjMgt_WriteData& theWriteData) const; //======================================================================= // AxisPlacement //======================================================================= template <> const char* ShapePersistent_Geom:: instance::PName() const; template <> void ShapePersistent_Geom::instance::Write(StdObjMgt_WriteData& theWriteData) const; //======================================================================= // Transformation //======================================================================= template <> const char* ShapePersistent_Geom:: instance::PName() const; template <> void ShapePersistent_Geom:: instance::PChildren( StdObjMgt_Persistent::SequenceOfPersistent& theChildren) const; template <> void ShapePersistent_Geom::instance::Write(StdObjMgt_WriteData& theWriteData) const; //======================================================================= // Curve //======================================================================= template <> inline const char* ShapePersistent_Geom::geometryBase::PName() const { return "PGeom2d_Curve"; } #endif