 |
Gorgon Game Engine
|
Go to the documentation of this file.
7 #include "../Geometry/Point.h"
8 #include "../Geometry/Size.h"
9 #include "../Graphics/Color.h"
13 namespace Gorgon {
namespace IO {
19 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(int32_t));
28 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(int32_t));
37 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(uint32_t));
46 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(int16_t));
55 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(uint16_t));
64 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(int8_t));
73 stream.read(
reinterpret_cast<char*
>(&r),
sizeof(uint8_t));
81 static_assert(
sizeof(
float) == 4,
"Current implementation only supports 32bit floats");
86 stream.read(
reinterpret_cast<char*
>(&r), 4);
94 static_assert(
sizeof(
double) == 8,
"Current implementation only supports 64bit floats");
99 stream.read(
reinterpret_cast<char*
>(&r), 4);
140 stream.read(&ret[0], size);
146 inline std::string
ReadString(std::istream &stream,
unsigned long size) {
149 stream.read(&ret[0], size);
158 inline void ReadArray(std::istream &stream, T_ *data,
unsigned long size) {
159 stream.read((
char*)data, size*
sizeof(T_));
164 return SGuid(stream);
171 return {(int)x, (
int)y};
185 return {(int)w, (
int)h};
192 int32_t r = (int32_t)(v);
193 stream.write(
reinterpret_cast<char*
>(&r),
sizeof(int32_t));
199 stream.write(
reinterpret_cast<const char*
>(&r),
sizeof(int32_t));
204 inline void WriteUInt32(std::ostream &stream,
unsigned long value) {
206 stream.write(
reinterpret_cast<const char*
>(&r),
sizeof(uint32_t));
213 stream.write(
reinterpret_cast<const char*
>(&r),
sizeof(int16_t));
220 stream.write(
reinterpret_cast<const char*
>(&r),
sizeof(uint16_t));
225 inline void WriteInt8(std::ostream &stream,
char value) {
226 stream.write(
reinterpret_cast<const char*
>(&value),
sizeof(int8_t));
232 stream.write(
reinterpret_cast<const char*
>(&value),
sizeof(uint8_t));
238 static_assert(
sizeof(
float) == 4,
"Current implementation only supports 32bit floats");
242 stream.write(
reinterpret_cast<const char*
>(&value), 4);
248 static_assert(
sizeof(
double) == 8,
"Current implementation only supports 64bit floats");
252 stream.write(
reinterpret_cast<const char*
>(&value), 4);
256 inline void WriteBool(std::ostream &stream,
bool value) {
281 stream.write(&value[0], value.size());
285 inline void WriteString(std::ostream &stream,
const std::string &value) {
286 stream.write(&value[0], value.size());
294 inline void WriteArray(std::ostream &stream,
const T_ *data,
unsigned long size) {
295 stream.write((
const char*)data, size*
sizeof(T_));
302 inline void WriteVector(std::ostream &stream,
const std::vector<T_> &data) {
303 stream.write((
const char*)&data[0], data.size()*
sizeof(T_));
319 template<
class F_ = Float>
320 typename std::enable_if<std::is_same<F_, float>::value,
void>::type
345 inline unsigned long operator +(
const std::streampos &l,
unsigned long r) {
346 return (
unsigned long)l + r;
350 inline long operator -(
const std::streampos &l,
unsigned long r) {
361 return (
unsigned long)l - r;
void WriteInt16(std::ostream &stream, int value)
Writes a 16-bit integer from the stream.
Definition: Stream.h:211
This class represents a color information.
Definition: Color.h:91
Graphics::RGBA ReadRGBA(std::istream &stream)
Reads a RGBA color, R will be read first.
Definition: Stream.h:110
void WriteInt32(std::ostream &stream, long value)
Writes a 32-bit integer to the stream.
Definition: Stream.h:197
char ReadInt8(std::istream &stream)
Reads an 8-bit integer from the stream.
Definition: Stream.h:62
void WriteBool(std::ostream &stream, bool value)
Writes a boolean value. In resource 1.0, booleans are stored as 32bit integers.
Definition: Stream.h:256
T_ X
X coordinate.
Definition: Point.h:368
std::enable_if< std::is_same< F_, float >::value, void >::type WritePointf(std::ostream &stream, Geometry::Pointf p)
Saves the point as two consecutive floats. This function will not work if float type is double.
Definition: Stream.h:321
void WriteUInt16(std::ostream &stream, unsigned value)
Writes a 16-bit unsigned integer from the stream.
Definition: Stream.h:218
T_ Height
Height of this size object.
Definition: Size.h:261
void WriteEnum32(std::ostream &stream, E_ v)
Writes an enumeration as a 32-bit integer.
Definition: Stream.h:191
Represents a four channel 32 bit float per channel color information.
Definition: Color.h:373
void WriteArray(std::ostream &stream, const T_ *data, unsigned long size)
Writes an array to the stream.
Definition: Stream.h:294
Byte A
Alpha channel.
Definition: Color.h:312
Graphics::RGBAf ReadRGBAf(std::istream &stream)
Reads a RGBAf color, R will be read first.
Definition: Stream.h:122
void WriteVector(std::ostream &stream, const std::vector< T_ > &data)
Writes a vector to the stream.
Definition: Stream.h:302
float ReadFloat(std::istream &stream)
Reads a 32 bit IEEE floating point number from the stream.
Definition: Stream.h:80
void WriteRGBA(std::ostream &stream, Graphics::RGBA value)
Writes a RGBA color, R will be saved first.
Definition: Stream.h:261
long ReadInt32(std::istream &stream)
Reads a 32-bit integer from the stream.
Definition: Stream.h:26
Root namespace for Gorgon Game Engine.
Definition: Any.h:19
This class represents a 2D geometric size.
Definition: Size.h:23
float R
Red channel.
Definition: Color.h:588
void WriteUInt32(std::ostream &stream, unsigned long value)
Writes a 32-bit unsigned integer from the stream.
Definition: Stream.h:204
E_ ReadEnum32(std::istream &stream)
Reads an enumeration that is saved as 32bit integer.
Definition: Stream.h:17
bool ReadBool(std::istream &stream)
Reads a boolean value. In resource 1.0, booleans are stored as 32bit integers.
Definition: Stream.h:105
Byte Bytes[8]
Allows byte-by-byte addressing of the guid.
Definition: SGuid.h:27
int ReadInt16(std::istream &stream)
Reads a 16-bit integer from the stream.
Definition: Stream.h:44
unsigned long ReadUInt32(std::istream &stream)
Reads a 32-bit unsigned integer from the stream.
Definition: Stream.h:35
constexpr Type SGuid
Identifies resources.
Definition: GID.h:115
unsigned ReadUInt16(std::istream &stream)
Reads a 16-bit unsigned integer from the stream.
Definition: Stream.h:53
float G
Green channel.
Definition: Color.h:591
long operator+(const std::streampos &l, long r)
Adds an integer to streampos.
Definition: Stream.h:335
void WriteUInt8(std::ostream &stream, Byte value)
Writes an 8-bit unsigned integer from the stream.
Definition: Stream.h:231
void WriteSize(std::ostream &stream, Geometry::Size s)
Saves the size as two consecutive 32bit integers.
Definition: Stream.h:327
Byte B
Blue channel.
Definition: Color.h:309
This class represents a 2D point.
Definition: Point.h:32
float B
Blue channel.
Definition: Color.h:594
Byte G
Green channel.
Definition: Color.h:306
unsigned char Byte
Represents smallest cell in memory.
Definition: Types.h:9
void WriteInt8(std::ostream &stream, char value)
Writes an 8-bit integer from the stream.
Definition: Stream.h:225
Geometry::Pointf ReadPointf(std::istream &stream)
Definition: Stream.h:174
T_ Y
Y coordinate.
Definition: Point.h:371
T_ Width
Width of this size object.
Definition: Size.h:258
void WriteDouble(std::ostream &stream, double value)
Writes a 64 bit IEEE double precision floating point number from the stream.
Definition: Stream.h:247
Byte R
Red channel.
Definition: Color.h:303
This class represents a short globally unique identifier.
Definition: SGuid.h:22
Geometry::Size ReadSize(std::istream &stream)
Definition: Stream.h:181
float A
Alpha channel.
Definition: Color.h:597
void WritePoint(std::ostream &stream, Geometry::Point p)
Saves the point as two consecutive 32bit integers.
Definition: Stream.h:313
SGuid ReadGuid(std::istream &stream)
Reads a GUID from the given stream.
Definition: Stream.h:163
void WriteGuid(std::ostream &stream, const SGuid &value)
Writes a GUID from the given stream.
Definition: Stream.h:308
double ReadDouble(std::istream &stream)
Reads a 64 bit IEEE double precision floating point number from the stream.
Definition: Stream.h:93
Geometry::Point ReadPoint(std::istream &stream)
Definition: Stream.h:167
void WriteFloat(std::ostream &stream, float value)
Writes a 32 bit IEEE floating point number from the stream.
Definition: Stream.h:237
void ReadArray(std::istream &stream, T_ *data, unsigned long size)
Reads an array from the stream.
Definition: Stream.h:158
long operator-(const std::streampos &l, unsigned long r)
Subtracts an integer from streampos.
Definition: Stream.h:350
void WriteString(std::ostream &stream, const std::string &value)
Writes a string without its size.
Definition: Stream.h:285
Byte ReadUInt8(std::istream &stream)
Reads an 8-bit unsigned integer from the stream.
Definition: Stream.h:71
void WriteStringWithSize(std::ostream &stream, const std::string &value)
Writes a string from a given stream.
Definition: Stream.h:278
std::string ReadString(std::istream &stream)
Reads a string from a given stream.
Definition: Stream.h:135
void WriteRGBAf(std::ostream &stream, Graphics::RGBAf value)
Writes a RGBAf color, R will be saved first.
Definition: Stream.h:269