Program Listing for File point_cloud_compression.hpp

Return to documentation for file (foxglove/include/foxglove/point_cloud_compression.hpp)

#pragma once

#include <cstdint>

namespace foxglove {

enum class PointCloudCompressionMode : uint8_t {
  Default = 0,
  Disabled = 1,
  Draco = 2,
};

struct DracoEncodeOptions {
  static constexpr uint8_t kMaxQuantizationBits = 30;

  uint8_t quantization_bits = 12;
};

struct PointCloudCompression {
  PointCloudCompressionMode mode = PointCloudCompressionMode::Default;
  DracoEncodeOptions draco;

  static PointCloudCompression disabled() {
    return {PointCloudCompressionMode::Disabled, {}};
  }

  static PointCloudCompression withDraco(DracoEncodeOptions options) {
    return {PointCloudCompressionMode::Draco, options};
  }
};

}  // namespace foxglove