23#ifndef VCL_LOAD_SAVE_PLY_DETAIL_EXTRA_H
24#define VCL_LOAD_SAVE_PLY_DETAIL_EXTRA_H
28#include <vclib/exceptions/io.h>
29#include <vclib/io/read.h>
30#include <vclib/load_save/settings.h>
31#include <vclib/mesh/requirements.h>
32#include <vclib/misc/logger.h>
33#include <vclib/space/core/texture.h>
35namespace vcl::detail {
37template<MeshConcept MeshType, LoggerConcept LogType = NullLogger>
39 const PlyHeader& header,
42 const LoadSettings& settings = LoadSettings())
44 if constexpr (HasTexturePaths<MeshType>) {
45 for (
const std::string& str : header.textureFileNames()) {
46 mesh.pushTexturePath(str);
47 if constexpr (HasTextureImages<MeshType>) {
48 uint k = mesh.textureNumber() - 1;
49 if (settings.loadTextureImages) {
51 mesh.texture(k).image().load(mesh.meshBasePath() + str);
54 "Cannot load texture " + str, LogType::WARNING_LOG);
62template<MeshConcept MeshType, LoggerConcept LogType = NullLogger>
67 const SaveSettings& settings)
69 if constexpr (HasTexturePaths<MeshType>) {
71 for (
const std::string& str : mesh.texturePaths()) {
72 header.pushTextureFileName(str);
74 if constexpr (HasTextureImages<MeshType>) {
75 if (settings.saveTextureImages) {
77 mesh.texture(k).image().save(mesh.meshBasePath() + str);
79 catch (
const std::runtime_error& e) {
80 log.log(e.what(), LogType::WARNING_LOG);
88template<LoggerConcept LogType>
89void readPlyUnknownElement(
91 const PlyHeader& header,
95 log.startProgress(
"Reading unknown elements", el.numberElements);
97 if (header.format() == ply::ASCII) {
98 for (uint i = 0; i < el.numberElements; ++i) {
99 readAndTokenizeNextNonEmptyLine(file);
104 for (uint i = 0; i < el.numberElements; ++i) {
105 for (
const PlyProperty& p : el.properties) {
107 uint s = io::readPrimitiveType<int>(file, p.listSizeType);
108 for (uint i = 0; i < s; ++i)
109 io::readPrimitiveType<int>(file, p.type);
112 io::readPrimitiveType<int>(file, p.type);
NullLogger nullLogger
The nullLogger object is an object of type NullLogger that is used as default argument in the functio...
Definition null_logger.h:125