HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
binary.h
Go to the documentation of this file.
1 //
2 // Copyright 2024 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 
8 #ifndef PXR_BASE_TS_BINARY_H
9 #define PXR_BASE_TS_BINARY_H
10 
11 #include "pxr/pxr.h"
12 #include "pxr/base/ts/api.h"
13 #include "pxr/base/ts/spline.h"
14 #include "pxr/base/ts/types.h"
15 #include "pxr/base/vt/dictionary.h"
16 
17 #include <vector>
18 #include <unordered_map>
19 #include <cstdint>
20 
22 
23 
24 // For writing splines to, and reading them from, binary files.
25 //
27 {
28 public:
29  // Get current version that will be written.
30  // Version history:
31  // 1: initial version.
32  static constexpr uint8_t GetBinaryFormatVersion() { return 1; }
33 
34  // Write a spline to binary data. There are two outputs: a blob, and a
35  // customData map-of-dictionaries that consists of standard types.
36  TS_API
37  static void GetBinaryData(
38  const TsSpline &spline,
39  std::vector<uint8_t> *buf,
40  const std::unordered_map<TsTime, VtDictionary> **customDataOut);
41 
42  // Read a spline out of binary data.
43  TS_API
45  const std::vector<uint8_t> &buf,
46  std::unordered_map<TsTime, VtDictionary> &&customData);
47 
48 private:
49  static TsSpline _ParseV1(
50  const std::vector<uint8_t> &buf,
51  std::unordered_map<TsTime, VtDictionary> &&customData);
52 };
53 
54 
56 
57 #endif
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
static constexpr uint8_t GetBinaryFormatVersion()
Definition: binary.h:32
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 Quat< T > spline(const Quat< T > &q0, const Quat< T > &q1, const Quat< T > &q2, const Quat< T > &q3, T t) IMATH_NOEXCEPT
Definition: ImathQuat.h:576
static TS_API void GetBinaryData(const TsSpline &spline, std::vector< uint8_t > *buf, const std::unordered_map< TsTime, VtDictionary > **customDataOut)
#define TS_API
Definition: api.h:24
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
static TS_API TsSpline CreateSplineFromBinaryData(const std::vector< uint8_t > &buf, std::unordered_map< TsTime, VtDictionary > &&customData)