TDME2  1.9.200
FloatBuffer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <array>
4 
5 #include <tdme/tdme.h>
8 
9 using std::array;
10 
12 
13 /**
14  * Float buffer class
15  * @author Andreas Drewke
16  */
18 {
19 public:
20  /**
21  * Default constructor
22  */
24  }
25 
26  /**
27  * Public constructor
28  * @param buffer buffer
29  */
31  this->ownsBuffer = false;
32  this->buffer = buffer->buffer;
33  }
34 
35  /**
36  * @return capacity
37  */
38  inline virtual int64_t getCapacity() {
39  return Buffer::getCapacity() / sizeof(float);
40  }
41 
42  /**
43  * @return position
44  */
45  inline virtual int64_t getPosition() {
46  return Buffer::getPosition() / sizeof(float);
47  }
48 
49  /**
50  * Get a value at given position
51  * @param position position
52  * @return value at given position
53  */
54  inline float get(int64_t position) {
55  uint32_t floatAsInt = 0;
56  floatAsInt+= (uint32_t)Buffer::get(position);
57  floatAsInt+= (uint32_t)Buffer::get(position + 1) << 8;
58  floatAsInt+= (uint32_t)Buffer::get(position + 2) << 16;
59  floatAsInt+= (uint32_t)Buffer::get(position + 3) << 24;
60  return *((float*)&floatAsInt);
61  }
62 
63  /**
64  * Put a float value into float buffer
65  * @param value value
66  */
67  inline FloatBuffer* put(float value) {
68  Buffer::put((const uint8_t*)&value, sizeof(float));
69  return this;
70  }
71 
72  /**
73  * Put float values into float buffer
74  * @param values values
75  */
76  inline FloatBuffer* put(const array<float, 2>& values) {
77  Buffer::put((const uint8_t*)values.data(), 2 * sizeof(float));
78  return this;
79  }
80 
81  /**
82  * Put float values into float buffer
83  * @param values values
84  */
85  inline FloatBuffer* put(const array<float, 3>& values) {
86  Buffer::put((const uint8_t*)values.data(), 3 * sizeof(float));
87  return this;
88  }
89 
90  /**
91  * Put float values into float buffer
92  * @param values values
93  */
94  inline FloatBuffer* put(const array<float, 4>& values) {
95  Buffer::put((const uint8_t*)values.data(), 4 * sizeof(float));
96  return this;
97  }
98 
99  /**
100  * Put float values into float buffer
101  * @param values values
102  */
103  inline FloatBuffer* put(const array<float, 16>& values) {
104  Buffer::put((const uint8_t*)values.data(), 16 * sizeof(float));
105  return this;
106  }
107 
108 };
Base class of buffers.
Definition: Buffer.h:21
uint8_t get(int64_t position) const
Definition: Buffer.h:107
vector< uint8_t > * buffer
Definition: Buffer.h:30
Buffer * put(uint8_t value)
Put value into buffer.
Definition: Buffer.h:115
virtual int64_t getCapacity() const
Definition: Buffer.h:82
virtual int64_t getPosition() const
Definition: Buffer.h:89
Float buffer class.
Definition: FloatBuffer.h:18
FloatBuffer * put(float value)
Put a float value into float buffer.
Definition: FloatBuffer.h:67
float get(int64_t position)
Get a value at given position.
Definition: FloatBuffer.h:54
virtual int64_t getCapacity()
Definition: FloatBuffer.h:38
FloatBuffer * put(const array< float, 4 > &values)
Put float values into float buffer.
Definition: FloatBuffer.h:94
virtual int64_t getPosition()
Definition: FloatBuffer.h:45
FloatBuffer * put(const array< float, 2 > &values)
Put float values into float buffer.
Definition: FloatBuffer.h:76
FloatBuffer * put(const array< float, 3 > &values)
Put float values into float buffer.
Definition: FloatBuffer.h:85
FloatBuffer * put(const array< float, 16 > &values)
Put float values into float buffer.
Definition: FloatBuffer.h:103
FloatBuffer()
Default constructor.
Definition: FloatBuffer.h:23
FloatBuffer(Buffer *buffer)
Public constructor.
Definition: FloatBuffer.h:30