diff options
Diffstat (limited to 'extern/draco/dracoenc/src/draco/io/point_cloud_io.h')
-rw-r--r-- | extern/draco/dracoenc/src/draco/io/point_cloud_io.h | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/extern/draco/dracoenc/src/draco/io/point_cloud_io.h b/extern/draco/dracoenc/src/draco/io/point_cloud_io.h deleted file mode 100644 index 4e1eb359644..00000000000 --- a/extern/draco/dracoenc/src/draco/io/point_cloud_io.h +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_IO_POINT_CLOUD_IO_H_ -#define DRACO_IO_POINT_CLOUD_IO_H_ - -#include "draco/compression/config/compression_shared.h" -#include "draco/compression/decode.h" -#include "draco/compression/expert_encode.h" - -namespace draco { - -template <typename OutStreamT> -OutStreamT WritePointCloudIntoStream(const PointCloud *pc, OutStreamT &&os, - PointCloudEncodingMethod method, - const EncoderOptions &options) { - EncoderBuffer buffer; - EncoderOptions local_options = options; - ExpertEncoder encoder(*pc); - encoder.Reset(local_options); - encoder.SetEncodingMethod(method); - if (!encoder.EncodeToBuffer(&buffer).ok()) { - os.setstate(std::ios_base::badbit); - return os; - } - - os.write(static_cast<const char *>(buffer.data()), buffer.size()); - - return os; -} - -template <typename OutStreamT> -OutStreamT WritePointCloudIntoStream(const PointCloud *pc, OutStreamT &&os, - PointCloudEncodingMethod method) { - const EncoderOptions options = EncoderOptions::CreateDefaultOptions(); - return WritePointCloudIntoStream(pc, os, method, options); -} - -template <typename OutStreamT> -OutStreamT &WritePointCloudIntoStream(const PointCloud *pc, OutStreamT &&os) { - return WritePointCloudIntoStream(pc, os, POINT_CLOUD_SEQUENTIAL_ENCODING); -} - -template <typename InStreamT> -InStreamT &ReadPointCloudFromStream(std::unique_ptr<PointCloud> *point_cloud, - InStreamT &&is) { - // Determine size of stream and write into a vector - const auto start_pos = is.tellg(); - is.seekg(0, std::ios::end); - const std::streampos is_size = is.tellg() - start_pos; - is.seekg(start_pos); - std::vector<char> data(is_size); - is.read(&data[0], is_size); - - // Create a point cloud from that data. - DecoderBuffer buffer; - buffer.Init(&data[0], data.size()); - Decoder decoder; - auto statusor = decoder.DecodePointCloudFromBuffer(&buffer); - *point_cloud = std::move(statusor).value(); - if (!statusor.ok() || *point_cloud == nullptr) { - is.setstate(std::ios_base::badbit); - } - - return is; -} - -// Reads a point cloud from a file. The function automatically chooses the -// correct decoder based on the extension of the files. Currently, .obj and .ply -// files are supported. Other file extensions are processed by the default -// draco::PointCloudDecoder. -// Returns nullptr with an error status if the decoding failed. -StatusOr<std::unique_ptr<PointCloud>> ReadPointCloudFromFile( - const std::string &file_name); - -} // namespace draco - -#endif // DRACO_IO_POINT_CLOUD_IO_H_ |