1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// Copyright (c) 2018 GeometryFactory Sarl (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h $ // $Id: include/CGAL/Surface_mesh/IO/OFF.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Mael Rouxel-Labbé #ifndef CGAL_SURFACE_MESH_IO_OFF_H #define CGAL_SURFACE_MESH_IO_OFF_H #include #include #include #include #include #include #include #include namespace CGAL { //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read namespace IO { namespace internal { template class GetVertexNormalMap { typedef typename PolygonMesh::template Property_map DefaultMap; typedef DefaultMap DefaultMap_const; public: typedef typename internal_np::Lookup_named_param_def::type type; typedef typename internal_np::Lookup_named_param_def::type const_type; }; template class GetVertexColorMap { typedef typename PolygonMesh::template Property_map DefaultMap; typedef DefaultMap DefaultMap_const; public: typedef typename internal_np::Lookup_named_param_def::type type; typedef typename internal_np::Lookup_named_param_def::type const_type; }; template class GetVertexTextureMap { typedef typename PolygonMesh::template Property_map DefaultMap; typedef DefaultMap DefaultMap_const; public: typedef typename internal_np::Lookup_named_param_def::type type; typedef typename internal_np::Lookup_named_param_def::type const_type; }; template class GetFaceColorMap { typedef typename PolygonMesh::template Property_map DefaultMap; typedef DefaultMap DefaultMap_const; public: typedef typename internal_np::Lookup_named_param_def::type type; typedef typename internal_np::Lookup_named_param_def::type const_type; }; template bool read_OFF_with_or_without_fcolors(std::istream& is, Surface_mesh& sm, const CGAL::File_scanner_OFF& scanner, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Face_index Face_index; typedef CGAL::IO::Color Color; typedef typename GetFaceColorMap::type FCM; using parameters::choose_parameter; using parameters::is_default_parameter; using parameters::get_parameter; typename Mesh::template Property_map fcm; bool is_fcm_requested = !(is_default_parameter::value); if(!is_fcm_requested && scanner.has_colors()) { bool created; std::tie(fcm, created) = sm.template add_property_map("f:color", Color(0,0,0)); CGAL_assertion(created); is_fcm_requested = true; } if(is_fcm_requested) { FCM fcolors = choose_parameter(get_parameter(np, internal_np::face_color_map), fcm); return CGAL::IO::internal::read_OFF_BGL(is, sm, np.face_color_map(fcolors)); } else { return CGAL::IO::internal::read_OFF_BGL(is, sm, np); } } template bool read_OFF_with_or_without_vtextures(std::istream& is, Surface_mesh& sm, const CGAL::File_scanner_OFF& scanner, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; typedef typename GetK, CGAL_NP_CLASS>::Kernel K; typedef typename K::Point_2 Texture; typedef typename GetVertexTextureMap::type VTM; using parameters::choose_parameter; using parameters::is_default_parameter; using parameters::get_parameter; typename Mesh::template Property_map vtm; bool is_vtm_requested = !(is_default_parameter::value); if(!is_vtm_requested && scanner.has_textures()) { bool created; std::tie(vtm, created) = sm.template add_property_map("v:texcoord"); CGAL_assertion(created); is_vtm_requested = true; } if(is_vtm_requested) { VTM vtextures = choose_parameter(get_parameter(np, internal_np::vertex_texture_map), vtm); return read_OFF_with_or_without_fcolors(is, sm, scanner, np.vertex_texture_map(vtextures)); } else { return read_OFF_with_or_without_fcolors(is, sm, scanner, np); } } template bool read_OFF_with_or_without_vcolors(std::istream& is, Surface_mesh& sm, const CGAL::File_scanner_OFF& scanner, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; typedef CGAL::IO::Color Color; typedef typename GetVertexColorMap::type VCM; using parameters::choose_parameter; using parameters::is_default_parameter; using parameters::get_parameter; typename Mesh::template Property_map vcm; bool is_vcm_requested = !(is_default_parameter::value); if(!is_vcm_requested && scanner.has_colors()) { bool created; std::tie(vcm, created) = sm.template add_property_map("v:color", Color(0,0,0)); CGAL_assertion(created); is_vcm_requested = true; } if(is_vcm_requested) { VCM vcolors = choose_parameter(get_parameter(np, internal_np::vertex_color_map), vcm); return read_OFF_with_or_without_vtextures(is, sm, scanner, np.vertex_color_map(vcolors)); } else { return read_OFF_with_or_without_vtextures(is, sm, scanner, np); } } template bool read_OFF_with_or_without_vnormals(std::istream& is, Surface_mesh& sm, const CGAL::File_scanner_OFF& scanner, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; typedef typename GetK, CGAL_NP_CLASS>::Kernel K; typedef typename K::Vector_3 Normal; typedef typename GetVertexNormalMap::type VNM; using parameters::choose_parameter; using parameters::is_default_parameter; using parameters::get_parameter; typename Mesh::template Property_map vnm; bool is_vnm_requested = !(is_default_parameter::value); if(!is_vnm_requested && scanner.has_normals()) { bool created; std::tie(vnm, created) = sm.template add_property_map("v:normal"); CGAL_assertion(created); is_vnm_requested = true; } if(is_vnm_requested) { VNM vnormals = choose_parameter(get_parameter(np, internal_np::vertex_normal_map), vnm); return read_OFF_with_or_without_vcolors(is, sm, scanner, np.vertex_normal_map(vnormals)); } else { return read_OFF_with_or_without_vcolors(is, sm, scanner, np); } } } // namespace internal /// \ingroup PkgSurfaceMeshIOFuncOFF /// /// \brief extracts the surface mesh from an input stream in the \ref IOStreamOFF /// and appends it to the surface mesh `sm`. /// /// This function reads points, as well as vertex normals, vertex and face colors, /// and texture vertex coordinates if those attributes are available in the input. /// These last four attributes are stored in internal property maps of `sm` /// named "v:normal", "v:color", "f:color", and `"v:texcoord"`, respectively, /// which will be created if they do not already exist. /// If property maps are passed through named parameters (see below), /// then they are used instead of the internal ones. /// /// Ignores comment lines which start with a hash, and lines with whitespace. /// /// \attention The graph `sm` is not cleared, and the data from the stream is added. /// /// \tparam Point The type of the \em point property of a vertex. There is no requirement on `P`, /// besides being default constructible and assignable. /// In typical use cases it will be a 2D or 3D point type. /// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" /// /// \param is the input stream /// \param sm the surface mesh to be constructed /// \param np optional \ref bgl_namedparameters "Named Parameters" described below /// /// \cgalNamedParamsBegin /// \cgalParamNBegin{vertex_point_map} /// \cgalParamDescription{a property map associating points to the vertices of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and `Point` as value type} /// \cgalParamDefault{`boost::get(CGAL::vertex_point, g)`} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_normal_map} /// \cgalParamDescription{a property map associating normals to the vertices of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and a 3D vector type issued from the same kernel as `Point` as value type} /// \cgalParamDefault{If this parameter is unused, vertex normals (if they exist) /// will be written in an internal property map called `v:normal`.} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_color_map} /// \cgalParamDescription{a property map associating colors to the vertices of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{If this parameter is unused, vertex colors (if they exist) /// will be written in an internal property map called `v:color`.} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_texture_map} /// \cgalParamDescription{a property map associating textures to the vertices of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and a 2D vector type issued from the same kernel as `Point` as value type} /// \cgalParamDefault{If this parameter is unused, vertex textures (if they exist) /// will be written in an internal property map called `v:texcoords`.} /// \cgalParamNEnd /// /// \cgalParamNBegin{face_color_map} /// \cgalParamDescription{a property map associating colors to the faces of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Face_index` /// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{If this parameter is unused, face colors (if they exist) /// will be written in an internal property map called `f:color`.} /// \cgalParamNEnd /// \cgalNamedParamsEnd /// /// \pre The data in the stream must represent a two-manifold. If this is not the case /// the `failbit` of `is` is set and the mesh cleared. /// template bool read_OFF(std::istream& is, Surface_mesh& sm, const CGAL_NP_CLASS& np = parameters::default_values()) { std::streampos pos = is.tellg(); CGAL::File_scanner_OFF scanner(is, false); is.seekg(pos); bool res = internal::read_OFF_with_or_without_vnormals(is, sm, scanner, np); if(!res) sm.clear(); return res; } template bool read_OFF(const std::string& fname, Surface_mesh& sm, const CGAL_NP_CLASS& np = parameters::default_values()) { std::ifstream in(fname.c_str()); return read_OFF(in, sm, np); } } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm, const CGAL_NP_CLASS& np = parameters::default_values()) { return IO::read_OFF(is, sm, np); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(Surface_mesh& sm, const std::string& filename) { return IO::read_OFF(filename, sm, parameters::default_values()); } #endif // CGAL_NO_DEPRECATED_CODE //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write namespace IO { namespace internal { template bool write_OFF_with_or_without_fcolors(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Face_index Face_index; using parameters::is_default_parameter; const bool has_fcolors = !(is_default_parameter::value); auto fcolors = sm.template property_map("f:color"); if(!has_fcolors && fcolors.has_value() && std::distance(fcolors.value().begin(), fcolors.value().end()) > 0) return write_OFF_BGL(os, sm, np.face_color_map(fcolors.value())); else return write_OFF_BGL(os, sm, np); } template bool write_OFF_with_or_without_vtextures(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; typedef typename GetK, CGAL_NP_CLASS>::Kernel K; typedef typename K::Point_2 Texture; using parameters::is_default_parameter; const bool has_vtextures = !(is_default_parameter::value); auto vtextures = sm.template property_map("v:texcoord"); if(!has_vtextures && vtextures.has_value() && std::distance(vtextures.value().begin(), vtextures.value().end()) > 0) return write_OFF_with_or_without_fcolors(os, sm, np.vertex_texture_map(vtextures.value())); else return write_OFF_with_or_without_fcolors(os, sm, np); } template bool write_OFF_with_or_without_vcolors(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; using parameters::is_default_parameter; const bool has_vcolors = !(is_default_parameter::value); auto vcolors = sm.template property_map("v:color"); if(!has_vcolors && vcolors.has_value() && std::distance(vcolors.value().begin(), vcolors.value().end()) > 0) return write_OFF_with_or_without_vtextures(os, sm, np.vertex_color_map(vcolors.value())); else return write_OFF_with_or_without_vtextures(os, sm, np); } template bool write_OFF_with_or_without_vnormals(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np) { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; typedef typename GetK, CGAL_NP_CLASS>::Kernel K; typedef typename K::Vector_3 Normal; using parameters::is_default_parameter; const bool has_vnormals = !(is_default_parameter::value); auto vnormals = sm.template property_map("v:normal"); if(!has_vnormals && vnormals.has_value() && std::distance(vnormals.value().begin(), vnormals.value().end()) > 0) return write_OFF_with_or_without_vcolors(os, sm, np.vertex_normal_map(vnormals.value())); else return write_OFF_with_or_without_vcolors(os, sm, np); } } // namespace internal /// \ingroup PkgSurfaceMeshIOFuncOFF /// /// \brief writes the surface mesh `sm` in the output stream, using the \ref IOStreamOFF. /// /// This overload of \link PkgBGLIOFct `write_OFF(std::ostream&, const Graph&)` \endlink will also output /// the following property maps internal to the surface mesh, if they exist and if they are not /// already present in the named parameters: /// /// - vertex normals (property map named "v:normal" in the surface mesh) /// - vertex colors (property map named "v:color" in the surface mesh) /// - vertex textures (property map named "v:texcoord" in the surface mesh) /// - face colors (property map named "f:color" in the surface mesh) /// /// \tparam Point The type of the \em point property of a vertex. There is no requirement on `P`, /// besides being default constructible and assignable. /// In typical use cases it will be a 2D or 3D point type. /// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" /// /// \param os the output stream /// \param sm the surface mesh to be output /// \param np optional \ref bgl_namedparameters "Named Parameters" described below /// /// \cgalNamedParamsBegin /// \cgalParamNBegin{vertex_point_map} /// \cgalParamDescription{a property map associating points to the vertices of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and `%Point` as value type} /// \cgalParamDefault{`boost::get(CGAL::vertex_point, g)`} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_normal_map} /// \cgalParamDescription{a property map associating normals to the vertices of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and a 3D vector type issued from the same kernel as `Point` as value type} /// \cgalParamDefault{vertex normals will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_color_map} /// \cgalParamDescription{a property map associating colors to the vertices of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{vertex colors will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// /// \cgalParamNBegin{vertex_texture_map} /// \cgalParamDescription{a property map associating textures to the vertices of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Vertex_index` /// as key type and a 2D point type issued from the same kernel as `Point` as value type} /// \cgalParamDefault{vertex textures will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// /// \cgalParamNBegin{face_color_map} /// \cgalParamDescription{a property map associating colors to the faces of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Face_index` /// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{face colors will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// /// \cgalParamNBegin{stream_precision} /// \cgalParamDescription{a parameter used to set the precision (i.e. how many digits are generated) of the output stream} /// \cgalParamType{int} /// \cgalParamDefault{the precision of the stream `os`} /// \cgalParamNEnd /// \cgalNamedParamsEnd /// /// \returns `true` if writing was successful, `false` otherwise. /// template bool write_OFF(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np = parameters::default_values()) { using parameters::is_default_parameter; const bool has_vpoints = !(is_default_parameter::value); if(has_vpoints) return internal::write_OFF_with_or_without_vnormals(os, sm, np); return internal::write_OFF_with_or_without_vnormals(os, sm, np.vertex_point_map(get_const_property_map(CGAL::vertex_point, sm))); } } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm, const CGAL_NP_CLASS& np = parameters::default_values()) { return IO::write_OFF(os, sm, np); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(const Surface_mesh& sm, const std::string& filename) { return IO::write_OFF(filename, sm, parameters::default_values()); } #endif // CGAL_NO_DEPRECATED_CODE } // namespace CGAL #endif // CGAL_SURFACE_MESH_IO_OFF_H