diff options
Diffstat (limited to 'extern/draco/draco/src/draco/attributes/attribute_transform.h')
-rw-r--r-- | extern/draco/draco/src/draco/attributes/attribute_transform.h | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/extern/draco/draco/src/draco/attributes/attribute_transform.h b/extern/draco/draco/src/draco/attributes/attribute_transform.h index d746fbf6eea..62aad60db91 100644 --- a/extern/draco/draco/src/draco/attributes/attribute_transform.h +++ b/extern/draco/draco/src/draco/attributes/attribute_transform.h @@ -17,6 +17,8 @@ #include "draco/attributes/attribute_transform_data.h" #include "draco/attributes/point_attribute.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -35,10 +37,38 @@ class AttributeTransform { AttributeTransformData *out_data) const = 0; bool TransferToAttribute(PointAttribute *attribute) const; + // Applies the transform to |attribute| and stores the result in + // |target_attribute|. |point_ids| is an optional vector that can be used to + // remap values during the transform. + virtual bool TransformAttribute(const PointAttribute &attribute, + const std::vector<PointIndex> &point_ids, + PointAttribute *target_attribute) = 0; + + // Applies an inverse transform to |attribute| and stores the result in + // |target_attribute|. In this case, |attribute| is an attribute that was + // already transformed (e.g. quantized) and |target_attribute| is the + // attribute before the transformation. + virtual bool InverseTransformAttribute(const PointAttribute &attribute, + PointAttribute *target_attribute) = 0; + + // Encodes all data needed by the transformation into the |encoder_buffer|. + virtual bool EncodeParameters(EncoderBuffer *encoder_buffer) const = 0; + + // Decodes all data needed to transform |attribute| back to the original + // format. + virtual bool DecodeParameters(const PointAttribute &attribute, + DecoderBuffer *decoder_buffer) = 0; + + // Initializes a transformed attribute that can be used as target in the + // TransformAttribute() function call. + virtual std::unique_ptr<PointAttribute> InitTransformedAttribute( + const PointAttribute &src_attribute, int num_entries); + protected: - std::unique_ptr<PointAttribute> InitPortableAttribute( - int num_entries, int num_components, int num_points, - const PointAttribute &attribute, bool is_unsigned) const; + virtual DataType GetTransformedDataType( + const PointAttribute &attribute) const = 0; + virtual int GetTransformedNumComponents( + const PointAttribute &attribute) const = 0; }; } // namespace draco |