// Copyright (c) 2018 GeometryFactory Sarl (France). // All rights reserved. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is part of CGAL (www.cgal.org) // // $URL$ // $Id$ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Maxime Gimeno #ifndef CGAL_IO_WKT_TRAITS_POLYGON_H #define CGAL_IO_WKT_TRAITS_POLYGON_H #include #include #include #include #include namespace boost { namespace geometry { namespace traits { // WKT traits for Polygon template< typename K > struct tag > { typedef ring_tag type; }; template< typename K > struct tag > { typedef polygon_tag type; }; template< typename K > struct ring_const_type > { typedef const CGAL::Polygon_2& type; }; template< typename K > struct ring_mutable_type > { typedef CGAL::Polygon_2& type; }; template< typename K > struct interior_const_type > { typedef const typename CGAL::Polygon_with_holes_2::Holes_container& type; }; template< typename K > struct interior_mutable_type > { typedef typename CGAL::Polygon_with_holes_2::Holes_container& type; }; template< typename K > struct exterior_ring > { static CGAL::Polygon_2& get(CGAL::Polygon_with_holes_2& p) { return (p.outer_boundary()); } static const CGAL::Polygon_2& get(const CGAL::Polygon_with_holes_2& p) { return (p.outer_boundary()); } }; template< typename K > struct interior_rings > { static typename CGAL::Polygon_with_holes_2::Holes_container& get(CGAL::Polygon_with_holes_2& p) { return p.holes(); } static const typename CGAL::Polygon_with_holes_2::Holes_container& get(CGAL::Polygon_with_holes_2 const& p) { return p.holes(); } }; } // namespace traits } // namespace geometry //extra specialization template< typename K > struct range_value > { typedef typename CGAL::Polygon_2::Point_2 type; }; } // namespace boost #endif // CGAL_IO_WKT_TRAITS_POLYGON_H