18#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_
19#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_
23#ifdef DRACO_NORMAL_ENCODING_SUPPORTED
40template <
typename DataTypeT>
46 template <
class TransformT,
class MeshDataT,
49 std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
operator()(
51 const TransformT &transform,
const MeshDataT &mesh_data,
52 uint16_t bitstream_version) {
54 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
57 attribute, transform, mesh_data));
59#ifdef DRACO_BACKWARDS_COMPATIBILITY_SUPPORTED
61 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
62 new MeshPredictionSchemeMultiParallelogramDecoder<
63 DataTypeT, TransformT, MeshDataT>(attribute, transform,
68 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
70 DataTypeT, TransformT, MeshDataT>(attribute, transform,
73#ifdef DRACO_BACKWARDS_COMPATIBILITY_SUPPORTED
75 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
76 new MeshPredictionSchemeTexCoordsDecoder<DataTypeT, TransformT,
78 attribute, transform, mesh_data, bitstream_version));
82 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
84 DataTypeT, TransformT, MeshDataT>(attribute, transform,
87#ifdef DRACO_NORMAL_ENCODING_SUPPORTED
89 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
91 DataTypeT, TransformT, MeshDataT>(attribute, transform,
99#ifdef DRACO_NORMAL_ENCODING_SUPPORTED
104 template <
class TransformT,
class MeshDataT>
105 struct DispatchFunctor<TransformT, MeshDataT,
107 std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
operator()(
109 const TransformT &transform,
const MeshDataT &mesh_data,
110 uint16_t bitstream_version) {
112 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
114 DataTypeT, TransformT, MeshDataT>(attribute, transform,
120 template <
class TransformT,
class MeshDataT>
123 std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
operator()(
125 const TransformT &transform,
const MeshDataT &mesh_data,
126 uint16_t bitstream_version) {
128 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
129 new MeshPredictionSchemeGeometricNormalDecoder<
130 DataTypeT, TransformT, MeshDataT>(attribute, transform,
138 template <
class TransformT,
class MeshDataT>
139 std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
operator()(
141 const TransformT &transform,
const MeshDataT &mesh_data,
142 uint16_t bitstream_version) {
144 method, attribute, transform, mesh_data, bitstream_version);
151template <
typename DataTypeT,
class TransformT>
152std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
155 const TransformT &transform) {
179 return std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>(
184template <
typename DataTypeT,
class TransformT>
185std::unique_ptr<PredictionSchemeDecoder<DataTypeT, TransformT>>
189 method, att_id, decoder, TransformT());
Definition mesh_decoder.h:27
Definition mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h:36
Definition mesh_prediction_scheme_geometric_normal_decoder.h:28
Definition mesh_prediction_scheme_parallelogram_decoder.h:28
Definition mesh_prediction_scheme_tex_coords_portable_decoder.h:29
Definition point_attribute.h:33
Definition point_cloud_decoder.h:28
PointCloud * point_cloud()
Definition point_cloud_decoder.h:76
virtual EncodedGeometryType GetGeometryType() const
Definition point_cloud_decoder.h:33
uint16_t bitstream_version() const
Definition point_cloud_decoder.h:63
const PointAttribute * attribute(int32_t att_id) const
Definition point_cloud.h:68
Definition prediction_scheme_decoder.h:36
Definition prediction_scheme_delta_decoder.h:26
ret($return)
Definition mesh_login_result.php:5
Definition attribute_octahedron_transform.cc:21
@ TRIANGULAR_MESH
Definition compression_shared.h:44
std::unique_ptr< PredictionSchemeT > CreateMeshPredictionScheme(const EncodingDataSourceT *source, PredictionSchemeMethod method, int att_id, const typename PredictionSchemeT::Transform &transform, uint16_t bitstream_version)
Definition prediction_scheme_factory.h:34
PredictionSchemeTransformType
Definition compression_shared.h:96
@ PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON_CANONICALIZED
Definition compression_shared.h:108
@ PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON
Definition compression_shared.h:105
std::unique_ptr< PredictionSchemeDecoder< DataTypeT, TransformT > > CreatePredictionSchemeForDecoder(PredictionSchemeMethod method, int att_id, const PointCloudDecoder *decoder, const TransformT &transform)
Definition prediction_scheme_decoder_factory.h:153
PredictionSchemeMethod
Definition compression_shared.h:80
@ MESH_PREDICTION_PARALLELOGRAM
Definition compression_shared.h:86
@ PREDICTION_NONE
Definition compression_shared.h:82
@ MESH_PREDICTION_TEX_COORDS_DEPRECATED
Definition compression_shared.h:88
@ MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM
Definition compression_shared.h:89
@ MESH_PREDICTION_GEOMETRIC_NORMAL
Definition compression_shared.h:91
@ MESH_PREDICTION_TEX_COORDS_PORTABLE
Definition compression_shared.h:90
@ MESH_PREDICTION_MULTI_PARALLELOGRAM
Definition compression_shared.h:87
Definition prediction_scheme_decoder_factory.h:48
std::unique_ptr< PredictionSchemeDecoder< DataTypeT, TransformT > > operator()(PredictionSchemeMethod method, const PointAttribute *attribute, const TransformT &transform, const MeshDataT &mesh_data, uint16_t bitstream_version)
Definition prediction_scheme_decoder_factory.h:49
Definition prediction_scheme_decoder_factory.h:41
std::unique_ptr< PredictionSchemeDecoder< DataTypeT, TransformT > > operator()(PredictionSchemeMethod method, const PointAttribute *attribute, const TransformT &transform, const MeshDataT &mesh_data, uint16_t bitstream_version)
Definition prediction_scheme_decoder_factory.h:139