From c3058070e50d9f2873c87fc53f85a06191ab414a Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 18 Sep 2023 15:56:17 -0400 Subject: [PATCH 01/19] Projet server. --- SQCSim-common/SQCSim-common.vcxproj | 154 ++ SQCSim-common/SQCSim-common.vcxproj.filters | 72 + SQCSim-common/array2d.h | 61 + SQCSim-common/array3d.h | 55 + SQCSim-common/blockinfo.cpp | 42 + SQCSim-common/blockinfo.h | 32 + SQCSim-common/bullet.cpp | 32 + SQCSim-common/bullet.h | 23 + SQCSim-common/chunk.cpp | 111 + SQCSim-common/chunk.h | 31 + SQCSim-common/define.h | 49 + SQCSim-common/matrix4.h | 571 +++++ SQCSim-common/opensimplex.cpp | 2542 +++++++++++++++++++ SQCSim-common/opensimplex.h | 51 + SQCSim-common/player.cpp | 160 ++ SQCSim-common/player.h | 34 + SQCSim-common/vector3.h | 219 ++ SQCSim-common/world.cpp | 109 + SQCSim-common/world.h | 45 + SQCSim-srv/SQCSim-srv.vcxproj | 138 + SQCSim-srv/SQCSim-srv.vcxproj.filters | 17 + SQCSim2021/SQCSim2021.vcxproj | 8 +- SQCSim2021/define.h | 21 +- SQCSim2021/world.cpp | 36 +- SQCSim2023.sln | 24 +- 25 files changed, 4600 insertions(+), 37 deletions(-) create mode 100644 SQCSim-common/SQCSim-common.vcxproj create mode 100644 SQCSim-common/SQCSim-common.vcxproj.filters create mode 100644 SQCSim-common/array2d.h create mode 100644 SQCSim-common/array3d.h create mode 100644 SQCSim-common/blockinfo.cpp create mode 100644 SQCSim-common/blockinfo.h create mode 100644 SQCSim-common/bullet.cpp create mode 100644 SQCSim-common/bullet.h create mode 100644 SQCSim-common/chunk.cpp create mode 100644 SQCSim-common/chunk.h create mode 100644 SQCSim-common/define.h create mode 100644 SQCSim-common/matrix4.h create mode 100644 SQCSim-common/opensimplex.cpp create mode 100644 SQCSim-common/opensimplex.h create mode 100644 SQCSim-common/player.cpp create mode 100644 SQCSim-common/player.h create mode 100644 SQCSim-common/vector3.h create mode 100644 SQCSim-common/world.cpp create mode 100644 SQCSim-common/world.h create mode 100644 SQCSim-srv/SQCSim-srv.vcxproj create mode 100644 SQCSim-srv/SQCSim-srv.vcxproj.filters diff --git a/SQCSim-common/SQCSim-common.vcxproj b/SQCSim-common/SQCSim-common.vcxproj new file mode 100644 index 0000000..5db21d0 --- /dev/null +++ b/SQCSim-common/SQCSim-common.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {ee91ab12-4225-4a4d-931d-69d72f6d91fb} + SQCSimcommon + 10.0 + + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SQCSim-common/SQCSim-common.vcxproj.filters b/SQCSim-common/SQCSim-common.vcxproj.filters new file mode 100644 index 0000000..af8b625 --- /dev/null +++ b/SQCSim-common/SQCSim-common.vcxproj.filters @@ -0,0 +1,72 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + + + Fichiers sources + + + Fichiers sources + + + Fichiers sources + + + Fichiers sources + + + Fichiers sources + + + Fichiers sources + + + \ No newline at end of file diff --git a/SQCSim-common/array2d.h b/SQCSim-common/array2d.h new file mode 100644 index 0000000..7451365 --- /dev/null +++ b/SQCSim-common/array2d.h @@ -0,0 +1,61 @@ +#ifndef ARRAY2D_H__ +#define ARRAY2D_H__ + +#include "define.h" + +template +class Array2d { + public: + Array2d(int x, int y); + ~Array2d(); + Array2d(const Array2d& array); + + void Set(int x, int y, T type); + T Get(int x, int y) const; + T Remove(int x, int y); + + void Reset(T type); + + private: + int m_x, m_y; + T* m_array; + + int To1dIndex(int x, int y) const; +}; + +template +Array2d::Array2d(int x, int y) : m_x(x), m_y(y) { m_array = new T[m_x * m_y]; } + +template +Array2d::~Array2d() { delete[] m_array; } + +template +Array2d::Array2d(const Array2d& array) : m_x(array.m_x), m_y(array.m_y) { + m_array = new T[m_x * m_y]; + for (int i = 0; i < m_x * m_y; ++i) + m_array[i] = array.m_array[i]; +} + +template +void Array2d::Set(int x, int y, T type) { m_array[To1dIndex(x, y)] = type; } + +template +T Array2d::Get(int x, int y) const { return m_array[To1dIndex(x, y)]; } + +template +T Array2d::Remove(int x, int y) { + T thing = std::move(m_array[To1dIndex(x, y)]); + m_array[To1dIndex(x, y)] = nullptr; + return thing; +} + +template +void Array2d::Reset(T type) { + for (int i = 0; i < m_x * m_y; ++i) + m_array[i] = type; +} + +template +int Array2d::To1dIndex(int x, int y) const { return x + (y * m_x); } + +#endif // ARRAY2D_H__ diff --git a/SQCSim-common/array3d.h b/SQCSim-common/array3d.h new file mode 100644 index 0000000..97603ef --- /dev/null +++ b/SQCSim-common/array3d.h @@ -0,0 +1,55 @@ +#ifndef ARRAY3D_H__ +#define ARRAY3D_H__ + +#include "define.h" + +template +class Array3d { + public: + Array3d(int x, int y, int z); + ~Array3d(); + Array3d(const Array3d& array); + + void Set(int x, int y, int z, T type); + T Get(int x, int y, int z) const; + + void Reset(T type); + + private: + int m_x, m_y, m_z; + T* m_array; + + int To1dIndex(int x, int y, int z) const; +}; + +template +Array3d::Array3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) { m_array = new T[m_x * m_y * m_z]; } + +template +Array3d::~Array3d() { delete[] m_array; } + +template +Array3d::Array3d(const Array3d& array) : m_x(array.m_x), m_y(array.m_y), m_z(array.m_z) { + m_array = new T[m_x * m_y * m_z]; + for (int i = 0; i < m_x * m_y * m_z; ++i) + m_array[i] = array.m_array[i]; +} + +template +void Array3d::Set(int x, int y, int z, T type) { + m_array[To1dIndex(x, y, z)] = type; +} + +template +T Array3d::Get(int x, int y, int z) const { return m_array[To1dIndex(x, y, z)]; } + +template +void Array3d::Reset(T type) { + for (int i = 0; i < m_x * m_y * m_z; ++i) + m_array[i] = type; +} + +template +int Array3d::To1dIndex(int x, int y, int z) const { return x + (z * m_x) + (y * m_z * m_x); } + +#endif // ARRAY3D_H__ diff --git a/SQCSim-common/blockinfo.cpp b/SQCSim-common/blockinfo.cpp new file mode 100644 index 0000000..1e42825 --- /dev/null +++ b/SQCSim-common/blockinfo.cpp @@ -0,0 +1,42 @@ +#include "blockinfo.h" +#include + +BlockInfo::BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur) : m_type(type), m_name(name), m_u(u), m_v(v), m_s(s), m_durability(dur) +{ +} + +BlockInfo::~BlockInfo() +{ +} + +BlockType BlockInfo::GetType() const +{ + return m_type; +} + +void BlockInfo::SetDurability(int durability) +{ + m_durability = durability; +} + +int BlockInfo::GetDurability() const +{ + return m_durability; +} + +void BlockInfo::GetTexture(float& u, float& v, float& s) +{ + u = m_u; + v = m_v; + s = m_s; +} + +void BlockInfo::Show() const +{ + std::cout << "Type: " << m_type << std::endl; + std::cout << "Nom: " << m_name << std::endl; + std::cout << "Durabilite: " << m_durability << std::endl; + std::cout << "Coordonnees Texture: " << m_u << ", " << m_v << ", " << m_s << std::endl; +} + + diff --git a/SQCSim-common/blockinfo.h b/SQCSim-common/blockinfo.h new file mode 100644 index 0000000..8a2afe7 --- /dev/null +++ b/SQCSim-common/blockinfo.h @@ -0,0 +1,32 @@ +#ifndef BLOCKINFO_H__ +#define BLOCKINFO_H__ + +#include +#include "define.h" + +class BlockInfo +{ + public: + BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur); + ~BlockInfo(); + + BlockType GetType() const; + + void SetDurability(int durability); + int GetDurability() const; + + void GetTexture(float& u, float& v, float& s); + + void Show() const; + + private: + BlockType m_type; + float m_u; + float m_v; + float m_s; + std::string m_name; + int m_durability; + +}; + +#endif // BLOCKINFO_H__ diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp new file mode 100644 index 0000000..c06c9e7 --- /dev/null +++ b/SQCSim-common/bullet.cpp @@ -0,0 +1,32 @@ +#include "bullet.h" +#include "world.h" + +Bullet::Bullet(Player& player) { + m_startpos = m_currentpos = player.GetPOV() + player.GetDirection(); + m_velocity = player.GetDirection(); +} + +Bullet::~Bullet() {} + +bool Bullet::Update(World* world, float elapsedtime) { + for (int x = 0; x < 1000; ++x) { + m_currentpos += m_velocity * elapsedtime; + + if (!world->ChunkAt(m_currentpos)) + return true; + else if (world->BlockAt(m_currentpos) != BTYPE_AIR) { + world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos); + return true; + } + else if ((m_currentpos - m_startpos).Length() > VIEW_DISTANCE) return true; + } + + return false; +} + +void Bullet::Transpose(int& x, int& z) { + m_currentpos.x -= x * CHUNK_SIZE_X; + m_currentpos.z -= z * CHUNK_SIZE_Z; + m_startpos.x -= x * CHUNK_SIZE_X; + m_startpos.z -= z * CHUNK_SIZE_Z; +} diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h new file mode 100644 index 0000000..de2e14c --- /dev/null +++ b/SQCSim-common/bullet.h @@ -0,0 +1,23 @@ +#ifndef BULLET_H__ +#define BULLET_H__ + +#include "player.h" + +class World; + +class Bullet { +public: + Bullet(Player& player); + ~Bullet(); + + bool Update(World* world, float elapsedtime); + void Transpose(int& x, int& z); + +private: + Vector3f m_startpos; + Vector3f m_currentpos; + Vector3f m_velocity; +}; + +#endif // BULLET_H__ + diff --git a/SQCSim-common/chunk.cpp b/SQCSim-common/chunk.cpp new file mode 100644 index 0000000..7bfc690 --- /dev/null +++ b/SQCSim-common/chunk.cpp @@ -0,0 +1,111 @@ +#include "chunk.h" +#include "world.h" + +Chunk::Chunk(unsigned int x, unsigned int y) : m_posX(x), m_posY(y) { + //std::ostringstream pos; // Vérifie l'existence d'un fichier .chunk avec sa position. + //pos << CHUNK_PATH << x << '_' << y << ".chunk"; + //std::ifstream input(pos.str(), std::fstream::binary); + + //if (input.fail()) { + OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(SEED); + m_blocks.Reset(BTYPE_AIR); + + for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Montagnes + for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { + float xnoiz, ynoiz; + xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 4096.; + ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 4096.; + double height = 0; + for (int x = 0; x < 39; ++x) { + height += simplex.eval(xnoiz, ynoiz); + height *= .79; + xnoiz *= 1.139; + ynoiz *= 1.139; + } + height = height * 2000. * simplex.eval((double)(ix + x * CHUNK_SIZE_X) / 512., (double)(iz + y * CHUNK_SIZE_Z) / 512.); + height /= (CHUNK_SIZE_Y / 1.9); + height += 15.; + for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) + SetBlock(ix, iy, iz, BTYPE_METAL, nullptr); + } + for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Collines + for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { + float xnoiz, ynoiz; + xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 512.; + ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 512.; + float height = simplex.eval(xnoiz, ynoiz) * 50.f;// +1.f; + for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) { + if (GetBlock(ix, iy, iz) == BTYPE_AIR) + SetBlock(ix, iy, iz, BTYPE_GRASS, nullptr); + } + } + for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Lacs" + for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { + for (int iy = 0; iy < 13; ++iy) { + if (GetBlock(ix, iy, iz) == BTYPE_AIR) + SetBlock(ix, iy, iz, BTYPE_ICE, nullptr); + } + } + //for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Arbres" + // for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { + // float xnoiz, ynoiz; + // xnoiz = (double)(iz * CHUNK_SIZE_Y + x * CHUNK_SIZE_X) / 256.; + // ynoiz = (double)(ix * CHUNK_SIZE_Y + y * CHUNK_SIZE_Z) / 256.; + // bool tree = (int)(abs(simplex.eval(xnoiz, ynoiz)) * 17933.f) % CHUNK_SIZE_Y > 126 ? true : false; + // for (int iy = 0; iy < CHUNK_SIZE_Y - 10; ++iy) + // if (GetBlock(ix, iy, iz) == BTYPE_AIR) + // if (GetBlock(ix, iy - 1, iz) == BTYPE_GRASS) + // if (tree) { + // for (int i = 0; i < (int)(abs(simplex.eval(xnoiz, ynoiz) * 4)) % 42 + 1; ++i) + // SetBlock(ix, iy + i, iz, BTYPE_DIRT, nullptr); + // break; + // } + // } + /* } + else { + input.seekg(0, std::ios_base::end); + int size = input.tellg(); + input.seekg(0, std::ios_base::beg); + + char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z]; + input.read(data, size); + input.close(); + + for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) + for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) + for (int iy = 0; iy < CHUNK_SIZE_Y; ++iy) + m_blocks.Set(ix, iy, iz, data[ix + (iz * CHUNK_SIZE_X) + (iy * CHUNK_SIZE_Z * CHUNK_SIZE_X)]); + }*/ +} + +Chunk::~Chunk() { + /*if (m_isModified) { + char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z]; + + for (int x = 0; x < CHUNK_SIZE_X; ++x) + for (int z = 0; z < CHUNK_SIZE_Z; ++z) + for (int y = 0; y < CHUNK_SIZE_Y; ++y) + data[x + (z * CHUNK_SIZE_X) + (y * CHUNK_SIZE_Z * CHUNK_SIZE_X)] = (char)GetBlock(x, y, z); + + std::ostringstream pos; + pos << CHUNK_PATH << m_posX << '_' << m_posY << ".chunk"; + + std::ofstream output(pos.str(), std::fstream::binary); + output.write(data, sizeof(data)); + output.close(); + }*/ +} + +void Chunk::RemoveBlock(int x, int y, int z, World* world) { + m_blocks.Set(x, y, z, BTYPE_AIR); +} + +void Chunk::SetBlock(int x, int y, int z, BlockType type, World* world) { + m_blocks.Set(x, y, z, type); +} + +BlockType Chunk::GetBlock(int x, int y, int z) { return m_blocks.Get(x, y, z); } + +void Chunk::GetPosition(unsigned int& x, unsigned int& y) const { x = m_posX; y = m_posY; } + +void Chunk::MakeModified() { m_isModified = true; } diff --git a/SQCSim-common/chunk.h b/SQCSim-common/chunk.h new file mode 100644 index 0000000..ec015ba --- /dev/null +++ b/SQCSim-common/chunk.h @@ -0,0 +1,31 @@ +#ifndef CHUNK_H__ +#define CHUNK_H__ +#include "define.h" +#include "array3d.h" +#include "array2d.h" +#include "blockinfo.h" +#include "opensimplex.h" + +class World; + +class Chunk { + protected: + Array3d m_blocks = Array3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z); + bool m_isModified = false; + + unsigned int m_posX; // Position du chunk dans l'array constituant le monde. + unsigned int m_posY; + + public: + Chunk(unsigned int x, unsigned int y); + ~Chunk(); + + void RemoveBlock(int x, int y, int z, World* world); + void SetBlock(int x, int y, int z, BlockType type, World* world); + BlockType GetBlock(int x, int y, int z); + void GetPosition(unsigned int& x, unsigned int& y) const; + + void MakeModified(); +}; + +#endif // CHUNK_H__ diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h new file mode 100644 index 0000000..aea5ea2 --- /dev/null +++ b/SQCSim-common/define.h @@ -0,0 +1,49 @@ +#ifndef DEFINE_H__ +#define DEFINE_H__ + +#include + +#define CHUNK_SIZE_X 16 +#define CHUNK_SIZE_Y 128 +#define CHUNK_SIZE_Z 16 +#define MAX_SELECTION_DISTANCE 5 +#define SEED 12345 + +#ifdef _DEBUG +#define WORLD_SIZE_X 64 +#define WORLD_SIZE_Y 64 + +#define FRAMES_RENDER_CHUNKS 4 +#define FRAMES_UPDATE_CHUNKS 4 +#define FRAMES_DELETE_CHUNKS 4 + +#define THREADS_GENERATE_CHUNKS 1 +#define THREADS_UPDATE_CHUNKS 1 +#define THREADS_DELETE_CHUNKS 1 + +#define VIEW_DISTANCE 256 +#define TEXTURE_SIZE 128 +#define MAX_BULLETS 64 +#endif + +#ifdef NDEBUG +#define WORLD_SIZE_X 16 +#define WORLD_SIZE_Y 16 + +#define FRAMES_RENDER_CHUNKS 1 +#define FRAMES_UPDATE_CHUNKS 1 +#define FRAMES_DELETE_CHUNKS 1 + +#define THREADS_GENERATE_CHUNKS 12 +#define THREADS_UPDATE_CHUNKS 5 +#define THREADS_DELETE_CHUNKS 2 + +#define VIEW_DISTANCE 1024 +#define TEXTURE_SIZE 512 +#define MAX_BULLETS 512 +#endif + +typedef uint8_t BlockType; +enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; + +#endif // DEFINE_H__ diff --git a/SQCSim-common/matrix4.h b/SQCSim-common/matrix4.h new file mode 100644 index 0000000..a0d911a --- /dev/null +++ b/SQCSim-common/matrix4.h @@ -0,0 +1,571 @@ +#ifndef MATRIX4_H__ +#define MATRIX4_H__ + +#include +#include +#include + +#include "define.h" +#include "vector3.h" + +#ifndef M_PI +#define M_PI 3.14159265f +#endif + +#define DEGTORAD(x) ((x * M_PI) / 180.f) +#define RADTODEG(x) ((180.f * x) / M_PI) + +template +class Matrix4 +{ + public: + typedef T Type; + + public: + static const Matrix4 ZERO; + static const Matrix4 IDENTITY; + + public: + Matrix4(); + Matrix4(const T& v); + Matrix4(const Matrix4& m); + Matrix4(const T& m_11, const T& m_12, const T& m_13, const T& m_14, + const T& m_21, const T& m_22, const T& m_23, const T& m_24, + const T& m_31, const T& m_32, const T& m_33, const T& m_34, + const T& m_41, const T& m_42, const T& m_43, const T& m_44); + + const T& Get11() const; + const T& Get12() const; + const T& Get13() const; + const T& Get14() const; + const T& Get21() const; + const T& Get22() const; + const T& Get23() const; + const T& Get24() const; + const T& Get31() const; + const T& Get32() const; + const T& Get33() const; + const T& Get34() const; + const T& Get41() const; + const T& Get42() const; + const T& Get43() const; + const T& Get44() const; + + Matrix4& operator=(const Matrix4& m); + + Matrix4 operator+(const Matrix4& m) const; + const Matrix4& operator+=(const Matrix4& m); + + Matrix4 operator-(const Matrix4& m) const; + Matrix4 operator-() const; + const Matrix4& operator-=(const Matrix4& m); + + Matrix4 operator*(const Matrix4& m) const; + Matrix4 operator*(const T& v) const; + const Matrix4& operator*=(const Matrix4& m); + const Matrix4& operator*=(const T& v); + + Matrix4 operator/(const T& v) const; + const Matrix4& operator/=(const T& v); + + bool operator==(const Matrix4& m) const; + bool operator!=(const Matrix4& m) const; + + void SetZero(); + void SetIdentity(); + void SetPerspectiveProjection(const T& fov, const T& aspect, const T& nearPlane, const T& farPlane); + void SetOrthographicProjection(const T& left, const T& right, const T& bottom, const T& top, const T& nearPlane, const T& farPlane); + + void SetLookAt(const Vector3& eyePosition, const Vector3& lookAtPosition, Vector3 upVector = Vector3(T(0), T(1), T(0))); + + bool IsZero() const; + bool IsIdentity() const; + + void ApplyTranslation(const T& x, const T& y, const T& z); + void ApplyRotation(const T& angle, const T& x, const T& y, const T& z); + void ApplyScale(const T& x, const T& y, const T& z); + + Vector3 GetTranslation() const; + + const T* GetInternalValues() const; + T* GetInternalValues(); + std::string ToString(const std::string& lineBegin = "|", const std::string& lineEnd = "|\n") const; + + private: + union { + // column-major matrix + struct + { + T m_11, m_21, m_31, m_41, m_12, m_22, m_32, m_42, m_13, m_23, m_33, m_43, m_14, m_24, m_34, m_44; + }; + T m_values[16]; + }; +}; + +typedef Matrix4 Matrix4i; +typedef Matrix4 Matrix4f; +typedef Matrix4 Matrix4d; + +template +const Matrix4 Matrix4::ZERO = Matrix4(0); + +template +const Matrix4 Matrix4::IDENTITY = Matrix4( + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1); + + template +std::ostream& operator<<(std::ostream& out, const Matrix4& m) +{ + out << m.ToString(); + return out; +} + + template +Matrix4::Matrix4() +{ + // Leave matrix uninitialized +} + + template +Matrix4::Matrix4(const T& v) +{ + for(int i = 0; i < 16; ++i) + m_values[i] = v; +} + + template +Matrix4::Matrix4(const Matrix4& m) +{ + for(int i = 0; i < 16; ++i) + m_values[i] = m.m_values[i]; +} + + template +Matrix4::Matrix4(const T& m_11, const T& m_12, const T& m_13, const T& m_14, + const T& m_21, const T& m_22, const T& m_23, const T& m_24, + const T& m_31, const T& m_32, const T& m_33, const T& m_34, + const T& m_41, const T& m_42, const T& m_43, const T& m_44) +{ + this->m_11 = m_11; + this->m_12 = m_12; + this->m_13 = m_13; + this->m_14 = m_14; + this->m_21 = m_21; + this->m_22 = m_22; + this->m_23 = m_23; + this->m_24 = m_24; + this->m_31 = m_31; + this->m_32 = m_32; + this->m_33 = m_33; + this->m_34 = m_34; + this->m_41 = m_41; + this->m_42 = m_42; + this->m_43 = m_43; + this->m_44 = m_44; +} + +template +const T& Matrix4::Get11() const +{ + return m_11; +} + +template +const T& Matrix4::Get12() const +{ + return m_12; +} + +template +const T& Matrix4::Get13() const +{ + return m_13; +} + +template +const T& Matrix4::Get14() const +{ + return m_14; +} + +template +const T& Matrix4::Get21() const +{ + return m_21; +} + +template +const T& Matrix4::Get22() const +{ + return m_22; +} + +template +const T& Matrix4::Get23() const +{ + return m_23; +} + +template +const T& Matrix4::Get24() const +{ + return m_24; +} + +template +const T& Matrix4::Get31() const +{ + return m_31; +} + +template +const T& Matrix4::Get32() const +{ + return m_32; +} + +template +const T& Matrix4::Get33() const +{ + return m_33; +} + +template +const T& Matrix4::Get34() const +{ + return m_34; +} + +template +const T& Matrix4::Get41() const +{ + return m_41; +} + +template +const T& Matrix4::Get42() const +{ + return m_42; +} + +template +const T& Matrix4::Get43() const +{ + return m_43; +} + +template +const T& Matrix4::Get44() const +{ + return m_44; +} + + template +Matrix4& Matrix4::operator=(const Matrix4& m) +{ + if(this != &m) + { + for(int i = 0; i < 16; ++i) + m_values[i] = m.m_values[i]; + } + + return *this; +} + +template +Matrix4 Matrix4::operator+(const Matrix4& m) const +{ + return Matrix4( + m_11 + m.m_11, m_12 + m.m_12, m_13 + m.m_13, m_14 + m.m_14, + m_21 + m.m_21, m_22 + m.m_22, m_23 + m.m_23, m_24 + m.m_24, + m_31 + m.m_31, m_32 + m.m_32, m_33 + m.m_33, m_34 + m.m_34, + m_41 + m.m_41, m_42 + m.m_42, m_43 + m.m_43, m_44 + m.m_44); +} + + template +const Matrix4& Matrix4::operator+=(const Matrix4& m) +{ + *this = *this + m; + return *this; +} + +template +Matrix4 Matrix4::operator-(const Matrix4& m) const +{ + return Matrix4( + m_11 - m.m_11, m_12 - m.m_12, m_13 - m.m_13, m_14 - m.m_14, + m_21 - m.m_21, m_22 - m.m_22, m_23 - m.m_23, m_24 - m.m_24, + m_31 - m.m_31, m_32 - m.m_32, m_33 - m.m_33, m_34 - m.m_34, + m_41 - m.m_41, m_42 - m.m_42, m_43 - m.m_43, m_44 - m.m_44); +} + +template +Matrix4 Matrix4::operator-() const +{ + return Matrix4( + -m_11, -m_12, -m_13, -m_14, + -m_21, -m_22, -m_23, -m_24, + -m_31, -m_32, -m_33, -m_34, + -m_41, -m_42, -m_43, -m_44); +} + + template +const Matrix4& Matrix4::operator-=(const Matrix4& m) +{ + *this = *this - m; + return *this; +} + +template +Matrix4 Matrix4::operator*(const Matrix4& m) const +{ + return Matrix4( + m_11 * m.m_11 + m_12 * m.m_21 + m_13 * m.m_31 + m_14 * m.m_41, + m_11 * m.m_12 + m_12 * m.m_22 + m_13 * m.m_32 + m_14 * m.m_42, + m_11 * m.m_13 + m_12 * m.m_23 + m_13 * m.m_33 + m_14 * m.m_43, + m_11 * m.m_14 + m_12 * m.m_24 + m_13 * m.m_34 + m_14 * m.m_44, + + m_21 * m.m_11 + m_22 * m.m_21 + m_23 * m.m_31 + m_24 * m.m_41, + m_21 * m.m_12 + m_22 * m.m_22 + m_23 * m.m_32 + m_24 * m.m_42, + m_21 * m.m_13 + m_22 * m.m_23 + m_23 * m.m_33 + m_24 * m.m_43, + m_21 * m.m_14 + m_22 * m.m_24 + m_23 * m.m_34 + m_24 * m.m_44, + + m_31 * m.m_11 + m_32 * m.m_21 + m_33 * m.m_31 + m_34 * m.m_41, + m_31 * m.m_12 + m_32 * m.m_22 + m_33 * m.m_32 + m_34 * m.m_42, + m_31 * m.m_13 + m_32 * m.m_23 + m_33 * m.m_33 + m_34 * m.m_43, + m_31 * m.m_14 + m_32 * m.m_24 + m_33 * m.m_34 + m_34 * m.m_44, + + m_41 * m.m_11 + m_42 * m.m_21 + m_43 * m.m_31 + m_44 * m.m_41, + m_41 * m.m_12 + m_42 * m.m_22 + m_43 * m.m_32 + m_44 * m.m_42, + m_41 * m.m_13 + m_42 * m.m_23 + m_43 * m.m_33 + m_44 * m.m_43, + m_41 * m.m_14 + m_42 * m.m_24 + m_43 * m.m_34 + m_44 * m.m_44); +} + +template +Matrix4 Matrix4::operator*(const T& v) const +{ + return Matrix4( + m_11 * v, m_12 * v, m_13 * v, m_14 * v, + m_21 * v, m_22 * v, m_23 * v, m_24 * v, + m_31 * v, m_32 * v, m_33 * v, m_34 * v, + m_41 * v, m_42 * v, m_43 * v, m_44 * v); +} + + template +const Matrix4& Matrix4::operator*=(const Matrix4& m) +{ + *this = *this * m; + return *this; +} + + template +const Matrix4& Matrix4::operator*=(const T& v) +{ + *this = *this * v; + return *this; +} + +template +Matrix4 Matrix4::operator/(const T& v) const +{ + return Matrix4( + m_11 / v, m_12 / v, m_13 / v, m_14 / v, + m_21 / v, m_22 / v, m_23 / v, m_24 / v, + m_31 / v, m_32 / v, m_33 / v, m_34 / v, + m_41 / v, m_42 / v, m_43 / v, m_44 / v); +} + + template +const Matrix4& Matrix4::operator/=(const T& v) +{ + *this = *this / v; + return *this; +} + +template +bool Matrix4::operator==(const Matrix4& m) const +{ + for(int i = 0; i < 16; ++i) + if(m_values[i] != m.m_values[i]) + return false; + + return true; +} + +template +bool Matrix4::operator!=(const Matrix4& m) const +{ + return !(*this == m); +} + + template +void Matrix4::SetZero() +{ + *this = ZERO; +} + + template +void Matrix4::SetIdentity() +{ + *this = IDENTITY; +} + + template +void Matrix4::SetPerspectiveProjection(const T& fov, const T& aspect, const T& nearPlane, const T& farPlane) +{ + const float h = T(1) / tan(fov * T(M_PI / 360.f)); + T negDepth = nearPlane - farPlane; + + SetZero(); + + m_11 = h / aspect; + m_22 = h; + m_33 = (farPlane + nearPlane) / negDepth; + m_34 = T(2) * (nearPlane * farPlane) / negDepth; + m_43 = -T(1); +} + + template +void Matrix4::SetOrthographicProjection(const T& left, const T& right, const T& bottom, const T& top, const T& nearPlane, const T& farPlane) +{ + m_11 = T(2) / (right - left); + m_12 = T(0); + m_13 = T(0); + m_14 = -(right + left) / (right - left); + + m_21 = T(0); + m_22 = T(2) / (top - bottom); + m_23 = T(0); + m_24 = -(top + bottom) / (top - bottom); + + m_31 = T(0); + m_32 = T(0); + m_33 = -T(2) / (farPlane - nearPlane); + m_34 = -(farPlane + nearPlane) / (farPlane - nearPlane); + + m_41 = T(0); + m_42 = T(0); + m_43 = T(0); + m_44 = T(1); +} + + template +void Matrix4::SetLookAt(const Vector3& eyePosition, const Vector3& lookAtPosition, Vector3 upVector) +{ + Vector3f L = lookAtPosition - eyePosition; + L.Normalize(); + + upVector.Normalize(); + Vector3f S = L.Cross(upVector); + S.Normalize(); + + Vector3f U = S.Cross(L); + + Matrix4 M; + M.m_11 = S.x; + M.m_12 = S.y; + M.m_13 = S.z; + M.m_14 = 0; + + M.m_21 = U.x; + M.m_22 = U.y; + M.m_23 = U.z; + M.m_24 = 0; + + M.m_31 = -L.x; + M.m_32 = -L.y; + M.m_33 = -L.z; + M.m_34 = 0; + + M.m_41 = 0; + M.m_42 = 0; + M.m_43 = 0; + M.m_44 = 1.f; + + SetIdentity(); + *this *= M; + ApplyTranslation(-eyePosition.x, -eyePosition.y, -eyePosition.z); +} + + template +void Matrix4::ApplyTranslation(const T& x, const T& y, const T& z) +{ + Matrix4 tmp( + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1); + + *this *= tmp; +} + + template +void Matrix4::ApplyRotation(const T& angle, const T& x, const T& y, const T& z) +{ + // TODO axis (x, y, z) must be normalized... + + T s = sin(DEGTORAD(angle)); + T c = cos(DEGTORAD(angle)); + T ic = T(1) - c; + + Matrix4 tmp( + x * x * ic + c, y * x * ic + (z * s), z * x * ic - (y * s), 0, + x * y * ic - (z * s), y * y * ic + c, z * y * ic + (x * s), 0, + x * z * ic + (y * s), y * z * ic - (x * s), z * z * ic + c, 0, + 0, 0, 0, 1); + + *this *= tmp; +} + + template +void Matrix4::ApplyScale(const T& x, const T& y, const T& z) +{ + Matrix4 tmp( + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1); + + *this *= tmp; +} + +template +Vector3 Matrix4::GetTranslation() const +{ + // NOTE: Works only if the matrix doesn't contains scale information (only rotation and translation) + // Reference: http://www.gamedev.net/topic/397751-how-to-get-camera-position/ + T x = -(m_11 * m_14 + m_21 * m_24 + m_31 * m_34); + T y = -(m_12 * m_14 + m_22 * m_24 + m_32 * m_34); + T z = -(m_13 * m_14 + m_23 * m_24 + m_33 * m_34); + + return Vector3(x, y, z); +} + + template +T* Matrix4::GetInternalValues() +{ + return m_values; +} + +template +const T* Matrix4::GetInternalValues() const +{ + return m_values; +} + +template +std::string Matrix4::ToString(const std::string& lineBegin, const std::string& lineEnd) const +{ + std::ostringstream ss; + ss << lineBegin << m_11 << " " << m_12 << " " << m_13 << " " << m_14 << lineEnd; + ss << lineBegin << m_21 << " " << m_22 << " " << m_23 << " " << m_24 << lineEnd; + ss << lineBegin << m_31 << " " << m_32 << " " << m_33 << " " << m_34 << lineEnd; + ss << lineBegin << m_41 << " " << m_42 << " " << m_43 << " " << m_44 << lineEnd; + + return ss.str(); +} + +#endif // MATRIX4_H__ diff --git a/SQCSim-common/opensimplex.cpp b/SQCSim-common/opensimplex.cpp new file mode 100644 index 0000000..a64d31f --- /dev/null +++ b/SQCSim-common/opensimplex.cpp @@ -0,0 +1,2542 @@ +#include "opensimplex.h" + +#include +namespace OpenSimplexNoise +{ + using namespace std; + + Noise::Noise() + : m_stretch2d(-0.211324865405187) //(1/Math.sqrt(2+1)-1)/2; + , m_squish2d(0.366025403784439) //(Math.sqrt(2+1)-1)/2; + , m_stretch3d(-1.0 / 6) //(1/Math.sqrt(3+1)-1)/3; + , m_squish3d(1.0 / 3) //(Math.sqrt(3+1)-1)/3; + , m_stretch4d(-0.138196601125011) //(1/Math.sqrt(4+1)-1)/4; + , m_squish4d(0.309016994374947) //(Math.sqrt(4+1)-1)/4; + , m_norm2d(47) + , m_norm3d(103) + , m_norm4d(30) + , m_defaultSeed(0) + , m_perm{0} + , m_permGradIndex3d{0} + , m_gradients2d{ 5, 2, 2, 5, + -5, 2, -2, 5, + 5, -2, 2, -5, + -5, -2, -2, -5, } + , m_gradients3d{-11, 4, 4, -4, 11, 4, -4, 4, 11, + 11, 4, 4, 4, 11, 4, 4, 4, 11, + -11, -4, 4, -4, -11, 4, -4, -4, 11, + 11, -4, 4, 4, -11, 4, 4, -4, 11, + -11, 4, -4, -4, 11, -4, -4, 4, -11, + 11, 4, -4, 4, 11, -4, 4, 4, -11, + -11, -4, -4, -4, -11, -4, -4, -4, -11, + 11, -4, -4, 4, -11, -4, 4, -4, -11, } + , m_gradients4d{ 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, + -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3, + 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, + -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, + 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, + -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, + 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, + -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, + 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, + -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, + 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, + -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, + 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, + -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, + 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, + -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, } + { + } + + Noise::Noise(int64_t seed) + : Noise() + { + short source[256]; + for (short i = 0; i < 256; i++) + { + source[i] = i; + } + seed = seed * 6364136223846793005l + 1442695040888963407l; + seed = seed * 6364136223846793005l + 1442695040888963407l; + seed = seed * 6364136223846793005l + 1442695040888963407l; + for (int i = 255; i >= 0; i--) + { + seed = seed * 6364136223846793005l + 1442695040888963407l; + int r = static_cast((seed + 31) % (i + 1)); + if (r < 0) + { + r += (i + 1); + } + m_perm[i] = source[r]; + m_permGradIndex3d[i] = static_cast((m_perm[i] % (m_gradients3d.size() / 3)) * 3); + source[r] = source[i]; + } + } + + double Noise::eval(double x, double y) const + { + //Place input coordinates onto grid. + double stretchOffset = (x + y) * m_stretch2d; + double xs = x + stretchOffset; + double ys = y + stretchOffset; + + //Floor to get grid coordinates of rhombus (stretched square) super-cell origin. + int xsb = static_cast(floor(xs)); + int ysb = static_cast(floor(ys)); + + //Skew out to get actual coordinates of rhombus origin. We'll need these later. + double squishOffset = (xsb + ysb) * m_squish2d; + double xb = xsb + squishOffset; + double yb = ysb + squishOffset; + + //Compute grid coordinates relative to rhombus origin. + double xins = xs - xsb; + double yins = ys - ysb; + + //Sum those together to get a value that determines which region we're in. + double inSum = xins + yins; + + //Positions relative to origin point. + double dx0 = x - xb; + double dy0 = y - yb; + + //We'll be defining these inside the next block and using them afterwards. + double dx_ext, dy_ext; + int xsv_ext, ysv_ext; + + double value = 0; + + //Contribution (1,0) + double dx1 = dx0 - 1 - m_squish2d; + double dy1 = dy0 - 0 - m_squish2d; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, dx1, dy1); + } + + //Contribution (0,1) + double dx2 = dx0 - 0 - m_squish2d; + double dy2 = dy0 - 1 - m_squish2d; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, dx2, dy2); + } + + if (inSum <= 1) + { //We're inside the triangle (2-Simplex) at (0,0) + double zins = 1 - inSum; + if (zins > xins || zins > yins) + { //(0,0) is one of the closest two triangular vertices + if (xins > yins) + { + xsv_ext = xsb + 1; + ysv_ext = ysb - 1; + dx_ext = dx0 - 1; + dy_ext = dy0 + 1; + } + else + { + xsv_ext = xsb - 1; + ysv_ext = ysb + 1; + dx_ext = dx0 + 1; + dy_ext = dy0 - 1; + } + } + else + { //(1,0) and (0,1) are the closest two vertices. + xsv_ext = xsb + 1; + ysv_ext = ysb + 1; + dx_ext = dx0 - 1 - 2 * m_squish2d; + dy_ext = dy0 - 1 - 2 * m_squish2d; + } + } + else + { //We're inside the triangle (2-Simplex) at (1,1) + double zins = 2 - inSum; + if (zins < xins || zins < yins) + { //(0,0) is one of the closest two triangular vertices + if (xins > yins) + { + xsv_ext = xsb + 2; + ysv_ext = ysb + 0; + dx_ext = dx0 - 2 - 2 * m_squish2d; + dy_ext = dy0 + 0 - 2 * m_squish2d; + } + else + { + xsv_ext = xsb + 0; + ysv_ext = ysb + 2; + dx_ext = dx0 + 0 - 2 * m_squish2d; + dy_ext = dy0 - 2 - 2 * m_squish2d; + } + } + else + { //(1,0) and (0,1) are the closest two vertices. + dx_ext = dx0; + dy_ext = dy0; + xsv_ext = xsb; + ysv_ext = ysb; + } + xsb += 1; + ysb += 1; + dx0 = dx0 - 1 - 2 * m_squish2d; + dy0 = dy0 - 1 - 2 * m_squish2d; + } + + //Contribution (0,0) or (1,1) + double attn0 = 2 - dx0 * dx0 - dy0 * dy0; + if (attn0 > 0) + { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate(xsb, ysb, dx0, dy0); + } + + //Extra Vertex + double attn_ext = 2 - dx_ext * dx_ext - dy_ext * dy_ext; + if (attn_ext > 0) + { + attn_ext *= attn_ext; + value += attn_ext * attn_ext * extrapolate(xsv_ext, ysv_ext, dx_ext, dy_ext); + } + + return value / m_norm2d; + } + + double Noise::eval(double x, double y, double z) const + { + //Place input coordinates on simplectic honeycomb. + double stretchOffset = (x + y + z) * m_stretch3d; + double xs = x + stretchOffset; + double ys = y + stretchOffset; + double zs = z + stretchOffset; + + //static_cast(floor to get simplectic honeycomb coordinates of rhombohedron (stretched cube) super-cell origin. + int xsb = static_cast(floor(xs)); + int ysb = static_cast(floor(ys)); + int zsb = static_cast(floor(zs)); + + //Skew out to get actual coordinates of rhombohedron origin. We'll need these later. + double squishOffset = (xsb + ysb + zsb) * m_squish3d; + double xb = xsb + squishOffset; + double yb = ysb + squishOffset; + double zb = zsb + squishOffset; + + //Compute simplectic honeycomb coordinates relative to rhombohedral origin. + double xins = xs - xsb; + double yins = ys - ysb; + double zins = zs - zsb; + + //Sum those together to get a value that determines which region we're in. + double inSum = xins + yins + zins; + + //Positions relative to origin point. + double dx0 = x - xb; + double dy0 = y - yb; + double dz0 = z - zb; + + //We'll be defining these inside the next block and using them afterwards. + double dx_ext0, dy_ext0, dz_ext0; + double dx_ext1, dy_ext1, dz_ext1; + int xsv_ext0, ysv_ext0, zsv_ext0; + int xsv_ext1, ysv_ext1, zsv_ext1; + + double value = 0; + if (inSum <= 1) + { //We're inside the tetrahedron (3-Simplex) at (0,0,0) + +//Determine which two of (0,0,1), (0,1,0), (1,0,0) are closest. + char aPoint = 0x01; + double aScore = xins; + char bPoint = 0x02; + double bScore = yins; + if (aScore >= bScore && zins > bScore) + { + bScore = zins; + bPoint = 0x04; + } + else if (aScore < bScore && zins > aScore) + { + aScore = zins; + aPoint = 0x04; + } + + //Now we determine the two lattice points not part of the tetrahedron that may contribute. + //This depends on the closest two tetrahedral vertices, including (0,0,0) + double wins = 1 - inSum; + if (wins > aScore || wins > bScore) + { //(0,0,0) is one of the closest two tetrahedral vertices. + char c = (bScore > aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. + + if ((c & 0x01) == 0) + { + xsv_ext0 = xsb - 1; + xsv_ext1 = xsb; + dx_ext0 = dx0 + 1; + dx_ext1 = dx0; + } + else + { + xsv_ext0 = xsv_ext1 = xsb + 1; + dx_ext0 = dx_ext1 = dx0 - 1; + } + + if ((c & 0x02) == 0) + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0; + if ((c & 0x01) == 0) + { + ysv_ext1 -= 1; + dy_ext1 += 1; + } + else + { + ysv_ext0 -= 1; + dy_ext0 += 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1; + } + + if ((c & 0x04) == 0) + { + zsv_ext0 = zsb; + zsv_ext1 = zsb - 1; + dz_ext0 = dz0; + dz_ext1 = dz0 + 1; + } + else + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz_ext1 = dz0 - 1; + } + } + else + { //(0,0,0) is not one of the closest two tetrahedral vertices. + char c = static_cast(aPoint | bPoint); //Our two extra vertices are determined by the closest two. + + if ((c & 0x01) == 0) + { + xsv_ext0 = xsb; + xsv_ext1 = xsb - 1; + dx_ext0 = dx0 - 2 * m_squish3d; + dx_ext1 = dx0 + 1 - m_squish3d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb + 1; + dx_ext0 = dx0 - 1 - 2 * m_squish3d; + dx_ext1 = dx0 - 1 - m_squish3d; + } + + if ((c & 0x02) == 0) + { + ysv_ext0 = ysb; + ysv_ext1 = ysb - 1; + dy_ext0 = dy0 - 2 * m_squish3d; + dy_ext1 = dy0 + 1 - m_squish3d; + } + else + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy0 - 1 - 2 * m_squish3d; + dy_ext1 = dy0 - 1 - m_squish3d; + } + + if ((c & 0x04) == 0) + { + zsv_ext0 = zsb; + zsv_ext1 = zsb - 1; + dz_ext0 = dz0 - 2 * m_squish3d; + dz_ext1 = dz0 + 1 - m_squish3d; + } + else + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz0 - 1 - 2 * m_squish3d; + dz_ext1 = dz0 - 1 - m_squish3d; + } + } + + //Contribution (0,0,0) + double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0; + if (attn0 > 0) + { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate(xsb + 0, ysb + 0, zsb + 0, dx0, dy0, dz0); + } + + //Contribution (1,0,0) + double dx1 = dx0 - 1 - m_squish3d; + double dy1 = dy0 - 0 - m_squish3d; + double dz1 = dz0 - 0 - m_squish3d; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1); + } + + //Contribution (0,1,0) + double dx2 = dx0 - 0 - m_squish3d; + double dy2 = dy0 - 1 - m_squish3d; + double dz2 = dz1; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2); + } + + //Contribution (0,0,1) + double dx3 = dx2; + double dy3 = dy1; + double dz3 = dz0 - 1 - m_squish3d; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3); + } + } + else if (inSum >= 2) + { //We're inside the tetrahedron (3-Simplex) at (1,1,1) + +//Determine which two tetrahedral vertices are the closest, out of (1,1,0), (1,0,1), (0,1,1) but not (1,1,1). + char aPoint = 0x06; + double aScore = xins; + char bPoint = 0x05; + double bScore = yins; + if (aScore <= bScore && zins < bScore) + { + bScore = zins; + bPoint = 0x03; + } + else if (aScore > bScore && zins < aScore) + { + aScore = zins; + aPoint = 0x03; + } + + //Now we determine the two lattice points not part of the tetrahedron that may contribute. + //This depends on the closest two tetrahedral vertices, including (1,1,1) + double wins = 3 - inSum; + if (wins < aScore || wins < bScore) + { //(1,1,1) is one of the closest two tetrahedral vertices. + char c = (bScore < aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. + + if ((c & 0x01) != 0) + { + xsv_ext0 = xsb + 2; + xsv_ext1 = xsb + 1; + dx_ext0 = dx0 - 2 - 3 * m_squish3d; + dx_ext1 = dx0 - 1 - 3 * m_squish3d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb; + dx_ext0 = dx_ext1 = dx0 - 3 * m_squish3d; + } + + if ((c & 0x02) != 0) + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish3d; + if ((c & 0x01) != 0) + { + ysv_ext1 += 1; + dy_ext1 -= 1; + } + else + { + ysv_ext0 += 1; + dy_ext0 -= 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0 - 3 * m_squish3d; + } + + if ((c & 0x04) != 0) + { + zsv_ext0 = zsb + 1; + zsv_ext1 = zsb + 2; + dz_ext0 = dz0 - 1 - 3 * m_squish3d; + dz_ext1 = dz0 - 2 - 3 * m_squish3d; + } + else + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz_ext1 = dz0 - 3 * m_squish3d; + } + } + else + { //(1,1,1) is not one of the closest two tetrahedral vertices. + char c = static_cast(aPoint & bPoint); //Our two extra vertices are determined by the closest two. + + if ((c & 0x01) != 0) + { + xsv_ext0 = xsb + 1; + xsv_ext1 = xsb + 2; + dx_ext0 = dx0 - 1 - m_squish3d; + dx_ext1 = dx0 - 2 - 2 * m_squish3d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb; + dx_ext0 = dx0 - m_squish3d; + dx_ext1 = dx0 - 2 * m_squish3d; + } + + if ((c & 0x02) != 0) + { + ysv_ext0 = ysb + 1; + ysv_ext1 = ysb + 2; + dy_ext0 = dy0 - 1 - m_squish3d; + dy_ext1 = dy0 - 2 - 2 * m_squish3d; + } + else + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy0 - m_squish3d; + dy_ext1 = dy0 - 2 * m_squish3d; + } + + if ((c & 0x04) != 0) + { + zsv_ext0 = zsb + 1; + zsv_ext1 = zsb + 2; + dz_ext0 = dz0 - 1 - m_squish3d; + dz_ext1 = dz0 - 2 - 2 * m_squish3d; + } + else + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz0 - m_squish3d; + dz_ext1 = dz0 - 2 * m_squish3d; + } + } + + //Contribution (1,1,0) + double dx3 = dx0 - 1 - 2 * m_squish3d; + double dy3 = dy0 - 1 - 2 * m_squish3d; + double dz3 = dz0 - 0 - 2 * m_squish3d; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, dx3, dy3, dz3); + } + + //Contribution (1,0,1) + double dx2 = dx3; + double dy2 = dy0 - 0 - 2 * m_squish3d; + double dz2 = dz0 - 1 - 2 * m_squish3d; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, dx2, dy2, dz2); + } + + //Contribution (0,1,1) + double dx1 = dx0 - 0 - 2 * m_squish3d; + double dy1 = dy3; + double dz1 = dz2; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, dx1, dy1, dz1); + } + + //Contribution (1,1,1) + dx0 = dx0 - 1 - 3 * m_squish3d; + dy0 = dy0 - 1 - 3 * m_squish3d; + dz0 = dz0 - 1 - 3 * m_squish3d; + double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0; + if (attn0 > 0) + { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate(xsb + 1, ysb + 1, zsb + 1, dx0, dy0, dz0); + } + } + else + { //We're inside the octahedron (Rectified 3-Simplex) in between. + double aScore; + char aPoint; + bool aIsFurtherSide; + double bScore; + char bPoint; + bool bIsFurtherSide; + + //Decide between point (0,0,1) and (1,1,0) as closest + double p1 = xins + yins; + if (p1 > 1) + { + aScore = p1 - 1; + aPoint = 0x03; + aIsFurtherSide = true; + } + else + { + aScore = 1 - p1; + aPoint = 0x04; + aIsFurtherSide = false; + } + + //Decide between point (0,1,0) and (1,0,1) as closest + double p2 = xins + zins; + if (p2 > 1) + { + bScore = p2 - 1; + bPoint = 0x05; + bIsFurtherSide = true; + } + else + { + bScore = 1 - p2; + bPoint = 0x02; + bIsFurtherSide = false; + } + + //The closest out of the two (1,0,0) and (0,1,1) will replace the furthest out of the two decided above, if closer. + double p3 = yins + zins; + if (p3 > 1) + { + double score = p3 - 1; + if (aScore <= bScore && aScore < score) + { + aScore = score; + aPoint = 0x06; + aIsFurtherSide = true; + } + else if (aScore > bScore && bScore < score) + { + bScore = score; + bPoint = 0x06; + bIsFurtherSide = true; + } + } + else + { + double score = 1 - p3; + if (aScore <= bScore && aScore < score) + { + aScore = score; + aPoint = 0x01; + aIsFurtherSide = false; + } + else if (aScore > bScore && bScore < score) + { + bScore = score; + bPoint = 0x01; + bIsFurtherSide = false; + } + } + + //Where each of the two closest points are determines how the extra two vertices are calculated. + if (aIsFurtherSide == bIsFurtherSide) + { + if (aIsFurtherSide) + { //Both closest points on (1,1,1) side + +//One of the two extra points is (1,1,1) + dx_ext0 = dx0 - 1 - 3 * m_squish3d; + dy_ext0 = dy0 - 1 - 3 * m_squish3d; + dz_ext0 = dz0 - 1 - 3 * m_squish3d; + xsv_ext0 = xsb + 1; + ysv_ext0 = ysb + 1; + zsv_ext0 = zsb + 1; + + //Other extra point is based on the shared axis. + char c = static_cast(aPoint & bPoint); + if ((c & 0x01) != 0) + { + dx_ext1 = dx0 - 2 - 2 * m_squish3d; + dy_ext1 = dy0 - 2 * m_squish3d; + dz_ext1 = dz0 - 2 * m_squish3d; + xsv_ext1 = xsb + 2; + ysv_ext1 = ysb; + zsv_ext1 = zsb; + } + else if ((c & 0x02) != 0) + { + dx_ext1 = dx0 - 2 * m_squish3d; + dy_ext1 = dy0 - 2 - 2 * m_squish3d; + dz_ext1 = dz0 - 2 * m_squish3d; + xsv_ext1 = xsb; + ysv_ext1 = ysb + 2; + zsv_ext1 = zsb; + } + else + { + dx_ext1 = dx0 - 2 * m_squish3d; + dy_ext1 = dy0 - 2 * m_squish3d; + dz_ext1 = dz0 - 2 - 2 * m_squish3d; + xsv_ext1 = xsb; + ysv_ext1 = ysb; + zsv_ext1 = zsb + 2; + } + } + else + {//Both closest points on (0,0,0) side + + //One of the two extra points is (0,0,0) + dx_ext0 = dx0; + dy_ext0 = dy0; + dz_ext0 = dz0; + xsv_ext0 = xsb; + ysv_ext0 = ysb; + zsv_ext0 = zsb; + + //Other extra point is based on the omitted axis. + char c = static_cast(aPoint | bPoint); + if ((c & 0x01) == 0) + { + dx_ext1 = dx0 + 1 - m_squish3d; + dy_ext1 = dy0 - 1 - m_squish3d; + dz_ext1 = dz0 - 1 - m_squish3d; + xsv_ext1 = xsb - 1; + ysv_ext1 = ysb + 1; + zsv_ext1 = zsb + 1; + } + else if ((c & 0x02) == 0) + { + dx_ext1 = dx0 - 1 - m_squish3d; + dy_ext1 = dy0 + 1 - m_squish3d; + dz_ext1 = dz0 - 1 - m_squish3d; + xsv_ext1 = xsb + 1; + ysv_ext1 = ysb - 1; + zsv_ext1 = zsb + 1; + } + else + { + dx_ext1 = dx0 - 1 - m_squish3d; + dy_ext1 = dy0 - 1 - m_squish3d; + dz_ext1 = dz0 + 1 - m_squish3d; + xsv_ext1 = xsb + 1; + ysv_ext1 = ysb + 1; + zsv_ext1 = zsb - 1; + } + } + } + else + { //One point on (0,0,0) side, one point on (1,1,1) side + char c1, c2; + if (aIsFurtherSide) + { + c1 = aPoint; + c2 = bPoint; + } + else + { + c1 = bPoint; + c2 = aPoint; + } + + //One contribution is a permutation of (1,1,-1) + if ((c1 & 0x01) == 0) + { + dx_ext0 = dx0 + 1 - m_squish3d; + dy_ext0 = dy0 - 1 - m_squish3d; + dz_ext0 = dz0 - 1 - m_squish3d; + xsv_ext0 = xsb - 1; + ysv_ext0 = ysb + 1; + zsv_ext0 = zsb + 1; + } + else if ((c1 & 0x02) == 0) + { + dx_ext0 = dx0 - 1 - m_squish3d; + dy_ext0 = dy0 + 1 - m_squish3d; + dz_ext0 = dz0 - 1 - m_squish3d; + xsv_ext0 = xsb + 1; + ysv_ext0 = ysb - 1; + zsv_ext0 = zsb + 1; + } + else + { + dx_ext0 = dx0 - 1 - m_squish3d; + dy_ext0 = dy0 - 1 - m_squish3d; + dz_ext0 = dz0 + 1 - m_squish3d; + xsv_ext0 = xsb + 1; + ysv_ext0 = ysb + 1; + zsv_ext0 = zsb - 1; + } + + //One contribution is a permutation of (0,0,2) + dx_ext1 = dx0 - 2 * m_squish3d; + dy_ext1 = dy0 - 2 * m_squish3d; + dz_ext1 = dz0 - 2 * m_squish3d; + xsv_ext1 = xsb; + ysv_ext1 = ysb; + zsv_ext1 = zsb; + if ((c2 & 0x01) != 0) + { + dx_ext1 -= 2; + xsv_ext1 += 2; + } + else if ((c2 & 0x02) != 0) + { + dy_ext1 -= 2; + ysv_ext1 += 2; + } + else + { + dz_ext1 -= 2; + zsv_ext1 += 2; + } + } + + //Contribution (1,0,0) + double dx1 = dx0 - 1 - m_squish3d; + double dy1 = dy0 - 0 - m_squish3d; + double dz1 = dz0 - 0 - m_squish3d; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1); + } + + //Contribution (0,1,0) + double dx2 = dx0 - 0 - m_squish3d; + double dy2 = dy0 - 1 - m_squish3d; + double dz2 = dz1; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2); + } + + //Contribution (0,0,1) + double dx3 = dx2; + double dy3 = dy1; + double dz3 = dz0 - 1 - m_squish3d; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3); + } + + //Contribution (1,1,0) + double dx4 = dx0 - 1 - 2 * m_squish3d; + double dy4 = dy0 - 1 - 2 * m_squish3d; + double dz4 = dz0 - 0 - 2 * m_squish3d; + double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4; + if (attn4 > 0) + { + attn4 *= attn4; + value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 0, dx4, dy4, dz4); + } + + //Contribution (1,0,1) + double dx5 = dx4; + double dy5 = dy0 - 0 - 2 * m_squish3d; + double dz5 = dz0 - 1 - 2 * m_squish3d; + double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5; + if (attn5 > 0) + { + attn5 *= attn5; + value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 0, zsb + 1, dx5, dy5, dz5); + } + + //Contribution (0,1,1) + double dx6 = dx0 - 0 - 2 * m_squish3d; + double dy6 = dy4; + double dz6 = dz5; + double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6; + if (attn6 > 0) + { + attn6 *= attn6; + value += attn6 * attn6 * extrapolate(xsb + 0, ysb + 1, zsb + 1, dx6, dy6, dz6); + } + } + + //First extra vertex + double attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0; + if (attn_ext0 > 0) + { + attn_ext0 *= attn_ext0; + value += attn_ext0 * attn_ext0 * extrapolate(xsv_ext0, ysv_ext0, zsv_ext0, dx_ext0, dy_ext0, dz_ext0); + } + + //Second extra vertex + double attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1; + if (attn_ext1 > 0) + { + attn_ext1 *= attn_ext1; + value += attn_ext1 * attn_ext1 * extrapolate(xsv_ext1, ysv_ext1, zsv_ext1, dx_ext1, dy_ext1, dz_ext1); + } + + return value / m_norm3d; + } + + double Noise::eval(double x, double y, double z, double w) const + { + //Place input coordinates on simplectic honeycomb. + double stretchOffset = (x + y + z + w) * m_stretch4d; + double xs = x + stretchOffset; + double ys = y + stretchOffset; + double zs = z + stretchOffset; + double ws = w + stretchOffset; + + //static_cast(floor to get simplectic honeycomb coordinates of rhombo-hypercube super-cell origin. + int xsb = static_cast(floor(xs)); + int ysb = static_cast(floor(ys)); + int zsb = static_cast(floor(zs)); + int wsb = static_cast(floor(ws)); + + //Skew out to get actual coordinates of stretched rhombo-hypercube origin. We'll need these later. + double squishOffset = (xsb + ysb + zsb + wsb) * m_squish4d; + double xb = xsb + squishOffset; + double yb = ysb + squishOffset; + double zb = zsb + squishOffset; + double wb = wsb + squishOffset; + + //Compute simplectic honeycomb coordinates relative to rhombo-hypercube origin. + double xins = xs - xsb; + double yins = ys - ysb; + double zins = zs - zsb; + double wins = ws - wsb; + + //Sum those together to get a value that determines which region we're in. + double inSum = xins + yins + zins + wins; + + //Positions relative to origin point. + double dx0 = x - xb; + double dy0 = y - yb; + double dz0 = z - zb; + double dw0 = w - wb; + + //We'll be defining these inside the next block and using them afterwards. + double dx_ext0, dy_ext0, dz_ext0, dw_ext0; + double dx_ext1, dy_ext1, dz_ext1, dw_ext1; + double dx_ext2, dy_ext2, dz_ext2, dw_ext2; + int xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0; + int xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1; + int xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2; + + double value = 0; + if (inSum <= 1) + { //We're inside the pentachoron (4-Simplex) at (0,0,0,0) + +//Determine which two of (0,0,0,1), (0,0,1,0), (0,1,0,0), (1,0,0,0) are closest. + char aPoint = 0x01; + double aScore = xins; + char bPoint = 0x02; + double bScore = yins; + if (aScore >= bScore && zins > bScore) + { + bScore = zins; + bPoint = 0x04; + } + else if (aScore < bScore && zins > aScore) + { + aScore = zins; + aPoint = 0x04; + } + if (aScore >= bScore && wins > bScore) + { + bScore = wins; + bPoint = 0x08; + } + else if (aScore < bScore && wins > aScore) + { + aScore = wins; + aPoint = 0x08; + } + + //Now we determine the three lattice points not part of the pentachoron that may contribute. + //This depends on the closest two pentachoron vertices, including (0,0,0,0) + double uins = 1 - inSum; + if (uins > aScore || uins > bScore) + { //(0,0,0,0) is one of the closest two pentachoron vertices. + char c = (bScore > aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. + if ((c & 0x01) == 0) + { + xsv_ext0 = xsb - 1; + xsv_ext1 = xsv_ext2 = xsb; + dx_ext0 = dx0 + 1; + dx_ext1 = dx_ext2 = dx0; + } + else + { + xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1; + dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 1; + } + + if ((c & 0x02) == 0) + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; + dy_ext0 = dy_ext1 = dy_ext2 = dy0; + if ((c & 0x01) == 0x01) + { + ysv_ext0 -= 1; + dy_ext0 += 1; + } + else + { + ysv_ext1 -= 1; + dy_ext1 += 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; + dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1; + } + + if ((c & 0x04) == 0) + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; + dz_ext0 = dz_ext1 = dz_ext2 = dz0; + if ((c & 0x03) != 0) + { + if ((c & 0x03) == 0x03) + { + zsv_ext0 -= 1; + dz_ext0 += 1; + } + else + { + zsv_ext1 -= 1; + dz_ext1 += 1; + } + } + else + { + zsv_ext2 -= 1; + dz_ext2 += 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; + dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1; + } + + if ((c & 0x08) == 0) + { + wsv_ext0 = wsv_ext1 = wsb; + wsv_ext2 = wsb - 1; + dw_ext0 = dw_ext1 = dw0; + dw_ext2 = dw0 + 1; + } + else + { + wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1; + dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 1; + } + } + else + { //(0,0,0,0) is not one of the closest two pentachoron vertices. + char c = static_cast(aPoint | bPoint); //Our three extra vertices are determined by the closest two. + + if ((c & 0x01) == 0) + { + xsv_ext0 = xsv_ext2 = xsb; + xsv_ext1 = xsb - 1; + dx_ext0 = dx0 - 2 * m_squish4d; + dx_ext1 = dx0 + 1 - m_squish4d; + dx_ext2 = dx0 - m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1; + dx_ext0 = dx0 - 1 - 2 * m_squish4d; + dx_ext1 = dx_ext2 = dx0 - 1 - m_squish4d; + } + + if ((c & 0x02) == 0) + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; + dy_ext0 = dy0 - 2 * m_squish4d; + dy_ext1 = dy_ext2 = dy0 - m_squish4d; + if ((c & 0x01) == 0x01) + { + ysv_ext1 -= 1; + dy_ext1 += 1; + } + else + { + ysv_ext2 -= 1; + dy_ext2 += 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; + dy_ext0 = dy0 - 1 - 2 * m_squish4d; + dy_ext1 = dy_ext2 = dy0 - 1 - m_squish4d; + } + + if ((c & 0x04) == 0) + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; + dz_ext0 = dz0 - 2 * m_squish4d; + dz_ext1 = dz_ext2 = dz0 - m_squish4d; + if ((c & 0x03) == 0x03) + { + zsv_ext1 -= 1; + dz_ext1 += 1; + } + else + { + zsv_ext2 -= 1; + dz_ext2 += 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; + dz_ext0 = dz0 - 1 - 2 * m_squish4d; + dz_ext1 = dz_ext2 = dz0 - 1 - m_squish4d; + } + + if ((c & 0x08) == 0) + { + wsv_ext0 = wsv_ext1 = wsb; + wsv_ext2 = wsb - 1; + dw_ext0 = dw0 - 2 * m_squish4d; + dw_ext1 = dw0 - m_squish4d; + dw_ext2 = dw0 + 1 - m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1; + dw_ext0 = dw0 - 1 - 2 * m_squish4d; + dw_ext1 = dw_ext2 = dw0 - 1 - m_squish4d; + } + } + + //Contribution (0,0,0,0) + double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0; + if (attn0 > 0) + { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 0, dx0, dy0, dz0, dw0); + } + + //Contribution (1,0,0,0) + double dx1 = dx0 - 1 - m_squish4d; + double dy1 = dy0 - 0 - m_squish4d; + double dz1 = dz0 - 0 - m_squish4d; + double dw1 = dw0 - 0 - m_squish4d; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1); + } + + //Contribution (0,1,0,0) + double dx2 = dx0 - 0 - m_squish4d; + double dy2 = dy0 - 1 - m_squish4d; + double dz2 = dz1; + double dw2 = dw1; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2); + } + + //Contribution (0,0,1,0) + double dx3 = dx2; + double dy3 = dy1; + double dz3 = dz0 - 1 - m_squish4d; + double dw3 = dw1; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3); + } + + //Contribution (0,0,0,1) + double dx4 = dx2; + double dy4 = dy1; + double dz4 = dz1; + double dw4 = dw0 - 1 - m_squish4d; + double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; + if (attn4 > 0) + { + attn4 *= attn4; + value += attn4 * attn4 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4); + } + } + else if (inSum >= 3) + { //We're inside the pentachoron (4-Simplex) at (1,1,1,1) +//Determine which two of (1,1,1,0), (1,1,0,1), (1,0,1,1), (0,1,1,1) are closest. + char aPoint = 0x0E; + double aScore = xins; + char bPoint = 0x0D; + double bScore = yins; + if (aScore <= bScore && zins < bScore) + { + bScore = zins; + bPoint = 0x0B; + } + else if (aScore > bScore && zins < aScore) + { + aScore = zins; + aPoint = 0x0B; + } + if (aScore <= bScore && wins < bScore) + { + bScore = wins; + bPoint = 0x07; + } + else if (aScore > bScore && wins < aScore) + { + aScore = wins; + aPoint = 0x07; + } + + //Now we determine the three lattice points not part of the pentachoron that may contribute. + //This depends on the closest two pentachoron vertices, including (0,0,0,0) + double uins = 4 - inSum; + if (uins < aScore || uins < bScore) + { //(1,1,1,1) is one of the closest two pentachoron vertices. + char c = (bScore < aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. + + if ((c & 0x01) != 0) + { + xsv_ext0 = xsb + 2; + xsv_ext1 = xsv_ext2 = xsb + 1; + dx_ext0 = dx0 - 2 - 4 * m_squish4d; + dx_ext1 = dx_ext2 = dx0 - 1 - 4 * m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb; + dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 4 * m_squish4d; + } + + if ((c & 0x02) != 0) + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; + dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1 - 4 * m_squish4d; + if ((c & 0x01) != 0) + { + ysv_ext1 += 1; + dy_ext1 -= 1; + } + else + { + ysv_ext0 += 1; + dy_ext0 -= 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; + dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 4 * m_squish4d; + } + + if ((c & 0x04) != 0) + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; + dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1 - 4 * m_squish4d; + if ((c & 0x03) != 0x03) + { + if ((c & 0x03) == 0) + { + zsv_ext0 += 1; + dz_ext0 -= 1; + } + else + { + zsv_ext1 += 1; + dz_ext1 -= 1; + } + } + else + { + zsv_ext2 += 1; + dz_ext2 -= 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; + dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 4 * m_squish4d; + } + + if ((c & 0x08) != 0) + { + wsv_ext0 = wsv_ext1 = wsb + 1; + wsv_ext2 = wsb + 2; + dw_ext0 = dw_ext1 = dw0 - 1 - 4 * m_squish4d; + dw_ext2 = dw0 - 2 - 4 * m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb; + dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 4 * m_squish4d; + } + } + else + { //(1,1,1,1) is not one of the closest two pentachoron vertices. + char c = static_cast(aPoint & bPoint); //Our three extra vertices are determined by the closest two. + + if ((c & 0x01) != 0) + { + xsv_ext0 = xsv_ext2 = xsb + 1; + xsv_ext1 = xsb + 2; + dx_ext0 = dx0 - 1 - 2 * m_squish4d; + dx_ext1 = dx0 - 2 - 3 * m_squish4d; + dx_ext2 = dx0 - 1 - 3 * m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb; + dx_ext0 = dx0 - 2 * m_squish4d; + dx_ext1 = dx_ext2 = dx0 - 3 * m_squish4d; + } + + if ((c & 0x02) != 0) + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; + dy_ext0 = dy0 - 1 - 2 * m_squish4d; + dy_ext1 = dy_ext2 = dy0 - 1 - 3 * m_squish4d; + if ((c & 0x01) != 0) + { + ysv_ext2 += 1; + dy_ext2 -= 1; + } + else + { + ysv_ext1 += 1; + dy_ext1 -= 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; + dy_ext0 = dy0 - 2 * m_squish4d; + dy_ext1 = dy_ext2 = dy0 - 3 * m_squish4d; + } + + if ((c & 0x04) != 0) + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; + dz_ext0 = dz0 - 1 - 2 * m_squish4d; + dz_ext1 = dz_ext2 = dz0 - 1 - 3 * m_squish4d; + if ((c & 0x03) != 0) + { + zsv_ext2 += 1; + dz_ext2 -= 1; + } + else + { + zsv_ext1 += 1; + dz_ext1 -= 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; + dz_ext0 = dz0 - 2 * m_squish4d; + dz_ext1 = dz_ext2 = dz0 - 3 * m_squish4d; + } + + if ((c & 0x08) != 0) + { + wsv_ext0 = wsv_ext1 = wsb + 1; + wsv_ext2 = wsb + 2; + dw_ext0 = dw0 - 1 - 2 * m_squish4d; + dw_ext1 = dw0 - 1 - 3 * m_squish4d; + dw_ext2 = dw0 - 2 - 3 * m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb; + dw_ext0 = dw0 - 2 * m_squish4d; + dw_ext1 = dw_ext2 = dw0 - 3 * m_squish4d; + } + } + + //Contribution (1,1,1,0) + double dx4 = dx0 - 1 - 3 * m_squish4d; + double dy4 = dy0 - 1 - 3 * m_squish4d; + double dz4 = dz0 - 1 - 3 * m_squish4d; + double dw4 = dw0 - 3 * m_squish4d; + double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; + if (attn4 > 0) + { + attn4 *= attn4; + value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4); + } + + //Contribution (1,1,0,1) + double dx3 = dx4; + double dy3 = dy4; + double dz3 = dz0 - 3 * m_squish4d; + double dw3 = dw0 - 1 - 3 * m_squish4d; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3); + } + + //Contribution (1,0,1,1) + double dx2 = dx4; + double dy2 = dy0 - 3 * m_squish4d; + double dz2 = dz4; + double dw2 = dw3; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2); + } + + //Contribution (0,1,1,1) + double dx1 = dx0 - 3 * m_squish4d; + double dz1 = dz4; + double dy1 = dy4; + double dw1 = dw3; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1); + } + + //Contribution (1,1,1,1) + dx0 = dx0 - 1 - 4 * m_squish4d; + dy0 = dy0 - 1 - 4 * m_squish4d; + dz0 = dz0 - 1 - 4 * m_squish4d; + dw0 = dw0 - 1 - 4 * m_squish4d; + double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0; + if (attn0 > 0) + { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 1, dx0, dy0, dz0, dw0); + } + } + else if (inSum <= 2) + { //We're inside the first dispentachoron (Rectified 4-Simplex) + double aScore; + char aPoint; + bool aIsBiggerSide = true; + double bScore; + char bPoint; + bool bIsBiggerSide = true; + + //Decide between (1,1,0,0) and (0,0,1,1) + if (xins + yins > zins + wins) + { + aScore = xins + yins; + aPoint = 0x03; + } + else + { + aScore = zins + wins; + aPoint = 0x0C; + } + + //Decide between (1,0,1,0) and (0,1,0,1) + if (xins + zins > yins + wins) + { + bScore = xins + zins; + bPoint = 0x05; + } + else + { + bScore = yins + wins; + bPoint = 0x0A; + } + + //Closer between (1,0,0,1) and (0,1,1,0) will replace the further of a and b, if closer. + if (xins + wins > yins + zins) + { + double score = xins + wins; + if (aScore >= bScore && score > bScore) + { + bScore = score; + bPoint = 0x09; + } + else if (aScore < bScore && score > aScore) + { + aScore = score; + aPoint = 0x09; + } + } + else + { + double score = yins + zins; + if (aScore >= bScore && score > bScore) + { + bScore = score; + bPoint = 0x06; + } + else if (aScore < bScore && score > aScore) + { + aScore = score; + aPoint = 0x06; + } + } + + //Decide if (1,0,0,0) is closer. + double p1 = 2 - inSum + xins; + if (aScore >= bScore && p1 > bScore) + { + bScore = p1; + bPoint = 0x01; + bIsBiggerSide = false; + } + else if (aScore < bScore && p1 > aScore) + { + aScore = p1; + aPoint = 0x01; + aIsBiggerSide = false; + } + + //Decide if (0,1,0,0) is closer. + double p2 = 2 - inSum + yins; + if (aScore >= bScore && p2 > bScore) + { + bScore = p2; + bPoint = 0x02; + bIsBiggerSide = false; + } + else if (aScore < bScore && p2 > aScore) + { + aScore = p2; + aPoint = 0x02; + aIsBiggerSide = false; + } + + //Decide if (0,0,1,0) is closer. + double p3 = 2 - inSum + zins; + if (aScore >= bScore && p3 > bScore) + { + bScore = p3; + bPoint = 0x04; + bIsBiggerSide = false; + } + else if (aScore < bScore && p3 > aScore) + { + aScore = p3; + aPoint = 0x04; + aIsBiggerSide = false; + } + + //Decide if (0,0,0,1) is closer. + double p4 = 2 - inSum + wins; + if (aScore >= bScore && p4 > bScore) + { + bScore = p4; + bPoint = 0x08; + bIsBiggerSide = false; + } + else if (aScore < bScore && p4 > aScore) + { + aScore = p4; + aPoint = 0x08; + aIsBiggerSide = false; + } + + //Where each of the two closest points are determines how the extra three vertices are calculated. + if (aIsBiggerSide == bIsBiggerSide) + { + if (aIsBiggerSide) + { //Both closest points on the bigger side + char c1 = static_cast(aPoint | bPoint); + char c2 = static_cast(aPoint & bPoint); + if ((c1 & 0x01) == 0) + { + xsv_ext0 = xsb; + xsv_ext1 = xsb - 1; + dx_ext0 = dx0 - 3 * m_squish4d; + dx_ext1 = dx0 + 1 - 2 * m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb + 1; + dx_ext0 = dx0 - 1 - 3 * m_squish4d; + dx_ext1 = dx0 - 1 - 2 * m_squish4d; + } + + if ((c1 & 0x02) == 0) + { + ysv_ext0 = ysb; + ysv_ext1 = ysb - 1; + dy_ext0 = dy0 - 3 * m_squish4d; + dy_ext1 = dy0 + 1 - 2 * m_squish4d; + } + else + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy0 - 1 - 3 * m_squish4d; + dy_ext1 = dy0 - 1 - 2 * m_squish4d; + } + + if ((c1 & 0x04) == 0) + { + zsv_ext0 = zsb; + zsv_ext1 = zsb - 1; + dz_ext0 = dz0 - 3 * m_squish4d; + dz_ext1 = dz0 + 1 - 2 * m_squish4d; + } + else + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz0 - 1 - 3 * m_squish4d; + dz_ext1 = dz0 - 1 - 2 * m_squish4d; + } + + if ((c1 & 0x08) == 0) + { + wsv_ext0 = wsb; + wsv_ext1 = wsb - 1; + dw_ext0 = dw0 - 3 * m_squish4d; + dw_ext1 = dw0 + 1 - 2 * m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsb + 1; + dw_ext0 = dw0 - 1 - 3 * m_squish4d; + dw_ext1 = dw0 - 1 - 2 * m_squish4d; + } + + //One combination is a permutation of (0,0,0,2) based on c2 + xsv_ext2 = xsb; + ysv_ext2 = ysb; + zsv_ext2 = zsb; + wsv_ext2 = wsb; + dx_ext2 = dx0 - 2 * m_squish4d; + dy_ext2 = dy0 - 2 * m_squish4d; + dz_ext2 = dz0 - 2 * m_squish4d; + dw_ext2 = dw0 - 2 * m_squish4d; + if ((c2 & 0x01) != 0) + { + xsv_ext2 += 2; + dx_ext2 -= 2; + } + else if ((c2 & 0x02) != 0) + { + ysv_ext2 += 2; + dy_ext2 -= 2; + } + else if ((c2 & 0x04) != 0) + { + zsv_ext2 += 2; + dz_ext2 -= 2; + } + else + { + wsv_ext2 += 2; + dw_ext2 -= 2; + } + + } + else + { //Both closest points on the smaller side + //One of the two extra points is (0,0,0,0) + xsv_ext2 = xsb; + ysv_ext2 = ysb; + zsv_ext2 = zsb; + wsv_ext2 = wsb; + dx_ext2 = dx0; + dy_ext2 = dy0; + dz_ext2 = dz0; + dw_ext2 = dw0; + + //Other two points are based on the omitted axes. + char c = static_cast(aPoint | bPoint); + + if ((c & 0x01) == 0) + { + xsv_ext0 = xsb - 1; + xsv_ext1 = xsb; + dx_ext0 = dx0 + 1 - m_squish4d; + dx_ext1 = dx0 - m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb + 1; + dx_ext0 = dx_ext1 = dx0 - 1 - m_squish4d; + } + + if ((c & 0x02) == 0) + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0 - m_squish4d; + if ((c & 0x01) == 0x01) + { + ysv_ext0 -= 1; + dy_ext0 += 1; + } + else + { + ysv_ext1 -= 1; + dy_ext1 += 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1 - m_squish4d; + } + + if ((c & 0x04) == 0) + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz_ext1 = dz0 - m_squish4d; + if ((c & 0x03) == 0x03) + { + zsv_ext0 -= 1; + dz_ext0 += 1; + } + else + { + zsv_ext1 -= 1; + dz_ext1 += 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz_ext1 = dz0 - 1 - m_squish4d; + } + + if ((c & 0x08) == 0) + { + wsv_ext0 = wsb; + wsv_ext1 = wsb - 1; + dw_ext0 = dw0 - m_squish4d; + dw_ext1 = dw0 + 1 - m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsb + 1; + dw_ext0 = dw_ext1 = dw0 - 1 - m_squish4d; + } + + } + } + else + { //One point on each "side" + char c1, c2; + if (aIsBiggerSide) + { + c1 = aPoint; + c2 = bPoint; + } + else + { + c1 = bPoint; + c2 = aPoint; + } + + //Two contributions are the bigger-sided point with each 0 replaced with -1. + if ((c1 & 0x01) == 0) + { + xsv_ext0 = xsb - 1; + xsv_ext1 = xsb; + dx_ext0 = dx0 + 1 - m_squish4d; + dx_ext1 = dx0 - m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb + 1; + dx_ext0 = dx_ext1 = dx0 - 1 - m_squish4d; + } + + if ((c1 & 0x02) == 0) + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0 - m_squish4d; + if ((c1 & 0x01) == 0x01) + { + ysv_ext0 -= 1; + dy_ext0 += 1; + } + else + { + ysv_ext1 -= 1; + dy_ext1 += 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1 - m_squish4d; + } + + if ((c1 & 0x04) == 0) + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz_ext1 = dz0 - m_squish4d; + if ((c1 & 0x03) == 0x03) + { + zsv_ext0 -= 1; + dz_ext0 += 1; + } + else + { + zsv_ext1 -= 1; + dz_ext1 += 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz_ext1 = dz0 - 1 - m_squish4d; + } + + if ((c1 & 0x08) == 0) + { + wsv_ext0 = wsb; + wsv_ext1 = wsb - 1; + dw_ext0 = dw0 - m_squish4d; + dw_ext1 = dw0 + 1 - m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsb + 1; + dw_ext0 = dw_ext1 = dw0 - 1 - m_squish4d; + } + + //One contribution is a permutation of (0,0,0,2) based on the smaller-sided point + xsv_ext2 = xsb; + ysv_ext2 = ysb; + zsv_ext2 = zsb; + wsv_ext2 = wsb; + dx_ext2 = dx0 - 2 * m_squish4d; + dy_ext2 = dy0 - 2 * m_squish4d; + dz_ext2 = dz0 - 2 * m_squish4d; + dw_ext2 = dw0 - 2 * m_squish4d; + if ((c2 & 0x01) != 0) + { + xsv_ext2 += 2; + dx_ext2 -= 2; + } + else if ((c2 & 0x02) != 0) + { + ysv_ext2 += 2; + dy_ext2 -= 2; + } + else if ((c2 & 0x04) != 0) + { + zsv_ext2 += 2; + dz_ext2 -= 2; + } + else + { + wsv_ext2 += 2; + dw_ext2 -= 2; + } + } + + //Contribution (1,0,0,0) + double dx1 = dx0 - 1 - m_squish4d; + double dy1 = dy0 - 0 - m_squish4d; + double dz1 = dz0 - 0 - m_squish4d; + double dw1 = dw0 - 0 - m_squish4d; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1); + } + + //Contribution (0,1,0,0) + double dx2 = dx0 - 0 - m_squish4d; + double dy2 = dy0 - 1 - m_squish4d; + double dz2 = dz1; + double dw2 = dw1; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2); + } + + //Contribution (0,0,1,0) + double dx3 = dx2; + double dy3 = dy1; + double dz3 = dz0 - 1 - m_squish4d; + double dw3 = dw1; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3); + } + + //Contribution (0,0,0,1) + double dx4 = dx2; + double dy4 = dy1; + double dz4 = dz1; + double dw4 = dw0 - 1 - m_squish4d; + double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; + if (attn4 > 0) + { + attn4 *= attn4; + value += attn4 * attn4 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4); + } + + //Contribution (1,1,0,0) + double dx5 = dx0 - 1 - 2 * m_squish4d; + double dy5 = dy0 - 1 - 2 * m_squish4d; + double dz5 = dz0 - 0 - 2 * m_squish4d; + double dw5 = dw0 - 0 - 2 * m_squish4d; + double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5; + if (attn5 > 0) + { + attn5 *= attn5; + value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5); + } + + //Contribution (1,0,1,0) + double dx6 = dx0 - 1 - 2 * m_squish4d; + double dy6 = dy0 - 0 - 2 * m_squish4d; + double dz6 = dz0 - 1 - 2 * m_squish4d; + double dw6 = dw0 - 0 - 2 * m_squish4d; + double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6; + if (attn6 > 0) + { + attn6 *= attn6; + value += attn6 * attn6 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6); + } + + //Contribution (1,0,0,1) + double dx7 = dx0 - 1 - 2 * m_squish4d; + double dy7 = dy0 - 0 - 2 * m_squish4d; + double dz7 = dz0 - 0 - 2 * m_squish4d; + double dw7 = dw0 - 1 - 2 * m_squish4d; + double attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7; + if (attn7 > 0) + { + attn7 *= attn7; + value += attn7 * attn7 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7); + } + + //Contribution (0,1,1,0) + double dx8 = dx0 - 0 - 2 * m_squish4d; + double dy8 = dy0 - 1 - 2 * m_squish4d; + double dz8 = dz0 - 1 - 2 * m_squish4d; + double dw8 = dw0 - 0 - 2 * m_squish4d; + double attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8; + if (attn8 > 0) + { + attn8 *= attn8; + value += attn8 * attn8 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8); + } + + //Contribution (0,1,0,1) + double dx9 = dx0 - 0 - 2 * m_squish4d; + double dy9 = dy0 - 1 - 2 * m_squish4d; + double dz9 = dz0 - 0 - 2 * m_squish4d; + double dw9 = dw0 - 1 - 2 * m_squish4d; + double attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9; + if (attn9 > 0) + { + attn9 *= attn9; + value += attn9 * attn9 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9); + } + + //Contribution (0,0,1,1) + double dx10 = dx0 - 0 - 2 * m_squish4d; + double dy10 = dy0 - 0 - 2 * m_squish4d; + double dz10 = dz0 - 1 - 2 * m_squish4d; + double dw10 = dw0 - 1 - 2 * m_squish4d; + double attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10; + if (attn10 > 0) + { + attn10 *= attn10; + value += attn10 * attn10 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10); + } + } + else + { //We're inside the second dispentachoron (Rectified 4-Simplex) + double aScore; + char aPoint; + bool aIsBiggerSide = true; + double bScore; + char bPoint; + bool bIsBiggerSide = true; + + //Decide between (0,0,1,1) and (1,1,0,0) + if (xins + yins < zins + wins) + { + aScore = xins + yins; + aPoint = 0x0C; + } + else + { + aScore = zins + wins; + aPoint = 0x03; + } + + //Decide between (0,1,0,1) and (1,0,1,0) + if (xins + zins < yins + wins) + { + bScore = xins + zins; + bPoint = 0x0A; + } + else + { + bScore = yins + wins; + bPoint = 0x05; + } + + //Closer between (0,1,1,0) and (1,0,0,1) will replace the further of a and b, if closer. + if (xins + wins < yins + zins) + { + double score = xins + wins; + if (aScore <= bScore && score < bScore) + { + bScore = score; + bPoint = 0x06; + } + else if (aScore > bScore && score < aScore) + { + aScore = score; + aPoint = 0x06; + } + } + else + { + double score = yins + zins; + if (aScore <= bScore && score < bScore) + { + bScore = score; + bPoint = 0x09; + } + else if (aScore > bScore && score < aScore) + { + aScore = score; + aPoint = 0x09; + } + } + + //Decide if (0,1,1,1) is closer. + double p1 = 3 - inSum + xins; + if (aScore <= bScore && p1 < bScore) + { + bScore = p1; + bPoint = 0x0E; + bIsBiggerSide = false; + } + else if (aScore > bScore && p1 < aScore) + { + aScore = p1; + aPoint = 0x0E; + aIsBiggerSide = false; + } + + //Decide if (1,0,1,1) is closer. + double p2 = 3 - inSum + yins; + if (aScore <= bScore && p2 < bScore) + { + bScore = p2; + bPoint = 0x0D; + bIsBiggerSide = false; + } + else if (aScore > bScore && p2 < aScore) + { + aScore = p2; + aPoint = 0x0D; + aIsBiggerSide = false; + } + + //Decide if (1,1,0,1) is closer. + double p3 = 3 - inSum + zins; + if (aScore <= bScore && p3 < bScore) + { + bScore = p3; + bPoint = 0x0B; + bIsBiggerSide = false; + } + else if (aScore > bScore && p3 < aScore) + { + aScore = p3; + aPoint = 0x0B; + aIsBiggerSide = false; + } + + //Decide if (1,1,1,0) is closer. + double p4 = 3 - inSum + wins; + if (aScore <= bScore && p4 < bScore) + { + bScore = p4; + bPoint = 0x07; + bIsBiggerSide = false; + } + else if (aScore > bScore && p4 < aScore) + { + aScore = p4; + aPoint = 0x07; + aIsBiggerSide = false; + } + + //Where each of the two closest points are determines how the extra three vertices are calculated. + if (aIsBiggerSide == bIsBiggerSide) + { + if (aIsBiggerSide) + { //Both closest points on the bigger side + char c1 = static_cast(aPoint & bPoint); + char c2 = static_cast(aPoint | bPoint); + + //Two contributions are permutations of (0,0,0,1) and (0,0,0,2) based on c1 + xsv_ext0 = xsv_ext1 = xsb; + ysv_ext0 = ysv_ext1 = ysb; + zsv_ext0 = zsv_ext1 = zsb; + wsv_ext0 = wsv_ext1 = wsb; + dx_ext0 = dx0 - m_squish4d; + dy_ext0 = dy0 - m_squish4d; + dz_ext0 = dz0 - m_squish4d; + dw_ext0 = dw0 - m_squish4d; + dx_ext1 = dx0 - 2 * m_squish4d; + dy_ext1 = dy0 - 2 * m_squish4d; + dz_ext1 = dz0 - 2 * m_squish4d; + dw_ext1 = dw0 - 2 * m_squish4d; + if ((c1 & 0x01) != 0) + { + xsv_ext0 += 1; + dx_ext0 -= 1; + xsv_ext1 += 2; + dx_ext1 -= 2; + } + else if ((c1 & 0x02) != 0) + { + ysv_ext0 += 1; + dy_ext0 -= 1; + ysv_ext1 += 2; + dy_ext1 -= 2; + } + else if ((c1 & 0x04) != 0) + { + zsv_ext0 += 1; + dz_ext0 -= 1; + zsv_ext1 += 2; + dz_ext1 -= 2; + } + else + { + wsv_ext0 += 1; + dw_ext0 -= 1; + wsv_ext1 += 2; + dw_ext1 -= 2; + } + + //One contribution is a permutation of (1,1,1,-1) based on c2 + xsv_ext2 = xsb + 1; + ysv_ext2 = ysb + 1; + zsv_ext2 = zsb + 1; + wsv_ext2 = wsb + 1; + dx_ext2 = dx0 - 1 - 2 * m_squish4d; + dy_ext2 = dy0 - 1 - 2 * m_squish4d; + dz_ext2 = dz0 - 1 - 2 * m_squish4d; + dw_ext2 = dw0 - 1 - 2 * m_squish4d; + if ((c2 & 0x01) == 0) + { + xsv_ext2 -= 2; + dx_ext2 += 2; + } + else if ((c2 & 0x02) == 0) + { + ysv_ext2 -= 2; + dy_ext2 += 2; + } + else if ((c2 & 0x04) == 0) + { + zsv_ext2 -= 2; + dz_ext2 += 2; + } + else + { + wsv_ext2 -= 2; + dw_ext2 += 2; + } + } + else + { //Both closest points on the smaller side + //One of the two extra points is (1,1,1,1) + xsv_ext2 = xsb + 1; + ysv_ext2 = ysb + 1; + zsv_ext2 = zsb + 1; + wsv_ext2 = wsb + 1; + dx_ext2 = dx0 - 1 - 4 * m_squish4d; + dy_ext2 = dy0 - 1 - 4 * m_squish4d; + dz_ext2 = dz0 - 1 - 4 * m_squish4d; + dw_ext2 = dw0 - 1 - 4 * m_squish4d; + + //Other two points are based on the shared axes. + char c = static_cast(aPoint & bPoint); + + if ((c & 0x01) != 0) + { + xsv_ext0 = xsb + 2; + xsv_ext1 = xsb + 1; + dx_ext0 = dx0 - 2 - 3 * m_squish4d; + dx_ext1 = dx0 - 1 - 3 * m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb; + dx_ext0 = dx_ext1 = dx0 - 3 * m_squish4d; + } + + if ((c & 0x02) != 0) + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish4d; + if ((c & 0x01) == 0) + { + ysv_ext0 += 1; + dy_ext0 -= 1; + } + else + { + ysv_ext1 += 1; + dy_ext1 -= 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0 - 3 * m_squish4d; + } + + if ((c & 0x04) != 0) + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz_ext1 = dz0 - 1 - 3 * m_squish4d; + if ((c & 0x03) == 0) + { + zsv_ext0 += 1; + dz_ext0 -= 1; + } + else + { + zsv_ext1 += 1; + dz_ext1 -= 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz_ext1 = dz0 - 3 * m_squish4d; + } + + if ((c & 0x08) != 0) + { + wsv_ext0 = wsb + 1; + wsv_ext1 = wsb + 2; + dw_ext0 = dw0 - 1 - 3 * m_squish4d; + dw_ext1 = dw0 - 2 - 3 * m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsb; + dw_ext0 = dw_ext1 = dw0 - 3 * m_squish4d; + } + } + } + else + { //One point on each "side" + char c1, c2; + if (aIsBiggerSide) + { + c1 = aPoint; + c2 = bPoint; + } + else + { + c1 = bPoint; + c2 = aPoint; + } + + //Two contributions are the bigger-sided point with each 1 replaced with 2. + if ((c1 & 0x01) != 0) + { + xsv_ext0 = xsb + 2; + xsv_ext1 = xsb + 1; + dx_ext0 = dx0 - 2 - 3 * m_squish4d; + dx_ext1 = dx0 - 1 - 3 * m_squish4d; + } + else + { + xsv_ext0 = xsv_ext1 = xsb; + dx_ext0 = dx_ext1 = dx0 - 3 * m_squish4d; + } + + if ((c1 & 0x02) != 0) + { + ysv_ext0 = ysv_ext1 = ysb + 1; + dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish4d; + if ((c1 & 0x01) == 0) + { + ysv_ext0 += 1; + dy_ext0 -= 1; + } + else + { + ysv_ext1 += 1; + dy_ext1 -= 1; + } + } + else + { + ysv_ext0 = ysv_ext1 = ysb; + dy_ext0 = dy_ext1 = dy0 - 3 * m_squish4d; + } + + if ((c1 & 0x04) != 0) + { + zsv_ext0 = zsv_ext1 = zsb + 1; + dz_ext0 = dz_ext1 = dz0 - 1 - 3 * m_squish4d; + if ((c1 & 0x03) == 0) + { + zsv_ext0 += 1; + dz_ext0 -= 1; + } + else + { + zsv_ext1 += 1; + dz_ext1 -= 1; + } + } + else + { + zsv_ext0 = zsv_ext1 = zsb; + dz_ext0 = dz_ext1 = dz0 - 3 * m_squish4d; + } + + if ((c1 & 0x08) != 0) + { + wsv_ext0 = wsb + 1; + wsv_ext1 = wsb + 2; + dw_ext0 = dw0 - 1 - 3 * m_squish4d; + dw_ext1 = dw0 - 2 - 3 * m_squish4d; + } + else + { + wsv_ext0 = wsv_ext1 = wsb; + dw_ext0 = dw_ext1 = dw0 - 3 * m_squish4d; + } + + //One contribution is a permutation of (1,1,1,-1) based on the smaller-sided point + xsv_ext2 = xsb + 1; + ysv_ext2 = ysb + 1; + zsv_ext2 = zsb + 1; + wsv_ext2 = wsb + 1; + dx_ext2 = dx0 - 1 - 2 * m_squish4d; + dy_ext2 = dy0 - 1 - 2 * m_squish4d; + dz_ext2 = dz0 - 1 - 2 * m_squish4d; + dw_ext2 = dw0 - 1 - 2 * m_squish4d; + if ((c2 & 0x01) == 0) + { + xsv_ext2 -= 2; + dx_ext2 += 2; + } + else if ((c2 & 0x02) == 0) + { + ysv_ext2 -= 2; + dy_ext2 += 2; + } + else if ((c2 & 0x04) == 0) + { + zsv_ext2 -= 2; + dz_ext2 += 2; + } + else + { + wsv_ext2 -= 2; + dw_ext2 += 2; + } + } + + //Contribution (1,1,1,0) + double dx4 = dx0 - 1 - 3 * m_squish4d; + double dy4 = dy0 - 1 - 3 * m_squish4d; + double dz4 = dz0 - 1 - 3 * m_squish4d; + double dw4 = dw0 - 3 * m_squish4d; + double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; + if (attn4 > 0) + { + attn4 *= attn4; + value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4); + } + + //Contribution (1,1,0,1) + double dx3 = dx4; + double dy3 = dy4; + double dz3 = dz0 - 3 * m_squish4d; + double dw3 = dw0 - 1 - 3 * m_squish4d; + double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; + if (attn3 > 0) + { + attn3 *= attn3; + value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3); + } + + //Contribution (1,0,1,1) + double dx2 = dx4; + double dy2 = dy0 - 3 * m_squish4d; + double dz2 = dz4; + double dw2 = dw3; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; + if (attn2 > 0) + { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2); + } + + //Contribution (0,1,1,1) + double dx1 = dx0 - 3 * m_squish4d; + double dz1 = dz4; + double dy1 = dy4; + double dw1 = dw3; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; + if (attn1 > 0) + { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1); + } + + //Contribution (1,1,0,0) + double dx5 = dx0 - 1 - 2 * m_squish4d; + double dy5 = dy0 - 1 - 2 * m_squish4d; + double dz5 = dz0 - 0 - 2 * m_squish4d; + double dw5 = dw0 - 0 - 2 * m_squish4d; + double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5; + if (attn5 > 0) + { + attn5 *= attn5; + value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5); + } + + //Contribution (1,0,1,0) + double dx6 = dx0 - 1 - 2 * m_squish4d; + double dy6 = dy0 - 0 - 2 * m_squish4d; + double dz6 = dz0 - 1 - 2 * m_squish4d; + double dw6 = dw0 - 0 - 2 * m_squish4d; + double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6; + if (attn6 > 0) + { + attn6 *= attn6; + value += attn6 * attn6 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6); + } + + //Contribution (1,0,0,1) + double dx7 = dx0 - 1 - 2 * m_squish4d; + double dy7 = dy0 - 0 - 2 * m_squish4d; + double dz7 = dz0 - 0 - 2 * m_squish4d; + double dw7 = dw0 - 1 - 2 * m_squish4d; + double attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7; + if (attn7 > 0) + { + attn7 *= attn7; + value += attn7 * attn7 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7); + } + + //Contribution (0,1,1,0) + double dx8 = dx0 - 0 - 2 * m_squish4d; + double dy8 = dy0 - 1 - 2 * m_squish4d; + double dz8 = dz0 - 1 - 2 * m_squish4d; + double dw8 = dw0 - 0 - 2 * m_squish4d; + double attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8; + if (attn8 > 0) + { + attn8 *= attn8; + value += attn8 * attn8 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8); + } + + //Contribution (0,1,0,1) + double dx9 = dx0 - 0 - 2 * m_squish4d; + double dy9 = dy0 - 1 - 2 * m_squish4d; + double dz9 = dz0 - 0 - 2 * m_squish4d; + double dw9 = dw0 - 1 - 2 * m_squish4d; + double attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9; + if (attn9 > 0) + { + attn9 *= attn9; + value += attn9 * attn9 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9); + } + + //Contribution (0,0,1,1) + double dx10 = dx0 - 0 - 2 * m_squish4d; + double dy10 = dy0 - 0 - 2 * m_squish4d; + double dz10 = dz0 - 1 - 2 * m_squish4d; + double dw10 = dw0 - 1 - 2 * m_squish4d; + double attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10; + if (attn10 > 0) + { + attn10 *= attn10; + value += attn10 * attn10 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10); + } + } + + //First extra vertex + double attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0 - dw_ext0 * dw_ext0; + if (attn_ext0 > 0) + { + attn_ext0 *= attn_ext0; + value += attn_ext0 * attn_ext0 * extrapolate(xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0, dx_ext0, dy_ext0, dz_ext0, dw_ext0); + } + + //Second extra vertex + double attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1 - dw_ext1 * dw_ext1; + if (attn_ext1 > 0) + { + attn_ext1 *= attn_ext1; + value += attn_ext1 * attn_ext1 * extrapolate(xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1, dx_ext1, dy_ext1, dz_ext1, dw_ext1); + } + + //Third extra vertex + double attn_ext2 = 2 - dx_ext2 * dx_ext2 - dy_ext2 * dy_ext2 - dz_ext2 * dz_ext2 - dw_ext2 * dw_ext2; + if (attn_ext2 > 0) + { + attn_ext2 *= attn_ext2; + value += attn_ext2 * attn_ext2 * extrapolate(xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2, dx_ext2, dy_ext2, dz_ext2, dw_ext2); + } + + return value / m_norm4d; + } + + double Noise::extrapolate(int xsb, int ysb, double dx, double dy) const + { + int index = m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] & 0x0E; + return m_gradients2d[index] * dx + + m_gradients2d[index + 1] * dy; + } + + double Noise::extrapolate(int xsb, int ysb, int zsb, double dx, double dy, double dz) const + { + int index = m_permGradIndex3d[(m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF]; + return m_gradients3d[index] * dx + + m_gradients3d[index + 1] * dy + + m_gradients3d[index + 2] * dz; + } + + double Noise::extrapolate(int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw) const + { + int index = m_perm[(m_perm[(m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF] + wsb) & 0xFF] & 0xFC; + return m_gradients4d[index] * dx + + m_gradients4d[index + 1] * dy + + m_gradients4d[index + 2] * dz + + m_gradients4d[index + 3] * dw; + } + +} \ No newline at end of file diff --git a/SQCSim-common/opensimplex.h b/SQCSim-common/opensimplex.h new file mode 100644 index 0000000..4b1b1f4 --- /dev/null +++ b/SQCSim-common/opensimplex.h @@ -0,0 +1,51 @@ +/** + Open Simple Noise for C++ + + Port to C++ from https://gist.github.com/KdotJPG/b1270127455a94ac5d19 + by Rickard Lundberg, 2019. +*/ +#ifndef _OPENSIMPLEX_H__ +#define _OPENSIMPLEX_H__ + +#include +#include + +namespace OpenSimplexNoise +{ + class Noise + { + public: + Noise(); + Noise(int64_t seed); + //2D Open Simplex Noise. + double eval(const double x, const double y) const; + //3D Open Simplex Noise. + double eval(double x, double y, double z) const; + //4D Open Simplex Noise. + double eval(double x, double y, double z, double w) const; + private: + const double m_stretch2d; + const double m_squish2d; + const double m_stretch3d; + const double m_squish3d; + const double m_stretch4d; + const double m_squish4d; + + const double m_norm2d; + const double m_norm3d; + const double m_norm4d; + + const long m_defaultSeed; + + std::array m_perm; + std::array m_permGradIndex3d; + std::array m_gradients2d; + std::array m_gradients3d; + std::array m_gradients4d; + double extrapolate(int xsb, int ysb, double dx, double dy) const; + double extrapolate(int xsb, int ysb, int zsb, double dx, double dy, double dz) const; + double extrapolate(int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw) const; + }; +} + +#endif // _OPENSIMPLEX_H__ \ No newline at end of file diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp new file mode 100644 index 0000000..080fc2d --- /dev/null +++ b/SQCSim-common/player.cpp @@ -0,0 +1,160 @@ +#include "player.h" +#include "world.h" + +Player::Player(const Vector3f& position, float rotX, float rotY) : m_position(position), m_rotX(rotX), m_rotY(rotY) { + m_velocity = Vector3f(0, 0, 0); + m_airborne = true; +} + +void Player::TurnLeftRight(float value) { + m_rotY += value; + if (m_rotY > 360) m_rotY = 0; + else if (m_rotY < -360) m_rotY = 0; +} + +void Player::TurnTopBottom(float value) { + m_rotX += value; + if (m_rotX > 80) m_rotX = 80; + else if (m_rotX < -80) m_rotX = -80; +} + +Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jump, bool shoot, float elapsedTime) { + + Vector3f delta = Vector3f(0, 0, 0); + + float yrotrad = (m_rotY / 57.2957795056f); // 180/Pi = 57.295... + float xrotrad = (m_rotX / 57.2957795056f); + + m_direction = Vector3f(cos(xrotrad) * sin(yrotrad), + -sin(xrotrad), + cos(xrotrad) * -cos(yrotrad)); + + m_direction.Normalize(); + + if (front) { + delta.x += float(sin(yrotrad)) * elapsedTime * 10.f; + delta.z += float(-cos(yrotrad)) * elapsedTime * 10.f; + } + else if (back) { + delta.x += float(-sin(yrotrad)) * elapsedTime * 10.f; + delta.z += float(cos(yrotrad)) * elapsedTime * 10.f; + } + + if (left) { + delta.x += float(-cos(yrotrad)) * elapsedTime * 10.f; + delta.z += float(-sin(yrotrad)) * elapsedTime * 10.f; + } + else if (right) { + delta.x += float(cos(yrotrad)) * elapsedTime * 10.f; + delta.z += float(sin(yrotrad)) * elapsedTime * 10.f; + } + + delta.Normalize(); + delta.x *= .6f; + delta.z *= .6f; + + if ((jump || shoot ) && !m_airborne) { + delta.y += jump? .32f: shoot? .1f : 0.f; + m_airborne = true; + } + + if (shoot) // Recoil! + TurnTopBottom(-1); + + return delta; +} + +void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { + static float timing = 0.f; + /* Gestion de collisions */ + BlockType bt1, bt2, bt3; + + bt1 = world->BlockAt(GetPosition().x, GetPosition().y + input.y, GetPosition().z); + bt2 = world->BlockAt(GetPosition().x, GetPosition().y + input.y - 0.9f, GetPosition().z); + bt3 = world->BlockAt(GetPosition().x, GetPosition().y + input.y - 1.7f, GetPosition().z); + if ((bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) && m_position.y < 129.7f) { + bt1 = world->BlockAt(GetPosition().x, GetPosition().y + .3f, GetPosition().z); + if (bt1 == BTYPE_AIR) m_position.y = (int)m_position.y + .7f; + m_velocity.y = input.y = 0; + m_airborne = false; + } + else { + if (abs(m_velocity.y) < 1.1f) m_velocity.y += input.y - 1.1f * elapsedTime; + bt3 = world->BlockAt(GetPosition().x, GetPosition().y + m_velocity.y - 1.7f, GetPosition().z); + bt1 = world->BlockAt(GetPosition().x, GetPosition().y + .3f, GetPosition().z); + if (bt3 != BTYPE_AIR) { + m_velocity.y = 0; + if (timing == 0.f) { + timing = .3f; + } + m_airborne = false; + } + else if (bt1 != BTYPE_AIR) { + m_velocity.y = -.1f; + } + else m_airborne = true; + } + + if (timing > 0.f) timing -= elapsedTime; + if (timing < 0.f) timing = 0.f; + + bt1 = world->BlockAt(GetPosition().x + input.x, GetPosition().y, GetPosition().z); + bt2 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 0.9f, GetPosition().z); + bt3 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 1.7f, GetPosition().z); + if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { + input.x = m_velocity.x = 0; + m_velocity.z *= .5f; + } + + bt1 = world->BlockAt(GetPosition().x, GetPosition().y, GetPosition().z + input.z); + bt2 = world->BlockAt(GetPosition().x, GetPosition().y - 0.9f, GetPosition().z + input.z); + bt3 = world->BlockAt(GetPosition().x, GetPosition().y - 1.7f, GetPosition().z + input.z); + if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { + input.z = m_velocity.z = 0; + m_velocity.x *= .5f; + } + + /* Fin gestion de collisions */ + /* Gestion de la friction */ + + if (!m_airborne) { + m_velocity.x += input.x * 2.f * elapsedTime; + m_velocity.z += input.z * 2.f * elapsedTime; + + if (input.x == 0.f) + m_velocity.x *= .8f; + + if (input.z == 0.f) + m_velocity.z *= .8f; + } + else { + m_velocity.x += input.x * .4f * elapsedTime; // Techniquement contre les lois de la physique, mais c'est beaucoup moins chiant pour grimper sur les blocs. + m_velocity.z += input.z * .4f * elapsedTime; + m_velocity.x *= .99f; + m_velocity.z *= .99f; + } + + /* Fin gestion de la friction */ + + float vy = m_velocity.y; + m_velocity.y = 1.f; // Padding pour limiter le x et z lors du Normalize(). + if (m_velocity.Length() >= 1.f) m_velocity.Normalize(); // Limiteur de vitesse en x/z. + m_velocity.y = 0; + if (m_velocity.Length() < .005f) m_velocity.Zero(); // Threshold en x/z. + m_velocity.y = vy; + + m_position += m_velocity; +} + +Vector3f Player::GetPosition() const { return Vector3f(m_position.x + CHUNK_SIZE_X * WORLD_SIZE_X / 2, m_position.y, m_position.z + CHUNK_SIZE_Z * WORLD_SIZE_Y / 2); } + +Vector3f Player::GetVelocity() const { return m_velocity; } + +Vector3f Player::GetPOV() const { return Vector3f(GetPosition().x, m_POV, GetPosition().z); } + +Vector3f Player::GetDirection() const { return m_direction; } + +void Player::Teleport(int& x, int& z) { + m_position.x -= x * CHUNK_SIZE_X; + m_position.z -= z * CHUNK_SIZE_Z; +} diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h new file mode 100644 index 0000000..f889b68 --- /dev/null +++ b/SQCSim-common/player.h @@ -0,0 +1,34 @@ +#ifndef _PLAYER_H__ +#define _PLAYER_H__ +#include "vector3.h" +#include + +class World; + +class Player { +public: + Player(const Vector3f& position, float rotX = 0, float rotY = 0); + void TurnLeftRight(float value); + void TurnTopBottom(float value); + Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime); + void ApplyPhysics(Vector3f input, World* world, float elapsedTime); + + Vector3f GetPosition() const; + Vector3f GetDirection() const; + Vector3f GetVelocity() const; + Vector3f GetPOV() const; + void Teleport(int& x, int& z); + +protected: + Vector3f m_position; + Vector3f m_velocity; + Vector3f m_direction; + + float m_rotX = 0; + float m_rotY = 0; + float m_POV; + + bool m_airborne; +}; +#endif //_PLAYER_H__ + diff --git a/SQCSim-common/vector3.h b/SQCSim-common/vector3.h new file mode 100644 index 0000000..b191681 --- /dev/null +++ b/SQCSim-common/vector3.h @@ -0,0 +1,219 @@ +#ifndef VECTOR3_H__ +#define VECTOR3_H__ + +#include +#include + +template +class Vector3 +{ +public: + Vector3(); + Vector3(const T& x, const T& y, const T& z); + ~Vector3(); + + T Length() const; + void Normalize(); + void Zero(); + + T Dot(const Vector3& v) const; + Vector3 Cross(const Vector3& v) const; + + Vector3 operator+(const Vector3& v) const; + Vector3 operator-(const Vector3& v) const; + Vector3 operator-() const; + Vector3 operator+(const T& v) const; + Vector3 operator-(const T& v) const; + Vector3 operator/(const T& v) const; + Vector3 operator*(const T& v) const; + + Vector3& operator=(const Vector3& v); + + Vector3& operator+=(const Vector3& v); + Vector3& operator-=(const Vector3& v); + Vector3& operator+=(const T& v); + Vector3& operator-=(const T& v); + Vector3& operator/=(const T& v); + Vector3& operator*=(const T& v); + + bool operator==(const Vector3& v) const; + bool operator!=(const Vector3& v) const; + + void Afficher() const; + +public: + T x, y, z; +}; + +typedef Vector3 Vector3i; +typedef Vector3 Vector3f; + +template +inline std::ostream& operator<<(std::ostream& out, const Vector3& v) +{ + out << "[" << v.x << ", " << v.y << ", " << v.z << "]"; + return out; +} + + +template +Vector3::Vector3() +{ +} + +template +Vector3::Vector3(const T& x, const T& y, const T& z) : x(x), y(y), z(z) +{ +} + +template +Vector3::~Vector3() +{ +} + +template +T Vector3::Length() const +{ + return sqrt(x*x + y*y + z*z); +} + +template +void Vector3::Normalize() +{ + T len = Length(); + if (len != 0) + { + x /= len; + y /= len; + z /= len; + } +} + +template +void Vector3::Zero() +{ + x = y = z = 0; +} + +template +T Vector3::Dot(const Vector3& v) const +{ + return (x * v.x) + (y * v.y) + (z * v.z); +} + +template +Vector3 Vector3::Cross(const Vector3& v) const +{ + return Vector3( + y * v.z - v.y * z, + z * v.x - v.z * x, + x * v.y - v.x * y); +} + +template +Vector3 Vector3::operator+(const Vector3& v) const +{ + return Vector3(x + v.x, y + v.y, z + v.z); +} + +template +Vector3 Vector3::operator-(const Vector3& v) const +{ + return Vector3(x - v.x, y - v.y, z - v.z); +} + +template +Vector3 Vector3::operator-() const +{ + return Vector3(-x, -y, -z); +} + +template +Vector3 Vector3::operator+(const T& v) const +{ + return Vector3(x + v, y + v, z + v); +} + +template +Vector3 Vector3::operator-(const T& v) const +{ + return Vector3(x - v, y - v, z - v); +} + +template +Vector3 Vector3::operator/(const T& v) const +{ + return Vector3(x / v, y / v, z / v); +} + +template +Vector3 Vector3::operator*(const T& v) const +{ + return Vector3(x * v, y * v, z * v); +} + +template +Vector3& Vector3::operator=(const Vector3& v) +{ + x = v.x; + y = v.y; + z = v.z; + return *this; +} + +template +Vector3& Vector3::operator+=(const Vector3& v) +{ + return (*this = *this + v); +} + +template +Vector3& Vector3::operator-=(const Vector3& v) +{ + return (*this = *this - v); +} + +template +Vector3& Vector3::operator+=(const T& v) +{ + return (*this = *this + v); +} + +template +Vector3& Vector3::operator-=(const T& v) +{ + return (*this = *this - v); +} + +template +Vector3& Vector3::operator/=(const T& v) +{ + return (*this = *this / v); +} + +template +Vector3& Vector3::operator*=(const T& v) +{ + return (*this = *this * v); +} + +template +bool Vector3::operator==(const Vector3& v) const +{ + return (x == v.x && y == v.y && z == v.z); +} + +template +bool Vector3::operator!=(const Vector3& v) const +{ + return !(*this == v); +} + +template +void Vector3::Afficher() const +{ + std::cout << "[" << x << ", " << y << ", " << z << "]" << std::endl; +} + + +#endif // VECTOR3_H__ diff --git a/SQCSim-common/world.cpp b/SQCSim-common/world.cpp new file mode 100644 index 0000000..6b4ccf6 --- /dev/null +++ b/SQCSim-common/world.cpp @@ -0,0 +1,109 @@ +#include "world.h" + +World::World() {} + +World::~World() {} + +Array2d& World::GetChunks() { return m_chunks; } + +Chunk* World::ChunkAt(float x, float y, float z) const { + int cx = (int)x / CHUNK_SIZE_X; + int cz = (int)z / CHUNK_SIZE_Z; + + if (x < 0 || y < 0 || z < 0 || + x >= WORLD_SIZE_X * CHUNK_SIZE_X || + z >= CHUNK_SIZE_Z * WORLD_SIZE_Y || + y > CHUNK_SIZE_Y) + return 0; + + return m_chunks.Get(cx, cz); +} + +Chunk* World::ChunkAt(const Vector3f& pos) const { return ChunkAt(pos.x, pos.y, pos.z); } + +BlockType World::BlockAt(float x, float y, float z, BlockType defaultBlockType) const { + Chunk* c = ChunkAt(x, y, z); + + if (!c) + return defaultBlockType; + + int bx = (int)x % CHUNK_SIZE_X; + int by = (int)y % CHUNK_SIZE_Y; + int bz = (int)z % CHUNK_SIZE_Z; + + return c->GetBlock(bx, by, bz); +} + +BlockType World::BlockAt(const Vector3f& pos, BlockType defaultBlockType) const { + return BlockAt(pos.x, pos.y, pos.z, defaultBlockType); +} + +void World::GetScope(unsigned int& x, unsigned int& y) { + x = m_center[0]; + y = m_center[1]; +} + +void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) { + int bx = (int)pos.x % CHUNK_SIZE_X; + int by = (int)pos.y % CHUNK_SIZE_Y; + int bz = (int)pos.z % CHUNK_SIZE_Z; + + ChunkAt(pos)->SetBlock(bx, by, bz, blockType, this); +} + +void World::ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block) { + Vector3f currentPos = player.GetPosition(); + Vector3f currentBlock = currentPos; + Vector3f ray = player.GetDirection(); + bool found = false; + + if (block) return; + + while ((currentPos - currentBlock).Length() <= MAX_SELECTION_DISTANCE && !found) { + currentBlock += ray / 10.f; + + BlockType bt = BlockAt(currentBlock); + + if (bt != BTYPE_AIR) + found = true; + } + + if (found) + if (blockType != BTYPE_AIR) { + found = false; + while ((currentPos - currentBlock).Length() >= 1.7f && !found) { + currentBlock -= ray / 10.f; + + BlockType bt = BlockAt(currentBlock); + + if (bt == BTYPE_AIR) { // V?rification pour ?tre s?r que le bloc ? changer n'est pas dans le joueur. + int Bx = (int)currentBlock.x; + int By = (int)currentBlock.y; + int Bz = (int)currentBlock.z; + + int Px = (int)currentPos.x; + int PyA = (int)currentPos.y; + int PyB = (int)(currentPos.y - .9f); + int PyC = (int)(currentPos.y - 1.7f); + int Pz = (int)currentPos.z; + + if (!(Bx == Px && + (By == PyA || + By == PyB || + By == PyC) && + Bz == Pz)) + found = true; + } + } + } + + if (found && (int)currentBlock.y < CHUNK_SIZE_Y) { + int bx = (int)currentBlock.x % CHUNK_SIZE_X; + int by = (int)currentBlock.y % CHUNK_SIZE_Y; + int bz = (int)currentBlock.z % CHUNK_SIZE_Z; + + ChunkAt(currentBlock)->SetBlock(bx, by, bz, blockType, this); + ChunkAt(currentBlock)->MakeModified(); + block = true; + } +} diff --git a/SQCSim-common/world.h b/SQCSim-common/world.h new file mode 100644 index 0000000..dd9967a --- /dev/null +++ b/SQCSim-common/world.h @@ -0,0 +1,45 @@ +#ifndef WORLD_H__ +#define WORLD_H__ +#include +#include +#include +#include +#include +#include "define.h" +#include "chunk.h" +#include "array2d.h" +#include "vector3.h" +#include "player.h" +#include "bullet.h" + +class Chunk; +class Player; +class Bullet; + +class World { +public: + World(); + ~World(); + + Array2d& GetChunks(); + + Chunk* ChunkAt(float x, float y, float z) const; + Chunk* ChunkAt(const Vector3f& pos) const; + + BlockType BlockAt(float x, float y, float z, BlockType defaultBlockType = BTYPE_AIR) const; + BlockType BlockAt(const Vector3f& pos, BlockType defaultBlockType = BTYPE_AIR) const; + + void GetScope(unsigned int& x, unsigned int& y); + + void ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block); + void ChangeBlockAtPosition(BlockType blockType, Vector3f pos); + +private: + Array2d m_chunks = Array2d(WORLD_SIZE_X, WORLD_SIZE_Y); + std::vector m_tbDeleted; + + unsigned int m_center[2] = { UINT16_MAX / 2 - WORLD_SIZE_X, UINT16_MAX / 2 - WORLD_SIZE_Y }; + +}; +#endif // WORLD_H__ + diff --git a/SQCSim-srv/SQCSim-srv.vcxproj b/SQCSim-srv/SQCSim-srv.vcxproj new file mode 100644 index 0000000..ae7b24f --- /dev/null +++ b/SQCSim-srv/SQCSim-srv.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + 17.0 + Win32Proj + {d3bb3300-25f0-42bf-a934-fac33b5c7d25} + SQCSimsrv + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + diff --git a/SQCSim-srv/SQCSim-srv.vcxproj.filters b/SQCSim-srv/SQCSim-srv.vcxproj.filters new file mode 100644 index 0000000..1e51e38 --- /dev/null +++ b/SQCSim-srv/SQCSim-srv.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + \ No newline at end of file diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 5cda6d0..dfed398 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -112,8 +112,8 @@ true - external\irrKlang-1.6.0\include;external\glew170\include;external\devil178\include;external\sfml23\include;$(IncludePath) - external\glew170\lib;external\devil178\lib;external\sfml23\lib;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio + external\irrKlang-1.6.0\include;external\glew210\include;external\devil178\include;external\sfml251\include;$(IncludePath) + external\glew210\lib;external\sfml251\lib;external\devil178\lib;external\irrKlang-1.6.0\lib\Win32-visualStudio;$(LibraryPath) true @@ -122,8 +122,8 @@ false - external\irrKlang-1.6.0\include;external\sfml23\include;external\devil178\include;external\glew170\include;$(IncludePath) - external\sfml23\lib;external\devil178\lib;external\glew170\lib;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio + external\devil180\include;external\irrKlang-1.6.0\include;external\sfml251\include;external\glew210\include;$(IncludePath) + external\sfml251\lib;external\devil180\lib\x86\Release;external\glew210\lib\Release\Win32;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio false diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 6104552..6fc950f 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -12,9 +12,9 @@ #include #endif -#define CHUNK_SIZE_X 16 -#define CHUNK_SIZE_Y 128 -#define CHUNK_SIZE_Z 16 +#define CHUNK_SIZE_X 4 +#define CHUNK_SIZE_Y 64 +#define CHUNK_SIZE_Z 4 #define MAX_SELECTION_DISTANCE 5 #define SEED 12345 @@ -36,18 +36,18 @@ #endif #ifdef NDEBUG -#define WORLD_SIZE_X 16 -#define WORLD_SIZE_Y 16 +#define WORLD_SIZE_X 64 +#define WORLD_SIZE_Y 64 #define FRAMES_RENDER_CHUNKS 1 #define FRAMES_UPDATE_CHUNKS 1 #define FRAMES_DELETE_CHUNKS 1 -#define THREADS_GENERATE_CHUNKS 12 -#define THREADS_UPDATE_CHUNKS 5 +#define THREADS_GENERATE_CHUNKS 6 +#define THREADS_UPDATE_CHUNKS 3 #define THREADS_DELETE_CHUNKS 2 -#define VIEW_DISTANCE 1024 +#define VIEW_DISTANCE 512 #define TEXTURE_SIZE 512 #define MAX_BULLETS 512 #endif @@ -56,11 +56,6 @@ typedef uint8_t BlockType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; -//#define TEXTURE_PATH "../SQCSim2021/media/textures/" -//#define SHADER_PATH "../SQCSim2021/media/shaders/" -//#define AUDIO_PATH "../SQCSim2021/media/audio/" -//#define CHUNK_PATH "../SQCSim2021/media/chunks/" - #define TEXTURE_PATH "./media/textures/" #define SHADER_PATH "./media/shaders/" #define AUDIO_PATH "./media/audio/" diff --git a/SQCSim2021/world.cpp b/SQCSim2021/world.cpp index 57b2bbe..bbd86c0 100644 --- a/SQCSim2021/world.cpp +++ b/SQCSim2021/world.cpp @@ -223,7 +223,7 @@ void World::RenderWorld(int& rendercount, Player& player, Transformation& world, direct.Normalize(); pos.y = 1; - static Vector3 renderManifest[VIEW_DISTANCE * 4]; // Nombre de Chunks maximal à être rendus. + static Vector3 renderManifest[VIEW_DISTANCE * 8]; // Nombre de Chunks maximal à être rendus. //for (int dist = VIEW_DISTANCE; dist >= 0; dist -= CHUNK_SIZE_X) { for (int dist = 0; dist <= VIEW_DISTANCE; dist += CHUNK_SIZE_X) { @@ -231,26 +231,26 @@ void World::RenderWorld(int& rendercount, Player& player, Transformation& world, float sinus, cosinus; int echantillons; - if (dist > VIEW_DISTANCE * .5f) { + if (dist > VIEW_DISTANCE * .1f) { sinus = .00872653549f; // sin(1/2 degré) cosinus = .99996192306; // cos(1/2 degré) echantillons = 180; } - else if (dist > VIEW_DISTANCE * .4f) { - sinus = .01151891831f; // sin(2/3 degré) - cosinus = .99993365506; // cos(2/3 degré) - echantillons = 120; - } - else if (dist > VIEW_DISTANCE * .3f) { - sinus = .01745240643; // sin(1 degré) - cosinus = .99984769515; // cos(1 degré) - echantillons = 90; - } - else if (dist > VIEW_DISTANCE * .2f) { - sinus = .0261769483; - cosinus = .99965732497; - echantillons = 60; - } + //else if (dist > VIEW_DISTANCE * .3f) { + // sinus = .01151891831f; // sin(2/3 degré) + // cosinus = .99993365506; // cos(2/3 degré) + // echantillons = 120; + //} + //else if (dist > VIEW_DISTANCE * .2f) { + // sinus = .01745240643; // sin(1 degré) + // cosinus = .99984769515; // cos(1 degré) + // echantillons = 90; + //} + //else if (dist > VIEW_DISTANCE * .1f) { + // sinus = .0261769483; + // cosinus = .99965732497; + // echantillons = 60; + //} else { sinus = .0348994967; cosinus = .99939082701; @@ -293,7 +293,7 @@ void World::RenderWorld(int& rendercount, Player& player, Transformation& world, world.ApplyTranslation(chx, 0, chy); world.Use(); - float blcolor = renderManifest[index].y / (VIEW_DISTANCE * 1000.f); + float blcolor = renderManifest[index].y / (VIEW_DISTANCE / 50.f); glBlendColor(blcolor, blcolor, blcolor, 1.f); ChunkAt(chx, 1, chy)->Render(); world.ApplyTranslation(-chx, 0, -chy); diff --git a/SQCSim2023.sln b/SQCSim2023.sln index 7f8c39d..640b854 100644 --- a/SQCSim2023.sln +++ b/SQCSim2023.sln @@ -1,10 +1,14 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31702.278 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SQCSim2021", "SQCSim2021\SQCSim2021.vcxproj", "{A21FD938-1FEA-4687-AB86-0EABAC30877B}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SQCSim-common", "SQCSim-common\SQCSim-common.vcxproj", "{EE91AB12-4225-4A4D-931D-69D72F6D91FB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SQCSim-srv", "SQCSim-srv\SQCSim-srv.vcxproj", "{D3BB3300-25F0-42BF-A934-FAC33B5C7D25}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +25,22 @@ Global {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|x64.Build.0 = Release|x64 {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|x86.ActiveCfg = Release|Win32 {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|x86.Build.0 = Release|Win32 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Debug|x64.ActiveCfg = Debug|x64 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Debug|x64.Build.0 = Debug|x64 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Debug|x86.ActiveCfg = Debug|Win32 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Debug|x86.Build.0 = Debug|Win32 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Release|x64.ActiveCfg = Release|x64 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Release|x64.Build.0 = Release|x64 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Release|x86.ActiveCfg = Release|Win32 + {EE91AB12-4225-4A4D-931D-69D72F6D91FB}.Release|x86.Build.0 = Release|Win32 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Debug|x64.ActiveCfg = Debug|x64 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Debug|x64.Build.0 = Debug|x64 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Debug|x86.ActiveCfg = Debug|Win32 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Debug|x86.Build.0 = Debug|Win32 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Release|x64.ActiveCfg = Release|x64 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Release|x64.Build.0 = Release|x64 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Release|x86.ActiveCfg = Release|Win32 + {D3BB3300-25F0-42BF-A934-FAC33B5C7D25}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 51b0795c62427dddc6b8c8ba50c35b893624d672 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sun, 24 Sep 2023 08:45:40 -0400 Subject: [PATCH 02/19] =?UTF-8?q?D=C3=A9but=20sockets.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/define.h | 3 + SQCSim-common/player.cpp | 20 ++- SQCSim-srv/SQCSim-srv.vcxproj | 50 +++--- SQCSim-srv/SQCSim-srv.vcxproj.filters | 22 +++ SQCSim-srv/connection.cpp | 31 ++++ SQCSim-srv/connection.h | 42 +++++ SQCSim-srv/define.h | 38 +++++ SQCSim-srv/main.cpp | 10 ++ SQCSim-srv/server.cpp | 224 ++++++++++++++++++++++++++ SQCSim-srv/server.h | 34 ++++ SQCSim2021/define.h | 26 +-- 11 files changed, 455 insertions(+), 45 deletions(-) create mode 100644 SQCSim-srv/connection.cpp create mode 100644 SQCSim-srv/connection.h create mode 100644 SQCSim-srv/define.h create mode 100644 SQCSim-srv/main.cpp create mode 100644 SQCSim-srv/server.cpp create mode 100644 SQCSim-srv/server.h diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index aea5ea2..3501dd6 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -9,6 +9,9 @@ #define MAX_SELECTION_DISTANCE 5 #define SEED 12345 +#define SRV_PORT 1025 +#define CLI_PORT 1026 + #ifdef _DEBUG #define WORLD_SIZE_X 64 #define WORLD_SIZE_Y 64 diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index 080fc2d..b42968a 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -101,7 +101,15 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { bt1 = world->BlockAt(GetPosition().x + input.x, GetPosition().y, GetPosition().z); bt2 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 0.9f, GetPosition().z); bt3 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 1.7f, GetPosition().z); - if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { + if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) { + if (input.x > 0) + input.x = m_velocity.x = 0.5f; + else + input.x = m_velocity.x = -0.5f; + m_velocity.y = 0.3; + m_velocity.z *= .5f; + } + else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { input.x = m_velocity.x = 0; m_velocity.z *= .5f; } @@ -109,7 +117,15 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { bt1 = world->BlockAt(GetPosition().x, GetPosition().y, GetPosition().z + input.z); bt2 = world->BlockAt(GetPosition().x, GetPosition().y - 0.9f, GetPosition().z + input.z); bt3 = world->BlockAt(GetPosition().x, GetPosition().y - 1.7f, GetPosition().z + input.z); - if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { + if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) { + if (input.z > 0) + input.z = m_velocity.z = 0.5f; + else + input.z = m_velocity.z = -0.5f; + m_velocity.y = 0.3; + m_velocity.x *= .5f; + } + else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { input.z = m_velocity.z = 0; m_velocity.x *= .5f; } diff --git a/SQCSim-srv/SQCSim-srv.vcxproj b/SQCSim-srv/SQCSim-srv.vcxproj index ae7b24f..525fc03 100644 --- a/SQCSim-srv/SQCSim-srv.vcxproj +++ b/SQCSim-srv/SQCSim-srv.vcxproj @@ -17,7 +17,6 @@ Release x64 - 17.0 @@ -53,27 +52,24 @@ true Unicode - - + + + + + + + + + + + + + - - - - - - - - - - - - - - Level3 @@ -94,6 +90,7 @@ true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true + Default Console @@ -130,9 +127,22 @@ true - - + + + + + + + + + + + + + {ee91ab12-4225-4a4d-931d-69d72f6d91fb} + + - + \ No newline at end of file diff --git a/SQCSim-srv/SQCSim-srv.vcxproj.filters b/SQCSim-srv/SQCSim-srv.vcxproj.filters index 1e51e38..67c9660 100644 --- a/SQCSim-srv/SQCSim-srv.vcxproj.filters +++ b/SQCSim-srv/SQCSim-srv.vcxproj.filters @@ -14,4 +14,26 @@ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + Fichiers sources + + + Fichiers sources + + + Fichiers sources + + + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + \ No newline at end of file diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp new file mode 100644 index 0000000..964cc07 --- /dev/null +++ b/SQCSim-srv/connection.cpp @@ -0,0 +1,31 @@ +#include "connection.h" + +Connection::Connection(in_addr addr, + std::string name, + UINT64 hash, + UINT64 self_hash, + UINT64 team_hash): + m_addr(addr), + m_hash(hash), + m_shash(self_hash), + m_thash(team_hash), + m_name(name) { + +} + +Connection::~Connection() { + +} + +in_addr Connection::GetAddr() const { return m_addr; } + +UINT64 Connection::GetHash(bool self) const { return self? m_shash: m_hash; } + +UINT64 Connection::GetTeamHash() const { return m_thash; } + +std::string Connection::GetName() const { return m_name; } + +void Connection::Clean(std::chrono::system_clock::time_point time) { + while (m_input_manifest.front().timestamp < time || !m_input_manifest.empty()) + m_input_manifest.pop_front(); +} diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h new file mode 100644 index 0000000..198a39f --- /dev/null +++ b/SQCSim-srv/connection.h @@ -0,0 +1,42 @@ +#ifndef _CONNECTION_H__ +#define _CONNECTION_H__ +#include +#include +#include "../SQCSim-common/player.h" +#include "../SQCSim-common/vector3.h" +#include "define.h" + +struct Input { + std::chrono::system_clock::time_point timestamp; + UINT8 keys; // 0bFBLRJS__ + Vector3f direction; +}; + +class Connection { +public: + Connection( + in_addr addr, + std::string name, + UINT64 hash, + UINT64 self_hash, + UINT64 team_hash); + ~Connection(); + + Player* player = nullptr; + + in_addr GetAddr() const; + UINT64 GetHash(bool self = true) const; + UINT64 GetTeamHash() const; + std::string GetName() const; + + void Clean(std::chrono::system_clock::time_point time); +private: + std::deque m_input_manifest; + in_addr m_addr; + UINT64 m_hash, + m_shash, + m_thash; + std::string m_name; + +}; +#endif \ No newline at end of file diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h new file mode 100644 index 0000000..3a37bd4 --- /dev/null +++ b/SQCSim-srv/define.h @@ -0,0 +1,38 @@ +#ifndef _SRV_DEFINE_H__ +#define _SRV_DEFINE_H__ + +#include "../SQCSim-common/define.h" +#include +#include +#include +#include + +enum LogDest { CONSOLE, LOGFILE, LOG_LAST }; + +#ifdef _WIN32 + +#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject + +#include +#include +#include + +#define popen _popen +#define pclose _pclose + +#else // Pas _WIN32 + +#include +#include +#include +#include +#include +#include + +#define SOCKET int +#define INVALID_SOCKET -1 +#define closesocket close + +#endif // _WIN32 + +#endif \ No newline at end of file diff --git a/SQCSim-srv/main.cpp b/SQCSim-srv/main.cpp new file mode 100644 index 0000000..d67d836 --- /dev/null +++ b/SQCSim-srv/main.cpp @@ -0,0 +1,10 @@ +#include "define.h" +#include "server.h" + +int main() { + Server* server = new Server(); + if (server->Init() == 0) + if (server->Ready() == 0) + server->Run(); + delete server; +} \ No newline at end of file diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp new file mode 100644 index 0000000..afe262d --- /dev/null +++ b/SQCSim-srv/server.cpp @@ -0,0 +1,224 @@ +#include "server.h" + +Server::Server(LogDest log) : m_log(log) { + if (log == LogDest::LOGFILE) { + m_logfile = std::ofstream("server.log", std::ofstream::out); + if (!m_logfile.is_open()) { + m_log = LogDest::CONSOLE; // Fallback console. + Log("Ouverture fichier log: repli vers console.", true, false); + } + } +} + +Server::~Server() { + if (m_logfile.is_open()) + m_logfile.close(); + if (m_sock_udp) + closesocket(m_sock_udp); + if (m_sock_tcp) + closesocket(m_sock_tcp); +#ifdef _WIN32 + WSACleanup(); +#endif +} + +int Server::Init() { + Log("Initialisation du serveur...", false, false); + +#ifdef _WIN32 + if (WSAStartup(MAKEWORD(2, 2), &m_wsaData) != 0) { /* Initialisation de l'environnement reseau (Windows only) */ + Log("Initialisation WinSock.", true, true); + return 1; + } +#endif + + m_sock_udp = socket(AF_INET, SOCK_DGRAM, 0); + if (m_sock_udp == INVALID_SOCKET) { /* Creation du socket UDP */ + Log("Creation Socket UDP.", true, true); + return 2; + } + + m_sock_tcp = socket(AF_INET, SOCK_STREAM, 0); + if (m_sock_tcp == INVALID_SOCKET) { /* Creation du socket TCP */ + Log("Creation Socket TCP.", true, true); + return 3; + } + + /* Creation structure donnes descripteur du socket serveur */ + sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(SRV_PORT); + addr.sin_addr.s_addr = htonl(INADDR_ANY); + + if (bind(m_sock_udp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket UDP au port */ + Log("Association Socket UDP.", true, true); + return 4; + } + + if (bind(m_sock_tcp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket TCP au port */ + Log("Association Socket TCP.", true, true); + return 5; + } + + return 0; +} + +int Server::Ready() { + Log("Prêt à démarrer...", false, false); + return 0; +} + +void Server::Run() { + Log("Partie en cours...", false, false); +} + +inline std::string Server::Timestamp() { + time_t rawtime; + struct tm timeinfo; + char buffer[80]; + + time(&rawtime); + +#ifdef _WIN32 + localtime_s(&timeinfo, &rawtime); +#else + localtime_r(&rawtime, &timeinfo); +#endif + + strftime(buffer, sizeof(buffer), "%d-%m-%Y %H:%M:%S", &timeinfo); + std::string str(buffer); + + return "[" + str + "] "; +} + +void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) { + switch (m_log) { + case LogDest::LOGFILE: + m_logfile << Timestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; + break; + case LogDest::CONSOLE: + default: + std::cout << Timestamp() << (is_fatal? "FATAL ": "") << (is_error ? "ERROR ": "") << str << std::endl; + break; + } + + if (is_fatal) { + if (m_sock_udp) + closesocket(m_sock_udp); + if (m_sock_tcp) + closesocket(m_sock_tcp); +#ifdef _WIN32 + WSACleanup(); +#endif + } +} + +///* Recevoir paquet */ +//while (true) { +// char buffer[2048]; +// sockaddr_in client; +// +//#ifdef _WIN32 // Mais pourquoi? +// int clen = sizeof(client); +//#else +// unsigned int clen = sizeof(client); +//#endif +// +// int count = recvfrom(socket_udp, buffer, sizeof(buffer) - 1, 0, (sockaddr*)&client, &clen); +// +// if (count < 0) { +// Log("Erreur de reception de paquet.", socket_udp); +// return 4; +// } +// +// buffer[count] = '\0'; +// +// /* Gérer le paquet reçu */ +// std::string commande(buffer); +// +// if (commande.find("echo ") == 0) { /* ECHO */ +// std::string::size_type pos = commande.find(' '); +// std::string parametres = commande.substr(pos + 1); +// +// sendto(socket_udp, parametres.c_str(), parametres.length(), 0, (const sockaddr*)&client, sizeof(client)); +// } +// else if (commande.find("date ") == 0) { /* DATE */ +// time_t rawtime; +// struct tm* timeinfo = new tm(); +// char tbuffer[80]; +// +// time(&rawtime); +// +//#ifdef _WIN32 +// localtime_s(timeinfo, &rawtime); +//#else +// localtime_r(&rawtime, timeinfo); +//#endif +// +// strftime(tbuffer, 80, "%a %b %e %T %G", timeinfo); +// +// sendto(socket_udp, tbuffer, sizeof(tbuffer), 0, (const sockaddr*)&client, sizeof(client)); +// delete timeinfo; +// } +// else if (commande.find("ping ") == 0) { /* PING */ +// sendto(socket_udp, "pong", sizeof("pong"), 0, (const sockaddr*)&client, sizeof(client)); +// } +// else if (commande.find("usager ") == 0) { /* USAGER */ +// std::string user; +// +//#ifdef _WIN32 +// wchar_t userbuf[30]; +// DWORD usersize = 30; +// +// GetUserNameW(userbuf, &usersize); +// +// std::wstring wuser = userbuf; +// user = std::string(wuser.begin(), wuser.end()); +//#else +// char ptr[30]; +// getlogin_r(ptr, sizeof(ptr) - 1); +// user = std::string(ptr); +//#endif +// +// sendto(socket_udp, user.c_str(), user.length(), 0, (const sockaddr*)&client, sizeof(client)); +// } +// else if (commande.find("exec ") == 0) { /* EXEC */ +// std::string::size_type pos = commande.find(' '); +// std::string parametres = commande.substr(pos + 1); +// +// FILE* pipe = nullptr; +// char buffer[301]; // 300 caractères + '\0' +// std::string reponse; +// +// pipe = popen(parametres.c_str(), "r"); +// +// if (!pipe) +// reponse = "Erreur de commande!"; +// else while (!feof(pipe)) { +// if (fgets(buffer, sizeof(buffer) - 1, pipe)) +// reponse += buffer; +// } +// +// if (pipe) +// pclose(pipe); +// +// if (reponse.length() > 300) +// reponse = reponse.substr(0, 300); +// else if (reponse.length() < 1) +// reponse = "OK!"; +// +// sendto(socket_udp, reponse.c_str(), reponse.length(), 0, (const sockaddr*)&client, sizeof(client)); +// } +// else if (commande.find("bye ") == 0) { /* BYE */ +// Log("", 0); // Message d'erreur pas de message d'erreur! +// return 0; +// } +// else sendto(socket_udp, "huh?", sizeof("huh?"), 0, (const sockaddr*)&client, sizeof(client)); /* DEFAULT */ +//} +// +///* Ce bout de code ne devrait theoriquement jamais etre atteint, mais au cas. */ +//Log("", 0); +//return 0; +//return false; +//} +// diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h new file mode 100644 index 0000000..246ad16 --- /dev/null +++ b/SQCSim-srv/server.h @@ -0,0 +1,34 @@ +#ifndef _SERVER_H__ +#define _SERVER_H__ + +#include +#include +#include +#include "../SQCSim-common/world.h" +#include "define.h" + +class Server { +public: + Server(LogDest log = LogDest::CONSOLE); + ~Server(); + + int Init(); + int Ready(); + void Run(); + +private: +#ifdef _WIN32 + WSADATA m_wsaData; +#endif + SOCKET m_sock_udp = 0, + m_sock_tcp = 0; + LogDest m_log; + + std::ofstream m_logfile; + World* m_world = nullptr; + std::vector m_players; + + std::string Timestamp(); + void Log(std::string str, bool is_error, bool is_fatal); +}; +#endif diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 68e94b1..660b62e 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -16,29 +16,10 @@ #define CHUNK_SIZE_Y 64 #define CHUNK_SIZE_Z 4 #define MAX_SELECTION_DISTANCE 5 -#define SEED 12345 - -#ifdef _DEBUG -#define WORLD_SIZE_X 64 -#define WORLD_SIZE_Y 64 - -#define FRAMES_RENDER_CHUNKS 4 -#define FRAMES_UPDATE_CHUNKS 4 -#define FRAMES_DELETE_CHUNKS 4 - -#define THREADS_GENERATE_CHUNKS 1 -#define THREADS_UPDATE_CHUNKS 1 -#define THREADS_DELETE_CHUNKS 1 - -#define VIEW_DISTANCE 256 -#define TEXTURE_SIZE 128 -#define MAX_BULLETS 64 - #define BASE_WIDTH 640 #define BASE_HEIGHT 480 -#endif +#define SEED 12345 -#ifdef NDEBUG #define WORLD_SIZE_X 64 #define WORLD_SIZE_Y 64 @@ -46,14 +27,13 @@ #define FRAMES_UPDATE_CHUNKS 1 #define FRAMES_DELETE_CHUNKS 1 -#define THREADS_GENERATE_CHUNKS 6 +#define THREADS_GENERATE_CHUNKS 8 #define THREADS_UPDATE_CHUNKS 3 -#define THREADS_DELETE_CHUNKS 2 +#define THREADS_DELETE_CHUNKS 3 #define VIEW_DISTANCE 512 #define TEXTURE_SIZE 512 #define MAX_BULLETS 512 -#endif typedef uint8_t BlockType; From 2bb55e5bf62334d84aa1707d5de01190c38394cc Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sun, 24 Sep 2023 11:07:03 -0400 Subject: [PATCH 03/19] Zigonnage dans le srv. --- SQCSim-srv/connection.cpp | 47 ++++++++++++++++++++++++++++++--------- SQCSim-srv/connection.h | 36 ++++++++++++++++++++++-------- SQCSim-srv/define.h | 11 ++++++--- SQCSim-srv/server.cpp | 30 ++++++++++++++++++++----- SQCSim-srv/server.h | 11 ++++----- 5 files changed, 101 insertions(+), 34 deletions(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 964cc07..2b93114 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -2,13 +2,13 @@ Connection::Connection(in_addr addr, std::string name, - UINT64 hash, - UINT64 self_hash, - UINT64 team_hash): + UINT64 id, + UINT64 self_id, + UINT64 team_id): m_addr(addr), - m_hash(hash), - m_shash(self_hash), - m_thash(team_hash), + m_id(id), + m_sid(self_id), + m_tid(team_id), m_name(name) { } @@ -19,13 +19,38 @@ Connection::~Connection() { in_addr Connection::GetAddr() const { return m_addr; } -UINT64 Connection::GetHash(bool self) const { return self? m_shash: m_hash; } +UINT64 Connection::GetHash(bool self) const { return self? m_sid: m_id; } -UINT64 Connection::GetTeamHash() const { return m_thash; } +UINT64 Connection::GetTeamHash() const { return m_tid; } std::string Connection::GetName() const { return m_name; } -void Connection::Clean(std::chrono::system_clock::time_point time) { - while (m_input_manifest.front().timestamp < time || !m_input_manifest.empty()) - m_input_manifest.pop_front(); +void Connection::AddInput(Input in) { + m_input_manifest.insert({in.timestamp, in}); +} + +Output* Connection::getOutput(Timestamp time) { + auto out = m_output_manifest.find(time); + if (out != m_output_manifest.end()) + return &out->second; + return nullptr; +} + +Sync Connection::getSync(Timestamp time) { + Sync sync; + auto out = m_output_manifest.find(time); + if (out != m_output_manifest.end()) { + sync.timestamp = out->second.timestamp; + sync.position = out->second.position; + sync.sid = m_sid; + } + return sync; +} + +void Connection::CleanInputManifest(Timestamp time) { + auto wat = m_input_manifest.find(time); + + while (wat != m_input_manifest.begin()) + m_input_manifest.erase(wat--); + } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 198a39f..5b0134d 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -1,17 +1,30 @@ -#ifndef _CONNECTION_H__ -#define _CONNECTION_H__ +#ifndef CONNECTION_H__ +#define CONNECTION_H__ #include -#include +#include #include "../SQCSim-common/player.h" #include "../SQCSim-common/vector3.h" #include "define.h" struct Input { - std::chrono::system_clock::time_point timestamp; + Timestamp timestamp; UINT8 keys; // 0bFBLRJS__ Vector3f direction; }; +struct Output { + Timestamp timestamp; + UINT64 id = 0; + Vector3f position, direction; + bool is_shooting, is_jumping; +}; + +struct Sync { + Timestamp timestamp; + UINT64 sid = 0; + Vector3f position; +}; + class Connection { public: Connection( @@ -29,13 +42,18 @@ public: UINT64 GetTeamHash() const; std::string GetName() const; - void Clean(std::chrono::system_clock::time_point time); + void AddInput(Input in); + Output* getOutput(Timestamp time); + Sync getSync(Timestamp time); + + void CleanInputManifest(Timestamp time); private: - std::deque m_input_manifest; + std::map m_input_manifest; + std::map m_output_manifest; in_addr m_addr; - UINT64 m_hash, - m_shash, - m_thash; + UINT64 m_id, + m_sid, + m_tid; std::string m_name; }; diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index 3a37bd4..74c1c26 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -1,13 +1,18 @@ -#ifndef _SRV_DEFINE_H__ -#define _SRV_DEFINE_H__ +#ifndef SRV_DEFINE_H__ +#define SRV_DEFINE_H__ #include "../SQCSim-common/define.h" #include #include #include #include +#include + +#define MAX_CONNECTIONS 16 +typedef unsigned char LogDest; +enum LOG_DEST { CONSOLE, LOGFILE, LOG_LAST }; +typedef std::chrono::system_clock::time_point Timestamp; -enum LogDest { CONSOLE, LOGFILE, LOG_LAST }; #ifdef _WIN32 diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index afe262d..e2740ba 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -1,10 +1,11 @@ #include "server.h" -Server::Server(LogDest log) : m_log(log) { - if (log == LogDest::LOGFILE) { +Server::Server(LogDest log) { + m_log = log; + if (log == LOG_DEST::LOGFILE) { m_logfile = std::ofstream("server.log", std::ofstream::out); if (!m_logfile.is_open()) { - m_log = LogDest::CONSOLE; // Fallback console. + m_log = LOG_DEST::CONSOLE; // Fallback console. Log("Ouverture fichier log: repli vers console.", true, false); } } @@ -60,11 +61,28 @@ int Server::Init() { return 5; } + for (auto& conn : m_conn) + conn = nullptr; + return 0; } int Server::Ready() { - Log("Prêt à démarrer...", false, false); + if (listen(m_sock_tcp, MAX_CONNECTIONS) < 0) { + Log("Écoute sur le port TCP.", true, true); + return 1; + } + + char buffer[2048]; + bool readystart = false; + + Log("À l'écoute sur le port: " + std::to_string(SRV_PORT), false, false); + + while (!readystart) { + + Log("trololo", false, false); + readystart = true; + } return 0; } @@ -93,10 +111,10 @@ inline std::string Server::Timestamp() { void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) { switch (m_log) { - case LogDest::LOGFILE: + case LOG_DEST::LOGFILE: m_logfile << Timestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; break; - case LogDest::CONSOLE: + case LOG_DEST::CONSOLE: default: std::cout << Timestamp() << (is_fatal? "FATAL ": "") << (is_error ? "ERROR ": "") << str << std::endl; break; diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 246ad16..2cb0618 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -1,15 +1,16 @@ -#ifndef _SERVER_H__ -#define _SERVER_H__ +#ifndef SERVER_H__ +#define SERVER_H__ #include #include #include #include "../SQCSim-common/world.h" #include "define.h" +#include "connection.h" class Server { public: - Server(LogDest log = LogDest::CONSOLE); + Server(LogDest log = LOG_DEST::CONSOLE); ~Server(); int Init(); @@ -23,10 +24,10 @@ private: SOCKET m_sock_udp = 0, m_sock_tcp = 0; LogDest m_log; - std::ofstream m_logfile; + + Connection* m_conn[MAX_CONNECTIONS]; World* m_world = nullptr; - std::vector m_players; std::string Timestamp(); void Log(std::string str, bool is_error, bool is_fatal); From 20d15a15590a1eb64b270a6abcdc022cd0a8db73 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 25 Sep 2023 08:23:52 -0400 Subject: [PATCH 04/19] =?UTF-8?q?D=C3=A9but=20protocole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/SQCSim-common.vcxproj | 1 + SQCSim-common/SQCSim-common.vcxproj.filters | 3 + SQCSim-common/define.h | 70 ++++++++-------- SQCSim-common/netprotocol.h | 89 +++++++++++++++++++++ SQCSim-srv/connection.cpp | 10 +-- SQCSim-srv/connection.h | 32 ++------ SQCSim-srv/define.h | 29 ------- SQCSim2021/SQCSim2021.vcxproj | 2 + SQCSim2021/SQCSim2021.vcxproj.filters | 6 ++ SQCSim2021/chunk.cpp | 4 +- SQCSim2021/chunk.h | 2 +- SQCSim2021/connector.cpp | 21 +++++ SQCSim2021/connector.h | 46 +++++++++++ SQCSim2021/define.h | 32 ++++++++ SQCSim2021/engine.cpp | 26 +++++- SQCSim2021/engine.h | 4 + SQCSim2021/world.cpp | 32 +++++++- SQCSim2021/world.h | 3 + 18 files changed, 308 insertions(+), 104 deletions(-) create mode 100644 SQCSim-common/netprotocol.h create mode 100644 SQCSim2021/connector.cpp create mode 100644 SQCSim2021/connector.h diff --git a/SQCSim-common/SQCSim-common.vcxproj b/SQCSim-common/SQCSim-common.vcxproj index 5db21d0..5f61a2a 100644 --- a/SQCSim-common/SQCSim-common.vcxproj +++ b/SQCSim-common/SQCSim-common.vcxproj @@ -137,6 +137,7 @@ + diff --git a/SQCSim-common/SQCSim-common.vcxproj.filters b/SQCSim-common/SQCSim-common.vcxproj.filters index af8b625..a6555fb 100644 --- a/SQCSim-common/SQCSim-common.vcxproj.filters +++ b/SQCSim-common/SQCSim-common.vcxproj.filters @@ -48,6 +48,9 @@ Fichiers d%27en-tête + + Fichiers d%27en-tête + diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 3501dd6..78284f5 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -2,51 +2,53 @@ #define DEFINE_H__ #include - -#define CHUNK_SIZE_X 16 -#define CHUNK_SIZE_Y 128 -#define CHUNK_SIZE_Z 16 -#define MAX_SELECTION_DISTANCE 5 -#define SEED 12345 +#include #define SRV_PORT 1025 #define CLI_PORT 1026 -#ifdef _DEBUG +#define CHUNK_SIZE_X 4 +#define CHUNK_SIZE_Y 64 +#define CHUNK_SIZE_Z 4 +#define MAX_SELECTION_DISTANCE 5 +#define SEED 12345 + #define WORLD_SIZE_X 64 #define WORLD_SIZE_Y 64 -#define FRAMES_RENDER_CHUNKS 4 -#define FRAMES_UPDATE_CHUNKS 4 -#define FRAMES_DELETE_CHUNKS 4 - -#define THREADS_GENERATE_CHUNKS 1 -#define THREADS_UPDATE_CHUNKS 1 -#define THREADS_DELETE_CHUNKS 1 - -#define VIEW_DISTANCE 256 -#define TEXTURE_SIZE 128 -#define MAX_BULLETS 64 -#endif - -#ifdef NDEBUG -#define WORLD_SIZE_X 16 -#define WORLD_SIZE_Y 16 - -#define FRAMES_RENDER_CHUNKS 1 -#define FRAMES_UPDATE_CHUNKS 1 -#define FRAMES_DELETE_CHUNKS 1 - -#define THREADS_GENERATE_CHUNKS 12 -#define THREADS_UPDATE_CHUNKS 5 -#define THREADS_DELETE_CHUNKS 2 - -#define VIEW_DISTANCE 1024 +#define VIEW_DISTANCE 512 #define TEXTURE_SIZE 512 #define MAX_BULLETS 512 -#endif typedef uint8_t BlockType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; +typedef std::chrono::system_clock::time_point Timestamp; + +#ifdef _WIN32 + +#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject + +#include +#include +#include + +#define popen _popen +#define pclose _pclose + +#else // Pas _WIN32 + +#include +#include +#include +#include +#include +#include + +#define SOCKET int +#define INVALID_SOCKET -1 +#define closesocket close + +#endif // _WIN32 + #endif // DEFINE_H__ diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h new file mode 100644 index 0000000..3609de9 --- /dev/null +++ b/SQCSim-common/netprotocol.h @@ -0,0 +1,89 @@ +#ifndef NETPROTOCOL_H__ +#define NETPROTOCOL_H__ +#include "define.h" +#include "vector3.h" + +/* Protocole Particulier de Partie à Plusieurs Personnes (PPPPP) */ + +namespace netprot { + typedef uint8_t PacketType; + enum PACKET_TYPE { + ERR, INPUT, OUTPUT, SYNC, + TEAMINF, SELFINF, PLAYINF, + CHUNKMOD, PLAYERMOD, PICKUPMOD, + GAMEINFO, ENDINFO , CHAT + }; + + typedef struct { // cli -> srv UDP ~frame + Timestamp timestamp; + uint8_t keys; // 0bFBLRJS__ + Vector3f direction; + } Input; + + typedef struct { // srv -> cli UDP ~frame + Timestamp timestamp; + uint64_t id = 0; + Vector3f position, + direction; + bool is_shooting, + is_jumping; + } Output; + + typedef struct { // srv -> cli TCP ~second + Timestamp timestamp; + uint64_t sid = 0, + timer = 0; + uint8_t hp = 0; + uint16_t ammo = 0; + Vector3f position; + } Sync; + + typedef struct { // cli <-> srv TCP once + char name[32]; + uint64_t id = 0; + } TeamInfo; + + typedef struct { // cli <-> srv TCP once + char name[32]; + uint64_t sid = 0, + tid = 0; + } SelfInfo; + + typedef struct { // cli <-> srv TCP once + char name[32]; + uint64_t id = 0, + tid = 0; + } PlayerInfo; + + typedef struct { + uint64_t seed; + // uint8_t gameType; + // uint8_t time; + } GameInfo; + + typedef struct { // cli <-> srv TCP event + uint64_t src_id = 0, + dest_id = 0, + dest_team_id = 0; + char mess[140]; // Good 'nough for twitr, good 'nough for me. + } Chat; + + inline void Serialize(Input* in, char* buf, uint32_t* buflen); // cli + inline void Serialize(Output* out, char* buf, uint32_t* buflen); // srv + inline void Serialize(Sync* sync, char* buf, uint32_t* buflen); // srv + inline void Serialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv + inline void Serialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv + inline void Serialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen); // srv + inline void Serialize(Chat* chat, char* buf, uint32_t* buflen); // cli/srv + + inline void Deserialize(Input* in, char* buf, uint32_t* buflen); // srv + inline void Deserialize(Output* out, char* buf, uint32_t* buflen); // cli + inline void Deserialize(Sync* sync, char* buf, uint32_t* buflen); // cli + inline void Deserialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv + inline void Deserialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv + inline void Deserialize(PlayerInfo* spinfoync, char* buf, uint32_t* buflen); // cli + inline void Deserialize(Chat* chat, char* buf, uint32_t* buflen); // srv/cli + + inline PacketType getType(char* buf, uint32_t* buflen); // srv/cli +} +#endif diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 2b93114..0e8d252 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -2,9 +2,9 @@ Connection::Connection(in_addr addr, std::string name, - UINT64 id, - UINT64 self_id, - UINT64 team_id): + uint64_t id, + uint64_t self_id, + uint64_t team_id): m_addr(addr), m_id(id), m_sid(self_id), @@ -19,9 +19,9 @@ Connection::~Connection() { in_addr Connection::GetAddr() const { return m_addr; } -UINT64 Connection::GetHash(bool self) const { return self? m_sid: m_id; } +uint64_t Connection::GetHash(bool self) const { return self? m_sid: m_id; } -UINT64 Connection::GetTeamHash() const { return m_tid; } +uint64_t Connection::GetTeamHash() const { return m_tid; } std::string Connection::GetName() const { return m_name; } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 5b0134d..6db8b06 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -4,42 +4,24 @@ #include #include "../SQCSim-common/player.h" #include "../SQCSim-common/vector3.h" +#include "../SQCSim-common/serialization.h" #include "define.h" -struct Input { - Timestamp timestamp; - UINT8 keys; // 0bFBLRJS__ - Vector3f direction; -}; - -struct Output { - Timestamp timestamp; - UINT64 id = 0; - Vector3f position, direction; - bool is_shooting, is_jumping; -}; - -struct Sync { - Timestamp timestamp; - UINT64 sid = 0; - Vector3f position; -}; - class Connection { public: Connection( in_addr addr, std::string name, - UINT64 hash, - UINT64 self_hash, - UINT64 team_hash); + uint64_t hash, + uint64_t self_hash, + uint64_t team_hash); ~Connection(); Player* player = nullptr; in_addr GetAddr() const; - UINT64 GetHash(bool self = true) const; - UINT64 GetTeamHash() const; + uint64_t GetHash(bool self = true) const; + uint64_t GetTeamHash() const; std::string GetName() const; void AddInput(Input in); @@ -51,7 +33,7 @@ private: std::map m_input_manifest; std::map m_output_manifest; in_addr m_addr; - UINT64 m_id, + uint64_t m_id, m_sid, m_tid; std::string m_name; diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index 74c1c26..297bd15 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -6,38 +6,9 @@ #include #include #include -#include #define MAX_CONNECTIONS 16 typedef unsigned char LogDest; enum LOG_DEST { CONSOLE, LOGFILE, LOG_LAST }; -typedef std::chrono::system_clock::time_point Timestamp; - - -#ifdef _WIN32 - -#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject - -#include -#include -#include - -#define popen _popen -#define pclose _pclose - -#else // Pas _WIN32 - -#include -#include -#include -#include -#include -#include - -#define SOCKET int -#define INVALID_SOCKET -1 -#define closesocket close - -#endif // _WIN32 #endif \ No newline at end of file diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index dfed398..ab87f31 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -25,6 +25,7 @@ + @@ -46,6 +47,7 @@ + diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index 4b2e6c9..8d96ac0 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -74,6 +74,9 @@ Fichiers d%27en-tête + + Fichiers d%27en-tête + @@ -127,5 +130,8 @@ Fichiers sources + + Fichiers sources + \ No newline at end of file diff --git a/SQCSim2021/chunk.cpp b/SQCSim2021/chunk.cpp index fe4c0a5..5d78859 100644 --- a/SQCSim2021/chunk.cpp +++ b/SQCSim2021/chunk.cpp @@ -1,13 +1,13 @@ #include "chunk.h" #include "world.h" -Chunk::Chunk(unsigned int x, unsigned int y) : m_posX(x), m_posY(y) { +Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y) { //std::ostringstream pos; // Vérifie l'existence d'un fichier .chunk avec sa position. //pos << CHUNK_PATH << x << '_' << y << ".chunk"; //std::ifstream input(pos.str(), std::fstream::binary); //if (input.fail()) { - OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(SEED); + OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(seed); m_blocks.Reset(BTYPE_AIR); for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Montagnes diff --git a/SQCSim2021/chunk.h b/SQCSim2021/chunk.h index d4fdcb5..2ce15e8 100644 --- a/SQCSim2021/chunk.h +++ b/SQCSim2021/chunk.h @@ -25,7 +25,7 @@ class Chunk { void AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, int x, int y, int z, float u, float v, float s, World* world); public: - Chunk(unsigned int x, unsigned int y); + Chunk(unsigned int x, unsigned int y, int64_t seed); ~Chunk(); void RemoveBlock(int x, int y, int z, World* world); diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp new file mode 100644 index 0000000..0bdaa56 --- /dev/null +++ b/SQCSim2021/connector.cpp @@ -0,0 +1,21 @@ +#include "connector.h" + +Connector::Connector() +{ +} + +Connector::~Connector() +{ +} + +int Connector::Init(sockaddr_in srv_addr) { + return 0; +} + +int Connector::Connect(std::string name) { + return 0; +} + +UINT64 Connector::getId() const { return m_sid; } + +unsigned int Connector::getSeed() const { return m_seed; } diff --git a/SQCSim2021/connector.h b/SQCSim2021/connector.h new file mode 100644 index 0000000..d2aee73 --- /dev/null +++ b/SQCSim2021/connector.h @@ -0,0 +1,46 @@ +#ifndef CONNECTOR_H__ +#define CONNECTOR_H__ + +#include "define.h" +#include "vector3.h" + +struct Input { // vers serveur + Timestamp timestamp; + UINT8 keys; // 0bFBLRJS__ + Vector3f direction; +}; + +struct Output { // autres joueurs du serveur + Timestamp timestamp; + UINT64 id = 0; + Vector3f position, direction; + bool is_shooting, is_jumping; +}; + +struct Sync { // du serveur + Timestamp timestamp; + UINT64 sid = 0; + Vector3f position; +}; + +class Connector { +public: + Connector(); + ~Connector(); + + int Init(sockaddr_in srv_addr); + int Connect(std::string name); + UINT64 getId() const; + unsigned int getSeed() const; + + //void SendInput(); + //int Sync(); +private: + SOCKET m_sock = 0; + std::string m_name = ""; + UINT64 m_sid = 0, + m_tid = 0; + unsigned int m_seed = 12345; + +}; +#endif diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 660b62e..4e0c96f 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -4,6 +4,7 @@ #include #include #include +#include #ifdef _WIN32 #include @@ -12,6 +13,11 @@ #include #endif +#define NETWORK_TEST false +#define SRV_ADDR "127.0.0.1" +#define SRV_PORT 1025 +#define CLI_PORT 1026 + #define CHUNK_SIZE_X 4 #define CHUNK_SIZE_Y 64 #define CHUNK_SIZE_Z 4 @@ -35,9 +41,35 @@ #define TEXTURE_SIZE 512 #define MAX_BULLETS 512 +#ifdef _WIN32 + +#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject + +#include +#include +#include + +#define popen _popen +#define pclose _pclose + +#else // Pas _WIN32 + +#include +#include +#include +#include +#include +#include + +#define SOCKET int +#define INVALID_SOCKET -1 +#define closesocket close + +#endif // _WIN32 typedef uint8_t BlockType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; +typedef std::chrono::system_clock::time_point Timestamp; #define TEXTURE_PATH "./media/textures/" #define SHADER_PATH "./media/shaders/" diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 1177fd3..79043ae 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1,8 +1,4 @@ #include "engine.h" -#include -#include -#include "transformation.h" -#include "player.h" Engine::Engine() {} @@ -50,6 +46,28 @@ void Engine::Init() { for (int x = 0; x < MAX_BULLETS; ++x) m_bullets[x] = nullptr; + uint64_t seed = 12345; + std::string playname = "John Test"; + const char srvaddr[] = "127.0.0.1"; + if (NETWORK_TEST) { // Test connexion réseau. + sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(SRV_PORT); + addr.sin_addr.s_addr = inet_addr(srvaddr); + + if (!m_conn->Init(addr)) { + if (m_conn->Connect(playname)) { + // setup jeu en réseau. + seed = m_conn->getSeed(); + std::cout << "ID reçu du serveur: " << std::to_string(m_conn->getId()) << "!" << std::endl; + } + else std::cout << "Erreur de connexion." << std::endl; + } + else std::cout << "Erreur de création de socket." << std::endl; + } + + m_world.SetSeed(seed); + // Init Chunks m_world.GetChunks().Reset(nullptr); diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index e96a931..947df54 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -1,6 +1,8 @@ #ifndef ENGINE_H__ #define ENGINE_H__ +#include +#include #include "define.h" #include "openglcontext.h" #include "texture.h" @@ -15,6 +17,7 @@ #include "array2d.h" #include "world.h" #include "bullet.h" +#include "connector.h" class Engine : public OpenglContext { public: @@ -45,6 +48,7 @@ private: void DrawHud(float elapsedTime, BlockType bloc); void PrintText(float x, float y, float scale, const std::string& t); + Connector* m_conn = nullptr; Shader m_shader01; BlockInfo* m_blockinfo[BTYPE_LAST]; TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); diff --git a/SQCSim2021/world.cpp b/SQCSim2021/world.cpp index bbd86c0..dc5e5b6 100644 --- a/SQCSim2021/world.cpp +++ b/SQCSim2021/world.cpp @@ -6,6 +6,10 @@ World::~World() {} Array2d& World::GetChunks() { return m_chunks; } +void World::SetSeed(uint64_t seed) { + m_seed = seed; +} + Chunk* World::ChunkAt(float x, float y, float z) const { int cx = (int)x / CHUNK_SIZE_X; int cz = (int)z / CHUNK_SIZE_Z; @@ -330,7 +334,12 @@ void World::UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]) { chy = cy + ty * CHUNK_SIZE_Z; if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, [](unsigned int x, unsigned int y) { return new Chunk(x, y); }, chx / CHUNK_SIZE_X + m_center[0], chy / CHUNK_SIZE_Z + m_center[1]); + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; } for (; ty <= side; ++ty) { @@ -340,7 +349,12 @@ void World::UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]) { chy = cy + ty * CHUNK_SIZE_Z; if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, [](unsigned int x, unsigned int y) { return new Chunk(x, y); }, chx / CHUNK_SIZE_X + m_center[0], chy / CHUNK_SIZE_Z + m_center[1]); + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; } for (; tx >= -side; --tx) { @@ -350,7 +364,12 @@ void World::UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]) { chy = cy + ty * CHUNK_SIZE_Z; if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, [](unsigned int x, unsigned int y) { return new Chunk(x, y); }, chx / CHUNK_SIZE_X + m_center[0], chy / CHUNK_SIZE_Z + m_center[1]); + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; } for (; ty >= -side; --ty) { @@ -360,7 +379,12 @@ void World::UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]) { chy = cy + ty * CHUNK_SIZE_Z; if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, [](unsigned int x, unsigned int y) { return new Chunk(x, y); }, chx / CHUNK_SIZE_X + m_center[0], chy / CHUNK_SIZE_Z + m_center[1]); + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; } if (frameGenerate) diff --git a/SQCSim2021/world.h b/SQCSim2021/world.h index d4b1545..55140e3 100644 --- a/SQCSim2021/world.h +++ b/SQCSim2021/world.h @@ -26,6 +26,8 @@ public: Array2d& GetChunks(); + void SetSeed(uint64_t seed); + Chunk* ChunkAt(float x, float y, float z) const; Chunk* ChunkAt(const Vector3f& pos) const; @@ -43,6 +45,7 @@ public: private: Array2d m_chunks = Array2d(WORLD_SIZE_X, WORLD_SIZE_Y); std::vector m_tbDeleted; + uint64_t m_seed = 0; unsigned int m_center[2] = { UINT16_MAX / 2 - WORLD_SIZE_X, UINT16_MAX / 2 - WORLD_SIZE_Y }; From 035436c63944e66c0f511d0eea9422204559556d Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 25 Sep 2023 08:53:23 -0400 Subject: [PATCH 05/19] ajout errlog --- SQCSim-common/netprotocol.h | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 3609de9..a1beb1c 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -11,7 +11,7 @@ namespace netprot { ERR, INPUT, OUTPUT, SYNC, TEAMINF, SELFINF, PLAYINF, CHUNKMOD, PLAYERMOD, PICKUPMOD, - GAMEINFO, ENDINFO , CHAT + GAMEINFO, ENDINFO , CHAT, ERRLOG }; typedef struct { // cli -> srv UDP ~frame @@ -31,10 +31,10 @@ namespace netprot { typedef struct { // srv -> cli TCP ~second Timestamp timestamp; - uint64_t sid = 0, - timer = 0; - uint8_t hp = 0; + uint64_t sid = 0; + uint32_t timer = 0; uint16_t ammo = 0; + uint8_t hp = 0; Vector3f position; } Sync; @@ -54,11 +54,11 @@ namespace netprot { uint64_t id = 0, tid = 0; } PlayerInfo; - - typedef struct { + + typedef struct { // cli <-> srv TCP event (before game start)/ once uint64_t seed; - // uint8_t gameType; - // uint8_t time; + uint32_t countdown; + uint8_t gameType; // TOOD: enum. } GameInfo; typedef struct { // cli <-> srv TCP event @@ -68,21 +68,30 @@ namespace netprot { char mess[140]; // Good 'nough for twitr, good 'nough for me. } Chat; + typedef struct { // srv -> cli TCP event + char mess[140]; + bool is_fatal; + } ErrorLog; + inline void Serialize(Input* in, char* buf, uint32_t* buflen); // cli inline void Serialize(Output* out, char* buf, uint32_t* buflen); // srv inline void Serialize(Sync* sync, char* buf, uint32_t* buflen); // srv inline void Serialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv inline void Serialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv inline void Serialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen); // srv + inline void Serialize(GameInfo* ginfo, char* buf, uint32_t* buflen); // cli/srv inline void Serialize(Chat* chat, char* buf, uint32_t* buflen); // cli/srv + inline void Serialize(ErrorLog* errlog, char* buf, uint32_t* buflen); // srv inline void Deserialize(Input* in, char* buf, uint32_t* buflen); // srv inline void Deserialize(Output* out, char* buf, uint32_t* buflen); // cli inline void Deserialize(Sync* sync, char* buf, uint32_t* buflen); // cli inline void Deserialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv inline void Deserialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv - inline void Deserialize(PlayerInfo* spinfoync, char* buf, uint32_t* buflen); // cli + inline void Deserialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen); // cli + inline void Deserialize(GameInfo* ginfo, char* buf, uint32_t* buflen); // cli inline void Deserialize(Chat* chat, char* buf, uint32_t* buflen); // srv/cli + inline void Deserialize(ErrorLog* errlog, char* buf, uint32_t* buflen); // srv inline PacketType getType(char* buf, uint32_t* buflen); // srv/cli } From 4c2e8a12add2eca6bea79c2ae0d80d6ff371da45 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 25 Sep 2023 16:30:03 -0400 Subject: [PATCH 06/19] serialization --- SQCSim-common/SQCSim-common.vcxproj | 1 + SQCSim-common/SQCSim-common.vcxproj.filters | 3 + SQCSim-common/define.h | 2 +- SQCSim-common/netprotocol.cpp | 139 ++++++++++++++++++++ SQCSim-common/netprotocol.h | 97 +++++++------- SQCSim-srv/connection.cpp | 10 +- SQCSim-srv/connection.h | 12 +- SQCSim-srv/main.cpp | 1 - SQCSim-srv/server.cpp | 32 ++++- SQCSim-srv/server.h | 1 + 10 files changed, 239 insertions(+), 59 deletions(-) create mode 100644 SQCSim-common/netprotocol.cpp diff --git a/SQCSim-common/SQCSim-common.vcxproj b/SQCSim-common/SQCSim-common.vcxproj index 5f61a2a..15265fb 100644 --- a/SQCSim-common/SQCSim-common.vcxproj +++ b/SQCSim-common/SQCSim-common.vcxproj @@ -145,6 +145,7 @@ + diff --git a/SQCSim-common/SQCSim-common.vcxproj.filters b/SQCSim-common/SQCSim-common.vcxproj.filters index a6555fb..a98dd18 100644 --- a/SQCSim-common/SQCSim-common.vcxproj.filters +++ b/SQCSim-common/SQCSim-common.vcxproj.filters @@ -71,5 +71,8 @@ Fichiers sources + + Fichiers sources + \ No newline at end of file diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 78284f5..45a7cbb 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -22,7 +22,7 @@ typedef uint8_t BlockType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; -typedef std::chrono::system_clock::time_point Timestamp; +typedef uint64_t Timestamp; #ifdef _WIN32 diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp new file mode 100644 index 0000000..5f8aef1 --- /dev/null +++ b/SQCSim-common/netprotocol.cpp @@ -0,0 +1,139 @@ +#include "netprotocol.h" + +void netprot::Serialize(Input* in, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(Output* out, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::LOGINF; + void* nom = &linfo->name; + char* buff = *buf + 1; + + size_t namesize = 1; + + for (int x = 0; x < sizeof(linfo->name); ++x) + if (linfo->name[x] != (char)'\0') + ++namesize; + else break; + + memcpy(buff, nom, sizeof(linfo->name)); + uint64_t sid = linfo->sid; + char diff[sizeof(uint64_t)] = { (sid >> 56) & 0xFF, + (sid >> 48) & 0xFF, + (sid >> 40) & 0xFF, + (sid >> 32) & 0xFF, + (sid >> 24) & 0xFF, + (sid >> 16) & 0xFF, + (sid >> 8) & 0xFF, + sid & 0xFF }; + + void* ptrsid = *buf + namesize; + memcpy(ptrsid, &diff, sizeof(uint64_t)); + + *buflen = sizeof(LoginInfo) + 1; +} + +void netprot::Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { + +} + +void netprot::Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen) { + +} + + + +bool netprot::Deserialize(Input* in, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(Output* out, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(Sync* sync, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { + if (buflen < sizeof(sizeof(LoginInfo)) + 1) + return false; + + size_t namesize = 0; + + for (int x = 0; x < sizeof(linfo->name); ++x) + if (buf[x] != (char)'\0') + ++namesize; + else break; + + memcpy((void*)&linfo->name, (void*)&buf[1], namesize); + + uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(&diff, &buf[namesize], sizeof(uint64_t)); + linfo->sid = (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + return true; +} + +bool netprot::Deserialize(SelfInfo* sinfo, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(Chat* chat, char* buf, const uint32_t buflen) { + return false; +} + +bool netprot::Deserialize(ErrorLog* errlog, char* buf, const uint32_t buflen) { + return false; +} + +netprot::PacketType netprot::getType(char* buf, const uint32_t buflen) { + if (buflen < 1 || + buf[0] >= netprot::PACKET_TYPE::LAST_PACK || + buf[0] <= netprot::PACKET_TYPE::ERR) + return netprot::PACKET_TYPE::ERR; + return buf[0]; +} diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index a1beb1c..421c960 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -1,98 +1,107 @@ #ifndef NETPROTOCOL_H__ #define NETPROTOCOL_H__ #include "define.h" +#include #include "vector3.h" /* Protocole Particulier de Partie à Plusieurs Personnes (PPPPP) */ +// Packet: packet[0] = PacketType, packet[1..n-1] = {packet} + namespace netprot { typedef uint8_t PacketType; enum PACKET_TYPE { ERR, INPUT, OUTPUT, SYNC, - TEAMINF, SELFINF, PLAYINF, + TEAMINF, SELFINF, PLAYINF, LOGINF, CHUNKMOD, PLAYERMOD, PICKUPMOD, - GAMEINFO, ENDINFO , CHAT, ERRLOG + GAMEINFO, ENDINFO , CHAT, ERRLOG, + LAST_PACK }; - typedef struct { // cli -> srv UDP ~frame + struct Input { // cli -> srv UDP ~frame Timestamp timestamp; - uint8_t keys; // 0bFBLRJS__ + uint8_t keys; // 0bFBLRJS__ bit-packing de bool. Vector3f direction; - } Input; + }; - typedef struct { // srv -> cli UDP ~frame + struct Output { // srv -> cli UDP ~frame Timestamp timestamp; uint64_t id = 0; Vector3f position, - direction; - bool is_shooting, - is_jumping; - } Output; + direction; + uint8_t states; // 0bJSH_____ bit-packing de bool. + }; - typedef struct { // srv -> cli TCP ~second + struct Sync { // srv -> cli TCP ~second Timestamp timestamp; uint64_t sid = 0; uint32_t timer = 0; uint16_t ammo = 0; uint8_t hp = 0; Vector3f position; - } Sync; + }; - typedef struct { // cli <-> srv TCP once + struct TeamInfo { // cli <-> srv TCP once char name[32]; uint64_t id = 0; - } TeamInfo; + }; - typedef struct { // cli <-> srv TCP once + struct LoginInfo { // cli <-> srv TCP once char name[32]; + uint64_t sid = 0; + }; + + struct SelfInfo { // cli <-> srv TCP once uint64_t sid = 0, tid = 0; - } SelfInfo; + }; - typedef struct { // cli <-> srv TCP once + struct PlayerInfo { // cli <-> srv TCP once char name[32]; uint64_t id = 0, tid = 0; - } PlayerInfo; - - typedef struct { // cli <-> srv TCP event (before game start)/ once + }; + + struct GameInfo { // cli <-> srv TCP event (before game start)/ once uint64_t seed; uint32_t countdown; uint8_t gameType; // TOOD: enum. - } GameInfo; + }; - typedef struct { // cli <-> srv TCP event + struct Chat { // cli <-> srv TCP event uint64_t src_id = 0, dest_id = 0, dest_team_id = 0; char mess[140]; // Good 'nough for twitr, good 'nough for me. - } Chat; + }; - typedef struct { // srv -> cli TCP event + struct ErrorLog { // srv -> cli TCP event char mess[140]; bool is_fatal; - } ErrorLog; + }; - inline void Serialize(Input* in, char* buf, uint32_t* buflen); // cli - inline void Serialize(Output* out, char* buf, uint32_t* buflen); // srv - inline void Serialize(Sync* sync, char* buf, uint32_t* buflen); // srv - inline void Serialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv - inline void Serialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv - inline void Serialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen); // srv - inline void Serialize(GameInfo* ginfo, char* buf, uint32_t* buflen); // cli/srv - inline void Serialize(Chat* chat, char* buf, uint32_t* buflen); // cli/srv - inline void Serialize(ErrorLog* errlog, char* buf, uint32_t* buflen); // srv + void Serialize(Input* in, char* buf[], uint32_t* buflen); // cli + void Serialize(Output* out, char* buf[], uint32_t* buflen); // srv + void Serialize(Sync* sync, char* buf[], uint32_t* buflen); // srv + void Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen); // cli/srv + void Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen); // cli/srv + void Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen); // cli/srv + void Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen); // srv + void Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen); // cli/srv + void Serialize(Chat* chat, char* buf[], uint32_t* buflen); // cli/srv + void Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen); // srv - inline void Deserialize(Input* in, char* buf, uint32_t* buflen); // srv - inline void Deserialize(Output* out, char* buf, uint32_t* buflen); // cli - inline void Deserialize(Sync* sync, char* buf, uint32_t* buflen); // cli - inline void Deserialize(TeamInfo* tinfo, char* buf, uint32_t* buflen); // cli/srv - inline void Deserialize(SelfInfo* sinfo, char* buf, uint32_t* buflen); // cli/srv - inline void Deserialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen); // cli - inline void Deserialize(GameInfo* ginfo, char* buf, uint32_t* buflen); // cli - inline void Deserialize(Chat* chat, char* buf, uint32_t* buflen); // srv/cli - inline void Deserialize(ErrorLog* errlog, char* buf, uint32_t* buflen); // srv + bool Deserialize(Input* in, char* buf, const uint32_t buflen); // srv + bool Deserialize(Output* out, char* buf, const uint32_t buflen); // cli + bool Deserialize(Sync* sync, char* buf, const uint32_t buflen); // cli + bool Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen); // cli/srv + bool Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen); // cli/srv + bool Deserialize(SelfInfo* sinfo, char* buf, const uint32_t buflen); // cli/srv + bool Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen); // cli + bool Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen); // cli + bool Deserialize(Chat* chat, char* buf, const uint32_t buflen); // srv/cli + bool Deserialize(ErrorLog* errlog, char* buf, const uint32_t buflen); // srv - inline PacketType getType(char* buf, uint32_t* buflen); // srv/cli + PacketType getType(char* buf, uint32_t buflen); // srv/cli } #endif diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 0e8d252..d6d25bf 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -25,19 +25,19 @@ uint64_t Connection::GetTeamHash() const { return m_tid; } std::string Connection::GetName() const { return m_name; } -void Connection::AddInput(Input in) { - m_input_manifest.insert({in.timestamp, in}); +void Connection::AddInput(netprot::Input in) { + m_input_manifest.insert({ in.timestamp, in }); } -Output* Connection::getOutput(Timestamp time) { +netprot::Output* Connection::getOutput(Timestamp time) { auto out = m_output_manifest.find(time); if (out != m_output_manifest.end()) return &out->second; return nullptr; } -Sync Connection::getSync(Timestamp time) { - Sync sync; +netprot::Sync Connection::getSync(Timestamp time) { + netprot::Sync sync; auto out = m_output_manifest.find(time); if (out != m_output_manifest.end()) { sync.timestamp = out->second.timestamp; diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 6db8b06..3ccc285 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -4,7 +4,7 @@ #include #include "../SQCSim-common/player.h" #include "../SQCSim-common/vector3.h" -#include "../SQCSim-common/serialization.h" +#include "../SQCSim-common/netprotocol.h" #include "define.h" class Connection { @@ -24,14 +24,14 @@ public: uint64_t GetTeamHash() const; std::string GetName() const; - void AddInput(Input in); - Output* getOutput(Timestamp time); - Sync getSync(Timestamp time); + void AddInput(netprot::Input in); + netprot::Output* getOutput(Timestamp time); + netprot::Sync getSync(Timestamp time); void CleanInputManifest(Timestamp time); private: - std::map m_input_manifest; - std::map m_output_manifest; + std::map m_input_manifest; + std::map m_output_manifest; in_addr m_addr; uint64_t m_id, m_sid, diff --git a/SQCSim-srv/main.cpp b/SQCSim-srv/main.cpp index d67d836..a1e104d 100644 --- a/SQCSim-srv/main.cpp +++ b/SQCSim-srv/main.cpp @@ -1,4 +1,3 @@ -#include "define.h" #include "server.h" int main() { diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index e2740ba..5d391c8 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -79,14 +79,16 @@ int Server::Ready() { Log("À l'écoute sur le port: " + std::to_string(SRV_PORT), false, false); while (!readystart) { - - Log("trololo", false, false); + + // Listen/accept ici. + readystart = true; } return 0; } void Server::Run() { + Log("Partie en cours...", false, false); } @@ -131,6 +133,32 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) } } +// Test serialize/deserialize: +/* + netprot::LoginInfo* log = new netprot::LoginInfo(); + char nom[] = "Jean Dujardin"; + memcpy(log->name, &nom, sizeof(nom)); + log->sid = 12345; + char* buf = new char[150]; + uint32_t buflen = 150; + + netprot::Serialize(log, &buf, &buflen); + + delete log; + log = new netprot::LoginInfo(); + + bool is_work = netprot::Deserialize(log, buf, buflen); + + std::string str; + + str.append(is_work ? "Y " : "N ").append(log->name).append(": ").append(std::to_string(log->sid)); + + Log(str, false, false); +*/ + + + + ///* Recevoir paquet */ //while (true) { // char buffer[2048]; diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 2cb0618..298fc0f 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -7,6 +7,7 @@ #include "../SQCSim-common/world.h" #include "define.h" #include "connection.h" +#include "../SQCSim-common/netprotocol.h" class Server { public: From 8bc74624c362dac07632eb2ec88a3aabe37e1461 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 25 Sep 2023 17:17:17 -0400 Subject: [PATCH 07/19] =?UTF-8?q?Socket=20c=C3=B4t=C3=A9=20client!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/define.h | 1 + SQCSim2021/SQCSim2021.vcxproj | 6 +- SQCSim2021/SQCSim2021.vcxproj.filters | 3 - SQCSim2021/audio.h | 2 +- SQCSim2021/connector.cpp | 49 +++++- SQCSim2021/connector.h | 31 +--- SQCSim2021/define.h | 58 ++----- SQCSim2021/engine.cpp | 8 +- SQCSim2021/engine.h | 2 +- SQCSim2021/matrix4.h | 2 +- SQCSim2021/player.h | 2 +- SQCSim2021/transformation.h | 2 +- SQCSim2021/vector3.h | 219 -------------------------- SQCSim2021/world.h | 2 +- 14 files changed, 74 insertions(+), 313 deletions(-) delete mode 100644 SQCSim2021/vector3.h diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 45a7cbb..bafb39e 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -12,6 +12,7 @@ #define CHUNK_SIZE_Z 4 #define MAX_SELECTION_DISTANCE 5 #define SEED 12345 +#define COUNTDOWN 300 #define WORLD_SIZE_X 64 #define WORLD_SIZE_Y 64 diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index ab87f31..9cac270 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -38,7 +38,6 @@ - @@ -62,6 +61,11 @@ + + + {ee91ab12-4225-4a4d-931d-69d72f6d91fb} + + {A21FD938-1FEA-4687-AB86-0EABAC30877B} Win32Proj diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index 8d96ac0..60aa0a8 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -38,9 +38,6 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - Fichiers d%27en-tête diff --git a/SQCSim2021/audio.h b/SQCSim2021/audio.h index 9e8e3be..315bfae 100644 --- a/SQCSim2021/audio.h +++ b/SQCSim2021/audio.h @@ -4,7 +4,7 @@ #include #include #include "define.h" -#include "vector3.h" +#include "../SQCSim-common/vector3.h" class Audio { private: diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index 0bdaa56..4ccc9a0 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -1,18 +1,51 @@ #include "connector.h" -Connector::Connector() -{ -} +Connector::Connector() {} -Connector::~Connector() -{ -} +Connector::~Connector() {} + +int Connector::Init() { +#ifdef _WIN32 + if (WSAStartup(MAKEWORD(2, 2), &m_wsaData) != 0) { /* Initialisation de l'environnement reseau (Windows only) */ + std::cout << "Initialisation WinSock." << std::endl; + return 1; + } +#endif + + m_sock_udp = socket(AF_INET, SOCK_DGRAM, 0); + if (m_sock_udp == INVALID_SOCKET) { /* Creation du socket UDP */ + std::cout << "Creation Socket UDP." << std::endl; + return 2; + } + + m_sock_tcp = socket(AF_INET, SOCK_STREAM, 0); + if (m_sock_tcp == INVALID_SOCKET) { /* Creation du socket TCP */ + std::cout << "Creation Socket TCP." << std::endl; + return 3; + } + + /* Creation structure donnes descripteur du socket serveur */ + sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(SRV_PORT); + addr.sin_addr.s_addr = htonl(INADDR_ANY); + + if (bind(m_sock_udp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket UDP au port */ + std::cout << "Association Socket UDP." << std::endl; + return 4; + } + + if (bind(m_sock_tcp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket TCP au port */ + std::cout << "Association Socket TCP." << std::endl; + return 5; + } + + std::cout << "It is the voork!" << std::endl; -int Connector::Init(sockaddr_in srv_addr) { return 0; } -int Connector::Connect(std::string name) { +int Connector::Connect(sockaddr_in srv_addr, std::string name) { return 0; } diff --git a/SQCSim2021/connector.h b/SQCSim2021/connector.h index d2aee73..b9653ad 100644 --- a/SQCSim2021/connector.h +++ b/SQCSim2021/connector.h @@ -2,41 +2,26 @@ #define CONNECTOR_H__ #include "define.h" -#include "vector3.h" - -struct Input { // vers serveur - Timestamp timestamp; - UINT8 keys; // 0bFBLRJS__ - Vector3f direction; -}; - -struct Output { // autres joueurs du serveur - Timestamp timestamp; - UINT64 id = 0; - Vector3f position, direction; - bool is_shooting, is_jumping; -}; - -struct Sync { // du serveur - Timestamp timestamp; - UINT64 sid = 0; - Vector3f position; -}; +#include "../SQCSim-common/netprotocol.h" class Connector { public: Connector(); ~Connector(); - int Init(sockaddr_in srv_addr); - int Connect(std::string name); + int Init(); + int Connect(sockaddr_in srv_addr, std::string name); UINT64 getId() const; unsigned int getSeed() const; //void SendInput(); //int Sync(); private: - SOCKET m_sock = 0; +#ifdef _WIN32 + WSADATA m_wsaData; +#endif + SOCKET m_sock_udp = 0, + m_sock_tcp = 0; std::string m_name = ""; UINT64 m_sid = 0, m_tid = 0; diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index c26b096..533d6dc 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -1,11 +1,12 @@ -#ifndef DEFINE_H__ -#define DEFINE_H__ +#ifndef CLI_DEFINE_H__ +#define CLI_DEFINE_H__ #include #include #include #include #include +#include "../SQCSim-common/define.h" #ifdef _WIN32 #include @@ -14,21 +15,11 @@ #include #endif -#define NETWORK_TEST false + + +#define NETWORK_TEST true #define SRV_ADDR "127.0.0.1" -#define SRV_PORT 1025 -#define CLI_PORT 1026 - -#define CHUNK_SIZE_X 4 -#define CHUNK_SIZE_Y 64 -#define CHUNK_SIZE_Z 4 -#define MAX_SELECTION_DISTANCE 5 -#define BASE_WIDTH 640 -#define BASE_HEIGHT 480 -#define SEED 12345 - -#define WORLD_SIZE_X 64 -#define WORLD_SIZE_Y 64 +#define COUNTDOWN 300 #define FRAMES_RENDER_CHUNKS 1 #define FRAMES_UPDATE_CHUNKS 1 @@ -38,39 +29,8 @@ #define THREADS_UPDATE_CHUNKS 3 #define THREADS_DELETE_CHUNKS 3 -#define VIEW_DISTANCE 512 -#define TEXTURE_SIZE 512 -#define MAX_BULLETS 512 - -#ifdef _WIN32 - -#pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject - -#include -#include -#include - -#define popen _popen -#define pclose _pclose - -#else // Pas _WIN32 - -#include -#include -#include -#include -#include -#include - -#define SOCKET int -#define INVALID_SOCKET -1 -#define closesocket close - -#endif // _WIN32 - -typedef uint8_t BlockType; -enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; -typedef std::chrono::system_clock::time_point Timestamp; +#define BASE_WIDTH 640 +#define BASE_HEIGHT 480 #define TEXTURE_PATH "./media/textures/" #define SHADER_PATH "./media/shaders/" diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 3173dc0..bd618ae 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -55,11 +55,11 @@ void Engine::Init() { addr.sin_port = htons(SRV_PORT); addr.sin_addr.s_addr = inet_addr(srvaddr); - if (!m_conn->Init(addr)) { - if (m_conn->Connect(playname)) { + if (!m_conn.Init()) { + if (m_conn.Connect(addr, playname)) { // setup jeu en réseau. - seed = m_conn->getSeed(); - std::cout << "ID reçu du serveur: " << std::to_string(m_conn->getId()) << "!" << std::endl; + seed = m_conn.getSeed(); + std::cout << "ID reçu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; } else std::cout << "Erreur de connexion." << std::endl; } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index faae19d..5ce52ec 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -49,7 +49,7 @@ private: void DrawHud(float elapsedTime, BlockType bloc); void PrintText(float x, float y, float scale, const std::string& t); - Connector* m_conn = nullptr; + Connector m_conn; Shader m_shader01; BlockInfo* m_blockinfo[BTYPE_LAST]; TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); diff --git a/SQCSim2021/matrix4.h b/SQCSim2021/matrix4.h index a0d911a..bf5ac5b 100644 --- a/SQCSim2021/matrix4.h +++ b/SQCSim2021/matrix4.h @@ -6,7 +6,7 @@ #include #include "define.h" -#include "vector3.h" +#include "../SQCSim-common/vector3.h" #ifndef M_PI #define M_PI 3.14159265f diff --git a/SQCSim2021/player.h b/SQCSim2021/player.h index 3466d1a..239b550 100644 --- a/SQCSim2021/player.h +++ b/SQCSim2021/player.h @@ -1,6 +1,6 @@ #ifndef _PLAYER_H__ #define _PLAYER_H__ -#include "vector3.h" +#include "../SQCSim-common/vector3.h" #include "transformation.h" #include "audio.h" #include diff --git a/SQCSim2021/transformation.h b/SQCSim2021/transformation.h index d147a58..764a781 100644 --- a/SQCSim2021/transformation.h +++ b/SQCSim2021/transformation.h @@ -2,7 +2,7 @@ #define TRANSFORMATION_H__ #include "matrix4.h" -#include "vector3.h" +#include "../SQCSim-common/vector3.h" #include class Transformation diff --git a/SQCSim2021/vector3.h b/SQCSim2021/vector3.h deleted file mode 100644 index b191681..0000000 --- a/SQCSim2021/vector3.h +++ /dev/null @@ -1,219 +0,0 @@ -#ifndef VECTOR3_H__ -#define VECTOR3_H__ - -#include -#include - -template -class Vector3 -{ -public: - Vector3(); - Vector3(const T& x, const T& y, const T& z); - ~Vector3(); - - T Length() const; - void Normalize(); - void Zero(); - - T Dot(const Vector3& v) const; - Vector3 Cross(const Vector3& v) const; - - Vector3 operator+(const Vector3& v) const; - Vector3 operator-(const Vector3& v) const; - Vector3 operator-() const; - Vector3 operator+(const T& v) const; - Vector3 operator-(const T& v) const; - Vector3 operator/(const T& v) const; - Vector3 operator*(const T& v) const; - - Vector3& operator=(const Vector3& v); - - Vector3& operator+=(const Vector3& v); - Vector3& operator-=(const Vector3& v); - Vector3& operator+=(const T& v); - Vector3& operator-=(const T& v); - Vector3& operator/=(const T& v); - Vector3& operator*=(const T& v); - - bool operator==(const Vector3& v) const; - bool operator!=(const Vector3& v) const; - - void Afficher() const; - -public: - T x, y, z; -}; - -typedef Vector3 Vector3i; -typedef Vector3 Vector3f; - -template -inline std::ostream& operator<<(std::ostream& out, const Vector3& v) -{ - out << "[" << v.x << ", " << v.y << ", " << v.z << "]"; - return out; -} - - -template -Vector3::Vector3() -{ -} - -template -Vector3::Vector3(const T& x, const T& y, const T& z) : x(x), y(y), z(z) -{ -} - -template -Vector3::~Vector3() -{ -} - -template -T Vector3::Length() const -{ - return sqrt(x*x + y*y + z*z); -} - -template -void Vector3::Normalize() -{ - T len = Length(); - if (len != 0) - { - x /= len; - y /= len; - z /= len; - } -} - -template -void Vector3::Zero() -{ - x = y = z = 0; -} - -template -T Vector3::Dot(const Vector3& v) const -{ - return (x * v.x) + (y * v.y) + (z * v.z); -} - -template -Vector3 Vector3::Cross(const Vector3& v) const -{ - return Vector3( - y * v.z - v.y * z, - z * v.x - v.z * x, - x * v.y - v.x * y); -} - -template -Vector3 Vector3::operator+(const Vector3& v) const -{ - return Vector3(x + v.x, y + v.y, z + v.z); -} - -template -Vector3 Vector3::operator-(const Vector3& v) const -{ - return Vector3(x - v.x, y - v.y, z - v.z); -} - -template -Vector3 Vector3::operator-() const -{ - return Vector3(-x, -y, -z); -} - -template -Vector3 Vector3::operator+(const T& v) const -{ - return Vector3(x + v, y + v, z + v); -} - -template -Vector3 Vector3::operator-(const T& v) const -{ - return Vector3(x - v, y - v, z - v); -} - -template -Vector3 Vector3::operator/(const T& v) const -{ - return Vector3(x / v, y / v, z / v); -} - -template -Vector3 Vector3::operator*(const T& v) const -{ - return Vector3(x * v, y * v, z * v); -} - -template -Vector3& Vector3::operator=(const Vector3& v) -{ - x = v.x; - y = v.y; - z = v.z; - return *this; -} - -template -Vector3& Vector3::operator+=(const Vector3& v) -{ - return (*this = *this + v); -} - -template -Vector3& Vector3::operator-=(const Vector3& v) -{ - return (*this = *this - v); -} - -template -Vector3& Vector3::operator+=(const T& v) -{ - return (*this = *this + v); -} - -template -Vector3& Vector3::operator-=(const T& v) -{ - return (*this = *this - v); -} - -template -Vector3& Vector3::operator/=(const T& v) -{ - return (*this = *this / v); -} - -template -Vector3& Vector3::operator*=(const T& v) -{ - return (*this = *this * v); -} - -template -bool Vector3::operator==(const Vector3& v) const -{ - return (x == v.x && y == v.y && z == v.z); -} - -template -bool Vector3::operator!=(const Vector3& v) const -{ - return !(*this == v); -} - -template -void Vector3::Afficher() const -{ - std::cout << "[" << x << ", " << y << ", " << z << "]" << std::endl; -} - - -#endif // VECTOR3_H__ diff --git a/SQCSim2021/world.h b/SQCSim2021/world.h index 55140e3..486e2d2 100644 --- a/SQCSim2021/world.h +++ b/SQCSim2021/world.h @@ -8,7 +8,7 @@ #include "define.h" #include "chunk.h" #include "array2d.h" -#include "vector3.h" +#include "../SQCSim-common/vector3.h" #include "player.h" #include "transformation.h" #include "shader.h" From 4dbcb08a11ff3ea39b1e5d73b767a24b1dd7fc90 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 27 Sep 2023 11:24:41 -0400 Subject: [PATCH 08/19] OH YEAH. --- SQCSim-common/define.h | 3 +- SQCSim-common/netprotocol.cpp | 40 +++++++++++++------------- SQCSim-srv/server.cpp | 53 ++++++++++++++++++++++++----------- SQCSim-srv/server.h | 2 +- SQCSim2021/connector.cpp | 45 +++++++++++++++++++++++++---- SQCSim2021/connector.h | 9 +++--- SQCSim2021/define.h | 9 ++---- SQCSim2021/engine.cpp | 17 ++++------- 8 files changed, 112 insertions(+), 66 deletions(-) diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index bafb39e..968b71d 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -28,7 +28,8 @@ typedef uint64_t Timestamp; #ifdef _WIN32 #pragma comment(lib,"wsock32.lib") // Pour pouvoir faire fonctionner le linker sans le vcxproject - +#pragma comment(lib,"ws2_32.lib") +#include #include #include #include diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 5f8aef1..5e95427 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -18,7 +18,6 @@ void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { *buf[0] = netprot::PACKET_TYPE::LOGINF; - void* nom = &linfo->name; char* buff = *buf + 1; size_t namesize = 1; @@ -27,22 +26,24 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { if (linfo->name[x] != (char)'\0') ++namesize; else break; - - memcpy(buff, nom, sizeof(linfo->name)); + + memcpy(*buf + 1, &linfo->name, namesize); uint64_t sid = linfo->sid; - char diff[sizeof(uint64_t)] = { (sid >> 56) & 0xFF, + uint8_t diff[sizeof(uint64_t)] = { + (sid >> 56) & 0xFF, (sid >> 48) & 0xFF, (sid >> 40) & 0xFF, (sid >> 32) & 0xFF, (sid >> 24) & 0xFF, (sid >> 16) & 0xFF, (sid >> 8) & 0xFF, - sid & 0xFF }; + sid & 0xFF + }; - void* ptrsid = *buf + namesize; - memcpy(ptrsid, &diff, sizeof(uint64_t)); + char* ptrsid = *buf + namesize + 2; + memcpy(ptrsid, diff, sizeof(uint64_t)); - *buflen = sizeof(LoginInfo) + 1; + *buflen = namesize + sizeof(uint64_t) + 2; } void netprot::Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen) { @@ -84,10 +85,10 @@ bool netprot::Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen) { } bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { - if (buflen < sizeof(sizeof(LoginInfo)) + 1) + if (buflen < sizeof(LoginInfo) + 3) return false; - size_t namesize = 0; + size_t namesize = 1; for (int x = 0; x < sizeof(linfo->name); ++x) if (buf[x] != (char)'\0') @@ -97,15 +98,16 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { memcpy((void*)&linfo->name, (void*)&buf[1], namesize); uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; - memcpy(&diff, &buf[namesize], sizeof(uint64_t)); - linfo->sid = (uint64_t)diff[0] << 56 | - (uint64_t)diff[1] << 48 | - (uint64_t)diff[2] << 40 | - (uint64_t)diff[3] << 32 | - (uint64_t)diff[4] << 24 | - (uint64_t)diff[5] << 16 | - (uint64_t)diff[6] << 8 | - (uint64_t)diff[7]; + memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); + linfo->sid = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; return true; } diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 5d391c8..7e7171a 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -73,16 +73,41 @@ int Server::Ready() { return 1; } - char buffer[2048]; + char* buf = new char[150]; + uint32_t buflen = 150; bool readystart = false; Log("À l'écoute sur le port: " + std::to_string(SRV_PORT), false, false); while (!readystart) { + sockaddr_in sockad; + int addrlen = sizeof(sockad); + SOCKET sock = accept(m_sock_tcp, (sockaddr*)&sockad, &addrlen); - // Listen/accept ici. + if (sock < 0) + Log("Erreur de connexion", true, false); + else if (sock > 0) { + char* strbuf = new char[150]; + uint32_t strbuflen = 150; + + std::cout << inet_ntop(AF_INET, &sockad.sin_addr, strbuf, strbuflen) << ':' << std::to_string(sockad.sin_port) << std::endl;; + if (recv(sock, buf, buflen, 0) > 0) { + netprot::LoginInfo log; + if (netprot::Deserialize(&log, buf, buflen)) { + std::string str; + log.sid = 8675309; // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIIIIiiIIIIiINE! + + str.append(log.name).append(": ").append(std::to_string(log.sid)); + Log(str, false, false); - readystart = true; + netprot::Serialize(&log, &buf, &buflen); + send(sock, buf, buflen, 0); + + std::cin.getline(nullptr, 1); + readystart = true; + } + } + } } return 0; } @@ -118,7 +143,7 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) break; case LOG_DEST::CONSOLE: default: - std::cout << Timestamp() << (is_fatal? "FATAL ": "") << (is_error ? "ERROR ": "") << str << std::endl; + std::cout << Timestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; break; } @@ -135,30 +160,24 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) // Test serialize/deserialize: /* - netprot::LoginInfo* log = new netprot::LoginInfo(); - char nom[] = "Jean Dujardin"; - memcpy(log->name, &nom, sizeof(nom)); - log->sid = 12345; + netprot::LoginInfo log, log2; + std::cout << "Nom? "; + std::cin.getline(log.name, 32); // NO! STD::CIN >> VARIABLE;! EVEEEEEERRRR!!! + log.sid = 12345; char* buf = new char[150]; uint32_t buflen = 150; - netprot::Serialize(log, &buf, &buflen); + netprot::Serialize(&log, &buf, &buflen); - delete log; - log = new netprot::LoginInfo(); - - bool is_work = netprot::Deserialize(log, buf, buflen); + bool is_work = netprot::Deserialize(&log2, buf, buflen); std::string str; - - str.append(is_work ? "Y " : "N ").append(log->name).append(": ").append(std::to_string(log->sid)); + str.append(is_work ? "Y " : "N ").append(log2.name).append(": ").append(std::to_string(log2.sid)); Log(str, false, false); */ - - ///* Recevoir paquet */ //while (true) { // char buffer[2048]; diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 298fc0f..b79b805 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -5,9 +5,9 @@ #include #include #include "../SQCSim-common/world.h" +#include "../SQCSim-common/netprotocol.h" #include "define.h" #include "connection.h" -#include "../SQCSim-common/netprotocol.h" class Server { public: diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index 4ccc9a0..a2fd522 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -27,7 +27,7 @@ int Connector::Init() { /* Creation structure donnes descripteur du socket serveur */ sockaddr_in addr; addr.sin_family = AF_INET; - addr.sin_port = htons(SRV_PORT); + addr.sin_port = htons(CLI_PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(m_sock_udp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket UDP au port */ @@ -39,16 +39,49 @@ int Connector::Init() { std::cout << "Association Socket TCP." << std::endl; return 5; } - - std::cout << "It is the voork!" << std::endl; - return 0; } -int Connector::Connect(sockaddr_in srv_addr, std::string name) { +int Connector::Connect(char* srv_addr, std::string name) { + sockaddr_in add; + add.sin_family = AF_INET; + add.sin_port = htons(SRV_PORT); + + if (inet_pton(AF_INET, srv_addr, &add.sin_addr) <= 0) { + std::cout << "Addresse serveur invalide." << std::endl; + return 1; + } + + if (connect(m_sock_tcp, (sockaddr*)&add, sizeof(add)) < 0) { + std::cout << "Échec de la connexion." << std::endl; + } + + char* buf = new char[150]; + uint32_t buflen = 150; + netprot::LoginInfo log, retlog; + log.sid = 0; + memcpy(&log.name, name.c_str(), name.size() + 1); + + netprot::Serialize(&log, &buf, &buflen); + + int se = send(m_sock_tcp, buf, buflen, 0); + + delete[] buf; + buf = new char[150] {0}; + buflen = 150; + + while (recv(m_sock_tcp, buf, buflen, 0) < se) {} + + if (!netprot::Deserialize(&retlog, buf, buflen)) { + std::cout << "Packet invalide." << std::endl; + return 2; + } + + m_name = retlog.name; + m_sid = retlog.sid; return 0; } -UINT64 Connector::getId() const { return m_sid; } +uint64_t Connector::getId() const { return m_sid; } unsigned int Connector::getSeed() const { return m_seed; } diff --git a/SQCSim2021/connector.h b/SQCSim2021/connector.h index b9653ad..f3ed6bd 100644 --- a/SQCSim2021/connector.h +++ b/SQCSim2021/connector.h @@ -3,6 +3,7 @@ #include "define.h" #include "../SQCSim-common/netprotocol.h" +#include class Connector { public: @@ -10,8 +11,8 @@ public: ~Connector(); int Init(); - int Connect(sockaddr_in srv_addr, std::string name); - UINT64 getId() const; + int Connect(char* srv_addr, std::string name); + uint64_t getId() const; unsigned int getSeed() const; //void SendInput(); @@ -23,9 +24,9 @@ private: SOCKET m_sock_udp = 0, m_sock_tcp = 0; std::string m_name = ""; - UINT64 m_sid = 0, + uint64_t m_sid = 0, m_tid = 0; - unsigned int m_seed = 12345; + unsigned int m_seed = 0; }; #endif diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 533d6dc..ceeb08c 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -1,23 +1,20 @@ #ifndef CLI_DEFINE_H__ #define CLI_DEFINE_H__ -#include -#include #include #include #include +#include +#include #include "../SQCSim-common/define.h" #ifdef _WIN32 -#include #include #include #include #endif - - -#define NETWORK_TEST true +#define NETWORK_TEST false #define SRV_ADDR "127.0.0.1" #define COUNTDOWN 300 diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index bd618ae..b30818f 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -40,26 +40,20 @@ void Engine::Init() { m_skybox.Init(0.2f); // Objet de musique! - m_audio.ToggleMusicState(); + //m_audio.ToggleMusicState(); // Array pour les balles. for (int x = 0; x < MAX_BULLETS; ++x) m_bullets[x] = nullptr; - uint64_t seed = 12345; - std::string playname = "John Test"; - const char srvaddr[] = "127.0.0.1"; + uint64_t seed = 0; + std::string playname = "La Chienne à Jacques"; if (NETWORK_TEST) { // Test connexion réseau. - sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(SRV_PORT); - addr.sin_addr.s_addr = inet_addr(srvaddr); - if (!m_conn.Init()) { - if (m_conn.Connect(addr, playname)) { + if (!m_conn.Connect(SRV_ADDR, playname)) { // setup jeu en réseau. - seed = m_conn.getSeed(); std::cout << "ID reçu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; + //seed = m_conn.getSeed(); } else std::cout << "Erreur de connexion." << std::endl; } @@ -210,7 +204,6 @@ void Engine::DisplayHud(int timer) { ss << "Time: " << (int)(timer / 60) << ":" << std::setw(2) << std::setfill('0') << timer % 60; PrintText(Width() - Width() * 0.15, Height() - (Height() / 19.2), scale, ss.str()); - } void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { From 7eabee38adeb3d2f7fcf9e536bdd11ed7e2b99b8 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 27 Sep 2023 15:44:56 -0400 Subject: [PATCH 09/19] Cleanup --- SQCSim-common/netprotocol.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 5e95427..fef687c 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -18,14 +18,8 @@ void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { *buf[0] = netprot::PACKET_TYPE::LOGINF; - char* buff = *buf + 1; - size_t namesize = 1; - - for (int x = 0; x < sizeof(linfo->name); ++x) - if (linfo->name[x] != (char)'\0') - ++namesize; - else break; + size_t namesize = std::strlen(linfo->name) + 1; memcpy(*buf + 1, &linfo->name, namesize); uint64_t sid = linfo->sid; @@ -40,8 +34,7 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { sid & 0xFF }; - char* ptrsid = *buf + namesize + 2; - memcpy(ptrsid, diff, sizeof(uint64_t)); + memcpy(*buf + namesize + 2, diff, sizeof(uint64_t)); *buflen = namesize + sizeof(uint64_t) + 2; } @@ -88,14 +81,12 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { if (buflen < sizeof(LoginInfo) + 3) return false; - size_t namesize = 1; + size_t namesize = std::strlen(buf) + 1; - for (int x = 0; x < sizeof(linfo->name); ++x) - if (buf[x] != (char)'\0') - ++namesize; - else break; + if (namesize > 32) + return false; - memcpy((void*)&linfo->name, (void*)&buf[1], namesize); + memcpy(&linfo->name, &buf[1], namesize); uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); From df52d4a084ee54bde25dc9f7ce4e88a518221fb7 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 27 Sep 2023 17:34:25 -0400 Subject: [PATCH 10/19] =?UTF-8?q?Redressage=20des=20classes;=20seed=20est?= =?UTF-8?q?=20re=C3=A7ue=20du=20serveur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/netprotocol.cpp | 118 +++++++++++++++++++++++++++++++--- SQCSim-common/netprotocol.h | 10 +-- SQCSim-srv/connection.cpp | 32 +++++---- SQCSim-srv/connection.h | 21 +++--- SQCSim-srv/server.cpp | 27 ++++++-- SQCSim2021/connector.cpp | 50 ++++++++------ SQCSim2021/connector.h | 14 ++-- SQCSim2021/engine.cpp | 3 +- 8 files changed, 198 insertions(+), 77 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index fef687c..d7f7675 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -23,7 +23,7 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { memcpy(*buf + 1, &linfo->name, namesize); uint64_t sid = linfo->sid; - uint8_t diff[sizeof(uint64_t)] = { + uint8_t sid8[sizeof(uint64_t)] = { (sid >> 56) & 0xFF, (sid >> 48) & 0xFF, (sid >> 40) & 0xFF, @@ -34,13 +34,23 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { sid & 0xFF }; - memcpy(*buf + namesize + 2, diff, sizeof(uint64_t)); + memcpy(*buf + namesize + 2, sid8, sizeof(uint64_t)); - *buflen = namesize + sizeof(uint64_t) + 2; -} + uint64_t tid = linfo->tid; + uint8_t tid8[sizeof(uint64_t)] = { + (tid >> 56) & 0xFF, + (tid >> 48) & 0xFF, + (tid >> 40) & 0xFF, + (tid >> 32) & 0xFF, + (tid >> 24) & 0xFF, + (tid >> 16) & 0xFF, + (tid >> 8) & 0xFF, + tid & 0xFF + }; -void netprot::Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen) { + memcpy(*buf + namesize + 2 + sizeof(uint64_t), tid8, sizeof(uint64_t)); + *buflen = namesize + sizeof(uint64_t) * 2 + 2; } void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) { @@ -48,7 +58,51 @@ void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) { } void netprot::Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::GAMEINFO; + uint64_t game = ginfo->seed; + uint8_t seed8[sizeof(uint64_t)] = { + (game >> 56) & 0xFF, + (game >> 48) & 0xFF, + (game >> 40) & 0xFF, + (game >> 32) & 0xFF, + (game >> 24) & 0xFF, + (game >> 16) & 0xFF, + (game >> 8) & 0xFF, + game & 0xFF + }; + + memcpy(*buf + 1, seed8, sizeof(uint64_t)); + + game = ginfo->countdown; + uint8_t count8[sizeof(uint64_t)] = { + (game >> 56) & 0xFF, + (game >> 48) & 0xFF, + (game >> 40) & 0xFF, + (game >> 32) & 0xFF, + (game >> 24) & 0xFF, + (game >> 16) & 0xFF, + (game >> 8) & 0xFF, + game & 0xFF + }; + + memcpy(*buf + sizeof(uint64_t) + 1, count8, sizeof(uint64_t)); + + game = ginfo->countdown; + uint8_t gtype8[sizeof(uint64_t)] = { + (game >> 56) & 0xFF, + (game >> 48) & 0xFF, + (game >> 40) & 0xFF, + (game >> 32) & 0xFF, + (game >> 24) & 0xFF, + (game >> 16) & 0xFF, + (game >> 8) & 0xFF, + game & 0xFF + }; + + memcpy(*buf + sizeof(uint64_t) + 1, gtype8, sizeof(uint64_t)); + + *buflen = sizeof(uint64_t) * 3 + 1; } void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { @@ -100,11 +154,18 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { (uint64_t)diff[6] << 8 | (uint64_t)diff[7]; - return true; -} + memcpy(diff, &buf[namesize + sizeof(uint64_t) + 1], sizeof(uint64_t)); + linfo->tid = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; -bool netprot::Deserialize(SelfInfo* sinfo, char* buf, const uint32_t buflen) { - return false; + return true; } bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) { @@ -112,7 +173,44 @@ bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) { } bool netprot::Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen) { - return false; + if (buflen < sizeof(GameInfo) + 1) + return false; + + uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(diff, &buf[1], sizeof(uint64_t)); + ginfo->seed = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + memcpy(diff, &buf[sizeof(uint64_t) + 1], sizeof(uint64_t)); + ginfo->countdown = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + memcpy(diff, &buf[sizeof(uint64_t) * 2 + 1], sizeof(uint64_t)); + ginfo->gameType = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + return true; } bool netprot::Deserialize(Chat* chat, char* buf, const uint32_t buflen) { diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 421c960..3e237f7 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -48,12 +48,8 @@ namespace netprot { struct LoginInfo { // cli <-> srv TCP once char name[32]; - uint64_t sid = 0; - }; - - struct SelfInfo { // cli <-> srv TCP once - uint64_t sid = 0, - tid = 0; + uint64_t sid = 0, + tid = 0; }; struct PlayerInfo { // cli <-> srv TCP once @@ -85,7 +81,6 @@ namespace netprot { void Serialize(Sync* sync, char* buf[], uint32_t* buflen); // srv void Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen); // cli/srv void Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen); // cli/srv - void Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen); // cli/srv void Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen); // srv void Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen); // cli/srv void Serialize(Chat* chat, char* buf[], uint32_t* buflen); // cli/srv @@ -96,7 +91,6 @@ namespace netprot { bool Deserialize(Sync* sync, char* buf, const uint32_t buflen); // cli bool Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen); // cli/srv bool Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen); // cli/srv - bool Deserialize(SelfInfo* sinfo, char* buf, const uint32_t buflen); // cli/srv bool Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen); // cli bool Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen); // cli bool Deserialize(Chat* chat, char* buf, const uint32_t buflen); // srv/cli diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index d6d25bf..356396f 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -1,29 +1,27 @@ #include "connection.h" -Connection::Connection(in_addr addr, - std::string name, - uint64_t id, - uint64_t self_id, - uint64_t team_id): - m_addr(addr), - m_id(id), - m_sid(self_id), - m_tid(team_id), - m_name(name) { + + +Connection::Connection(SOCKET sock, + sockaddr_in sockaddr, + netprot::LoginInfo log, + netprot::PlayerInfo play): + m_sock(sock), + m_addr(sockaddr), + m_loginfo(log), + m_playinfo(play) { } Connection::~Connection() { - + closesocket(m_sock); } -in_addr Connection::GetAddr() const { return m_addr; } +uint64_t Connection::GetHash(bool self) const { return self? m_loginfo.sid: m_playinfo.id; } -uint64_t Connection::GetHash(bool self) const { return self? m_sid: m_id; } +uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; } -uint64_t Connection::GetTeamHash() const { return m_tid; } - -std::string Connection::GetName() const { return m_name; } +std::string Connection::GetName() const { return m_loginfo.name; } void Connection::AddInput(netprot::Input in) { m_input_manifest.insert({ in.timestamp, in }); @@ -42,7 +40,7 @@ netprot::Sync Connection::getSync(Timestamp time) { if (out != m_output_manifest.end()) { sync.timestamp = out->second.timestamp; sync.position = out->second.position; - sync.sid = m_sid; + sync.sid = m_loginfo.sid; } return sync; } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 3ccc285..dc1df11 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -10,16 +10,14 @@ class Connection { public: Connection( - in_addr addr, - std::string name, - uint64_t hash, - uint64_t self_hash, - uint64_t team_hash); + SOCKET sock, + sockaddr_in sockaddr, + netprot::LoginInfo log, + netprot::PlayerInfo play); ~Connection(); Player* player = nullptr; - in_addr GetAddr() const; uint64_t GetHash(bool self = true) const; uint64_t GetTeamHash() const; std::string GetName() const; @@ -32,11 +30,12 @@ public: private: std::map m_input_manifest; std::map m_output_manifest; - in_addr m_addr; - uint64_t m_id, - m_sid, - m_tid; - std::string m_name; + std::map m_chatlog; + + SOCKET m_sock; + sockaddr_in m_addr; + netprot::LoginInfo m_loginfo; + netprot::PlayerInfo m_playinfo; }; #endif \ No newline at end of file diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 7e7171a..d283e92 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -76,6 +76,7 @@ int Server::Ready() { char* buf = new char[150]; uint32_t buflen = 150; bool readystart = false; + srand(time(NULL)); Log("À l'écoute sur le port: " + std::to_string(SRV_PORT), false, false); @@ -87,23 +88,35 @@ int Server::Ready() { if (sock < 0) Log("Erreur de connexion", true, false); else if (sock > 0) { + std::string str = "Nouvelle connection provenant de: "; char* strbuf = new char[150]; uint32_t strbuflen = 150; - - std::cout << inet_ntop(AF_INET, &sockad.sin_addr, strbuf, strbuflen) << ':' << std::to_string(sockad.sin_port) << std::endl;; + + str.append(inet_ntop(AF_INET, &sockad.sin_addr, strbuf, strbuflen)).append(": ").append(std::to_string(sockad.sin_port)); + if (recv(sock, buf, buflen, 0) > 0) { netprot::LoginInfo log; if (netprot::Deserialize(&log, buf, buflen)) { - std::string str; - log.sid = 8675309; // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIIIIiiIIIIiINE! + log.sid = ((uint64_t)rand() << 25) % 8675309; // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIIIIiiIIIIiINE! + log.tid = 123456789; + str.append(" Nom: ").append(log.name); + Log(str, false, false); + str = ""; - str.append(log.name).append(": ").append(std::to_string(log.sid)); + str.append(log.name).append(" SID: [").append(std::to_string(log.sid).append("]")); Log(str, false, false); netprot::Serialize(&log, &buf, &buflen); send(sock, buf, buflen, 0); - - std::cin.getline(nullptr, 1); + buflen = 150; + Sleep(300); + netprot::GameInfo ginfo; + ginfo.countdown = 360; + ginfo.gameType = 1; + ginfo.seed = 9370707; + netprot::Serialize(&ginfo, &buf, &buflen); + send(sock, buf, buflen, 0); + Sleep(10000); readystart = true; } } diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index a2fd522..31e1b81 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -44,44 +44,58 @@ int Connector::Init() { int Connector::Connect(char* srv_addr, std::string name) { sockaddr_in add; - add.sin_family = AF_INET; - add.sin_port = htons(SRV_PORT); + m_srvsockaddr.sin_family = AF_INET; + m_srvsockaddr.sin_port = htons(SRV_PORT); - if (inet_pton(AF_INET, srv_addr, &add.sin_addr) <= 0) { + if (inet_pton(AF_INET, srv_addr, &m_srvsockaddr.sin_addr) <= 0) { std::cout << "Addresse serveur invalide." << std::endl; return 1; } - - if (connect(m_sock_tcp, (sockaddr*)&add, sizeof(add)) < 0) { + + if (connect(m_sock_tcp, (sockaddr*)&m_srvsockaddr, sizeof(m_srvsockaddr)) < 0) { std::cout << "Échec de la connexion." << std::endl; } - + char* buf = new char[150]; uint32_t buflen = 150; - netprot::LoginInfo log, retlog; - log.sid = 0; + netprot::LoginInfo log; memcpy(&log.name, name.c_str(), name.size() + 1); netprot::Serialize(&log, &buf, &buflen); - + int se = send(m_sock_tcp, buf, buflen, 0); delete[] buf; buf = new char[150] {0}; buflen = 150; + int rpack = 0; - while (recv(m_sock_tcp, buf, buflen, 0) < se) {} + while (rpack < 2) { + recv(m_sock_tcp, buf, buflen, 0); - if (!netprot::Deserialize(&retlog, buf, buflen)) { - std::cout << "Packet invalide." << std::endl; - return 2; + switch (netprot::getType(buf, buflen)) { + case netprot::PACKET_TYPE::LOGINF: + if (!netprot::Deserialize(&m_loginfo, buf, buflen)) { + std::cout << "Packet LoginInfo invalide." << std::endl; + return 2; + } + ++rpack; + break; + case netprot::PACKET_TYPE::GAMEINFO: + if (!netprot::Deserialize(&m_gameinfo, buf, buflen)) { + std::cout << "Packet GameInfo invalide." << std::endl; + return 3; + } + ++rpack; + break; + default: + std::cout << "Packet invalide." << std::endl; + break; + } } - - m_name = retlog.name; - m_sid = retlog.sid; return 0; } -uint64_t Connector::getId() const { return m_sid; } +uint64_t Connector::getId() const { return m_loginfo.sid; } -unsigned int Connector::getSeed() const { return m_seed; } +unsigned int Connector::getSeed() const { return m_gameinfo.seed; } diff --git a/SQCSim2021/connector.h b/SQCSim2021/connector.h index f3ed6bd..166c07b 100644 --- a/SQCSim2021/connector.h +++ b/SQCSim2021/connector.h @@ -21,12 +21,16 @@ private: #ifdef _WIN32 WSADATA m_wsaData; #endif + std::map m_inputmanifest; + std::map m_players; + std::map m_teams; + + netprot::LoginInfo m_loginfo; + netprot::GameInfo m_gameinfo; + + sockaddr_in m_srvsockaddr; SOCKET m_sock_udp = 0, - m_sock_tcp = 0; - std::string m_name = ""; - uint64_t m_sid = 0, - m_tid = 0; - unsigned int m_seed = 0; + m_sock_tcp = 0; }; #endif diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index b30818f..a20a720 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -53,7 +53,8 @@ void Engine::Init() { if (!m_conn.Connect(SRV_ADDR, playname)) { // setup jeu en réseau. std::cout << "ID reçu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; - //seed = m_conn.getSeed(); + std::cout << "Seed reçu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; + seed = m_conn.getSeed(); } else std::cout << "Erreur de connexion." << std::endl; } From 7e043eb9f87691fffe846693c533444bba1f801a Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 28 Sep 2023 09:15:39 -0400 Subject: [PATCH 11/19] Cleanup --- SQCSim-srv/define.h | 3 +++ SQCSim-srv/server.cpp | 61 ++++++++++++++++++++++++++++++------------- SQCSim-srv/server.h | 20 +++++++++++++- 3 files changed, 65 insertions(+), 19 deletions(-) diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index 297bd15..77ca08e 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -8,6 +8,9 @@ #include #define MAX_CONNECTIONS 16 +#define ID_LIST_SIZE 127 +#define BUFFER_LENGTH 150 + typedef unsigned char LogDest; enum LOG_DEST { CONSOLE, LOGFILE, LOG_LAST }; diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index d283e92..17c5585 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -61,9 +61,6 @@ int Server::Init() { return 5; } - for (auto& conn : m_conn) - conn = nullptr; - return 0; } @@ -80,6 +77,12 @@ int Server::Ready() { Log("À l'écoute sur le port: " + std::to_string(SRV_PORT), false, false); + buildIdList(ID_LIST_SIZE); + + m_game.countdown = 360; + m_game.gameType = 1; + m_game.seed = 9370707; + while (!readystart) { sockaddr_in sockad; int addrlen = sizeof(sockad); @@ -89,16 +92,19 @@ int Server::Ready() { Log("Erreur de connexion", true, false); else if (sock > 0) { std::string str = "Nouvelle connection provenant de: "; - char* strbuf = new char[150]; - uint32_t strbuflen = 150; + char* strbuf = new char[BUFFER_LENGTH]; + uint32_t strbuflen = BUFFER_LENGTH; str.append(inet_ntop(AF_INET, &sockad.sin_addr, strbuf, strbuflen)).append(": ").append(std::to_string(sockad.sin_port)); if (recv(sock, buf, buflen, 0) > 0) { netprot::LoginInfo log; + netprot::PlayerInfo play; if (netprot::Deserialize(&log, buf, buflen)) { - log.sid = ((uint64_t)rand() << 25) % 8675309; // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIIIIiiIIIIiINE! - log.tid = 123456789; + log.sid = getUniqueId(); + + log.tid = 0; + str.append(" Nom: ").append(log.name); Log(str, false, false); str = ""; @@ -106,17 +112,21 @@ int Server::Ready() { str.append(log.name).append(" SID: [").append(std::to_string(log.sid).append("]")); Log(str, false, false); - netprot::Serialize(&log, &buf, &buflen); - send(sock, buf, buflen, 0); - buflen = 150; - Sleep(300); - netprot::GameInfo ginfo; - ginfo.countdown = 360; - ginfo.gameType = 1; - ginfo.seed = 9370707; - netprot::Serialize(&ginfo, &buf, &buflen); - send(sock, buf, buflen, 0); - Sleep(10000); + //netprot::Serialize(&log, &buf, &buflen); + //send(sock, buf, buflen, 0); + //buflen = 150; + sendPack(sock, &log, &buf, &buflen); + + play.id = getUniqueId(); + memcpy(play.name, log.name, std::strlen(log.name) + 1); + play.tid = log.tid; + + //netprot::Serialize(&m_game, &buf, &buflen); + //send(sock, buf, buflen, 0); + sendPack(sock, &m_game, &buf, &buflen); + Connection* conn = new Connection(sock, sockad, log, play); + + m_players[log.sid] = conn; readystart = true; } } @@ -171,6 +181,21 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) } } +void Server::buildIdList(size_t size) { + std::set lst; + + do lst.insert(((uint64_t)rand() << 25) % 8675309); // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIiIIiiIiINE! + while (lst.size() < size); + + m_ids = std::vector(lst.begin(), lst.end()); +} + +uint64_t Server::getUniqueId() { + uint64_t id = m_ids.back(); + m_ids.pop_back(); + return id; +} + // Test serialize/deserialize: /* netprot::LoginInfo log, log2; diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index b79b805..425a996 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -3,6 +3,7 @@ #include #include +#include #include #include "../SQCSim-common/world.h" #include "../SQCSim-common/netprotocol.h" @@ -27,10 +28,27 @@ private: LogDest m_log; std::ofstream m_logfile; - Connection* m_conn[MAX_CONNECTIONS]; + std::map m_players; + std::map m_chatlog; + std::vector m_ids; + netprot::GameInfo m_game; + World* m_world = nullptr; std::string Timestamp(); void Log(std::string str, bool is_error, bool is_fatal); + void buildIdList(size_t size); + + uint64_t getUniqueId(); + template void sendPack(SOCKET sock, T* pack, char** buf, uint32_t* buflen); + }; + +template +void Server::sendPack(SOCKET sock, T* pack, char** buf, uint32_t* buflen) { + netprot::Serialize(pack, buf, buflen); + send(sock, *buf, *buflen, 0); + *buflen = BUFFER_LENGTH; +} + #endif From 954b976f2759f2aa2479f30f3109a99c2acf44b3 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Fri, 29 Sep 2023 12:04:08 -0400 Subject: [PATCH 12/19] cleanup de fichiers en double --- SQCSim-common/bullet.cpp | 4 + SQCSim-common/bullet.h | 1 + SQCSim-common/define.h | 2 +- SQCSim-common/netprotocol.cpp | 233 ++- SQCSim-common/netprotocol.h | 23 +- SQCSim2021/SQCSim2021.vcxproj | 7 - SQCSim2021/SQCSim2021.vcxproj.filters | 51 +- SQCSim2021/array2d.h | 61 - SQCSim2021/array3d.h | 55 - SQCSim2021/blockinfo.cpp | 42 - SQCSim2021/blockinfo.h | 32 - SQCSim2021/chunk.h | 8 +- SQCSim2021/connector.h | 4 +- SQCSim2021/engine.cpp | 2 +- SQCSim2021/engine.h | 6 +- SQCSim2021/matrix4.h | 571 ------ SQCSim2021/opensimplex.cpp | 2542 ------------------------- SQCSim2021/opensimplex.h | 51 - SQCSim2021/player.h | 4 +- SQCSim2021/transformation.h | 5 +- SQCSim2021/vertexbuffer.h | 2 +- SQCSim2021/world.h | 8 +- 22 files changed, 287 insertions(+), 3427 deletions(-) delete mode 100644 SQCSim2021/array2d.h delete mode 100644 SQCSim2021/array3d.h delete mode 100644 SQCSim2021/blockinfo.cpp delete mode 100644 SQCSim2021/blockinfo.h delete mode 100644 SQCSim2021/matrix4.h delete mode 100644 SQCSim2021/opensimplex.cpp delete mode 100644 SQCSim2021/opensimplex.h diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index c06c9e7..52824d5 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -30,3 +30,7 @@ void Bullet::Transpose(int& x, int& z) { m_startpos.x -= x * CHUNK_SIZE_X; m_startpos.z -= z * CHUNK_SIZE_Z; } + +Vector3f& Bullet::getPos() { + return m_currentpos; +} diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h index de2e14c..599eab6 100644 --- a/SQCSim-common/bullet.h +++ b/SQCSim-common/bullet.h @@ -12,6 +12,7 @@ public: bool Update(World* world, float elapsedtime); void Transpose(int& x, int& z); + Vector3f& getPos(); private: Vector3f m_startpos; diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 968b71d..0342359 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -11,7 +11,7 @@ #define CHUNK_SIZE_Y 64 #define CHUNK_SIZE_Z 4 #define MAX_SELECTION_DISTANCE 5 -#define SEED 12345 +#define SEED 0 #define COUNTDOWN 300 #define WORLD_SIZE_X 64 diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index d7f7675..b692201 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -13,7 +13,26 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { } void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::TEAMINF; + size_t namesize = std::strlen(tinfo->name) + 1; + + memcpy(*buf + 1, &tinfo->name, namesize); + uint64_t tid = tinfo->id; + uint8_t tid8[sizeof(uint64_t)] = { + (tid >> 56) & 0xFF, + (tid >> 48) & 0xFF, + (tid >> 40) & 0xFF, + (tid >> 32) & 0xFF, + (tid >> 24) & 0xFF, + (tid >> 16) & 0xFF, + (tid >> 8) & 0xFF, + tid & 0xFF + }; + + memcpy(*buf + namesize + 2, tid8, sizeof(uint64_t)); + + *buflen = namesize + sizeof(uint64_t) + 2; } void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { @@ -54,7 +73,40 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { } void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::PLAYINF; + size_t namesize = std::strlen(pinfo->name) + 1; + + memcpy(*buf + 1, &pinfo->name, namesize); + uint64_t id = pinfo->id; + uint8_t id8[sizeof(uint64_t)] = { + (id >> 56) & 0xFF, + (id >> 48) & 0xFF, + (id >> 40) & 0xFF, + (id >> 32) & 0xFF, + (id >> 24) & 0xFF, + (id >> 16) & 0xFF, + (id >> 8) & 0xFF, + id & 0xFF + }; + + memcpy(*buf + namesize + 2, id8, sizeof(uint64_t)); + + uint64_t tid = pinfo->tid; + uint8_t tid8[sizeof(uint64_t)] = { + (tid >> 56) & 0xFF, + (tid >> 48) & 0xFF, + (tid >> 40) & 0xFF, + (tid >> 32) & 0xFF, + (tid >> 24) & 0xFF, + (tid >> 16) & 0xFF, + (tid >> 8) & 0xFF, + tid & 0xFF + }; + + memcpy(*buf + namesize + 2 + sizeof(uint64_t), tid8, sizeof(uint64_t)); + + *buflen = namesize + sizeof(uint64_t) * 2 + 2; } void netprot::Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen) { @@ -106,11 +158,67 @@ void netprot::Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen) { } void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::CHAT; + uint64_t src = chat->src_id; + uint8_t src8[sizeof(uint64_t)] = { + (src >> 56) & 0xFF, + (src >> 48) & 0xFF, + (src >> 40) & 0xFF, + (src >> 32) & 0xFF, + (src >> 24) & 0xFF, + (src >> 16) & 0xFF, + (src >> 8) & 0xFF, + src & 0xFF + }; + + memcpy(*buf + 1, src8, sizeof(uint64_t)); + + uint64_t dst = chat->dest_id; + uint8_t dst8[sizeof(uint64_t)] = { + (dst >> 56) & 0xFF, + (dst >> 48) & 0xFF, + (dst >> 40) & 0xFF, + (dst >> 32) & 0xFF, + (dst >> 24) & 0xFF, + (dst >> 16) & 0xFF, + (dst >> 8) & 0xFF, + dst & 0xFF + }; + + memcpy(*buf + 1 + sizeof(uint64_t), dst8, sizeof(uint64_t)); + + uint64_t dstteam = chat->dest_id; + uint8_t dstt8[sizeof(uint64_t)] = { + (dstteam >> 56) & 0xFF, + (dstteam >> 48) & 0xFF, + (dstteam >> 40) & 0xFF, + (dstteam >> 32) & 0xFF, + (dstteam >> 24) & 0xFF, + (dstteam >> 16) & 0xFF, + (dstteam >> 8) & 0xFF, + dstteam & 0xFF + }; + + memcpy(*buf + 1 + sizeof(uint64_t) * 2, dstt8, sizeof(uint64_t)); + + size_t messize = std::strlen(chat->mess) + 1; + + memcpy(*buf + 1 + sizeof(uint64_t) * 3, &chat->mess, messize); + + *buflen = messize + sizeof(uint64_t) * 3 + 2; } void netprot::Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen) { - + *buf[0] = netprot::PACKET_TYPE::ERRLOG; + + size_t messize = std::strlen(errlog->mess) + 1; + + memcpy(*buf + 1, &errlog->mess, messize); + + memcpy(*buf + 1 + messize, &errlog->is_fatal, sizeof(bool)); + + *buflen = messize + sizeof(bool) + 1; } @@ -128,11 +236,33 @@ bool netprot::Deserialize(Sync* sync, char* buf, const uint32_t buflen) { } bool netprot::Deserialize(TeamInfo* tinfo, char* buf, const uint32_t buflen) { - return false; + if (buflen <= sizeof(LoginInfo)) + return false; + + size_t namesize = std::strlen(buf) + 1; + + if (namesize > 32) + return false; + + memcpy(&tinfo->name, &buf[1], namesize); + + uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); + tinfo->id = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + return true; } bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { - if (buflen < sizeof(LoginInfo) + 3) + if (buflen <= sizeof(LoginInfo)) return false; size_t namesize = std::strlen(buf) + 1; @@ -169,11 +299,44 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) { } bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) { - return false; + if (buflen <= sizeof(PlayerInfo)) + return false; + + size_t namesize = std::strlen(buf) + 1; + + if (namesize > 32) + return false; + + memcpy(&pinfo->name, &buf[1], namesize); + + uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); + pinfo->id = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + memcpy(diff, &buf[namesize + sizeof(uint64_t) + 1], sizeof(uint64_t)); + pinfo->tid = + (uint64_t)diff[0] << 56 | + (uint64_t)diff[1] << 48 | + (uint64_t)diff[2] << 40 | + (uint64_t)diff[3] << 32 | + (uint64_t)diff[4] << 24 | + (uint64_t)diff[5] << 16 | + (uint64_t)diff[6] << 8 | + (uint64_t)diff[7]; + + return true; } bool netprot::Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen) { - if (buflen < sizeof(GameInfo) + 1) + if (buflen <= sizeof(GameInfo)) return false; uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; @@ -214,11 +377,67 @@ bool netprot::Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen) { } bool netprot::Deserialize(Chat* chat, char* buf, const uint32_t buflen) { - return false; + if (buflen <= sizeof(Chat)) + return false; + + uint8_t src[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(src, &buf[1], sizeof(uint64_t)); + chat->src_id = + (uint64_t)src[0] << 56 | + (uint64_t)src[1] << 48 | + (uint64_t)src[2] << 40 | + (uint64_t)src[3] << 32 | + (uint64_t)src[4] << 24 | + (uint64_t)src[5] << 16 | + (uint64_t)src[6] << 8 | + (uint64_t)src[7]; + + uint8_t dst[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(dst, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t)); + chat->dest_id = + (uint64_t)dst[0] << 56 | + (uint64_t)dst[1] << 48 | + (uint64_t)dst[2] << 40 | + (uint64_t)dst[3] << 32 | + (uint64_t)dst[4] << 24 | + (uint64_t)dst[5] << 16 | + (uint64_t)dst[6] << 8 | + (uint64_t)dst[7]; + + uint8_t dstt[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(dstt, &buf[1 + sizeof(uint64_t) * 2], sizeof(uint64_t)); + chat->dest_team_id = + (uint64_t)dstt[0] << 56 | + (uint64_t)dstt[1] << 48 | + (uint64_t)dstt[2] << 40 | + (uint64_t)dstt[3] << 32 | + (uint64_t)dstt[4] << 24 | + (uint64_t)dstt[5] << 16 | + (uint64_t)dstt[6] << 8 | + (uint64_t)dstt[7]; + + size_t messsize = std::strlen(buf + sizeof(uint64_t) * 3) + 1; + + if (messsize > 140) + return false; + + memcpy(&chat->mess, &buf[1 + sizeof(uint64_t) * 3], messsize); + return true; } bool netprot::Deserialize(ErrorLog* errlog, char* buf, const uint32_t buflen) { - return false; + if (buflen <= sizeof(ErrorLog)) + return false; + + size_t messsize = std::strlen(buf) + 1; + + if (messsize > 140) + return false; + + memcpy(&errlog->mess, &buf[1], messsize); + memcpy(&errlog->is_fatal, &buf[1 + messsize], sizeof(bool)); + + return true; } netprot::PacketType netprot::getType(char* buf, const uint32_t buflen) { diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 3e237f7..7f93349 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -18,9 +18,26 @@ namespace netprot { LAST_PACK }; + struct Keys { + bool forward, + backward, + left, + right, + jump, + shoot; + }; + + struct States { + bool jumping, + shooting, + hit, + powerup; + }; + struct Input { // cli -> srv UDP ~frame Timestamp timestamp; - uint8_t keys; // 0bFBLRJS__ bit-packing de bool. + uint64_t sid = 0; + Keys keys; // 0bFBLRJS__ bit-packing de bool. Vector3f direction; }; @@ -28,8 +45,8 @@ namespace netprot { Timestamp timestamp; uint64_t id = 0; Vector3f position, - direction; - uint8_t states; // 0bJSH_____ bit-packing de bool. + direction; + States states; // 0bJSH_____ bit-packing de bool. }; struct Sync { // srv -> cli TCP ~second diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 9cac270..005bcc5 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -19,18 +19,13 @@ - - - - - @@ -43,14 +38,12 @@ - - diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index 60aa0a8..ec7b7d6 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -11,12 +11,6 @@ - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -26,12 +20,6 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -44,15 +32,9 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - Fichiers d%27en-tête - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -65,20 +47,20 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - Fichiers d%27en-tête + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + - - Fichiers sources - Fichiers sources @@ -103,9 +85,6 @@ Fichiers sources - - Fichiers sources - Fichiers sources @@ -121,14 +100,14 @@ Fichiers sources - - Fichiers sources - - - Fichiers sources - Fichiers sources + + Fichiers sources + + + Fichiers sources + \ No newline at end of file diff --git a/SQCSim2021/array2d.h b/SQCSim2021/array2d.h deleted file mode 100644 index 7451365..0000000 --- a/SQCSim2021/array2d.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef ARRAY2D_H__ -#define ARRAY2D_H__ - -#include "define.h" - -template -class Array2d { - public: - Array2d(int x, int y); - ~Array2d(); - Array2d(const Array2d& array); - - void Set(int x, int y, T type); - T Get(int x, int y) const; - T Remove(int x, int y); - - void Reset(T type); - - private: - int m_x, m_y; - T* m_array; - - int To1dIndex(int x, int y) const; -}; - -template -Array2d::Array2d(int x, int y) : m_x(x), m_y(y) { m_array = new T[m_x * m_y]; } - -template -Array2d::~Array2d() { delete[] m_array; } - -template -Array2d::Array2d(const Array2d& array) : m_x(array.m_x), m_y(array.m_y) { - m_array = new T[m_x * m_y]; - for (int i = 0; i < m_x * m_y; ++i) - m_array[i] = array.m_array[i]; -} - -template -void Array2d::Set(int x, int y, T type) { m_array[To1dIndex(x, y)] = type; } - -template -T Array2d::Get(int x, int y) const { return m_array[To1dIndex(x, y)]; } - -template -T Array2d::Remove(int x, int y) { - T thing = std::move(m_array[To1dIndex(x, y)]); - m_array[To1dIndex(x, y)] = nullptr; - return thing; -} - -template -void Array2d::Reset(T type) { - for (int i = 0; i < m_x * m_y; ++i) - m_array[i] = type; -} - -template -int Array2d::To1dIndex(int x, int y) const { return x + (y * m_x); } - -#endif // ARRAY2D_H__ diff --git a/SQCSim2021/array3d.h b/SQCSim2021/array3d.h deleted file mode 100644 index 97603ef..0000000 --- a/SQCSim2021/array3d.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef ARRAY3D_H__ -#define ARRAY3D_H__ - -#include "define.h" - -template -class Array3d { - public: - Array3d(int x, int y, int z); - ~Array3d(); - Array3d(const Array3d& array); - - void Set(int x, int y, int z, T type); - T Get(int x, int y, int z) const; - - void Reset(T type); - - private: - int m_x, m_y, m_z; - T* m_array; - - int To1dIndex(int x, int y, int z) const; -}; - -template -Array3d::Array3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) { m_array = new T[m_x * m_y * m_z]; } - -template -Array3d::~Array3d() { delete[] m_array; } - -template -Array3d::Array3d(const Array3d& array) : m_x(array.m_x), m_y(array.m_y), m_z(array.m_z) { - m_array = new T[m_x * m_y * m_z]; - for (int i = 0; i < m_x * m_y * m_z; ++i) - m_array[i] = array.m_array[i]; -} - -template -void Array3d::Set(int x, int y, int z, T type) { - m_array[To1dIndex(x, y, z)] = type; -} - -template -T Array3d::Get(int x, int y, int z) const { return m_array[To1dIndex(x, y, z)]; } - -template -void Array3d::Reset(T type) { - for (int i = 0; i < m_x * m_y * m_z; ++i) - m_array[i] = type; -} - -template -int Array3d::To1dIndex(int x, int y, int z) const { return x + (z * m_x) + (y * m_z * m_x); } - -#endif // ARRAY3D_H__ diff --git a/SQCSim2021/blockinfo.cpp b/SQCSim2021/blockinfo.cpp deleted file mode 100644 index 1e42825..0000000 --- a/SQCSim2021/blockinfo.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "blockinfo.h" -#include - -BlockInfo::BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur) : m_type(type), m_name(name), m_u(u), m_v(v), m_s(s), m_durability(dur) -{ -} - -BlockInfo::~BlockInfo() -{ -} - -BlockType BlockInfo::GetType() const -{ - return m_type; -} - -void BlockInfo::SetDurability(int durability) -{ - m_durability = durability; -} - -int BlockInfo::GetDurability() const -{ - return m_durability; -} - -void BlockInfo::GetTexture(float& u, float& v, float& s) -{ - u = m_u; - v = m_v; - s = m_s; -} - -void BlockInfo::Show() const -{ - std::cout << "Type: " << m_type << std::endl; - std::cout << "Nom: " << m_name << std::endl; - std::cout << "Durabilite: " << m_durability << std::endl; - std::cout << "Coordonnees Texture: " << m_u << ", " << m_v << ", " << m_s << std::endl; -} - - diff --git a/SQCSim2021/blockinfo.h b/SQCSim2021/blockinfo.h deleted file mode 100644 index 8a2afe7..0000000 --- a/SQCSim2021/blockinfo.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef BLOCKINFO_H__ -#define BLOCKINFO_H__ - -#include -#include "define.h" - -class BlockInfo -{ - public: - BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur); - ~BlockInfo(); - - BlockType GetType() const; - - void SetDurability(int durability); - int GetDurability() const; - - void GetTexture(float& u, float& v, float& s); - - void Show() const; - - private: - BlockType m_type; - float m_u; - float m_v; - float m_s; - std::string m_name; - int m_durability; - -}; - -#endif // BLOCKINFO_H__ diff --git a/SQCSim2021/chunk.h b/SQCSim2021/chunk.h index 2ce15e8..995b3f6 100644 --- a/SQCSim2021/chunk.h +++ b/SQCSim2021/chunk.h @@ -1,11 +1,11 @@ #ifndef CHUNK_H__ #define CHUNK_H__ #include "define.h" -#include "array3d.h" -#include "array2d.h" +#include "../SQCSim-common/array2d.h" +#include "../SQCSim-common/array3d.h" +#include "../SQCSim-common/blockinfo.h" +#include "../SQCSim-common/opensimplex.h" #include "vertexbuffer.h" -#include "blockinfo.h" -#include "opensimplex.h" class World; diff --git a/SQCSim2021/connector.h b/SQCSim2021/connector.h index 166c07b..297be6f 100644 --- a/SQCSim2021/connector.h +++ b/SQCSim2021/connector.h @@ -1,9 +1,9 @@ #ifndef CONNECTOR_H__ #define CONNECTOR_H__ -#include "define.h" -#include "../SQCSim-common/netprotocol.h" #include +#include "../SQCSim-common/netprotocol.h" +#include "define.h" class Connector { public: diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index a20a720..5f21e66 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -46,7 +46,7 @@ void Engine::Init() { for (int x = 0; x < MAX_BULLETS; ++x) m_bullets[x] = nullptr; - uint64_t seed = 0; + uint64_t seed = SEED; std::string playname = "La Chienne à Jacques"; if (NETWORK_TEST) { // Test connexion réseau. if (!m_conn.Init()) { diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 5ce52ec..5220cf8 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -3,7 +3,10 @@ #include #include +#include "../SQCSim-common/array2d.h" +#include "../SQCSim-common/blockinfo.h" #include "define.h" +#include "bullet.h" #include "openglcontext.h" #include "texture.h" #include "transformation.h" @@ -13,10 +16,7 @@ #include "skybox.h" #include "audio.h" #include "textureatlas.h" -#include "blockinfo.h" -#include "array2d.h" #include "world.h" -#include "bullet.h" #include "connector.h" class Engine : public OpenglContext { diff --git a/SQCSim2021/matrix4.h b/SQCSim2021/matrix4.h deleted file mode 100644 index bf5ac5b..0000000 --- a/SQCSim2021/matrix4.h +++ /dev/null @@ -1,571 +0,0 @@ -#ifndef MATRIX4_H__ -#define MATRIX4_H__ - -#include -#include -#include - -#include "define.h" -#include "../SQCSim-common/vector3.h" - -#ifndef M_PI -#define M_PI 3.14159265f -#endif - -#define DEGTORAD(x) ((x * M_PI) / 180.f) -#define RADTODEG(x) ((180.f * x) / M_PI) - -template -class Matrix4 -{ - public: - typedef T Type; - - public: - static const Matrix4 ZERO; - static const Matrix4 IDENTITY; - - public: - Matrix4(); - Matrix4(const T& v); - Matrix4(const Matrix4& m); - Matrix4(const T& m_11, const T& m_12, const T& m_13, const T& m_14, - const T& m_21, const T& m_22, const T& m_23, const T& m_24, - const T& m_31, const T& m_32, const T& m_33, const T& m_34, - const T& m_41, const T& m_42, const T& m_43, const T& m_44); - - const T& Get11() const; - const T& Get12() const; - const T& Get13() const; - const T& Get14() const; - const T& Get21() const; - const T& Get22() const; - const T& Get23() const; - const T& Get24() const; - const T& Get31() const; - const T& Get32() const; - const T& Get33() const; - const T& Get34() const; - const T& Get41() const; - const T& Get42() const; - const T& Get43() const; - const T& Get44() const; - - Matrix4& operator=(const Matrix4& m); - - Matrix4 operator+(const Matrix4& m) const; - const Matrix4& operator+=(const Matrix4& m); - - Matrix4 operator-(const Matrix4& m) const; - Matrix4 operator-() const; - const Matrix4& operator-=(const Matrix4& m); - - Matrix4 operator*(const Matrix4& m) const; - Matrix4 operator*(const T& v) const; - const Matrix4& operator*=(const Matrix4& m); - const Matrix4& operator*=(const T& v); - - Matrix4 operator/(const T& v) const; - const Matrix4& operator/=(const T& v); - - bool operator==(const Matrix4& m) const; - bool operator!=(const Matrix4& m) const; - - void SetZero(); - void SetIdentity(); - void SetPerspectiveProjection(const T& fov, const T& aspect, const T& nearPlane, const T& farPlane); - void SetOrthographicProjection(const T& left, const T& right, const T& bottom, const T& top, const T& nearPlane, const T& farPlane); - - void SetLookAt(const Vector3& eyePosition, const Vector3& lookAtPosition, Vector3 upVector = Vector3(T(0), T(1), T(0))); - - bool IsZero() const; - bool IsIdentity() const; - - void ApplyTranslation(const T& x, const T& y, const T& z); - void ApplyRotation(const T& angle, const T& x, const T& y, const T& z); - void ApplyScale(const T& x, const T& y, const T& z); - - Vector3 GetTranslation() const; - - const T* GetInternalValues() const; - T* GetInternalValues(); - std::string ToString(const std::string& lineBegin = "|", const std::string& lineEnd = "|\n") const; - - private: - union { - // column-major matrix - struct - { - T m_11, m_21, m_31, m_41, m_12, m_22, m_32, m_42, m_13, m_23, m_33, m_43, m_14, m_24, m_34, m_44; - }; - T m_values[16]; - }; -}; - -typedef Matrix4 Matrix4i; -typedef Matrix4 Matrix4f; -typedef Matrix4 Matrix4d; - -template -const Matrix4 Matrix4::ZERO = Matrix4(0); - -template -const Matrix4 Matrix4::IDENTITY = Matrix4( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1); - - template -std::ostream& operator<<(std::ostream& out, const Matrix4& m) -{ - out << m.ToString(); - return out; -} - - template -Matrix4::Matrix4() -{ - // Leave matrix uninitialized -} - - template -Matrix4::Matrix4(const T& v) -{ - for(int i = 0; i < 16; ++i) - m_values[i] = v; -} - - template -Matrix4::Matrix4(const Matrix4& m) -{ - for(int i = 0; i < 16; ++i) - m_values[i] = m.m_values[i]; -} - - template -Matrix4::Matrix4(const T& m_11, const T& m_12, const T& m_13, const T& m_14, - const T& m_21, const T& m_22, const T& m_23, const T& m_24, - const T& m_31, const T& m_32, const T& m_33, const T& m_34, - const T& m_41, const T& m_42, const T& m_43, const T& m_44) -{ - this->m_11 = m_11; - this->m_12 = m_12; - this->m_13 = m_13; - this->m_14 = m_14; - this->m_21 = m_21; - this->m_22 = m_22; - this->m_23 = m_23; - this->m_24 = m_24; - this->m_31 = m_31; - this->m_32 = m_32; - this->m_33 = m_33; - this->m_34 = m_34; - this->m_41 = m_41; - this->m_42 = m_42; - this->m_43 = m_43; - this->m_44 = m_44; -} - -template -const T& Matrix4::Get11() const -{ - return m_11; -} - -template -const T& Matrix4::Get12() const -{ - return m_12; -} - -template -const T& Matrix4::Get13() const -{ - return m_13; -} - -template -const T& Matrix4::Get14() const -{ - return m_14; -} - -template -const T& Matrix4::Get21() const -{ - return m_21; -} - -template -const T& Matrix4::Get22() const -{ - return m_22; -} - -template -const T& Matrix4::Get23() const -{ - return m_23; -} - -template -const T& Matrix4::Get24() const -{ - return m_24; -} - -template -const T& Matrix4::Get31() const -{ - return m_31; -} - -template -const T& Matrix4::Get32() const -{ - return m_32; -} - -template -const T& Matrix4::Get33() const -{ - return m_33; -} - -template -const T& Matrix4::Get34() const -{ - return m_34; -} - -template -const T& Matrix4::Get41() const -{ - return m_41; -} - -template -const T& Matrix4::Get42() const -{ - return m_42; -} - -template -const T& Matrix4::Get43() const -{ - return m_43; -} - -template -const T& Matrix4::Get44() const -{ - return m_44; -} - - template -Matrix4& Matrix4::operator=(const Matrix4& m) -{ - if(this != &m) - { - for(int i = 0; i < 16; ++i) - m_values[i] = m.m_values[i]; - } - - return *this; -} - -template -Matrix4 Matrix4::operator+(const Matrix4& m) const -{ - return Matrix4( - m_11 + m.m_11, m_12 + m.m_12, m_13 + m.m_13, m_14 + m.m_14, - m_21 + m.m_21, m_22 + m.m_22, m_23 + m.m_23, m_24 + m.m_24, - m_31 + m.m_31, m_32 + m.m_32, m_33 + m.m_33, m_34 + m.m_34, - m_41 + m.m_41, m_42 + m.m_42, m_43 + m.m_43, m_44 + m.m_44); -} - - template -const Matrix4& Matrix4::operator+=(const Matrix4& m) -{ - *this = *this + m; - return *this; -} - -template -Matrix4 Matrix4::operator-(const Matrix4& m) const -{ - return Matrix4( - m_11 - m.m_11, m_12 - m.m_12, m_13 - m.m_13, m_14 - m.m_14, - m_21 - m.m_21, m_22 - m.m_22, m_23 - m.m_23, m_24 - m.m_24, - m_31 - m.m_31, m_32 - m.m_32, m_33 - m.m_33, m_34 - m.m_34, - m_41 - m.m_41, m_42 - m.m_42, m_43 - m.m_43, m_44 - m.m_44); -} - -template -Matrix4 Matrix4::operator-() const -{ - return Matrix4( - -m_11, -m_12, -m_13, -m_14, - -m_21, -m_22, -m_23, -m_24, - -m_31, -m_32, -m_33, -m_34, - -m_41, -m_42, -m_43, -m_44); -} - - template -const Matrix4& Matrix4::operator-=(const Matrix4& m) -{ - *this = *this - m; - return *this; -} - -template -Matrix4 Matrix4::operator*(const Matrix4& m) const -{ - return Matrix4( - m_11 * m.m_11 + m_12 * m.m_21 + m_13 * m.m_31 + m_14 * m.m_41, - m_11 * m.m_12 + m_12 * m.m_22 + m_13 * m.m_32 + m_14 * m.m_42, - m_11 * m.m_13 + m_12 * m.m_23 + m_13 * m.m_33 + m_14 * m.m_43, - m_11 * m.m_14 + m_12 * m.m_24 + m_13 * m.m_34 + m_14 * m.m_44, - - m_21 * m.m_11 + m_22 * m.m_21 + m_23 * m.m_31 + m_24 * m.m_41, - m_21 * m.m_12 + m_22 * m.m_22 + m_23 * m.m_32 + m_24 * m.m_42, - m_21 * m.m_13 + m_22 * m.m_23 + m_23 * m.m_33 + m_24 * m.m_43, - m_21 * m.m_14 + m_22 * m.m_24 + m_23 * m.m_34 + m_24 * m.m_44, - - m_31 * m.m_11 + m_32 * m.m_21 + m_33 * m.m_31 + m_34 * m.m_41, - m_31 * m.m_12 + m_32 * m.m_22 + m_33 * m.m_32 + m_34 * m.m_42, - m_31 * m.m_13 + m_32 * m.m_23 + m_33 * m.m_33 + m_34 * m.m_43, - m_31 * m.m_14 + m_32 * m.m_24 + m_33 * m.m_34 + m_34 * m.m_44, - - m_41 * m.m_11 + m_42 * m.m_21 + m_43 * m.m_31 + m_44 * m.m_41, - m_41 * m.m_12 + m_42 * m.m_22 + m_43 * m.m_32 + m_44 * m.m_42, - m_41 * m.m_13 + m_42 * m.m_23 + m_43 * m.m_33 + m_44 * m.m_43, - m_41 * m.m_14 + m_42 * m.m_24 + m_43 * m.m_34 + m_44 * m.m_44); -} - -template -Matrix4 Matrix4::operator*(const T& v) const -{ - return Matrix4( - m_11 * v, m_12 * v, m_13 * v, m_14 * v, - m_21 * v, m_22 * v, m_23 * v, m_24 * v, - m_31 * v, m_32 * v, m_33 * v, m_34 * v, - m_41 * v, m_42 * v, m_43 * v, m_44 * v); -} - - template -const Matrix4& Matrix4::operator*=(const Matrix4& m) -{ - *this = *this * m; - return *this; -} - - template -const Matrix4& Matrix4::operator*=(const T& v) -{ - *this = *this * v; - return *this; -} - -template -Matrix4 Matrix4::operator/(const T& v) const -{ - return Matrix4( - m_11 / v, m_12 / v, m_13 / v, m_14 / v, - m_21 / v, m_22 / v, m_23 / v, m_24 / v, - m_31 / v, m_32 / v, m_33 / v, m_34 / v, - m_41 / v, m_42 / v, m_43 / v, m_44 / v); -} - - template -const Matrix4& Matrix4::operator/=(const T& v) -{ - *this = *this / v; - return *this; -} - -template -bool Matrix4::operator==(const Matrix4& m) const -{ - for(int i = 0; i < 16; ++i) - if(m_values[i] != m.m_values[i]) - return false; - - return true; -} - -template -bool Matrix4::operator!=(const Matrix4& m) const -{ - return !(*this == m); -} - - template -void Matrix4::SetZero() -{ - *this = ZERO; -} - - template -void Matrix4::SetIdentity() -{ - *this = IDENTITY; -} - - template -void Matrix4::SetPerspectiveProjection(const T& fov, const T& aspect, const T& nearPlane, const T& farPlane) -{ - const float h = T(1) / tan(fov * T(M_PI / 360.f)); - T negDepth = nearPlane - farPlane; - - SetZero(); - - m_11 = h / aspect; - m_22 = h; - m_33 = (farPlane + nearPlane) / negDepth; - m_34 = T(2) * (nearPlane * farPlane) / negDepth; - m_43 = -T(1); -} - - template -void Matrix4::SetOrthographicProjection(const T& left, const T& right, const T& bottom, const T& top, const T& nearPlane, const T& farPlane) -{ - m_11 = T(2) / (right - left); - m_12 = T(0); - m_13 = T(0); - m_14 = -(right + left) / (right - left); - - m_21 = T(0); - m_22 = T(2) / (top - bottom); - m_23 = T(0); - m_24 = -(top + bottom) / (top - bottom); - - m_31 = T(0); - m_32 = T(0); - m_33 = -T(2) / (farPlane - nearPlane); - m_34 = -(farPlane + nearPlane) / (farPlane - nearPlane); - - m_41 = T(0); - m_42 = T(0); - m_43 = T(0); - m_44 = T(1); -} - - template -void Matrix4::SetLookAt(const Vector3& eyePosition, const Vector3& lookAtPosition, Vector3 upVector) -{ - Vector3f L = lookAtPosition - eyePosition; - L.Normalize(); - - upVector.Normalize(); - Vector3f S = L.Cross(upVector); - S.Normalize(); - - Vector3f U = S.Cross(L); - - Matrix4 M; - M.m_11 = S.x; - M.m_12 = S.y; - M.m_13 = S.z; - M.m_14 = 0; - - M.m_21 = U.x; - M.m_22 = U.y; - M.m_23 = U.z; - M.m_24 = 0; - - M.m_31 = -L.x; - M.m_32 = -L.y; - M.m_33 = -L.z; - M.m_34 = 0; - - M.m_41 = 0; - M.m_42 = 0; - M.m_43 = 0; - M.m_44 = 1.f; - - SetIdentity(); - *this *= M; - ApplyTranslation(-eyePosition.x, -eyePosition.y, -eyePosition.z); -} - - template -void Matrix4::ApplyTranslation(const T& x, const T& y, const T& z) -{ - Matrix4 tmp( - 1, 0, 0, x, - 0, 1, 0, y, - 0, 0, 1, z, - 0, 0, 0, 1); - - *this *= tmp; -} - - template -void Matrix4::ApplyRotation(const T& angle, const T& x, const T& y, const T& z) -{ - // TODO axis (x, y, z) must be normalized... - - T s = sin(DEGTORAD(angle)); - T c = cos(DEGTORAD(angle)); - T ic = T(1) - c; - - Matrix4 tmp( - x * x * ic + c, y * x * ic + (z * s), z * x * ic - (y * s), 0, - x * y * ic - (z * s), y * y * ic + c, z * y * ic + (x * s), 0, - x * z * ic + (y * s), y * z * ic - (x * s), z * z * ic + c, 0, - 0, 0, 0, 1); - - *this *= tmp; -} - - template -void Matrix4::ApplyScale(const T& x, const T& y, const T& z) -{ - Matrix4 tmp( - x, 0, 0, 0, - 0, y, 0, 0, - 0, 0, z, 0, - 0, 0, 0, 1); - - *this *= tmp; -} - -template -Vector3 Matrix4::GetTranslation() const -{ - // NOTE: Works only if the matrix doesn't contains scale information (only rotation and translation) - // Reference: http://www.gamedev.net/topic/397751-how-to-get-camera-position/ - T x = -(m_11 * m_14 + m_21 * m_24 + m_31 * m_34); - T y = -(m_12 * m_14 + m_22 * m_24 + m_32 * m_34); - T z = -(m_13 * m_14 + m_23 * m_24 + m_33 * m_34); - - return Vector3(x, y, z); -} - - template -T* Matrix4::GetInternalValues() -{ - return m_values; -} - -template -const T* Matrix4::GetInternalValues() const -{ - return m_values; -} - -template -std::string Matrix4::ToString(const std::string& lineBegin, const std::string& lineEnd) const -{ - std::ostringstream ss; - ss << lineBegin << m_11 << " " << m_12 << " " << m_13 << " " << m_14 << lineEnd; - ss << lineBegin << m_21 << " " << m_22 << " " << m_23 << " " << m_24 << lineEnd; - ss << lineBegin << m_31 << " " << m_32 << " " << m_33 << " " << m_34 << lineEnd; - ss << lineBegin << m_41 << " " << m_42 << " " << m_43 << " " << m_44 << lineEnd; - - return ss.str(); -} - -#endif // MATRIX4_H__ diff --git a/SQCSim2021/opensimplex.cpp b/SQCSim2021/opensimplex.cpp deleted file mode 100644 index a64d31f..0000000 --- a/SQCSim2021/opensimplex.cpp +++ /dev/null @@ -1,2542 +0,0 @@ -#include "opensimplex.h" - -#include -namespace OpenSimplexNoise -{ - using namespace std; - - Noise::Noise() - : m_stretch2d(-0.211324865405187) //(1/Math.sqrt(2+1)-1)/2; - , m_squish2d(0.366025403784439) //(Math.sqrt(2+1)-1)/2; - , m_stretch3d(-1.0 / 6) //(1/Math.sqrt(3+1)-1)/3; - , m_squish3d(1.0 / 3) //(Math.sqrt(3+1)-1)/3; - , m_stretch4d(-0.138196601125011) //(1/Math.sqrt(4+1)-1)/4; - , m_squish4d(0.309016994374947) //(Math.sqrt(4+1)-1)/4; - , m_norm2d(47) - , m_norm3d(103) - , m_norm4d(30) - , m_defaultSeed(0) - , m_perm{0} - , m_permGradIndex3d{0} - , m_gradients2d{ 5, 2, 2, 5, - -5, 2, -2, 5, - 5, -2, 2, -5, - -5, -2, -2, -5, } - , m_gradients3d{-11, 4, 4, -4, 11, 4, -4, 4, 11, - 11, 4, 4, 4, 11, 4, 4, 4, 11, - -11, -4, 4, -4, -11, 4, -4, -4, 11, - 11, -4, 4, 4, -11, 4, 4, -4, 11, - -11, 4, -4, -4, 11, -4, -4, 4, -11, - 11, 4, -4, 4, 11, -4, 4, 4, -11, - -11, -4, -4, -4, -11, -4, -4, -4, -11, - 11, -4, -4, 4, -11, -4, 4, -4, -11, } - , m_gradients4d{ 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, - -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3, - 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, - -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, - 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, - -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, - 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, - -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, - 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, - -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, - 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, - -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, - 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, - -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, - 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, - -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, } - { - } - - Noise::Noise(int64_t seed) - : Noise() - { - short source[256]; - for (short i = 0; i < 256; i++) - { - source[i] = i; - } - seed = seed * 6364136223846793005l + 1442695040888963407l; - seed = seed * 6364136223846793005l + 1442695040888963407l; - seed = seed * 6364136223846793005l + 1442695040888963407l; - for (int i = 255; i >= 0; i--) - { - seed = seed * 6364136223846793005l + 1442695040888963407l; - int r = static_cast((seed + 31) % (i + 1)); - if (r < 0) - { - r += (i + 1); - } - m_perm[i] = source[r]; - m_permGradIndex3d[i] = static_cast((m_perm[i] % (m_gradients3d.size() / 3)) * 3); - source[r] = source[i]; - } - } - - double Noise::eval(double x, double y) const - { - //Place input coordinates onto grid. - double stretchOffset = (x + y) * m_stretch2d; - double xs = x + stretchOffset; - double ys = y + stretchOffset; - - //Floor to get grid coordinates of rhombus (stretched square) super-cell origin. - int xsb = static_cast(floor(xs)); - int ysb = static_cast(floor(ys)); - - //Skew out to get actual coordinates of rhombus origin. We'll need these later. - double squishOffset = (xsb + ysb) * m_squish2d; - double xb = xsb + squishOffset; - double yb = ysb + squishOffset; - - //Compute grid coordinates relative to rhombus origin. - double xins = xs - xsb; - double yins = ys - ysb; - - //Sum those together to get a value that determines which region we're in. - double inSum = xins + yins; - - //Positions relative to origin point. - double dx0 = x - xb; - double dy0 = y - yb; - - //We'll be defining these inside the next block and using them afterwards. - double dx_ext, dy_ext; - int xsv_ext, ysv_ext; - - double value = 0; - - //Contribution (1,0) - double dx1 = dx0 - 1 - m_squish2d; - double dy1 = dy0 - 0 - m_squish2d; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, dx1, dy1); - } - - //Contribution (0,1) - double dx2 = dx0 - 0 - m_squish2d; - double dy2 = dy0 - 1 - m_squish2d; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, dx2, dy2); - } - - if (inSum <= 1) - { //We're inside the triangle (2-Simplex) at (0,0) - double zins = 1 - inSum; - if (zins > xins || zins > yins) - { //(0,0) is one of the closest two triangular vertices - if (xins > yins) - { - xsv_ext = xsb + 1; - ysv_ext = ysb - 1; - dx_ext = dx0 - 1; - dy_ext = dy0 + 1; - } - else - { - xsv_ext = xsb - 1; - ysv_ext = ysb + 1; - dx_ext = dx0 + 1; - dy_ext = dy0 - 1; - } - } - else - { //(1,0) and (0,1) are the closest two vertices. - xsv_ext = xsb + 1; - ysv_ext = ysb + 1; - dx_ext = dx0 - 1 - 2 * m_squish2d; - dy_ext = dy0 - 1 - 2 * m_squish2d; - } - } - else - { //We're inside the triangle (2-Simplex) at (1,1) - double zins = 2 - inSum; - if (zins < xins || zins < yins) - { //(0,0) is one of the closest two triangular vertices - if (xins > yins) - { - xsv_ext = xsb + 2; - ysv_ext = ysb + 0; - dx_ext = dx0 - 2 - 2 * m_squish2d; - dy_ext = dy0 + 0 - 2 * m_squish2d; - } - else - { - xsv_ext = xsb + 0; - ysv_ext = ysb + 2; - dx_ext = dx0 + 0 - 2 * m_squish2d; - dy_ext = dy0 - 2 - 2 * m_squish2d; - } - } - else - { //(1,0) and (0,1) are the closest two vertices. - dx_ext = dx0; - dy_ext = dy0; - xsv_ext = xsb; - ysv_ext = ysb; - } - xsb += 1; - ysb += 1; - dx0 = dx0 - 1 - 2 * m_squish2d; - dy0 = dy0 - 1 - 2 * m_squish2d; - } - - //Contribution (0,0) or (1,1) - double attn0 = 2 - dx0 * dx0 - dy0 * dy0; - if (attn0 > 0) - { - attn0 *= attn0; - value += attn0 * attn0 * extrapolate(xsb, ysb, dx0, dy0); - } - - //Extra Vertex - double attn_ext = 2 - dx_ext * dx_ext - dy_ext * dy_ext; - if (attn_ext > 0) - { - attn_ext *= attn_ext; - value += attn_ext * attn_ext * extrapolate(xsv_ext, ysv_ext, dx_ext, dy_ext); - } - - return value / m_norm2d; - } - - double Noise::eval(double x, double y, double z) const - { - //Place input coordinates on simplectic honeycomb. - double stretchOffset = (x + y + z) * m_stretch3d; - double xs = x + stretchOffset; - double ys = y + stretchOffset; - double zs = z + stretchOffset; - - //static_cast(floor to get simplectic honeycomb coordinates of rhombohedron (stretched cube) super-cell origin. - int xsb = static_cast(floor(xs)); - int ysb = static_cast(floor(ys)); - int zsb = static_cast(floor(zs)); - - //Skew out to get actual coordinates of rhombohedron origin. We'll need these later. - double squishOffset = (xsb + ysb + zsb) * m_squish3d; - double xb = xsb + squishOffset; - double yb = ysb + squishOffset; - double zb = zsb + squishOffset; - - //Compute simplectic honeycomb coordinates relative to rhombohedral origin. - double xins = xs - xsb; - double yins = ys - ysb; - double zins = zs - zsb; - - //Sum those together to get a value that determines which region we're in. - double inSum = xins + yins + zins; - - //Positions relative to origin point. - double dx0 = x - xb; - double dy0 = y - yb; - double dz0 = z - zb; - - //We'll be defining these inside the next block and using them afterwards. - double dx_ext0, dy_ext0, dz_ext0; - double dx_ext1, dy_ext1, dz_ext1; - int xsv_ext0, ysv_ext0, zsv_ext0; - int xsv_ext1, ysv_ext1, zsv_ext1; - - double value = 0; - if (inSum <= 1) - { //We're inside the tetrahedron (3-Simplex) at (0,0,0) - -//Determine which two of (0,0,1), (0,1,0), (1,0,0) are closest. - char aPoint = 0x01; - double aScore = xins; - char bPoint = 0x02; - double bScore = yins; - if (aScore >= bScore && zins > bScore) - { - bScore = zins; - bPoint = 0x04; - } - else if (aScore < bScore && zins > aScore) - { - aScore = zins; - aPoint = 0x04; - } - - //Now we determine the two lattice points not part of the tetrahedron that may contribute. - //This depends on the closest two tetrahedral vertices, including (0,0,0) - double wins = 1 - inSum; - if (wins > aScore || wins > bScore) - { //(0,0,0) is one of the closest two tetrahedral vertices. - char c = (bScore > aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. - - if ((c & 0x01) == 0) - { - xsv_ext0 = xsb - 1; - xsv_ext1 = xsb; - dx_ext0 = dx0 + 1; - dx_ext1 = dx0; - } - else - { - xsv_ext0 = xsv_ext1 = xsb + 1; - dx_ext0 = dx_ext1 = dx0 - 1; - } - - if ((c & 0x02) == 0) - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0; - if ((c & 0x01) == 0) - { - ysv_ext1 -= 1; - dy_ext1 += 1; - } - else - { - ysv_ext0 -= 1; - dy_ext0 += 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1; - } - - if ((c & 0x04) == 0) - { - zsv_ext0 = zsb; - zsv_ext1 = zsb - 1; - dz_ext0 = dz0; - dz_ext1 = dz0 + 1; - } - else - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz_ext1 = dz0 - 1; - } - } - else - { //(0,0,0) is not one of the closest two tetrahedral vertices. - char c = static_cast(aPoint | bPoint); //Our two extra vertices are determined by the closest two. - - if ((c & 0x01) == 0) - { - xsv_ext0 = xsb; - xsv_ext1 = xsb - 1; - dx_ext0 = dx0 - 2 * m_squish3d; - dx_ext1 = dx0 + 1 - m_squish3d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb + 1; - dx_ext0 = dx0 - 1 - 2 * m_squish3d; - dx_ext1 = dx0 - 1 - m_squish3d; - } - - if ((c & 0x02) == 0) - { - ysv_ext0 = ysb; - ysv_ext1 = ysb - 1; - dy_ext0 = dy0 - 2 * m_squish3d; - dy_ext1 = dy0 + 1 - m_squish3d; - } - else - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy0 - 1 - 2 * m_squish3d; - dy_ext1 = dy0 - 1 - m_squish3d; - } - - if ((c & 0x04) == 0) - { - zsv_ext0 = zsb; - zsv_ext1 = zsb - 1; - dz_ext0 = dz0 - 2 * m_squish3d; - dz_ext1 = dz0 + 1 - m_squish3d; - } - else - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz0 - 1 - 2 * m_squish3d; - dz_ext1 = dz0 - 1 - m_squish3d; - } - } - - //Contribution (0,0,0) - double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0; - if (attn0 > 0) - { - attn0 *= attn0; - value += attn0 * attn0 * extrapolate(xsb + 0, ysb + 0, zsb + 0, dx0, dy0, dz0); - } - - //Contribution (1,0,0) - double dx1 = dx0 - 1 - m_squish3d; - double dy1 = dy0 - 0 - m_squish3d; - double dz1 = dz0 - 0 - m_squish3d; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1); - } - - //Contribution (0,1,0) - double dx2 = dx0 - 0 - m_squish3d; - double dy2 = dy0 - 1 - m_squish3d; - double dz2 = dz1; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2); - } - - //Contribution (0,0,1) - double dx3 = dx2; - double dy3 = dy1; - double dz3 = dz0 - 1 - m_squish3d; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3); - } - } - else if (inSum >= 2) - { //We're inside the tetrahedron (3-Simplex) at (1,1,1) - -//Determine which two tetrahedral vertices are the closest, out of (1,1,0), (1,0,1), (0,1,1) but not (1,1,1). - char aPoint = 0x06; - double aScore = xins; - char bPoint = 0x05; - double bScore = yins; - if (aScore <= bScore && zins < bScore) - { - bScore = zins; - bPoint = 0x03; - } - else if (aScore > bScore && zins < aScore) - { - aScore = zins; - aPoint = 0x03; - } - - //Now we determine the two lattice points not part of the tetrahedron that may contribute. - //This depends on the closest two tetrahedral vertices, including (1,1,1) - double wins = 3 - inSum; - if (wins < aScore || wins < bScore) - { //(1,1,1) is one of the closest two tetrahedral vertices. - char c = (bScore < aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. - - if ((c & 0x01) != 0) - { - xsv_ext0 = xsb + 2; - xsv_ext1 = xsb + 1; - dx_ext0 = dx0 - 2 - 3 * m_squish3d; - dx_ext1 = dx0 - 1 - 3 * m_squish3d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb; - dx_ext0 = dx_ext1 = dx0 - 3 * m_squish3d; - } - - if ((c & 0x02) != 0) - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish3d; - if ((c & 0x01) != 0) - { - ysv_ext1 += 1; - dy_ext1 -= 1; - } - else - { - ysv_ext0 += 1; - dy_ext0 -= 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0 - 3 * m_squish3d; - } - - if ((c & 0x04) != 0) - { - zsv_ext0 = zsb + 1; - zsv_ext1 = zsb + 2; - dz_ext0 = dz0 - 1 - 3 * m_squish3d; - dz_ext1 = dz0 - 2 - 3 * m_squish3d; - } - else - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz_ext1 = dz0 - 3 * m_squish3d; - } - } - else - { //(1,1,1) is not one of the closest two tetrahedral vertices. - char c = static_cast(aPoint & bPoint); //Our two extra vertices are determined by the closest two. - - if ((c & 0x01) != 0) - { - xsv_ext0 = xsb + 1; - xsv_ext1 = xsb + 2; - dx_ext0 = dx0 - 1 - m_squish3d; - dx_ext1 = dx0 - 2 - 2 * m_squish3d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb; - dx_ext0 = dx0 - m_squish3d; - dx_ext1 = dx0 - 2 * m_squish3d; - } - - if ((c & 0x02) != 0) - { - ysv_ext0 = ysb + 1; - ysv_ext1 = ysb + 2; - dy_ext0 = dy0 - 1 - m_squish3d; - dy_ext1 = dy0 - 2 - 2 * m_squish3d; - } - else - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy0 - m_squish3d; - dy_ext1 = dy0 - 2 * m_squish3d; - } - - if ((c & 0x04) != 0) - { - zsv_ext0 = zsb + 1; - zsv_ext1 = zsb + 2; - dz_ext0 = dz0 - 1 - m_squish3d; - dz_ext1 = dz0 - 2 - 2 * m_squish3d; - } - else - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz0 - m_squish3d; - dz_ext1 = dz0 - 2 * m_squish3d; - } - } - - //Contribution (1,1,0) - double dx3 = dx0 - 1 - 2 * m_squish3d; - double dy3 = dy0 - 1 - 2 * m_squish3d; - double dz3 = dz0 - 0 - 2 * m_squish3d; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, dx3, dy3, dz3); - } - - //Contribution (1,0,1) - double dx2 = dx3; - double dy2 = dy0 - 0 - 2 * m_squish3d; - double dz2 = dz0 - 1 - 2 * m_squish3d; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, dx2, dy2, dz2); - } - - //Contribution (0,1,1) - double dx1 = dx0 - 0 - 2 * m_squish3d; - double dy1 = dy3; - double dz1 = dz2; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, dx1, dy1, dz1); - } - - //Contribution (1,1,1) - dx0 = dx0 - 1 - 3 * m_squish3d; - dy0 = dy0 - 1 - 3 * m_squish3d; - dz0 = dz0 - 1 - 3 * m_squish3d; - double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0; - if (attn0 > 0) - { - attn0 *= attn0; - value += attn0 * attn0 * extrapolate(xsb + 1, ysb + 1, zsb + 1, dx0, dy0, dz0); - } - } - else - { //We're inside the octahedron (Rectified 3-Simplex) in between. - double aScore; - char aPoint; - bool aIsFurtherSide; - double bScore; - char bPoint; - bool bIsFurtherSide; - - //Decide between point (0,0,1) and (1,1,0) as closest - double p1 = xins + yins; - if (p1 > 1) - { - aScore = p1 - 1; - aPoint = 0x03; - aIsFurtherSide = true; - } - else - { - aScore = 1 - p1; - aPoint = 0x04; - aIsFurtherSide = false; - } - - //Decide between point (0,1,0) and (1,0,1) as closest - double p2 = xins + zins; - if (p2 > 1) - { - bScore = p2 - 1; - bPoint = 0x05; - bIsFurtherSide = true; - } - else - { - bScore = 1 - p2; - bPoint = 0x02; - bIsFurtherSide = false; - } - - //The closest out of the two (1,0,0) and (0,1,1) will replace the furthest out of the two decided above, if closer. - double p3 = yins + zins; - if (p3 > 1) - { - double score = p3 - 1; - if (aScore <= bScore && aScore < score) - { - aScore = score; - aPoint = 0x06; - aIsFurtherSide = true; - } - else if (aScore > bScore && bScore < score) - { - bScore = score; - bPoint = 0x06; - bIsFurtherSide = true; - } - } - else - { - double score = 1 - p3; - if (aScore <= bScore && aScore < score) - { - aScore = score; - aPoint = 0x01; - aIsFurtherSide = false; - } - else if (aScore > bScore && bScore < score) - { - bScore = score; - bPoint = 0x01; - bIsFurtherSide = false; - } - } - - //Where each of the two closest points are determines how the extra two vertices are calculated. - if (aIsFurtherSide == bIsFurtherSide) - { - if (aIsFurtherSide) - { //Both closest points on (1,1,1) side - -//One of the two extra points is (1,1,1) - dx_ext0 = dx0 - 1 - 3 * m_squish3d; - dy_ext0 = dy0 - 1 - 3 * m_squish3d; - dz_ext0 = dz0 - 1 - 3 * m_squish3d; - xsv_ext0 = xsb + 1; - ysv_ext0 = ysb + 1; - zsv_ext0 = zsb + 1; - - //Other extra point is based on the shared axis. - char c = static_cast(aPoint & bPoint); - if ((c & 0x01) != 0) - { - dx_ext1 = dx0 - 2 - 2 * m_squish3d; - dy_ext1 = dy0 - 2 * m_squish3d; - dz_ext1 = dz0 - 2 * m_squish3d; - xsv_ext1 = xsb + 2; - ysv_ext1 = ysb; - zsv_ext1 = zsb; - } - else if ((c & 0x02) != 0) - { - dx_ext1 = dx0 - 2 * m_squish3d; - dy_ext1 = dy0 - 2 - 2 * m_squish3d; - dz_ext1 = dz0 - 2 * m_squish3d; - xsv_ext1 = xsb; - ysv_ext1 = ysb + 2; - zsv_ext1 = zsb; - } - else - { - dx_ext1 = dx0 - 2 * m_squish3d; - dy_ext1 = dy0 - 2 * m_squish3d; - dz_ext1 = dz0 - 2 - 2 * m_squish3d; - xsv_ext1 = xsb; - ysv_ext1 = ysb; - zsv_ext1 = zsb + 2; - } - } - else - {//Both closest points on (0,0,0) side - - //One of the two extra points is (0,0,0) - dx_ext0 = dx0; - dy_ext0 = dy0; - dz_ext0 = dz0; - xsv_ext0 = xsb; - ysv_ext0 = ysb; - zsv_ext0 = zsb; - - //Other extra point is based on the omitted axis. - char c = static_cast(aPoint | bPoint); - if ((c & 0x01) == 0) - { - dx_ext1 = dx0 + 1 - m_squish3d; - dy_ext1 = dy0 - 1 - m_squish3d; - dz_ext1 = dz0 - 1 - m_squish3d; - xsv_ext1 = xsb - 1; - ysv_ext1 = ysb + 1; - zsv_ext1 = zsb + 1; - } - else if ((c & 0x02) == 0) - { - dx_ext1 = dx0 - 1 - m_squish3d; - dy_ext1 = dy0 + 1 - m_squish3d; - dz_ext1 = dz0 - 1 - m_squish3d; - xsv_ext1 = xsb + 1; - ysv_ext1 = ysb - 1; - zsv_ext1 = zsb + 1; - } - else - { - dx_ext1 = dx0 - 1 - m_squish3d; - dy_ext1 = dy0 - 1 - m_squish3d; - dz_ext1 = dz0 + 1 - m_squish3d; - xsv_ext1 = xsb + 1; - ysv_ext1 = ysb + 1; - zsv_ext1 = zsb - 1; - } - } - } - else - { //One point on (0,0,0) side, one point on (1,1,1) side - char c1, c2; - if (aIsFurtherSide) - { - c1 = aPoint; - c2 = bPoint; - } - else - { - c1 = bPoint; - c2 = aPoint; - } - - //One contribution is a permutation of (1,1,-1) - if ((c1 & 0x01) == 0) - { - dx_ext0 = dx0 + 1 - m_squish3d; - dy_ext0 = dy0 - 1 - m_squish3d; - dz_ext0 = dz0 - 1 - m_squish3d; - xsv_ext0 = xsb - 1; - ysv_ext0 = ysb + 1; - zsv_ext0 = zsb + 1; - } - else if ((c1 & 0x02) == 0) - { - dx_ext0 = dx0 - 1 - m_squish3d; - dy_ext0 = dy0 + 1 - m_squish3d; - dz_ext0 = dz0 - 1 - m_squish3d; - xsv_ext0 = xsb + 1; - ysv_ext0 = ysb - 1; - zsv_ext0 = zsb + 1; - } - else - { - dx_ext0 = dx0 - 1 - m_squish3d; - dy_ext0 = dy0 - 1 - m_squish3d; - dz_ext0 = dz0 + 1 - m_squish3d; - xsv_ext0 = xsb + 1; - ysv_ext0 = ysb + 1; - zsv_ext0 = zsb - 1; - } - - //One contribution is a permutation of (0,0,2) - dx_ext1 = dx0 - 2 * m_squish3d; - dy_ext1 = dy0 - 2 * m_squish3d; - dz_ext1 = dz0 - 2 * m_squish3d; - xsv_ext1 = xsb; - ysv_ext1 = ysb; - zsv_ext1 = zsb; - if ((c2 & 0x01) != 0) - { - dx_ext1 -= 2; - xsv_ext1 += 2; - } - else if ((c2 & 0x02) != 0) - { - dy_ext1 -= 2; - ysv_ext1 += 2; - } - else - { - dz_ext1 -= 2; - zsv_ext1 += 2; - } - } - - //Contribution (1,0,0) - double dx1 = dx0 - 1 - m_squish3d; - double dy1 = dy0 - 0 - m_squish3d; - double dz1 = dz0 - 0 - m_squish3d; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1); - } - - //Contribution (0,1,0) - double dx2 = dx0 - 0 - m_squish3d; - double dy2 = dy0 - 1 - m_squish3d; - double dz2 = dz1; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2); - } - - //Contribution (0,0,1) - double dx3 = dx2; - double dy3 = dy1; - double dz3 = dz0 - 1 - m_squish3d; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3); - } - - //Contribution (1,1,0) - double dx4 = dx0 - 1 - 2 * m_squish3d; - double dy4 = dy0 - 1 - 2 * m_squish3d; - double dz4 = dz0 - 0 - 2 * m_squish3d; - double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4; - if (attn4 > 0) - { - attn4 *= attn4; - value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 0, dx4, dy4, dz4); - } - - //Contribution (1,0,1) - double dx5 = dx4; - double dy5 = dy0 - 0 - 2 * m_squish3d; - double dz5 = dz0 - 1 - 2 * m_squish3d; - double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5; - if (attn5 > 0) - { - attn5 *= attn5; - value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 0, zsb + 1, dx5, dy5, dz5); - } - - //Contribution (0,1,1) - double dx6 = dx0 - 0 - 2 * m_squish3d; - double dy6 = dy4; - double dz6 = dz5; - double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6; - if (attn6 > 0) - { - attn6 *= attn6; - value += attn6 * attn6 * extrapolate(xsb + 0, ysb + 1, zsb + 1, dx6, dy6, dz6); - } - } - - //First extra vertex - double attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0; - if (attn_ext0 > 0) - { - attn_ext0 *= attn_ext0; - value += attn_ext0 * attn_ext0 * extrapolate(xsv_ext0, ysv_ext0, zsv_ext0, dx_ext0, dy_ext0, dz_ext0); - } - - //Second extra vertex - double attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1; - if (attn_ext1 > 0) - { - attn_ext1 *= attn_ext1; - value += attn_ext1 * attn_ext1 * extrapolate(xsv_ext1, ysv_ext1, zsv_ext1, dx_ext1, dy_ext1, dz_ext1); - } - - return value / m_norm3d; - } - - double Noise::eval(double x, double y, double z, double w) const - { - //Place input coordinates on simplectic honeycomb. - double stretchOffset = (x + y + z + w) * m_stretch4d; - double xs = x + stretchOffset; - double ys = y + stretchOffset; - double zs = z + stretchOffset; - double ws = w + stretchOffset; - - //static_cast(floor to get simplectic honeycomb coordinates of rhombo-hypercube super-cell origin. - int xsb = static_cast(floor(xs)); - int ysb = static_cast(floor(ys)); - int zsb = static_cast(floor(zs)); - int wsb = static_cast(floor(ws)); - - //Skew out to get actual coordinates of stretched rhombo-hypercube origin. We'll need these later. - double squishOffset = (xsb + ysb + zsb + wsb) * m_squish4d; - double xb = xsb + squishOffset; - double yb = ysb + squishOffset; - double zb = zsb + squishOffset; - double wb = wsb + squishOffset; - - //Compute simplectic honeycomb coordinates relative to rhombo-hypercube origin. - double xins = xs - xsb; - double yins = ys - ysb; - double zins = zs - zsb; - double wins = ws - wsb; - - //Sum those together to get a value that determines which region we're in. - double inSum = xins + yins + zins + wins; - - //Positions relative to origin point. - double dx0 = x - xb; - double dy0 = y - yb; - double dz0 = z - zb; - double dw0 = w - wb; - - //We'll be defining these inside the next block and using them afterwards. - double dx_ext0, dy_ext0, dz_ext0, dw_ext0; - double dx_ext1, dy_ext1, dz_ext1, dw_ext1; - double dx_ext2, dy_ext2, dz_ext2, dw_ext2; - int xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0; - int xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1; - int xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2; - - double value = 0; - if (inSum <= 1) - { //We're inside the pentachoron (4-Simplex) at (0,0,0,0) - -//Determine which two of (0,0,0,1), (0,0,1,0), (0,1,0,0), (1,0,0,0) are closest. - char aPoint = 0x01; - double aScore = xins; - char bPoint = 0x02; - double bScore = yins; - if (aScore >= bScore && zins > bScore) - { - bScore = zins; - bPoint = 0x04; - } - else if (aScore < bScore && zins > aScore) - { - aScore = zins; - aPoint = 0x04; - } - if (aScore >= bScore && wins > bScore) - { - bScore = wins; - bPoint = 0x08; - } - else if (aScore < bScore && wins > aScore) - { - aScore = wins; - aPoint = 0x08; - } - - //Now we determine the three lattice points not part of the pentachoron that may contribute. - //This depends on the closest two pentachoron vertices, including (0,0,0,0) - double uins = 1 - inSum; - if (uins > aScore || uins > bScore) - { //(0,0,0,0) is one of the closest two pentachoron vertices. - char c = (bScore > aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. - if ((c & 0x01) == 0) - { - xsv_ext0 = xsb - 1; - xsv_ext1 = xsv_ext2 = xsb; - dx_ext0 = dx0 + 1; - dx_ext1 = dx_ext2 = dx0; - } - else - { - xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1; - dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 1; - } - - if ((c & 0x02) == 0) - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; - dy_ext0 = dy_ext1 = dy_ext2 = dy0; - if ((c & 0x01) == 0x01) - { - ysv_ext0 -= 1; - dy_ext0 += 1; - } - else - { - ysv_ext1 -= 1; - dy_ext1 += 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; - dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1; - } - - if ((c & 0x04) == 0) - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; - dz_ext0 = dz_ext1 = dz_ext2 = dz0; - if ((c & 0x03) != 0) - { - if ((c & 0x03) == 0x03) - { - zsv_ext0 -= 1; - dz_ext0 += 1; - } - else - { - zsv_ext1 -= 1; - dz_ext1 += 1; - } - } - else - { - zsv_ext2 -= 1; - dz_ext2 += 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; - dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1; - } - - if ((c & 0x08) == 0) - { - wsv_ext0 = wsv_ext1 = wsb; - wsv_ext2 = wsb - 1; - dw_ext0 = dw_ext1 = dw0; - dw_ext2 = dw0 + 1; - } - else - { - wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1; - dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 1; - } - } - else - { //(0,0,0,0) is not one of the closest two pentachoron vertices. - char c = static_cast(aPoint | bPoint); //Our three extra vertices are determined by the closest two. - - if ((c & 0x01) == 0) - { - xsv_ext0 = xsv_ext2 = xsb; - xsv_ext1 = xsb - 1; - dx_ext0 = dx0 - 2 * m_squish4d; - dx_ext1 = dx0 + 1 - m_squish4d; - dx_ext2 = dx0 - m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1; - dx_ext0 = dx0 - 1 - 2 * m_squish4d; - dx_ext1 = dx_ext2 = dx0 - 1 - m_squish4d; - } - - if ((c & 0x02) == 0) - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; - dy_ext0 = dy0 - 2 * m_squish4d; - dy_ext1 = dy_ext2 = dy0 - m_squish4d; - if ((c & 0x01) == 0x01) - { - ysv_ext1 -= 1; - dy_ext1 += 1; - } - else - { - ysv_ext2 -= 1; - dy_ext2 += 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; - dy_ext0 = dy0 - 1 - 2 * m_squish4d; - dy_ext1 = dy_ext2 = dy0 - 1 - m_squish4d; - } - - if ((c & 0x04) == 0) - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; - dz_ext0 = dz0 - 2 * m_squish4d; - dz_ext1 = dz_ext2 = dz0 - m_squish4d; - if ((c & 0x03) == 0x03) - { - zsv_ext1 -= 1; - dz_ext1 += 1; - } - else - { - zsv_ext2 -= 1; - dz_ext2 += 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; - dz_ext0 = dz0 - 1 - 2 * m_squish4d; - dz_ext1 = dz_ext2 = dz0 - 1 - m_squish4d; - } - - if ((c & 0x08) == 0) - { - wsv_ext0 = wsv_ext1 = wsb; - wsv_ext2 = wsb - 1; - dw_ext0 = dw0 - 2 * m_squish4d; - dw_ext1 = dw0 - m_squish4d; - dw_ext2 = dw0 + 1 - m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1; - dw_ext0 = dw0 - 1 - 2 * m_squish4d; - dw_ext1 = dw_ext2 = dw0 - 1 - m_squish4d; - } - } - - //Contribution (0,0,0,0) - double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0; - if (attn0 > 0) - { - attn0 *= attn0; - value += attn0 * attn0 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 0, dx0, dy0, dz0, dw0); - } - - //Contribution (1,0,0,0) - double dx1 = dx0 - 1 - m_squish4d; - double dy1 = dy0 - 0 - m_squish4d; - double dz1 = dz0 - 0 - m_squish4d; - double dw1 = dw0 - 0 - m_squish4d; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1); - } - - //Contribution (0,1,0,0) - double dx2 = dx0 - 0 - m_squish4d; - double dy2 = dy0 - 1 - m_squish4d; - double dz2 = dz1; - double dw2 = dw1; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2); - } - - //Contribution (0,0,1,0) - double dx3 = dx2; - double dy3 = dy1; - double dz3 = dz0 - 1 - m_squish4d; - double dw3 = dw1; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3); - } - - //Contribution (0,0,0,1) - double dx4 = dx2; - double dy4 = dy1; - double dz4 = dz1; - double dw4 = dw0 - 1 - m_squish4d; - double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; - if (attn4 > 0) - { - attn4 *= attn4; - value += attn4 * attn4 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4); - } - } - else if (inSum >= 3) - { //We're inside the pentachoron (4-Simplex) at (1,1,1,1) -//Determine which two of (1,1,1,0), (1,1,0,1), (1,0,1,1), (0,1,1,1) are closest. - char aPoint = 0x0E; - double aScore = xins; - char bPoint = 0x0D; - double bScore = yins; - if (aScore <= bScore && zins < bScore) - { - bScore = zins; - bPoint = 0x0B; - } - else if (aScore > bScore && zins < aScore) - { - aScore = zins; - aPoint = 0x0B; - } - if (aScore <= bScore && wins < bScore) - { - bScore = wins; - bPoint = 0x07; - } - else if (aScore > bScore && wins < aScore) - { - aScore = wins; - aPoint = 0x07; - } - - //Now we determine the three lattice points not part of the pentachoron that may contribute. - //This depends on the closest two pentachoron vertices, including (0,0,0,0) - double uins = 4 - inSum; - if (uins < aScore || uins < bScore) - { //(1,1,1,1) is one of the closest two pentachoron vertices. - char c = (bScore < aScore ? bPoint : aPoint); //Our other closest vertex is the closest out of a and b. - - if ((c & 0x01) != 0) - { - xsv_ext0 = xsb + 2; - xsv_ext1 = xsv_ext2 = xsb + 1; - dx_ext0 = dx0 - 2 - 4 * m_squish4d; - dx_ext1 = dx_ext2 = dx0 - 1 - 4 * m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb; - dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 4 * m_squish4d; - } - - if ((c & 0x02) != 0) - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; - dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1 - 4 * m_squish4d; - if ((c & 0x01) != 0) - { - ysv_ext1 += 1; - dy_ext1 -= 1; - } - else - { - ysv_ext0 += 1; - dy_ext0 -= 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; - dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 4 * m_squish4d; - } - - if ((c & 0x04) != 0) - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; - dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1 - 4 * m_squish4d; - if ((c & 0x03) != 0x03) - { - if ((c & 0x03) == 0) - { - zsv_ext0 += 1; - dz_ext0 -= 1; - } - else - { - zsv_ext1 += 1; - dz_ext1 -= 1; - } - } - else - { - zsv_ext2 += 1; - dz_ext2 -= 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; - dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 4 * m_squish4d; - } - - if ((c & 0x08) != 0) - { - wsv_ext0 = wsv_ext1 = wsb + 1; - wsv_ext2 = wsb + 2; - dw_ext0 = dw_ext1 = dw0 - 1 - 4 * m_squish4d; - dw_ext2 = dw0 - 2 - 4 * m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb; - dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 4 * m_squish4d; - } - } - else - { //(1,1,1,1) is not one of the closest two pentachoron vertices. - char c = static_cast(aPoint & bPoint); //Our three extra vertices are determined by the closest two. - - if ((c & 0x01) != 0) - { - xsv_ext0 = xsv_ext2 = xsb + 1; - xsv_ext1 = xsb + 2; - dx_ext0 = dx0 - 1 - 2 * m_squish4d; - dx_ext1 = dx0 - 2 - 3 * m_squish4d; - dx_ext2 = dx0 - 1 - 3 * m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb; - dx_ext0 = dx0 - 2 * m_squish4d; - dx_ext1 = dx_ext2 = dx0 - 3 * m_squish4d; - } - - if ((c & 0x02) != 0) - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1; - dy_ext0 = dy0 - 1 - 2 * m_squish4d; - dy_ext1 = dy_ext2 = dy0 - 1 - 3 * m_squish4d; - if ((c & 0x01) != 0) - { - ysv_ext2 += 1; - dy_ext2 -= 1; - } - else - { - ysv_ext1 += 1; - dy_ext1 -= 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb; - dy_ext0 = dy0 - 2 * m_squish4d; - dy_ext1 = dy_ext2 = dy0 - 3 * m_squish4d; - } - - if ((c & 0x04) != 0) - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1; - dz_ext0 = dz0 - 1 - 2 * m_squish4d; - dz_ext1 = dz_ext2 = dz0 - 1 - 3 * m_squish4d; - if ((c & 0x03) != 0) - { - zsv_ext2 += 1; - dz_ext2 -= 1; - } - else - { - zsv_ext1 += 1; - dz_ext1 -= 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb; - dz_ext0 = dz0 - 2 * m_squish4d; - dz_ext1 = dz_ext2 = dz0 - 3 * m_squish4d; - } - - if ((c & 0x08) != 0) - { - wsv_ext0 = wsv_ext1 = wsb + 1; - wsv_ext2 = wsb + 2; - dw_ext0 = dw0 - 1 - 2 * m_squish4d; - dw_ext1 = dw0 - 1 - 3 * m_squish4d; - dw_ext2 = dw0 - 2 - 3 * m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb; - dw_ext0 = dw0 - 2 * m_squish4d; - dw_ext1 = dw_ext2 = dw0 - 3 * m_squish4d; - } - } - - //Contribution (1,1,1,0) - double dx4 = dx0 - 1 - 3 * m_squish4d; - double dy4 = dy0 - 1 - 3 * m_squish4d; - double dz4 = dz0 - 1 - 3 * m_squish4d; - double dw4 = dw0 - 3 * m_squish4d; - double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; - if (attn4 > 0) - { - attn4 *= attn4; - value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4); - } - - //Contribution (1,1,0,1) - double dx3 = dx4; - double dy3 = dy4; - double dz3 = dz0 - 3 * m_squish4d; - double dw3 = dw0 - 1 - 3 * m_squish4d; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3); - } - - //Contribution (1,0,1,1) - double dx2 = dx4; - double dy2 = dy0 - 3 * m_squish4d; - double dz2 = dz4; - double dw2 = dw3; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2); - } - - //Contribution (0,1,1,1) - double dx1 = dx0 - 3 * m_squish4d; - double dz1 = dz4; - double dy1 = dy4; - double dw1 = dw3; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1); - } - - //Contribution (1,1,1,1) - dx0 = dx0 - 1 - 4 * m_squish4d; - dy0 = dy0 - 1 - 4 * m_squish4d; - dz0 = dz0 - 1 - 4 * m_squish4d; - dw0 = dw0 - 1 - 4 * m_squish4d; - double attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0; - if (attn0 > 0) - { - attn0 *= attn0; - value += attn0 * attn0 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 1, dx0, dy0, dz0, dw0); - } - } - else if (inSum <= 2) - { //We're inside the first dispentachoron (Rectified 4-Simplex) - double aScore; - char aPoint; - bool aIsBiggerSide = true; - double bScore; - char bPoint; - bool bIsBiggerSide = true; - - //Decide between (1,1,0,0) and (0,0,1,1) - if (xins + yins > zins + wins) - { - aScore = xins + yins; - aPoint = 0x03; - } - else - { - aScore = zins + wins; - aPoint = 0x0C; - } - - //Decide between (1,0,1,0) and (0,1,0,1) - if (xins + zins > yins + wins) - { - bScore = xins + zins; - bPoint = 0x05; - } - else - { - bScore = yins + wins; - bPoint = 0x0A; - } - - //Closer between (1,0,0,1) and (0,1,1,0) will replace the further of a and b, if closer. - if (xins + wins > yins + zins) - { - double score = xins + wins; - if (aScore >= bScore && score > bScore) - { - bScore = score; - bPoint = 0x09; - } - else if (aScore < bScore && score > aScore) - { - aScore = score; - aPoint = 0x09; - } - } - else - { - double score = yins + zins; - if (aScore >= bScore && score > bScore) - { - bScore = score; - bPoint = 0x06; - } - else if (aScore < bScore && score > aScore) - { - aScore = score; - aPoint = 0x06; - } - } - - //Decide if (1,0,0,0) is closer. - double p1 = 2 - inSum + xins; - if (aScore >= bScore && p1 > bScore) - { - bScore = p1; - bPoint = 0x01; - bIsBiggerSide = false; - } - else if (aScore < bScore && p1 > aScore) - { - aScore = p1; - aPoint = 0x01; - aIsBiggerSide = false; - } - - //Decide if (0,1,0,0) is closer. - double p2 = 2 - inSum + yins; - if (aScore >= bScore && p2 > bScore) - { - bScore = p2; - bPoint = 0x02; - bIsBiggerSide = false; - } - else if (aScore < bScore && p2 > aScore) - { - aScore = p2; - aPoint = 0x02; - aIsBiggerSide = false; - } - - //Decide if (0,0,1,0) is closer. - double p3 = 2 - inSum + zins; - if (aScore >= bScore && p3 > bScore) - { - bScore = p3; - bPoint = 0x04; - bIsBiggerSide = false; - } - else if (aScore < bScore && p3 > aScore) - { - aScore = p3; - aPoint = 0x04; - aIsBiggerSide = false; - } - - //Decide if (0,0,0,1) is closer. - double p4 = 2 - inSum + wins; - if (aScore >= bScore && p4 > bScore) - { - bScore = p4; - bPoint = 0x08; - bIsBiggerSide = false; - } - else if (aScore < bScore && p4 > aScore) - { - aScore = p4; - aPoint = 0x08; - aIsBiggerSide = false; - } - - //Where each of the two closest points are determines how the extra three vertices are calculated. - if (aIsBiggerSide == bIsBiggerSide) - { - if (aIsBiggerSide) - { //Both closest points on the bigger side - char c1 = static_cast(aPoint | bPoint); - char c2 = static_cast(aPoint & bPoint); - if ((c1 & 0x01) == 0) - { - xsv_ext0 = xsb; - xsv_ext1 = xsb - 1; - dx_ext0 = dx0 - 3 * m_squish4d; - dx_ext1 = dx0 + 1 - 2 * m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb + 1; - dx_ext0 = dx0 - 1 - 3 * m_squish4d; - dx_ext1 = dx0 - 1 - 2 * m_squish4d; - } - - if ((c1 & 0x02) == 0) - { - ysv_ext0 = ysb; - ysv_ext1 = ysb - 1; - dy_ext0 = dy0 - 3 * m_squish4d; - dy_ext1 = dy0 + 1 - 2 * m_squish4d; - } - else - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy0 - 1 - 3 * m_squish4d; - dy_ext1 = dy0 - 1 - 2 * m_squish4d; - } - - if ((c1 & 0x04) == 0) - { - zsv_ext0 = zsb; - zsv_ext1 = zsb - 1; - dz_ext0 = dz0 - 3 * m_squish4d; - dz_ext1 = dz0 + 1 - 2 * m_squish4d; - } - else - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz0 - 1 - 3 * m_squish4d; - dz_ext1 = dz0 - 1 - 2 * m_squish4d; - } - - if ((c1 & 0x08) == 0) - { - wsv_ext0 = wsb; - wsv_ext1 = wsb - 1; - dw_ext0 = dw0 - 3 * m_squish4d; - dw_ext1 = dw0 + 1 - 2 * m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsb + 1; - dw_ext0 = dw0 - 1 - 3 * m_squish4d; - dw_ext1 = dw0 - 1 - 2 * m_squish4d; - } - - //One combination is a permutation of (0,0,0,2) based on c2 - xsv_ext2 = xsb; - ysv_ext2 = ysb; - zsv_ext2 = zsb; - wsv_ext2 = wsb; - dx_ext2 = dx0 - 2 * m_squish4d; - dy_ext2 = dy0 - 2 * m_squish4d; - dz_ext2 = dz0 - 2 * m_squish4d; - dw_ext2 = dw0 - 2 * m_squish4d; - if ((c2 & 0x01) != 0) - { - xsv_ext2 += 2; - dx_ext2 -= 2; - } - else if ((c2 & 0x02) != 0) - { - ysv_ext2 += 2; - dy_ext2 -= 2; - } - else if ((c2 & 0x04) != 0) - { - zsv_ext2 += 2; - dz_ext2 -= 2; - } - else - { - wsv_ext2 += 2; - dw_ext2 -= 2; - } - - } - else - { //Both closest points on the smaller side - //One of the two extra points is (0,0,0,0) - xsv_ext2 = xsb; - ysv_ext2 = ysb; - zsv_ext2 = zsb; - wsv_ext2 = wsb; - dx_ext2 = dx0; - dy_ext2 = dy0; - dz_ext2 = dz0; - dw_ext2 = dw0; - - //Other two points are based on the omitted axes. - char c = static_cast(aPoint | bPoint); - - if ((c & 0x01) == 0) - { - xsv_ext0 = xsb - 1; - xsv_ext1 = xsb; - dx_ext0 = dx0 + 1 - m_squish4d; - dx_ext1 = dx0 - m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb + 1; - dx_ext0 = dx_ext1 = dx0 - 1 - m_squish4d; - } - - if ((c & 0x02) == 0) - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0 - m_squish4d; - if ((c & 0x01) == 0x01) - { - ysv_ext0 -= 1; - dy_ext0 += 1; - } - else - { - ysv_ext1 -= 1; - dy_ext1 += 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1 - m_squish4d; - } - - if ((c & 0x04) == 0) - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz_ext1 = dz0 - m_squish4d; - if ((c & 0x03) == 0x03) - { - zsv_ext0 -= 1; - dz_ext0 += 1; - } - else - { - zsv_ext1 -= 1; - dz_ext1 += 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz_ext1 = dz0 - 1 - m_squish4d; - } - - if ((c & 0x08) == 0) - { - wsv_ext0 = wsb; - wsv_ext1 = wsb - 1; - dw_ext0 = dw0 - m_squish4d; - dw_ext1 = dw0 + 1 - m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsb + 1; - dw_ext0 = dw_ext1 = dw0 - 1 - m_squish4d; - } - - } - } - else - { //One point on each "side" - char c1, c2; - if (aIsBiggerSide) - { - c1 = aPoint; - c2 = bPoint; - } - else - { - c1 = bPoint; - c2 = aPoint; - } - - //Two contributions are the bigger-sided point with each 0 replaced with -1. - if ((c1 & 0x01) == 0) - { - xsv_ext0 = xsb - 1; - xsv_ext1 = xsb; - dx_ext0 = dx0 + 1 - m_squish4d; - dx_ext1 = dx0 - m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb + 1; - dx_ext0 = dx_ext1 = dx0 - 1 - m_squish4d; - } - - if ((c1 & 0x02) == 0) - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0 - m_squish4d; - if ((c1 & 0x01) == 0x01) - { - ysv_ext0 -= 1; - dy_ext0 += 1; - } - else - { - ysv_ext1 -= 1; - dy_ext1 += 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1 - m_squish4d; - } - - if ((c1 & 0x04) == 0) - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz_ext1 = dz0 - m_squish4d; - if ((c1 & 0x03) == 0x03) - { - zsv_ext0 -= 1; - dz_ext0 += 1; - } - else - { - zsv_ext1 -= 1; - dz_ext1 += 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz_ext1 = dz0 - 1 - m_squish4d; - } - - if ((c1 & 0x08) == 0) - { - wsv_ext0 = wsb; - wsv_ext1 = wsb - 1; - dw_ext0 = dw0 - m_squish4d; - dw_ext1 = dw0 + 1 - m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsb + 1; - dw_ext0 = dw_ext1 = dw0 - 1 - m_squish4d; - } - - //One contribution is a permutation of (0,0,0,2) based on the smaller-sided point - xsv_ext2 = xsb; - ysv_ext2 = ysb; - zsv_ext2 = zsb; - wsv_ext2 = wsb; - dx_ext2 = dx0 - 2 * m_squish4d; - dy_ext2 = dy0 - 2 * m_squish4d; - dz_ext2 = dz0 - 2 * m_squish4d; - dw_ext2 = dw0 - 2 * m_squish4d; - if ((c2 & 0x01) != 0) - { - xsv_ext2 += 2; - dx_ext2 -= 2; - } - else if ((c2 & 0x02) != 0) - { - ysv_ext2 += 2; - dy_ext2 -= 2; - } - else if ((c2 & 0x04) != 0) - { - zsv_ext2 += 2; - dz_ext2 -= 2; - } - else - { - wsv_ext2 += 2; - dw_ext2 -= 2; - } - } - - //Contribution (1,0,0,0) - double dx1 = dx0 - 1 - m_squish4d; - double dy1 = dy0 - 0 - m_squish4d; - double dz1 = dz0 - 0 - m_squish4d; - double dw1 = dw0 - 0 - m_squish4d; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1); - } - - //Contribution (0,1,0,0) - double dx2 = dx0 - 0 - m_squish4d; - double dy2 = dy0 - 1 - m_squish4d; - double dz2 = dz1; - double dw2 = dw1; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2); - } - - //Contribution (0,0,1,0) - double dx3 = dx2; - double dy3 = dy1; - double dz3 = dz0 - 1 - m_squish4d; - double dw3 = dw1; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3); - } - - //Contribution (0,0,0,1) - double dx4 = dx2; - double dy4 = dy1; - double dz4 = dz1; - double dw4 = dw0 - 1 - m_squish4d; - double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; - if (attn4 > 0) - { - attn4 *= attn4; - value += attn4 * attn4 * extrapolate(xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4); - } - - //Contribution (1,1,0,0) - double dx5 = dx0 - 1 - 2 * m_squish4d; - double dy5 = dy0 - 1 - 2 * m_squish4d; - double dz5 = dz0 - 0 - 2 * m_squish4d; - double dw5 = dw0 - 0 - 2 * m_squish4d; - double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5; - if (attn5 > 0) - { - attn5 *= attn5; - value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5); - } - - //Contribution (1,0,1,0) - double dx6 = dx0 - 1 - 2 * m_squish4d; - double dy6 = dy0 - 0 - 2 * m_squish4d; - double dz6 = dz0 - 1 - 2 * m_squish4d; - double dw6 = dw0 - 0 - 2 * m_squish4d; - double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6; - if (attn6 > 0) - { - attn6 *= attn6; - value += attn6 * attn6 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6); - } - - //Contribution (1,0,0,1) - double dx7 = dx0 - 1 - 2 * m_squish4d; - double dy7 = dy0 - 0 - 2 * m_squish4d; - double dz7 = dz0 - 0 - 2 * m_squish4d; - double dw7 = dw0 - 1 - 2 * m_squish4d; - double attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7; - if (attn7 > 0) - { - attn7 *= attn7; - value += attn7 * attn7 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7); - } - - //Contribution (0,1,1,0) - double dx8 = dx0 - 0 - 2 * m_squish4d; - double dy8 = dy0 - 1 - 2 * m_squish4d; - double dz8 = dz0 - 1 - 2 * m_squish4d; - double dw8 = dw0 - 0 - 2 * m_squish4d; - double attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8; - if (attn8 > 0) - { - attn8 *= attn8; - value += attn8 * attn8 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8); - } - - //Contribution (0,1,0,1) - double dx9 = dx0 - 0 - 2 * m_squish4d; - double dy9 = dy0 - 1 - 2 * m_squish4d; - double dz9 = dz0 - 0 - 2 * m_squish4d; - double dw9 = dw0 - 1 - 2 * m_squish4d; - double attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9; - if (attn9 > 0) - { - attn9 *= attn9; - value += attn9 * attn9 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9); - } - - //Contribution (0,0,1,1) - double dx10 = dx0 - 0 - 2 * m_squish4d; - double dy10 = dy0 - 0 - 2 * m_squish4d; - double dz10 = dz0 - 1 - 2 * m_squish4d; - double dw10 = dw0 - 1 - 2 * m_squish4d; - double attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10; - if (attn10 > 0) - { - attn10 *= attn10; - value += attn10 * attn10 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10); - } - } - else - { //We're inside the second dispentachoron (Rectified 4-Simplex) - double aScore; - char aPoint; - bool aIsBiggerSide = true; - double bScore; - char bPoint; - bool bIsBiggerSide = true; - - //Decide between (0,0,1,1) and (1,1,0,0) - if (xins + yins < zins + wins) - { - aScore = xins + yins; - aPoint = 0x0C; - } - else - { - aScore = zins + wins; - aPoint = 0x03; - } - - //Decide between (0,1,0,1) and (1,0,1,0) - if (xins + zins < yins + wins) - { - bScore = xins + zins; - bPoint = 0x0A; - } - else - { - bScore = yins + wins; - bPoint = 0x05; - } - - //Closer between (0,1,1,0) and (1,0,0,1) will replace the further of a and b, if closer. - if (xins + wins < yins + zins) - { - double score = xins + wins; - if (aScore <= bScore && score < bScore) - { - bScore = score; - bPoint = 0x06; - } - else if (aScore > bScore && score < aScore) - { - aScore = score; - aPoint = 0x06; - } - } - else - { - double score = yins + zins; - if (aScore <= bScore && score < bScore) - { - bScore = score; - bPoint = 0x09; - } - else if (aScore > bScore && score < aScore) - { - aScore = score; - aPoint = 0x09; - } - } - - //Decide if (0,1,1,1) is closer. - double p1 = 3 - inSum + xins; - if (aScore <= bScore && p1 < bScore) - { - bScore = p1; - bPoint = 0x0E; - bIsBiggerSide = false; - } - else if (aScore > bScore && p1 < aScore) - { - aScore = p1; - aPoint = 0x0E; - aIsBiggerSide = false; - } - - //Decide if (1,0,1,1) is closer. - double p2 = 3 - inSum + yins; - if (aScore <= bScore && p2 < bScore) - { - bScore = p2; - bPoint = 0x0D; - bIsBiggerSide = false; - } - else if (aScore > bScore && p2 < aScore) - { - aScore = p2; - aPoint = 0x0D; - aIsBiggerSide = false; - } - - //Decide if (1,1,0,1) is closer. - double p3 = 3 - inSum + zins; - if (aScore <= bScore && p3 < bScore) - { - bScore = p3; - bPoint = 0x0B; - bIsBiggerSide = false; - } - else if (aScore > bScore && p3 < aScore) - { - aScore = p3; - aPoint = 0x0B; - aIsBiggerSide = false; - } - - //Decide if (1,1,1,0) is closer. - double p4 = 3 - inSum + wins; - if (aScore <= bScore && p4 < bScore) - { - bScore = p4; - bPoint = 0x07; - bIsBiggerSide = false; - } - else if (aScore > bScore && p4 < aScore) - { - aScore = p4; - aPoint = 0x07; - aIsBiggerSide = false; - } - - //Where each of the two closest points are determines how the extra three vertices are calculated. - if (aIsBiggerSide == bIsBiggerSide) - { - if (aIsBiggerSide) - { //Both closest points on the bigger side - char c1 = static_cast(aPoint & bPoint); - char c2 = static_cast(aPoint | bPoint); - - //Two contributions are permutations of (0,0,0,1) and (0,0,0,2) based on c1 - xsv_ext0 = xsv_ext1 = xsb; - ysv_ext0 = ysv_ext1 = ysb; - zsv_ext0 = zsv_ext1 = zsb; - wsv_ext0 = wsv_ext1 = wsb; - dx_ext0 = dx0 - m_squish4d; - dy_ext0 = dy0 - m_squish4d; - dz_ext0 = dz0 - m_squish4d; - dw_ext0 = dw0 - m_squish4d; - dx_ext1 = dx0 - 2 * m_squish4d; - dy_ext1 = dy0 - 2 * m_squish4d; - dz_ext1 = dz0 - 2 * m_squish4d; - dw_ext1 = dw0 - 2 * m_squish4d; - if ((c1 & 0x01) != 0) - { - xsv_ext0 += 1; - dx_ext0 -= 1; - xsv_ext1 += 2; - dx_ext1 -= 2; - } - else if ((c1 & 0x02) != 0) - { - ysv_ext0 += 1; - dy_ext0 -= 1; - ysv_ext1 += 2; - dy_ext1 -= 2; - } - else if ((c1 & 0x04) != 0) - { - zsv_ext0 += 1; - dz_ext0 -= 1; - zsv_ext1 += 2; - dz_ext1 -= 2; - } - else - { - wsv_ext0 += 1; - dw_ext0 -= 1; - wsv_ext1 += 2; - dw_ext1 -= 2; - } - - //One contribution is a permutation of (1,1,1,-1) based on c2 - xsv_ext2 = xsb + 1; - ysv_ext2 = ysb + 1; - zsv_ext2 = zsb + 1; - wsv_ext2 = wsb + 1; - dx_ext2 = dx0 - 1 - 2 * m_squish4d; - dy_ext2 = dy0 - 1 - 2 * m_squish4d; - dz_ext2 = dz0 - 1 - 2 * m_squish4d; - dw_ext2 = dw0 - 1 - 2 * m_squish4d; - if ((c2 & 0x01) == 0) - { - xsv_ext2 -= 2; - dx_ext2 += 2; - } - else if ((c2 & 0x02) == 0) - { - ysv_ext2 -= 2; - dy_ext2 += 2; - } - else if ((c2 & 0x04) == 0) - { - zsv_ext2 -= 2; - dz_ext2 += 2; - } - else - { - wsv_ext2 -= 2; - dw_ext2 += 2; - } - } - else - { //Both closest points on the smaller side - //One of the two extra points is (1,1,1,1) - xsv_ext2 = xsb + 1; - ysv_ext2 = ysb + 1; - zsv_ext2 = zsb + 1; - wsv_ext2 = wsb + 1; - dx_ext2 = dx0 - 1 - 4 * m_squish4d; - dy_ext2 = dy0 - 1 - 4 * m_squish4d; - dz_ext2 = dz0 - 1 - 4 * m_squish4d; - dw_ext2 = dw0 - 1 - 4 * m_squish4d; - - //Other two points are based on the shared axes. - char c = static_cast(aPoint & bPoint); - - if ((c & 0x01) != 0) - { - xsv_ext0 = xsb + 2; - xsv_ext1 = xsb + 1; - dx_ext0 = dx0 - 2 - 3 * m_squish4d; - dx_ext1 = dx0 - 1 - 3 * m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb; - dx_ext0 = dx_ext1 = dx0 - 3 * m_squish4d; - } - - if ((c & 0x02) != 0) - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish4d; - if ((c & 0x01) == 0) - { - ysv_ext0 += 1; - dy_ext0 -= 1; - } - else - { - ysv_ext1 += 1; - dy_ext1 -= 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0 - 3 * m_squish4d; - } - - if ((c & 0x04) != 0) - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz_ext1 = dz0 - 1 - 3 * m_squish4d; - if ((c & 0x03) == 0) - { - zsv_ext0 += 1; - dz_ext0 -= 1; - } - else - { - zsv_ext1 += 1; - dz_ext1 -= 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz_ext1 = dz0 - 3 * m_squish4d; - } - - if ((c & 0x08) != 0) - { - wsv_ext0 = wsb + 1; - wsv_ext1 = wsb + 2; - dw_ext0 = dw0 - 1 - 3 * m_squish4d; - dw_ext1 = dw0 - 2 - 3 * m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsb; - dw_ext0 = dw_ext1 = dw0 - 3 * m_squish4d; - } - } - } - else - { //One point on each "side" - char c1, c2; - if (aIsBiggerSide) - { - c1 = aPoint; - c2 = bPoint; - } - else - { - c1 = bPoint; - c2 = aPoint; - } - - //Two contributions are the bigger-sided point with each 1 replaced with 2. - if ((c1 & 0x01) != 0) - { - xsv_ext0 = xsb + 2; - xsv_ext1 = xsb + 1; - dx_ext0 = dx0 - 2 - 3 * m_squish4d; - dx_ext1 = dx0 - 1 - 3 * m_squish4d; - } - else - { - xsv_ext0 = xsv_ext1 = xsb; - dx_ext0 = dx_ext1 = dx0 - 3 * m_squish4d; - } - - if ((c1 & 0x02) != 0) - { - ysv_ext0 = ysv_ext1 = ysb + 1; - dy_ext0 = dy_ext1 = dy0 - 1 - 3 * m_squish4d; - if ((c1 & 0x01) == 0) - { - ysv_ext0 += 1; - dy_ext0 -= 1; - } - else - { - ysv_ext1 += 1; - dy_ext1 -= 1; - } - } - else - { - ysv_ext0 = ysv_ext1 = ysb; - dy_ext0 = dy_ext1 = dy0 - 3 * m_squish4d; - } - - if ((c1 & 0x04) != 0) - { - zsv_ext0 = zsv_ext1 = zsb + 1; - dz_ext0 = dz_ext1 = dz0 - 1 - 3 * m_squish4d; - if ((c1 & 0x03) == 0) - { - zsv_ext0 += 1; - dz_ext0 -= 1; - } - else - { - zsv_ext1 += 1; - dz_ext1 -= 1; - } - } - else - { - zsv_ext0 = zsv_ext1 = zsb; - dz_ext0 = dz_ext1 = dz0 - 3 * m_squish4d; - } - - if ((c1 & 0x08) != 0) - { - wsv_ext0 = wsb + 1; - wsv_ext1 = wsb + 2; - dw_ext0 = dw0 - 1 - 3 * m_squish4d; - dw_ext1 = dw0 - 2 - 3 * m_squish4d; - } - else - { - wsv_ext0 = wsv_ext1 = wsb; - dw_ext0 = dw_ext1 = dw0 - 3 * m_squish4d; - } - - //One contribution is a permutation of (1,1,1,-1) based on the smaller-sided point - xsv_ext2 = xsb + 1; - ysv_ext2 = ysb + 1; - zsv_ext2 = zsb + 1; - wsv_ext2 = wsb + 1; - dx_ext2 = dx0 - 1 - 2 * m_squish4d; - dy_ext2 = dy0 - 1 - 2 * m_squish4d; - dz_ext2 = dz0 - 1 - 2 * m_squish4d; - dw_ext2 = dw0 - 1 - 2 * m_squish4d; - if ((c2 & 0x01) == 0) - { - xsv_ext2 -= 2; - dx_ext2 += 2; - } - else if ((c2 & 0x02) == 0) - { - ysv_ext2 -= 2; - dy_ext2 += 2; - } - else if ((c2 & 0x04) == 0) - { - zsv_ext2 -= 2; - dz_ext2 += 2; - } - else - { - wsv_ext2 -= 2; - dw_ext2 += 2; - } - } - - //Contribution (1,1,1,0) - double dx4 = dx0 - 1 - 3 * m_squish4d; - double dy4 = dy0 - 1 - 3 * m_squish4d; - double dz4 = dz0 - 1 - 3 * m_squish4d; - double dw4 = dw0 - 3 * m_squish4d; - double attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4; - if (attn4 > 0) - { - attn4 *= attn4; - value += attn4 * attn4 * extrapolate(xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4); - } - - //Contribution (1,1,0,1) - double dx3 = dx4; - double dy3 = dy4; - double dz3 = dz0 - 3 * m_squish4d; - double dw3 = dw0 - 1 - 3 * m_squish4d; - double attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3; - if (attn3 > 0) - { - attn3 *= attn3; - value += attn3 * attn3 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3); - } - - //Contribution (1,0,1,1) - double dx2 = dx4; - double dy2 = dy0 - 3 * m_squish4d; - double dz2 = dz4; - double dw2 = dw3; - double attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2; - if (attn2 > 0) - { - attn2 *= attn2; - value += attn2 * attn2 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2); - } - - //Contribution (0,1,1,1) - double dx1 = dx0 - 3 * m_squish4d; - double dz1 = dz4; - double dy1 = dy4; - double dw1 = dw3; - double attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1; - if (attn1 > 0) - { - attn1 *= attn1; - value += attn1 * attn1 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1); - } - - //Contribution (1,1,0,0) - double dx5 = dx0 - 1 - 2 * m_squish4d; - double dy5 = dy0 - 1 - 2 * m_squish4d; - double dz5 = dz0 - 0 - 2 * m_squish4d; - double dw5 = dw0 - 0 - 2 * m_squish4d; - double attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5; - if (attn5 > 0) - { - attn5 *= attn5; - value += attn5 * attn5 * extrapolate(xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5); - } - - //Contribution (1,0,1,0) - double dx6 = dx0 - 1 - 2 * m_squish4d; - double dy6 = dy0 - 0 - 2 * m_squish4d; - double dz6 = dz0 - 1 - 2 * m_squish4d; - double dw6 = dw0 - 0 - 2 * m_squish4d; - double attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6; - if (attn6 > 0) - { - attn6 *= attn6; - value += attn6 * attn6 * extrapolate(xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6); - } - - //Contribution (1,0,0,1) - double dx7 = dx0 - 1 - 2 * m_squish4d; - double dy7 = dy0 - 0 - 2 * m_squish4d; - double dz7 = dz0 - 0 - 2 * m_squish4d; - double dw7 = dw0 - 1 - 2 * m_squish4d; - double attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7; - if (attn7 > 0) - { - attn7 *= attn7; - value += attn7 * attn7 * extrapolate(xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7); - } - - //Contribution (0,1,1,0) - double dx8 = dx0 - 0 - 2 * m_squish4d; - double dy8 = dy0 - 1 - 2 * m_squish4d; - double dz8 = dz0 - 1 - 2 * m_squish4d; - double dw8 = dw0 - 0 - 2 * m_squish4d; - double attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8; - if (attn8 > 0) - { - attn8 *= attn8; - value += attn8 * attn8 * extrapolate(xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8); - } - - //Contribution (0,1,0,1) - double dx9 = dx0 - 0 - 2 * m_squish4d; - double dy9 = dy0 - 1 - 2 * m_squish4d; - double dz9 = dz0 - 0 - 2 * m_squish4d; - double dw9 = dw0 - 1 - 2 * m_squish4d; - double attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9; - if (attn9 > 0) - { - attn9 *= attn9; - value += attn9 * attn9 * extrapolate(xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9); - } - - //Contribution (0,0,1,1) - double dx10 = dx0 - 0 - 2 * m_squish4d; - double dy10 = dy0 - 0 - 2 * m_squish4d; - double dz10 = dz0 - 1 - 2 * m_squish4d; - double dw10 = dw0 - 1 - 2 * m_squish4d; - double attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10; - if (attn10 > 0) - { - attn10 *= attn10; - value += attn10 * attn10 * extrapolate(xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10); - } - } - - //First extra vertex - double attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0 - dw_ext0 * dw_ext0; - if (attn_ext0 > 0) - { - attn_ext0 *= attn_ext0; - value += attn_ext0 * attn_ext0 * extrapolate(xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0, dx_ext0, dy_ext0, dz_ext0, dw_ext0); - } - - //Second extra vertex - double attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1 - dw_ext1 * dw_ext1; - if (attn_ext1 > 0) - { - attn_ext1 *= attn_ext1; - value += attn_ext1 * attn_ext1 * extrapolate(xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1, dx_ext1, dy_ext1, dz_ext1, dw_ext1); - } - - //Third extra vertex - double attn_ext2 = 2 - dx_ext2 * dx_ext2 - dy_ext2 * dy_ext2 - dz_ext2 * dz_ext2 - dw_ext2 * dw_ext2; - if (attn_ext2 > 0) - { - attn_ext2 *= attn_ext2; - value += attn_ext2 * attn_ext2 * extrapolate(xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2, dx_ext2, dy_ext2, dz_ext2, dw_ext2); - } - - return value / m_norm4d; - } - - double Noise::extrapolate(int xsb, int ysb, double dx, double dy) const - { - int index = m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] & 0x0E; - return m_gradients2d[index] * dx - + m_gradients2d[index + 1] * dy; - } - - double Noise::extrapolate(int xsb, int ysb, int zsb, double dx, double dy, double dz) const - { - int index = m_permGradIndex3d[(m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF]; - return m_gradients3d[index] * dx - + m_gradients3d[index + 1] * dy - + m_gradients3d[index + 2] * dz; - } - - double Noise::extrapolate(int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw) const - { - int index = m_perm[(m_perm[(m_perm[(m_perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF] + wsb) & 0xFF] & 0xFC; - return m_gradients4d[index] * dx - + m_gradients4d[index + 1] * dy - + m_gradients4d[index + 2] * dz - + m_gradients4d[index + 3] * dw; - } - -} \ No newline at end of file diff --git a/SQCSim2021/opensimplex.h b/SQCSim2021/opensimplex.h deleted file mode 100644 index 4b1b1f4..0000000 --- a/SQCSim2021/opensimplex.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - Open Simple Noise for C++ - - Port to C++ from https://gist.github.com/KdotJPG/b1270127455a94ac5d19 - by Rickard Lundberg, 2019. -*/ -#ifndef _OPENSIMPLEX_H__ -#define _OPENSIMPLEX_H__ - -#include -#include - -namespace OpenSimplexNoise -{ - class Noise - { - public: - Noise(); - Noise(int64_t seed); - //2D Open Simplex Noise. - double eval(const double x, const double y) const; - //3D Open Simplex Noise. - double eval(double x, double y, double z) const; - //4D Open Simplex Noise. - double eval(double x, double y, double z, double w) const; - private: - const double m_stretch2d; - const double m_squish2d; - const double m_stretch3d; - const double m_squish3d; - const double m_stretch4d; - const double m_squish4d; - - const double m_norm2d; - const double m_norm3d; - const double m_norm4d; - - const long m_defaultSeed; - - std::array m_perm; - std::array m_permGradIndex3d; - std::array m_gradients2d; - std::array m_gradients3d; - std::array m_gradients4d; - double extrapolate(int xsb, int ysb, double dx, double dy) const; - double extrapolate(int xsb, int ysb, int zsb, double dx, double dy, double dz) const; - double extrapolate(int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw) const; - }; -} - -#endif // _OPENSIMPLEX_H__ \ No newline at end of file diff --git a/SQCSim2021/player.h b/SQCSim2021/player.h index 239b550..d8f46f3 100644 --- a/SQCSim2021/player.h +++ b/SQCSim2021/player.h @@ -1,5 +1,5 @@ -#ifndef _PLAYER_H__ -#define _PLAYER_H__ +#ifndef CLI_PLAYER_H__ +#define CLI_PLAYER_H__ #include "../SQCSim-common/vector3.h" #include "transformation.h" #include "audio.h" diff --git a/SQCSim2021/transformation.h b/SQCSim2021/transformation.h index 764a781..72e0690 100644 --- a/SQCSim2021/transformation.h +++ b/SQCSim2021/transformation.h @@ -1,9 +1,10 @@ #ifndef TRANSFORMATION_H__ #define TRANSFORMATION_H__ -#include "matrix4.h" -#include "../SQCSim-common/vector3.h" #include +#include "../SQCSim-common/matrix4.h" +#include "../SQCSim-common/vector3.h" +#include "define.h" class Transformation { diff --git a/SQCSim2021/vertexbuffer.h b/SQCSim2021/vertexbuffer.h index b44f8f8..845eefe 100644 --- a/SQCSim2021/vertexbuffer.h +++ b/SQCSim2021/vertexbuffer.h @@ -1,8 +1,8 @@ #ifndef VERTEXBUFFER_H__ #define VERTEXBUFFER_H__ -#include "define.h" #include +#include "define.h" class VertexBuffer { diff --git a/SQCSim2021/world.h b/SQCSim2021/world.h index 486e2d2..d2b0dc1 100644 --- a/SQCSim2021/world.h +++ b/SQCSim2021/world.h @@ -5,14 +5,14 @@ #include #include #include -#include "define.h" -#include "chunk.h" -#include "array2d.h" #include "../SQCSim-common/vector3.h" +#include "../SQCSim-common/array2d.h" +#include "bullet.h" +#include "define.h" #include "player.h" +#include "chunk.h" #include "transformation.h" #include "shader.h" -#include "bullet.h" #include "textureatlas.h" class Chunk; From 6bea176979f662d83af5fa8bea734838cdec16e5 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Fri, 29 Sep 2023 17:02:57 -0400 Subject: [PATCH 13/19] Cleanup de l'objet Bullet --- SQCSim-common/bullet.cpp | 13 ++++++----- SQCSim-common/bullet.h | 17 ++++++++------ SQCSim2021/SQCSim2021.vcxproj | 2 -- SQCSim2021/SQCSim2021.vcxproj.filters | 6 ----- SQCSim2021/bullet.cpp | 32 --------------------------- SQCSim2021/bullet.h | 27 ---------------------- SQCSim2021/engine.cpp | 6 ++--- SQCSim2021/engine.h | 2 +- SQCSim2021/world.h | 2 +- 9 files changed, 23 insertions(+), 84 deletions(-) delete mode 100644 SQCSim2021/bullet.cpp delete mode 100644 SQCSim2021/bullet.h diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index 52824d5..5c4e6c4 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -1,10 +1,9 @@ #include "bullet.h" #include "world.h" -Bullet::Bullet(Player& player) { - m_startpos = m_currentpos = player.GetPOV() + player.GetDirection(); - m_velocity = player.GetDirection(); -} +Bullet::Bullet(Vector3f pos, Vector3f dir) : m_startpos(pos), m_currentpos(pos), m_velocity(dir) {} + +Bullet::Bullet(Vector3f pos, Vector3f dir, uint64_t tid): m_startpos(pos), m_currentpos(pos), m_velocity(dir), m_tid(tid) {} Bullet::~Bullet() {} @@ -31,6 +30,10 @@ void Bullet::Transpose(int& x, int& z) { m_startpos.z -= z * CHUNK_SIZE_Z; } -Vector3f& Bullet::getPos() { +Vector3f Bullet::getPos() { return m_currentpos; } + +uint64_t Bullet::getTeamID(){ + return m_tid; +} diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h index 599eab6..d17000e 100644 --- a/SQCSim-common/bullet.h +++ b/SQCSim-common/bullet.h @@ -1,23 +1,26 @@ #ifndef BULLET_H__ #define BULLET_H__ - -#include "player.h" +#include "define.h" +#include "vector3.h" class World; class Bullet { public: - Bullet(Player& player); + Bullet(Vector3f pos, Vector3f dir); + Bullet(Vector3f pos, Vector3f dir, uint64_t tid); ~Bullet(); bool Update(World* world, float elapsedtime); void Transpose(int& x, int& z); - Vector3f& getPos(); + Vector3f getPos(); + uint64_t getTeamID(); private: - Vector3f m_startpos; - Vector3f m_currentpos; - Vector3f m_velocity; + Vector3f m_startpos, + m_currentpos, + m_velocity; + uint64_t m_tid = 0; }; #endif // BULLET_H__ diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 005bcc5..02c2b51 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -20,7 +20,6 @@ - @@ -38,7 +37,6 @@ - diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index ec7b7d6..0e371d0 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -56,9 +56,6 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - @@ -106,8 +103,5 @@ Fichiers sources - - Fichiers sources - \ No newline at end of file diff --git a/SQCSim2021/bullet.cpp b/SQCSim2021/bullet.cpp deleted file mode 100644 index 38f4901..0000000 --- a/SQCSim2021/bullet.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "bullet.h" -#include "world.h" - -Bullet::Bullet(Player& player) { - m_startpos = m_currentpos = player.GetPOV() + player.GetDirection(); - m_velocity = player.GetDirection(); -} - -Bullet::~Bullet() {} - -bool Bullet::Update(World* world, Transformation& tran, float elapsedtime) { - for (int x = 0; x < 1000; ++x) { - m_currentpos += m_velocity * elapsedtime; - - if (!world->ChunkAt(m_currentpos)) - return true; - else if (world->BlockAt(m_currentpos) != BTYPE_AIR) { - world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos); - return true; - } - else if ((m_currentpos - m_startpos).Length() > VIEW_DISTANCE) return true; - } - - return false; -} - -void Bullet::Transpose(int& x, int& z) { - m_currentpos.x -= x * CHUNK_SIZE_X; - m_currentpos.z -= z * CHUNK_SIZE_Z; - m_startpos.x -= x * CHUNK_SIZE_X; - m_startpos.z -= z * CHUNK_SIZE_Z; -} diff --git a/SQCSim2021/bullet.h b/SQCSim2021/bullet.h deleted file mode 100644 index ce706f8..0000000 --- a/SQCSim2021/bullet.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef BULLET_H__ -#define BULLET_H__ - -#include "audio.h" -#include "player.h" -#include "vertexbuffer.h" -#include "texture.h" - -class World; - -class Bullet { -public: - Bullet(Player& player); - ~Bullet(); - - bool Update(World* world, Transformation& tran, float elapsedtime); - void Transpose(int& x, int& z); - -private: - Vector3f m_startpos; - Vector3f m_currentpos; - Vector3f m_velocity; - -}; - -#endif // BULLET_H__ - diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 5f21e66..6599890 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -374,12 +374,12 @@ void Engine::Render(float elapsedTime) { else if (bulletTime <= 0.f) { for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). if (!m_bullets[x]) { - m_bullets[x] = new Bullet(m_player); + m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); break; } else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la première balle de l'array. m_bullets[0]->~Bullet(); - m_bullets[0] = new Bullet(m_player); + m_bullets[0] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); } bulletTime = .1f; m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "windowsaccount.wav", m_player.GetPOV(), m_player.GetDirection() * 10, .5f); @@ -396,7 +396,7 @@ void Engine::Render(float elapsedTime) { for (int x = 0; x < MAX_BULLETS; ++x) // Array de bullets en jeu. if (m_bullets[x]) - if (m_bullets[x]->Update(&m_world, all, elapsedTime)) { + if (m_bullets[x]->Update(&m_world, elapsedTime)) { m_bullets[x]->~Bullet(); m_bullets[x] = nullptr; } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 5220cf8..8c525b6 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -5,8 +5,8 @@ #include #include "../SQCSim-common/array2d.h" #include "../SQCSim-common/blockinfo.h" +#include "../SQCSim-common/bullet.h" #include "define.h" -#include "bullet.h" #include "openglcontext.h" #include "texture.h" #include "transformation.h" diff --git a/SQCSim2021/world.h b/SQCSim2021/world.h index d2b0dc1..0b88748 100644 --- a/SQCSim2021/world.h +++ b/SQCSim2021/world.h @@ -7,7 +7,7 @@ #include #include "../SQCSim-common/vector3.h" #include "../SQCSim-common/array2d.h" -#include "bullet.h" +#include "../SQCSim-common/bullet.h" #include "define.h" #include "player.h" #include "chunk.h" From ace555a93e4b74e4f2e051664ce44d032ab719d1 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 30 Sep 2023 10:27:05 -0400 Subject: [PATCH 14/19] Ajouts dans netprotocol --- SQCSim-common/netprotocol.cpp | 57 +++++++++++++++++++++++++++++++++++ SQCSim-common/netprotocol.h | 3 +- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index b692201..d4edca2 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -1,7 +1,64 @@ #include "netprotocol.h" void netprot::Serialize(Input* in, char* buf[], uint32_t* buflen) { + *buf[0] = netprot::PACKET_TYPE::INPUT; + uint64_t time = in->timestamp; + uint8_t time8[sizeof(uint64_t)] = {(time >> 56) & 0xFF, + (time >> 48) & 0xFF, + (time >> 40) & 0xFF, + (time >> 32) & 0xFF, + (time >> 24) & 0xFF, + (time >> 16) & 0xFF, + (time >> 8 ) & 0xFF, + time & 0xFF}; + + memcpy(*buf + 1, time8, sizeof(uint64_t)); + + uint64_t sid = in->sid; + uint8_t sid8[sizeof(uint64_t)] = {(sid >> 56) & 0xFF, + (sid >> 48) & 0xFF, + (sid >> 40) & 0xFF, + (sid >> 32) & 0xFF, + (sid >> 24) & 0xFF, + (sid >> 16) & 0xFF, + (sid >> 8 ) & 0xFF, + sid & 0xFF}; + + memcpy(*buf + sizeof(uint64_t) + 1, sid8, sizeof(uint64_t)); + + Keys keys = in->keys; + uint8_t keys8 = // Reste un bit. + keys.forward & 0b10000000 | + keys.backward & 0b01000000 | + keys.left & 0b00100000 | + keys.right & 0b00010000 | + keys.jump & 0b00001000 | + keys.shoot & 0b00000100 | + keys.block & 0b00000010 ; + + memcpy(*buf + sizeof(uint64_t) + 2, &keys8, sizeof(uint8_t)); + + uint32_t vec[3]; + memcpy(vec, &in->direction, sizeof(Vector3f)); // Pour dénaturer les floats. + + uint8_t vec8[3 * sizeof(uint32_t)] = { + (vec[0] >> 24) & 0xFF, + (vec[0] >> 16) & 0xFF, + (vec[0] >> 8) & 0xFF, + vec[0] & 0xFF, + (vec[1] >> 24) & 0xFF, + (vec[1] >> 16) & 0xFF, + (vec[1] >> 8) & 0xFF, + vec[1] & 0xFF, + (vec[2] >> 24) & 0xFF, + (vec[2] >> 16) & 0xFF, + (vec[2] >> 8) & 0xFF, + vec[2] & 0xFF}; + + memcpy(*buf + sizeof(uint64_t) + 3, vec8, sizeof(uint32_t) * 3); + + *buflen = sizeof(uint64_t) + 3 + sizeof(uint32_t) * 3; } void netprot::Serialize(Output* out, char* buf[], uint32_t* buflen) { diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 7f93349..bdaf0a7 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -24,7 +24,8 @@ namespace netprot { left, right, jump, - shoot; + shoot, + block; }; struct States { From 033365c9615e62fee7cb2e4e9ef1d3ac06087606 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 30 Sep 2023 14:46:54 -0400 Subject: [PATCH 15/19] =?UTF-8?q?Ind=C3=A9pendance!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/SQCSim-common.vcxproj | 2 + SQCSim-common/SQCSim-common.vcxproj.filters | 6 + SQCSim-common/chunk.cpp | 35 +- SQCSim-common/chunk.h | 11 +- SQCSim-common/define.h | 10 +- SQCSim-common/player.cpp | 40 +- SQCSim-common/player.h | 22 +- .../transformation.cpp | 8 +- .../transformation.h | 6 +- SQCSim-common/world.cpp | 321 ++++++++++- SQCSim-common/world.h | 20 +- SQCSim2021/SQCSim2021.vcxproj | 12 +- SQCSim2021/SQCSim2021.vcxproj.filters | 36 +- SQCSim2021/audio.h | 2 +- SQCSim2021/chunk.cpp | 234 -------- SQCSim2021/chunk.h | 49 -- SQCSim2021/define.h | 8 - SQCSim2021/engine.cpp | 44 +- SQCSim2021/engine.h | 10 +- SQCSim2021/mesh.cpp | 120 +++++ SQCSim2021/mesh.h | 32 ++ SQCSim2021/openglcontext.h | 3 +- SQCSim2021/player.cpp | 209 -------- SQCSim2021/player.h | 43 -- SQCSim2021/skybox.cpp | 2 +- SQCSim2021/skybox.h | 2 +- SQCSim2021/texture.h | 4 +- SQCSim2021/textureatlas.h | 2 +- SQCSim2021/world.cpp | 506 ------------------ SQCSim2021/world.h | 59 -- SQCSim2021/worldrenderer.cpp | 213 ++++++++ SQCSim2021/worldrenderer.h | 23 + 32 files changed, 890 insertions(+), 1204 deletions(-) rename {SQCSim2021 => SQCSim-common}/transformation.cpp (91%) rename {SQCSim2021 => SQCSim-common}/transformation.h (87%) delete mode 100644 SQCSim2021/chunk.cpp delete mode 100644 SQCSim2021/chunk.h create mode 100644 SQCSim2021/mesh.cpp create mode 100644 SQCSim2021/mesh.h delete mode 100644 SQCSim2021/player.cpp delete mode 100644 SQCSim2021/player.h delete mode 100644 SQCSim2021/world.cpp delete mode 100644 SQCSim2021/world.h create mode 100644 SQCSim2021/worldrenderer.cpp create mode 100644 SQCSim2021/worldrenderer.h diff --git a/SQCSim-common/SQCSim-common.vcxproj b/SQCSim-common/SQCSim-common.vcxproj index 15265fb..991cd1d 100644 --- a/SQCSim-common/SQCSim-common.vcxproj +++ b/SQCSim-common/SQCSim-common.vcxproj @@ -138,6 +138,7 @@ + @@ -148,6 +149,7 @@ + diff --git a/SQCSim-common/SQCSim-common.vcxproj.filters b/SQCSim-common/SQCSim-common.vcxproj.filters index a98dd18..26c6c05 100644 --- a/SQCSim-common/SQCSim-common.vcxproj.filters +++ b/SQCSim-common/SQCSim-common.vcxproj.filters @@ -51,6 +51,9 @@ Fichiers d%27en-tête + + Fichiers d%27en-tête + @@ -74,5 +77,8 @@ Fichiers sources + + Fichiers sources + \ No newline at end of file diff --git a/SQCSim-common/chunk.cpp b/SQCSim-common/chunk.cpp index 7bfc690..cb93218 100644 --- a/SQCSim-common/chunk.cpp +++ b/SQCSim-common/chunk.cpp @@ -1,13 +1,13 @@ #include "chunk.h" #include "world.h" -Chunk::Chunk(unsigned int x, unsigned int y) : m_posX(x), m_posY(y) { +Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y) { //std::ostringstream pos; // Vérifie l'existence d'un fichier .chunk avec sa position. //pos << CHUNK_PATH << x << '_' << y << ".chunk"; //std::ifstream input(pos.str(), std::fstream::binary); //if (input.fail()) { - OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(SEED); + OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(seed); m_blocks.Reset(BTYPE_AIR); for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Montagnes @@ -98,14 +98,45 @@ Chunk::~Chunk() { void Chunk::RemoveBlock(int x, int y, int z, World* world) { m_blocks.Set(x, y, z, BTYPE_AIR); + CheckNeighbors(x, y, world); + m_isDirty = true; } void Chunk::SetBlock(int x, int y, int z, BlockType type, World* world) { m_blocks.Set(x, y, z, type); + if (world) CheckNeighbors(x, z, world); // Si nullptr, ne pas vérifier les chunks voisines. + m_isDirty = true; } BlockType Chunk::GetBlock(int x, int y, int z) { return m_blocks.Get(x, y, z); } +void Chunk::CheckNeighbors(unsigned int x, unsigned int z, World* world) { + unsigned int cx, cy; + + world->GetScope(cx, cy); + + if (x == 0 && m_posX - cx >= 0 && + world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)) + world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty(); + else if (x == CHUNK_SIZE_X - 1 && m_posX - cx < WORLD_SIZE_X && + world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)) + world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty(); + + if (z == 0 && m_posY - cy >= 0 && + world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z)) + world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z)->MakeDirty(); + else if (z == CHUNK_SIZE_X - 1 && m_posY - cy < WORLD_SIZE_Y && + world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z)) + world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z)->MakeDirty(); +} + void Chunk::GetPosition(unsigned int& x, unsigned int& y) const { x = m_posX; y = m_posY; } +bool Chunk::IsDirty() const { return m_isDirty; } + +void Chunk::MakeDirty() { m_isDirty = true; } + +void Chunk::MakeClean() { m_isDirty = false; } + void Chunk::MakeModified() { m_isModified = true; } + diff --git a/SQCSim-common/chunk.h b/SQCSim-common/chunk.h index ec015ba..ea4a949 100644 --- a/SQCSim-common/chunk.h +++ b/SQCSim-common/chunk.h @@ -1,30 +1,35 @@ #ifndef CHUNK_H__ #define CHUNK_H__ #include "define.h" -#include "array3d.h" #include "array2d.h" +#include "array3d.h" #include "blockinfo.h" #include "opensimplex.h" class World; class Chunk { - protected: + private: Array3d m_blocks = Array3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z); + bool m_isDirty = true; bool m_isModified = false; unsigned int m_posX; // Position du chunk dans l'array constituant le monde. unsigned int m_posY; public: - Chunk(unsigned int x, unsigned int y); + Chunk(unsigned int x, unsigned int y, int64_t seed); ~Chunk(); void RemoveBlock(int x, int y, int z, World* world); void SetBlock(int x, int y, int z, BlockType type, World* world); BlockType GetBlock(int x, int y, int z); + void CheckNeighbors(unsigned int x, unsigned int z, World* world); void GetPosition(unsigned int& x, unsigned int& y) const; + bool IsDirty() const; + void MakeDirty(); + void MakeClean(); void MakeModified(); }; diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 0342359..f02d719 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -17,7 +17,15 @@ #define WORLD_SIZE_X 64 #define WORLD_SIZE_Y 64 -#define VIEW_DISTANCE 512 +#define FRAMES_RENDER_CHUNKS 1 +#define FRAMES_UPDATE_CHUNKS 1 +#define FRAMES_DELETE_CHUNKS 1 + +#define THREADS_GENERATE_CHUNKS 8 +#define THREADS_UPDATE_CHUNKS 3 +#define THREADS_DELETE_CHUNKS 3 + +#define VIEW_DISTANCE 512 // Si les chunks arrêtent de s'afficher pendant une game et qu'il y a un access violation quand tu quitte, il faut augmenter ce chiffre. #define TEXTURE_SIZE 512 #define MAX_BULLETS 512 diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index b42968a..2043dd9 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -4,6 +4,8 @@ Player::Player(const Vector3f& position, float rotX, float rotY) : m_position(position), m_rotX(rotX), m_rotY(rotY) { m_velocity = Vector3f(0, 0, 0); m_airborne = true; + m_hp = 0.75f; //TODO: Remettre à 1.0f + m_username = "Zelda Bee-Bop"; } void Player::TurnLeftRight(float value) { @@ -64,7 +66,8 @@ Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jum return delta; } -void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { +Player::Sound Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { + Player::Sound snd = Player::Sound::NOSOUND; static float timing = 0.f; /* Gestion de collisions */ BlockType bt1, bt2, bt3; @@ -85,6 +88,7 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { if (bt3 != BTYPE_AIR) { m_velocity.y = 0; if (timing == 0.f) { + if (m_airborne) snd = Player::Sound::FALL; timing = .3f; } m_airborne = false; @@ -137,10 +141,10 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { m_velocity.x += input.x * 2.f * elapsedTime; m_velocity.z += input.z * 2.f * elapsedTime; - if (input.x == 0.f) + if (input.x == 0.f) m_velocity.x *= .8f; - - if (input.z == 0.f) + + if (input.z == 0.f) m_velocity.z *= .8f; } else { @@ -160,6 +164,30 @@ void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) { m_velocity.y = vy; m_position += m_velocity; + + static float bobbingtime = 0; // Gestion de la caméra + static bool leftright = false; + static bool isStep = false; + if (bobbingtime <= 360.f) + bobbingtime += elapsedTime * 20.f; else bobbingtime = 0; + + if ((sin(bobbingtime) - 0.5f) * (abs(m_velocity.x) + abs(m_velocity.z)) < -.2f && !m_airborne) { + if (!isStep) { + snd = Player::Sound::STEP; + } + isStep = true; + } + else isStep = false; + m_POV = m_position.y; + m_POV += m_airborne ? 0 : (sin(bobbingtime) - 0.5f) * (abs(m_velocity.x) + abs(m_velocity.z)) * .2f; + + return snd; +} + +void Player::ApplyTransformation(Transformation& transformation, bool rel) const { + transformation.ApplyRotation(-m_rotX, 1, 0, 0); + transformation.ApplyRotation(-m_rotY, 0, 1, 0); + if (rel) transformation.ApplyTranslation(-GetPOV()); } Vector3f Player::GetPosition() const { return Vector3f(m_position.x + CHUNK_SIZE_X * WORLD_SIZE_X / 2, m_position.y, m_position.z + CHUNK_SIZE_Z * WORLD_SIZE_Y / 2); } @@ -170,6 +198,10 @@ Vector3f Player::GetPOV() const { return Vector3f(GetPosition().x, m_POV, GetPos Vector3f Player::GetDirection() const { return m_direction; } +std::string Player::GetUsername() const { return m_username; } + +float Player::GetHP() const { return m_hp; } + void Player::Teleport(int& x, int& z) { m_position.x -= x * CHUNK_SIZE_X; m_position.z -= z * CHUNK_SIZE_Z; diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index f889b68..3856ced 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -1,33 +1,43 @@ -#ifndef _PLAYER_H__ -#define _PLAYER_H__ -#include "vector3.h" +#ifndef CLI_PLAYER_H__ +#define CLI_PLAYER_H__ #include +#include "transformation.h" +#include "vector3.h" -class World; +class World; class Player { public: + enum Sound { NOSOUND, STEP, FALL }; + Player(const Vector3f& position, float rotX = 0, float rotY = 0); void TurnLeftRight(float value); void TurnTopBottom(float value); Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime); - void ApplyPhysics(Vector3f input, World* world, float elapsedTime); + Sound ApplyPhysics(Vector3f input, World* world, float elapsedTime); + void ApplyTransformation(Transformation& transformation, bool rel = true) const; Vector3f GetPosition() const; Vector3f GetDirection() const; Vector3f GetVelocity() const; Vector3f GetPOV() const; + std::string GetUsername() const; + float GetHP() const; void Teleport(int& x, int& z); -protected: +private: Vector3f m_position; Vector3f m_velocity; Vector3f m_direction; + std::string m_username; + float m_rotX = 0; float m_rotY = 0; float m_POV; + float m_hp; + bool m_airborne; }; #endif //_PLAYER_H__ diff --git a/SQCSim2021/transformation.cpp b/SQCSim-common/transformation.cpp similarity index 91% rename from SQCSim2021/transformation.cpp rename to SQCSim-common/transformation.cpp index 7629f52..c4169a3 100644 --- a/SQCSim2021/transformation.cpp +++ b/SQCSim-common/transformation.cpp @@ -51,10 +51,10 @@ void Transformation::ApplyScale(const Vector3f& v) ApplyScale(v.x, v.y, v.z); } -void Transformation::Use() const -{ - glLoadMatrixf(m_stack.top().GetInternalValues()); -} +//void Transformation::Use() const +//{ +// glLoadMatrixf(m_stack.top().GetInternalValues()); +//} const Matrix4f& Transformation::GetMatrix() const { diff --git a/SQCSim2021/transformation.h b/SQCSim-common/transformation.h similarity index 87% rename from SQCSim2021/transformation.h rename to SQCSim-common/transformation.h index 72e0690..f6ac105 100644 --- a/SQCSim2021/transformation.h +++ b/SQCSim-common/transformation.h @@ -2,9 +2,9 @@ #define TRANSFORMATION_H__ #include -#include "../SQCSim-common/matrix4.h" -#include "../SQCSim-common/vector3.h" #include "define.h" +#include "matrix4.h" +#include "vector3.h" class Transformation { @@ -25,7 +25,7 @@ class Transformation void ApplyScale(float x, float y, float z); void ApplyScale(const Vector3f& v); - void Use() const; + //void Use() const; const Matrix4f& GetMatrix() const; diff --git a/SQCSim-common/world.cpp b/SQCSim-common/world.cpp index 6b4ccf6..4d7c292 100644 --- a/SQCSim-common/world.cpp +++ b/SQCSim-common/world.cpp @@ -6,6 +6,10 @@ World::~World() {} Array2d& World::GetChunks() { return m_chunks; } +void World::SetSeed(uint64_t seed) { + m_seed = seed; +} + Chunk* World::ChunkAt(float x, float y, float z) const { int cx = (int)x / CHUNK_SIZE_X; int cz = (int)z / CHUNK_SIZE_Z; @@ -38,23 +42,112 @@ BlockType World::BlockAt(const Vector3f& pos, BlockType defaultBlockType) const return BlockAt(pos.x, pos.y, pos.z, defaultBlockType); } +void World::TransposeWorld(Vector3f& player, Bullet* bullets[MAX_BULLETS]) { + int x = 0, y = 0; + + if (player.x > (WORLD_SIZE_X * CHUNK_SIZE_X) * .6f) ++x; + else if (player.x < (WORLD_SIZE_X * CHUNK_SIZE_X) * .4f) --x; + if (player.z > (WORLD_SIZE_Y * CHUNK_SIZE_Z) * .6f) ++y; + else if (player.z < (WORLD_SIZE_Y * CHUNK_SIZE_Z) * .4f) --y; + + if (!x && !y) return; + + if (x > 0) { + for (int ax = 0; ax < WORLD_SIZE_X; ++ax) + for (int ay = 0; ay < WORLD_SIZE_Y; ++ay) + if (ax - x >= 0) { + m_chunks.Set(ax - x, ay, + m_chunks.Remove(ax, ay)); + if (ax == WORLD_SIZE_X - 1 && m_chunks.Get(ax - x, ay)) + m_chunks.Get(ax - x, ay)->MakeDirty(); + } + else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); + } + else if (x < 0) { + for (int ax = WORLD_SIZE_X - 1; ax >= 0; --ax) + for (int ay = WORLD_SIZE_Y - 1; ay >= 0; --ay) + if (ax - x < WORLD_SIZE_X) { + m_chunks.Set(ax - x, ay, + m_chunks.Remove(ax, ay)); + if (ax == 0 && m_chunks.Get(ax - x, ay)) + m_chunks.Get(ax - x, ay)->MakeDirty(); + } + else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); + } + + if (y > 0) { + for (int ax = 0; ax < WORLD_SIZE_X; ++ax) + for (int ay = 0; ay < WORLD_SIZE_Y; ++ay) + if (ay - y >= 0) { + m_chunks.Set(ax, ay - y, + m_chunks.Remove(ax, ay)); + if (ay == WORLD_SIZE_Y - 1 && m_chunks.Get(ax, ay - y)) + m_chunks.Get(ax, ay - y)->MakeDirty(); + } + else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); + } + else if (y < 0) { + for (int ax = WORLD_SIZE_X - 1; ax >= 0; --ax) + for (int ay = WORLD_SIZE_Y - 1; ay >= 0; --ay) + if (ay - y < WORLD_SIZE_Y) { + m_chunks.Set(ax, ay - y, + m_chunks.Remove(ax, ay)); + if (ay == 0 && m_chunks.Get(ax, ay - y)) + m_chunks.Get(ax, ay - y)->MakeDirty(); + } + else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); + } + + m_center[0] += x; m_center[1] += y; + player.x -= x * CHUNK_SIZE_X; + player.z -= y * CHUNK_SIZE_Z; + + for (int index = 0; index < MAX_BULLETS; ++index) + if (bullets[index]) bullets[index]->Transpose(x, y); +} + +void World::CleanUpWorld(int& deleteframes, bool clear = false) { + if (clear) { + while (m_tbDeleted.size() > 0) { + delete m_tbDeleted.back(); + m_tbDeleted.pop_back(); + } + } + if (!m_tbDeleted.empty() && !deleteframes) { + int deleted = 0; + while (deleted < THREADS_DELETE_CHUNKS) { + + + } + delete m_tbDeleted.back(); + m_tbDeleted.pop_back(); + deleteframes = FRAMES_DELETE_CHUNKS; + } +} + void World::GetScope(unsigned int& x, unsigned int& y) { x = m_center[0]; y = m_center[1]; } -void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) { - int bx = (int)pos.x % CHUNK_SIZE_X; - int by = (int)pos.y % CHUNK_SIZE_Y; - int bz = (int)pos.z % CHUNK_SIZE_Z; - - ChunkAt(pos)->SetBlock(bx, by, bz, blockType, this); +void World::Update(Bullet* bullets[MAX_BULLETS], Vector3f& player_pos, BlockInfo* blockinfo[BTYPE_LAST]) { + UpdateWorld(player_pos, blockinfo); + //TransposeWorld(player_pos, bullets); } +// +//void World::UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]) { +// if (updates == 0 && ChunkAt(chx, 1, chy) && +// ChunkAt(chx, 1, chy)->IsDirty()) { +// ChunkAt(chx, 1, chy)->Update(blockinfo, this); +// updates = FRAMES_UPDATE_CHUNKS; +// } +// +//} -void World::ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block) { - Vector3f currentPos = player.GetPosition(); +void World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block) { + Vector3f currentPos = player_pos; Vector3f currentBlock = currentPos; - Vector3f ray = player.GetDirection(); + Vector3f ray = player_dir; bool found = false; if (block) return; @@ -76,7 +169,7 @@ void World::ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block BlockType bt = BlockAt(currentBlock); - if (bt == BTYPE_AIR) { // V?rification pour ?tre s?r que le bloc ? changer n'est pas dans le joueur. + if (bt == BTYPE_AIR) { // Vérification pour être sûr que le bloc à changer n'est pas dans le joueur. int Bx = (int)currentBlock.x; int By = (int)currentBlock.y; int Bz = (int)currentBlock.z; @@ -107,3 +200,211 @@ void World::ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block block = true; } } + +void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) { + int bx = (int)pos.x % CHUNK_SIZE_X; + int by = (int)pos.y % CHUNK_SIZE_Y; + int bz = (int)pos.z % CHUNK_SIZE_Z; + + ChunkAt(pos)->SetBlock(bx, by, bz, blockType, this); + ChunkAt(pos)->MakeModified(); +} + +void World::UpdateWorld(const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]) { + int cx = player.x; + int cy = player.z; + static int frameGenerate = 1; + static int frameUpdate = 2; + static int frameDelete = 3; + int side = 0; + int threads = 0; + std::future genThList[THREADS_GENERATE_CHUNKS]; + //std::future delThList[THREADS_DELETE_CHUNKS]; + + if (frameGenerate > 0) --frameGenerate; + if (frameUpdate > 0) --frameUpdate; + if (frameDelete > 0) --frameDelete; + + if (!frameGenerate) + while (side * CHUNK_SIZE_X <= VIEW_DISTANCE * 2 + CHUNK_SIZE_X) { + int tx = -side, ty = -side; + int chx = 0; + int chy = 0; + + for (; tx <= side; ++tx) { + if (frameGenerate) + break; + chx = cx + tx * CHUNK_SIZE_X; + chy = cy + ty * CHUNK_SIZE_Z; + if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && + chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); + if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; + } + for (; ty <= side; ++ty) { + if (frameGenerate) + break; + chx = cx + tx * CHUNK_SIZE_X; + chy = cy + ty * CHUNK_SIZE_Z; + if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && + chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); + if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; + } + for (; tx >= -side; --tx) { + if (frameGenerate) + break; + chx = cx + tx * CHUNK_SIZE_X; + chy = cy + ty * CHUNK_SIZE_Z; + if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && + chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); + if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; + } + for (; ty >= -side; --ty) { + if (frameGenerate) + break; + chx = cx + tx * CHUNK_SIZE_X; + chy = cy + ty * CHUNK_SIZE_Z; + if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && + chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) + genThList[threads++] = std::async(std::launch::async, + [](unsigned int x, unsigned int y, uint64_t seed) { + return new Chunk(x, y, seed); }, + chx / CHUNK_SIZE_X + m_center[0], + chy / CHUNK_SIZE_Z + m_center[1], + m_seed); + if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; + } + if (frameGenerate) + break; + ++side; + } + + if (threads > 0) { + for (int i = 0; i < threads; ++i) + genThList[i].wait(); + + for (int i = 0; i < threads; ++i) { + unsigned int x, y; + Chunk* chunk = genThList[i].get(); + chunk->GetPosition(x, y); + m_chunks.Set(x - m_center[0], y - m_center[1], chunk); + } + } + + side = 0; + threads = 0; + + //if (!frameUpdate) + // while (side * CHUNK_SIZE_X <= VIEW_DISTANCE * 2) { + // int tx = -side, ty = -side; + + // for (; tx <= side; ++tx) { + // if (frameUpdate) + // break; + // unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + // if (ChunkAt(chx, 1, chy) && + // ChunkAt(chx, 1, chy)->IsDirty()) { + // updateThList[threads++] = + // std::async(std::launch::async, + // [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + // chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); + // if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + // } + // } + // for (; ty <= side; ++ty) { + // if (frameUpdate) + // break; + // unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + // if (ChunkAt(chx, 1, chy) && + // ChunkAt(chx, 1, chy)->IsDirty()) { + // updateThList[threads++] = + // std::async(std::launch::async, + // [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + // chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); + // if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + // } + // } + // for (; tx >= -side; --tx) { + // if (frameUpdate) + // break; + // unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + // if (ChunkAt(chx, 1, chy) && + // ChunkAt(chx, 1, chy)->IsDirty()) { + // updateThList[threads++] = + // std::async(std::launch::async, + // [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + // chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); + // if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + // } + // } + // for (; ty >= -side; --ty) { + // if (frameUpdate) + // break; + // unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + // if (ChunkAt(chx, 1, chy) && + // ChunkAt(chx, 1, chy)->IsDirty()) { + // updateThList[threads++] = + // std::async(std::launch::async, + // [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + // chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); + // if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + // } + // } + // if (frameUpdate) + // break; + // ++side; + // } + + //if (threads > 0) { + // for (int i = 0; i < threads; ++i) { + // updateThList[i].wait(); + // Chunk* chunk = updateThList[i].get(); + // chunk->FlushMeshToVBO(); + // } + //} + + threads = 0; + + //int del = THREADS_DELETE_CHUNKS; + //while (!m_tbDeleted.empty() && del--) { // Moins rapide que le bout en dessous, mais -beaucoup- plus stable. + // m_tbDeleted.back()->FlushVBO(); + // m_tbDeleted.back()->~Chunk(); + // m_tbDeleted.pop_back(); + //} + + /*while (!m_tbDeleted.empty() && !frameDelete) { + if (m_tbDeleted.back()) { + m_tbDeleted.back()->FlushVBO(); + delThList[threads] = + std::async(std::launch::async, + [](Chunk* chunk) { delete chunk; }, m_tbDeleted.back()); + m_tbDeleted.pop_back(); + if (++threads > THREADS_DELETE_CHUNKS) frameDelete = FRAMES_DELETE_CHUNKS; + } + else m_tbDeleted.pop_back(); + }*/ + + /*for (int x = 0; x < threads; ++x) { + delThList[x].wait(); + delThList[x].get(); + }*/ +} + +int World::GettbDeleted() const { return m_tbDeleted.size(); } \ No newline at end of file diff --git a/SQCSim-common/world.h b/SQCSim-common/world.h index dd9967a..69937aa 100644 --- a/SQCSim-common/world.h +++ b/SQCSim-common/world.h @@ -6,14 +6,12 @@ #include #include #include "define.h" -#include "chunk.h" -#include "array2d.h" #include "vector3.h" -#include "player.h" +#include "array2d.h" #include "bullet.h" +#include "chunk.h" class Chunk; -class Player; class Bullet; class World { @@ -23,23 +21,33 @@ public: Array2d& GetChunks(); + void SetSeed(uint64_t seed); + Chunk* ChunkAt(float x, float y, float z) const; Chunk* ChunkAt(const Vector3f& pos) const; BlockType BlockAt(float x, float y, float z, BlockType defaultBlockType = BTYPE_AIR) const; BlockType BlockAt(const Vector3f& pos, BlockType defaultBlockType = BTYPE_AIR) const; + void Update(Bullet* bullets[MAX_BULLETS], Vector3f& player_pos, BlockInfo* blockinfo[BTYPE_LAST]); + void GetScope(unsigned int& x, unsigned int& y); - void ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block); + void ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block); void ChangeBlockAtPosition(BlockType blockType, Vector3f pos); - + void CleanUpWorld(int& deleteframes, bool clear); + int GettbDeleted() const; private: Array2d m_chunks = Array2d(WORLD_SIZE_X, WORLD_SIZE_Y); std::vector m_tbDeleted; + uint64_t m_seed = 0; unsigned int m_center[2] = { UINT16_MAX / 2 - WORLD_SIZE_X, UINT16_MAX / 2 - WORLD_SIZE_Y }; + void UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]); + void UpdateWorld(const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]); + void TransposeWorld(Vector3f& player, Bullet* bullets[MAX_BULLETS]); + }; #endif // WORLD_H__ diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 02c2b51..8fb814c 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -20,37 +20,33 @@ - + - - - + - + - - - + diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index 0e371d0..3bf0928 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -11,9 +11,6 @@ - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -23,12 +20,6 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -44,9 +35,6 @@ Fichiers d%27en-tête - - Fichiers d%27en-tête - Fichiers d%27en-tête @@ -56,11 +44,14 @@ Fichiers d%27en-tête + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + - - Fichiers sources - Fichiers sources @@ -73,12 +64,6 @@ Fichiers sources - - Fichiers sources - - - Fichiers sources - Fichiers sources @@ -94,14 +79,17 @@ Fichiers sources - - Fichiers sources - Fichiers sources Fichiers sources + + Fichiers sources + + + Fichiers sources + \ No newline at end of file diff --git a/SQCSim2021/audio.h b/SQCSim2021/audio.h index 315bfae..b0ff044 100644 --- a/SQCSim2021/audio.h +++ b/SQCSim2021/audio.h @@ -3,8 +3,8 @@ #include #include -#include "define.h" #include "../SQCSim-common/vector3.h" +#include "define.h" class Audio { private: diff --git a/SQCSim2021/chunk.cpp b/SQCSim2021/chunk.cpp deleted file mode 100644 index 5d78859..0000000 --- a/SQCSim2021/chunk.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#include "chunk.h" -#include "world.h" - -Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y) { - //std::ostringstream pos; // Vérifie l'existence d'un fichier .chunk avec sa position. - //pos << CHUNK_PATH << x << '_' << y << ".chunk"; - //std::ifstream input(pos.str(), std::fstream::binary); - - //if (input.fail()) { - OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(seed); - m_blocks.Reset(BTYPE_AIR); - - for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Montagnes - for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { - float xnoiz, ynoiz; - xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 4096.; - ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 4096.; - double height = 0; - for (int x = 0; x < 39; ++x) { - height += simplex.eval(xnoiz, ynoiz); - height *= .79; - xnoiz *= 1.139; - ynoiz *= 1.139; - } - height = height * 2000. * simplex.eval((double)(ix + x * CHUNK_SIZE_X) / 512., (double)(iz + y * CHUNK_SIZE_Z) / 512.); - height /= (CHUNK_SIZE_Y / 1.9); - height += 15.; - for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) - SetBlock(ix, iy, iz, BTYPE_METAL, nullptr); - } - for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Collines - for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { - float xnoiz, ynoiz; - xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 512.; - ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 512.; - float height = simplex.eval(xnoiz, ynoiz) * 50.f;// +1.f; - for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) { - if (GetBlock(ix, iy, iz) == BTYPE_AIR) - SetBlock(ix, iy, iz, BTYPE_GRASS, nullptr); - } - } - for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Lacs" - for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { - for (int iy = 0; iy < 13; ++iy) { - if (GetBlock(ix, iy, iz) == BTYPE_AIR) - SetBlock(ix, iy, iz, BTYPE_ICE, nullptr); - } - } - //for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Arbres" - // for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) { - // float xnoiz, ynoiz; - // xnoiz = (double)(iz * CHUNK_SIZE_Y + x * CHUNK_SIZE_X) / 256.; - // ynoiz = (double)(ix * CHUNK_SIZE_Y + y * CHUNK_SIZE_Z) / 256.; - // bool tree = (int)(abs(simplex.eval(xnoiz, ynoiz)) * 17933.f) % CHUNK_SIZE_Y > 126 ? true : false; - // for (int iy = 0; iy < CHUNK_SIZE_Y - 10; ++iy) - // if (GetBlock(ix, iy, iz) == BTYPE_AIR) - // if (GetBlock(ix, iy - 1, iz) == BTYPE_GRASS) - // if (tree) { - // for (int i = 0; i < (int)(abs(simplex.eval(xnoiz, ynoiz) * 4)) % 42 + 1; ++i) - // SetBlock(ix, iy + i, iz, BTYPE_DIRT, nullptr); - // break; - // } - // } - /* } - else { - input.seekg(0, std::ios_base::end); - int size = input.tellg(); - input.seekg(0, std::ios_base::beg); - - char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z]; - input.read(data, size); - input.close(); - - for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) - for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) - for (int iy = 0; iy < CHUNK_SIZE_Y; ++iy) - m_blocks.Set(ix, iy, iz, data[ix + (iz * CHUNK_SIZE_X) + (iy * CHUNK_SIZE_Z * CHUNK_SIZE_X)]); - }*/ -} - -Chunk::~Chunk() { - /*if (m_isModified) { - char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z]; - - for (int x = 0; x < CHUNK_SIZE_X; ++x) - for (int z = 0; z < CHUNK_SIZE_Z; ++z) - for (int y = 0; y < CHUNK_SIZE_Y; ++y) - data[x + (z * CHUNK_SIZE_X) + (y * CHUNK_SIZE_Z * CHUNK_SIZE_X)] = (char)GetBlock(x, y, z); - - std::ostringstream pos; - pos << CHUNK_PATH << m_posX << '_' << m_posY << ".chunk"; - - std::ofstream output(pos.str(), std::fstream::binary); - output.write(data, sizeof(data)); - output.close(); - }*/ -} - -void Chunk::RemoveBlock(int x, int y, int z, World* world) { - m_blocks.Set(x, y, z, BTYPE_AIR); - CheckNeighbors(x, y, world); - m_isDirty = true; -} - -void Chunk::SetBlock(int x, int y, int z, BlockType type, World* world) { - m_blocks.Set(x, y, z, type); - if (world) CheckNeighbors(x, z, world); // Si nullptr, ne pas vérifier les chunks voisines. - m_isDirty = true; -} - -BlockType Chunk::GetBlock(int x, int y, int z) { return m_blocks.Get(x, y, z); } - -void Chunk::CheckNeighbors(unsigned int x, unsigned int z, World* world) { - unsigned int cx, cy; - - world->GetScope(cx, cy); - - if (x == 0 && m_posX - cx >= 0 && - world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)) - world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty(); - else if (x == CHUNK_SIZE_X - 1 && m_posX - cx < WORLD_SIZE_X && - world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)) - world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty(); - - if (z == 0 && m_posY - cy >= 0 && - world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z)) - world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z)->MakeDirty(); - else if (z == CHUNK_SIZE_X - 1 && m_posY - cy < WORLD_SIZE_Y && - world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z)) - world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z)->MakeDirty(); -} - -void Chunk::GetPosition(unsigned int& x, unsigned int& y) const { x = m_posX; y = m_posY; } - -void Chunk::FlushMeshToVBO() { - m_vertexBuffer.SetMeshData(m_vd, m_vcount); - m_vcount = 0; - delete[] m_vd; -} - -void Chunk::FlushVBO() { - m_vertexBuffer.Flush(); -} - -void Chunk::Update(BlockInfo* blockinfo[BTYPE_LAST], World* world) { - float u, v, s; - // Update mesh - if (m_isDirty) { - int maxVertexCount = (CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z) * (6 * 4); - m_vd = new VertexBuffer::VertexData[maxVertexCount]; - m_vcount = 0; - for (int x = 0; x < CHUNK_SIZE_X; ++x) { - for (int z = 0; z < CHUNK_SIZE_Z; ++z) { - for (int y = 0; y < CHUNK_SIZE_Y; ++y) { - if (m_vcount > USHRT_MAX) - break; - - BlockType bt = GetBlock(x, y, z); - - if (bt != BTYPE_AIR) { - blockinfo[bt]->GetTexture(u, v, s); - AddBlockToMesh(m_vd, m_vcount, bt, x, y, z, u, v, s, world); - } - } - } - } - if (m_vcount > USHRT_MAX) { - m_vcount = USHRT_MAX; - std::cout << "[ Chunk :: Update ] Chunk data truncaned , too much vertices to have a 16 bit index " << std::endl; - } - } - m_isDirty = false; -} - -void Chunk::AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, - int x, int y, int z, float u, float v, float s, World* world) { - - unsigned int cex, cey; - - world->GetScope(cex, cey); - - int cx = x + (m_posX - cex) * CHUNK_SIZE_X, cy = z + (m_posY - cey) * CHUNK_SIZE_Z; - - if (y == CHUNK_SIZE_Y - 1 || GetBlock(x, y + 1, z) == BTYPE_AIR) { // y - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .8f, .8f, .8f, u, v); - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .8f, .8f, .8f, u, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .8f, .8f, .8f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .8f, .8f, .8f, u + s, v); - } - - if (y == 0 || GetBlock(x, y - 1, z) == BTYPE_AIR) { // -y - vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .2f, .2f, .2f, u, v); - vd[count++] = VertexBuffer::VertexData(x, y, z, .2f, .2f, .2f, u, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .2f, .2f, .2f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .2f, .2f, .2f, u + s, v); - } - - if (world->BlockAt(cx + 1, y, cy) == BTYPE_AIR) { // x - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .9f, .9f, .9f, u, v); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .9f, .9f, .9f, u, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .9f, .9f, .9f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .9f, .9f, .9f, u + s, v); - } - - if (world->BlockAt(cx - 1, y, cy) == BTYPE_AIR) { // -x - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .5f, .5f, .5f, u, v + s); - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .5f, .5f, .5f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x, y, z, .5f, .5f, .5f, u + s, v); - vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .5f, .5f, .5f, u, v); - } - - if (world->BlockAt(cx, y, cy + 1) == BTYPE_AIR) { // z - vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .4f, .4f, .4f, u, v); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .4f, .4f, .4f, u + s, v); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .4f, .4f, .4f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .4f, .4f, .4f, u, v + s); - } - - if (world->BlockAt(cx, y, cy - 1) == BTYPE_AIR) { // -z - vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, 1.f, 1.f, 1.f, u, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, 1.f, 1.f, 1.f, u + s, v + s); - vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z , 1.f, 1.f, 1.f, u + s, v); - vd[count++] = VertexBuffer::VertexData(x, y, z , 1.f, 1.f, 1.f, u, v); - } -} - -void Chunk::Render() const { m_vertexBuffer.Render(); } - -bool Chunk::IsDirty() const { return m_isDirty; } - -void Chunk::MakeDirty() { m_isDirty = true; } - -void Chunk::MakeModified() { m_isModified = true; } - diff --git a/SQCSim2021/chunk.h b/SQCSim2021/chunk.h deleted file mode 100644 index 995b3f6..0000000 --- a/SQCSim2021/chunk.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef CHUNK_H__ -#define CHUNK_H__ -#include "define.h" -#include "../SQCSim-common/array2d.h" -#include "../SQCSim-common/array3d.h" -#include "../SQCSim-common/blockinfo.h" -#include "../SQCSim-common/opensimplex.h" -#include "vertexbuffer.h" - -class World; - -class Chunk { - private: - Array3d m_blocks = Array3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z); - VertexBuffer m_vertexBuffer; - bool m_isDirty = true; - bool m_isModified = false; - - unsigned int m_posX; // Position du chunk dans l'array constituant le monde. - unsigned int m_posY; - - VertexBuffer::VertexData* m_vd; - int m_vcount; - - void AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, int x, int y, int z, float u, float v, float s, World* world); - - public: - Chunk(unsigned int x, unsigned int y, int64_t seed); - ~Chunk(); - - void RemoveBlock(int x, int y, int z, World* world); - void SetBlock(int x, int y, int z, BlockType type, World* world); - BlockType GetBlock(int x, int y, int z); - void CheckNeighbors(unsigned int x, unsigned int z, World* world); - void GetPosition(unsigned int& x, unsigned int& y) const; - - - void Update(BlockInfo* blockinfo[BTYPE_LAST], World* world); - void FlushMeshToVBO(); - - void FlushVBO(); - - void Render() const; - bool IsDirty() const; - void MakeDirty(); - void MakeModified(); -}; - -#endif // CHUNK_H__ diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index ceeb08c..8d51188 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -18,14 +18,6 @@ #define SRV_ADDR "127.0.0.1" #define COUNTDOWN 300 -#define FRAMES_RENDER_CHUNKS 1 -#define FRAMES_UPDATE_CHUNKS 1 -#define FRAMES_DELETE_CHUNKS 1 - -#define THREADS_GENERATE_CHUNKS 8 -#define THREADS_UPDATE_CHUNKS 3 -#define THREADS_DELETE_CHUNKS 3 - #define BASE_WIDTH 640 #define BASE_HEIGHT 480 diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 6599890..5c670b3 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -17,11 +17,11 @@ void Engine::Init() { abort(); } - //glDisable(GL_FRAMEBUFFER_SRGB); - //glEnable(GL_DEPTH_TEST); - //glEnable(GL_STENCIL_TEST); - //glEnable(GL_POINT_SMOOTH); - //glEnable(GL_BLEND); + glDisable(GL_FRAMEBUFFER_SRGB); + glEnable(GL_DEPTH_TEST); + glEnable(GL_STENCIL_TEST); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_BLEND); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); @@ -31,10 +31,10 @@ void Engine::Init() { gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); glShadeModel(GL_SMOOTH); - //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - //glDisable(GL_BLEND); - //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //glBlendEquation(GL_FUNC_SUBTRACT); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glDisable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_SUBTRACT); // // Objet de skybox avec sa propre texture et son propre shader! m_skybox.Init(0.2f); @@ -330,6 +330,7 @@ int Engine::GetCountdown(float elapsedTime) { void Engine::Render(float elapsedTime) { //static float gameTime = elapsedTime; + static irrklang::ISound* step; // Pour les sons de pas. static float pollTime = 0; static float bulletTime = 0; static BlockType bloc = 1; @@ -341,6 +342,7 @@ void Engine::Render(float elapsedTime) { Transformation all; Transformation skybox; + Vector3f vstep; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // Transformations initiales @@ -350,8 +352,22 @@ void Engine::Render(float elapsedTime) { if (bulletTime > 0.f) bulletTime -= elapsedTime; if (bulletTime < 0.f) bulletTime = 0.f; + static bool leftright = false; if (pollTime >= .005f) { - m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime, &m_audio); + Player::Sound snd = m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime); + switch (snd) { + case Player::Sound::STEP: + if (leftright) + vstep = Vector3f(m_player.GetPosition().x + m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z + m_player.GetDirection().x); + else vstep = Vector3f(m_player.GetPosition().x - m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z - m_player.GetDirection().x); + m_audio.Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, m_player.GetVelocity(), .8f); + leftright = !leftright; + break; + case Player::Sound::FALL: + m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), 1.f); + break; + default: break; + } m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonnées du joueur et // son vecteur de vélocité (pour l'effet Doppler) pollTime = 0; @@ -370,7 +386,7 @@ void Engine::Render(float elapsedTime) { if (m_mouseL) { if (bloc != BTYPE_LAST) - m_world.ChangeBlockAtCursor(bloc, m_player, m_block); + m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block); else if (bulletTime <= 0.f) { for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). if (!m_bullets[x]) { @@ -392,7 +408,7 @@ void Engine::Render(float elapsedTime) { } } else if (m_mouseR) - m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player, m_block); + m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block); for (int x = 0; x < MAX_BULLETS; ++x) // Array de bullets en jeu. if (m_bullets[x]) @@ -401,7 +417,9 @@ void Engine::Render(float elapsedTime) { m_bullets[x] = nullptr; } - m_world.Update(m_renderCount, m_bullets, m_player, all, m_shader01, m_textureAtlas, m_blockinfo); + m_wrenderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); + m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); + m_wrenderer.UpdateWorld(&m_world, m_player.GetPosition(), m_blockinfo); if (m_isSkybox) m_skybox.Render(skybox); diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 8c525b6..e2a291f 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -6,18 +6,19 @@ #include "../SQCSim-common/array2d.h" #include "../SQCSim-common/blockinfo.h" #include "../SQCSim-common/bullet.h" +#include "../SQCSim-common/chunk.h" +#include "../SQCSim-common/world.h" +#include "../SQCSim-common/transformation.h" +#include "../SQCSim-common/player.h" #include "define.h" #include "openglcontext.h" #include "texture.h" -#include "transformation.h" #include "shader.h" -#include "player.h" -#include "chunk.h" #include "skybox.h" #include "audio.h" #include "textureatlas.h" -#include "world.h" #include "connector.h" +#include "worldrenderer.h" class Engine : public OpenglContext { public: @@ -55,6 +56,7 @@ private: TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); World m_world = World(); + WorldRenderer m_wrenderer = WorldRenderer(); Texture m_textureSkybox; Texture m_textureFont; diff --git a/SQCSim2021/mesh.cpp b/SQCSim2021/mesh.cpp new file mode 100644 index 0000000..c6f6b9b --- /dev/null +++ b/SQCSim2021/mesh.cpp @@ -0,0 +1,120 @@ +#include "mesh.h" + +Mesh::Mesh(Chunk* chunk): m_chunk(chunk) {} + +Mesh::~Mesh() { + FlushVBO(); +} + +void Mesh::FlushMeshToVBO() { + m_vertexBuffer.SetMeshData(m_vd, m_vcount); + m_vcount = 0; + delete[] m_vd; +} + +void Mesh::FlushVBO() { + m_vertexBuffer.Flush(); +} + +void Mesh::Update(BlockInfo* blockinfo[BTYPE_LAST], World* world) { + float u, v, s; + // Update mesh + if (m_chunk->IsDirty()) { + int maxVertexCount = (CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z) * (6 * 4); + m_vd = new VertexBuffer::VertexData[maxVertexCount]; + m_vcount = 0; + for (int x = 0; x < CHUNK_SIZE_X; ++x) { + for (int z = 0; z < CHUNK_SIZE_Z; ++z) { + for (int y = 0; y < CHUNK_SIZE_Y; ++y) { + if (m_vcount > USHRT_MAX) + break; + + BlockType bt = m_chunk->GetBlock(x, y, z); + + if (bt != BTYPE_AIR) { + blockinfo[bt]->GetTexture(u, v, s); + AddBlockToMesh(m_vd, m_vcount, bt, x, y, z, u, v, s, world); + } + } + } + } + if (m_vcount > USHRT_MAX) { + m_vcount = USHRT_MAX; + std::cout << "[ Chunk :: Update ] Chunk data truncaned , too much vertices to have a 16 bit index " << std::endl; + } + } + m_chunk->MakeClean(); +} + +void Mesh::AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, + int x, int y, int z, float u, float v, float s, World* world) { + + unsigned int cex, cey, cpx, cpy; + + m_chunk->GetPosition(cpx, cpy); + + world->GetScope(cex, cey); + + int cx = x + (cpx - cex) * CHUNK_SIZE_X, cy = z + (cpy - cey) * CHUNK_SIZE_Z; + + if (y == CHUNK_SIZE_Y - 1 || m_chunk->GetBlock(x, y + 1, z) == BTYPE_AIR) { // y + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .8f, .8f, .8f, u, v); + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .8f, .8f, .8f, u, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .8f, .8f, .8f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .8f, .8f, .8f, u + s, v); + } + + if (y == 0 || m_chunk->GetBlock(x, y - 1, z) == BTYPE_AIR) { // -y + vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .2f, .2f, .2f, u, v); + vd[count++] = VertexBuffer::VertexData(x, y, z, .2f, .2f, .2f, u, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .2f, .2f, .2f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .2f, .2f, .2f, u + s, v); + } + + if (world->BlockAt(cx + 1, y, cy) == BTYPE_AIR) { // x + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .9f, .9f, .9f, u, v); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .9f, .9f, .9f, u, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .9f, .9f, .9f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .9f, .9f, .9f, u + s, v); + } + + if (world->BlockAt(cx - 1, y, cy) == BTYPE_AIR) { // -x + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .5f, .5f, .5f, u, v + s); + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .5f, .5f, .5f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x, y, z, .5f, .5f, .5f, u + s, v); + vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .5f, .5f, .5f, u, v); + } + + if (world->BlockAt(cx, y, cy + 1) == BTYPE_AIR) { // z + vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .4f, .4f, .4f, u, v); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .4f, .4f, .4f, u + s, v); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .4f, .4f, .4f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .4f, .4f, .4f, u, v + s); + } + + if (world->BlockAt(cx, y, cy - 1) == BTYPE_AIR) { // -z + vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, 1.f, 1.f, 1.f, u, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, 1.f, 1.f, 1.f, u + s, v + s); + vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, 1.f, 1.f, 1.f, u + s, v); + vd[count++] = VertexBuffer::VertexData(x, y, z, 1.f, 1.f, 1.f, u, v); + } +} + +void Mesh::Render() const { m_vertexBuffer.Render(); } + +bool Mesh::IsDirty() const { return m_chunk->IsDirty(); } + +bool Mesh::IsNew() { + bool bl = m_new; + if (m_new) + m_new = false; + return bl; +} + +void Mesh::GetPosition(unsigned int& x, unsigned int& y, World* world) const { + unsigned int sx, sy; + world->GetScope(sx, sy); + m_chunk->GetPosition(x, y); + x -= sx; + y -= sy; +} diff --git a/SQCSim2021/mesh.h b/SQCSim2021/mesh.h new file mode 100644 index 0000000..0a070ff --- /dev/null +++ b/SQCSim2021/mesh.h @@ -0,0 +1,32 @@ +#ifndef MESH_H__ +#define MESH_H__ + +#include "../SQCSim-common/chunk.h" +#include "../SQCSim-common/world.h" +#include "define.h" +#include "vertexbuffer.h" + +class Mesh { +private: + VertexBuffer m_vertexBuffer; + VertexBuffer::VertexData* m_vd = nullptr; + int m_vcount = 0; + bool m_new = true; + Chunk* m_chunk; // NE PAS DÉTRUIRE ICI. + + void AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, int x, int y, int z, float u, float v, float s, World* world); + +public: + Mesh(Chunk* chunk); + ~Mesh(); + + void FlushMeshToVBO(); + void FlushVBO(); + void Update(BlockInfo* blockinfo[BTYPE_LAST], World* world); + void Render() const; + + bool IsDirty() const; + bool IsNew(); + void GetPosition(unsigned int& x, unsigned int& y, World* world) const; +}; +#endif \ No newline at end of file diff --git a/SQCSim2021/openglcontext.h b/SQCSim2021/openglcontext.h index 5b116f4..b82c683 100644 --- a/SQCSim2021/openglcontext.h +++ b/SQCSim2021/openglcontext.h @@ -1,10 +1,9 @@ #ifndef OPENGLCONTEXT_H__ #define OPENGLCONTEXT_H__ -#include "define.h" - #include #include +#include "define.h" // Documentation de SFML: http://www.sfml-dev.org/documentation/index-fr.php class OpenglContext diff --git a/SQCSim2021/player.cpp b/SQCSim2021/player.cpp deleted file mode 100644 index f5313c7..0000000 --- a/SQCSim2021/player.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include "player.h" -#include "world.h" - -Player::Player(const Vector3f& position, float rotX, float rotY) : m_position(position), m_rotX(rotX), m_rotY(rotY) { - m_velocity = Vector3f(0, 0, 0); - m_airborne = true; - m_hp = 0.75f; //TODO: Remettre à 1.0f - m_username = "Zelda Bee-Bop"; -} - -void Player::TurnLeftRight(float value) { - m_rotY += value; - if (m_rotY > 360) m_rotY = 0; - else if (m_rotY < -360) m_rotY = 0; -} - -void Player::TurnTopBottom(float value) { - m_rotX += value; - if (m_rotX > 80) m_rotX = 80; - else if (m_rotX < -80) m_rotX = -80; -} - -Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jump, bool shoot, float elapsedTime) { - - Vector3f delta = Vector3f(0, 0, 0); - - float yrotrad = (m_rotY / 57.2957795056f); // 180/Pi = 57.295... - float xrotrad = (m_rotX / 57.2957795056f); - - m_direction = Vector3f(cos(xrotrad) * sin(yrotrad), - -sin(xrotrad), - cos(xrotrad) * -cos(yrotrad)); - - m_direction.Normalize(); - - if (front) { - delta.x += float(sin(yrotrad)) * elapsedTime * 10.f; - delta.z += float(-cos(yrotrad)) * elapsedTime * 10.f; - } - else if (back) { - delta.x += float(-sin(yrotrad)) * elapsedTime * 10.f; - delta.z += float(cos(yrotrad)) * elapsedTime * 10.f; - } - - if (left) { - delta.x += float(-cos(yrotrad)) * elapsedTime * 10.f; - delta.z += float(-sin(yrotrad)) * elapsedTime * 10.f; - } - else if (right) { - delta.x += float(cos(yrotrad)) * elapsedTime * 10.f; - delta.z += float(sin(yrotrad)) * elapsedTime * 10.f; - } - - delta.Normalize(); - delta.x *= .6f; - delta.z *= .6f; - - if ((jump || shoot ) && !m_airborne) { - delta.y += jump? .32f: shoot? .1f : 0.f; - m_airborne = true; - } - - if (shoot) // Recoil! - TurnTopBottom(-1); - - return delta; -} - -void Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime, Audio* audio) { - static irrklang::ISound* step; // Pour les sons de pas. - static float timing = 0.f; - /* Gestion de collisions */ - BlockType bt1, bt2, bt3; - - bt1 = world->BlockAt(GetPosition().x, GetPosition().y + input.y, GetPosition().z); - bt2 = world->BlockAt(GetPosition().x, GetPosition().y + input.y - 0.9f, GetPosition().z); - bt3 = world->BlockAt(GetPosition().x, GetPosition().y + input.y - 1.7f, GetPosition().z); - if ((bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) && m_position.y < 129.7f) { - bt1 = world->BlockAt(GetPosition().x, GetPosition().y + .3f, GetPosition().z); - if (bt1 == BTYPE_AIR) m_position.y = (int)m_position.y + .7f; - m_velocity.y = input.y = 0; - m_airborne = false; - } - else { - if (abs(m_velocity.y) < 1.1f) m_velocity.y += input.y - 1.1f * elapsedTime; - bt3 = world->BlockAt(GetPosition().x, GetPosition().y + m_velocity.y - 1.7f, GetPosition().z); - bt1 = world->BlockAt(GetPosition().x, GetPosition().y + .3f, GetPosition().z); - if (bt3 != BTYPE_AIR) { - m_velocity.y = 0; - if (timing == 0.f) { - if (m_airborne) audio->Create3DAudioObj(step, AUDIO_PATH "hit.wav", GetPosition(), GetVelocity(), 1.f); - timing = .3f; - } - m_airborne = false; - } - else if (bt1 != BTYPE_AIR) { - m_velocity.y = -.1f; - } - else m_airborne = true; - } - - if (timing > 0.f) timing -= elapsedTime; - if (timing < 0.f) timing = 0.f; - - bt1 = world->BlockAt(GetPosition().x + input.x, GetPosition().y, GetPosition().z); - bt2 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 0.9f, GetPosition().z); - bt3 = world->BlockAt(GetPosition().x + input.x, GetPosition().y - 1.7f, GetPosition().z); - if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) { - if (input.x > 0) - input.x = m_velocity.x = 0.5f; - else - input.x = m_velocity.x = -0.5f; - m_velocity.y = 0.3; - m_velocity.z *= .5f; - } else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { - input.x = m_velocity.x = 0; - m_velocity.z *= .5f; - } - - bt1 = world->BlockAt(GetPosition().x, GetPosition().y, GetPosition().z + input.z); - bt2 = world->BlockAt(GetPosition().x, GetPosition().y - 0.9f, GetPosition().z + input.z); - bt3 = world->BlockAt(GetPosition().x, GetPosition().y - 1.7f, GetPosition().z + input.z); - if (bt1 == BTYPE_AIR && bt2 != BTYPE_AIR && bt3 != BTYPE_AIR) { - if (input.z > 0) - input.z = m_velocity.z = 0.5f; - else - input.z = m_velocity.z = -0.5f; - m_velocity.y = 0.3; - m_velocity.x *= .5f; - } else if (bt1 != BTYPE_AIR || bt2 != BTYPE_AIR || bt3 != BTYPE_AIR) { - input.z = m_velocity.z = 0; - m_velocity.x *= .5f; - } - - /* Fin gestion de collisions */ - /* Gestion de la friction */ - - if (!m_airborne) { - m_velocity.x += input.x * 2.f * elapsedTime; - m_velocity.z += input.z * 2.f * elapsedTime; - - if (input.x == 0.f) - m_velocity.x *= .8f; - - if (input.z == 0.f) - m_velocity.z *= .8f; - } - else { - m_velocity.x += input.x * .4f * elapsedTime; // Techniquement contre les lois de la physique, mais c'est beaucoup moins chiant pour grimper sur les blocs. - m_velocity.z += input.z * .4f * elapsedTime; - m_velocity.x *= .99f; - m_velocity.z *= .99f; - } - - /* Fin gestion de la friction */ - - float vy = m_velocity.y; - m_velocity.y = 1.f; // Padding pour limiter le x et z lors du Normalize(). - if (m_velocity.Length() >= 1.f) m_velocity.Normalize(); // Limiteur de vitesse en x/z. - m_velocity.y = 0; - if (m_velocity.Length() < .005f) m_velocity.Zero(); // Threshold en x/z. - m_velocity.y = vy; - - m_position += m_velocity; - - static float bobbingtime = 0; // Gestion de la caméra - static bool leftright = false; - static bool isStep = false; - if (bobbingtime <= 360.f) - bobbingtime += elapsedTime * 20.f; else bobbingtime = 0; - - if ((sin(bobbingtime) - 0.5f) * (abs(m_velocity.x) + abs(m_velocity.z)) < -.2f && !m_airborne) { - Vector3f vstep; - if (leftright) - vstep = Vector3f(GetPosition().x + GetDirection().z, GetPosition().y - 1.7f, GetPosition().z + GetDirection().x); - else vstep = Vector3f(GetPosition().x - GetDirection().z, GetPosition().y - 1.7f, GetPosition().z - GetDirection().x); - if (!isStep) { - audio->Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, GetVelocity(), .8f); - leftright = !leftright; - } - isStep = true; - } - else isStep = false; - m_POV = m_position.y; - m_POV += m_airborne ? 0 : (sin(bobbingtime) - 0.5f) * (abs(m_velocity.x) + abs(m_velocity.z)) * .2f; -} - -void Player::ApplyTransformation(Transformation& transformation, bool rel) const { - transformation.ApplyRotation(-m_rotX, 1, 0, 0); - transformation.ApplyRotation(-m_rotY, 0, 1, 0); - if (rel) transformation.ApplyTranslation(-GetPOV()); -} - -Vector3f Player::GetPosition() const { return Vector3f(m_position.x + CHUNK_SIZE_X * WORLD_SIZE_X / 2, m_position.y, m_position.z + CHUNK_SIZE_Z * WORLD_SIZE_Y / 2); } - -Vector3f Player::GetVelocity() const { return m_velocity; } - -Vector3f Player::GetPOV() const { return Vector3f(GetPosition().x, m_POV, GetPosition().z); } - -Vector3f Player::GetDirection() const { return m_direction; } - -std::string Player::GetUsername() const { return m_username; } - -float Player::GetHP() const { return m_hp; } - -void Player::Teleport(int& x, int& z) { - m_position.x -= x * CHUNK_SIZE_X; - m_position.z -= z * CHUNK_SIZE_Z; -} diff --git a/SQCSim2021/player.h b/SQCSim2021/player.h deleted file mode 100644 index d8f46f3..0000000 --- a/SQCSim2021/player.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef CLI_PLAYER_H__ -#define CLI_PLAYER_H__ -#include "../SQCSim-common/vector3.h" -#include "transformation.h" -#include "audio.h" -#include - -class World; - -class Player { -public: - Player(const Vector3f& position, float rotX = 0, float rotY = 0); - void TurnLeftRight(float value); - void TurnTopBottom(float value); - Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime); - void ApplyPhysics(Vector3f input, World* world, float elapsedTime, Audio* audio); - void ApplyTransformation(Transformation& transformation, bool rel = true) const; - - Vector3f GetPosition() const; - Vector3f GetDirection() const; - Vector3f GetVelocity() const; - Vector3f GetPOV() const; - std::string GetUsername() const; - float GetHP() const; - void Teleport(int& x, int& z); - -private: - Vector3f m_position; - Vector3f m_velocity; - Vector3f m_direction; - - std::string m_username; - - float m_rotX = 0; - float m_rotY = 0; - float m_POV; - - float m_hp; - - bool m_airborne; -}; -#endif //_PLAYER_H__ - diff --git a/SQCSim2021/skybox.cpp b/SQCSim2021/skybox.cpp index 947535c..a024ae7 100644 --- a/SQCSim2021/skybox.cpp +++ b/SQCSim2021/skybox.cpp @@ -45,7 +45,7 @@ void Skybox::Init(float size){ void Skybox::Render(Transformation tran) const { glDisable(GL_DEPTH_TEST); glDisable(GL_BLEND); - tran.Use(); + glLoadMatrixf(tran.GetMatrix().GetInternalValues()); m_texture.Bind(); m_shader.Use(); m_vertexBuffer.Render(); diff --git a/SQCSim2021/skybox.h b/SQCSim2021/skybox.h index a596416..6df8aab 100644 --- a/SQCSim2021/skybox.h +++ b/SQCSim2021/skybox.h @@ -1,10 +1,10 @@ #ifndef SKYBOX_H__ #define SKYBOX_H__ +#include "../SQCSim-common/transformation.h" #include "define.h" #include "vertexbuffer.h" #include "texture.h" -#include "transformation.h" #include "shader.h" class Skybox { diff --git a/SQCSim2021/texture.h b/SQCSim2021/texture.h index 1a37395..fa549fd 100644 --- a/SQCSim2021/texture.h +++ b/SQCSim2021/texture.h @@ -1,9 +1,9 @@ #ifndef TEXTURE_H__ #define TEXTURE_H__ -#include "define.h" -#include #include +#include +#include "define.h" class Texture { diff --git a/SQCSim2021/textureatlas.h b/SQCSim2021/textureatlas.h index 1d717e1..fab0665 100644 --- a/SQCSim2021/textureatlas.h +++ b/SQCSim2021/textureatlas.h @@ -1,9 +1,9 @@ #ifndef TEXTUREATLAS_H__ #define TEXTUREATLAS_H__ -#include "define.h" #include #include #include +#include "define.h" class TextureAtlas { diff --git a/SQCSim2021/world.cpp b/SQCSim2021/world.cpp deleted file mode 100644 index dc5e5b6..0000000 --- a/SQCSim2021/world.cpp +++ /dev/null @@ -1,506 +0,0 @@ -#include "world.h" - -World::World() {} - -World::~World() {} - -Array2d& World::GetChunks() { return m_chunks; } - -void World::SetSeed(uint64_t seed) { - m_seed = seed; -} - -Chunk* World::ChunkAt(float x, float y, float z) const { - int cx = (int)x / CHUNK_SIZE_X; - int cz = (int)z / CHUNK_SIZE_Z; - - if (x < 0 || y < 0 || z < 0 || - x >= WORLD_SIZE_X * CHUNK_SIZE_X || - z >= CHUNK_SIZE_Z * WORLD_SIZE_Y || - y > CHUNK_SIZE_Y) - return 0; - - return m_chunks.Get(cx, cz); -} - -Chunk* World::ChunkAt(const Vector3f& pos) const { return ChunkAt(pos.x, pos.y, pos.z); } - -BlockType World::BlockAt(float x, float y, float z, BlockType defaultBlockType) const { - Chunk* c = ChunkAt(x, y, z); - - if (!c) - return defaultBlockType; - - int bx = (int)x % CHUNK_SIZE_X; - int by = (int)y % CHUNK_SIZE_Y; - int bz = (int)z % CHUNK_SIZE_Z; - - return c->GetBlock(bx, by, bz); -} - -BlockType World::BlockAt(const Vector3f& pos, BlockType defaultBlockType) const { - return BlockAt(pos.x, pos.y, pos.z, defaultBlockType); -} - -void World::TransposeWorld(Player& player, Bullet* bullets[MAX_BULLETS]) { - int x = 0, y = 0; - - if (player.GetPosition().x > (WORLD_SIZE_X * CHUNK_SIZE_X) * .6f) ++x; - else if (player.GetPosition().x < (WORLD_SIZE_X * CHUNK_SIZE_X) * .4f) --x; - if (player.GetPosition().z > (WORLD_SIZE_Y * CHUNK_SIZE_Z) * .6f) ++y; - else if (player.GetPosition().z < (WORLD_SIZE_Y * CHUNK_SIZE_Z) * .4f) --y; - - if (!x && !y) return; - - if (x > 0) { - for (int ax = 0; ax < WORLD_SIZE_X; ++ax) - for (int ay = 0; ay < WORLD_SIZE_Y; ++ay) - if (ax - x >= 0) { - m_chunks.Set(ax - x, ay, - m_chunks.Remove(ax, ay)); - if (ax == WORLD_SIZE_X - 1 && m_chunks.Get(ax - x, ay)) - m_chunks.Get(ax - x, ay)->MakeDirty(); - } - else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); - } - else if (x < 0) { - for (int ax = WORLD_SIZE_X - 1; ax >= 0; --ax) - for (int ay = WORLD_SIZE_Y - 1; ay >= 0; --ay) - if (ax - x < WORLD_SIZE_X) { - m_chunks.Set(ax - x, ay, - m_chunks.Remove(ax, ay)); - if (ax == 0 && m_chunks.Get(ax - x, ay)) - m_chunks.Get(ax - x, ay)->MakeDirty(); - } - else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); - } - - if (y > 0) { - for (int ax = 0; ax < WORLD_SIZE_X; ++ax) - for (int ay = 0; ay < WORLD_SIZE_Y; ++ay) - if (ay - y >= 0) { - m_chunks.Set(ax, ay - y, - m_chunks.Remove(ax, ay)); - if (ay == WORLD_SIZE_Y - 1 && m_chunks.Get(ax, ay - y)) - m_chunks.Get(ax, ay - y)->MakeDirty(); - } - else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); - } - else if (y < 0) { - for (int ax = WORLD_SIZE_X - 1; ax >= 0; --ax) - for (int ay = WORLD_SIZE_Y - 1; ay >= 0; --ay) - if (ay - y < WORLD_SIZE_Y) { - m_chunks.Set(ax, ay - y, - m_chunks.Remove(ax, ay)); - if (ay == 0 && m_chunks.Get(ax, ay - y)) - m_chunks.Get(ax, ay - y)->MakeDirty(); - } - else if (m_chunks.Get(ax, ay)) m_tbDeleted.emplace_back(m_chunks.Remove(ax, ay)); - } - - m_center[0] += x; m_center[1] += y; - player.Teleport(x, y); - - for (int index = 0; index < MAX_BULLETS; ++index) - if (bullets[index]) bullets[index]->Transpose(x, y); -} - -void World::CleanUpWorld(int& deleteframes, bool clear = false) { - if (clear) { - while (m_tbDeleted.size() > 0) { - delete m_tbDeleted.back(); - m_tbDeleted.pop_back(); - } - } - if (!m_tbDeleted.empty() && !deleteframes) { - int deleted = 0; - while (deleted < THREADS_DELETE_CHUNKS) { - - - } - delete m_tbDeleted.back(); - m_tbDeleted.pop_back(); - deleteframes = FRAMES_DELETE_CHUNKS; - } -} - -void World::GetScope(unsigned int& x, unsigned int& y) { - x = m_center[0]; - y = m_center[1]; -} - -void World::Update(int& rendercount, Bullet* bullets[MAX_BULLETS], Player& player, Transformation& world, Shader& shader, TextureAtlas& atlas, BlockInfo* blockinfo[BTYPE_LAST]) { - glStencilFunc(GL_EQUAL, 1, 0x00); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - atlas.Bind(); - RenderWorld(rendercount, player, world, shader); - UpdateWorld(player, blockinfo); - //TransposeWorld(player, bullets); - shader.Disable(); - glStencilFunc(GL_GREATER, 1, 0xFF); -} - -void World::UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]) { - if (updates == 0 && ChunkAt(chx, 1, chy) && - ChunkAt(chx, 1, chy)->IsDirty()) { - ChunkAt(chx, 1, chy)->Update(blockinfo, this); - updates = FRAMES_UPDATE_CHUNKS; - } - -} - -void World::ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block) { - Vector3f currentPos = player.GetPosition(); - Vector3f currentBlock = currentPos; - Vector3f ray = player.GetDirection(); - bool found = false; - - if (block) return; - - while ((currentPos - currentBlock).Length() <= MAX_SELECTION_DISTANCE && !found) { - currentBlock += ray / 10.f; - - BlockType bt = BlockAt(currentBlock); - - if (bt != BTYPE_AIR) - found = true; - } - - if (found) - if (blockType != BTYPE_AIR) { - found = false; - while ((currentPos - currentBlock).Length() >= 1.7f && !found) { - currentBlock -= ray / 10.f; - - BlockType bt = BlockAt(currentBlock); - - if (bt == BTYPE_AIR) { // Vérification pour être sûr que le bloc à changer n'est pas dans le joueur. - int Bx = (int)currentBlock.x; - int By = (int)currentBlock.y; - int Bz = (int)currentBlock.z; - - int Px = (int)currentPos.x; - int PyA = (int)currentPos.y; - int PyB = (int)(currentPos.y - .9f); - int PyC = (int)(currentPos.y - 1.7f); - int Pz = (int)currentPos.z; - - if (!(Bx == Px && - (By == PyA || - By == PyB || - By == PyC) && - Bz == Pz)) - found = true; - } - } - } - - if (found && (int)currentBlock.y < CHUNK_SIZE_Y) { - int bx = (int)currentBlock.x % CHUNK_SIZE_X; - int by = (int)currentBlock.y % CHUNK_SIZE_Y; - int bz = (int)currentBlock.z % CHUNK_SIZE_Z; - - ChunkAt(currentBlock)->SetBlock(bx, by, bz, blockType, this); - ChunkAt(currentBlock)->MakeModified(); - block = true; - } -} - -void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) { - int bx = (int)pos.x % CHUNK_SIZE_X; - int by = (int)pos.y % CHUNK_SIZE_Y; - int bz = (int)pos.z % CHUNK_SIZE_Z; - - ChunkAt(pos)->SetBlock(bx, by, bz, blockType, this); - ChunkAt(pos)->MakeModified(); -} - -void World::RenderWorld(int& rendercount, Player& player, Transformation& world, Shader& shader) { - shader.Use(); - rendercount = 0; - Vector3f angle; - Vector3f cursor; - Vector3f direct = player.GetDirection(); - Vector3f pos = player.GetPosition() - direct; - - direct.y = 0; - direct.Normalize(); - pos.y = 1; - - static Vector3 renderManifest[VIEW_DISTANCE * 8]; // Nombre de Chunks maximal à être rendus. - - //for (int dist = VIEW_DISTANCE; dist >= 0; dist -= CHUNK_SIZE_X) { - for (int dist = 0; dist <= VIEW_DISTANCE; dist += CHUNK_SIZE_X) { - // Configuration du radar. - float sinus, cosinus; - int echantillons; - - if (dist > VIEW_DISTANCE * .1f) { - sinus = .00872653549f; // sin(1/2 degré) - cosinus = .99996192306; // cos(1/2 degré) - echantillons = 180; - } - //else if (dist > VIEW_DISTANCE * .3f) { - // sinus = .01151891831f; // sin(2/3 degré) - // cosinus = .99993365506; // cos(2/3 degré) - // echantillons = 120; - //} - //else if (dist > VIEW_DISTANCE * .2f) { - // sinus = .01745240643; // sin(1 degré) - // cosinus = .99984769515; // cos(1 degré) - // echantillons = 90; - //} - //else if (dist > VIEW_DISTANCE * .1f) { - // sinus = .0261769483; - // cosinus = .99965732497; - // echantillons = 60; - //} - else { - sinus = .0348994967; - cosinus = .99939082701; - echantillons = 45; - } - - angle.x = direct.z + direct.x; - angle.z = direct.z - direct.x; - angle.y = 0; - angle.Normalize(); - - for (int radar = 0; radar < echantillons; ++radar) { - float x = angle.x; - - angle.x = angle.x * cosinus - angle.z * sinus; - angle.z = angle.z * cosinus + x * sinus; - angle.Normalize(); - - cursor = pos - direct * CHUNK_SIZE_X * 2 + angle * dist; - if (cursor.y >= 128.f || cursor.y >= 0.f) cursor.y = CHUNK_SIZE_Y / 2.f; - - - if (ChunkAt(cursor)) { - bool valide = true; - unsigned int chx, chy; - ChunkAt(cursor)->GetPosition(chx, chy); - for (int index = 0; index < rendercount; ++index) // Permet de vérifier seulement contre celles ajoutées dans la frame, et ne pas avoir à refaire l'array à chaque frame. - if (renderManifest[index].x == chx && renderManifest[index].z == chy) - valide = false; - - if (valide) renderManifest[rendercount++] = Vector3(chx, - (VIEW_DISTANCE - (pos - cursor).Length() * 3.f + 256.f) < 0.f? 0: - (VIEW_DISTANCE - (pos - cursor).Length() * 3.f + 256.f) * 1000, - chy); - } - } - } - for (int index = 0; index < rendercount; ++index) { - int chx = (renderManifest[index].x - m_center[0]) * CHUNK_SIZE_X, chy = (renderManifest[index].z - m_center[1]) * CHUNK_SIZE_Z; - - world.ApplyTranslation(chx, 0, chy); - world.Use(); - float blcolor = renderManifest[index].y / (VIEW_DISTANCE / 50.f); - glBlendColor(blcolor, blcolor, blcolor, 1.f); - ChunkAt(chx, 1, chy)->Render(); - world.ApplyTranslation(-chx, 0, -chy); - } - shader.Disable(); -}; - -void World::UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]) { - int cx = player.GetPosition().x; - int cy = player.GetPosition().z; - static int frameGenerate = 1; - static int frameUpdate = 2; - static int frameDelete = 3; - int side = 0; - int threads = 0; - std::future genThList[THREADS_GENERATE_CHUNKS]; - std::future updateThList[THREADS_UPDATE_CHUNKS]; - std::future delThList[THREADS_DELETE_CHUNKS]; - - if (frameGenerate > 0) --frameGenerate; - if (frameUpdate > 0) --frameUpdate; - if (frameDelete > 0) --frameDelete; - - if (!frameGenerate) - while (side * CHUNK_SIZE_X <= VIEW_DISTANCE * 2 + CHUNK_SIZE_X) { - int tx = -side, ty = -side; - int chx = 0; - int chy = 0; - - for (; tx <= side; ++tx) { - if (frameGenerate) - break; - chx = cx + tx * CHUNK_SIZE_X; - chy = cy + ty * CHUNK_SIZE_Z; - if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && - chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, - [](unsigned int x, unsigned int y, uint64_t seed) { - return new Chunk(x, y, seed); }, - chx / CHUNK_SIZE_X + m_center[0], - chy / CHUNK_SIZE_Z + m_center[1], - m_seed); - if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; - } - for (; ty <= side; ++ty) { - if (frameGenerate) - break; - chx = cx + tx * CHUNK_SIZE_X; - chy = cy + ty * CHUNK_SIZE_Z; - if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && - chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, - [](unsigned int x, unsigned int y, uint64_t seed) { - return new Chunk(x, y, seed); }, - chx / CHUNK_SIZE_X + m_center[0], - chy / CHUNK_SIZE_Z + m_center[1], - m_seed); - if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; - } - for (; tx >= -side; --tx) { - if (frameGenerate) - break; - chx = cx + tx * CHUNK_SIZE_X; - chy = cy + ty * CHUNK_SIZE_Z; - if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && - chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, - [](unsigned int x, unsigned int y, uint64_t seed) { - return new Chunk(x, y, seed); }, - chx / CHUNK_SIZE_X + m_center[0], - chy / CHUNK_SIZE_Z + m_center[1], - m_seed); - if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; - } - for (; ty >= -side; --ty) { - if (frameGenerate) - break; - chx = cx + tx * CHUNK_SIZE_X; - chy = cy + ty * CHUNK_SIZE_Z; - if (chx < WORLD_SIZE_X * CHUNK_SIZE_X && chy < WORLD_SIZE_Y * CHUNK_SIZE_Z && - chx >= 0 && chy >= 0 && !ChunkAt(chx, 1, chy)) - genThList[threads++] = std::async(std::launch::async, - [](unsigned int x, unsigned int y, uint64_t seed) { - return new Chunk(x, y, seed); }, - chx / CHUNK_SIZE_X + m_center[0], - chy / CHUNK_SIZE_Z + m_center[1], - m_seed); - if (threads == THREADS_GENERATE_CHUNKS) frameGenerate = FRAMES_RENDER_CHUNKS; - } - if (frameGenerate) - break; - ++side; - } - - if (threads > 0) { - for (int i = 0; i < threads; ++i) - genThList[i].wait(); - - for (int i = 0; i < threads; ++i) { - unsigned int x, y; - Chunk* chunk = genThList[i].get(); - chunk->GetPosition(x, y); - m_chunks.Set(x - m_center[0], y - m_center[1], chunk); - } - } - - side = 0; - threads = 0; - - if (!frameUpdate) - while (side * CHUNK_SIZE_X <= VIEW_DISTANCE * 2) { - int tx = -side, ty = -side; - - for (; tx <= side; ++tx) { - if (frameUpdate) - break; - unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; - if (ChunkAt(chx, 1, chy) && - ChunkAt(chx, 1, chy)->IsDirty()) { - updateThList[threads++] = - std::async(std::launch::async, - [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { - chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); - if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; - } - } - for (; ty <= side; ++ty) { - if (frameUpdate) - break; - unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; - if (ChunkAt(chx, 1, chy) && - ChunkAt(chx, 1, chy)->IsDirty()) { - updateThList[threads++] = - std::async(std::launch::async, - [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { - chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); - if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; - } - } - for (; tx >= -side; --tx) { - if (frameUpdate) - break; - unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; - if (ChunkAt(chx, 1, chy) && - ChunkAt(chx, 1, chy)->IsDirty()) { - updateThList[threads++] = - std::async(std::launch::async, - [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { - chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); - if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; - } - } - for (; ty >= -side; --ty) { - if (frameUpdate) - break; - unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; - if (ChunkAt(chx, 1, chy) && - ChunkAt(chx, 1, chy)->IsDirty()) { - updateThList[threads++] = - std::async(std::launch::async, - [](Chunk* chunk, BlockInfo* blockinfo[BTYPE_LAST], World* world) { - chunk->Update(blockinfo, world); return chunk; }, ChunkAt(chx, 1, chy), blockinfo, this); - if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; - } - } - if (frameUpdate) - break; - ++side; - } - - if (threads > 0) { - for (int i = 0; i < threads; ++i) { - updateThList[i].wait(); - Chunk* chunk = updateThList[i].get(); - chunk->FlushMeshToVBO(); - } - } - - threads = 0; - - int del = THREADS_DELETE_CHUNKS; - while (!m_tbDeleted.empty() && del--) { // Moins rapide que le bout en dessous, mais -beaucoup- plus stable. - m_tbDeleted.back()->FlushVBO(); - m_tbDeleted.back()->~Chunk(); - m_tbDeleted.pop_back(); - } - - /*while (!m_tbDeleted.empty() && !frameDelete) { - if (m_tbDeleted.back()) { - m_tbDeleted.back()->FlushVBO(); - delThList[threads] = - std::async(std::launch::async, - [](Chunk* chunk) { delete chunk; }, m_tbDeleted.back()); - m_tbDeleted.pop_back(); - if (++threads > THREADS_DELETE_CHUNKS) frameDelete = FRAMES_DELETE_CHUNKS; - } - else m_tbDeleted.pop_back(); - }*/ - - for (int x = 0; x < threads; ++x) { - delThList[x].wait(); - delThList[x].get(); - } -} - -int World::GettbDeleted() const { return m_tbDeleted.size(); } \ No newline at end of file diff --git a/SQCSim2021/world.h b/SQCSim2021/world.h deleted file mode 100644 index 0b88748..0000000 --- a/SQCSim2021/world.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef WORLD_H__ -#define WORLD_H__ -#include -#include -#include -#include -#include -#include "../SQCSim-common/vector3.h" -#include "../SQCSim-common/array2d.h" -#include "../SQCSim-common/bullet.h" -#include "define.h" -#include "player.h" -#include "chunk.h" -#include "transformation.h" -#include "shader.h" -#include "textureatlas.h" - -class Chunk; -class Player; -class Bullet; - -class World { -public: - World(); - ~World(); - - Array2d& GetChunks(); - - void SetSeed(uint64_t seed); - - Chunk* ChunkAt(float x, float y, float z) const; - Chunk* ChunkAt(const Vector3f& pos) const; - - BlockType BlockAt(float x, float y, float z, BlockType defaultBlockType = BTYPE_AIR) const; - BlockType BlockAt(const Vector3f& pos, BlockType defaultBlockType = BTYPE_AIR) const; - - void Update(int& rendercount, Bullet* bullets[MAX_BULLETS], Player& player, Transformation& world, Shader& shader, TextureAtlas& atlas, BlockInfo* blockinfo[BTYPE_LAST]); - - void GetScope(unsigned int& x, unsigned int& y); - - void ChangeBlockAtCursor(BlockType blockType, Player& player, bool& block); - void ChangeBlockAtPosition(BlockType blockType, Vector3f pos); - void CleanUpWorld(int& deleteframes, bool clear); - int GettbDeleted() const; -private: - Array2d m_chunks = Array2d(WORLD_SIZE_X, WORLD_SIZE_Y); - std::vector m_tbDeleted; - uint64_t m_seed = 0; - - unsigned int m_center[2] = { UINT16_MAX / 2 - WORLD_SIZE_X, UINT16_MAX / 2 - WORLD_SIZE_Y }; - - void UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]); - void RenderWorld(int& rendercount, Player& player, Transformation& world, Shader& shader); - void UpdateWorld(Player& player, BlockInfo* blockinfo[BTYPE_LAST]); - void TransposeWorld(Player& player, Bullet* bullets[MAX_BULLETS]); - -}; -#endif // WORLD_H__ - diff --git a/SQCSim2021/worldrenderer.cpp b/SQCSim2021/worldrenderer.cpp new file mode 100644 index 0000000..dcf6d45 --- /dev/null +++ b/SQCSim2021/worldrenderer.cpp @@ -0,0 +1,213 @@ +#include "worldrenderer.h" + +WorldRenderer::WorldRenderer() { + m_meshes.Reset(nullptr); +} + +WorldRenderer::~WorldRenderer() { +} + +void WorldRenderer::RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas) { + rendercount = 0; + Vector3f angle; + Vector3f cursor; + Vector3f direct = player_dir; + Vector3f pos = player_pos - direct; + + direct.y = 0; + direct.Normalize(); + pos.y = 1; + + static Vector3 renderManifest[VIEW_DISTANCE * 8]; // Nombre de Chunks maximal à être rendus. + + //for (int dist = VIEW_DISTANCE; dist >= 0; dist -= CHUNK_SIZE_X) { + for (int dist = 0; dist <= VIEW_DISTANCE; dist += CHUNK_SIZE_X) { + // Configuration du radar. + float sinus, cosinus; + int echantillons; + + if (dist > VIEW_DISTANCE * .1f) { + sinus = .00872653549f; // sin(1/2 degré) + cosinus = .99996192306; // cos(1/2 degré) + echantillons = 180; + } + //else {//if (dist > VIEW_DISTANCE * .3f) { + // sinus = .01151891831f; // sin(2/3 degré) + // cosinus = .99993365506; // cos(2/3 degré) + // echantillons = 120; + //} + //else if (dist > VIEW_DISTANCE * .2f) { + // sinus = .01745240643; // sin(1 degré) + // cosinus = .99984769515; // cos(1 degré) + // echantillons = 90; + //} + //else if (dist > VIEW_DISTANCE * .1f) { + // sinus = .0261769483; + // cosinus = .99965732497; + // echantillons = 60; + //} + else { + sinus = .0348994967; + cosinus = .99939082701; + echantillons = 45; + } + + angle.x = direct.z + direct.x; + angle.z = direct.z - direct.x; + angle.y = 0; + angle.Normalize(); + + for (int radar = 0; radar < echantillons; ++radar) { + float x = angle.x; + + angle.x = angle.x * cosinus - angle.z * sinus; + angle.z = angle.z * cosinus + x * sinus; + angle.Normalize(); + + cursor = pos - direct * CHUNK_SIZE_X * 4 + angle * dist; + if (cursor.y >= 128.f || cursor.y >= 0.f) cursor.y = CHUNK_SIZE_Y / 4.f; + + + if (origin->ChunkAt(cursor)) { + bool valide = true; + unsigned int chx, chy; + origin->ChunkAt(cursor)->GetPosition(chx, chy); + for (int index = 0; index < rendercount; ++index) // Permet de vérifier seulement contre celles ajoutées dans la frame, et ne pas avoir à refaire l'array à chaque frame. + if (renderManifest[index].x == chx && renderManifest[index].z == chy) + valide = false; + + if (valide) renderManifest[rendercount++] = Vector3(chx, + (VIEW_DISTANCE - (pos - cursor).Length() * 3.f + 256.f) < 0.f ? 0 : + (VIEW_DISTANCE - (pos - cursor).Length() * 3.f + 256.f) * 1000, + chy); + } + } + } + shader.Use(); + atlas.Bind(); + glStencilFunc(GL_EQUAL, 1, 0x00); + glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + + unsigned int sx, sy, cx, cy; + origin->GetScope(sx,sy); + + for (int index = 0; index < rendercount; ++index) { + int chx = (renderManifest[index].x - sx) * CHUNK_SIZE_X, chy = (renderManifest[index].z - sy) * CHUNK_SIZE_Z; + + world.ApplyTranslation(chx, 0, chy); + glLoadMatrixf(world.GetMatrix().GetInternalValues()); + float blcolor = renderManifest[index].y / (VIEW_DISTANCE / 50.f); + glBlendColor(blcolor, blcolor, blcolor, 1.f); + origin->ChunkAt(chx, 1, chy)->GetPosition(cx,cy); + if (m_meshes.Get(cx - sx, cy - sy)) + m_meshes.Get(cx - sx, cy -sy)->Render(); + world.ApplyTranslation(-chx, 0, -chy); + } + shader.Disable(); + glStencilFunc(GL_GREATER, 1, 0xFF); +}; + +void WorldRenderer::UpdateWorld(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]) { + int cx = player.x; + int cy = player.z; + static int frameUpdate = 2; + int side = 0; + int threads = 0; + std::future updateThList[THREADS_UPDATE_CHUNKS]; + + unsigned int mx = 0 , my = 0, sx, sy; + + origin->GetScope(sx, sy); + + if (frameUpdate > 0) --frameUpdate; + + if (!frameUpdate) + while (side * CHUNK_SIZE_X <= VIEW_DISTANCE * 2) { + int tx = -side, ty = -side; + + for (; tx <= side; ++tx) { + if (frameUpdate) + break; + unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + if (origin->ChunkAt(chx, 1, chy) && + origin->ChunkAt(chx, 1, chy)->IsDirty()) { + origin->ChunkAt(chx, 1, chy)->GetPosition(mx, my); + if (m_meshes.Get(mx - sx, my - sy)) + updateThList[threads++] = + std::async(std::launch::async, + [](Mesh* mesh, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + mesh->Update(blockinfo, world); return mesh; }, m_meshes.Get(mx - sx, my - sy), blockinfo, origin); + else updateThList[threads++] = std::async(std::launch::async, + [](Chunk* chunk) { return new Mesh(chunk); }, origin->ChunkAt(chx, 1, chy)); + if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + } + } + for (; ty <= side; ++ty) { + if (frameUpdate) + break; + unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + if (origin->ChunkAt(chx, 1, chy) && + origin->ChunkAt(chx, 1, chy)->IsDirty()) { + origin->ChunkAt(chx, 1, chy)->GetPosition(mx, my); + if (m_meshes.Get(mx - sx, my - sy)) + updateThList[threads++] = + std::async(std::launch::async, + [](Mesh* mesh, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + mesh->Update(blockinfo, world); return mesh; }, m_meshes.Get(mx - sx, my - sy), blockinfo, origin); + else updateThList[threads++] = std::async(std::launch::async, + [](Chunk* chunk) { return new Mesh(chunk); }, origin->ChunkAt(chx, 1, chy)); + if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + } + } + for (; tx >= -side; --tx) { + if (frameUpdate) + break; + unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + if (origin->ChunkAt(chx, 1, chy) && + origin->ChunkAt(chx, 1, chy)->IsDirty()) { + origin->ChunkAt(chx, 1, chy)->GetPosition(mx, my); + if (m_meshes.Get(mx - sx, my - sy)) + updateThList[threads++] = + std::async(std::launch::async, + [](Mesh* mesh, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + mesh->Update(blockinfo, world); return mesh; }, m_meshes.Get(mx - sx, my - sy), blockinfo, origin); + else updateThList[threads++] = std::async(std::launch::async, + [](Chunk* chunk) { return new Mesh(chunk); }, origin->ChunkAt(chx, 1, chy)); + if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + } + } + for (; ty >= -side; --ty) { + if (frameUpdate) + break; + unsigned int chx = cx + tx * CHUNK_SIZE_X, chy = cy + ty * CHUNK_SIZE_Z; + if (origin->ChunkAt(chx, 1, chy) && + origin->ChunkAt(chx, 1, chy)->IsDirty()) { + origin->ChunkAt(chx, 1, chy)->GetPosition(mx, my); + if (m_meshes.Get(mx - sx, my - sy)) + updateThList[threads++] = + std::async(std::launch::async, + [](Mesh* mesh, BlockInfo* blockinfo[BTYPE_LAST], World* world) { + mesh->Update(blockinfo, world); return mesh; }, m_meshes.Get(mx - sx, my - sy), blockinfo, origin); + else updateThList[threads++] = std::async(std::launch::async, + [](Chunk* chunk) { return new Mesh(chunk); }, origin->ChunkAt(chx, 1, chy)); + if (threads == THREADS_UPDATE_CHUNKS) frameUpdate = FRAMES_UPDATE_CHUNKS; + } + } + if (frameUpdate) + break; + ++side; + } + + if (threads > 0) { + for (int i = 0; i < threads; ++i) { + updateThList[i].wait(); + Mesh* mesh = updateThList[i].get(); + if (mesh->IsNew()) { + unsigned int x, y; + mesh->GetPosition(x, y, origin); + m_meshes.Set(x, y, mesh); + } + mesh->FlushMeshToVBO(); + } + } +} diff --git a/SQCSim2021/worldrenderer.h b/SQCSim2021/worldrenderer.h new file mode 100644 index 0000000..46e6624 --- /dev/null +++ b/SQCSim2021/worldrenderer.h @@ -0,0 +1,23 @@ +#ifndef WORLDRENDERER_H__ +#define WORLDRENDERER_H__ +#include +#include +#include "../SQCSim-common/world.h" +#include "../SQCSim-common/transformation.h" +#include "define.h" +#include "mesh.h" +#include "textureatlas.h" +#include "shader.h" + +class WorldRenderer { +private: + Array2d m_meshes = Array2d(WORLD_SIZE_X, WORLD_SIZE_Y); + +public: + WorldRenderer(); + ~WorldRenderer(); + + void RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas); + void UpdateWorld(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]); +}; +#endif \ No newline at end of file From ef8a05054560eebe09a00942cb8bd94f93f49418 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 30 Sep 2023 14:54:39 -0400 Subject: [PATCH 16/19] Cleanup un peu TOC --- SQCSim-common/bullet.h | 1 + SQCSim-common/chunk.h | 1 + SQCSim-common/netprotocol.h | 1 + SQCSim-common/player.h | 5 +++-- SQCSim-common/world.h | 1 + SQCSim-srv/connection.h | 1 + 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h index d17000e..e3ae989 100644 --- a/SQCSim-common/bullet.h +++ b/SQCSim-common/bullet.h @@ -1,5 +1,6 @@ #ifndef BULLET_H__ #define BULLET_H__ + #include "define.h" #include "vector3.h" diff --git a/SQCSim-common/chunk.h b/SQCSim-common/chunk.h index ea4a949..b053928 100644 --- a/SQCSim-common/chunk.h +++ b/SQCSim-common/chunk.h @@ -1,5 +1,6 @@ #ifndef CHUNK_H__ #define CHUNK_H__ + #include "define.h" #include "array2d.h" #include "array3d.h" diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index bdaf0a7..d7c7a93 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -1,5 +1,6 @@ #ifndef NETPROTOCOL_H__ #define NETPROTOCOL_H__ + #include "define.h" #include #include "vector3.h" diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index 3856ced..e439fa2 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -1,5 +1,6 @@ -#ifndef CLI_PLAYER_H__ -#define CLI_PLAYER_H__ +#ifndef PLAYER_H__ +#define PLAYER_H__ + #include #include "transformation.h" #include "vector3.h" diff --git a/SQCSim-common/world.h b/SQCSim-common/world.h index 69937aa..d341ee8 100644 --- a/SQCSim-common/world.h +++ b/SQCSim-common/world.h @@ -1,5 +1,6 @@ #ifndef WORLD_H__ #define WORLD_H__ + #include #include #include diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index dc1df11..6dee988 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -1,5 +1,6 @@ #ifndef CONNECTION_H__ #define CONNECTION_H__ + #include #include #include "../SQCSim-common/player.h" From 09dd3d332feebfa820c9fe1bd19b7b077c2eb390 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 30 Sep 2023 15:01:20 -0400 Subject: [PATCH 17/19] Update SQCSim2021.vcxproj --- SQCSim2021/SQCSim2021.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 8fb814c..abbdbc9 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -168,8 +168,8 @@ Fast - Console - true + Windows + false true true irrKlang.lib;sfml-main.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;GlU32.Lib;OpenGL32.Lib;DevIL.lib;ILU.lib;ILUT.lib;glew32.lib;%(AdditionalDependencies) @@ -190,8 +190,8 @@ Fast - Console - true + Windows + false true true irrKlang.lib;sfml-main.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;GlU32.Lib;OpenGL32.Lib;DevIL.lib;ILU.lib;ILUT.lib;glew32.lib;%(AdditionalDependencies) From 8b3baa9063837a77fb55b250121fb0187c9bc2f1 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 30 Sep 2023 18:33:23 -0400 Subject: [PATCH 18/19] Corrections fichiers pour avoir la version x86 fonctionnelle --- Debug/glew32.dll | Bin 331776 -> 389632 bytes Debug/openal32.dll | Bin 423936 -> 630784 bytes Debug/sfml-audio-d-2.dll | Bin 1388544 -> 1372672 bytes Debug/sfml-graphics-d-2.dll | Bin 1359872 -> 1435136 bytes Debug/sfml-network-d-2.dll | Bin 332800 -> 330752 bytes Debug/sfml-system-d-2.dll | Bin 202752 -> 188928 bytes Debug/sfml-window-d-2.dll | Bin 281600 -> 339968 bytes Release/glew32.dll | Bin 331776 -> 389632 bytes SQCSim-common/define.h | 2 +- SQCSim2021/SQCSim2021.vcxproj | 8 +- SQCSim2021/define.h | 2 + .../doc/html/AlResource_8hpp_source.html | 58 + .../doc/html/Audio_2Export_8hpp_source.html | 56 + .../doc/html/Audio_8hpp_source.html | 56 + .../doc/html/BlendMode_8hpp_source.html | 77 + .../doc/html/CircleShape_8hpp_source.html | 60 + .../doc/html/Clipboard_8hpp_source.html | 59 + .../doc/html/Clock_8hpp_source.html | 59 + .../doc/html/Color_8hpp_source.html | 71 + .../doc/html/Config_8hpp_source.html | 57 + .../doc/html/ContextSettings_8hpp_source.html | 70 + .../doc/html/Context_8hpp_source.html | 61 + .../doc/html/ConvexShape_8hpp_source.html | 60 + .../doc/html/Cursor_8hpp_source.html | 74 + .../doc/html/Drawable_8hpp_source.html | 61 + .../sfml251-32/doc/html/Err_8hpp_source.html | 58 + .../doc/html/Event_8hpp_source.html | 146 ++ .../doc/html/FileInputStream_8hpp_source.html | 60 + .../sfml251-32/doc/html/Font_8hpp_source.html | 63 + .../sfml251-32/doc/html/Ftp_8hpp_source.html | 70 + .../doc/html/GlResource_8hpp_source.html | 60 + .../sfml251-32/doc/html/Glsl_8hpp_source.html | 70 + .../doc/html/Glyph_8hpp_source.html | 63 + .../doc/html/GpuPreference_8hpp.html | 98 + .../doc/html/GpuPreference_8hpp_source.html | 56 + .../html/Graphics_2Export_8hpp_source.html | 56 + .../doc/html/Graphics_8hpp_source.html | 56 + .../sfml251-32/doc/html/Http_8hpp_source.html | 71 + .../doc/html/Image_8hpp_source.html | 62 + .../doc/html/InputSoundFile_8hpp_source.html | 62 + .../doc/html/InputStream_8hpp_source.html | 59 + .../doc/html/IpAddress_8hpp_source.html | 64 + .../doc/html/Joystick_8hpp_source.html | 71 + .../doc/html/Keyboard_8hpp_source.html | 160 ++ .../doc/html/Listener_8hpp_source.html | 59 + .../sfml251-32/doc/html/Lock_8hpp_source.html | 60 + .../sfml251-32/doc/html/Main_8hpp_source.html | 56 + .../html/MemoryInputStream_8hpp_source.html | 59 + .../doc/html/Mouse_8hpp_source.html | 68 + .../doc/html/Music_8hpp_source.html | 69 + .../doc/html/Mutex_8hpp_source.html | 59 + .../doc/html/NativeActivity_8hpp_source.html | 58 + .../doc/html/Network_2Export_8hpp_source.html | 56 + .../doc/html/Network_8hpp_source.html | 56 + .../doc/html/NonCopyable_8hpp_source.html | 60 + .../doc/html/OpenGL_8hpp_source.html | 56 + .../doc/html/OutputSoundFile_8hpp_source.html | 60 + .../doc/html/Packet_8hpp_source.html | 61 + .../doc/html/PrimitiveType_8hpp_source.html | 68 + .../sfml251-32/doc/html/Rect_8hpp_source.html | 66 + .../doc/html/RectangleShape_8hpp_source.html | 60 + .../doc/html/RenderStates_8hpp_source.html | 67 + .../doc/html/RenderTarget_8hpp_source.html | 73 + .../doc/html/RenderTexture_8hpp_source.html | 62 + .../doc/html/RenderWindow_8hpp_source.html | 67 + .../doc/html/Sensor_8hpp_source.html | 66 + .../doc/html/Shader_8hpp_source.html | 76 + .../doc/html/Shape_8hpp_source.html | 67 + .../doc/html/Sleep_8hpp_source.html | 58 + .../doc/html/SocketHandle_8hpp_source.html | 57 + .../doc/html/SocketSelector_8hpp_source.html | 61 + .../doc/html/Socket_8hpp_source.html | 67 + .../html/SoundBufferRecorder_8hpp_source.html | 60 + .../doc/html/SoundBuffer_8hpp_source.html | 63 + .../html/SoundFileFactory_8hpp_source.html | 61 + .../doc/html/SoundFileReader_8hpp_source.html | 64 + .../doc/html/SoundFileWriter_8hpp_source.html | 59 + .../doc/html/SoundRecorder_8hpp_source.html | 61 + .../doc/html/SoundSource_8hpp_source.html | 64 + .../doc/html/SoundStream_8hpp_source.html | 63 + .../doc/html/Sound_8hpp_source.html | 62 + .../doc/html/Sprite_8hpp_source.html | 66 + .../doc/html/String_8hpp_source.html | 61 + .../doc/html/System_2Export_8hpp_source.html | 56 + .../doc/html/System_8hpp_source.html | 56 + .../doc/html/TcpListener_8hpp_source.html | 63 + .../doc/html/TcpSocket_8hpp_source.html | 65 + .../sfml251-32/doc/html/Text_8hpp_source.html | 69 + .../doc/html/Texture_8hpp_source.html | 69 + .../doc/html/ThreadLocalPtr_8hpp_source.html | 63 + .../doc/html/ThreadLocal_8hpp_source.html | 59 + .../doc/html/Thread_8hpp_source.html | 59 + .../sfml251-32/doc/html/Time_8hpp_source.html | 59 + .../doc/html/Touch_8hpp_source.html | 60 + .../doc/html/Transform_8hpp_source.html | 61 + .../doc/html/Transformable_8hpp_source.html | 60 + .../doc/html/UdpSocket_8hpp_source.html | 62 + .../sfml251-32/doc/html/Utf_8hpp_source.html | 61 + .../doc/html/Vector2_8hpp_source.html | 61 + .../doc/html/Vector3_8hpp_source.html | 62 + .../doc/html/VertexArray_8hpp_source.html | 64 + .../doc/html/VertexBuffer_8hpp_source.html | 67 + .../doc/html/Vertex_8hpp_source.html | 63 + .../doc/html/VideoMode_8hpp_source.html | 61 + .../sfml251-32/doc/html/View_8hpp_source.html | 61 + .../doc/html/WindowHandle_8hpp_source.html | 58 + .../doc/html/WindowStyle_8hpp_source.html | 63 + .../doc/html/Window_2Export_8hpp_source.html | 56 + .../doc/html/Window_2Window_8hpp_source.html | 70 + .../doc/html/Window_8hpp_source.html | 56 + .../sfml251-32/doc/html/annotated.html | 162 ++ .../external/sfml251-32/doc/html/bc_s.png | Bin 0 -> 676 bytes .../external/sfml251-32/doc/html/bdwn.png | Bin 0 -> 147 bytes .../external/sfml251-32/doc/html/classes.html | 130 + .../html/classsf_1_1AlResource-members.html | 63 + .../doc/html/classsf_1_1AlResource.html | 154 ++ .../doc/html/classsf_1_1AlResource.png | Bin 0 -> 2327 bytes .../html/classsf_1_1CircleShape-members.html | 103 + .../doc/html/classsf_1_1CircleShape.html | 1478 ++++++++++++ .../doc/html/classsf_1_1CircleShape.png | Bin 0 -> 1009 bytes .../html/classsf_1_1Clipboard-members.html | 63 + .../doc/html/classsf_1_1Clipboard.html | 152 ++ .../doc/html/classsf_1_1Clock-members.html | 64 + .../sfml251-32/doc/html/classsf_1_1Clock.html | 154 ++ .../doc/html/classsf_1_1Color-members.html | 86 + .../sfml251-32/doc/html/classsf_1_1Color.html | 987 ++++++++ .../doc/html/classsf_1_1Context-members.html | 75 + .../doc/html/classsf_1_1Context.html | 392 +++ .../doc/html/classsf_1_1Context.png | Bin 0 -> 734 bytes .../html/classsf_1_1ConvexShape-members.html | 102 + .../doc/html/classsf_1_1ConvexShape.html | 1456 ++++++++++++ .../doc/html/classsf_1_1ConvexShape.png | Bin 0 -> 1022 bytes .../doc/html/classsf_1_1Cursor-members.html | 82 + .../doc/html/classsf_1_1Cursor.html | 335 +++ .../sfml251-32/doc/html/classsf_1_1Cursor.png | Bin 0 -> 506 bytes .../doc/html/classsf_1_1Drawable-members.html | 64 + .../doc/html/classsf_1_1Drawable.html | 191 ++ .../doc/html/classsf_1_1Drawable.png | Bin 0 -> 2175 bytes .../doc/html/classsf_1_1Event-members.html | 99 + .../sfml251-32/doc/html/classsf_1_1Event.html | 505 ++++ .../classsf_1_1FileInputStream-members.html | 71 + .../doc/html/classsf_1_1FileInputStream.html | 334 +++ .../doc/html/classsf_1_1FileInputStream.png | Bin 0 -> 842 bytes .../doc/html/classsf_1_1Font-members.html | 75 + .../sfml251-32/doc/html/classsf_1_1Font.html | 568 +++++ .../doc/html/classsf_1_1Ftp-members.html | 85 + .../sfml251-32/doc/html/classsf_1_1Ftp.html | 745 ++++++ .../sfml251-32/doc/html/classsf_1_1Ftp.png | Bin 0 -> 488 bytes ...f_1_1Ftp_1_1DirectoryResponse-members.html | 111 + .../classsf_1_1Ftp_1_1DirectoryResponse.html | 411 ++++ .../classsf_1_1Ftp_1_1DirectoryResponse.png | Bin 0 -> 686 bytes ...ssf_1_1Ftp_1_1ListingResponse-members.html | 111 + .../classsf_1_1Ftp_1_1ListingResponse.html | 422 ++++ .../classsf_1_1Ftp_1_1ListingResponse.png | Bin 0 -> 659 bytes .../classsf_1_1Ftp_1_1Response-members.html | 109 + .../doc/html/classsf_1_1Ftp_1_1Response.html | 377 +++ .../doc/html/classsf_1_1Ftp_1_1Response.png | Bin 0 -> 970 bytes .../html/classsf_1_1GlResource-members.html | 64 + .../doc/html/classsf_1_1GlResource.html | 214 ++ .../doc/html/classsf_1_1GlResource.png | Bin 0 -> 1764 bytes ...ource_1_1TransientContextLock-members.html | 65 + ...1_1GlResource_1_1TransientContextLock.html | 131 + ..._1_1GlResource_1_1TransientContextLock.png | Bin 0 -> 769 bytes .../doc/html/classsf_1_1Glyph-members.html | 65 + .../sfml251-32/doc/html/classsf_1_1Glyph.html | 185 ++ .../doc/html/classsf_1_1Http-members.html | 67 + .../sfml251-32/doc/html/classsf_1_1Http.html | 263 ++ .../sfml251-32/doc/html/classsf_1_1Http.png | Bin 0 -> 489 bytes .../classsf_1_1Http_1_1Request-members.html | 74 + .../doc/html/classsf_1_1Http_1_1Request.html | 352 +++ .../classsf_1_1Http_1_1Response-members.html | 92 + .../doc/html/classsf_1_1Http_1_1Response.html | 345 +++ .../doc/html/classsf_1_1Image-members.html | 77 + .../sfml251-32/doc/html/classsf_1_1Image.html | 650 +++++ .../classsf_1_1InputSoundFile-members.html | 77 + .../doc/html/classsf_1_1InputSoundFile.html | 481 ++++ .../doc/html/classsf_1_1InputSoundFile.png | Bin 0 -> 559 bytes .../html/classsf_1_1InputStream-members.html | 66 + .../doc/html/classsf_1_1InputStream.html | 281 +++ .../doc/html/classsf_1_1InputStream.png | Bin 0 -> 911 bytes .../html/classsf_1_1IpAddress-members.html | 75 + .../doc/html/classsf_1_1IpAddress.html | 561 +++++ .../doc/html/classsf_1_1Joystick-members.html | 80 + .../doc/html/classsf_1_1Joystick.html | 478 ++++ .../doc/html/classsf_1_1Keyboard-members.html | 172 ++ .../doc/html/classsf_1_1Keyboard.html | 539 +++++ .../doc/html/classsf_1_1Listener-members.html | 72 + .../doc/html/classsf_1_1Listener.html | 537 +++++ .../doc/html/classsf_1_1Lock-members.html | 65 + .../sfml251-32/doc/html/classsf_1_1Lock.html | 154 ++ .../sfml251-32/doc/html/classsf_1_1Lock.png | Bin 0 -> 491 bytes .../classsf_1_1MemoryInputStream-members.html | 68 + .../html/classsf_1_1MemoryInputStream.html | 313 +++ .../doc/html/classsf_1_1MemoryInputStream.png | Bin 0 -> 657 bytes .../doc/html/classsf_1_1Mouse-members.html | 76 + .../sfml251-32/doc/html/classsf_1_1Mouse.html | 357 +++ .../doc/html/classsf_1_1Music-members.html | 109 + .../sfml251-32/doc/html/classsf_1_1Music.html | 1445 +++++++++++ .../sfml251-32/doc/html/classsf_1_1Music.png | Bin 0 -> 919 bytes .../doc/html/classsf_1_1Mutex-members.html | 67 + .../sfml251-32/doc/html/classsf_1_1Mutex.html | 186 ++ .../sfml251-32/doc/html/classsf_1_1Mutex.png | Bin 0 -> 511 bytes .../html/classsf_1_1NonCopyable-members.html | 63 + .../doc/html/classsf_1_1NonCopyable.html | 172 ++ .../doc/html/classsf_1_1NonCopyable.png | Bin 0 -> 6259 bytes .../classsf_1_1OutputSoundFile-members.html | 67 + .../doc/html/classsf_1_1OutputSoundFile.html | 225 ++ .../doc/html/classsf_1_1OutputSoundFile.png | Bin 0 -> 576 bytes .../doc/html/classsf_1_1Packet-members.html | 105 + .../doc/html/classsf_1_1Packet.html | 1156 +++++++++ .../doc/html/classsf_1_1Rect-members.html | 75 + .../sfml251-32/doc/html/classsf_1_1Rect.html | 630 +++++ .../classsf_1_1RectangleShape-members.html | 102 + .../doc/html/classsf_1_1RectangleShape.html | 1434 +++++++++++ .../doc/html/classsf_1_1RectangleShape.png | Bin 0 -> 1060 bytes .../html/classsf_1_1RenderStates-members.html | 72 + .../doc/html/classsf_1_1RenderStates.html | 409 ++++ .../html/classsf_1_1RenderTarget-members.html | 84 + .../doc/html/classsf_1_1RenderTarget.html | 822 +++++++ .../doc/html/classsf_1_1RenderTarget.png | Bin 0 -> 1080 bytes .../classsf_1_1RenderTexture-members.html | 94 + .../doc/html/classsf_1_1RenderTexture.html | 1264 ++++++++++ .../doc/html/classsf_1_1RenderTexture.png | Bin 0 -> 814 bytes .../html/classsf_1_1RenderWindow-members.html | 120 + .../doc/html/classsf_1_1RenderWindow.html | 2116 +++++++++++++++++ .../doc/html/classsf_1_1RenderWindow.png | Bin 0 -> 1416 bytes .../doc/html/classsf_1_1Sensor-members.html | 72 + .../doc/html/classsf_1_1Sensor.html | 262 ++ .../doc/html/classsf_1_1Shader-members.html | 118 + .../doc/html/classsf_1_1Shader.html | 2092 ++++++++++++++++ .../sfml251-32/doc/html/classsf_1_1Shader.png | Bin 0 -> 748 bytes .../doc/html/classsf_1_1Shape-members.html | 99 + .../sfml251-32/doc/html/classsf_1_1Shape.html | 1328 +++++++++++ .../sfml251-32/doc/html/classsf_1_1Shape.png | Bin 0 -> 1486 bytes .../doc/html/classsf_1_1Socket-members.html | 82 + .../doc/html/classsf_1_1Socket.html | 476 ++++ .../sfml251-32/doc/html/classsf_1_1Socket.png | Bin 0 -> 1245 bytes .../classsf_1_1SocketSelector-members.html | 70 + .../doc/html/classsf_1_1SocketSelector.html | 346 +++ .../doc/html/classsf_1_1Sound-members.html | 99 + .../sfml251-32/doc/html/classsf_1_1Sound.html | 1123 +++++++++ .../sfml251-32/doc/html/classsf_1_1Sound.png | Bin 0 -> 691 bytes .../html/classsf_1_1SoundBuffer-members.html | 78 + .../doc/html/classsf_1_1SoundBuffer.html | 524 ++++ .../doc/html/classsf_1_1SoundBuffer.png | Bin 0 -> 509 bytes ...lasssf_1_1SoundBufferRecorder-members.html | 79 + .../html/classsf_1_1SoundBufferRecorder.html | 645 +++++ .../html/classsf_1_1SoundBufferRecorder.png | Bin 0 -> 903 bytes .../classsf_1_1SoundFileFactory-members.html | 69 + .../doc/html/classsf_1_1SoundFileFactory.html | 389 +++ .../classsf_1_1SoundFileReader-members.html | 65 + .../doc/html/classsf_1_1SoundFileReader.html | 259 ++ .../classsf_1_1SoundFileWriter-members.html | 64 + .../doc/html/classsf_1_1SoundFileWriter.html | 219 ++ .../classsf_1_1SoundRecorder-members.html | 79 + .../doc/html/classsf_1_1SoundRecorder.html | 618 +++++ .../doc/html/classsf_1_1SoundRecorder.png | Bin 0 -> 906 bytes .../html/classsf_1_1SoundSource-members.html | 89 + .../doc/html/classsf_1_1SoundSource.html | 804 +++++++ .../doc/html/classsf_1_1SoundSource.png | Bin 0 -> 1194 bytes .../html/classsf_1_1SoundStream-members.html | 100 + .../doc/html/classsf_1_1SoundStream.html | 1227 ++++++++++ .../doc/html/classsf_1_1SoundStream.png | Bin 0 -> 926 bytes .../doc/html/classsf_1_1Sprite-members.html | 93 + .../doc/html/classsf_1_1Sprite.html | 1133 +++++++++ .../sfml251-32/doc/html/classsf_1_1Sprite.png | Bin 0 -> 734 bytes .../doc/html/classsf_1_1String-members.html | 112 + .../doc/html/classsf_1_1String.html | 1789 ++++++++++++++ .../html/classsf_1_1TcpListener-members.html | 83 + .../doc/html/classsf_1_1TcpListener.html | 547 +++++ .../doc/html/classsf_1_1TcpListener.png | Bin 0 -> 715 bytes .../html/classsf_1_1TcpSocket-members.html | 91 + .../doc/html/classsf_1_1TcpSocket.html | 819 +++++++ .../doc/html/classsf_1_1TcpSocket.png | Bin 0 -> 722 bytes .../doc/html/classsf_1_1Text-members.html | 113 + .../sfml251-32/doc/html/classsf_1_1Text.html | 1557 ++++++++++++ .../sfml251-32/doc/html/classsf_1_1Text.png | Bin 0 -> 710 bytes .../doc/html/classsf_1_1Texture-members.html | 100 + .../doc/html/classsf_1_1Texture.html | 1201 ++++++++++ .../doc/html/classsf_1_1Texture.png | Bin 0 -> 475 bytes .../doc/html/classsf_1_1Thread-members.html | 70 + .../doc/html/classsf_1_1Thread.html | 316 +++ .../sfml251-32/doc/html/classsf_1_1Thread.png | Bin 0 -> 501 bytes .../html/classsf_1_1ThreadLocal-members.html | 67 + .../doc/html/classsf_1_1ThreadLocal.html | 194 ++ .../doc/html/classsf_1_1ThreadLocal.png | Bin 0 -> 878 bytes .../classsf_1_1ThreadLocalPtr-members.html | 71 + .../doc/html/classsf_1_1ThreadLocalPtr.html | 277 +++ .../doc/html/classsf_1_1ThreadLocalPtr.png | Bin 0 -> 597 bytes .../doc/html/classsf_1_1Time-members.html | 96 + .../sfml251-32/doc/html/classsf_1_1Time.html | 1516 ++++++++++++ .../doc/html/classsf_1_1Touch-members.html | 64 + .../sfml251-32/doc/html/classsf_1_1Touch.html | 211 ++ .../html/classsf_1_1Transform-members.html | 84 + .../doc/html/classsf_1_1Transform.html | 1038 ++++++++ .../classsf_1_1Transformable-members.html | 81 + .../doc/html/classsf_1_1Transformable.html | 723 ++++++ .../doc/html/classsf_1_1Transformable.png | Bin 0 -> 1671 bytes .../html/classsf_1_1UdpSocket-members.html | 88 + .../doc/html/classsf_1_1UdpSocket.html | 793 ++++++ .../doc/html/classsf_1_1UdpSocket.png | Bin 0 -> 723 bytes .../sfml251-32/doc/html/classsf_1_1Utf.html | 80 + .../classsf_1_1Utf_3_0116_01_4-members.html | 74 + .../doc/html/classsf_1_1Utf_3_0116_01_4.html | 883 +++++++ .../classsf_1_1Utf_3_0132_01_4-members.html | 78 + .../doc/html/classsf_1_1Utf_3_0132_01_4.html | 1105 +++++++++ .../classsf_1_1Utf_3_018_01_4-members.html | 74 + .../doc/html/classsf_1_1Utf_3_018_01_4.html | 883 +++++++ .../doc/html/classsf_1_1Vector2-members.html | 78 + .../doc/html/classsf_1_1Vector2.html | 878 +++++++ .../doc/html/classsf_1_1Vector3-members.html | 79 + .../doc/html/classsf_1_1Vector3.html | 907 +++++++ .../doc/html/classsf_1_1Vertex-members.html | 69 + .../doc/html/classsf_1_1Vertex.html | 333 +++ .../html/classsf_1_1VertexArray-members.html | 73 + .../doc/html/classsf_1_1VertexArray.html | 413 ++++ .../doc/html/classsf_1_1VertexArray.png | Bin 0 -> 512 bytes .../html/classsf_1_1VertexBuffer-members.html | 89 + .../doc/html/classsf_1_1VertexBuffer.html | 772 ++++++ .../doc/html/classsf_1_1VertexBuffer.png | Bin 0 -> 753 bytes .../html/classsf_1_1VideoMode-members.html | 75 + .../doc/html/classsf_1_1VideoMode.html | 615 +++++ .../doc/html/classsf_1_1View-members.html | 81 + .../sfml251-32/doc/html/classsf_1_1View.html | 703 ++++++ .../doc/html/classsf_1_1Window-members.html | 98 + .../doc/html/classsf_1_1Window.html | 1130 +++++++++ .../sfml251-32/doc/html/classsf_1_1Window.png | Bin 0 -> 1018 bytes .../external/sfml251-32/doc/html/closed.png | Bin 0 -> 132 bytes .../sfml251-32/doc/html/deprecated.html | 94 + .../dir_5cf786e58cbf7297a26339ae6e44357c.html | 56 + .../dir_83d50c0b1f1eceb6f182949162e90861.html | 56 + .../dir_89e9fb32471ae291b179a889144513db.html | 56 + .../dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html | 66 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 60 + .../dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html | 56 + .../dir_e68e8157741866f444e17edd764ebbae.html | 56 + .../dir_e71ec51a9abd604c65f6abb639f6ea75.html | 56 + .../external/sfml251-32/doc/html/doc.png | Bin 0 -> 746 bytes .../external/sfml251-32/doc/html/doxygen.css | 1450 +++++++++++ .../external/sfml251-32/doc/html/doxygen.png | Bin 0 -> 3779 bytes .../sfml251-32/doc/html/dynsections.js | 127 + .../external/sfml251-32/doc/html/files.html | 155 ++ .../sfml251-32/doc/html/folderclosed.png | Bin 0 -> 616 bytes .../sfml251-32/doc/html/folderopen.png | Bin 0 -> 597 bytes .../sfml251-32/doc/html/functions.html | 182 ++ .../sfml251-32/doc/html/functions_0x7e.html | 213 ++ .../sfml251-32/doc/html/functions_b.html | 170 ++ .../sfml251-32/doc/html/functions_c.html | 257 ++ .../sfml251-32/doc/html/functions_d.html | 191 ++ .../sfml251-32/doc/html/functions_e.html | 146 ++ .../sfml251-32/doc/html/functions_enum.html | 114 + .../sfml251-32/doc/html/functions_eval.html | 123 + .../sfml251-32/doc/html/functions_eval_b.html | 129 + .../sfml251-32/doc/html/functions_eval_c.html | 137 ++ .../sfml251-32/doc/html/functions_eval_d.html | 147 ++ .../sfml251-32/doc/html/functions_eval_e.html | 119 + .../sfml251-32/doc/html/functions_eval_f.html | 164 ++ .../sfml251-32/doc/html/functions_eval_g.html | 116 + .../sfml251-32/doc/html/functions_eval_h.html | 119 + .../sfml251-32/doc/html/functions_eval_i.html | 117 + .../sfml251-32/doc/html/functions_eval_j.html | 113 + .../sfml251-32/doc/html/functions_eval_k.html | 107 + .../sfml251-32/doc/html/functions_eval_l.html | 126 + .../sfml251-32/doc/html/functions_eval_m.html | 143 ++ .../sfml251-32/doc/html/functions_eval_n.html | 200 ++ .../sfml251-32/doc/html/functions_eval_o.html | 123 + .../sfml251-32/doc/html/functions_eval_p.html | 149 ++ .../sfml251-32/doc/html/functions_eval_q.html | 101 + .../sfml251-32/doc/html/functions_eval_r.html | 139 ++ .../sfml251-32/doc/html/functions_eval_s.html | 168 ++ .../sfml251-32/doc/html/functions_eval_t.html | 125 + .../sfml251-32/doc/html/functions_eval_u.html | 117 + .../sfml251-32/doc/html/functions_eval_v.html | 108 + .../sfml251-32/doc/html/functions_eval_w.html | 101 + .../sfml251-32/doc/html/functions_eval_x.html | 105 + .../sfml251-32/doc/html/functions_eval_y.html | 99 + .../sfml251-32/doc/html/functions_eval_z.html | 102 + .../sfml251-32/doc/html/functions_f.html | 216 ++ .../sfml251-32/doc/html/functions_func.html | 114 + .../doc/html/functions_func_0x7e.html | 209 ++ .../sfml251-32/doc/html/functions_func_b.html | 104 + .../sfml251-32/doc/html/functions_func_c.html | 178 ++ .../sfml251-32/doc/html/functions_func_d.html | 127 + .../sfml251-32/doc/html/functions_func_e.html | 112 + .../sfml251-32/doc/html/functions_func_f.html | 134 ++ .../sfml251-32/doc/html/functions_func_g.html | 452 ++++ .../sfml251-32/doc/html/functions_func_h.html | 101 + .../sfml251-32/doc/html/functions_func_i.html | 168 ++ .../sfml251-32/doc/html/functions_func_k.html | 95 + .../sfml251-32/doc/html/functions_func_l.html | 143 ++ .../sfml251-32/doc/html/functions_func_m.html | 117 + .../sfml251-32/doc/html/functions_func_n.html | 100 + .../sfml251-32/doc/html/functions_func_o.html | 287 +++ .../sfml251-32/doc/html/functions_func_p.html | 117 + .../sfml251-32/doc/html/functions_func_r.html | 169 ++ .../sfml251-32/doc/html/functions_func_s.html | 400 ++++ .../sfml251-32/doc/html/functions_func_t.html | 188 ++ .../sfml251-32/doc/html/functions_func_u.html | 116 + .../sfml251-32/doc/html/functions_func_v.html | 113 + .../sfml251-32/doc/html/functions_func_w.html | 106 + .../sfml251-32/doc/html/functions_func_z.html | 95 + .../sfml251-32/doc/html/functions_g.html | 483 ++++ .../sfml251-32/doc/html/functions_h.html | 134 ++ .../sfml251-32/doc/html/functions_i.html | 203 ++ .../sfml251-32/doc/html/functions_j.html | 128 + .../sfml251-32/doc/html/functions_k.html | 117 + .../sfml251-32/doc/html/functions_l.html | 187 ++ .../sfml251-32/doc/html/functions_m.html | 196 ++ .../sfml251-32/doc/html/functions_n.html | 215 ++ .../sfml251-32/doc/html/functions_o.html | 323 +++ .../sfml251-32/doc/html/functions_p.html | 182 ++ .../sfml251-32/doc/html/functions_q.html | 102 + .../sfml251-32/doc/html/functions_r.html | 223 ++ .../sfml251-32/doc/html/functions_rela.html | 66 + .../sfml251-32/doc/html/functions_s.html | 517 ++++ .../sfml251-32/doc/html/functions_t.html | 261 ++ .../sfml251-32/doc/html/functions_type.html | 69 + .../sfml251-32/doc/html/functions_u.html | 148 ++ .../sfml251-32/doc/html/functions_v.html | 131 + .../sfml251-32/doc/html/functions_vars.html | 478 ++++ .../sfml251-32/doc/html/functions_w.html | 130 + .../sfml251-32/doc/html/functions_x.html | 118 + .../sfml251-32/doc/html/functions_y.html | 115 + .../sfml251-32/doc/html/functions_z.html | 113 + .../external/sfml251-32/doc/html/globals.html | 59 + .../sfml251-32/doc/html/globals_defs.html | 59 + .../sfml251-32/doc/html/group__audio.html | 99 + .../sfml251-32/doc/html/group__graphics.html | 202 ++ .../sfml251-32/doc/html/group__network.html | 84 + .../sfml251-32/doc/html/group__system.html | 192 ++ .../sfml251-32/doc/html/group__window.html | 187 ++ .../sfml251-32/doc/html/hierarchy.html | 175 ++ .../external/sfml251-32/doc/html/index.html | 53 + .../external/sfml251-32/doc/html/jquery.js | 115 + .../doc/html/mainpage_8hpp_source.html | 56 + .../external/sfml251-32/doc/html/menudata.js | 149 ++ .../external/sfml251-32/doc/html/modules.html | 55 + .../sfml251-32/doc/html/namespacemembers.html | 89 + .../doc/html/namespacemembers_type.html | 89 + .../sfml251-32/doc/html/namespaces.html | 58 + .../doc/html/namespacesf_1_1Glsl.html | 304 +++ .../external/sfml251-32/doc/html/nav_f.png | Bin 0 -> 153 bytes .../external/sfml251-32/doc/html/nav_g.png | Bin 0 -> 95 bytes .../external/sfml251-32/doc/html/nav_h.png | Bin 0 -> 98 bytes .../external/sfml251-32/doc/html/open.png | Bin 0 -> 123 bytes .../external/sfml251-32/doc/html/pages.html | 51 + .../external/sfml251-32/doc/html/splitbar.png | Bin 0 -> 314 bytes .../html/structsf_1_1BlendMode-members.html | 87 + .../doc/html/structsf_1_1BlendMode.html | 565 +++++ .../structsf_1_1ContextSettings-members.html | 73 + .../doc/html/structsf_1_1ContextSettings.html | 361 +++ ...1Event_1_1JoystickButtonEvent-members.html | 63 + ...uctsf_1_1Event_1_1JoystickButtonEvent.html | 120 + ...Event_1_1JoystickConnectEvent-members.html | 62 + ...ctsf_1_1Event_1_1JoystickConnectEvent.html | 99 + ...1_1Event_1_1JoystickMoveEvent-members.html | 64 + ...tructsf_1_1Event_1_1JoystickMoveEvent.html | 141 ++ ...structsf_1_1Event_1_1KeyEvent-members.html | 66 + .../html/structsf_1_1Event_1_1KeyEvent.html | 183 ++ ..._1_1Event_1_1MouseButtonEvent-members.html | 64 + ...structsf_1_1Event_1_1MouseButtonEvent.html | 141 ++ ...sf_1_1Event_1_1MouseMoveEvent-members.html | 63 + .../structsf_1_1Event_1_1MouseMoveEvent.html | 120 + ...f_1_1Event_1_1MouseWheelEvent-members.html | 64 + .../structsf_1_1Event_1_1MouseWheelEvent.html | 142 ++ ...vent_1_1MouseWheelScrollEvent-members.html | 65 + ...tsf_1_1Event_1_1MouseWheelScrollEvent.html | 162 ++ ...uctsf_1_1Event_1_1SensorEvent-members.html | 65 + .../structsf_1_1Event_1_1SensorEvent.html | 162 ++ ...tructsf_1_1Event_1_1SizeEvent-members.html | 63 + .../html/structsf_1_1Event_1_1SizeEvent.html | 120 + ...tructsf_1_1Event_1_1TextEvent-members.html | 62 + .../html/structsf_1_1Event_1_1TextEvent.html | 99 + ...ructsf_1_1Event_1_1TouchEvent-members.html | 64 + .../html/structsf_1_1Event_1_1TouchEvent.html | 141 ++ .../structsf_1_1Font_1_1Info-members.html | 62 + .../doc/html/structsf_1_1Font_1_1Info.html | 99 + ...1_1Joystick_1_1Identification-members.html | 65 + ...tructsf_1_1Joystick_1_1Identification.html | 141 ++ .../structsf_1_1Music_1_1Span-members.html | 65 + .../doc/html/structsf_1_1Music_1_1Span.html | 218 ++ ...uctsf_1_1Shader_1_1CurrentTextureType.html | 71 + ...sf_1_1SoundFileReader_1_1Info-members.html | 64 + .../structsf_1_1SoundFileReader_1_1Info.html | 141 ++ ...uctsf_1_1SoundStream_1_1Chunk-members.html | 63 + .../structsf_1_1SoundStream_1_1Chunk.html | 120 + .../external/sfml251-32/doc/html/sync_off.png | Bin 0 -> 853 bytes .../external/sfml251-32/doc/html/sync_on.png | Bin 0 -> 845 bytes .../external/sfml251-32/doc/html/tab_a.png | Bin 0 -> 142 bytes .../external/sfml251-32/doc/html/tab_b.png | Bin 0 -> 169 bytes .../external/sfml251-32/doc/html/tab_h.png | Bin 0 -> 177 bytes .../external/sfml251-32/doc/html/tab_s.png | Bin 0 -> 184 bytes .../external/sfml251-32/doc/html/tabs.css | 61 + .../external/sfml251-32/examples/ftp/Ftp.cpp | 206 ++ .../external/sfml251-32/examples/ftp/ftp.exe | Bin 0 -> 66048 bytes .../sfml251-32/examples/island/Island.cpp | 590 +++++ .../sfml251-32/examples/island/island.exe | Bin 0 -> 591872 bytes .../examples/island/resources/sansation.ttf | Bin 0 -> 28912 bytes .../examples/island/resources/terrain.frag | 11 + .../examples/island/resources/terrain.vert | 8 + .../sfml251-32/examples/joystick/Joystick.cpp | 238 ++ .../sfml251-32/examples/joystick/joystick.exe | Bin 0 -> 581632 bytes .../examples/joystick/resources/sansation.ttf | Bin 0 -> 28912 bytes .../sfml251-32/examples/opengl/OpenGL.cpp | 258 ++ .../sfml251-32/examples/opengl/opengl.exe | Bin 0 -> 623104 bytes .../examples/opengl/resources/background.jpg | Bin 0 -> 142959 bytes .../examples/opengl/resources/sansation.ttf | Bin 0 -> 28912 bytes .../examples/opengl/resources/texture.jpg | Bin 0 -> 20550 bytes .../sfml251-32/examples/pong/Pong.cpp | 242 ++ .../sfml251-32/examples/pong/pong.exe | Bin 0 -> 1429504 bytes .../examples/pong/resources/ball.wav | Bin 0 -> 15442 bytes .../examples/pong/resources/sansation.ttf | Bin 0 -> 28912 bytes .../sfml251-32/examples/shader/Effect.hpp | 88 + .../sfml251-32/examples/shader/Shader.cpp | 460 ++++ .../examples/shader/resources/background.jpg | Bin 0 -> 53507 bytes .../examples/shader/resources/billboard.frag | 11 + .../examples/shader/resources/billboard.geom | 56 + .../examples/shader/resources/billboard.vert | 5 + .../examples/shader/resources/blink.frag | 9 + .../examples/shader/resources/blur.frag | 20 + .../examples/shader/resources/devices.png | Bin 0 -> 51410 bytes .../examples/shader/resources/edge.frag | 32 + .../examples/shader/resources/logo.png | Bin 0 -> 8849 bytes .../examples/shader/resources/pixelate.frag | 9 + .../examples/shader/resources/sansation.ttf | Bin 0 -> 28912 bytes .../examples/shader/resources/sfml.png | Bin 0 -> 25973 bytes .../examples/shader/resources/storm.vert | 19 + .../shader/resources/text-background.png | Bin 0 -> 745 bytes .../examples/shader/resources/wave.vert | 15 + .../sfml251-32/examples/shader/shader.exe | Bin 0 -> 667136 bytes .../sfml251-32/examples/sockets/Sockets.cpp | 59 + .../sfml251-32/examples/sockets/TCP.cpp | 81 + .../sfml251-32/examples/sockets/UDP.cpp | 72 + .../sfml251-32/examples/sockets/sockets.exe | Bin 0 -> 33280 bytes .../examples/sound-capture/SoundCapture.cpp | 94 + .../examples/sound-capture/sound-capture.exe | Bin 0 -> 892928 bytes .../sfml251-32/examples/sound/Sound.cpp | 101 + .../examples/sound/resources/canary.wav | Bin 0 -> 63504 bytes .../examples/sound/resources/ding.flac | Bin 0 -> 61764 bytes .../examples/sound/resources/orchestral.ogg | Bin 0 -> 153776 bytes .../sfml251-32/examples/sound/sound.exe | Bin 0 -> 893952 bytes .../sfml251-32/examples/voip/Client.cpp | 141 ++ .../sfml251-32/examples/voip/Server.cpp | 200 ++ .../sfml251-32/examples/voip/VoIP.cpp | 50 + .../sfml251-32/examples/voip/voip.exe | Bin 0 -> 48640 bytes .../sfml251-32/examples/window/Window.cpp | 146 ++ .../sfml251-32/examples/window/window.exe | Bin 0 -> 95232 bytes .../sfml251-32/include/SFML/Audio.hpp | 56 + .../include/SFML/Audio/AlResource.hpp | 70 + .../sfml251-32/include/SFML/Audio/Export.hpp | 48 + .../include/SFML/Audio/InputSoundFile.hpp | 263 ++ .../include/SFML/Audio/Listener.hpp | 234 ++ .../sfml251-32/include/SFML/Audio/Music.hpp | 337 +++ .../include/SFML/Audio/OutputSoundFile.hpp | 133 ++ .../sfml251-32/include/SFML/Audio/Sound.hpp | 264 ++ .../include/SFML/Audio/SoundBuffer.hpp | 352 +++ .../SFML/Audio/SoundBufferRecorder.hpp | 144 ++ .../include/SFML/Audio/SoundFileFactory.hpp | 197 ++ .../include/SFML/Audio/SoundFileFactory.inl | 100 + .../include/SFML/Audio/SoundFileReader.hpp | 165 ++ .../include/SFML/Audio/SoundFileWriter.hpp | 125 + .../include/SFML/Audio/SoundRecorder.hpp | 408 ++++ .../include/SFML/Audio/SoundSource.hpp | 332 +++ .../include/SFML/Audio/SoundStream.hpp | 405 ++++ .../sfml251-32/include/SFML/Config.hpp | 236 ++ .../sfml251-32/include/SFML/GpuPreference.hpp | 74 + .../sfml251-32/include/SFML/Graphics.hpp | 68 + .../include/SFML/Graphics/BlendMode.hpp | 215 ++ .../include/SFML/Graphics/CircleShape.hpp | 154 ++ .../include/SFML/Graphics/Color.hpp | 275 +++ .../include/SFML/Graphics/ConvexShape.hpp | 153 ++ .../include/SFML/Graphics/Drawable.hpp | 126 + .../include/SFML/Graphics/Export.hpp | 48 + .../sfml251-32/include/SFML/Graphics/Font.hpp | 439 ++++ .../sfml251-32/include/SFML/Graphics/Glsl.hpp | 227 ++ .../sfml251-32/include/SFML/Graphics/Glsl.inl | 155 ++ .../include/SFML/Graphics/Glyph.hpp | 79 + .../include/SFML/Graphics/Image.hpp | 324 +++ .../include/SFML/Graphics/PrimitiveType.hpp | 58 + .../sfml251-32/include/SFML/Graphics/Rect.hpp | 254 ++ .../sfml251-32/include/SFML/Graphics/Rect.inl | 159 ++ .../include/SFML/Graphics/RectangleShape.hpp | 132 + .../include/SFML/Graphics/RenderStates.hpp | 174 ++ .../include/SFML/Graphics/RenderTarget.hpp | 510 ++++ .../include/SFML/Graphics/RenderTexture.hpp | 314 +++ .../include/SFML/Graphics/RenderWindow.hpp | 284 +++ .../include/SFML/Graphics/Shader.hpp | 875 +++++++ .../include/SFML/Graphics/Shape.hpp | 355 +++ .../include/SFML/Graphics/Sprite.hpp | 279 +++ .../sfml251-32/include/SFML/Graphics/Text.hpp | 513 ++++ .../include/SFML/Graphics/Texture.hpp | 733 ++++++ .../include/SFML/Graphics/Transform.hpp | 479 ++++ .../include/SFML/Graphics/Transformable.hpp | 429 ++++ .../include/SFML/Graphics/Vertex.hpp | 148 ++ .../include/SFML/Graphics/VertexArray.hpp | 223 ++ .../include/SFML/Graphics/VertexBuffer.hpp | 408 ++++ .../sfml251-32/include/SFML/Graphics/View.hpp | 343 +++ .../external/sfml251-32/include/SFML/Main.hpp | 43 + .../sfml251-32/include/SFML/Network.hpp | 53 + .../include/SFML/Network/Export.hpp | 48 + .../sfml251-32/include/SFML/Network/Ftp.hpp | 616 +++++ .../sfml251-32/include/SFML/Network/Http.hpp | 482 ++++ .../include/SFML/Network/IpAddress.hpp | 328 +++ .../include/SFML/Network/Packet.hpp | 532 +++++ .../include/SFML/Network/Socket.hpp | 219 ++ .../include/SFML/Network/SocketHandle.hpp | 57 + .../include/SFML/Network/SocketSelector.hpp | 263 ++ .../include/SFML/Network/TcpListener.hpp | 166 ++ .../include/SFML/Network/TcpSocket.hpp | 316 +++ .../include/SFML/Network/UdpSocket.hpp | 291 +++ .../sfml251-32/include/SFML/OpenGL.hpp | 78 + .../sfml251-32/include/SFML/System.hpp | 60 + .../sfml251-32/include/SFML/System/Clock.hpp | 117 + .../sfml251-32/include/SFML/System/Err.hpp | 80 + .../sfml251-32/include/SFML/System/Export.hpp | 48 + .../include/SFML/System/FileInputStream.hpp | 169 ++ .../include/SFML/System/InputStream.hpp | 152 ++ .../sfml251-32/include/SFML/System/Lock.hpp | 139 ++ .../include/SFML/System/MemoryInputStream.hpp | 148 ++ .../sfml251-32/include/SFML/System/Mutex.hpp | 148 ++ .../include/SFML/System/NativeActivity.hpp | 62 + .../include/SFML/System/NonCopyable.hpp | 129 + .../sfml251-32/include/SFML/System/Sleep.hpp | 52 + .../sfml251-32/include/SFML/System/String.hpp | 669 ++++++ .../sfml251-32/include/SFML/System/String.inl | 53 + .../sfml251-32/include/SFML/System/Thread.hpp | 282 +++ .../sfml251-32/include/SFML/System/Thread.inl | 90 + .../include/SFML/System/ThreadLocal.hpp | 103 + .../include/SFML/System/ThreadLocalPtr.hpp | 158 ++ .../include/SFML/System/ThreadLocalPtr.inl | 77 + .../sfml251-32/include/SFML/System/Time.hpp | 488 ++++ .../sfml251-32/include/SFML/System/Utf.hpp | 763 ++++++ .../sfml251-32/include/SFML/System/Utf.inl | 752 ++++++ .../include/SFML/System/Vector2.hpp | 301 +++ .../include/SFML/System/Vector2.inl | 161 ++ .../include/SFML/System/Vector3.hpp | 302 +++ .../include/SFML/System/Vector3.inl | 168 ++ .../sfml251-32/include/SFML/Window.hpp | 58 + .../include/SFML/Window/Clipboard.hpp | 119 + .../include/SFML/Window/Context.hpp | 195 ++ .../include/SFML/Window/ContextSettings.hpp | 149 ++ .../sfml251-32/include/SFML/Window/Cursor.hpp | 222 ++ .../sfml251-32/include/SFML/Window/Event.hpp | 284 +++ .../sfml251-32/include/SFML/Window/Export.hpp | 48 + .../include/SFML/Window/GlResource.hpp | 109 + .../include/SFML/Window/Joystick.hpp | 227 ++ .../include/SFML/Window/Keyboard.hpp | 232 ++ .../sfml251-32/include/SFML/Window/Mouse.hpp | 177 ++ .../sfml251-32/include/SFML/Window/Sensor.hpp | 150 ++ .../sfml251-32/include/SFML/Window/Touch.hpp | 137 ++ .../include/SFML/Window/VideoMode.hpp | 228 ++ .../sfml251-32/include/SFML/Window/Window.hpp | 622 +++++ .../include/SFML/Window/WindowHandle.hpp | 101 + .../include/SFML/Window/WindowStyle.hpp | 53 + .../lib/cmake/SFML/SFMLConfig.cmake | 148 ++ .../cmake/SFML/SFMLConfigDependencies.cmake | 86 + .../lib/cmake/SFML/SFMLConfigVersion.cmake | 46 + .../cmake/SFML/SFMLSharedTargets-debug.cmake | 69 + .../SFML/SFMLSharedTargets-release.cmake | 69 + .../lib/cmake/SFML/SFMLSharedTargets.cmake | 160 ++ .../cmake/SFML/SFMLStaticTargets-debug.cmake | 69 + .../SFML/SFMLStaticTargets-release.cmake | 69 + .../lib/cmake/SFML/SFMLStaticTargets.cmake | 167 ++ SQCSim2021/external/sfml251-32/lib/flac.lib | Bin 0 -> 512458 bytes .../external/sfml251-32/lib/freetype.lib | Bin 0 -> 858580 bytes SQCSim2021/external/sfml251-32/lib/ogg.lib | Bin 0 -> 22794 bytes .../external/sfml251-32/lib/openal32.lib | Bin 0 -> 34440 bytes .../external/sfml251-32/lib/sfml-audio-d.lib | Bin 0 -> 59372 bytes .../sfml251-32/lib/sfml-audio-s-d.lib | Bin 0 -> 3367878 bytes .../external/sfml251-32/lib/sfml-audio-s.lib | Bin 0 -> 1217000 bytes .../external/sfml251-32/lib/sfml-audio.lib | Bin 0 -> 59012 bytes .../sfml251-32/lib/sfml-graphics-d.lib | Bin 0 -> 164820 bytes .../sfml251-32/lib/sfml-graphics-s-d.lib | Bin 0 -> 5933526 bytes .../sfml251-32/lib/sfml-graphics-s.lib | Bin 0 -> 2430178 bytes .../external/sfml251-32/lib/sfml-graphics.lib | Bin 0 -> 163864 bytes .../external/sfml251-32/lib/sfml-main-d.lib | Bin 0 -> 19320 bytes .../external/sfml251-32/lib/sfml-main.lib | Bin 0 -> 1306 bytes .../sfml251-32/lib/sfml-network-d.lib | Bin 0 -> 72806 bytes .../sfml251-32/lib/sfml-network-s-d.lib | Bin 0 -> 2942654 bytes .../sfml251-32/lib/sfml-network-s.lib | Bin 0 -> 1157334 bytes .../external/sfml251-32/lib/sfml-network.lib | Bin 0 -> 72396 bytes .../external/sfml251-32/lib/sfml-system-d.lib | Bin 0 -> 42074 bytes .../sfml251-32/lib/sfml-system-s-d.lib | Bin 0 -> 1097046 bytes .../external/sfml251-32/lib/sfml-system-s.lib | Bin 0 -> 391334 bytes .../external/sfml251-32/lib/sfml-system.lib | Bin 0 -> 41790 bytes .../external/sfml251-32/lib/sfml-window-d.lib | Bin 0 -> 36906 bytes .../sfml251-32/lib/sfml-window-s-d.lib | Bin 0 -> 3203886 bytes .../external/sfml251-32/lib/sfml-window-s.lib | Bin 0 -> 1132996 bytes .../external/sfml251-32/lib/sfml-window.lib | Bin 0 -> 36666 bytes SQCSim2021/external/sfml251-32/lib/vorbis.lib | Bin 0 -> 852828 bytes .../external/sfml251-32/lib/vorbisenc.lib | Bin 0 -> 643788 bytes .../external/sfml251-32/lib/vorbisfile.lib | Bin 0 -> 34544 bytes SQCSim2021/external/sfml251-32/license.md | 20 + SQCSim2021/external/sfml251-32/readme.md | 39 + 694 files changed, 120490 insertions(+), 5 deletions(-) create mode 100644 SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Transform_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Transformable_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/UdpSocket_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Utf_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Vector2_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Vector3_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/VertexArray_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/VertexBuffer_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Vertex_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/VideoMode_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/View_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/WindowHandle_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/WindowStyle_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Window_2Export_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Window_2Window_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/Window_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/annotated.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/bc_s.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/bdwn.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classes.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Font-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Font.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1IpAddress-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1IpAddress.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mouse-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mouse.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Packet-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Packet.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SocketSelector-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SocketSelector.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileFactory-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileFactory.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/closed.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/deprecated.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_89e9fb32471ae291b179a889144513db.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/doc.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/doxygen.css create mode 100644 SQCSim2021/external/sfml251-32/doc/html/doxygen.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/dynsections.js create mode 100644 SQCSim2021/external/sfml251-32/doc/html/files.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/folderclosed.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/folderopen.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_0x7e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_b.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_c.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_d.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_enum.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_b.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_c.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_d.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_f.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_g.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_h.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_i.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_j.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_k.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_l.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_m.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_n.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_o.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_p.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_q.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_r.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_s.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_t.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_u.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_v.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_w.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_x.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_y.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_eval_z.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_f.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_0x7e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_b.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_c.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_d.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_e.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_f.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_g.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_h.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_i.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_k.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_l.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_m.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_n.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_o.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_p.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_r.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_s.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_t.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_u.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_v.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_w.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_func_z.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_g.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_h.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_i.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_j.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_k.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_l.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_m.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_n.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_o.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_p.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_q.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_r.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_rela.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_s.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_t.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_type.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_u.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_v.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_vars.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_w.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_x.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_y.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/functions_z.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/globals.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/globals_defs.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/group__audio.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/group__graphics.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/group__network.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/group__system.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/group__window.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/hierarchy.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/index.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/jquery.js create mode 100644 SQCSim2021/external/sfml251-32/doc/html/mainpage_8hpp_source.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/menudata.js create mode 100644 SQCSim2021/external/sfml251-32/doc/html/modules.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/namespacemembers.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/namespacemembers_type.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/namespaces.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/namespacesf_1_1Glsl.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/nav_f.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/nav_g.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/nav_h.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/open.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/pages.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/splitbar.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1BlendMode-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1BlendMode.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1ContextSettings-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1ContextSettings.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickButtonEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickButtonEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickConnectEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickConnectEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickMoveEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1JoystickMoveEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1KeyEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1KeyEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseButtonEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseButtonEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseMoveEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseMoveEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseWheelEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseWheelEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseWheelScrollEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1MouseWheelScrollEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1SensorEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1SensorEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1SizeEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1SizeEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1TextEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1TextEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1TouchEvent-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Event_1_1TouchEvent.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Font_1_1Info-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Font_1_1Info.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Joystick_1_1Identification-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Joystick_1_1Identification.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Music_1_1Span-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Music_1_1Span.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1Shader_1_1CurrentTextureType.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1SoundFileReader_1_1Info-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1SoundFileReader_1_1Info.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1SoundStream_1_1Chunk-members.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/structsf_1_1SoundStream_1_1Chunk.html create mode 100644 SQCSim2021/external/sfml251-32/doc/html/sync_off.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/sync_on.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/tab_a.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/tab_b.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/tab_h.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/tab_s.png create mode 100644 SQCSim2021/external/sfml251-32/doc/html/tabs.css create mode 100644 SQCSim2021/external/sfml251-32/examples/ftp/Ftp.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/ftp/ftp.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/island/Island.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/island/island.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/island/resources/sansation.ttf create mode 100644 SQCSim2021/external/sfml251-32/examples/island/resources/terrain.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/island/resources/terrain.vert create mode 100644 SQCSim2021/external/sfml251-32/examples/joystick/Joystick.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/joystick/joystick.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/joystick/resources/sansation.ttf create mode 100644 SQCSim2021/external/sfml251-32/examples/opengl/OpenGL.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/opengl/opengl.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/opengl/resources/background.jpg create mode 100644 SQCSim2021/external/sfml251-32/examples/opengl/resources/sansation.ttf create mode 100644 SQCSim2021/external/sfml251-32/examples/opengl/resources/texture.jpg create mode 100644 SQCSim2021/external/sfml251-32/examples/pong/Pong.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/pong/pong.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/pong/resources/ball.wav create mode 100644 SQCSim2021/external/sfml251-32/examples/pong/resources/sansation.ttf create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/Effect.hpp create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/Shader.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/background.jpg create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/billboard.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/billboard.geom create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/billboard.vert create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/blink.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/blur.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/devices.png create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/edge.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/logo.png create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/pixelate.frag create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/sansation.ttf create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/sfml.png create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/storm.vert create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/text-background.png create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/resources/wave.vert create mode 100644 SQCSim2021/external/sfml251-32/examples/shader/shader.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/sockets/Sockets.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/sockets/TCP.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/sockets/UDP.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/sockets/sockets.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/sound-capture/SoundCapture.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/sound-capture/sound-capture.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/sound/Sound.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/sound/resources/canary.wav create mode 100644 SQCSim2021/external/sfml251-32/examples/sound/resources/ding.flac create mode 100644 SQCSim2021/external/sfml251-32/examples/sound/resources/orchestral.ogg create mode 100644 SQCSim2021/external/sfml251-32/examples/sound/sound.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/voip/Client.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/voip/Server.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/voip/VoIP.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/voip/voip.exe create mode 100644 SQCSim2021/external/sfml251-32/examples/window/Window.cpp create mode 100644 SQCSim2021/external/sfml251-32/examples/window/window.exe create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/AlResource.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/Export.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/InputSoundFile.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/Listener.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/Music.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/OutputSoundFile.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/Sound.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundBuffer.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundBufferRecorder.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundFileFactory.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundFileFactory.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundFileReader.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundFileWriter.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundRecorder.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundSource.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Audio/SoundStream.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Config.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/GpuPreference.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/BlendMode.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/CircleShape.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Color.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/ConvexShape.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Drawable.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Export.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Font.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Glsl.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Glsl.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Glyph.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Image.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/PrimitiveType.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Rect.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Rect.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/RectangleShape.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/RenderStates.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/RenderTarget.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/RenderTexture.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/RenderWindow.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Shader.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Shape.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Sprite.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Text.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Texture.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Transform.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Transformable.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/Vertex.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/VertexArray.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/VertexBuffer.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Graphics/View.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Main.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/Export.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/Ftp.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/Http.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/IpAddress.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/Packet.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/Socket.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/SocketHandle.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/SocketSelector.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/TcpListener.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/TcpSocket.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Network/UdpSocket.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/OpenGL.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Clock.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Err.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Export.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/FileInputStream.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/InputStream.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Lock.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/MemoryInputStream.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Mutex.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/NativeActivity.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/NonCopyable.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Sleep.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/String.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/String.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Thread.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Thread.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/ThreadLocal.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/ThreadLocalPtr.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/ThreadLocalPtr.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Time.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Utf.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Utf.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Vector2.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Vector2.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Vector3.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/System/Vector3.inl create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Clipboard.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Context.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/ContextSettings.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Cursor.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Event.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Export.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/GlResource.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Joystick.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Keyboard.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Mouse.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Sensor.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Touch.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/VideoMode.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/Window.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/WindowHandle.hpp create mode 100644 SQCSim2021/external/sfml251-32/include/SFML/Window/WindowStyle.hpp create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLConfig.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLConfigDependencies.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLConfigVersion.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLSharedTargets-debug.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLSharedTargets-release.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLSharedTargets.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLStaticTargets-debug.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLStaticTargets-release.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/cmake/SFML/SFMLStaticTargets.cmake create mode 100644 SQCSim2021/external/sfml251-32/lib/flac.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/freetype.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/ogg.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/openal32.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-audio-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-audio-s-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-audio-s.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-audio.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-graphics-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-graphics-s-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-graphics-s.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-graphics.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-main-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-main.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-network-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-network-s-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-network-s.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-network.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-system-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-system-s-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-system-s.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-system.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-window-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-window-s-d.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-window-s.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/sfml-window.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/vorbis.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/vorbisenc.lib create mode 100644 SQCSim2021/external/sfml251-32/lib/vorbisfile.lib create mode 100644 SQCSim2021/external/sfml251-32/license.md create mode 100644 SQCSim2021/external/sfml251-32/readme.md diff --git a/Debug/glew32.dll b/Debug/glew32.dll index cbce7da7692ddd7eb16880ec7b05e0faa8139c1a..cbe1d67b3c5e482ecb039d17fba4312ed0173f23 100644 GIT binary patch literal 389632 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxuq0I``E7}%gvFq$EO4H8%k z3=GT+4y+6yg&?(X8Z5%VkjKoB#KFXnQpU=l0W#wPD}w^e(;z+^voV|qhI5E#JYZxH z!J}HQB(E?DoCpW14DvdQA%P-A_K#xY0MD6&tPU?I0gy>kO~NP zU|?|2gD7K&^kQIOXkcYvkYZq9h+~B)fRYXj3*P%zw0i=$2Fh$A02x*zWZ2Q zbnM|XXU>Fnzv*`63F|K9(EiYyqQcO{!`5=Ll*NLhgu6??>Qucz4Tr<)SH=h8Vh=Z; z_#YR0cn2u0#ewynf#?U>nEL$j1EK} zj@!T(jbs_JeJoyUlKzA2ivZcD;03cU2Vw@yJ{PdE#RaIMF%Z!fh$vC^)qu6M9#}jD zWZwd~eRCjY!0bB!R8(JpGFJfg->4z+xMac^ZC@AiK8M2ci>Z zo f;s{jH0ElP|s%Q#Cv;F#A~oK+(L|098~1B5H#w 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 U~)aCP^I_x1<^4YGio8=sZ~ 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

%rr#F!PbrqNo6c7fcOu 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 z zeuIjFa~sH=pku;8%@?o$IA3^zc1?nWz&b%?d}e-8W=Uoh+&Yj1I4nV`AY<Yl`xrt@1lfgR zkP!~`MmW?P<4|vmLp^NC3A%esaHvNPR#1JAnx2^laWG`BG$?98;+c6V;7%{RXaY$< z;sMt2MUjH)!6p`xTH&6WhbjXKCs2Ba=H<}5Ohn5QWD`st!)fq1MwfxFsfX?-hRg_q z#)M(@0c2JOhcpAYO^9wNIRCg-loTZT5EC7|n)z#EsLogJ_YR1dg9hHXK|VkU|_nz<-) zSj>h75VEOY_dvxFra|2T6-PD+Sv@qtfn5)}PpUYz2t6o4Wkxa77)T^RGXbc*hzJK* zx(H4!LGc4z9DMGte}N%bAUy|?p#2Ms(D=qMetBk9RSqO|fcye=0o1`DMex1j@OD2` z4K#DX<>Bpis64b*hReg--B5XWyBfxaXn?CPg=k362`|blNd?W#f}8`-pWH$%UnvMXBDYm8mJdr6s8q;MOL{0#H9XCpEDcyBy??ARVA^gN#3b&gcb+K-)?osYSV&d5I#`ub$`BIZ^a5^g z!Rsn`agkQ$5dhH(%1610>4=j^;c7DBYH%3>GXs}A!~jq`9J>Vs^g|s09X|ohOM(V3 zz|~N(r;{(l{ot_^m>jgeg~)>TEP>8Hf=s0PWEPh|G-1@S2r1Aw3UrTn8whA@@(wHDc7&aGjv|hon19J-&$r(Bj?5#nUgu)d$oct;|b?3POZnYf7Mk zFqI&4k=r0;P}LxDNJA28A6x>%jZhg_9>7!&Znp)b7Nvm?;)PiNYgeF4z|OzN6nD)_ zK@$Y0XSd9v;u3^J3e*CyoL_1M7AbI_7Ay`u6&Q33K2#e*4(wXcf?bFV*gPa_oGL;6 zMyzsqY56d5(AX*DxFOJhIYbl`wg_>A7$bVd@AQJ@Q7!0J)=ufo+rn%@B>Mc}=x4Cy%#0SFId zKZFlg05&TizX0qk@ZMF>xK(L!29f|+jW3QnwqX7R-Jt}XPXphVfy4)&RgA<39mEbc z6SQ#+dhZdK59tR4rKV@*=RvDEusEc@g)9s4FQ^DX6$PJtf+_?W?@EP@eL~Czg#)Og zSCtA;TI}l@>}PBG#6wJns_Em99$=Y z5<0Z5%uC4x%{PF$205w4#o+N?xEgq!iKz-?2V5O?v%qC4hP}AVgsTRZui&78OuK+g z0E=DTrPzD9HQZvUbfha?M{JIqc+(&?9< zha?T!vy+G-k0c4vi()dGZjhUO6SH9>HW1e$nE;Z94k1E|KZp|02ng8epz;)QX&{Dt z8CU^)tpb`xEaG4d(6xTh`UY$SsBZ~6`vab=K*=XP2Q+X4nk@^+F9xUhaPXEYkdE{m z=fs>G(9IKxpl)n&2{;`g@q<&rE4U!(3$!UXGY5Q81wuJ!ybe4Mi=+#r94-#-S%O7C zVFW3|G1WrE(bN_tmP1t*JEo+7u7v=*50njH;vipu%|%iRF$JLmyF5rIIDJBm@<>fg zNi712g4BcV$N*hP1a2RK1wrW&sua|!gNuP}1G@_(jO;eBOfjT?4OR|n*MT;|IVTo? z2HId^xXL4tJ6!Wpu#`uTdM~&%sQ@(96;PC#oLQWipXZdB2nlFVJ2|g7wWthq*KukP zc%BEIDBxucs9%gj4JhG&>s(NI2dN$51s+@+oY#@M2H?}{)MXz%Lcm;%mi-Dh`^%2+KwmP0w*HOU&_2EC4wg>@U!|g2V#Iz!)O5 zL75et&OnFcfyc(+a+%0-&X86hxcLn-5~c^PIt`>6lqMkdz{SC)fW&6T?XGlH< zhbYJsVEf%N^D>Jwz+zxE?x}fT4nzUiUN9f#4$opR7pyiowFJfin-!8;j3fZ=LxW2w z*gPn>F9h-;v>yN|a>2DQJit=G0SUGjT4bZjLwpVzrw3p1iYjRW@;y#Du*smX!D_Gx zDC^EFDM0NC8!uQ9+1~O0BThMxMsOa&VkdYbA=pWXb_%k+ zkPU=j1#t60fsb?!1H{#!_=cK~ArEl?PW@olaM%G72WdgK!vu#NU~!NJupQ7qf<^?q zT@2!5sDT=Yq7NhnQ3%%y3RrOXLCps7AxgmGZQwP?;J^gMJSc6#)L}6T6oANPf%xcV zfddWAEU*|vA>3V{fI>D4#D^$BxCMyE!5p;V%W`v z`U6ERl7ArMpkM>R=>f)v7=}Kki%^HQ_6O=v#P})L>yWv3@cgVHSOr2J>|G>zh*uHv z5Sx(sAQvI{U~eJmhj28?4>BFWhnSAcN0o=PV_|-T*Z~s* zsf4)$A_j2{x)`Q9h^tW5L6Rk^7{qnxVwmO?LjoNfugGpJh6M+FE(qezVu)p!>LG!P zBo3Ji0;O0)7(vBA&OkF4x<(qD*Ff_xd7yQii8-KEj)~Bl(jmhXyV`v#aPsXHxgqJ2X7F@DsBujAKd@+PfpG$1$839!{%UrK-%&s5}B#s zMmu;87)7EIWCgg*orfY0(EzSrQN%03p@BslTFZmN+_M-}3)l)o`vlTugtzL8J;6re zk%t%!uY1t-LxKZbHWpL{B$hy;9?UOGEpp2Q9V}Ur0pBnPat)}AMUn#v!PEzr6y;~9 zf{a1Y0rD5PC616s3Tu#ZPymC%B@e~{r%BM-*~F3za4`-(4+d%%nm8l~!0}K5(hnW5 zfSCyu%P&d+iGbV!)$fv6oB{4~gN;S#_esr5hXw@5O9DwNHv-`*kHIA zJa!;~izyCqFkC#iATc>JFCE2P$g&8q0dRE?F|cNc7^I&EI~NzM7#wckG1-EA&{;vC z@Bq6G&aLH%ji*-pk4#-MH< zsGpDs69doIf^I*AO2X8GYAkd!AY!OyfW$D(0QmrxAV97F`3oYJo12&ijbc!K04E$+ zq=U}!2PLGk)FSXe3}{{pq#GiRnh+pjZu#l%sd)%B?m3kO8Q`G+SdxLLLx{r?2a-5U z2H|$%JLcr)rGr#M#UKe6Bmmnx>X}zi zS^^1h@H|0Ya%K)JWnz>iFt!88Y<4rEe#4mibwYEV$OkX%nJKCHupT2QUBbn{y1?a7 z7)T9r-vFitQTL=4r{+OMP+UqA!4V7g8pwS`2s!Yg6R-rRz50Ft`rNP0GwmEdnPdupp?ef{6K-mK2mi$9tUfA!6_#fRZZ%*-U}`X(h}|qa z>Ja9^JO#eh9J@Jqlz_)GVS9hE4{^cHR3c(53~{GrBIwxElGGwt$^?fmsA^0{69bQR zqBV?Qn!w@Z3BC6cW$FuDS0ZUekp$Is+0Yqw^hq^jIb=-`aU>JbG-AjjX$IvN@VG6s zs}6ELC<9;7iz6I!FY^WHx&jPO?U~9=il908xkTeWhOO7svsO>@F z2%12Ls72Hr*w&GQOaZ9}-S-3DVuI`(NP8K>H3%i({08NMhDAYR)*us+>NuDepxsoE zEXY1whJtE8kUYr!7;3w}9D%Q0l3dfij8+=~vC!*Vw|INf5u8y%zx zH1>`4ZgjA|FqZ(wP|ze1NGYga4dR0)U`vbA5|dM*g==~aSe<7cWU2zD&a*feq70-N zs>V0504fOgD_AdR*$-&T8>Gg7DnZf*lLy!0NYXI7phAwx$&e)%FmdqZRZvN=jZk-l z<`t!;XM${mNYnUnoB@1t9`& z>%ct^p0)<}F~DsjByotlpn4JF(0%}>ICk~LCQz?nu>*9>4A`0AHJF8^sl_F*_8Qc9 zNSq-BCOGbqJ#Gk^c1O#9hF~jE)1x8O-6(p&p^2srWF@+J#Sp(C>ovk+uMrk|jj-5j zgvDMXEcO~u@{z3kj;ZcEvk9or3`4{2N|$N zQ-{S~6KwXDCSk<6Nof)&LcnDdvU{Kz3PXJ{Btc-PFE#{61Qv0yLomf55sXC~hdGc4 z#8eN7Ff8IY%z;D*rg}&OU=hb*4kUoFsD}k8be})CorAm>4bpZ-7KYpq2&t`Lc^Fhi zW2%AnNWhA~^8?6Az;Oi|3xV1QF&dhtvC4tH2Prc_<0>fnz$GDu99R@oUZYtK2@4EE z;Kd!-73lgP4uq=#yM}-oxc%UPMR2_i9wUY8MTmoI=F}8uxdA(C5gdHrb;zJQYCwZ4 zU_XL4lR;{AP}vV%6%UdIjkiHID1a@3WEk{2l0l}Ti-A-k)`lW9BgBwh2=RAnIcOaz zOdMnavUo6LpBOl@MEY zyyQS+ykwOoig(hiz81KsceVnWt6xaO6CIN)(9 z5E~o@$mcVF`~x1N0L|cml!C^#b21A8auV}Wp>A}B@uBjdabK8F8YIsnDS?!ynH8xi zpm=gmErA3%D3~E?VcWJVpz@IGq`-j*){EjikQ#7%1fEDijsTtSgM3C1NHbIn6nTS1!74!J2dCzwCYL~~ z2$(cj7PNK;Ne-JBIPrick-(B*cYv!FNG%gwngrUX8;}pN4IID08Hq&&si0##;JyU! zkwzB;n*|%IHE}_h584|Dy$%&B3^q3;wE}XVC)`*_9zYXJ&v7iS%u9xB{S9{ai~!pM z=?5dpfE)~x0>uY-eKlAPuHHR04=eyN2BsL4UXX;rszK>82Vy6b4;_^N&BdpJ!XGq^ z7LZv0W`oDBAR7w6szLH@`RU-nYltmizoH63{0WL&xBPUdHjulaXB30yuwl6lEDfFq z0k7)@XHIZ=nFf{t+XvN$Bv%HJ#HKG3B86lhLSH6!eK4!g^`t?Sql?3=z!1k&5A!C( z3WR&%;xH{pX2Ikj)?n&^`2yre=vl3xW1+#`ggY6MpJ8*%U^yK6VAeskLgEt|dr%OB3@-z(=H&CV}fB z&tkAOsLDZgD#!v9(exaUN>l^VbArng3qax+-iE}7Uw&RrW*#^;U_Jo51tJa$ZI~2j z?hiu)XiN`e2)bhE95`eF0>qo(avoY1Ldy=&Di+u+WiF{8IdHQKG=dH(dO&_nEzWQ% zN=-~D$$*>Vn_8R!s-99(p+exXowU@V)V$s<3F=XrU;BW*eZGp=LT=LlUgKSOD0ZmyIXF%H} z!J&Sj{lo4#`ALa6ke)>%D2XKnhx&p1h%TOjLp%+KcqR_KNzzlvHSI7UGVeR1`U=D?syqXyRqq)k9o{sXh~j zdWfqq)fYq6gA=TA8YD9rg98`rH#BjuYIr^|NrQHWaOlI7N7G-L1hLQvY9Vx9#{?k` z(SR-vb0DTTOg(mof$D&w+{7G&M`7yG<0BKz2!3-h)e|ru7I4r2 z!i;Z-zu*CEoCY=!i#n_UNQ63E=E3^WMrq)X#q=2{B(RuIP#@Sra9YKP8-!l0zQG!w zxb;9S!s|vza)yRJ0rO#MahnTM0SX#$y8*Rq$b`v*O#qJ#fO~z=AVwr|sD6akz)^sZ z$F3iH6hZnZ$o62W!(kq3;>2(-dZGl!DZkbb)AuikB7@rRJ63)eF`Hwhp2P#Lr91 zhZqC0A9TnBh6&D4lR=Jv`vub41+7`h&vOiNf`$Xc{n+I|>qqm8plk7vHG;xEu?$lJ zZWq+ckO}Q#ux$|c!v~~_LA`;zbg&f2AE3r0#MPi?go`s+q8v0(nVkwX4dyGj+aYln z0FBxpCy+TVsl_El`ISh53=AM~&_q2%A;N6%))i!x<)A_hd{7%y6rt8RBR{`572L9c ztV{qo5aK6fL2&X&D+5U)>;<(&p_;(*nMm@W$uZcV5Lg$&4Jg7OKLn?iK-~oiSeSZ{ z87`T{1v!b8;1UhoMhBf42agY|vfyxmh8K1P<>@(~4j)!Yh~LrU6J#scT=e(^OJI#p zunbraN_>KZ%R!6MkmD01hzM6$e1b*G({qsH6DAgviW;9Vag6u`NkIIBB|brt2zxQ( z6Ga|WSb>K$%AnV4f#a?`u>eI7VwX#1dS*#t4y4%(8-OVGGAZ2CY}fyCh#>Oma{69=a=s2J#gGq8bh%OHM&m&xE|v5@lBwJbHS1R50}^C9US zNdd?LM4CsFfS3zS&q#7erh@cBCOW}$XFmDK*&ri9c0u9_RTv}=_amAVNDk~zxVSI) zSQwaj;03i{Iq))^%)E543^XKTPnG9Z#4Dw$D$XAdFO7L0{uo#37UuX#tD@e^lXa)JlB?455f!0?-)PttEA>zTQ zpe07&cmxgSr$WwDLdb`L6E#E^*jA|f5Gytza(-bT^RS*v0df;4**k$o%~C;S1lV}6 zdhmfrj%jI`d6^}ZF3w;Hi2Br$R0Q8OuQb=apcLXMkTc3b6PIAIVz;9FToeIra312F+C46+|&E@;Fn6-g3gJV*|l2B0-Bv>t}*1DOZ%2y`+PF7B0|nFkUF9}EZ* zMTuwl31Hwb1e*`aMCFMEVD%u2Vd{|$0oRMgsgTwjsu|$H;>40v$fhtz9Jm#wqVPd( z1$z&=Dg+(`&~QTdA4LJkHDGswQXMY+U_W4$M9H(*Re;*6nRzK-NpP-)xF5E_1=*c2 zG0^dqpkM{X541c0Ye!a#EDkdkq&_$`F9q6&2+0TQg4^d?oD3?k{e69)Z9~v(ePv#9 zSYl3TYB5L{)b1-!gx|2}+5`_2>6jk6^9Y|4!kStHn0iA2&mS2RT9x4``1T!Pt z-6!7I#VsN}7c|`rnQjBQ10wDd56ZTw`SHn+V~-dZK;n+RF7fFFrSXZ-W_)IT9z;CI zDIU@|hzG5x&d+0jstJ{0lzy!`l7 z(3~sWzGPJSf};Gi%$!u5`it_DN{dVKQj3d`+?EQPt}Tu)E-A{)OGlDRL#%#@FAj1C zx8GrI&P~itjZcO&pW{Iz?@0QPgA=B{01`NGw}X!bi-(Nn!@}G#$SEFKJU%TaKM^TB zioiEd#+N`&s*4K}lc8|}7DJ7*)MBG}lz79c2B8ETejqg| zsRbn&&;SC3F<1=JAcxo+Ujka51y_$No#WP3_S3HB|kg^TT4ao5fQiB|y$YFyl z9$%1{oSm8i^$jFmL3)eJ6AQq(0+Lu}gdkq;(r#23kpnq#5Ks zkbF9*^@^lE9nyLOn+=lB1RYBa&B-wLg2cggf&(fZ)DncNM-nduwJ~6N{KDd0BH}Ya zhb-h5K^8qJ`u4yYVd6e-C=K#EQVcb|BMFxQ}9Pk+C7 zkY2-hBL>5Gqj*CG1_r};V+O-`69&V0QwF1W0|t<&al8S8al9deal8?OalA2uNxT7r zNxUJ0NxTt*37BufU=nZ2U=nY}0Im}l7#NVtu@Y$c1@nD!el92sK?_~t-6BFj)-r(V z29R5lKqp+r=Vs>RCRW6!f#+BlVCqv-;*DLL5oH*XxMK*4IO24~cyM$uFrz5sgICa5}K zNKej-F9xrZV_*Q)ZxD8TMq*AHJYOP-XXcd{nt}X^DrRN^5(B4t$cmZxROkiRAaQVb z#)Dm#2|f3fAulmEH9kExFFpl)-3LQH?2wQ6!qU{D%J@`J2Zn)xp&+#gTv_BLr^e^z z=Vg}U7cmrM=H;cP#OH!S9b0xuAZk1{bZV1Sqc^>}_#R%&ty12+E`rzYlt zj;W1LE=>Ym1QlP9T7-xt1_o$&B$njoW+ulc=a+(Vc6@#TDDa?iNr^c*`6Uc+wW$@L zx+t?G9-0Y25tN%+k_sxWVCEG=Hnhj5R)AJWA@st;%Rmhwm@L#DP&J)cR0&OBAUy?% zMa8KI*TOXC!zPvE!KHsnY6=4bEd8b@mSm(B#V2JZ7RTr0r@+Ob^5A$Zfn7%vp9Z}N z$2dMGGcUC`z65leMS4zZF$1O=69%Y%q0Y@otV}IJ6DvtAE>6wK0o^IUzN$U;#>6Lxd|VKWFCW#ivx1 zfXfA_YvR%5j6v?kA!mv#2dh|0GILXlAo&6k?w}QiDbQ>iUkvU`g7i5C1c1XLv9tnG zbbwm2pfeg67#NasGE?(P;)@}-ZG!m)@hO=QkAvhvZ5C+ZfnG0zD=L_Sb5hGvbBYRM1rA3@+ZUP-p%nonJH{837Nw_x8!MnZ3>xWz+7I$eQF>Cm ziIEWlDCmAyO zDT#M-4|24yu&{uOgNkXecNh@y2#R;4CJ9_E)aj7$2N@Wjk(pNlPs5Ok4&pIbx`v2B zHA3?SEcv8@GB_w3fc#aNoRnMy_ALVgs4WcglWVXMINc ziGsw?Rf5DoX%1O0*fGWN`Du_C16j+Elvtb^4@>+E3=Bz`c`4ws5E`H$cYv#r__Wfz zWJF;CjZLJq1TU@`l0m2JLgO(W8XgcagrUhfnJDc$aC;f12i(eG0N0zy?g#k?vdbM- z-a!%>B1J>=l$NAIGX{bWzPKkT2iE2<&a6sh0Ns@VK5{xS2iB&~%mYVK3IjO3Lp%v# zLmO$yr8zmsc?MiPqq!R*2CkbKQc{aDA?F+;S}>5q(c_Cjhb_k^g176U)Z3si2iKI) z3|1TujwP_mKiw-h(l94 z$PTzUP%&@><(DJWLTU_jKBN^5Zgqq0gPlGB>JTTElq4o+fYy0H+ya+_COME3w`qA2I=xsNUa~MEg$;nC0fd&$|)B+7s6l4~pg4z<`9FSRDl9^l# z_Z*~e2+4S`vZDaBvL88MKy?LJtQfpT59FQ#$cZ@d`DtmzsU`7{%m-FiTmr2K;r$?3 z5(I}YXb(Ts_JX2($nCb!RvXA%$d~~<2*H^(J}EULu`Dwm)R=?FLk3n5Y}{iJNNRA7 zK|q=$@LUMazfdtyE&(MMXgjtD8brkmC~esI+(b~n6V@+)g+C-;6vNt|sO{Nec-u88 zvm`z>FF8L2WD&^1)S~!gXcmO&1s6e}_ysp=5qcpbDrNbg_!ncF){$PBe2S4<|XHp zrhuG>X&y)uDBwYD`;5et{BlUx{=5Zqiy-wmNJHxo203<>}ElKlA86!0($Ts=fSH6^|%wIDSS(H;hu?T|tR zt~M_}FTNnZJhceaL@X)KM-Ed+UmDy}2B#ZXSVP70Q;^(@JRk~FSCo!$b5VMdp+S72 zQE4VZ4BBtCK(-T_(c$ic@{tF(5OR>+op3%V^McL7=*Jo%wcp`=TP$MmRx!wH*yKUO zYH2z7<nJE&!mSX9Zt zP?VmO2#R>9F!FF!8ff<<$bY!xpmjSm`7kgzhImGREQhoiAngNCf`z3+q&$q0H$mc{ zS_4!lL&FSeC1lJk9%>+{-{2VH39^DAHLncPjLIzlSGXV!B;=vRA7~sgH8(RaEuWzv z4{6{8RAxiR?2x+W;ItbLZzw~o2l*Z5cH}b8I3*dZzO*Pc9+Jo7^YfBZVQ~gcL*U4P zCpwtFN{UhwbBh@mTtNe=3=9n39zmdnJ;)l2c`CoKc%&u^WOx=b=mzP#gWLxiuLsd4 zMn;gvZZQLcb2_xu0qV25`#>vRuzMIHL&M@r5{uGPOBfgulhQ%WC&`z!$?p z$3xIMc;J3&S$v=0jINg#%OLF08rd5Jl&+yJi2po7wB`RR}@C1|{;C@~$9kHLLB zNZ&CBw7nQo)*%-NNcC1cXiP7@7_?#w@e^|x7+_-vAUeJrv}+7pY=UPfi<49HKn+V+{whudjV^(P z>cOP}LosM#AtN80so`vBoFn*<_=Xi=@$kV;s2PyH3Q~UxGzghkQj(ei?nk5+#b@S1 z=N*#sK_gj^W5Rp z5aSTg$~_)BhL{LirvMWxDbJ5D&V=@*pnaM0B5?PY0aOCR)(gNAHk397EzE|pAvqkW z{fb=ACKi_@$ETzw=cje^VQn!@X7WVJboXnhi-`NU#lR5?(49@4r; zw3Soy%HZaL#xT;6`eQlyDd346Q2K?r6WTt2kBPvGU9#Rs^afx6w(3EK7stkppo@RNcMQja z+Brz`))0#_tHA9vqz5v#+BgD6BwjX{i4YR!`Ik@b|NCCHRK?Z@^>KO7l1mufzGC@Q6#wiR8-XY+w4Ffc&;A_o%U4tD#GB7)e zOA?c_85kHq;-I(#=L*Qo218LQXuu8HB14SZfua;tH-H*8ptdF`c{4!fq@boUFfjOq zfox&G8Ft_{10=mcoLCG_6R?YHp>r&dH3raj4!CcWlbHuv0t9M?fsFuNwg!qjzp!`) zZDHUjsbX1-2F9aM(CJ$Q)2_8<#v}82~ISiVI5E-;@azi%-b}P5y$z7DKL} zC^fz~FR=i*w+Wuhf=o)4fR;4o5F!m}z?bHMs|s+#9^BqXBmqc& zpsX|}J24N^r(IYBQ)IiazW|ixLHgnIMY*6Oc%V%a zP?|$7qmaCYSX>3#JC>RUUe_C+n+X~afVMtCb4k!SCnPtZ^-ban5{rvVGK%s`(=)(x zNnksm83B|rkhFs3p?q+)2Bf(u2521vsz?(-#Xb7m z5+nklBV6EmCLT0n4qCDTuCgKh0H`Whlz`$5?0%>?bZiqmSq^GkLUIdakSsa17~E$- z)Y|Yq1SBbdCW;b^z;yt4t^rzfL3>TO#6eNdP>@)X0WEaExe%2P8lM0)H$g2d258>` zR1G4=p9^vlOF$t58>oWyF+kNS$d8~!V4wvR;879KTvHKfU_*n(cjIzCXmgF2Jo1r?z2 zr66}FX#WP3e4+D2@wth`+3}!(OVA-}$cYzPEkoyoz(EgguY<;`A?u#NV&FwyXle@# z&0woB;Qb1yIhlDSW+pImAaw$GA_%T75427R)XgaY1skXqDgs}J0~+dw=_|mEX5^w`@DeXjID^7CH6J`@jhsXnQ06|6GFeG# z1!$#OYHm_Kcnvj_UzC~#I^hZITzLBxRJMc0b->dn#wE$|r3Ii#S*-G9C5Ul6&=@3i zegRZW!PTc$6eQ-Qz?#o(eGt`8D_2=x#?Vjc#< zH)eni!NGDIh?|ML=B_NIAh8tOtto%e zm|kcs7=qV#LffcNF}V3KKCCE5(`$^zH(>zh+4yAm0#wjY24Xzh2r<5044qhDU|{ff z4F)x*7(i>0AcI%n!8maK0huq#S0S}TwMqxk&Hh737KQE^eDTjj3ii-!WgEEXa0H<%nsFrK6 zA;#LM)I7)-EO_?>Vw(fRKcL|eSlyPN&QMU4pA4Gt1La*%oCUf1ffpVYCl{rr=Ap)T zuyH&Ctgj9_TMZPxpdM9x5-6*Jf*#a9%gHZ-WCVs3@KJTJ78e5pX#5k_*aq2^j@ou$ z09AV+)#<5u(7FlH2!jl9BC7zGr=ZFVsoI5z6{O~Yi~*f)2Fw2@$YURny4eIKhq4~D z7<{rF0|V&rACUhNp^NRnbUb3D6v77&`7k7b=6uq@b7w`Rpv5M|3=pv*EMkyFjhT7H zB?z_P_0y1)3LB}1^x=|0Q?by#M>5!-1v!-r$%#2RndwD|1sR#ipcDpf9D>#|=78H^ z(6M;Pd>m-4RcTRTGH4wgq(2MZCjlA8jt3`I@R)o~YDGM#76NtLK;vlnIi;ZXA+mM` z&{AR8JaTen4rsk9c+D^9y|yr!fkXXZltz~E*8xTS{_7NE7J7PR&$KRq6@?ggT@Ah9GlqY}afk6=R0gQXyN z`xo4x1C;{c4hyLL3l2WSxFbvfqW@lu>U5Bv+|;W4e9(YtW^yt-t!08vT7%RLpcOXI zb|zBI2pV6{El5l*flL{}HG;(92?Dz52_%M`ehe8P`J=Ej5wt84HZcS0Tg4X?fsd#H z#c^&yYC32UE{Fz|S$W{o$x;)G;$i**t@MV}D4@8?D=kVYjtBK-7?9R8A(AIZ4X7`j zni6jYsslg;KRDIH93P*Q32H>6ih-Au!18b=Xx%iZ9hsM(o0*ssp9UKBFDy+2tz<9G z0M{ANQ_A8CKxc?Dfa4FmQX5jH6z61uf|{YYAio6ci}>WylKeFAS)-8IP6p7pXG&&S zJUAJE++32F4s8HIt8%3Aio}$Zc;xX!q&X&VClIV3GKdOoXJB8y0M3vIfU|;~# zpiTtT956o-Ty}wqE|hWrNi2AwV=rt-Yf>`2gfI**h6@F{NOKyb4;=U4h8k!sVK&50 z2p_hsfB|`<8iH-afNc{RXq+Jtw$Th+R)ND85)9DH47V53U4yo>A!{hWa+P_YEi`$M zRwhUUfjh+OBSE~TU(5`Q3=9mMd=RXW$IRffjG3X}9y7zF^{fml*0VCKUeC&Ka6K!- z;q|Nx7uT~gTwc%0@MJwJ!?X3Q3}4r?GJIRl%D}UMm4R;qD+B)qRtA*~tPH9fSQ*qd zurjD`U}f;xz{=peftA5;11p3723Cfg4Xg~g8(10gHn1|}Z(wDZvVoOh>IPPZX&YD> zrf*$ub&8!TWn^_sMHnTEhZ)Roa*v!h%xtW!rYcnfD_hwdxHJe!()^28H zShty#Vf|)Sh6|fn87^*SWw^ANmErPcR)!y&Ss8wAW@Y%bnU&%9W>yB7EvyW(TUZ(7 zwy-kDZ((Jy*uu(SxrLR%Y6~la^%ho!ge|NLiCb71lD4oiByVA5=-9%_(7A<`p=%2( zL-!U|hBaGQ8P;xLWmva`m0|rBR)z~(SQ##EVP&|qg_Ys*7FLEgTUZ(1ZeeA3w}qAA z{T5aRiLI;*l3Q6Bq_(m$NN;6jFxkq=V7ir+!E7rlgZWlghJ>xG42fG=8IrcLG9+(h zWoX&T%Fw!%m7#4bD?|HMR)!T@Ss7MtWo1~km6c)jR#t{HTUi;-Ze?XSx0RLQ{8mWw6-B%3!&TmBDHoD}(hmR)&ym ztPG*sSQ)~$u`+~jV`Zq>#>!B;jg_Hp8!JQoHdclO+gKSEZewLww2hTv@itb5BimRR zj&5URIJS+I;rKRIh9}!t8J=!qWq7uYmErj|RtACXtPFzNSs8@3voZ*8XJydY&dQ*> zos~gvJ1c|!c2WX_6}ACpB=0WzB^bM{C2Q1`0rq4DA>WuP`HDYp=bvy zL-7t)h8a6p8D{QaWtg>tm0|V{R)zyRSQ!rPU}ZS8gO%a%4pxRIJ6IW>?qFqjwu6=7 z`3_bFhMlYoj5}Ewn0B%omhCe%58UF5MW%##~mEr$RRtAM#tPF~~SQ(Udu`(#{VrB5z z#meBji?zuU91d+yI2{DcCj)P?_y<`vWt~r>MmA>X}ee%rte~9*s_b2 zVe2kdhHbl88Mg0YWw^78mErC#R)%}KSQ+l`VrBTTi?zLyI2{1?_y<8*v-nI zxSN$hX*Vl_@@`fJkKL>cp1WBYymqrPc<*Lq$k@%wkhzDOB=2KosM*KLP`i(np>7{5L;XHhh86o* z8CLFNWmvV3m0|ThR)!<{SQ(D)V`VtDkCoy0K30Y|`&b#??qg+mw~v+K{XSL(p8c#0 zy!%-h`1Z3h@b713Fxbz^V7Q-^!Dv4#gYkY=hJ^jB42k<$8Itz1G9>S3Wtg&`m0{|B zR)%T&SsAA9XJt6BpOxX@epZG<`&k(d?`LKBu%DIT<9=3#Py1OJKJRB`P&vTLpn8Cn zLG1u5gZcqhhJ*vG42cI=8IlgLG9({hWteh+m0{`uR)%Q@SQ(}tU}ZRRfR*9s0ak`% z2Ur=7A7Eu*ILOMtc#xHW=^!fu^FdYyjf1QVng>}Kv<|W|Xdh%{h&jm05POi7A?_e6 zL;OKjhA9VG8Kxd&Wteu5m0|ipR)z})Ss5-KWM#N?kd@)`K~{!82U!{Z9%NkOfhglie4zn__A7*8+In2sndzh8M?l3EZ{b5#y zjKi!9nTJ^!vJSH{WFKZ_Sa6t?Vc}s`hDC>285SRAWjJ$~mEr7RR)%wjSsBhBW@TVG z!pgvUgq4Bq2rC2o5mp9^BdiRTM_3uGj<7OVA7N!EIKs+Mc!ZUq=m;xA@ex*r6-QVZ zRvuwxSapPzVf7JKhC4@C8SWloWw>{QmEryoRtAovtPGq-SsA#FvNCWVWo589%F1AQ zl$F8iC@X{YQC5bEqpS>-M_C!Fj!|!B8jFqA8 z7%M~lF;<2Z$5k7u$n2+U$-5S+!zAT*1WL3kD`gUu{f2HRPz40f|v8SH1VGL+0> zWhkA+%1}0om7#nVE5n9atPC4xu`+C$#mcaG7AwPzS*#2xk*{lrDXR|Vh%wc5^ox{o?Hiwl#d=4vv#~fA$&pE6N zUUOI(yyvhoRLo&zsGP&fP&J2@p?VH0!;U$u3_ItrGVGee%CLJ5E5nmHtPD@*urfTG z!^-e{4l9GqTvi6zxvUIwb6FYW=dv>R%w=Wpoy*GLH>z=dm*M%wuKfoyW@1H;5Ruzwya z!;5*W3@_)gGQ66{%J6y~D}&5@RtDMmtPFDVSsCQ#voZwCXJrVS&&m)qpOqnaJ}X1d zd{&0u`K%0m^H~}C=d&^#n9s^^a6T);q4}%~hv&00e3{S6@O3^b!?*dY4BzLoGN>$I zWl&wf%AmG@l|g+0D?`WvR))|8tPEibSQ)|>urf?oz{)Uj0V~6#1*{B{7qBwyS-{G$ zcL6KIz6God`xme>d|ANC@O1$z!?y*j4Br>9GN>$MWl&wn%AmH8l|g+WD?`jeR)*Mx ztPF7rSsCINvNB9q$jUHrAuGeAg{%yd7qT)OSjft7a3L$hp@pmrhZnLkFf3waU|ht? zz_f^!fq4-tgT^9O2F*pR3=h|_GCW$x%J6X=E5qk?tPGs%SsA$3voc7oXJwFH&&r^? zo|QpwJu8F9dR7Ln^{fmb>scAX*0VBXu4iS)TF=T*v!0cqemyJ0g!QZpT8mg2v=^~5 zq%2}(NL|FrkiLkOVaZxnhNWv+8J4YOWmvwJmEq1>R))K4SsCuFWo5X(mX$$d9V>(A zI#vd;b*v2H>sT2a*0C};u483zTF1)ZypENjWF0F*={i=1vURKssc8>*RwK&uV-b*SkKCky`Gh!c0DUY-FjAriR)PzCa-5@Sh=2+Vbyw8h6C$a z84j&yWw@}OmEqEQR)(kRSs9+MXJz=Zo|WPIdR7MB4Xg}rwy`q2*~H3lV;d`j&t_JJ zp8c#08#c2t%$dc?aA6%Q!=GiW3>_<28D<=1Wmt2Rm0`nCR)&B@tPBZ@Ss6a8XJyzh zmzCkbW>yA|Rjdp>TUZ%p9Ajmevy7ENU?(es3rOu8R)&_{tPEdvvNG&B%F4iUh?PNR zAuGe1?W_zQM_3tb7O^ti*}}@uu!oi5#YR?!kU6Xj0b5uZR?K2$2-(WY@Mi%l!;LMh z3?4^W8IBxeWe7OJ%22Y8mEp!7R)&ZztPERbu`;A=VP!Znish}q1_ zkg%DRA!QCL!;Q793^E`$&0%FYbCi|AXB{iUlr^jje|E4k@N8yf$l1)w5V4h&Ap_L@ zpU28ju$7hJ#y(bt6LVP^9&BS}2w2C;FlP-bL(Dc-hKkLs3?*Ax8IEjbWhhwA%FwWt zm7xaIFWSS(U@)7N!C)^dgUJ$BhJ;nD3>)^cGW3ALbSoourl<3+AyGY>^fG46>C@-rYvV=Z~=wU99D)4%UBr#ma#HqEMsM8 zn8V62VGb+9j5(|fD?skr%*rqU)IVIz%5Y>iE5m~&tPCZKSs7+5XJsf^#>%h)6n4v4 z84fIGWjL{%mEp;9R)!BCw{2!+n6iwOA!iON!=Rt6tXJ82Co!xd1R?Pq03+0V*w zXALXEmo=;mENfXAIM%Wppx%3!mRm0<>`9}f!qjjRlN zR}O?Y*v-nYXFn@L z52&3!la=8DsC~GbmEq2QR)z(;SsC8!XJuHjo0WkDRM*a9W!N&0mEp`hR)#;zSsAX( zV`UIn!OC!F9xH>&3RZ?U^H>??>}F+H0m2(u8IH_hW!SKhmEp`BR)zx`SsAX(VP!b6 zk(J>ED4sX6GJKiC%5ViV9x;cNL0~y6!QV~3<>jD z86sA&G8BOF$RSpSIfqyoRvcnw*l~!J;RwhdAUADcWhhy}%D}Okm7!q;D}%-cR)#Oz zSs6->vNFi*WM!DLf|X&x3RZ?KD_9x!fZTGFl|cp6$J@lp@M0S)1J7<&2A5^53@28w zGTd0f%J5|cE5jL3nwiVWV6d5$L1Z~AL&6SL289Kz3|$kj12TIjD}%rxR)#%?SQ&H{vNHVH&dM<1C@aI4ZLACr_OUWt znaj%1afFq@XAvvIi!H1SJ?mH*F05f?NZH29Fk=%d!xWHzce64GfYQohR)#a1Ss8rx zurip;W@WJ0%gW#Y%A2cL8K!JyWiSAxncb`mQx>u^+&Rq3@ZvBl!;*!p3|DruGJIIV z$}nXyD}%*OR)!^@x?m|QL&JPlh6(do88Sfi-!oP_vem!Qdz>L&Hi|1`SX=?`CDt+0DvevYVB` z1{7zY@@5e$gUwM^h7)U98FE&!GH|S8Wl#aNX%?|E9N5IlV6&8!;lONGhAV4X8GM$q zGMt&s%22b4mEp)LR)!CtytIgw!RII|L&knqh6ig|8G2T+GMrh(%J645D?`X0R)z(8 zSQ&g~vodt-VP#mchn0Z^RQ}IpWmvI=l_6(4E5nyXtPC+nSsAv>XJyzkpOv9t5i7%* zm8=X4wz4t^tYl@lFrSs-&U{veIZId>E`Z{4A1lKJP~EqRm0=4g?B}pDbb#{BE>;E( zP`mvQD}%{GRtAfD}%;yR)#4HSQ%XA zvob6JwddBbGOSp~%J2hZ=0;YA9qU*b1lF=Ln5<`In6Z|X!3H$Oy_S{X%sN&Em-Va+ zC7W3pBxbQPcr0RNuvo;(u;Cah!v;|O35uU(tPFFGurkcq$I4&>3XeUk3=+p!8E&j& zWsq3Q%CKPtE5nZktPC25SQ*ZM!f_!h!;fvO3=I2O8J^5#Wmt2Bl_3Tc=UZ4Ao~&bK zFj&jVkg<)GVa_I2h67t!8Sa4EKzmpjLT0lvxa?(R@L9sjPywpTwz4w3S;xv?0m_>o z^H;Jm=qzAm_^^YO;lWW>hC2sY87g+MGBoUBWoQAlX^yfoIP7F)c(aF<;R~o-+sn$p zv6q$M#Vl5aEyq|HjvQlU@Y%`A@B!2oJjTlK;vg%-j+LwoALg(!gn-&EM_3sa>|ZVn!3=*4I86q~a zGO(;>W#C!O%5dTsE5j8~_<-y<#>${@oRz@`R7QZ>PWxFI)_}^1m8=Xl3s@OS*0VAw zY+_|lnaj$cvx$|#VlFF#38;(!mGv808ESU0G6XDOWk^`g%CKW8D}%=ZR)#-^Ss7v$ zurf3(VrA%A#L7^!l$Bw}9#)1Q$5|kZ!Sjx(fvVfI==Ljo9#R67_GYeT6 zE-Ynba9PgEpaaTFb66P|=CU%p0fp@vRt5u59kqs)!Da<3gToqD2A>tI3?ZO43@C2b zu`-0LWo4MNfR#aE9V;W!F+xh8J5|8NPtZ`K_!B2Uf5$TmZEzKzU^aD}%`% zRtA?ntPCD|SQ!HLurkDe(&3=x}H8G6>UGQ@!Dr1h)}DVtas7OZDw=vctY zuwVfz!-@s03_BLEGMoT~)dE(A2Mbsko`BNY0#*i=g{%xb3t1T?7P2zz*v-mN14^qa zSs5Z$vN9MfWM#+zjbDJ`b0I53#Y$ENkA zS;)%JvXGTw#zIzxISW}CR;*-YShJ9o;mj^ph8w$B8Dw^_GFX7j0hQIqSQ(yx+HyNs z8Q#ogWyk>4e~Vce3U;zG^z2||Fge7^U~`C-;lUwRh8Kre8NPtZy2Gpt0*6@{Bo4DO zXdGr`FgVQ0;BuIiA>=SCL&RZLhMdE!3>Al28B{=NYauH`3dj#2w=ZO6=m5EWAuEFc z$m|`g3^qGh84^HqKcF&iBP)Z>YF36F3t1UXEM#R^u#}Y{W<4td%YIe{k^QU;0-*f0 zm6bsTG!_WT`=EXmC@;=sWncicowu_xaBOE~2-wQX5VMt)AqCXu0rfXPa~mKxZDnPc zu#1&JXFn?g&pcKJg=4G?Ci__#6y~uq99YT9a0XOwuViI-vyzoz#vWD%jXkUkC7`+% zRIY&1`65;Z22eX<4=Y2m7!%DD?`sVR)!UuSQ$z-u`&eAWo6Jf#>((#2`hsMsC~4PmBHf}D}%){ zR)z>rduA>x!<=2L3`=&gGH8J6$|bA}8An+e3XZZe=qzPrr~&0MP`$UAl|cj4z68xL zEn#J_Sjx(f0K%YlI4FJ>vNCY2Vr96qkd;9O)Ye$Y%3!jJmEp%iRtA?=tPB~eSQ#2X?Wt9)3y}QGx=0ftBIL4ps&o&^*~{R)!6$Ss9M3W@Wens`Ekh{c2W*KdV_8 zMAon})NEp9ShJp$p#oH9ZD(b$*v`t}0veOp&dP8GWab7|h6f;e6Dz}=O{@%0HnB1= zY-eSNn9Is=W<4vzo%O5?Teh$=v}|W((AdVxz%q}O;m1-|h6$iH^Cnh?51UvSzHDM; zxU!0s;l?Uf1_n@jVKXa(z-Cs4JIh!Zc#g6%9N5RoP%)F0Apz80UCGLj0V;bz>Otua z)aKg5%D@9^7l8V!OIaC8cCj+BtYl>f*}%%c04l>kW3r(3;c-@mfJ3YdOAfO#Y&guy zu;VZ*!QjUI@1Q&c>ZgLr@!6~lCZMs9y{rr|OIR5ufYKPKeYcC1L0}gv zg9K=Bm0`+ER)#rCSs6NZu`;Y! z%F56K%JVZ>8FtKMW!STnm0`v%R)zyhSs509>NrrFe;+G@3aBl$ft4Wz)IMIt%8&qR z^R8lL$N{zMkFhco>|tf70L@QrXJy#1gq2~(5>|#2ptkrDRtAwJtPCnkSQ%kM)i&z;R9A;&hu!xmm0jO=ih?QZ-B36bshglhZ9A;%; zIKs+sWDzUF8PNFFB36bcp!PbbYy`C*7qc?REM{d;0gXX``csQp8GIJAGDLvHK>1+@ zD+9|;RtA}+tPCQcajXrj3>#LmG8|dS%CG@6t_vzFL38=*Ss4tLureqdU}ZS5hm}F+ z04u|pJ**5Kpn3?jwgEKXzJQg%V;3uf1t@+%?NZPj{{~hD7La`)b!%A}7J$Y(Hn1|x z0j13atPBCWSQ#8ZWg}=@36$Q5eE zWw-)rLmpsdxB*%R02-6n&&rT$uZ1FQ@$K;j2j89so<#161B`~i(K9$;l) z*}}@O;Q%WG4`@8^04syU7FLD>2UrOZtGU$N%HV0T4Ot!Exd^o_$ z-~cLb53n-0Y++?!ImpW3vxSvGik3oAp!K~{#AEvyVF2U!^=fckC+Ss7-4#v>21GAsbCFF44`umm)& zd61Q1!xmPC2m4tWUhHROSaFb*VGqdN2U!`8fZThKmEpt|R)!M?SsAW?)-8bI1=L?Z z#LD1sh?T+T5GzB>Ay$T*L#zxHhgca}Kf0@5W%#j}m4RgmD}w~c>?N!WI!jm?Y?iPxxGZ612wB3)5V3@n zA!P|GL%|YOhL$C)3=Vr)89YF3`Ms}6$` zvX_-XWf?1j$ZA%G9+3H-YF36H zOIR5gKxum^D}w^4j|VDuK<(nCtPBC5_6(@qyp)xp05ra^l$D`nDJ#PYkQ+d4?A5Fc zOO~=StO2z{L1o`gRtBEqtPC+LSs6-JvN9;FWo6J<%gXR)KPv;r0agYNP?&(mM-H(v z%m9rKf#P&KE5jAgIM7U1hK8A}3_YOoWhN`bnwhK&8)mXH9GJ<|kZs0V>Bp`2aM&3u&vBFgU`>U;-MG zIl{^ia)gy30W@xXgq5M@2rEO&5mts7M_3t_fciB@SQ!o+VP!aTgq7jK5mtr=M_3u& z9ARbnbA*+F3`rFFNFlQqxLjkCbx|Nk-0jNK7h?U{WQC5Zthgccjfck5oJ`Jdk zu#}Y{0~Al7aVn5Fs4UvZ%CKf5D?`Z=R)#e@SQ!N7u`(Ed{0pknL1PP`^5_^VL&7mu zhBu)63`#SgKF1+ehJ-_`3?-oS4jRMU&&n`iKP$rwP~U4WE5nw(tPDH$vN9Y2;kB#` zC-$;3+}O*?um&{N3+nstXJt488n@lc%J5__E5nDqtPFoZ?Wnb^3@rOt894T_GW^)X z%J2s?_Oh3ifoCr(L&H2)h8go%8RpDmWmq$hl_6(6D}xWHo?gq!a9|!Q!x2zB4K&BP zpOrxdRBvx*WiZ&z%CKcAD}&8;R)!->Ss5I*vod6CU}ezQ$I4IuO8cPx=TcS%pY5y+ zcR*pZot2?t11p2gK30a74Xg|fpnfSR&2DF9_y9_`+gTY3Kxu0`E5jd9`rXdTAh3*; zp=UcQLl0;@+CEl>2^&}$0zl(`%UBtvfZPG<+iz!OSg?VWA!Z*d!xGTgJ7_J!GFFBq z+gTZWma#Id0l5?8M$np_WvmQmK;sk3SQ##W>aPu~3lR6p%wWnfv( z%3uMSQ(4Z+a0ZlTL4B#EtPC4K^~nxa1`kl1Z8Vag6xh9x^#8FH4hGOXCa%CH5bZaFK%o*k?VCw8zh z^nmOGxfhgAm$Nb)0gWBZWMwb`&3Ay>mK#|aHY{gl*sz0@L1G>&gT)?JhAp5z$U;_z z2OC)#OhDt-J6Rc2*03_%0nLMKV`aDi8j}FE>p<;_y{rrhp!vbItPCokz80v@530LC zX>JWGg951UyoQy*1vLKv8Vg#>%HXq>l_3E%#u`=vg&&n`m6Dz|J z(A?loR)z(OSs6<9urk!lW@Tsqm9wBa3slE~%4tx0dm}4D%N|yS2cWS|P}u|;&tJ;Q zumse{0=50Nu`=w~#>#L229AafK0JS*|u`*a} zVrAes%*x;Zl0VGK;IoO9K>^e!-o(nFbC{JO0W{_dTEnr4mBHaKD?02%h(G@by;*PuScHdcm&ZLADuKlvNHStwP9DWGK4HjaI59b;u^IL6BG;TS8! zmt(99J)m(YP=DwsD?T84A&)ZoUW`M@ASF$qXfZ_!- zRz&NhIOnA2iCDNoB+*VA7Eu@0b$Tw?;%!(3x`-4?i^xecyfr9;lm+T zhCiURaF~@r<}fS60nj`LsH_B)FQ7VO2`fVfXbuH5ZVp-#0_u}&W@Wgso0TD97Au3w zELMhyWvmPgps_j7oGNGx9h8Pab3vO~8TNqc*`=%uQ$XQFrP&qY=m7!u5E5i#=*))rlp=TB=!=Lr6 z3=E(-B~UwfGb_WJ)vOE*ps_m87$j)k2~;+$U}cb5!^&U+>Suz=h!w01HfvZJ0zhMZ zpti{hR)zr3+$^Xq3Q`YhgM!AQLHT+OD}x4Tj2|Swhm~Q@23Cd@8(10EY+z;Bv4NH0 zzy?-^BcL&?HLMH;D_9vefcmwdxhzn*0kRh~P7i9cg8G1<_QM)hh8t^G876?%s%&9p zP?*iiumCi#zJ!%w&U#jcC7`nHI4i@NovaKJ$5|P6fXc+1m2TtNL6 zP&*Jb&N7pgL1Y&z!v#=zu#uHP05oQ?k(EILG>!op!w2l#H6LVP^YC!V^pf(I>jnYz9hCRDj8NMuKWjF$w-vgB?Gg%pIK>agNdYZ$^u;m~t z0}H5+23nJJkd;9IH0CptmBD2fD}%@eRt6c+I);O+3^Jhg?x1D(etPBr8eNj+;oXyHG0hC@q^Kr9T8Fqlu(`;6T8?#v%?ts=X z%w}cyGnjl&#gWhmIj%FwWlm7!xBE5iiPd?aYjVH+#M8c-R$jg?`~ zHdY3URjdp%K;_N>R)!S^SQ&PJ`mvyXB&d(LhLwQ_w0;9LZ?cw^Vb5Mx2A8$03@cW! zG8|dK%HXk&Dym8=X0Ky@@|{BkcV z!qDBWzd<$%J5}B zE5i>^+hG)N4XErN?!a-Js6wtWPK~{zg z(0aXttPD3mege%Qf#wfDbMv!V8A1-SGJF8}Z#FAK1}JTV=Clv8GFX86*0Wg|N)ECz zteDNpPyB2Yc?TK`UC+vJ0@PPp&&qHElx{%#R_3uXIDpn)f!6x1XJz;^kCh<;l;`)c zGAsbOb3Q9W!g^MQguSc`EL&L_azJxuTUi+_=CCsO%wc6<0gZdlVP)W0#>$WY8lMHN zUk0r|0<}-KvNDu_*4=>SjX`T>=CCp}>}6%p*viV#14{d#z8`3f2WWi^aQJaN;m4!xhllUeI{ac2avsf7nX0b9j%wlB-0JSwh zes?1C(!Ou`((r6nhL+i^3^PD!bv7%*8PJ&ZHdcl^pt%ju7}G&k zh6vEQ2hduqg{%w>3t1U#KZ~+w7M_3sWcCs=&0mbzZR)!SNJT7QF^av|M&Q4Z_FQBn+&=|)~Rt64G z{{ghdY$q#&$PreCAE32lpfSxOtPBE2SsAA6WM$9+`4`j<-pR_~aDED+9-JRt6E!eCsM!hJfX) z3>hm}8D4P#=34E5nS{tPCMtNvl{HGC*tgR;ctXps@l_{~FX!2CYK?)nA}~HE5o76)VGpWvmPKB9RNznQ_kiS4}&9$ryZ`QCfFo61` zpgAqjd={vk30eoWhLvH%GFAo~(7L7-tPCt`SQ&IcZG%;;3{OCF?5kKAEY`3xv@B<3 zSOW6%8dioKp!sQ#yOy&utO2c)0@(>_uY&r@Ygrj$Ke(8$;#lfl9eF= zG>5pHl|cbirmbaV__2bOA!jWsLj`DFVl68}8fd=CjgjGj8zTdQJ0pXFJ0pXGJ0rt_ z{frDB_A@dhoM2?={l(0%^cOS3&R@(7_kJ-m{QbquApe`0!SOdUL;P=MhVtLc4AXxz zGi?3M%y9QNGsEZK%nTxbm>CTIFf;i4VP?qr!_3hAhnZp7A7+N*f0!Ab{b6SK|A(1D z?k_Wg?O$ew$iK`CjenULmi=XB*#DQA;q_l;2A+S+495SM8AARsGvxhaW|;DinPK}s zW`@iEm>HP}hVM))3^L3t435k!3<=CE z3{A`|40D-T7B!cfA(!Z4YIg<%5=3&R-}7KW!R zEDVgSEDQ>)EDTnxEDV0EEDX7b{2*}b{2*Lb{2*Xb{2+Z>?{nY z*;yE#u(L4y1F7L)VX)(1VMyj+Vd&&wVOYb#!f=9vh2b>^3j-S`3xhT%3qv3$3qw99 z3qv<23&V0w7KWpoEDX;$Sr~qCvM>m8u`uXxu`qaWu`r}?u`o1pu`o>GVqw_K#lmo& zi-qAm7Yl;`Hw%LvHw%LwHw!}+Hw!}xHw(ioZWe}}+$;)_BFgz1rVc-&E zVbBv~VF(grVMq~VVW<;iVVEw+!mv@0h2e}K3&R^h76uL>76w%z76wxx7KRWZ7KVHw z7KVNy7KRN%EDYC$SQx$wu`q}UvoKf*voOR7voKT%voOpNW?|Sa%))R@n1$h+Fbji_ z2n&OS2n$1`2n$1z2n$1x2n)j&5f+B)A}kEwL|7Q4L|GWDL|GWZMOhe1L|GWRL|GVC zh_Wyo5oKYxFUrEeCdR^`D8|BIDaOJOAjZOwFUG>qC&t3CO^k)%u^0=(e=!yY1#uPz zTX7bK7;zScYH=2ZIpQn~Tf|uyu86ZRyc1_(V3%NF(34Q1`SCT1}8}thGa<=hDJ#ihP9F`3`Zqd816~3F#M2YVGx#LVK9(l zVQ`jWVThJuVJMekVVEk#!mw3}h2e%23&Rg776w6S76t=p76yN57KT!37KVOl7KSa- zEDR5%Ss1=avoLVWurR2}urS!jurT<@urQ>`urQR$urN%NVPRMy!@_V{hK1pk3=0FN zEDM9OEDM9REDJ-ZEDJ-vEDJ-2EDOUjSr&#vvMdajWmy#Dhq>)DhorLDhorMDhtD0 zRThSwsw@oWRaqF`sst?Dccchp%JeyOuCh-t7ecxtdPzL3}-c27@lde zFtBT}FqmtxFyv{mFig^7Vc4d{!f;EAh2ftT3xkq23xl0D3qyi73qzeY3&T`x7KRPl zEDYzhSr}exvoHwiurL_uurP$`urL(purT!KurRFAVPQC?!@}@DhlPPjmxV!ImxaMp zmxaMsmxUoimxZB4mxW=mE(^mkT^5G>x-1O8bXgcg^;j5e^jH`|^jH|O^;j4>^;j5| z=&>;D(PLq_smH?bLyv_)T%U!(K%a%dN1ufuQ=f&QO`nBfp*{=4L46j6d-^O4j0P+W z(grLHCI&1F{st@zX$C9|?FK9i3k_Hpb{McQ+%{lg_-VkxAZWA|VVGge!m!zxh2gX@3&S&G76xt;76v5~76uy=7KS1d7KRBXEDWnn zSQt*5urNF~VPW7iWnr*1WnpkPWnsuOWnq|Y%EGYCl!f7jDGLL$84H7=84H7j84E+W z84E+684E+F84JTQGZuy;W-JUZ%~%+u%vl%=%vl)x%vl(c%~=>~%vl&_nzJyhH)mlu zZ_dK-%$$Yczc~wom<0=ikp&Bby9EnFmIVt#rv(ecN(&Z-ofa$%mn>KqURtm)Fj%rM zs9LfxI9ReU#8|R0R9Lbw%(7%**k{SYaMO~7;jbkNgS-_BgO?QxL#7oAL#q`F!vZT7 zhGSMN4EL;97`|GuFz{HjFc?^~FnC+DFeF;DFqB!dF!WioFs!s@VK{Hi!tlnLg@N0K zg+bSbg~8i~g(203g`w7lg<*~j3&Um`7KV#9EDWD*SQx}?Ss3(fSr|fWSs03JSr~e4 zSs0evvM}tkWns8#%fj&1mW6@Sj)g(aj)lS6j)ft}j)fuLj)kGuj)h^X9Sg%5I~IoL zb}S71_ACqr_ACs3_ACr}_ACsO>{%E#*t0O4wP#`YWzWK(=)l5Y@4&(k@4&)P@4&(^ z&w+(up92fSJqH$sZw@RBLXIp9T8=CXE{-e=$&M@xZH_DqD;-%FE<3U?e05}D5OHE* zFmYmG2y$X!D0X6D=yzga*yhB-aNdc9;iVG`1G6&=gMu>)gPk)ALz*)SL!C1V!)#|3 zhMmqV4ELQ`7}#7`801}87_41b7(!iG7|L8&7$&%|FsyQ6VL0T%!f@M#h2g6U3xj|w z3xkd;3xlI83qz%vM}(uu`p=4u`sy0u`tBB zu`pD)u`tYZV`13o#=`K*jfH{DorOWoorS^OorNL8orR&sorPhVI}5{RcNT^t?ko)V z+*ug@y0b9wc(5?2d$2Ird$2G>d9W}Pd$2I{d$2Gp_h4bz@4>=w!-Iw4lLrfffF}!s zz9$QVwUmv7@m5w zF#PdmVUY7-VX*LFVes%_VMz30VJP=uVVLg2!m!SVh2f|V3&R~B7KTqgEDT(}EDUOp;LpPF z)t`kyAb^EIIe>-1E`Wu>KY)cHCxC^aK7fT`MgR-Lx&Ri2GXX3NF9KK?cmr7&v;tWe z0s~nXiUL^}dIDJ(mIbmf91Ub)cpAvU@F$RkK_-ZW!90kCAv}nMAv1`Dp*4twVMY)O z!-gOhhT}mj47Y+<7(NBDFfazQFen7GFjxh%FvJD3Fq8$eF!ThoFsuw_VK@-X!f-Q~ zh2eED3&X!)76!o(76!Et76!`@76zXX7KZo`7KWk_7KYXk7KRxiEDWndSQz$&urOQ< zVPSX@!ou)9goS}Cl!ZYyl!d_{l!d`Ll!YNIl!YNbl!c)yl!akYC=0{(P!@&@p)3rq zLs=Nu!&n#;!&n%c!&n&N!dMuZ!dMuVhOsc54r5_>8OFlE7S6(;63)V46VAdA5YEDo z8P3Ac5zfM}IGlyyLO2V<-*6TNnFtmJ#|RdNhzJ&j`Un<=r4cL)dm~sF?nbaM{ElE@ zkcebqFpFei@QY+&NQz`(sE%Y|SQyE|uq%><;YK72!>>pd2A(Ju28AdV2FoZGhR`S$ zhN37IhK?u}hWSw}3|pgE7%oMzFuaOlVPJ}8VNi-@VX%&7VTg`qVW^L0VVD}t!mv4- zh2cyz3&WFW7KXpkEDW+SEDRiC9>>D)F^+|SJD!C>CZ2`CD4vDEEuMuTE}n&< zD4vC(Kc0nQeLM@pxp)?am+>qN%n2+Ek_jvfMhPqoehDlL@d+#p#R)779SJN93ldlu zwkNPKTufkLc$L7yz>vtoAeqR*V3^3l;GW3B5SPfpP?^ZWFg=llVP_%>!@WcnhF^&+ z3<60k44O$S3=T;w3{goe3`I#S41Gx~3~Q5E7>*~gFx*RGVfdWH!oZ%)!l0PU!eEii z!Vr|q!jO{8!cd;f!Z0P7g<)kf3&Z|o7KVq(EDT?gSr`OTSQzwDSQuPVSQz3{SQsi( zSQsXxurRDhVPQCw!ou)8g@u7Pm4!hqm4(43m4zWNm4zWGm4%@!m4%@zm4#tpDhtE@ zR2GKYsVoe?Qdt-j(pVU5(^wc{(^wd4(^wcLrLi!qN@HO-l*YnvCyj;SOBxFUe>w|; zVLA(gS2_zrS~?3uQ#uR7<>@R8yVF@1E~m3Fyi8|dV98)%kj-FWFwJ0L2*_Yz z$j)G4sL5bqn2^E3ur7mz;Zz0-!;=gah94O$4E&ia40@R?3?7**3^AE348@r&4BeS5 z3@b8O7*1reFuclSVc^eVVNl3oVKB*JVeragVMxwmVJOdHVd&0cVVIxA!muTah2c~d z3&X=K7KYDREDY?~EDVy_EDYM&EDUbhEDR~xEDTNAEDVdYSr`sxvoPGxW?}f7&B7p) z!@^*f!@>}h!@`i6!@|&z!@@8thlOEF4hzG@92SPpIV=nUxhxE-xhxF!xhxEUxhxDx zxhxFDxhxDlxhxFJa#u`v8BVqp*|W??WYW?}FxW?{%KW?|?kW?@)X%))TI zn1$hKF$)7*2@8Wt2@8X32@6AN2@6Ae2@Au@5*CKjB`geYOIR3$N?908N?8~pOIaAI zOIa8el(H}!EoEVNRm#G^QpUodSjNI&UBg+aE8g~76lg(0+xg`ud5g`uyCg<)+K3&Y7O7KRs9EDS8wEDXxk zEDTQ7EDRCVEDV*^EDRH?Ss2z-voM^gW?^_z&BE}bnuS5QhJ`_=hK0eihJ_)ehJ~S` zhJ|5j4GY7j8Wx6QH7pDdYFHS)*03;e)Uq(B)Uq%**0M0f)Uq%X*0L~6sAXYTTFb(4 zq?U!@ZY>MLw^|kk{yG*0-8vQqn>rST@H!TT(mED~$#pCYYwK7TPSvq6JgZ}2_+Q7u zAYISGU|!F{;8D-QkXX;cP*=~wFuk6IVRbzV!=ZW>hP(AF3}5S67`Pf(7&IDK7#tf| z7-Ab(7-||=7-lxGFl=dHVK~{q!f?NVh2dWV3xiN23xi%G3xj7P3qx!p3qw^S3&W&F z7KW9LEDU=aSs1Q0vM{`DWMN=$Vqs8eVqvgsVqpkwVqr*YVqvImVqxfMVqsX+#KN$v ziG|^26AQzyCKd+aW)=p+W)=p&W)_C5W)_C}W)_Ai%`6P-npqf*HnT9?ZDwKk(agfY z)55|a*TTYJ(89vt*22ON*}}q5*uugvrGZWe~=-7E}yx>*=*b+a)10m=8UFj)7nFa-6mFl6_zFm&{=Ff8g}Vc6Bf z!f>aDh2cjJ3xilM3xjSi3xj_z3qx)%3qxNo3&YA@7KY=!EDTS3Ss2**SQte5SQu3M zSQt$ESQrBOSQv8qSQxtdSQwV|u`nFyV_~?_$HMTTkA>lX9}9zUKMR9uKMR9(KMR9z zKMO-*KMO-mKMTXGeinx9{VWU@`dJuW^s_Mh?`L5Un83oIK7ob7Z2}8J+yoYe>Ip0i z^Cz${?3lp9aBTt$!@CJA3_=rG81yExFt|@-VMv+C!q7R9g<2~tNh}O1lUNvRCb2MtOk!auoW#N~c@hi5=1D9JS0}MB{F=nVAU2tWL1!`x zgYRS(hV02K3{8_+7-mdnVc0mCh2h*}7KVG1Sr|S}W?^8O!onang@r+F3JZhf6cz@r zDJ%?eQ&<=Zrm!$HPhnx0I)#N{NFOH57Sr}c&4*3XiR5eaGlP=kT9Kvp=LS@!;I-H3|ptOFkG6>!tiW53j^y6 z76#QBEDY{5SQv6xXi$$2acy7O2VoaV7G#LZ)2sF}yYFlinO!`gW) z49DlOFg%>c!tiY#3j^PL76!ffEDT=rSr{_svoQ3{XJJ?}pM_!Xd=`e=^H~@e7O*fV zFJNJ?TEM~(vVeu5WC07qqy;PtYZtIE9ACh~@L&N8!>7KVR|Ss0X; zurPQmVPVKw!otwHgoR<{5*CJ|OIR45EMZ|_S<1qozLbT*Ybgsu>QWYl=A|qQi4CO0W7$&Y@VOY03S9h zkM%4J$?I7d8rQQh%vsOEuxmXF!b!?sN<4EHv%FfeasVbI>p!VtQdg`r_H3&YCIEDV=6voL(z%)-F4 zg@wUr3kyT^78Zu$Ei4SZTUZ!YZ((6LwuOb^$rcud|65oXq_(m!=x=3VaNo+pkh+zH zp>-<@!{V(h47<0oFkIit!tiA)3j^Oa76y%NEDR3YSQx^#u`uLsV_|6B#=@{*8w~clZ7FACksQ-P8NnKJ6RaE z?POs%x08k8)lL=$zFjN~M!Q%TLU*w+RP175n6`_BVaqNShAX>R7~bzY4B>lO7>f6@F!b(aVOYMGh2hv<7KX=r zSr~rrWnqxm$HHK|kA=Zy9}7d&J{E?&eJl+9`&bw@?_*)Ou#bh|-98ouuKg?wYWrCj zy!Nv&B=2WosNc`RFl|2z!`A&Q45#5rfdXR-d?jQ?;)j<}9kb^7?g$G#}rW|BpSaXnt z;n+bIhWiIu7``54VcI2 zhglf>53?|2A7)|bI?Teb`Y;Q_>BB4xPY$y%{5{OVAb*5~!Q}`GL&gynhK?gF49kwN zFdRO@!tmk<3j^~}76!$mEDV-MSr~$jvM}TwWnt(z%EGYhC=0{Rqbv+(jnIC@;4u~km18UnR>xQvf{(EW z<`XOoH&3uId^*9xz;}{`LE|I~gX>8ahPaa~3{@vt7^a_OVc2$(h2hFc7KTqJSr~** zu`n2)Vqx$;#lnzwiiM%!6br+QQ!EUdPq8qZJ;lQC^b`vN!)X=76y?sEDVNcSQrA&urL&yVPR-L!@@A@ z3=6~BGb{`T&ag0CIm5#6<_rr1>sb~Cxw9+`R%cll!q2iWWSwPUXgJHlFy$-@!|Jmv z4ExWrFkCy!!tnkq3j^~x76z$vEDR>+SQtFdu`nc_V_~R0$HFl491FwNb1V!O&#^GP zJ;%bpb)JPm{X7eU%Xt=tkn=1I>E~G(8qTvYEIiM`aQHk6!;|wY3~U!z800RnFxX#U zVTilH!ccjEg<y~x5a z`yva&mWwP5=P$A_yuHZ6z(4AZZ$Ff6;m!f@aU3&Wi&EDUe1urU0;!onbU zm4!j`Dhq@8RTc)Xt1JxBS6LVeuCg$6TxDUHag~K(?Nt_rJy%&6&Rk_-czl(G;louH z2BvE)45HUq7|gD*Foa!WVJNu9!q9V#g<;t>7KUBdSQsu}V_|rGjfH{dItzo=bruH4 z>nse3*I5|KuCp+7UT0yLeVv72-E|g*-Pc(dPF`nWxOJU{;mvgx2F4pK3~D!67`$(= zFvQ+qVJN)8!q9Vrg<;hV7KWoYSQsAPU}5-vgM~r#CJTe^O%?{%n=A~;H(40!Zn7{e zy2-+D^d<|#vzsgoY`0h#G;gsmc-~@R$iKzHFy$5t!}eP&3^#AFFuc6Q!tm!73xnWo z76#4REDTP!Ss21^voPe}W?|^O&BCzkHVec4+bj&%ZnH4Fz0JbFdWVHU=?)8n{T&vD zm^&;Cm3LSeI`6PB%(}zEu<;HH!`VA53{UT{F#Ns4!XSE=g+b>o3xo4r7KZq{EDZH` zSs3QtWntKTmxbZNT^5F?cUc(z++|@9zQ@8~e2;}8@E!|8{yi3kmU}D=Gw-o5th>j; zaPS@r!_|8%3~%nSFfiX|VUWDf!k~Yjg~9Va3q$gK7KYaQEDX!H;oSok2A+p3 z3`!4K7_1+%Fho9NVW@h@!m#`y3&Z(`EDWC>vM@+IVqvg+#KI8uh=rl(5evhVM=T6G zAF(i8dBno-m_+u6Zx5q3D1&>)6raoq2*!!4;;lX1T2DT?G49ZVf7@VH4Fho6J zVJLXQ!qEAIg<-)H7KU9_fV^-~sxgHKr)ZarmT`1q8Cf%_Q?gW@w52CHW*41v#B7_y(SFf=}6VVL!dg<<0} z7KYQ$SQs8ZV`2F7jD`NAg$1hnJ{=8&i5PrqNp!;&`@q7m{R0cb z&S4EsN_Fg*Rp!XWU8g~93*3q$HB7KY|e zEDXy&u`rzc#KQ3A6AJ_HXBGyd&nyg~pII2HKeI3_{LI2|;xh}wyU#2PqF-1TY`(BC zqy@?Hdcji*GCp-@mai@O)=skp0fWp#PnP z!RL*jQ9hU)Ju43odJFs%8`!f@m}3&Y*-EDT@2voP@eU|~@E!NOqwgM}gd2Ma^N z4;F@|A1n;hf3PrY`oY3*{s#-gogXX=FMqHw{QtqiAo`PqLHj2QgVRqIhKQdm47op9 z7@B^vFiic)!m!~d3&XLWEDSe)vM_x8$-*G`i-kes7Yl>+FBXQ_Un~qIzgQT0ez7nt z{>8$u`xgtttzRq*pMJ40u>NLYkp0cVVEmhf!Rz%>K*5u=y_w!>PY443Gb^F#P<>!XWUEg+c2d3xoAP76$)+EDXv2 zSQu*lu`tZ|$HK7w9}B~ge=H0){;@E8_{YM)`=5nD{XYwX>wgx8#Q!V|_5WEIX8dPi z*z%u+;p%@DhL`_Y7R)(vLtPI~7Ss5glSQ)ICSQ(<3SQ%=WSQ+Lsu`(QDVr6*B z#LB?I%*vp{%*x=y%*v3<%*xQq%*wEinU&!rGb_VWW>y9U7FGrs7FGrm7FGs-7FLEV z7FLFK7FLEOEUXMCSXdeEv#>IJV_{|BV`XJfWo2csXJuswXJut5Vr6CMWMySo%F4=c zfR&ZuE-Nd;PgYh2VK!CYBpAe>1?bFTiI9{F0rvPyk%o$U}I-x zP-16guw-Xt2xMnv$Y5t>Xkuq&n8nV@u$7&a;S4(~!wYs+24)Uc1_cgQ1{)4mhA<9R zhCB{dhE5JvhJ_rg4Es1(8E$c~GW_6RWf0|LWia4mW$@%=Wk}^@WvJm~WthUr%CMS~ zmEkBSE5lt*R)!y(tPK2ItPI**tPE~ktPIIqtPJ&BtPC@`SQ$2Qu`-B&C1Zj&C0NXo0VZdH!H(+ZdQhO+^h^7Jgf`~Jgf}XJgf{s zJgf|PJgf|zJgf}Mcvu+@@vt)7;bCR?!o$kI&&$f7&dbW+!pq8#z{|=|$IHqvo0pYg z8!s!vd0tkA*SxF@ynL(-dVH)5fqbkC#eA#`6Zu#f*7LD4T;OA6_`t`?Ai&ScV9d|T z5X{fYP|VNDFpZy;VGBPi!zF%JhR^)048j7e48{Vi3}FJS3}phW4ATTy8FmV=GF%s6 zW%w$<${;4l%3vnQ$`B^V%1|lD$}m%qm0_nKE5jW@R)+6_tPH|JtPFZWtPCzftPHV2 ztPFKRtPGQdSQ*v`u`=uzVr954#LDnph?Rj)n3X|On3cgnn3W+?n3W-0n3bVHn3Z9s zFe}4OVOEB#!mJFhg;^O`MOYb>L|7TzMOYaMMOYbTi?A}B5@BWdB*MxdDay)VDay(a zBFf58Aj--xOO%!2s3&5c z3=Wd43=xv742_bk4D%&f8TL!EGMtrUWq2gX%J55)l|ev?l|fmGmBCz!l_5}yl_5=v zm7zk4m7!mXm0`IQE5ku4R)#xLtPEeISQ&VwSs7HNSsCo4SsA>gSsCJ`Ss6;DSsA*d zSs4~evodU#W@R`p&C2jhnw5b;hLu4=hLyoshLyofhLs^jhLxd4hLvHu3@gJr8CHf9 zGOP>_WLOz~%dj$t$g(o%$+9xI%Ca)V%d#?*%d#>|l4WIBDa*=mSeBLHwk#{dH(6E& zJ~>tfO*vKuCplJzI5}2^GC5X;iE^wAtK?W2j>)ky+>>Kv_$kNAASBPqpeN7D;4RO} zkRs2@P$$pIFiW15VW&JR!yS26hX3-c4Dt%B4CV@~3=s;f43!G33=SA~_~y9z6Vs46Rikt!>Lvnne?lqxGji7G2Yk18v}B2`v~eX6VsH&j^}-m0=P z{8wdV5LIJkP*r1Puux-V@K$4GNKj*Cs8M5On4!kXuv(3kVZRzH!y`3T1~zq8219jL zhFEo0hDLQ(hGpuk45!pt8Q!b2GH`3KGH7V9GFWS{GWct-G9+oRGL&hsGAz_!WjL$B z%J5Qym4Qu@l|fRIl|fgNmBB@ml_6Y{l_6V`m7z|Pm0^-5E5lMvR)(FLtPE!~Ss5N^ zvNHVCWMvT3Vr4MWVr6j9VrB5xVr59zVr6L7Vr5vV#mcZtiX|pms(q?7&uFcB8ufxiqsl&=(ufxg^ zq{GUPp~K2ht;5PNQHPaby$&nGAstqR8#=5E-*i|R_;pzsG;~=Rd~{hEQgvAwI(1nY z7VEMy?9ydrxTwp@@Kl$T;g2pWgODC8gO(mEgS{RrLzo^bLzW&ZL!%xm!z?{khHZMR z45#&286NAgGW^zKWl+^;WpLMLWr){jW$4srWmv7x%5YGhmEo2?E5k>9Rt5nBRt7Bt zRt9$iR)!=4R)z)xR)!e{tPGnCSQ*Y3urj6A1~W5O26r=7hFCLJh9WaohE6k9 zhWTc!44chZ8IGEwOcw)uM@Y9NwfybJaLDrg;!O)tO!O5DHA;OxK zA=jFfp~ae&VU{&3!#ZnLh6C2D3|FmL8Qxp7GO*dOGAP=xGFaQNGKAZ(G8EacGIZLo zGAyuRW!PoI%5d3+mEnyID+9YND}#b9D}$viD?^AaD?_#|D?^hlE5jUHR)(#%tPJOD zSs7m1vNAB)u`)>8u`-z1u`>ADu`;CCu`<-zu`*1zV`bQ2$I5Wpj+Nnw9V^3MJ5~k> zdsYS$dsYSydsc>6dsc>Gdsc>4dsc>7_N)vW?O7R4+p{t}vu9;saA0MSabRW8bzo(1 zcVK0Rb6{ntaA0NVa$sdx;=szV&4HEStOF~m6Ac&N{L(ymVw`V02<-5OHE#Nbjg{ex8!LmbJ1c{UJ1c{yJ1aw? zJ1awlJ1aw%q!!*@KngjRz|Oizh3Cq$ewbp(iVYhbJpToF^+oxhE?_zb7lh5>Hl! zJ)W!#mpxe-UV5@JFnO^uNO`d`7<#cXczUri#CfqYlzFi-^m?%}EcRk$*yF{@aK($2 z;iVTV1EV)9gM>FLgPu1lgS$5?L%cUDLy0#lLytEr!(wk%hMnH5441rF8D4p_GBEnE zGD!NcGU)lRGPwD$GQ|3@G8Fr;GW7VcGA!|7W!UY*%5c?(mEnyKD+8M^D}$^rD}%W& zD}$deD?^4aD?@`XE5mGGR))>KtPJOTSs9-BvNACGu`-DJu`(F=u`;;&u`B_=AHd4s9>B^F7r@F;5x~kYF@Tj}MF1;KD??rgD?>{NE5qCn zR)#GhtPJNuSQ(y%urmA)VPy~xWo0l5Wo7UTWo1YXWo4)iWo4Ka%F3`Vl$GIRC@aI` zP*#Tjp{xv2VXO=mVXO>(VXO@4VXO>wVXO=@!dMwLg|RZ64P#|^8OF-M63)t?7|zOI z8_voQ9L~y+6VA%e9L~xxH=LDWdpIk@rEpe;x8bY|oDr-H@)4{I77?rr{t>JUnGviE z%@M2&^CDOoc1Ex=T#aC5cpbsYz!J&IARWodU>eEF;2+7#kQK?w&>G3gurQL9VRs}e z!}Um3hEI{K3<6QC4C+y=4E9m13}I2M40%zk46RYD40EGc8MZ{RGMtHGWq1?C%D@)Q z%Ag$0%3vSO$`BFF%1{{1%Fq?f%CI<^m0?dbE5p@jR)%-ctPJcitPBbyEGxtISXPFUv8)UaVp$n}$Feer#<4Q!#<4QE#j!HP#j!G!$FVZ>$FVZ3 zh+}0q5XZ`JGme$vV;n03S3E0&Qamezbv!FWa6BtRPCP3^OFS#X+;~=ot?{f3=i*rz zp2f2={Eug45KmxbFi2o!@JL`~NK9a5s7zpGn3TZEuquI-;cx;g!|eoChA#=M3_OXf z462E&3{Hux43UYf426lT4DE@m4D%9M88#=fGTcmLW%v(Llf=qkmBh*rn8eDEk;KZ- zn8eC3Gl`X9a}q1Vr6g8{S4pf4jLEDF0?DilD#@%2Hp#3E0m-Zk>B+1NmC39O-N~#B zbCX#a)+e(v986|qxRT7u@I0B7;a4&%15XMogJKFRgLw)ogI5YGLqZBGLwO1-LuU#r z!@Lw$hAk(&_jg{e78Y=^TIxB-}IxB-kIxB-;Ix9nJIx9nYIx9m@IxEAXbXJC~ z>8uQ=(^(lFrL!{pNM~i>&tPRx&0uA)$zWv&%3x*4%wT1x&tPSkmch!fA%m6Sa0V;G z?F?21hD=rl*-Taj+e}u5uuN8l+)P%6-b_}8WtprD`!ZP>?q{+x{LW-$5YJ*|FwA0Q z@Xlgo$jxG9n3l!LusMsB;ZhbW!KWtf%2%CJ3$mEl4TE5pkiRtA<_ zRtDKzRtEE2RtEoER)(xxR)(frR)$5ntPERnSs8BSvNHV4Wo6*aV`b3HV`Xs5V`WIn zV`ZqyV`Z3<$I7rPkCowS9xKC#JXQvgd{zddd{%~ld{%~xd{%~@b|EW6MF6Y*cGudL>I9#R1~o?Oe|t$ z*igjEaJGn*;ZqSS179&KgK9A=gH16jLr5_zLuoN9!;E59hRwyS4Cjhj8D12#GH{o$ zGN_lZGB}m6GDMfKGE|nZGE6C9W!O-{%5bHGmElbZD+6CCD}!b!D}!e#D??H#D??=| zE5r0sR)#gDtPGb*Ss7lGvNHTBWo6(kV`Y#mV`b1OV`XqGV`cCwV`Vs4%F4jNz{tSF zz|6qHz{| zV9sE{V98*`V9j8|V9Q{~V9(&d;K<;_;LPB{;L6~};LhN|;K|^{;LYH};LG60;Li}i z5Xcb35X=z55Xun75Y7<65Xlh55X}(75X%t95YLdnkjRk4kj#+6kjjw8kj{|7kjaq6 zkj;?8kjs$Akk3%SP{>fkP|Q%mP|8roP|i@nP{~lmP|Z-oP|HxqP|wi7(8$ol(9F=n z(8|!p(9Y1o(8dI>|@x^aDd?;!y$&l3`ZD_G8|(#&TxX^B*Q6&(+p=A&N7^1 zIL~l_;UdE&hRY0B7_Ks0W4O+6gW)E_Er#0+cNp$6++(=U@POeV!y|^r3{M!IGCX5= z&hUcaCBrL**9>nM-ZH#nc+c>G;UmK*hR+ON7``%mWBAVSgW)H`FNWU?e;EEU{A2jf zz`)4J$i&FZ$im3V$i~Rd$ic|T$i>Lb$iv9X$j8XfD8MMlD8wktD8eYpD8?wxD8VSn zD8(qvD8nerD90$zsKBVmsKltusKThqsK%(ysKKbosKuzwsKcnssK=sC z=*Q^K7{D0F7{nON7{VCJ7{(aR7{M6H7{wUP7{eIL7{?gTn829Gn8cXOn8KLKn8ujS zn8BFIn8ldQn8TRMn8%pUSio4wSj1S&Si)G!SjJe+SixAySjAY)Si@M$SjSk;*udDx z*u>b(*uvP#*v8n-*umJz*u~h**u&V%*vHtI?F7?(0GV_eR-f^j9|D#q1}YZ%uuu47!!xPfsa<0i(< zj9VDDGHzqs&bWhdC*v;0-Hdw}_cHEd+|PJ`@gU0$97>_a@V?54yg7GBdDaO-` zXBf{io?|@Ec!BXE<0Zz+j8_=1GG1f6&Ul0ICgUx}+l+S@?=s$FywCW6@gd_Q#>b3L z7@smeV|>o|g7GEeE5_H1Zy4V)zGHmP_<`{w<0r1-;944 z|1$n#{Lje1#K^?N#LUFP#LC3R#LmRQ#L2|P#LdLR#LL9T#LpzaB*-MhB+MkjB+4Yl zB+ewkB*`SjB+VqlB+DenB+sP4q{yViq|Btkq{^hmq|T(lq{*bkq|Kzmq|2noq|ao) zWXNR1WXxp3WXfd5WX@#4WXWX3WX)v5WXoj7WY6Tll%)!jb%*D*j%)`vf%*V{nEWj+tEW|9# zEW#|xEXFL(EWs?vEX6F%EW<3zEXOR*tiY_uti-I$tir6ytj4U)tii0wti`O&ti!C! ztjDa+Y`|>DY{YELY{G2HY{qQPY{6{FY{hKNY{P8JY{zWR?7-~E?8NNM?85BI?8fZQ z?7{5G?8WTO?8EHK?8ofS9KamN9K;;V9KsyR9L5~Z9KjsP9K{^X9K#&T9LF5boWPvO zoWz{WoWh*SoW`8aoWY#QoW-2YoWq>UoX4EcT)+``<-+{WC_+`-(*+{N6@+{4_<+{fI{Jb`&4^CafU%u|@B zGEZZk&OC#8Ci5)j+01j8=Q7V@p3l61c_H&6=EclQn3pmyV_wd@f_WwLD(2P9YnazE zuVY@%yn%Tm^Csra%v+eZGH+wv&b)(pC-W}m-OPKK_cHHe-p_o1`5^Nl=EKZKn2$0a zV?NG&g83x#DdyA6XPD12pJP7He1Z8Q^CjlX%vYGNGGAl9&U}OUCi5-k+st>E?=s(G zzR&!C`62To=EuxWn4dB~V}8#3g83!$E9TeCZhB};>_a0 z;>zO2;?Cm1;>qI0;?3g2;>+U4;?EMm637z763i0963P#rlE{+8lFX9AlFE|ClFpLBlF5?AlFgFClFO3ElFw4WQpi%oQp{4qQp!@sQqEGr zQpr-qQq5AsQp-}uQqR)B(#X=p(#+Dr(#q1t($3Ps(#g`r(#_Jt(#z7v($6x1Wg^QY zmdPwrSf;W}W0}q}gJmYmESA|Ub6DoG%ww6)vVdhF%OaM=EK69HvMgg+&a#4KCCe(7 z)hugR*0QW)S|@!_a)9L^%ORG- zEJs+5vK(VM&T@j~B+Dt5(=2CL&a#|iInQ!|G_ys=}(us>Z6$ zs==zss>Q0!s>7iC&YQSp9YQ$>HYQk#DYQ}2LYQbvBYQ<{JYQt*FYR78N>cHyA z>cr~I>cZ;E>c;BM>cQ&C>c#5K>ci^G>c{HO8o(OJ8pImR8p0aN8payV8o?UL8pRsT z8p9gP8pj&Xn!uXKn#7vSn!=jOn#P*Wn!%dMn#G#Un!}pQn#Y>YTEJS!TEtq+TEbe& zTE<$=TESY$TE$w;TEkk)TE|+?+Q8b#+Qiz-+QQn(+Q!<>+QHh%+Qr(<+QZt*+Q-_@ zI)QZ}>m=66tW#L0vQA^2&N_p2ChIKL*{pL|=d#XYozJ>}bs_5_*2Sz#SeLRcV_nX= zf^{Y9D%RDkYgpH^u47%#x`A~g>n7ICtXo*OvTkGD&botjC+jZO-K=|9_pm}C9tXEjCvR-4o&U%CO zChINM+pKq3@3P)wz0dl9^&#sc*2k<*Sf8>!V|~v0g7qcqE7sSnZ&=^5zGHpQ`hoQ$ z>nGOFtY28avVLRz&iaG(C+jcP->iRF|FZsL{m;t4#>mFR#>~dT#>&RV#?HpU#>vLT z#?8jV#>>XX#?L0eCdeklCd?+nCdwwpCe9|oCdnqnCe0?pCd($rCeNn8rpTtmrp%_o zrpl(qrp~6prpczorp>0qrpu7X3A#9X3l28X31v7X3b{9X3J*B zX3yrp=E&y6=FH~8=E~;A=FaB9=E>&8=FR5A=F8^C=Fb+u7RVOF7R(mH7RnaJ7S0yI z7ReUH7R?sJ7RwgL7SEQzmdKXGmduvImdcjKmd=*JmdTdImd%#KmdlpMmd{qeR>)Sw zR?JqyR?1e!R?b$zR>@YyR?Sw!R?Ak$R?pVJ*2vbx*38zz*2>n#*3Qh&c@Ep z&cV*f&c)8n&cn{j&d1KrF2F9xF2pX(F2XL#F2*j-F2OFzF2yd*F2gR%F2^p5;R9>gBZ9>N~V z9>yNd9>E^T9>pHb9>X5X9>*Tfp1_{Sp2VKap2D8Wp2nWep242Up2eQcp2MEYp2wcg zUcg?+Uc_F^Ucz3=UdCR|Ucp|;Ud3L`Uc+9?UdLX~-oW0--o)O_-ooC>-p1a}-of6< z-o@U{-oxI@-pAh0K7oBA`y}?s>{HmMvQJ~5&OU>ECi^V*+3a)J=d#aZpU=L4eIffI z_QmW=*q5>|V_(j`f_)|XD)!avYuMMauVY`&zJYxs`zH3y>|5BkvTtMG&c1_vC;Kk; z-RyhV_pDfZLsXV}lOpJPAIeu4cW`z7|v z>{r;YvR`Ar&VGaaCi^Y++w6DP@3P-xzt8@F{UQ4!_Q&i`*q^dLV}H*6g8e1?EB4py zZ`j|mzhi&T{(=1?`zQ9#>|fZwvVUX$&i;e_C;Kn<-|T`Va#E|Vaj2~Va{Q} zVaZ{|Va;K~Vas91Vb9^f;mF~{;mqN};mYC0;m+Z~;mP5};mzU0;mhI2;m;Ak5y%n5 z5zG<75y}z95zZ085y=t75zP_95z7(B5zmppk;sw6k<5|8k;;+Ak#NTIHqz;$03fx97i~gavbA0&T)d{B*!U^(;R0w&T^dNIL~o` z<08i;j>{ZZIIePBj?WxlIKFaxnbf{Nwn~!NAGL z$;8Rb$->FX$;Qdf$-&9V$;HXd$-~LZ$;ZjhDZnYnDa0wvDZ(krDaI+zDZwepDa9$x zDZ?qtDaR?#slchosl=(wslutssm7_!sllnqsl}JX~Aj9X~k*HX~SvDX~${L>A>m8>BQ;G>B8yC>Bi~K>A~sA>BZ^I>BH&E>Bs5M z8NeCH8N?aP8NwOL8O9mT8NnIJ8O0gR8N(UN8OIsVnZTLInZ%jQnZlXMnZ}vUnZcRK znZ=pSnZudOna7#WS-@GyS;Se)S;AS$S;kq;S;1M!S;bk+S;JY&S;tw=*}&Pz*~Hn* z*}~b%*~Zz<*}>V#*~Qt-*~8h(*~i(>Ie~K`=OoU_oKrZba!%u%&N+i~Cg&{9*_?AY z=W@>DoX@#{b0Oy<&c&QdIG1uR<6O?Uf^#M3D$doMYdF_(uH#(Kxq)*d=O)h0oLe}z za&F_?&bfngC+9BC-JE+k_j2yz+|PM{^C0IT&cmEXIFE83<2=rJg7YNjDbCZJXE@Jt zp5r{vd4cmH=Oxa|oL4xna$e)S&Uu6LCg&~A+njee?{ePbywCZ7^C9OW&c~cjIG=Jp z<9yEfg7YQkE6&%PZ#ds_zTdS#mU9R#m&XT#mmLV#m^6Wyxj5WzA*7Wy@v9WzXfn<;dm4<;>;6<;vy8<<8~7<;ms6<;~^8 z<;&&A<tz)yvh#)z3A7Ya-VquE|_exTbPV_db%5(2*CDRMTt~Q$avkG3&UJ$8B-bgf z(_Ck`&T^gOI?r{1>mt`BuFG6kxUOOEw0;Kcew6y-Q&8?^?>Uk*CVdS zTu->3ay{dE&h>)pCD$vi*IaM7-g3R;de8NN>m%1EuFqUwxW00Ij&BD#f&Bo2n&B4vd&Be{l&BM*h&Bx8pEx;|vEyOL%Ey69z zEygX*Ex|3xEyXR(EyFF#Eypd-t-!6wt;DU&t-`I!t;Vg+t--Cyt;Ma)t;4O$t;em; zZNP2FZNzQNZNhEJZN_cRZNY8HZN+WPZNqKLZO3iT?ZEBG?ZoZO?ZWNK?Z)lS?ZNHI z?ZxfQ?ZfTM?Z@rU9l#yP9mE~X9l{;T9mXBb9l;&R9mO5Z9m5^V9mgHdoxq*Qoy48Y zox+{UoyMKcoxz>SoyDEaox`2WoyVQeUBF$)UBq3?UBX?;UB+F`UBO++UBz9^UBg|= zUB_L|-N4<*-NfC@-NN0<-NxO{-ND_--NoI_-NW6>-N)U}J%M{7_ayGg+*7!xa!=!) z&OL*BCig7v+1zuu=W@^Ep3l92dm;BC?#0|oxR-J-<6h3af_o+RD(=t zlgN|AlgyLClgg9Elg^XDlgX3Clg*RElgpFGlh0GYQ^-@qQ_NGsQ_54uQ_fStQ^`}s zQ_WMuQ_EAwQ_s`D)5z1r)6CPt)5_Dv)6Ubu)5+7t)6LVv)63Jx)6X-3XCluep2<8@ zc&749 z*7B_5SydwBNp?Bm(bbAaa{&mo?}JV$tr z@*Lwi&U1q2B+n_H(>!N*&hnh&InQ%}=OWJ~p36K}c&_qXgXbsDFP`5#e|Y}#{Nwr0!@$eP%f!pf%fidb%f`#j%fZXZ%f-vh%frjd%g4*l zE5IwrE5s|zE5a+vE5<9%E5R$tE5$3#E5j?xE5|F(tH7(stHi6!tHP_wtH!I&tHGFYsPENYr$*DYsG8LYr|{HYsYKP>%i;C>%{BK z>%!~G>&ENO>%r^E>&5HM>%;5I>&NTQ8^9aL8^jyT8^RmP8^#;X8^IgN8^s&V8^asR z8^;^Zo4}jMo5Y*Uo5GvQo5q{Yo57pOo5h>Wo5P#So5!2aTfke$Tf|$;Tf$q)TgF?? zTftk&Tg6+=Tf+r!(-+sE6_JArp1 z?k^-olbV+jpPQMNn^+N_mY7_U4>toO4bz&M5^wC{9A5%45!nDF z6^7L_HIWR|7Ir=%8?WFYHLNlhwEkIyeHDJU&L6)z~sh)>Q*%q@s7PAy0* zN-Tl<804~)qQvreh^LDozChNUR+N~V3XzS6gjRe(esN|=W`15Vvbyx-y!hgb#1urx zfy_=XD20l~XC&sN#i!-uC!#nGNkL{_iJ=*akqFJ1c_n5h$a0x^C8Yngc|nMJ9|DAwjB=BCD{r{=|{q~@fe21kB!a!x5Yh6_tmiz?$& z%Tn`D^cJKRrR5jpCgvrl#^>heWuirNL1tcFYD#==YHof}C9;zXit^Ko5_98|GV>CP zD&wO}3=EK^A+|w7IzK53&Bge_zBn~8Hz&2YI6k>FDK$5-Aif~A2wMt+#7}%;Nq%l- za(r@rDJT%*^9xWy4yq_AF()S<#othg)QW#qlLYnTdJnIjJaNi>VyNG-!xI11~4B5;ag!rAtzai&JxQ648<$s-m*Y)N)YJ z$7klHq*lN^?&lKZ@96>w5O7j2NKDR-Pc1e!Ohl-0_i=?3G8m!j2a-ZA7?N@_5wVLQ z3(kv>^oweGW?pd#C>y23Cl(bYRw9B5Yy{X%MX6<}pa?F?FOSbJLM~k(YEbeNs_D@9 zLMgOUDoPNAHrNCls*H&;%M`n+(&EH)L=g+ICNnp+C?1^0(e!{)P)=e=Y6`5NEY2@2 zN=9f82=H-@Pb{r~#sxITzzqRQC+B3Q=9R=3m*f{A+YFN{h)>CcgfyDA{G9wEXwe@J z3hvYtv=SO(LViIdEDglxq?V=TAYuxv09pV;ViDDfwA4Iwzkut2_=3y|40FFoW!E|vQ(6M9wJ$pmyBu(ER7kt#OGw@W`g26uK=lV1#5#T0+l9- zCGk$~L5>y{78ck|0<|%~F@aqgcU;13!4kTN!YLyYsm2344qB>!vuQjegi&oqQGms8 zs64C=Oa&GAprQ*cB~>OTB^RMYLy%LvYp@YG6DO8rCS~SimLO_Xu%vOkA%1BBxky}t&k_s*8(2WPllqD8rf--G#210;@}l_6JaE!N)YuSZxZ25J*@8;+5&$NgnTuS0f<#MmaxhEJAg6e&t!=P4 zsI?7k#$f~_xX})2iz9m7PnTA@Ks@#(20@lanw`zok9OW+y3xHKsq zBgdrY#1|K27L}oBg7@SQEhdmnaN+p00;K*OsuXJ9FUSe0CkbgqAlroKWkUNW$dVwp zX6B`%2thlCh;9r@2*XNvj23E;6C~pD5_3R_F|h=#ZHGhN2-WVg#GK3&Q06TzO-e~D zK{URDoZ>cb~Kt4N^pQWk~ul4InXo-uG2G-+HXNl@dcR$si5u^xX8;a zF3C(T#te5z^#ct$%xqDRpP5&JBf24S#RWx~sG(MnpHrEhpBJB>mR6ivf?0kS5EXzb1f`Ti|L#rhq+Cif6i3OmpJ-FnJ&n(W*0ke>!4@qrtMq*Jaw3^1M z7Ls1zr8G*mg35skN3{G1ktu?D6IB!PC0s}ewgm0ASJq@b(<9&^EFBc$n6mXDf* zq1r)3U}}6$eqsu^or%)ALQ#U=^nyy_4zGfu)Z|RiU;;|CKs*EOw1Vn+BwVkdgVM#G;~198%zMBTOektWU+A=CCS=FG^1`MhOZuWf+w)Odi%#%FNG0 z4rDCS@ks?Gh#>?dUm_V1UzCnRO=(gpdg%za11cAfk*Z-TQuE5<6H`zc2gp*%`MF7G znGZ#}D8INkDG@R8f#i0O$tn3Ih=DaExwOojlGLL3#JtSn{F0*lf=sNwhpIvw1V%On zWp)8c0y4UbE!1-}i;D7#Ac-TsBtJei1!>R;$pnbH)Rg$5)Phu`DGX#Kpr#e1{=#Nc zUVdJDL4J8^5okc6q&y#+8c0nK9@s(2F|aU($|H?WBiRp{;{XpiV>7u3rPT{FuP8mq z&>%k1s5BFs9%!kJ7=l8w3|e4g*9IPi#5TbO8fSpnU0j}7RfXETgGqskU=)+F44#7A z0vb96wZ7ql??x!PFr-n_9)>i0JO?%TW2yr+@zQeg%Q2gA;4!p<{9;fJ1U12t-2>~l zLP}t03kO*Nq?;WN&YST`=|w2r0TfBh`Vl4#=|7v9Bq0sR2RT6-m7snksC%6R>bax# zgP{7slbBfCM99t1{vsBgm_;_!s*=hAP~DjpZ)ga?MX4x#Mr371@rDLagsuuU!2u36 zWc$lA^HTE5L6emTQQ!F7#GFi=y<4a>#L1veQXmd#3Oe@5aj?!29`rWg(EHPCp^=F=El&A3nXbsmItSQ+^UL8ic%AE z;W6pz?i26r5d<0_19>nWGV_8q#0XO47Y6NLf;)(1nJKCH(5Y?63=1r%Tq8n2!}gE? z8H6mvQ%VfSbRxhQFZDA_GI+72z6fw|`zTyHQos*xQnH--F z&ngHR)D{jxytp)}q$m-wk^wA(beAgjLabiBslQnK^_A|5~@sYL1s>B3Q9IWR{))P za1C)bj1O{mvH+O`%WtS^ajl$zxHAvrVbCH0R89FsDVceo@i}k_k1AJC3F&BJh++$I zP+&s}Uu5NwIfR_Vq*VA!49GbU;oQWcY($3!A`YHf$S=)HDF*e6P%;Rfxd5=<%;Mz4 zq7+a`2OC&MaS76t04{MOToRDQ1&DPOVEaG@;+sW)D}oQPVi*tZNx>={lrjahlA|au zF$bFRkadC!S=3n#kX32<>5w@A6tzW(>5ys|T@*Cf8lRJyo>79-Jq4SCv>Xa~)dRX5 zctjPoGk`})Jjkf{;^f2})KCN`J4hvrRW@2cB2*W1;K&mq`i%YFxgwArh%~6^ z#nhCWSdvwBBm&@7&K^ulrE5+ zQ8VBWxtZ|g0?4xY@kyX*4b5LgnQo|B)Hm=m9w zmsygTn3GwRT7*ptB&UJa3gmz%Gmw^UAX$n<6-wy>4FhNefxP$=W=MW{JgBG1CMOXw_Kr&p^7uS1HO0m_%z=*6V+}T_9PW?@ zjbTGZw6W<=&4UlKAv+5+c!4zVk1horY{Fq+Jo3OkvR3GjJ(hueEUGZOy|DO!6kZr> zB9YAi&8?@S_LpF~bMjNb3%jv79y;^_-W`EW9#j<}b|oNN2pP7*rl%masHC(g2}?Bw za}lULhB8!-Y%pS|9$6Gr<6*N5Bpx3GAC*Mc5+CG_TMm-pu$l^*-A@6}*XAK@e?T!E z6f{`%qOL+l(SthXk1Pcq4n`X14RQ^`W;m!Bh$4NEWA-L_|bjGZQjUhcY$~aw}9fq#nYeuRIk?KNQ^Xh|f-~1Z_1b zEkUg92bl;R`i7@6l$xu;&@jHZGA|jeWOfg7^>uZLgbWbGm!uZuf<`_N3rJw{#h|?y z>G7ze6CMHJc0qnlDQFBOJ_$18nwy`3SUBww0BvT#o4+uxdIZEHmIalh7Q=@%JOW@H z2aK+`r;~4dGUlKPNEqB61z8R0Er9DMcmRMDK-#SZ`Ni>|rLZtpfMh@mDKnGfkym1Y zgkiZBQdVHh0fLl3;}C3Fd`@ODqRZ;(=MEZX1ue8kDP+LnphBxC2ecpv)Le!;#V^Fw z2Na-)MXV4vXI6nnBvI9&jjls>Ng$0{c!EtsZb~})Iy$170qWI4eTgao>V)Kg)?|Tw zh6qNmnaCTVz%!GmdZ7l!7bj;H7b6l9XxJGt@CqMcO-v~RFAat1$D<@ZIX@${2&qT{ zsRfN&r&g3;AH@bK0FS64o1T{+p9-4zMHYkm6_OLdom`~#XCQMR>z`nKKO9S~5DGzK z=Eyd{LIk5FlaT@++y?2!sV;{|b;UWE$)Jsf@R0`ZkO-Koi&E2(Rv`Gg20KQ;vsrOT zB4QmXND90w1iHo=<`b}ZQ7UMG5Y$X~x&TW-gAbIpL0th*(-~AMpelkEQ3d&^!jSd< zQ2)a$^b3oC4CuvUq!`E~GbE=&8k}(RK)OKPJ=FE$$Yz4}9zus-kms2|8gnx9vQtyy z!74xl70HQ+V#zNo-Z-TUywoYaIJE>cLWpE(JZNeIGTQ>q!lj^nKd|vigzfQ(IRzPs zpcMzO1%vS^ncyvGpu~*SpY;m^RX0c)L6f)O4F=$X4&rt6F&>a6*gga-${<_+u$hSw z^0)#XSu=RD12bySb1KMDV5N|D9@-vRxNLD@X(FNdfH2~{C-$j6;4{4?VQtaZFjZeu0ZQmlGsGuk{zBn(j z0CV~h>>!LC2{2LU&VYQ#SP_aP=o1irVeu)csRgjijOea`CBRb$khvn1VKBHPO6>#} z1rKt@m*#@hE%NK>W-c&~}sL5|k!8NCLFp2wDaro1dSK zv1J6L8nHJ4vP2k?`*RRgBeEiBxRTM`1}G;d5ldrQqf%m8mK{4 z1DiMk&sN}&%FV0*?PLURt4A&sk=q|QVg+et1xZCbtb9bWFg-O7w5K;UJ~tDz)&ON> z(l0C?G4}ykca0nva5;!q@kqrNBo-H!WEAC>re`4AT~G?CbkM2%r6kgRFpxJ8T2Zz~K&2oaKsFR}hSe_&lBb{pvB(jEYxV=A1+*<3v9SS? ze^A#t`GrB6;Dn zqV=e7t3b}V1&JjY(7kM^^%|-KXgnD-st6j}K}wB~!A+djgJ&v0-I;iBIgYF`C$R)H zs)Dx43FKz*{s`1P5MW`*76?$!3fY{Z)MC)qWAMrl6mif-SI{{XMXALliHObrpamtM zsR3}shNJ=10m43k1Ji*vuLBlN&jimwKu4z#9^${1=;_E{lhp@|DLiGb<)JkaS1pxw~mBS}C_{-Of3 zeIp2yple2<6((kGfqJPV1DqDX6C0Q|LS>6HO4HI1t4E=hAdSe!gL|xK`jO>9XJsHu zm!uY@=7aYFV$F^y>(HSEJ#yh&l3D>ePb4)rDIc*5(=QCv8Uu+JrKaViCWF!nlAX}j z5QbA>;%JN7A*O*3qJfUEfLmo)3fdW88jwW0vjh6fEPA}0Qjv?Em*SgZ$arjIvrfi?%QD1eWI;gbV* z_(7qD(#(aq5Ry2t=!Zxc;go@|&jfh~=ddJJNn}Hz%hzC;2gJ<;js2kWgHV>0kpWl?LLS*pg9OB z)S$LNB@E-?=X4;O97qY1KOty3kVDexEH}P$eoY0{IXQgX)7pNK_i*D z`FZisd1vG{4%h%l9*2yLLlZc7J|5IeMIYt>YbXJ)T!gH1Kx)>3<-p4p^7C>kG3%Ki zS9eFBc-LUVcmr^0gt5j3p#aC37Z3%hdB|%@pkko$&Unc1J0#1|(QrKaX#OVGi_@yJz7u)Ak4WK<^!ROo{e49p;i z6nIf7xEMkaPf0CF%*+ARsL1&etOc~Z4>r(he379?GenupcHP|Hl*{2`_cP+Q8DFb3lqqa7veeX9+=FUaU&MqmqyTS;*KVs{LT;WTeS)h`kVDaH1&4 zfuBhOmP<~|$;nJFN-W68Oa_%2;4>*u3xD!N@x;Bl_`Vow*Z?3*{y&&I17=;PlpUx zqi6>g4&VbBK_hP9c*c+iZ}vq^SRieX4gVOb3ld9`Gf<-jq#C?>4MQzza=5 zwIFza8&xlCybsjB0-rVoQ;bzvF|Ke0*M3#``S7K7;GoJ(PR3HOM8s#N=j7)@njfH( z3Q(*952}DGCQ#vzG>Zf=F}ENwxdf7du^XKS%c7{0ZxG#}K_}z}4@49>W5Zj7U@35+ zT3DJ0IuHtFqXJa67<7tBW_}UUc~M}Q+=A3}RFgm=@CE}|OotBj&RaWe$o0=)jU0%GqLIt8vvO5vTzhpOlH1W5(2oyo?Q5 zHWTSULWp>NPGw$xZf0Umd>Ue5GFYmxG!b-+WpM_I%ZpOeK=ZH3sqqCliHL3ZU>)e~ zQ?MX7Q-IG^M62i{Kx0}di0$hT)ftJPU3+Nz*CA3lnW#y)xFEj-oF(FuOH1<8(oo!q zI)DW+pfo8Zvn(E*c~RA(x1qtxOA^ze>-(UcE)+e`Tn%aofwsP3l>;9_1a8}7)U}8? zSM=3M5W6AA!$Nzs*fvI^Dg(_?;&Wv|Mq)914-kr0^kx>qVc>{ESvZBFvADD#wFuH( zK=C}}NIc|IMZwx2nI|67|3qCog)9#`MIt8?z9$Nc6lPwpOfE`JLU99F1hl>fi~GQG z@J&p??w*jTHOMeCeAOyK99-KXnGP=hau5q{ASxl1E@%-GveL9P_+l22GFX}culGe= z_Z=MS7Xj+-fac9gP*$J>hx&meU>lTRZ97oKkEpLg{o~NQb z`o)8X*dYB}aEXIr6nOanxQ&3waG`$isY{fpR*>@`aSJm(%rz+3)88*1sSA$~GQw14 zgy`xc)WJLI2qAcL6d?p3fP)Dc#lz3kMF_!5dzg?hrYd7hM;OOrIMz5G!(AqrW|?4` zWrAsz2{yAZ{Ad!7;YX8r_$kTZo__HK8TomTEtW_fO^^igDtM$7X<#YX%JVct?+z?p zo>&0OU*Wip%7#h!fOcAd#!L|%c!-pvuM2qPL}GDqesU(PDF~HAoO1|Yh=Py-nS^a2 z50Z)^Q12a-AwZdlAwC|LR6NoWADn6mit^JSOMGxDK}-~&SOy-20QH%R5nXD88Q>-t zbf5sVKodo4Zen(7d~#_KXcZGUAEL^FigI|dg)p)JVjPNEaL$F!PT-V)Z_7lO1sRt> zYNH`Zfe(`c&x_zX4GODbP+t|>aZpgjpsm~B$tcjAQzB@k7UUdogfyy~;*m#eA&Ni? z8^Hx9tfh=3jFKqgQ;Us2yVOu(7OWdx8CF%`i7B)|1L;o5EH21Ntc2DUuv!7(2;3Fb5nx#?DFP&po+7|vNP!Gb5$F=&NmAIfCW@+JQ2qyHLdXIngy)bY;!9G& z)1VMpPh*$(l+5(ZlEfV7Od7g=kc#xg++0wdi_nvvng?BBfDnW9FVGS?NITeia1esd z69b);h|q*22RnBeBIy?v?-Bv&$$&?~v50~Sc(`yf=$K=$6X0P2TDFo3iu9z^w0zJC zo^tRO3b+>Vv>T$`1s4ZR?7fXjm}7eJm(g-bwl2PAER zNu*M)l7QEpfF%pg@0Xabe9$cU?YS54m zxOj#nA<*Ruj>(0knMJAIpvB6*ptZ{3pk0ox5g`om@ep~?>|p?8u?D(uFnAslDv6>Y z7_#TZEipM2T~i38`HZ3*D&`mjItUYCZCGMaWoBNwA855XSTrRixID4IBQvigC^fkx z+|v(cN=gc-*BcC4hz1kN$;nUl4RCc2C`wJq1f2w33~I2#WeYMA-JqR#{{lnD5Krtf zMmS}R(Pc{Wl0jq0DCU&rC4-u+V8<5}4$3P*c(*7Osva(f zqA?6SUE>Hkfp*^eLzSIGSf$oh&BEB(P&7$A87lrnt5o7#~L0H16MRf~ukuqY(z zp?-BrP0!48&WEqu3j!bii&qlvN$h(4!a%F^LBR%=hs6}cR)o93lK!wuAp${nLZBKP zkXn@H3%Liv(HArx3pWxZ1J(dugN^J~uqcLrBj~7jOi_5SfSm%?>Ipi|A3RS9w=5X6 z=@AhJV6`Ez`9?SB?F7h%V@MLxjOuMj%7BCxn$9p#so@NnK0|2A%u4~Mqu|sMB=sOs z@Wi4I;>=&LpD-j4IoByOFU6@8dP@sTF+>2HA}2`S7gZrh5Y-tF13=;^ZiWc^gHQg% zrU4>@MN1I$0DDw>!J^pA0ZU*prWoWRSiHeKUJO=_Bn(QvE{P?HSb`B<3e|RWS+t~; znU{h?1*S2e!Ffo6K*~N417K?hQC$oZMK#J3bO<-JR6Cphwvvc@R>h!J9uYUmy#kIwcsq z%(4i{2&f2hAcUk=xTogfa5YvRLIp$fz-NfToPi{Y-!K%*aTP$Bc_|p>4@xjWiWhK! zf#g3VQSf~Z*rkx_7f?|F(FDoI7#bkL$Zm!xhoocF@J24zg24wWL3E=!9I5bwD1wF@ zvMSL1K{)}S$-&ejBs)M;N=}fIEWJH~U~WYcMVJ8+bOucaA*%ulpqb|iJ;w-H9ZU>| zQfLu?RGWcpgJ}vz+#v-{8`$J<7!1=&oCTmm331wxiImf@xgZmV6R;YJ%P@39+)DG3 zvAZ241M?knNF$4*xd>T`u%RgKM%Ie%b`&`*R$>^0%>Z|5z-_FSA_^&U@1^lh@uuGfRtpwiUJbT zQ=Rj3b2CdoH5aBV$akOvWl)M5u+AXxCMs9(G7HcqD{wLe%LK!Bzha0X`50NLYeh*a z=rAK3(!Qy=7&4_vAn%~~FBl?*@Pu<>P7cU(iFqkLnZ<|}zjH=vayC-L1(zh2l)}nC z?2-uk!Sd*Ff@uPF6-dT_E~5h%R!~1U!v&B$06M=6Qothl))^rR^)lRu)Wjl)@-$c) zM^c;y+Vu{K5+t!qEMldof?!8_B4r1#c8F*xR$*9Q46M)vH0zxLPn!ra&}0?dHDFaJ z`oIAQ@eI1((WH9NjQ6G+%_IRs@$OVN(qgM%Dm2DBCd^Gz0;ysNptX$RH<9ge0`V z0B#T<8otipJGmUeeH)k5w8YXJq;3yHGCVP}Bp7nuH6$&7%!COd7dp;4nFY@9D|?`7 z3j#nBu!w||2@!y&BT(bOI1S=B+yZ=ysT(*27IF*H|Wr~?aN zQv`2lAj)fyBf#pBO5K({d<*G>8 z0V0fW7#=C)T!f|#(Wr8UoUdL4H!%}aTX0EYdMaE&8j1qYPFPSJ2B(6ToE0Ox2XvYy z)&@a7_@GTlhX)?>NMcB(9^8!x97EVhpELAM;M5d^6t*yd$r|C-Xyk%VBX~nEB&Wdw5oV?_ z0gWih01`z=btHDLz=FXLm)S4{*gb@h#o;HI0_@&G$P(0!-E*KN!g!J&w5kWIz@8kC zRp3ktAX{Kg#U6~PDzN1Qs6{Yium>lyF?ihzGX{IGA{&G1Da5Y#An>_VbUcGTowPzlb%n8AT8jA|dU3`#iRskRC#Q6$mb0F#8}KGb>$p&2Gm zNIz=cET{zco^VBcKw=4Ud%6HL0|@pbx+`GS1-k7hbpdKvAxYuUg;dypZHIXi-5W@z z8M~kaJ+u(Sk|(B_K(dYmiDJEOHqBM%IdwBB5@D8H>Y7 zFlqF#K{ggOe9BUb+%j`=K+)+5J_s{86=~=Iw3iqrjTCfcsYSshMfusOc(frDplVD^ zPxZ}DDTUnghDQpVH{>Upq_c}Bo zqj~~kS_V}b(k%zaK3t*{lxU%Yr76g@6|zJciUfG|TL9!}RA0~m4;2W6wZJM1pG-%QMHyScB7@{OB-cR3f3aKW32H0B zvIeq=5D9#mkSznPmqVJ)a!JieElCB3esF3DQoevnAl6tQuS9`JLUJZ#ZG^l{a5JRjT!LS5t zAqO=IrI14r17#f0-WAk4@d*=0iyqWs4`M!440%QeRRSqzfx-w|F$vLtB7+`{ zXk{owM=Fr zNe0*;sCXKZ?_pBd?1hb8BMgQO#=4|}F1*IfW*||BkKuNM_5_EdR)D8H-93Y0;+e&u zu}R1{J2*u^-G&q>7)p?OX)X{+7w|rG=+HaT$~&kuE;GYG*VyNkAlZ&#EhP59ArF}& zKy^5VG(H1x$${q{P*N4dS5U(t(x4T5SnWngBbA8|17KZUXfR-g8)7`b1#`16>RyyzS`eIBm5SmDWEGy!JG^1OC`v2`hbwYn0T;um7~bT@ zFa|DzQuZO42->uhoSK5!la#}H6RKpG{zfU7fTP-0CqmXwt3jy5$56NXM)BEkSo0yGh%62R@wFi!8X-vsk~+baH8j9+$RY(1c-<0`b{tY*Ls0?=StCRi zsri6nFG3bkJV6w|8V^t&y4{GTgKJ(2t_ABS%~YJmjX#8kdQ*rg}fLR5l)~(h9Dhj@M%FXKa?fr z_$C%0dcUp}smY}!ux%*_?G+{NsU?t>1T>G9A$t-@x)?(osfmdx3GL`QW#%OoRR-sm z7A2=*7ywm+sW}L|*95Z85mOctHkjfesTH7Mw;cH7QzoWgkOsstoC7V$(G2!1hB_1C z6;xdzsTGhu6SxKBUzS<~I(;$|RT1b0QBaFJA9Q9bB1*yIH%Q%NI3KwHaLdd~1g$Cr zT>_7`M#3#KFS9tq5i|mY)K!Iug3UrRC$l&MEDVo)h*F6AG1Wpt1GG;bnyB1zN{cgm z6AKDbp_@U#l_FkA6l1Y!M+y&wJZKCEza8i*(2N1EZUYT#f}M!)F~|zYbSrX@fkYwM z4qUc_^-+-{B-C1{Gt@J`qB+549!-sU_uo|ayF_2YAp&g3)Vt_^D*_Ozy=TC zYLJG3VPddx05~7h9Qbk|xEd_xAZEc}s*u)|x#g#$jS;xzr~4#UrWPR&mAd7p!^R*$ zOt|Zz z7_|Hew(SkJd<~%)spW!260g0;v(#Ah;BHtTxEvn)(EXR28Unuw2zmn$tmFXA_eACA z=b}0gHf|5Y-xu844kG*}j& z@n8i6&BvA$pngLNS1=QFc&vXIYzrD@IAK+knhI&XK{7s~U*%R*T3k|^3$NxOTv$Ep zo|*@4HA41=BUi@msd*5iU?V690YqT9r{;m%ktkD-a6!12K_bxV5ZYizxDO%+%N$6S zA^97roN`ai!#UaLo|*@03nESCxu@o#bSjZ22EiLMOEM7sB9H*qDM63~WYQ0Pf)62s zG`oi+h#Uf-J}F{3gL`ToQ~LI_0|kpSIO^B`pm_(*=xs6I#p z%Pby9xH2~>KL<5@p{Wv05WRzoAX z_(~FA@QozUjO-4*rvxI1MKN@lG%k5)C_tpq%tVnxHo63|m&LIpKQ}YkIlmNit|BBC z!PmvRr@|GL6lH>rPJ_e{iYRgpgGvOKCKctEmSpCog3>tLK^U^3d6}Sf3q&cxbQDxK zy75q9EY5<;IDyWS!Dc72JWlKIXe`FmgnnuWC`3UcVUY4Ktqi$rDFOH5ATpU~GT?JA zQd1z3DEYU<5h@2wYDmEW9$JI718|9>gp*T#eoks)9&}&{sr?5UZGp&T#>4tLATjX% zL`0*=%mj}lJ}FdJpqg5mX=Z}hynwJ3vOfjWRH!%>BT*NB!cBq-qi6u_q(a#@<(>+f zrbXR41rmdA9YF*zxYq_=3x|^55W?^PgZEZZOhS?-Yye_~Ep{`I(O$TN0$S(^p31@k3L^!15(DH0&~()|W6nFc}PO zpeZ8o*ckGV6VwezawzRX(2)q>t#@FJXel3LBU~fOPz#c&uwfb;mLjCF+Y6J&VKqV; zLp!Yh18I1G+zC%y$T=LTPlQz^dN9I_g&USuhLUZO%!4bzVIPt_PFwH~*0`sZxI>QR z2c2e?S^}CUfggT=T@s~$_eji3$w69)yT=Oc+D=Si?IyiKlvsWKvq#ArBvkPj46*AWxk29^A*7JW5|OCCBBITxJ`x2 zpqmFeHzqL$Ioy$Vv><6i$>hG7dAW&*fw2+@ABz&W0mx+tL^YBWK8?s}4^1Ol(E%Ro z3rVeT%_~Ezl#pa_=y6ZYL(7~nJ?^P_I81X-&BI|DxWGa66m$p$b*3GM!KjLG*Z~hd zPl5_c38}#04!9NA^g{->QKA*(N0=~jss@c&Kqnj!Mxyl9v8q7IH`wJ-LKvG8P;rS; zC?YF@_R|q%9u`SlHbA@VSoK2XFtsAJAh5Pb&`cww9IplNa7Jszfc=PMGF%;UHp8O` z(^BX%4{%uvHw`^af=$G(5zk&jPxqmY~UImZ7zpFy)bZ$xzvnB6PQ)oPLX1)1l05 zRF?)! zytI6@&N-;t4qcH5RRrn+qjat?m4M74paha*2q;3C;R5F+s8b;OH6VNG;IqmgKc>Qu zNd_yyGypUiRSEI}7Jq`}JX4&&JK=H4V+kWre-K+g1|?I0*JoiIy%z+^$e09w>RPyunqfK{O;a7ZA)>;r`tPP?!M0Zb zaXArj=$v~hvbRbz@i-DBiQFCmyAmT1 zS`w040gqUe)PyF15_KqYD5(rx2B$V?lLEavfUF)W3kfR%`A!zM2s2ZHn0&*s@BsLcyFp+@Km@5-3p!m4jSPf)a*M8APdyl4PN> z@NF9i`;pToR25o#9V!ZHd|`77NE|t$V9JpK7%qfOKe!^qDS^dgY#u|;fuVWDndy0{ zDNdCospuUpWI5D173khf@Sp>vt%Nq(gQ)z%(&33ki1p~I(4!Jb6-u2B^&MC{`oJxU97;k(mqCq4B)fc& zGbyqzAG85o6gl)PH-;cm1M->_`hFcq@OJn$eec-j^vfb&56P~qnhqqQBeNTO?ouQh}8gixj7 zOCnH(eG?1N(oCLjVgXuJ1`KF=~fAFCagsGCe;p zxFoZn0Bway9$LQ+)d{deJrPYQP;UzymZ%D$l`C>a%7cqxRf?QVU`o*g3Tgr<5n(k0 zId{O!Ko41{8Q=tl)ew{d5@rf&*yiLXCFVHhfUaCj1l4Fsh)W6F(dAO`$RXV~fT1rF zkG^6&a;5kjQ;N^jQY2&H=@}Z+a6Y1j@J!Fi&j+;*z+LEReA>==0at<{3xii;AA zkn9iXH6dFEifY81qh~RQ4_({>vmVKOuqW1&$4Kf}kf7NM9Ji_2v3|4?_ zHu6w5TqCj|axg;&b>QmY#U6?x@USmJ4d`rPB&P?L7Jv%!)D+}-NY7%>U@Jlo+WDHE z#n4eDWP6}OxDy#x1xPM|S81?uCAj?vA!!?04kBp-tsa4-euRI( zD_C6f%8(8U01JW7n1HP^L=u7Z-M~U9^6`>lFX7y7toFCxrv}zQQyP@r0@kPf($Xj zosgfHf}X!Xs=!I0Aip>jq8xTw2{tJthvp|j4n#s|gza0#qA?9wV{$flC;@5Hs!u-p z!PUq)23Hvg634dA)i*I4S{3`{=V6qI2wALBNX0dhZiMqe+OeyFM-Q43m^C=ffGI#R z04Wh8xdWFHtVW;|3P^^aIs}(06su4a!7RgL4onG>Aq9{e2`w&s6QO)$L!d(7B}eG$ zz=DV@i*q5eZ(;#b&>>7g5=1ctNgQkiRvlm&6m5_q1mY#cEEtX@(8$6_0|vf{1<-Ic zazS3ILh07q!xu_6s0DnAZ;r5O~kGOan&@WZ4Nzm2bN>N2j@e@oGMWc5=K#v6fj^d zkfH=W)_^<->6==d;RJGBNd{8Q4iW`5=~GgX1v8;1Nq{_;nU@Z86`C+o?nK@~0U5JH za#?9k2_(p2jR%w@1d)O@6tGDl*;ATR0*(jFh5{CiNDT#$Y$m8J1Zge6JOojEv1)zJ;b5e_o!3#$bwHc}-V5Y$o6H*5@47-0|MuC-} z1|k;EVevimd{%Inp;QepCqos$&i8=(8zzo%*e)Iwxa~)3++pa4`4K$?U@m~kV~HGe zC9n_&2N!0r<5EsoCD=eh4g@R05=rRRVhJWliy|i#w0#tNT!A_th;)uPnim|LFiE&g z@ViLC(%_{yX=$lNXf}tWR)B}L43V>LCPEa=F9->ED*%*=kc4q*fOQ36u7TK!p1I)$ z!3WUM)FU?3BSA-d3k1%8888{U88)JE#u;HISR>2?SA>~hk1!LQ z5oUrl!c1^QmGr<{QNLPiUBoyQ;!%-!$Mwkh%2t%xAK{Ewck!XT7!c1^Qm zGr=8U$SqTN9Ts2+zt$VYogi_nWp02G4h=?#$y8L65I2ish-0?_anm@e2BaIuQ6)fw z>)7gU(8glS8XY8xw3r8G6zX^;vM3hCpzX()CWAz=D@N{5LF*~-)-|kVAPuX+oPoA= z872%KSVKM&6GZ~~0!b7JM%8DXPS(Jrt7}8k$2{#ydp(%z&EPjS-MCsu{ zLl65j1k7023Q}xA1CzrRIxsnm07_0QE`fGcQQN{`iJVN(@hq?dNw6q@EX*uT0?kEY zN`nUNAtPh(;dkVgG{_2&5^!YWRDm?v2APV1Ey^oKTGRs$ACP&dn@1H3r!S} zw~!=)OY(~n(^D~ZKqc^L0v)IXI)4M78sF4h?9!0P$6_x;0! zb;P=`*b~%f!X9a$AkG9FDa z#D_?wLn^jg>-#2^1SLacDqZWsjl(=`uo8aU>@} z5(@G$77&pD)Uz$1f~7_2si50Jk;j!GQlWVTSS3O8MX-)9c=8Aq;{kplMVX0t={c#z zNFjkFisapZ#A48*81NV(A`k)+OOi9-6*;`Sj4BN4d#s9SzIx?S!$l?55#X;1KoFNz@uIq=9ZrW_7o z#4<#XrI2|hgjtyOAOZ}<3WP8skAe(@iz99uLls6<9$b=|mz@Oh0w5WL2{}37CArAy6S7$X zG+Tt^UhoDANcMEjNz5&PMI1yik_2+-B5A@QjBrQ+_=sWf={0b(3&33TrPl#Psl};z zkkJO0(!?Clf>MM_ktDrSD^n3yV+Ryv=4O^;mZgF(@XpLjcgn9oidmR!P-<~WVo?dW z$b~rsn;epjP;;R=ktOnrGD|Y6QlXs?r1{N&qD-h9q?H6NbV0p)*!@S)?gGlOGcYmm zND4gp7keTn6v)C?NGlFW3G$Ew4r7ppNT4c^54S-c)W#}}G^C479%;-Pt2BP?o+e0j z3B-%Yjsx`skb)h2Vl1kBDFOXh!Ux#^)IJFo4-^w}0;Cgy?nv}LBXW8K`vP47W-y_t zzzk<}1%!;i64t0jVDl=v3e51vRDskCfJ7;(60Bj4ri8Flu!lROR|z{q)daba00%p| zJcd)z6d+cTLDL4hJca@AyoqT!k`x|o7*-;*VdiAG9K2$Jgg8PRBjq8akcw_JUBxCy zn<=3_hwB5yA9{KR)#9*&y1_RZpfq*8_7_+dw^p1!L(I2fxD%(};Oin#wIJ3%powEoLPp39c9dW>Li8)q z#c}xqzH$N0YCK8E2zL?!N#P7?uq2LCxlfusNo1R0T32da?{1p!Gw4wZo|8bK046uCjEX{kl2dC95ZyAP2@QiD=+QWJ|)!NZWgr6s8q z;1eF52Ip?5M z6nW&6WH6+VrmE59GQpFC*yg(lsU&EqNg8ApmUzQ4br80sGzn4`AWzj}ce)8eDL!LK za5TD7e8%FAIrvguqcm`2V1@!Edhxjlwr#_Rl$gS;i8!l>h%ST`Fva+chN;05N-!n( zjKL#^Qmmq8yJ8e=g{7&*C9tjF&_)zu!a69m81q&*R6*ooqBs?L%M-jjf{UOi%dCQK z{x9}*4R%B*&d(`JMJj=imJ1>;X9!9yF3rU`cZ@?8QA&aLxWXpFAoUrnWQ4i|RS;40 zpo*g!0lJk7en<;MA*d=rcpD)GttjCxLdYN;WrPrf^%5Z>0f{9gsYQ9{=0b%r48V5a zH^d+$8AN9YT?#gkf*}rT*`iCJIu>CEd^`)hJs2Kz$(hB)`98RY>C(=o)a?f!s+!(}Gw%hAx3Kc;V>-)mccRSZGEe5)PUUq+t~_ zEwI)jx-ic8fNyI-*MZxPQXJ`|Gzq6Ih)e#^tSL>xV-Jo1LtX@mZXB*4Lm3@I*MuX` zN|BoS7+P?on9^dL{y|$lh-xCzGD1uV>~=xhn6UByC5b@gaK#5y8g=PmaB2={;XmSf zA86kR>4G1K66g{G@Oro4)Dq-!7iCOg7J=6G zK~4xYa)EmrO&rI z#IOrEQDl(nape2uAU2?^vw#Ts7Z@Vx2OrwyUtokOWQ;BZIk_Ab7GRAKA*6~MA`01u z0Y1$fv?(2N0z)van;n8P)AJH@u$(IfkqFC1J(CV53fF)LOKnuHI>sZj_GI47|xvVr8v<4?6Gbb}I9qF=f@WEEji3OnJ z77;#ytRDoe0s>7hdxDcnGSb2y*b2hToE(q>42`9E$&f=}OJG}KU^9#+-H^n*^whi(Xqk;D z0YV_-C!oY(?BWK?1R<%##i=z*CIY2`T&PU{ExDb-_LASMl&VT?fWJT7B;|dqB8Ax)-3(H|$P(wts3?YPQkio>D zU3Y9l9XORB^&HXE;2QxTs1%Q}hyf5pUm4vzgc_^{p$~arGYDM`R)b(&a%={`bQ=(plyGIBc|UYzpyj^ETfE_l zArh!9M>I*4Z7a}gl@R8;=9R&h597LF33kq}kqc5w3Sk6zXD*5yxb8_zPem%JD!{6Y zVGTu?k;psz5MsEkF-CR*9&0dcHgQ2}--0h_N>2rC8OSUFpQ!`C9}PnarHF*rUx*ti zz#2fu|CXc{p==&UkwA=VpbKL+A2uw3tQt9e3`|;zxHXR2bc%P+^oHf{UTL z7cPvF1fZhmDIU~xhHm0V1SFCmvKe4u@M3c`rC>1>MfcB92STqjCG#A^qNN_0EG+bJ=E0=AhFLjuwmzz_~d zL@vCrNF&N4)c8X#zwl^7DXl<3fY66BaszER!)0M3eHh}n?Se0?z|ey<+<-0z8;QaY z$88UMBnm?hraj<!5qAh8$|Tt4J=mT{$U+Z9R~kMx z2vY#*4TH{ngxQ5|1VjZm2jNlzy*3Rt%!^?OOdiGYdBw<^Ghs?Fy@E2%12!6T)GMqx z1zpnv-%0@I!`kmK0a!@}=Oa4La3KsmNDJv;ieM!boR7RS07($;5hO8e#+jKQy3cT> zm~MlYc5pRV41+JRg((89B*HWcB#PlYkRVngu{jWVh5%s~dhnstEKp_e1^aM5nlAWB zgfIn2yP)7g7W4qt{3(}c3}6-f|1B*2U6F#-)Nim4QfI&`-opJ)fO7CoZCOXV@m z0>uf2oghIh-USO|QH;oQ2+Pr(h%KVv%i^Kh5bGUb0%$o3`RqZs5;U7o&Kra&Ld#L0 z73mm30TM*_97qf^Ai$!SO0k%T?lvqDh3NCc9199&OtV0u7^fTo5K`f<|xEkOt>0Mm&2Eo!_;8QQJ}@(=$-?KVKWX($%1_R zAlw>s|6qwI#Hb5Q7buu9A_{deII>bK?gN>CQ8t@kDf*DccMwKmMiiF0A*gal6^oGo z5UaH@Jc5uy4{U@Crk9Z9(6vDp#UfT6LtO?HhPUa_g)tlk)qu2e7F7$TK+WAy!?Z7=^UkxQw|N(W8Z$ z2gOo@2Sr~Lz5O_fl(#nI-yj<8_Bydl`MUc~XF1DLRz`DUZgfTO5ZejssG6y1s zm?;Enf_7U`ul@)v0No>pLsxMsbPXNMop1q&1|-MAWr9l*)8Ut7hZaL;h@s{nN}Mp4 z0LM_b%sj+o9azLYwIsL{d`BYExddPt&%DeMcxXdJilItTg+Z4RL5x83Lcr=l>$X9w zzWqx}3QA$tpz4Jw0k7!BYC2TVF*!N47|nceAVcLbq>570GeMR^Vd1`sr$ z!%#&L;fyAMc1IcX`YdpQgT@ei6(3X%W6}{Sj=X9IDulcq3o3-Xdm&~%v;(XZt2#7AQ z`@t&$A!n^%)$f{;p6Zs9n2t{g@Ld z9tH3L#Z2T;IHceJk1ybpLu64z7^AM_!ec!VUVypI`y?y$xSvN~ww5>y9CNCcHZ z(<5PZczlZNJZJ(YXr2#|<`Gl|4L8EUf-A{FTn~|jjV3|FzWULh8im|&KzK$7H zF)o)EV~$r7>84gal|M51`QNbaO6*<``A#GV@u^Iqg-gp zvHJ*nd?GK=K`{nfd?Me3fvOn0m005w<$4TMQ?SRUiC+@75C91ywUUv_1rtB`NH((h zAYoh@u)5U54_8rQ;s;+pk7`3{5-uAMtLM>m;7C&@eu(ZTnik~2DKse@9x27?6YOD& ze3c@K4X~{rsDd~=jW{O@RXNt^M84GoO*z)o1s`%mQH&#RnIM*qqAJJg6kK&5@`w+L zG1&7KmR<$8-a;Hpfno^GSjCnVk?%M`F$H^7iMaU$RWYu#hofjUDNVv27dTRPDb93M znuH^><4E)`16a?AZh= ziP3~cwi0WoLz?_pTmzB7s>jn1HWh;GK2JlW4NPbf*m8)cAxcLcDeycIcjKU%gFL2< zE`!|)lo=xwE%13aG*Rq9=xKztIsggd(g2@3L$v^>A3$e6VTlJ%kT?!I;O8%)Sb=;T z5}E|oKr+S|4~S_cRC93p0ck1-T?f)U1B#Rh*2=@v1Z89iIdQ_r;dEdyv;aCii5u&k&gwF1)5 zg7)jNB|?0q0d#B-n>MHv_T=k>wG-@Ph_nS1*+V{t@T<(wg>jjWeAXDM9+aDRP^Ca) z@z@JlA48BF)*=xig`*~fN@CZDwdd$#gewrRcM^S!P)1#ml9~@_K>!Y$aR&l;o*#!U zP#9pZcYUz-ntY6L`2~9i$;TL{UqEx_*j)vZ!R08BgK_8rN#W22pRPtp9mrR#ph;jW zTYXG$`UN!EjNMfr8C;G6IT(j7kQ5GWklc$UgF;8%u$u_Yyx6osrLgBa(B=g!nn1$X z!U*YNJLC`r31d}`y;1`0o5iXeG2@P6I?`M?ia6|iUZg{RP~;)o9= za4t5)(eW=f#4)T=Y>0HZC9>;^4RN%&i*XGW6&vBQ1J@u;u@Npia1CG-8{@JA*T6xs zF)llh5C28+Ij(M1F|H0&u?bE)F#8qI<~+2OjS~A#IjMOVBU zhCn1BSrjdSfbsx}Wgr36R1Qk_s7f%}U;*e^03?8B3MBEO=VxfLMcw2BaW7N~Ws46) z266+9A<{)NsNzVsx}ZoPU9W;Fj!OeZ7(#7E-VcakQZagLKs6NOu)zq2AB>PM%R#om z2!|g)_YEUvRKc|~#A+iPegNGEj9mi`KY%Xy#j3#=haW&U_F~t7!w;arLhKrF_yKf9 zE_Mw#`~Vu%!>YjqhaW(f*kad!!w;ZEB-l0J@Pi4iv}A(A51?yc(QF7$%}me0+_eiy zHxNmr14&SXG5Smp<>(_tP*J4HKQkpYAAQd{cyR($5R&@flby&F5Rz6jRmi0{ZdJ$& zFfvoi3-XIfz@sJb0tZD9QQ$#^!85(7DeyTAG+~_T(T#_hgB&Oj*TAkC3qzbsti?R9~-ob<0gFGjOB#6y&M0XEKAvT{I zr(m}nBhHbRawE)4!)iHvMiWUPR?D%+Iee%Mp&eVC8)ss*95c>AwIh7%FOr$qeU1_5 z$g^k&-N+}&A&FwdIjE+^VmbCWH%YxNv!~#dIY;b z8*&T?*hJ@y{QTln@Zq$Oo(Ym`FyxSY2D(2PY!~u<*$@+pQWHy39n;b>^D;{+U7Qh) zafZmiLOliQFl5)@PywFZfF4VQWCmR$Ca!sXtmtwN2=#P9Dkj`hOPouKic<4R@TE9}D$vQ=F3w1a z09^_x8MvpGxMZehmL%qY0}tMHLar0sQ%gWs)#nvw=I0ed4v|7N99&%CsJgs5jR zq||_v5NKr(ToM{bNWtrspP2`882C_pgmFIkiFg|)APc~*fQ}WQJJL5X8?!`*$RwrpZTAk$bXmwJ?qt!_@k5(tmd9*rd%cIpvXCAFidhuv= z63gS&NivUDC)qq+ofPqSbyC6O)k!^%S0}A_ygKQ? zGM=nX>Upv{Y0Z<>Nk^WnPI~cVbrQ$Z)kz9ZS10*AU7eKibahh8)742Uo~}+h^K^C6 zo2RRjSe~s;Qh2sH$>rJVq=aXylNz3_PMYy-b<&<^tCJo)Tb;!6e07q{^VLZv&sQf! zJYStu@_cnt&-2wuOP;SzI`MpU(u?P-lNesCP7-*rI!WWj>LiyJtCKQbtWIiqu{vqa zi`7XRUaU?!@?v$;gBPolKD=0+B=T}~lEur_Ng*#+CzZThoz(Mkb<&cTtCNnrT%Gjb zLixetCK`t zuTC;}y*kO`_3EUU*Q=8%UawA?@OpL9j@PS`F1%iy^yT&HB#AexlT6;MPV#uOIw|JO z>ZFo4tCKq3tWH|;W_8kzH>;B_yjh*}=FRFPj<>6mWZte$vUs~XDdz3!q>{I*lX~8+ zPFnJIb<&ZytCL>5U7f`9ZgrB*yVXf9?^Y+Jyjz`A^KNz0f_JNvj=Wo)^x)mkS)bVk3(vpv>llFXEopj;j>ZCUxS0{0NTAifvX?2prr`1U@pH?Ted|I6}ZA#uS0`=xygKR1=haDXKCe#V__8`l z=F93Nn=h-ABEGCns`#=xY08(?No&5WPCD{sb<&eBtCKjsu1-?*}PGud9y6od|RFL=G*EdmhY>R6uz%ca`?VFDdqd>q=xUSljeM1owVos>ZCj0S0{b>zB)Bf)MNgsZ!P7?XKI?3ec>ZE|5tCI?T zu1@OtxjJdZ&(%psey&cs@pE<3m!GSXcz&%;Qu(zy$>Z1Rq=a9qlS+QAPU`rzI%&zT z)kz0_txkIKYju*q@6|~fzgH)D{9c`u@_Ths!|&BebAGQ*+VgvL(uLovlivJZoy78I zb&|}V)kzM2Rwt$WS)Ek#XLZtqKdY10{8^oJ;?L@&8-G?O{rIywN#pP8B!|DNlM?=} zPOAC4I%&z@)k!=4u1>n}cXiT>zpIlN{;f`u`L{Yr=illihkvV+BL1yTD*3lMX~MtN zNgMvHPCD~%b<&f6tCJZ1uTGNrzdFg`|LUZO|ErT~{;y72@_%*Gj{mEZ&ir4U^yL5Q zq#yrRC$TWBNs?h$lcd40Cdq+eO;QNMnxqnjHAxc~)+DWASd(;wVNKEvhBZka7}g|l zFs?~bU|f^r!MG-=gmF#M62>)2PZ-xEi7>56(qUSY2gW0Jb$r8Ek8k z8raq(&0t%Tw1I6+(iyfjNl)0;Br&kBNs?h-lVriZCdr3=O;Q2-nxq-*YmyGIuSt5q zz9#7p`giB#K5^GNrH1t zk`CvZBoEFtNeP^5l1ez&B=vBvNt(gACTR=jnxqq)Ymy#tu1WgBxh9E&YfX{@*P0{; zt~E&sTx*gVxYi`i;aZb)fNM?C1FkhmEZl376u8$US#YmO%HUp;)Wf|dX#@9~q%+)W zk{)ocN&3OPCP{*4O_Bl6nj{aNHAyKvYm#bs)+9~fS(CJcXHC);o;67)c-AC6;8~Nz zz`G_%hj&d<0`Hon2HrJE3wYNg9pGJ)^niCw5(D3wBniGXNfvx-l0x{_BxUfeNowF* zlQf5KP0|*=HAy%4)+GG^so`IfWWc{B$%B7QQVRc?q#FJ;NmKaOByHhelXQW9P0|zo zHAz4C*CYuDtVz-kSd-);uqG)*U`4@-}qzA%ll74{Hh^$F65LuJtBeEtbM`TUX6p=MaTSV3*9T8cRbVX!M(if36Niw2q zk_<%GB!!5sNvaTCle9#1P0}9GHAz=Q*Cf3VU6aHhwkAnMY)z7d*qWpOu{B98Vr!BX zh^)N%|tbCP_eI zO_GYlnj{B_HAx{7Ym#y#)+BXEtVvoTu_oz+#G0fZ5^IupB-bQqNUlk;kzA7$BDp51 zKypn|i{zT51(Iu$wn(l?IwQFz>4D^$q#u%Nl6a)nBTMWY;9EkzJE?M0QQm4cRqGUu4%LamcMnQjuGe~0NxCApCh3jbnj{AKHAy1!YmzkN*CaW}uSp7#Uz1cIzb2_geofK> z`87#<4?Ibqz4LXl6Vx? zBpE2KN%B!#la!&jCaFbnP0|9zHA#CE*CgFgT$A)haZM77(wZa*r8P+gN^6pQl-4BW zD6L8AQCgFT8lDG}a_(Xsk(c&{&fcqp>C_Lt{-+gT|VqDH>~%)@ZCrI-;>A z>5j&lqz@Wvl2|m?B*|#5Nixw~lN6x2CMidAO;U^Inxq+;Ym#oi#~5I%|>= zbk-!*=&VVaptB}viO!m&9Xe~0&giU3dZ4o=i9vTwl8Ww{Bp2N^NfEkhl5%v{B(>XK zg5H{>7kX=wSoGHNlWzCByG`OlXOOZP0}6x zHAz48*CcTmtVvQZSd(O8uqG+MU`Cw9NNgvm( zPx`!WeG=#T^-0|8*C$D?U!NqsetnYe`t?bA>(?iFtY4qxwSIk4$oln3Ve8i?Wv*YJ zl(l|+QqB7HN%ia3CrwztK55eW^+_w%uTNUNetpux_3M)kuV0^ZasB$F%j?%CJz2j# z>Dl`ANnh8mPx`igeG<=x^+|ji)+h0ASf8Y_VSSS7hV@Bm8`dYOZ&;t?vtfOb?}qhB zejC;&`EOXCl(S)dQtpQJNqHOAC*^NgpEPB|`lP8F)+bHdus&(}hV@B%HmpzDyJ3CO zz76Y>_HS69bZ5i*q`Mo|C*9kyKI#63^+|s=tWWy8VSUoS4eOKsZ&;tCuyK8o;>Pt! zN*mWFDQ{e#5Lq_Sy!lIo`QNot$cC#i2*pX9P>eUj^@^+|4<)+f1dTA!4&X?;@eru9jA zo7N}gZ(5(!v1xr$=ce^ZU7OY?b#Gdqv|-cwq>Y=_CvDoaK56r&^+{JYtxvkTX?@bQ zP3x1cZ(5)9W7GPipPSYv{o1rX>G!7fNiv()C&_MJpCq?=eUkj<^+`6H*C*L-UY}&Q zd3}=o=JiP#o7X30ZeE|1wRwF~_U83T9h=uDb#7jt)U|niQupTdNozK*Pg=WqebTzk z>yy@RUY~Sf^ZKNVo7X2@+PpsL^5*qPKQ^yV`nh?1(yz_ylYVbrpCq$oeUj{!^+|GD z)+fntS)XLFWqp$6mi0+iTh=F8Z&{y|uw{Kx;+FMENn6$@C2v`u)UjoKQsbwsn1y`PTJG30v1EC2n1xl(cny zQu5aINiAE~C$(-}pVYQ>eNy|@^+_wXu1{LIb$!yRt?QFkZ(W~sX6yQ-vs>3Eo!h!T z>HOC9NguYZPx`oZebT3`>ytijU7y6WZG95&w)IJT+tw%XZ(E;av2A^l<+k-nR@>Gm zS#MjP6tZo7Qs}nzNnzX8CxvfYpH#DLeNyeV^+|Qx)+g0(Tc5OG+xn!1+tw#7+O|Gv z@wW9zN4Bj`I=XFr(y?vpla6m&pY&wg`lP4Z)+asNwm#|kw)IH@+t()vZeO1yw0(V& z@b>jdI@{ML>26=2q_=&2lK%GfNg> z_Vr0Kwy#f`xqW@otnKTQW^Z4gbYT1Xq=VbnCmq_pKI!oG^+_+buTOfpeSOla?dy|X zZ(pCpvtxY{?~e6Jd^^@B@$Xolq_JatlID)}Nm@JBCu#3kpX9S+eUk5v^+|p^)+hPz zSf5m|V|`NLj`c}JJJu%^?^vHSW5@cWnLE}e&Dya(Y4(owNe6bUPdd0`ebS*F>yr-e zSfBJ{$NHqFJJu&X+p#|B`HuBT3_I5+G45QS#I$pL67$aWNg6xXCu#0npQN>OeUkRh z^+^Fc*Cz$;T%Q!QbA3|q&h<$pJJ%yxJMTA#FK*ZQQbyVfUd+qFJv`>yp#cXq8$y1Q$A(!E{llkV?Y zpY&tb`lO$`)+hbiwLaCuQzlpOm$GeNy)B^+^+UuTPq|dwtTR-RqMk?_Qs@VfXr^jl0(;ZQ8v)Y4h&& zNf&mnPrA5!ebS}f>ys|;UZ3=1_xhxtyVocE+PyyM_wMyc5_{GsN$y#nB(-OKlJuVS zNe+9~Cpqp}pX9V>eUkH@^+_3f)+c4|S)Y`(XMIxkp7lvRd)6oQ?pdGIw`YA)|DN?p z8}_VE+PG(Z(xyG@lQ!>JpLAu<`lPFS)+b%tvp(tip7lu|_N-6(xMzLRr#)!QAZF|=zweMY@v|{i2q?LQuC#~AMK56yd^+^}@u1~tScYV^Oz3Y=M?_Hnt zW$*f=uY1=gecQV}>HFUGNdo)UCkgIbpCq(zeUk9L^+_iC)+d?nTc2dMZ+(*azV%57 z`_?BV?pvRfv~PV<^1k&+HT%{l)$UuLRJU(^QvJU5Nh|iPPg=QeebTCZ>yuXRTc31f z-}2f^+|mD*C+AsU!P>K ze|?hS{`E;l``0HK?_Zykuz!70;{NqXN&D9)CGTIKG-dz#q^bMYCr#VGK56>?^+^Zz zuTMI-e|^%S{p*ts?_ZzvVgLH1kNejrecHc1>GS^eNh$}{C#fD-pQLtReUkct^+^c_ z)+Z$%Sf7-1V0}{Zf%QpK4y;d_dSHFhv;*strXN_JbmYMLq@xGcCmlPmKI!;@^+^l| z*C#O^T%W{raD5W_QCZ@F$dQt#U5Or6nAiaQvAX7NmCB4 zPnvpgebTgp>yxG*T%UB|;QFMC2iGTEI=DXR^1<~yu6&TA##nczqJ<;q^&uhu0^uA6}nib9jA{?cw!Fc8Av|*&kk?lyP`{ zQs&|HNm+;2CuJXApS0lc`lN-2*C#DHygq61;q^&p4zEu-dw6})xx?#|&L3W%#ByYP z66=xmNo+^fC$S${pJZ`leUjyo^+{Go)+bpXS)WvJWPMWMk@ZPMN7g45A6cKY;>h}> zl}FYmtva$kY4wryNq3H{Pr7?#ebT)n>yz#uS)aslbbS)%(e+7ON7pBDA6=hhaddr> z<F- zd31f!t)uIcZXaEr#B*$Y67R9~NqooFC-EO!pJa1veUk05^+|Te)+gB?Tc1>OY<*Jg zvGqxH$JQs+A6uWa;@JA6mB-d6tva?oY4x%7Ne_;#PkMN4ebS?2>ysWITc0Fye0`GW z@%2e!$JZxW%v_&jIdgrI)y(xt)-%^9<;+~4lsj{MQr^t1 z`lQ>l)+b5KUY{g6dwr7B?Da{~v)3m%%wC`5ID37P)9m$0&a>AiRm@(WR5^QnQq}DB zN!7F0C#{*iK56aj^-1eyuTNS(dwtTA+3S;@&R(DNZ1(!3=d;%*iOgA_Bsyn(lGvQ} zN#b+XCwa_SpX51beUjIl^-11y)+bfWS)WunXMIxDob^f7bJi#An6o}<=bZIPyXLG< z+C67|(vvyslb+65pY&|b`lRP`)+fo#U7sX7cYTuF-1SNFbJr*N%w3=4J9mAO-`w>{ z{&UwSHOyU~)Hrv2Qq$b^NzHTDC+(TLK56gV^-25Yu20%OcYV@}x$Bc&&Rw7MYVP`^ z*K^k=smxoSq&jbXlG?oWN$T^~Ck4z~pA|-&D;fG5ocmxV93BC z&dGuy$iTqB$N&Nav5?NQW^3XN*Ib67#KnrG8j@B6d3#&3c#Z73_c7B46Y0n3?*QGF+(OpK0_XZ z0z)`M5kn%_R*;QF3{ z`3yx2=?r#c+nvZz#E{I8%8qGO&$_;Mgbw`^ORN0tKY7EM@@lQW=UFQW=UE${11^ zQW*5WYC&Ni1mz`3$AdFi-&d1f&M! zt2_o!*iY2p%k2> z5Uv{Rp#jSau-Hps$Y)4qD211ji1e!fPD7xWg5)NBaQOqu2@t)YG7(fxfYLLlga(x% zpwt8jnKA}Mx(20PkRC)RLE;HgvLokQNd5-J6|AHN#RMoGLH2@DDaag9>?eZrdj`}^ zAa{UrZxXn4hva%ljslf*pzdq z1S%syIX4$24TH*-G=>s}a&Sokav{vuu(F~UT<0XiOA3gMp!x(~AX7FbSV2ET0V(?^eXYgPMVNhW3VDM+~0jmeq;|dIp z41QppAhmuBAz-ym4517m4F2GnUV%ZKL7l-7><*A?Ks-pO!E}OXkgcu^5ey&~xiSQU zRfF_{Tsi$S=+ep$tCYI0A`=G6XRMF!(bBGq{3t8Auf zW&ruskpbjZP|Sg9X;272dS$~Fb29OIu?t+9p zNEOHoQ2awe5+n{vIZohI1PU!sh=P3W0~SH}%Ma{-kXu11&Y2+u93LPzViR+Qra_Qx zjto9vwZRMl46Y0y8JGwtg}6dv2NW8SV09ojK~faNy`b<4WC&$&WdNDx$pF%=z~I8* z$l%N1$lwl+15g_bfMPZToFhQ7 z=g#2I;LqTKl)^#o4FcyvXRzC>!R<&;yn{j-lyemrLcys3lu|+d2w`wU@;SsMkQ5fo z0MZQ!5m1bQTH2sE1?4D^n?QaBrTrj=Acjze0I=IYEpbq56qK{W8C;=lbOi=y21ls9 zpcD*C$spCBbPI`JNO}U<2g<<^x582cA|HU<9nRpv;0i5SKq(C55|E1^aRw?k92sD# z1QceVGza2?+SH&pM9xLAk+|0n~m6m0zIr019DH9D!T_ zDiJ_#3StNcmy@mxn(%xEDycv&bO)D}e&C!6@iD0Uf%p|v#(~TNl>?A)fW;HCD99vG z9t4FAq67x{020z5vppF=W;imqfKve|J%Bc@#y4ls zV=w@R7)S-EABEnkgY|O^87#pN*3U5q>vsazW}tQhsI&vs)j42sQ0fA;XF+Y!Oa@4w z3FIsCm}Ih3|9&2edK}Le~^%Z#0;!W3rc&CbO~_&-0PZ7z_@J~5QIFh{Ko5IFxe6XH@LoY0jF$Gy9m?@fV3__Apxot(c8`-TR?RhdL0RB zCxB{Dd~IY21E>}PwH83F6y%x;lBXc;6j+-?0X+H#s*N4N zqdp)%gW5}=b`|!PFsOEb^f*B7^#g~38@Siu2X5Pe+yH9#fm+0%5CGM$AeFe<#Gue} z0_z948B`O2T0NiG+X&(!NV^C! zVhXG6v9+2&eVHI|F9+RTP}%~uDnM=og)pd10!j&>)(t4^{26?~=?IqgKrIiDO`v!I zsRM-(#70oOfm&rS*MLk0rCLP#z|02_*ML-k+P{#NEX;J|umSZ!L2Y%Ajqc#~F^GlR zWJDf>xG$dpRO2G*4^SIF8EKpq)arnhS>6m8;E^>@DFe#w?qFUiLjkzGm&cF{9T5VV zJRDjVusV!7Z46MTfJ!l6@JJ+R3jpGZ3H=KIC`>xe?Uv1C48eM#sr(ZGc=f+TH;5atO6IFk=@{+QCXvP)!5r%Y*vI zKHw4)RJwyoSx{>Lbz~2eU#Z#Z0L3M0y8~9HgT|x~BX*!v2`a}yH6>!C1vJtK=|6+& zW>D(`RL`Q1%puBtP_G*_W&x@ZLG1%jO9y118@Oc*s`K%+J3y@r(3l^n_5zKBfcTJF ziTbS$P`H5n3mSXy2hX74ABh9CHb5~7au1{>1*&yHwJrMi9B6z7dE}LF`vl|`P`J~k zg#u}bfk@;Q0i^8!azCgQ25P^8WFc)o+O<$Xqg9}hDNqc9?8DVQ0fh**d;m9(b}^0X$<48Y9VNC;-nYRxq1W?;}_U}azg&#QyRCW^qbE;&fP0FAS` zGK7P)GE^~WGcYoMW^*C)#vq@gw$2zBR$`q22h~2H8GKMp25P?}=D*dzEI|q_YOXV2U@!s4C8}NMF^V3a5cdbeXPiL3M|QspI2^;kb5*cVL9D7^U{C?C z$bf_{Xk-91p95b%o-R#JrTmocz30TlLD+Vs(2vUM`!&;^NfYq?}5Hirk#MVq5jnqCBhOS*`mYI{9o>~l-M3#1~NKGy+ z$;{95Ni9pwQOE(2w(5z+o_S^Y*{Mb93Z^{AH_{J z`f$&If=wS5Zg#v}pokd7!#e~77#I#PF)+v)EHyY{aM9qp!99a720sm$4A~6@4HXR4 z4b2Q~4O0v=4T}uR4I2$77*01_X1Lbyis4PeM~2T0KN>O^u^WjQ$r?Etxf}TzB^hNH zy!+5^&I^(UzM~qJ!-!gt^{K5FUv7m{#iJXa%iG_*1iHnJ^NsvjQNx4a#$t05* zCi6{}n5;F~WOC8uy2(A0k0#$u{+WoFN}4K}s+$^`I+(hfrkG}$7MYftHkwW_oo>3! zbgk(g)5E5hOmCXLFnw?O&y>|n#7x>u%goTs!OYz((Jb98&#cj`-K@`SiP=iCO=jE8 z4w_vsyKeT(?5)`!GiGxYb4_z2b8~Y?^8oX3^EC5Z^BVJJ^GW72%~zPOH{WM|)cle8 z3-kBpU(ElSGg&BEXjtf5m{{0aI9a4vWLgwilv^}fOt6@4vBhGi#UYF178flZSUk7* zX7Sg8$5Pl*$x_qO!qVO{$uh$--?GHA*0RZRiRDVmO_tj&4_aQZyl(l-@~x$am86xD zmAaLom4lVLRf<)nRgqP>Rio7etLawDtkzoXu{vyZ$?B%n3#<25BG!`DO4jPuhSm<& z?$%+}vDP`(#nuz8r(4gn-e|qudY|zme(te;zdv}Ukjw^6atv@x#)Z*2&h>Ho`XEHqW-y zc9QK3+xfOjY}eXuvb|_~-S(dCN89hV|7=C2LHi5#*X^I#zqJP~R(!z3z#w8EX`p1FZeVEOVBl^LW)N$TV^D0+WYB3a!(hI_ zI)kkSM+{CI+%kA*@WJ4_0h=MOp^Txjp^>4bp@*TrVVq&AVTob2VVB`V!v%)R4YwKY zH9TW@+3=C!OT!0Q$|rk_oj%s9;? z%;e4V%uLN(%)HH_%o5EC%*xH$%zDk{m@PKjWVX}ngxPtsduC6~zL@Mbn?EyuYyQWa*+R%d5}eBIEL<%@ zETSzME!r*mES6ZTwAf^^-Qu9d1&iwz&n(_rh*(NmDp{&q8d^G7x?6@>##%O6c3AdX zPO+S8xybT}ss|V>Q`ok=078 z9aj6T&RJcxdSdn3>X#LxwScv_wVJiAwT-p2b&z$Wb%u4mb)9vq^%U#b)~l>HS|6}J zZhg)At~HAdr;U(}xQ(KXfsMJ1n~kqciA|+VlTEwLM4JUR%WV$XoUl1>bH(Pa%_AE| zTXtJMTNPVPTO(U@TSwaf+i=@7+g#fk+h*HIwli&4*sizTXM5E4itTONSGFH*8SL2Y z#O!44bnJ}noa{X9BJASr^6X0OTI{;*X4x&YyJC0K?vdSdyN`AZ_U!gz_OkXm_Qv*3 z_MY|;_VM<4_NDeM_TBcg>=)W^u-|Tf%>JzX9s9@jpX`5v7OxsGFuY)5VBj#|H;^+> zH83%-Ht;eCG)OQ=Hz+fxHRv&zY_P~+rNIt^{RZa@t{OZscx~{@fYDIEP~1?>P}k7L z(AhA^Fw!u?FyFAwu+?yi;cUZIh8qnJ7#=sgW_Z_-#fZ~L$Vl8s(a6Ba+{n$y*C@s) z*{H~<(x}6z-)NrEQll+KyNym6T{L=N^xWv1(O)ATV_{<@V@+cVV|!yi<51%i<80$9 z<3{5N#?y_L8Lu_oV|>{7lJQOB7sl_6{~5EIh?q#5XqgzAIGDJbgqg&e>QX@Y6GX`^YoX`ksr)8(e?OplnJ zG`(bc-Sna92h;DSY-YS>GG@wVMrM{~L1qzV@n$Jzxn@OXQ_N*>SUL zW_Qirn0+=AF_$z~GFLY@Gi_!B8y6k4vT(^c@|48wpi@8IEAD9_OlGNOtH+itg>vh zoM1WKa+&2?%RQEdEiYN#w0vRt-twO%tCfhAw3QaL3=gx4waT$7wraBKw3=Zx-)f!J zR;wdcr>$;TJ+xx6=Cl^F7PnTkHn29gcC+@ijvPtR ztY28axBg=N*P6*j(MH`y&&I{Z(o_RaQ_>}T4quwQS#&;F?W75m%vuk1g9(zycz1E?HlFkm+j zGmtgVF)%i8GVnA=F~~G1GAK7_G?-v8-C&u)T7x|XhYcFoHLfvkHlAcW(|CpPdgFb@M~$x--!^__{Lz@fgxy5UMAk&d#Ms2i#M30gB;F*? zq|~Ivq}ybc$wHG2CfiMpnVdDbWAfPKlgUpL4pV+pIa5_r6H{wbFKB8nGp&WD^+Tp7 zOwXHMF}-X0$dtv5(@e-r+)UBTz|7pt&CJ&<#w^*a$gI+=!>r$Ip4n2fEoQsTPMKXa zdtmn5?3>wNGahqcb0u?4a|?5Ob3gM?^Az)J^D6U3^9knD&6k<4HQ!@?*!+_DO>k@F zpE;|Ah=sI;mW82(gN3_Am_@8bjzzIWlSQY+42$^|>nyff9I-fUam(VN#RrS;7HpQh zmNJ&gmPVGAmL8V=mW7t(mUWg>EN5CSvRrPt(ei-ham#C#cP-yoezs(?;mlDE>c zGPMe^inL0yO1CPsYOrdznr1cEYK_%qt3y^NtsYuEw|ZyAXw7cTXRTtbX>DX}ZtZ9t zU>$CqW}RzYW8G{$$$F;s3hVXOm#lAC-?x5Z{nq-EwV;i-jhv04jk%4TO^{85O}tHt zO|DIm%@muNHj8YQ+ibKsU~}B&n$2CCH#VPbm~1(1C2ZwwU2HvVgKWcX6KxA@%Wd0i zdu_Ma?zBB*d))S-?E~BAwk&p>c0zXIc8YcecII|&cD{CncI9?;c2n$T+AXqMZnx3y zfZcJsCw4FGKG}V@W3(5r7q?fl*R{8?ceW3*kF?LQ&$pjqKhu7Z{c`(__6O{b+h4Q4 z3rgPs3=B`07#NrgKqa||fvka&fs28sL6AYXL83u{LAgPjL9f9UgPjJ442~OIGOH5%`q)DZ8GgNonboPbe-u| z(<7#*O>aTVa1k>}GbJ;1XbU{dEY>W?tk|r{tkZ0U*?hBgW?RjUn4LDeW%khQgV}d8 zHgjHc8FOWGBXdi04|9L>IP+BV67y>FF7t`z3(S|BZ!_O(e#ZQ=`6Kg}=0D8;oAX(S zTBulPTUc2*S_D{xTcla!TGUuHTTHT;X|cj$y~RF@qZU^zZd<&v_-Mgk$!;lTDQl@? zX>93a>1i2Z8E=_qS!&s0*=;$?a-ro0%k7rOEYDirv3zX#$?~TqhZVn-oRzATiIugL z7a8r866;FqChKkro7t=VjNZDeeeZH#OzZ9HuJZQ^WF zZAxsaZMvXsm2EbAZO+(Sws~ap(&mTFe;YnqQCk&TZCfiUv{g3PZMQpSch>HX-DA5? zc0cVz>?Q4$?A7fJ?H%mh?ZfP2?Q`sl?VId7?Pu7}w_j(!)&7Y6Y5QCD4?$@>fq~%- z69WT_0jGhGfw+O9fq{X!ft!J^L5xANL6JeFL5D%V!90Vd23rhv8=S(E$_ow44eJc2 z7|t|YWVjsKT6tpl((sevcSA-a0V8oEH6vZ45Ti(=B%^erLZb$wcB5%VbB)#*Z8kb& zbkgXC(S4(LMqiCsjJb`au%z=z;NIpEV-{yE?pQpw_+;_Zg2R&EQqEG<(!|o*(#tZ?GQl$4vdps9vd40=H^?(6HE1#DHkf6w&|rhXc7tOEXASNcJT~}b@Y8_9kl#?w zP}R`H(Av<;Fwii;Fx{}su-350aI)bd!1Mxz5p$BnKT-8Fh+^x25XnA2FoSl(FA*wom?*xNYDIMKMkxZJqS zxYu}&@nYjm#ygEq7@s%3XZ+Ooi}7z`E)zi$1rv1>GZR}AACq8{B$G^&3X^)1K9i{? zOH5Xq>@qoMa>3-f$upC;CVxzrO@&M)O*KsQP3=rwO+!qhO|wi3O&d(xO{ba8HC>%T&t}%WBIm%ZZi?ESFnuv)pTW#`3b|Bg>bT zKP>-S@>z*msaR=SSy?$+1z3e!rCH@#)mSxKO|qJ4wZdw>)jq4ER#&WUTfMUSXvJX7 zZY^dlYpr8#Z0%(2X&qr5Z=GjdYTaVpZ9U6+q4fsq?bgSv&syKHer)~8`lmIA4Zn?? zjjD}_jkS%JO`uJJO}b5)O|4Cj&19QJHY;s**zC7CXLHr&iOp-9Up9=k0=D9|YPPzz zHnz^TLAH^$8MgVhb+)axQ*3A3uCm=|d%*U%?KRuGwr^}d+cMd4+DX{S+v(Yv+PTW489t$7;+m*87dkY7@8Zp8TuN=7$zGQ8CDujG@NcY&v2vR zcEf#GMiX_6jE$U(JdIL}GL4Fi%8eS0CKydOT4uD?Xphlhqf16Njb0eNH~MG9YOG?c zX>4R{j?_X&F5NF0UpKyI{K@!-@qc3$6J8S`6B83l6DJdQw2_uACOb_InH)E{X!5}1 zxyd(^za~7U!lp{5nx+<}_NIQOp{6OO*``%Qj3ow|g`35h6`GZs)#2!iGMRIlOPI@> z>zSLHyO?{MN0}#@7nqlux0&~v&oN(YzR7&2`3dv$=J(8>ntw6>ZLVUWX<=kx4sFF0 zSyWimTeMj8T1+A^l1R;-=m)FsR&3V1)-u-0)<)Kr)*jaW)^XOU)+N@})?L;Ut+!b3 zv_52g-1?&R1MBD3->m;y^VkU6DA{P*SlHOx_}PToq}XKJRM|AzEVNl}v(DzA&2gJ^ zHV z*zdJJ1WMl%AY(1aZFDCC4+DRL5QA8QB!fnSc7r~HB?c=EHW_R;IB0Oe;5t!b<$DYd z8(uQJY4`~|mdIknYb0c3Xk>0=XB21@ZWL!!XjE=gXEeoVrqLp!9hEITb1S}wO-XL-o-gynh5E0%XHAEC8h+^l@9Vyu#_imWQF zI;{Gwwpi`7I%IX+>Y~*HtLIkVto~Z@SPNS#S!-HbSle6sS%+Fv(n>#KbJFIL&2^iH zHXm%h+pyX4+RE4}+Zx$g+Iraf+s4_Z+LqW>+jiMbv|V7k+;*GoUfVOamu(-}zO?;e z``?z&PSj4tPTS7P&e1NwF5E87F4wNcuGwyq-Aua`cI)l-*&VgJVt3o_6*;4d3n1k< zs3(d%rdVQ7Y0zZQZZOecfx&WvLk1@d&Kq1YxNGppfYFfMkk3%jP~A|^(9zJ{(9bZ@ zFx@cEu*I;`aFXG4!-a+$47VE|Gdyc}$MCV?C&QnHLPios@%g;I<& zjf;%Sk;W9S7~eF0Wc-|nQIne|%hJ=TX&+UJDE6G7wV_iUcpe6jg$!$n{`@sjNg+xxapY~R{` zvK6!wx0ACov@^G}vkSBfw~K?0v`n;{ZZ{8W`&`Lh!(QLs#NO84$sRH*)MDRhKgoVN z+Q>P>21q$hTtD=Q!ApZr2H&A$<|c-ghE9g=I9lcp4WApnGsHb+KGA5p(LAG#M%#_{ z8C^8GZgh{VSx+_-UL36yeDgserje#ers;#AO&($qX^~`+Zc%8_V9{mI5DOqWP)3~2is8xzpwpA65SNT2UwAg5q(N3ciM(2(089g=n zV)WaH%UIA@!C2kc%-Gi0$2izH$vD%v!noeJ&v>fwCgUB(`;CtnpEbUO(jqrBF*mWp zGv4yZ8`@yriRw3u!& z4^OMy#nRI<$THkA(Xzm@+_KHG*K&^KV#`gIJHc(1dzMcvzgYgZb06Go3wf3FRgD9mrd7~}JbNnr~-L|uA7us&H-ENDT*2VD5fx^ZWzu5h> zW3p!_t><}xf#D7l0|RyXogIe#hVu-U8g4P%ZFtJ?qTvI>=Z4=5{~Gcb2^%RHX&PA= z*&F#8g&L(8WgAuD>3514OB-tuxsC-?qRW^ln;4l`ns}J_o5Y!08r3rp#tSW|C$aX8LA!X0B!-X3=I@W`$-AX6>Sq|{~PPi)=V~>HWD`Sc;-LxwO0yl%Wdm$u3`}akFKcL>Dn3D1%YSzQ|xl> zitHxY&9Iwqx5RF(-6kw^{RDcQ4~Ur;nq#ooV3Wa4gG=C1l_v&o4L%tN8j2gr85)6S zhFlDN4TB7^jhchz_{k~96^+%6^^6^j-HrW>G27$#=J-=gGEIt1%1s(gCYVe&S!S{p zxO$Ot&nwY_M#%oMt)Ka*gF?%R`nYEpJ%f zC(z%VXSLL7i`8zcQ+Rru*jnS4tZ#zn_y1Y5+KAXl+i2Ms+Bn#_+l1M~+T_?2+cep9 z+RU(-Z?n#3tIZLc(>Ay8^f_B>J8dV~PKTD?$868qezE;&%VfuHCupZ&r*3CvXKUwU z7i^bgmkAy%@3Wg~x5RF>-7dR>b{Fif+dZ>;Yxl>F*XMqhO;XqfDa;qk5x0qp3zqj8+@%g04e+X7twRj}f!6kg=q(hOxe} zow2KNh;g)WmT{qRgK@j@G~>C(Ym7G=A2L1(o*8;){MDGngxf^QMA5{+#N5Qq#MdOo zB-y0Mq|&6rq~Bzo$x@RoCc8~ekvVoKLe)9YBjzW~FPUFAe`x-}{JS}u1+RsSg|dZ_ zg{6gug}+6dMXE)KMYTm2QYns}&Q&b6Ev+maEdwmWEz>M>Eo&^BEhkydv|M4i-g2Mi zQOhfqw=G{;ezat;Vz&~rlC{#YGPZKE^0bPuinq$MDz$2{>b9C?wa{vV)po06R%fm5 zSUtA-WcAaE!Md{lxmU z^)G8i8vz?}8#NnU8yg#En;@G=n+%(Ln>w3Tn<+N4ZC2r!-Pf}68R58>xv@&!w3@{8gOf$?itTAjhoMbrDaE0M|!+nNF4X+s9HhhJ& z&K5Q@9$^%3lxI|G)MC_aG|OnA(FUXKM#qfK8r?B^Z1lb{*vmN3 zIKepGxXifLxW{<1@gn1u;I{ZVy8tGKnG}E-ew92&8bb{%8 z(`BYxP4}2en<<#7o0*x}n)#Ro;~fphT$$Bk-f2F`d^)t%ebM~7`91TG=HJc#nTuFR zS}0kl6IiM8#p0(0lO?;QprwMPx}}+=t!1KRx@Deaqh-5gpXDNOO5S3**Yc3%6U&#D zpDe#yGFk~(iCd{z=~~%XIa{Hwszn_o#9Wb8XkBhyXFUnrw_IYq)_N1#s#-A{SsNW2 zW1A40NSh>^belq(2Ag)9Mc_5HTWt2)9I|<2^TOu6%@>=$HcVJn9g;ony)tBV!qq_hWQ(FMhh_uZ3}A)e~T20N{eob z`4;Of4p>|SuS@-6@!NvQlG9SaQruF`Qr%J)JSXmC>0=pUnPFLB*=X5eIn{EZ^*OIxd0n_632yI6->M_Z>@ms(d_w^&cL zo^8FvdaLzr>m$}zt#4aDvHoiP+nU8j)JEDy#m3ae+Q!8u)F#>{#irDz+NQ;3s?BVh zB{o}acH11WxoUIU=84T$o8LApwxYJuwko!!w$`>TwxPDswkfuyw$-*Rwo`3q+b*%) zYP;L^i0xI|+qO?^zuNw`Ww8^rleSZ_Gqtm}bFmAxi?&O#E48b(Yq6VZH`{KB-B!EZ zc1P^4+TFH$V)xbVw;hYUsJ*nkioL15wY`gdsC~43ihZelwS9~IRQuWXOYFDW@3uc; zf7SlB{S*7I_P^~J6c`yem_chiL=B`3R18cFtPNZYLJgt~QVdEBstsBUrW(vPSYoi% zV7I{$gR2I&4W1Z$HTZ47Vkl}TZKz^sYG`ffVi;-|ZJ1(MYFKU9VmQ@sw&4=Pt%kb| zj~HGxylwcz@T=i(Llz@ZBWWWQBU2-5BNwAkqiCZPqf(=4qZXs7Mzf8U7;QD$ZFI!w zs?lwuCq`e5ejBkEiyBKCs~DRaTN}F=hZ;v4rx=$SR~xq&Pc@!xyu^5`@owWI##fDR z8$U7rYW&-n#YEIZ+C;^~)Wq7v#U#`u+9buK)TG*^#bm0TTOPG95K0Sa@*vI z$ybx#CM>3+rqZS=rlzLWrY@$TrqQM;rlqFUrY)vZO=p`fG2Lpq+w_R(Rnyz1PfWj> z{x)SX6E%}IQ!z6&vo>=v3pI;2OED`ot2S#fn`$=OY>C-cv)yJ#%&wZ%ZKVp8>{I>ZM^RMQ=%~>o& zEu<|}EKDt|EnF-@Eut+_EJ`h^Em|z5TFkasVzJd?x5W{Qs}{E{o>+Xf_-(;rDQYQg zsbXnrX>I9Z8EP4AnPORLS#8;3In{Eu!B*4O%GSZw(>BUB z!8X&j%C^C_({`5a0^60gyKE2Gp0vGX`@r_4?JrvfJ5D<(I|VyUJ1aW}J5RePy9B#T zyDGZ|yH2}Vb_?uQ+U>GCV0Y5)mfZupmv+DG80|fgdvS(mmFo5I(1_Mq5DFX!qO#>?f2Ln%oD1!up zOoJ+e27^w6Sq2LXRvPRwIACzn;FiGygO>)s3>XYK4W$ef3^fg{3>^$T4WkSb3^NU@ z3>yqP4QClHFkET4%kY5VNyA%)4-8)#{xW1R;xv*nQZUjqvNCco@-&JvN-)YasxoRY z>NJ{Vw7_Vk(JrF{MkkGK89gw1Y4pp8!I;xn%2>fz)7Z+`!PwI{$~eI|)40mG!MM|S zmhl4PmBzb_4;Y^`zGeKt_@(hLV+IpW6Dbn~6HOB<69*GdlPHq}lT4E;lLnJclUXJU zOjergGC5#!(&U!O1Cy5~zf2fRIZdTZ6-+fvtxO$EJx!xb6HGHrt4teAJ56VqE-+nb zy36!{=}FUDrVmVCn*K6nFyl0nGE*?qG_x{uF!MBvGD|SaG^;XeFzYm%WwyXn;Pm3sv1dB|IDvJh-PK#L<3oKSz?6Npuanj0){y41SSdY1Jv>;2ZJt)Ezbu;#Q8wb8S&vI(|{x2dpcv6*YL(&muOIh*G;pKW+- zC2S3CZEeGBlWePP+ie%vuCYC8d(rll?KfL~J83%;I|sW+yHvY6yDq!McI)j<*j=%E zYxmPm$X?Fg+}_zf#y-Qo(Z1Jynf)gF)ArZxKiGrU69q6b>|tbJ5H(OVurhEnNHnN2 zXfs%9u+QL>!DEB>1{{VWhPsB9hCzmLhUJFMhI0&87#=h{YxvCYlOeZ}xRHU8jZvsk zqEUmIW#?OpD8FQP6n;4kb zn1q@nnpByznanp?ZF0oqg2_vhuO@t^Ql`eH_NEc0DW-*L}tXXViZ8UA1Z2WA}ZHjGrY-ZSOwApKO&E}EKZyR=71zR0kSKC0_EZZ{M ze%sl$TWk;5-n4yc`_GokPT5Z1&ciOmF4wNoZj#+RyX|&|?e5sUuw%66wO6w@viG(R zw=b}-v7c(c(0-TwG5h=Wuk9HU7#WT*g4%%s2AT$@27U%n2E_*T1~Uwn80sfDSFX{>3cX_IN6>2lM}re{oVn0_?zSI1Y`91UR=FAo{78(|g z7QPl~7DX1_7Sk;@SnRR5YVpwGmj#=pyrs6Ki)Daire&#RpXDse&6fKuZ&*ID{AY!`1=Vb@|e*KVcVA-i*S&+R_j@z_h)8`|62$Jm$JH`>p# zUuM7G{{J{99F{_E3iI$18iN8sPNr_3X$xM??Ci_gTn>;r8 zW5QvoXsT=KW*TIgZCY+R!E}!4R?~x~w@jaz{x{_|Q!z6z^E3-J%QLGon`}1UY=_wq zv%6+5&6v#j%+<|}&3()x%nQwH&8L|!GT&`}-28$08*^3*K?^MlGYfx% zOD*NQp8f%($X@>GS0Hxve|Nu_%e8B>n`F1zZoAzDyE}GY?HKK)?A7e;?Y-?&>x3mFSj3rCA6i!_URi*Ac078@*1T3oew zXYtEI*izoo!qUYu)-uzw$+FLKx#ecdGnO|jKU)5^6thyYvbJ)!O0deYYPFhZwaRLn z)p@JiR$r_btR<~gt?jJ6tdp(ttvjrzSg*C-X?@B1p7nQYW*ZqB4I4)rUz;?WBAafT z={6f|_Sjstd1&*?hRs&qR@>IiHr_Vdw#9aW?Rwi2wpVQ5+Wxc^vXiqjw{x~jva7ah zw_9Mh#_p)yMY~sa-|YD9rR`1Z9qgm+OY9r$XWB2dKVpB^{-r&`1W4R58SojX8yFk- z7(^Hp8q^w0GgxG>+u*ptGlTyI+=eQK28N!7p@w;eRfdxd=Ns-YJYsm)@TDP>5ucH| zk+G4FQG`*UQLWJoqm4#;jcyoyH2P~KV{B^dXdGpnW?XOFZM?*IgYik@tHxi9c}*lu zj7;oI!cCG*YD_vzmYWbCN13OY*PC~nFEQU>e$xD^ z`8)Gp=E4^878VvR7O@tY7EKm?7RxO*Tb!}DVe!%8uZ5VUlBKn!yJdo9j%BOmM9Wo{ z+bqvp-nRT=$zUaErD|not&**tt-Eco zZH{e)?L^zTw%cqE+1|E&Zp&cDW2b6oXy;`YW|wbQZ8ybkf!$8KqjvY~UfD6*^V@6K zo7nr>N7@(J*V#|EUu?g}{)GKQ`?vNC3m|dFW*}ssZD4K?U=U+aYS3sf%V3$oeuL8n zPYga7a2kpl>KR%Y1{=m3Rv5Mz&NWd~9Keqm3 z&0(Wxqif@1lWJ3F(`7TwX1&dBn=3XCY<}9X+RE8#**e?$Lrcw7wuf!c+rG19w-dJ0 zv9quXw2QSXvum=OZMWR+fZZ9pr*4PO|3G2}IpG%_->GYU6KHmWh|Fj{D|*65hgC8O6y-;D%}vFE&Z#=ne(P2^21 zOk7N2O)^cIO!`cgn`|~YV{*gfqsd%V5hK%L>bhmUAt) zSst>yZTZ}i!HUO9)ymMy%PPz&->TYbiq!(EomNM!?peLEVz%bD*046Q_O*_*F0!t( zo^HL^dXM!9>xb5Ft=VjZY_x66Z31j!Y)Wk!Z5G(X&*qg4vn{`^hOLRMuWh7l zk!_vrOxsPi`)u#pezRq=leSa0bFlNVOSLPs>$00>x882I-4(kBcK_`p>=o^;zAAJmx4e||24C)Qq4dxjvH&|z| z+u)MHZG%S!?+w@t`3=Pkl?>GlO$@yaLky!0(+zVBD-3H5I}Q5`XB%!Z+zrl`mkl2n zem4Z2Wg=`OVWetgW8`Y&V-#srU{q<;VANwY(P*C0R`59w7mcnNJu-T3^x5bKcqgT( zu@rc&+{)PA*xNY3IM%qtxYoGEc%tzN-=xf>$)w$6ipgs59O7}4GbT4pKA8M8VKC)2RWa2yH8FKGjWA6#%`h!B?J=Ed zI>&S+czor8>0Q$=rhiRY%mmFe%nZ#e%v{Vo&BDxb%|I(wyUZ4vtuotaw%6>C*?F^P zX79myo!wl-T-)5l+}hk7++K<`&oXZW@1C4zz7>3a$tClb=AX=enzLERTBup*T3A_x zSQJ~-SWL3mXmQ5kodu_*wxye8yk)j!m*ry1^_C|ruUNjd{Anp zZx>;gV%Kap$8Lq)LA$ed&+I)L(xr|ciwzX#>}3yh%q%osQf zL=1EdEDeGT;ta|SnhoX{tS~reaMs|N!6yT5Lvcd`LmR_TaDTG_+*V>}U}a$80FC#t z7;qTy7zh}M7)Th%7$_L17-$&i7#J9s7+4tC7&sWX7j8>gK>*-hjEYb1mh{j zGmPgLFECzWyux^m@do29#ygDn7#}b`Vtm5*jPV8IE5_>J)g<1fZP zjQ!X)CnhgU-k5wa`C{_J^j(rZ-IQm_9IlV*0}Ljp+x| zFQz|C|ClnEv6yj~@t6siiI_>4$(SjashDY)>6jUqnV4Ca*_b()xtMvF`IrTmg_uQ{ z#h4|SrI=-y<(L(im6%nS)tEJywU~97^_WdCn_@P@Y>wFivn6IL%+{D~Fxz6b!)%Y) z0kb1!C(O>6T`;?1cEjwB*#omDW-rX%n0+w&V)n!Aj~RnGi#dlmkGX)kh`EHhjJblj zin)flj=6!kiMfTjjk$xli@Arnk9mN3h4SX5ZlSTtC)SaewQSWK{(Vll&Fj>Q6tB^E0z)>v$?*kZB6 zVvofEiz5~%EY4V5u()Dz!{Uy`1B)jXFD%|ze6aXp@x$Ve1%oAvC5I)CrGTY~rG%x7 zrGll3rG}-BrGcf1rG=%9rGur5rH7@DWq@UfWrSsnWrAgjWrk&rWr1ahWrbypWrJml zWrt;tQEbmx8uzX_q z!t#yf2g@&(KP>-PGFY)#aai$K30R3(Nm$8PDOjmkX;|r48CaQESya z1z3exMOejHC0M0cWmx4{6Wg>{W} zgLR8_hjowj1nVi*Gpy%WFR)%>y~28p^#o3+ntp8Xu*s$1e*znj0*ofFj*vQx@*r?cO*yz|8*qGQ@*x1-O*tpnu z*!b84*o4?b*u>Z**reEG*yPw0*p%2**wolG*mT(R*i5jQVl%^Lfz1+|6*g;ZHrQ;j z*W4q zR>oGrR>fAsR>#)B*2LDr*2dPs*2UJt*2gx$HpDiHpjNWw#2r=w#K%> zw#Bx?w#RmY?G)P?wsUM3*eH&Wb72|RO~eDbnFc5OzbS|Z0sEDT9TI@RPdh90HO|hF{H^**)-4eSMc5Cc5 z*ln@fVYkQbfZY+h6Lx3pF4$eMyJ2_7?t$GCyBBtE>^|6ivHM~7$Bx0C#h$~S$6ml* z#9qQ)#$Lf*#a_c+$KJr+#NNW*#@@l+#ooi-$3DP5#6H44#y-J5#XiG6$G*V6#JItk2OISwR0HbYy(Kf(n8(=WD0mwh16aX`6ihlqA literal 331776 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxu2;b7|@ z$5Q^b9t*a9eJuBH>#^;hZX7EF%eNe}0*k*mW(%hOA1ejZKcVzrFddYcoB=WmYCN0@ zaAjcdVPs`sm5K0!2|i$8QsidjU|_hw$iQF#3Izs+XZef_3<3-c3=bF?7#LP1f!P9( z@B!%qg%gNoa9{zaT7LZf1s09h>m84dbfa3Qc)L$UKLfr?F2Vn&Uh6KH$ zl*E!m28Q*snIL{&0Hr|+pxA+d!9fqAjNy(o0|P??3&fKk8mb0FIWRCB&?_n~N@iey z`1Jq_1A_qr1H%M(=z)}h{NbQil$w*D%)rp*%D}+zfrWt~fPsMlq#mpSLO3umI6+vW z5bK){GFpEsdKzv0DXx^0F_b}5d;??bVWR`FV0*!yKXc}cr4iWr zBGYi=|E=H36tI|f9ON00Y5zc`{fjTaL z*8Q>Dmm#<}MTMdDWQlm|w-VtlNh`Th-sS_KfNnm^?R@lti`>m_2KKw#lO z3kBY87Zo1HS_VxEWShHvR9J#RmI;J~cYk=n`|tmM>#yBEinV)}fQMi%fr;uMi~e~6aq40NWYH%uQ4?g*GcZvLWYH}!Q5$5@IWSQN zWYG?os0*@a2~5-jSu_DA>Vqum0}~BE7PWwhh9HZoz(gaEMFn7@G038S9z(++0a^3~ zOf&^q^a@Ng16lL{Of&~sbPY_j09kYfOtb`9v;`(wfh<}86RklOje&_aAd7myL|c$W zO<+`9+>C^WYHgwprJDbS@a1^bOy5M1(@g@WYIk^(FMq&D`28akVU7! zL{}h-Ho!#JAdBX}L^mLdM!-b3Ad9-dM0X&I8o)&NAdAYtL=PZ~a==87fJD*D0(kyc zc?k)w43U?slNO&q%Kv9T`e6B=0jg~A1!U1TFCdy1UqKdq0294|EP4SZdIwqb2u$<= zvgj6==o4ho1u)SU$f7+k(KpDV6)@2c$f7AQ(J#oN0Wi@Y$f7nd(Lczd8Zc3YKBUrE z1SZOYEXn{A%pfK^C0?6OBL??SP5KAd6POL=%ujb6}z= z$f7YY(F|nK0GMbFvZw=0v;bMu1SVR7EUE$%tw0u)fQi;1i*mq38<0i+yoH8u3$o}N zm}m#G=mVH&53=Y5nCJv#(IYU?DafK*V4^dSMHj$C=OByrz(f}yi&nrymmrH~z(iLd zi-y2N*C2~Jz(hA7i|W8cw;+p3z(jW-i?YB(_aKXYcmoZ|1IVIxV4_EmMNhy)PaunK zfr*|$7F_@ny?`v*0~5W1ELs5*y@4#60u#N1EE)h4eSj=#0~39MEUEz$eSs`00uz0M zEXn{A{eUd`<~1~Qz95Up)B+|N0TM-b72G{=wbfGpYq6J3HV zS^^VYfh-yW6J3KW>H-tpfGlbP6WxL=ssIz+fh@`c6WxO>`r$J)91b9hK7ffHK^DCL z6Fq?}dH^PR23d3iO!NY>=mMDN6=cx~Fwq;xq75+7JIJC1FwqCdqA@VhC&;26Fwqyt zq9!oWH^`z2FwqalqC7CsFUX=lK0(9m2eRlBnCKs5(F-t9hKWd}^B$Ne3$o}6m?#Ib z=oFYJ53*Ad4EnL=})lWniKz$f6uDQ4M6#FR+qH z2U+w1Ow<5b^aM=Q1SE=Hih)X22!@wuF5e(QpP}<@b<$#siHP#m24n)PJQIN`TkL== z$^jE~0g2+a4XHog1J#mI0J6^m$vz*D88G`|pvo2pfJ8A(&R7CcAPSmtXg#nv1Z>O! zq&W$=|9HMb{r3Z8Uj$eoWIiGWWHQXY2O#6FwH{cUfGm0eCYpjQx(6nj0TRV@8z_V` zG(h&k+?NBk7OVSOKtZD67`AW`ft0l5Y# z{Qp3;WZVGR*MMYS3&;$ZeFvb*7Iz?vE`W*lfJBM1&*BF({3U*@PFg$x$-XK0%z(#V z2~2+qNdF8Z{c}M2VeXB9DqFk&B#P-WxOppnLftdr=jx=zOOVW40n!OGuLi1Y@fu{& z6qx7+WKkEG=oVyA6`1G_WKjl~=pJOzCotC^Ko&g$6Fq_~x&kJ80$H>JCVB=Wis}E1 z10aiG>G1;C+gQ`%2aq~Ydb|M&pDSR6ko0&1yUA$jtK}Cod{cg{PFj2iN&f?oepvYW zK$R_if-I^76Mca!$^jF70}{pb8^{Il_*M7~wV&tr>ZHXVknH~g(hal!2h7YL$f8eR zqJNM@ufRkZCLz^0M_{5X$f6ryq8!Mgb6}!8AW>{SfV)2g=6(~9`voQ;%3~2+dQtqp z0H(hKq+bF_zYIt}%>Ox1Ws4O+qL?m%yXOK_Va6Vic`8WeX<*k0at%^>WAg_Z9}0g~ zCoR@N(r*CL4|5L(RM}z^WYG^$%NJXKL@`|nu?s}P-P;2-C?f}CpAC|I4j?mN_Ju%| zEp`EkVwwy$FXAuM{WgDBCoT3sGS3I36K0+aRN3MHWKjl~Xb7_C6PVo*$f74;qA|## zYha=YAW=+rg8UA`aQB{oTA8r}%guP6dGsFWVC?v z!OFWHur}oKE@J_*`~*z-4ao9SFy!Ix6ZjAH?-!8!W`Gq!%F8(*_rd&o2V@+meX#&p z^axCJ2}l$(6d-;9kr_H5dtm-q0k#I&KXCWdfYgD??~MPelNPT5D}=ab1IP}Tdjg=! z7H>fob%2TP0Eyyr58S>#P%RlZK=$oHvhM)M448d8pvo2>K^C0>6FmVECCWYnhBc7& zB@zs4k`|vqvhM;uGvMx3V1nxBVOo>4_zIH#8zB8K_x@mnC|i67S@aG}^Z~Ny5t!%` zWYIM+(HF>~6JVlmkVPwCq92e&6JVlWkVQRUqCb#Dbzq`@kVPe6q70LfYAzO-C=0Ua z2WY@9=0Fxb0Tbmx7F_`o6+jl90TUHL7HxrvN+65oz(i$`MLl4m3LsIU(nALkc5_ThjmTTVh1GiTtGTu<{g15TkL@>x&|idgDg4)CK`Y&S_2aeK^9GciAErc z`oKhEkVQ>kq6x^NA~4YuWYI4y5N|EcKo-3M6U{*u-2xLWKo*?>6D>g&ErE$vAd7~; zL~D>mO<=yRgDlzs6J?l!RKi!lL|KqUV_>2j$f6D~Q66Mb4Vb6^vM3KsR0LV{0~^$D z63C(tV4^a}qDNq&3do`>V4^C>qH|!P8pxt8Fi{<3(Hxkl0kUWaOw;c2{6$K$f6Z6(J9EH2{6$a$f6!F z(K*PX1~AbD$f6Q3(Iv>D3^36Z$f7T}p?+I~EP4SZx&c{q2TXJevgiVs=niDj4w&d3 zWYGec=mBKW2$<**WKjp0=m}&|4VdT|WKjW_=mliaA6!tsT|pLo0294|EP4VadIwo_ z15ES*vgiz$=o4ho2AJpzWYG+m=o@6w0GQ|pWKj#4=oe&B1(@g$WKj;7=pSU!51@n( z>Nzq@U6)jXJ$E3Dw=99B{|UTnk`}W}MU*ETApNlP-vCv%mViyFX0WspS`V4?~jQEYyImoI0aN;9^A+^>S2O z9Ar@wm}mjAr~*v11X+{^CR%|k`U4b+ptN2C62+EIKyeMi8B0I`35)Lra5Q3#?>hpJ zpv^cTuqJ773s@l}zB@p6z~XxcRN3MlWYIY=(Fw?+4KUFu$f6lA(HY310Wi@y$f7PV z(FMq&Ixx{C$f6=J(G|#|3^36($f7SmfdUG@4alNbV4_=)Mfbo&cYs9E!y29+1H_== zXCbyGY4IMU@H+s~2Ma$1sItXJkVRQwq9>3=--tqtTzm#u^a4!u0P53=YDm?*qAJLuJTOrWWYHhO&~VT}7JUK}H9!`<024Jq7Tp08wLlhK0u!}C z7M%bSbwC!afr+{xi)O$?J&;91V4^WcA_ja{*M@;seN{5irps$f7PV(G$p`1~Abx$f6Q3(F@3; z3^36v$f6%4AWmI;16lL|O!N-2=n}66V4^DImn`0 zV4?*eQEa||yPrWC>i!oX_m?2KzXGHe=Kd=%H`O4E?tzImAd9YmiMAk%PJxMbfJD*V z1b0sk%snyEYmyfCAh~A(NFU5S0Z?U&ryz?uz(i*ti<-bh=OBw}z(f}yi^{-6mw-gk zT?s4Ak^0wDpc*n7K<-_EJ=P87QF%!J%KE`115R~BuYehoPb)Hu><7Z3rOz0 z0x|*S-UU!)i*F!{cECjMfJAZIh7|rTve57`kzJFt_yLlAPe5kC>{Ed%Tl@l9lm{mI z23hnA%oQJyMeo2wzko#1-3Cv;HBcinQb6wcf#jY)Abl|Rgg})oW|)C>6bEjefgIF- zB66Vdn;D4mg#)A$X5Jr|c|6FXPhg?~$f9Rpq9Vwm8(^Xm$f8qVqB0;+bYEl14-;VS zEdaS!0m;28AQNEjje#m#tbr`*0Ta~$iQ={mDgMtuwPY*-*=K-cp9wxQ;Nj~c4-H=p z`87$4Es*rvfb_%M%L7%m*a2De1Jv@xE+A2&+-sl!wNFN2P10fyB>Q|oX29%YfGS%Y zfGqk1=86zx(K9g72xQSMFwq!f(Iqg^1Z2@3m}m;JXa!6(16ecyCYl2h#pP#s_%=X2 zl92)OZvm2jOF;Tz{tbaDTU>!G>H-t30g2+W3zQ1s_W3A6!`DJ_P1529B>P%GX29%I zfht?vfh;Nj6YW73{R4Bw1Z2?{FwrT`r*EIt3iGzaWe9z(jw5L@`4F9^VHvp#EQ@ zu_kHpA0+=X%tY#G^gxv@WJUdQmOvK0 z0TY!$7CitHRX`S90~1w27VUwFY9Nc2z(jSBMPp#12FRi=Fi{g^Q4^S`1+u6FOwC?WYHxs z(Iv>DJuuM~$f6}M(KX1TF)+~$$f7PV(JjcLIxx{4$f6=J(LKnbf0Us~3^36*$f8eRCF}=~D0&GCFJD={ctb;6i2PSHOEP4heYJx1f1tw~NEIJ1! zYJ)7=0~2*X7OjDax*&_@z(hTeMPp#1KFFdzFwp>HQ5%?O2(qXSOf&*nR0bv*gDlDc z6HP!C{Q^yJi&KzAAHYO2kVVhHM01cucfdpokVTikL`#rGC%{B2kVR`?qBY2(IWW-% zWYHLyXbZBa4@|TJS=0t5+Jh{r0~4KqEGh#NodOa?&r$IFS)&6Z zK>A?$GXkn?@d9K~518l@WKj#4=n7;}6`1H6WKjW_=muobKd{`e1zGe3Omqjb=oOgg z9*`)yKS6yN5Qh7Ak1o`|D|FW+Ek1zc-y4am+?4&!2#d z1C6oqfJ8BEgvW0M%)A)AHA#yFkjxVS>4e3v3sl)+31m?nn5Ya$6w?+^N`hdxeHZkh z?%$!mCTXz(l6@*5Ghp^DfGS(8fh^hr6V*W$&4Gy;Ad7~;L`{%IZD67n$f7DRQ5$4Y z4w$F|vgikxpIwkeZ@@%7kVTKcM17D&x4=XLkVU7!L_J7W(hd=?;u&k~Rsu<)4!RknBqNEFj#xOobu z(D3FlU6ZtU4U%~qKssUOeKCP3Tf7BX^Z`tC2eRl1nCKp4(Je611IVItV4_EmMLS@k zCy+%8V4`P`MPp#17m!6=V4_!$MRj1JH;_d|V4`=BMHyhC50FJ)7(>J139{%FnCJ^+ z(LFHHH^`zZV4@$8MJK>SzaWd&z(ju_i>AOt{~(J7z(g75AeHkLFi{p{Q5Bdd2eK#+ zOq2&%^oJ4D#{$Tr4`8Aq$f9Rpq7ulWTVSFx$f65iq6)~O9WYT9WYH3ss0OlV3`|r9 zS=0k2YJevb)fYf4?zBj z0V{;~Cjq<5L7{$ z8*+YuhtCOrsQ;GuuSr^b0;~{{p3i{HhxxAqs%-HEWYG+m=oMs9518l;WKj*6=pAHH z7MSP*WYGtH5JxS3f-JfRCi((dbPi1P4YFtrO!Nb?XbepB3$myMO!Nn`s0d8-53=Y7 zU#QC%<|5T1S74$n$f7%7q8!Mgb6}!8$f6A}Q2}Jp6qu+8vZxPCR03Jl1STqjEGhvL zRX`T~;{)}D3bN<}n5YJ_=mD6h4zlPHn5Y4=XbVi#1X(l(CTf8!>H`zCK^8TEi8>&Q zioir&kVXG^Lw(_aEP4Yb>Vqu02PPVTEV=+D8iFj^0uzlu7R`W(#vqIOz(f;}MRj1J zDafKcFwqQT(Jx+5U*sT*K7ff9Ad8-WiIyOXZh?tbAd60ciPj*C*1$v?kVR8qqAkdx zJ}}V^WKk2CXb-Ze3`}$avM38obPBTQ15c=rXCRC2fr-vR7M%kVU4SfF0~1|>ESdll zU4bm>0ux<>EUE$%-GD600TbPVEc(U+>fRm5qI+PXdyqw^z(fxqi{`*Yk06V>z(h|V zi^{-6&mfC3z(g+~i@tD&y6g(F=mD7M4P?<3Fwr~6qEld^50FJ`V4_cuMPp#1FOWrT zV4`o3MHOJ8ACN^EV4`1;MW47qeenZX^aM=w53=YAm?*q9VwmJTOrSWYI6KP+!O(i{5~VDj`o)Y9NbFfr;uM zi&nry4Uk1+V4^0-q8>0&3uI9fn5Yf1r~*vX0a;W4ChCGL$^aAfKo))D0u2WrWYHTi z(Ew!8BQVhrWYG;U(FkPG88FcpWYGqgXacfm4oox!Su_A9nt?280~5_b7S(`>79fj? zz(h-sMHyhC709A*oT1@RgDiRjCfa~3dITogf-JfLCfb24ItM1&gDlzs6PHrg+gDk276J3BT$^jEyf-L&M3F_k&$f8$ZqHB;v_rOFqAd4=5iEcp_ zZGnmIKo-q`iS9ub4S|UsKo+%ui5@`~Re_0~Ko;eJiJn0g{on}o+XZCNGceIB$f9dt zqBoF5dtjn>kVSJ~q7RToePE(bkVQ3MqA!p|Szw}XkVPLjK;8QRS#%Ff^b4}+44CK- zWYH3s=pSU!0GKGle5CSM2PVpbEXn~BOCK^6^xi83reDt}F2qAbXw zJTOrXWYIUEfg$kBCbH-Wn5Y1<=n|Ny2(oAkOjH6SN?`mdAOI3P88!iHk`~J>K#cz? zfONygmo%Wt7ONnO3cy4)kVSvM#*B23MIXRK4M3vku7ZzuwLp!`$N;&=1j#)X*z|$M z5i3CaElkZzd$6;Nf1V~|B-V4?}gq7E?86l75ym}myF zs0d6n2U(N>CR%_j`XUhG)Ws#pq8DJI709AHV4^k1q6=W64alM$Fwqud(E^xg2eN1c zOtc4C)CMLx0a;W5COQRKQ~)MA10;$)cFvs1I0Fg-So)a*juzzflko&uegTF&JpJwn zfdpE{f{-;yiL(04BNvSyTijx(8YG zM=-=uiw_`+-hqi8K^8p%6Fq?}x&|hC23d3lO!NY>Xbw#D3bLpVO!Nk_s0B>)4zj2U zO!NV=C@ zE&hUJ-Vf|L(cI$`0dp zGyoA_%@e3@a_aKWtfr(B) z7CiwIoq{a71|~WKS#%CebPlrU1eoXoWYHR!=n`bn44CK&kSH$yW_W=739C=mfW3)Q zpF|+bZ@`d;mp3y&>Ok$47EpL?0V{;mCp$p)!@?^Es%-HdkSM0B;N~5HD$G~|GVcJA zc}KA8M2o);r``_hT8W8WZwfM`<{TzfZ2BhX7USU(Iqg^H^`zbFwqalqA4)ZFCbBLx53@x z0&|Z}^qQo_Kakw>2b(^SUqCn`2BZ&`o){K^vJFalDnOQJ!H|dBKLex=l%6_3_H%$0 zLedk@BCI=QLAE2cUv*-k;VBXeT2G0jUj(Ed7M_1%Aj%d?Ad5bMiOL|0o`H!fAd7B+ ziK-xr&Vh+)Ad9xZM0Jowb6}zd$f6-IQ4?fQ8!Oo7FR3sl+S7?3EY z*>Lj~Kow^6fXqukGA{+YPKb*#c7XK3(q{%(8*=)DoBso(4wU|$fXvSUD}^>MO89 zh^af0H14tCzJsA-oqhR5`1?&vu@Q1s%1EdZV zemNlb?f@%TCklgzKWCF~+XQ0X!KS37V0uz0K zEV=+D`UY9F2PXOfS+oQu`UP1u0VetbB#O-!@c3d$f`<2lL{R?($^8tAk@_bm5+TYK zvmlFZfQfP-i_U*KOjH3`lm#ZL0usdx z0l5FSq(VHFF(-9R(qfIppo$ifUUfh^Ve!`hRkqjwSu_VGYJw~p028%97Bzs0+8~Qc zz(gI8MHyhCF36$}QXo!U?13zL04C~#EV=?F8h|W10VW!PEZP7QjX)O7fQiN+i~7Js z6OctsV4^9=q7pFC3}n$C$xvV9AdB9Ci54J>?tzJxAd4=6iB=$s_P|7IkVQ*iq7BHR zF)+~demw(Kw)h4}6w}lUfi$G{ z#2v6P$n{x<0E}Sw z&jZpA^Un>aHH!t1MGwG4MUX{Tz(ggGMLS@kGRUGiFi{0$(GZxZ3P=>)@1PU}_kRJ* z{Sg_U@*c_kIv~9;_d7t9EjBcIPCynt0uxO^7To|7%|I5N0~5_b7VUtE79fk3 zz(h-sMH676709AKFwq)hQ45%81G1H!nofGlbP6Wsz5 z#g>BL>B9h)K18xX=Vv0Nk3G2bg7Qy>4@e&@{T%>n!l+JO!w-#W#>eIbfo9kVQYh?0$eO zdIKi<1X=U|O!Nh^=o*;l8)VTLFwqYnQA|I9!V!ky{+j}IVnz+fe_xRN_XA`K%zqhB zWsCoSL@~{Vo5zt04X+;{^B9&Q)hA1l`VTK)=5Zj4-hhenAd8-Xi3%W#?tzJlAd9Yn ziAsP(G2Myb|1B{0PRRw$e= z8CO8ku=H&Lb_R0#&S1zxYM)qO$iu_GARik3A^B^P7TbUoLejqj$X=L#ETGC3yC927 zz(hTeMSp;-29;bs$f7r3q5;UFJ7A(A$f7e~q7lfV6)@2lWYGwiXacgR1xz#rSyTch zngJ3;4^voNgJ^j8Boslz$EOIiKMN^*3P5JS!p8)vY;g&)s0>WB0$G#=CR&3m`l1kG z(c%VV(F-uq7G%*KFwqWV(FHKk9%RuLnCJv#(HxlQ6lBp5nCJ{-Q5%@(9Ar@inCJpz zQ4W~s5@gX21yH}OKo-3L6J3KWx(6n@0a^Z~Ny37F^; zWYH}!(HF>~3t*yekVSi7q8~t_xbgrz{hug>L|w*?QqcT0Qu_Y^(hp1jYoN*&|3Ma= z0~2LfhE$gKz(iS)MQdQ99LS;>Fi{?4(EymJ0J5kJOjHC}R0Sp~fh;Nj6O}<0{ZRt( z>|zCE(I+rb6=cyfFi{O;(LFFx9c0lpFi`_!(J3%d6J*gEn5YG^Xbw!&23a%)ChCAJ z>H`yXK^C=viFzQ5>cB*OkVR!+q5;UFJTTD^WYIsx&@hWY7JUN~jX@T@0~1X^7Ci$K zO+gmj0~5_a7F`1q%|RBO0~0Mk7VUtEmLQ9kz(gyMMH676HOQhqFwq8NQ45%83$myR zOtb@8Q~)O0gDm<7Rs&2x7JUK}oq{ZS1|~WKS#%3bbPlrU9GK_=WYG?o=n`bn5}4=; zkSKaN0MGw9WsvC22q*)cm#_@cKHC7&2h0B!P-Tm^Ad4!%M0X&Ia==9QAd9|%<;Vlb zqE}#|M?j+Jt_0Q85Da(k5vbuAOF-^Df#lvZAQNEjZGkFVd;uhiX)fHnJ5^BsAE*M| zM~h_M4UkTld267`7T-Y@?SY9tKo+fli9SIV&47u%Ko*UFiM~M=b%2R}Ko-@2iGD#A z6@iKVKo(_yiT*(reNhSV>|%!HNaghvm?#Uf=pL9T2eRl2m?#gj=meOk0J3NWOjHC} zGzBIqfh-yT6O}<0wSkE$Ad9NNL{*SQC19c&$f67|Q5|H_7ZuQOFhCZ)0uwbs7CitH zwLli#028%A7M%eTbwCzvfr+{xi3JY623)9^M&0K$gSCXDq+#=t~#kVS1^q6NsJ zDlpL!WKkBFXa%z96PWL7K%(frM=DQNG(!E~(Fi)P9?AbLAe}J(=RlP$?m!j|fQj}X zi(0@$Cm@T;z(l7Yi!#7OXMjX8-3iIfNbX(I1a)su6KH)8l6x0`On|w!2C8iF5@gW~ znCJ>*(Eym}8e~xenCJ#%Q306f7G%*MFkkFI7JUE{-GeN81SWa_B#O(&@bq~GYGK9} zkbjRL`S%1-`scJj!>geMbbmRL{tF=eu<*)&DqDO7Su_A9dIMS10w#I~SyTZg`T$v! z119VI@-A z-vcJff-GtP6Xie_m4J!zAd51MGuGkpy`U8mG#L|G*CZ{LSc#}_ zWI#G$@l^v=wpamKGy^88f-D*U6V*T#b%2TLAdBk2L=BKd1z@5k$fAE>achAr`UECw zgDiRmChCAJx&tQa0usdx6^%Kr-8(C`uH2HjtR6h1y6GhpHKrwgKNaR9RD3z%pK zvgi$%Xaut89++qhvgiVsXacfm2TU{tS+oQunt?1D0~5_b7IlD$79fjiz(h-sMFn7@ z709ALI-x$UK^A=h6Ky~iy#W(#K^8p#6YW42T>%sAK^C0=6PHrg+gDk276J3BTDgqN-f-K4a6J3EU`lbUK4r`D_Z@@%1Ad4P>iEcp_-2fBafh;-) zCb|b%v;!u309mvICVB)}Gyx`h0$J1tCVB>0)B+}Y0a;W9CVB-~Q~)M=16lM>J2V{b zAd9|$i9SFUy#f<`f-HIfCi((dbPY`O4YKGAnCJ&&(H5BK7i7@_nCK5=(HNNMA7oJv zm?*<4q*B@hCdz^=ssIz^Ko;eIiSi(eerSV+jsUXg4Vb71vgiSrs06a;3Ye%2vgibu zr~0Su_DAs(~!(0Tb0h7Bzs08X${Gz(h@uMHyhC7RaJ6U}d-svgievr~|U- z4w$G5NEBPS46m;mdLRLr5z_-Ik5?h;D<6<4af{w_?&<$Tik#wx&tQKf-JfOCfb24Is+!!0}@4d8{9n-z0mk#=v|Yv zcmk4preM>D;U5Q>ejSkh8A$r)5T!o_rau6re*u#IB}D0;0MlOq(!T;p{~Dt7?}6!G z0n)z#N&gn2^gn^=zW~y|14;iLqV#90 zlm{ky0a^49)S-*7fJD*LLq-iq6Rf{}1MCds{(8m)WcfQ7^6>QJGXd%!g9)Jf55Wo{ z{rM*#dtv?&fht@40$KD&KScB5H^`!QV4@$8MUTKlzaWdQfr*0mZigSRo|7 zO+c=M#rGblvc(q2qDx?+HXu=aKFVO3h_s%^0c;Jjf8g%f08$5X&ycE@0P{}@RN3MjWKkcOXaTaQ2~4yESyTchT7fM32jomps;xm5 zeE<_}0EuGrWyTtiaWMb2fSrxie<72h{uir<`YPMf~T)HGobFhG6Qs81(JJLfJ}h7cMDY6 z;x)*kQ(&SSkVR`?qFazfQ(&SykVSo9qI-}hkHLTbZ7v3k%`Xj_Ul>%dHvizPV=_L_{FAf%R`70+ zD(lmw+^q*nrF)$jqvPWaH~(be??1x8z);HB{DXo!D0}@T3~`fU_ln^!?jh-KbeoQ27>q{ zCCxvXj)+BYGd-2xs|NrhE%>No}IW~X-mb1YYq=TVE;)RgQ|Nkuq_@^9z$}Iv(lyWxM zf}FunBKaZ_s^B10K?g5L2BZSyWRMDb4~P+mU@AmGG9VQouYoMF^?|5>TLO{*DFB54 z$cQt(5CsTJKr$c|ppXKo*cA#Ziz3#nODbh)IZz_-q7Q1up$<`yXn4khgKLty zkG)_6nGp##;|N6Li{t^ z01m%ns5+7mI@ZKMBfdivBpRM^0it7y!~g$_lEFc-0V2`_5=jAz%z%g#fJ9QkA~_I| zIFLvhSi}P&;sdr>0~Q?VFq`>b1VL>+um~g=o}mNLAPq7i18jr{M1&J0k_i_1vmfl8 z@AjYokboJQ1v6COg)P+3gB`pe(eR8n5FJOsI^aQ;jnL5z)p4jp6eJp+aRs7dvi<-6 zi*mrW?tq9ig3W-Zgc5lApRV-7?^09XUu(ma?3ffr&>4F@}TL89Rq zEf5`YAWQSXmKH!nct9crV38Pz$S=G9{}&a4MI0a^FF+ziU=a<7$Td4q0Kr4O7-91p zgm*!r;TZxD9ZNuFlz`3nun!!_lfY)cy;}-1ga5?~s2K+qfds=du0S*-f;GUsTL#l0 z@IoEoU65#a#s-KEeN-Lg2pz6a9fvwZL89Rqb09kY+W!B)r~>TF28hUOTaZ`b&a8x) z!T(|-)Qkg*K!V{J84wM-z#8Drtb%C}c)<_{iN=E+ydcr=3?GP&4pbf02pw`z9fvwZ zL89RqHV_?Qs5)w3I{07cKy@5g1QHC-P=IJqMb%IX(;)Cd8mi%72QNr8Jc9$GNv0nBp9C20MQTyva}g&X%0lh10>P{772lfn1MuE!6FV25f!jC zaEG5098i^Ob7pq zZ%`cv7J&rAGhXZghiE^lhEA9UffuHTSOJNKXIy~jh_(Lze^D3MV;dkM-XM`~ut*O? z#1bUZ0~RTPh^T`^dch(g5D`(3NFP|l1|q@?66ptvC_qF$T7d$<0#*u6K)CKY)H{bd zL_wnA85|HD`>p=}Uo;VH#)sWtAFc(P0na^?U}o^YNREeOh69U0g5eogAR21G8sMQm z8Kyzt#UiMNgB`pe(eR7|5FK71OQ(P>T>%lX0Gk1~bSlD(bx<=7b%=sQ!!ss8bg+TU zmX;AH!T%x$s^h>SkYISm5{QOUR1FJY8U$WgXTZY_BpRO41JU7Z z@&Es#h2W4VfQT4^L>7TXA|N92U{m2yxENvTQmCniIz&OD;TbLv9dFJ5|6jBOY=#a* zpOoPCS2~Z6OJ9t5&;Ta4N9TliL zmLqiNWkEcDs6!Ma8lLfDCpgmGP<5<;>EM4M1J!Y05lApR;|xTDD9B$c!TwqU5n%=! z0r%G`m=OXmB(ouw9_-)+iH2wNKy+L*1BC?KW2+H5)C(Xw4t0ovM8h)*AUfuo{r|sc z4cOKIh)6Hk47japVP^2ZV1}A;U=c_#Ji`K_AqK1gZs|Ih27wnsPz?t=ctN7!843^` zS|Cf;gDqu%h)94$Hh@K*>;Q)!8`xBM!q|u~Ri_y46_99n#tDdyE2jVdFWLk)V+};) z5J+S*SfmFcvH>Kr1uT*S5t(NS3Nm;tv=wF#|BDu=JqH$n1j93YAR2N(Mr;EcVFM9~ z28nD3i>N?EJV7Emz#{kZ5?upY7lPUK*p)S+e^SOgLb&zJ+zFac!5Ua%1j z5Rp1mBlf|J5O~1?HR50gFGw^zBLSkr2V};6uo(^z5i5|$0kDV$L_`B5au6)S0TB@c zi5vopeAosK02YwQVX(**h{z}7|Nj>q0gLQ_h&%v^90iLkfQXzk26@?G(J`=K2Sjiu zNZE0)NC8A-IY{ILSR?=XZS#L zG=X)%li+294i0GCALbL^a!T+KSs^h>SkYIQQ4@84Js)nmD4FWHY zLNy%h;01|>XMEWL4$-%Uppbw&>Ka1FWvGrr9ikx7@Qf=E9lKF=T!-o4e<4^3$w>zm zfds=dc0e?A8UFvj=mt3K=0HR$z(&Bs?k3C#ffxIrMjY(m1&M}dG(dE?fpx&0c?+TA z4^+pY4pES3ct#FHhX|^U+b|vcFLsr|oCy*P&j^5Mcx-?Y5_e!41YT5@Lo^)h;01|> zXIMaVY(&*@7oo$w0;1zkhbTxiJVODZqaIbqJ(v#u7p1ij9S0VH1j94_Yz9Y5IPPtL%eaQLlh($ zo^b}EqeAch|3$CCL9qiOk_I*do+IAC%;0~q2WrNFMIgcOj0F%4reF>5ka!EzAn@We zRKvjzUXW;bMhip-Gsx0+U`sO~A|G}C|6lYTEaCwXxepTg02a}Kh@1t9d<2V#Kty(f zL_UE*-DVeXRyc}h{$wZP$0s4R$maV%Z0k`P=_c;G(2MmL`N!E2i!kjVLJF< zM7KZ!@xUUGV0gv?hz1i>4c}lI1YT4@H5}~V1&M}d^gwhlft>jr?92*?$OoPO{}=rL zi{wB=?tw&pf<+P_B4*?Qew54($-99_kPUiH2vGKy-9~b-+FM z2d0DnMI2Pefkhy}@C*@%hHz93e_p~K4jFT|l{99RSr4A0mC(Xatz1mjxJ z$n+eD$UKk;6Ii4NBGLmAVFrtoKt!s**1#JAEHG;XUR-E{gx|pqUXW;bMhHZQ2UrI@ z{8$k>?m=}N>JSBqhG#fHbcmtqV1w!4fAI#Y=2V0eZGM8i`pkl*1}u){P6ym$@u z`@s%gkZ5>@2t>zbR2>`$9Y3Ku4t0ovM8h)}AUYaRb#TIT@V{{HfO!1CB9LHs#*_8n zNDV;Mzy;GF@FEPV;a~?ZNHjd-1Vo1%st#_14i~77Lmi?Z(eR875FKwcQ9RBA)4~6u zXco*-Ai?mA84wM-Q8n2qQ(TS>q5252eRL7wXQIKeOMg~Mj zII0eQm=69IXQ4U{ECLCJXZS!gsG({QfN2nTAu}7|i-R4!Akpv)6Nrv48Yuo2MCj<6 z1JQA)Llh($o*@F!aR^n15KIUEiwdZY1B*a{;TbR1funDt#{d6|guzMw3`C?JYy>=q ziNK5yco7OU;$R0aNHjcS3q*%6$P7`i8FL^a)~IHPA;{=3 z4>n^3L}VqZ8455n_+Q9F%{Z_KBp9AC1)`w>tO4$DMVJPG7kW?)2RnE{qTv}85FKtH zOO?Qura(kYKqAUu5g&+%5=cY^EMfu?5dhl*FKJZ~_OLjUo z2QNr8JYx++M>tpqJb<(iI(nfx4t0ovM8h+tKy;|0>d=Pi;D1pK)p1}ENH9F32BP7M z%K!h1bimHcfQUR&LGh_B%m{%O5l|xzcJP8k!!rUPIyQiHz@4dw(2)k!ai~KSBpRM! z0MSv0szV>9ga5^mMX)pu5)97}fN1aqInw~_%nz%<;cE>x0-jNv0nBp9CYWED6Lwk!SrzsLsc%p(wyr63Vou*edK$YhX+9ay9VBGL#Fu?LIfKt%FE zA`W1Y0EkE|NW>8=VgnKJ28lRPEOG`5azF%CK+0UeA|FJSBqhG%3zbflu{ z2!ZL~e_;&|0FYpKh7Ux83CNkDU}qXYM3lfrz%yGI%m{%OJD^4!?BE57hG$4XbbOEp zc?|B%aDWD(<5QOSD)FBEI4bRvB(V>Z|BO0cI|Hc1hFh_v|!!ss8 zH2jeJ|9?>oIP5AQBG2SNApsA&SeOw4FYZ8%IM~4p5)IEtfaur)G9wObh6hAs5lAE+ zEMfu?nE(<=0E>t~MC!oy!1G%o!X8-o9qJGTiH2wVSq2V3ACMVIU^8AoM65s}$zYKa z5D^WKND5eF4Mao?)t*$CJ^XP099RSr49}PW(ePCE|Nlj4U?UnJB9}oT>0pr*h{!=% zP$0pxbq35(ffw%3m^s+N3la^_@PO#(2kU?*uuO!GR;Z3c9ikx7@C*Zpj#yM3Suh>^ zFD65E99RSr49}2&XwU&UGaKwo7Kn%xNF)a=@@6SG3^~At!X2IqGgRQkKB%DwJ9t5& z;Tbm|Ip`bJn5Fej1YK{2sPqh z2QNr8JVOVfK|G%gVZ0nyT;2_-!5-A6Zynu)- z2Ac{GZn5K z5L*QatwSB6AkpxQH4q(qAZJ#CojC&{@<;0b|3x)mkp_s!D=AQLz#U!-GnM~E0o2q3 zi$H?m85s}_J3&U&fsF`(h%5(*)PqG#AR<#iA`M^>9*9UY*cy0LH^QtDcrg=d&A|>{ zkZ5=Y)YL$*4tM}HA#}7ubsXvt1&M}dd|3>R6?u@Y&0t%hX7GZ|fTxZYm>K*plA&fC zSOgLb&v*ba;*RA1|BG6|Mx20%oC1lofkn1JM0QA`gjhSwP=ObEt0D1lu!9#Q8lJHL zqN5G01MZa$gpNOJAvz9qh=N4JGg=@zLO`~5f^E%!h&X{ny1*hH5D^2ANH zwg(=_JurLtUrgBuvFE@dkYIR*2t>nMiU0o>^@5G~vIrc8wXXrq5ihabOWh5T2sB#Q*%Jo`FPWfknh^vtiZ2nPpdXXrq5ybu9}1l(h*5IXMd zhFE&2Llh($o*@F!u?mPVNd5Fh&_ioL_wnA z88Q$Z6G3Kd1DnAE5vd1>YzK?{mum&RdPYC1*cuenud4m5%2-Fh?7J&rAGg2TL z&Z27A57QvJAa7aVfNU{m4EmLo7z`CoWKO+By(Bp9A?1EPTmtO4%# zqc9BuFCw5C4tDT@M8h+7Ky+LX{QrN^F|eg`AR_xfBFDiZEfA44f}jwEJL3exR41sZ zhdM+-qTv|@5FJ$@Gfsldh=7P>fJ9D#MLZxPVW_5_hMCI$LI-Nwrh!RhSO`7cZeY4lDu*hG#fHGzg(;xCYZ8@WSITB*Px;;01|>XXrq5 zJmCNTf6;ZYGesaG=RhJiz#@NUgM(}jNaQA148Nc!SIYZ5DlgvBkqEY=z)kRgGBCuMM@wd zf*_ImV38Dv$bUW*r#^sLBk*D>)S81Gydcr=3=fEovtS+YP=AQfaT%)PP=_c;G(5uq zqGL86XmteGRvw5*CrIQmSmeVja3Ge0M4o^}E=jtV1tRi|7qkKaEMfo=dBO_{8hAc_ z1M?{V3ofWf4=e%+hG&RCG;9VL@fK{vpP67^Ed(0@kHmK{BLrTQLyb7t!3z=%&$t88 zkq{92!@(*s6!Ma8lJHQqC*>G#z(LjGaw?8sAhbEnZf_!Jk*Q> zi$H?m87&YEFL?g{U-TJlL=Hsc8V@Km;9mIxGeY3S8mJKmJ9t5&;TbUy9ZSGE;0fg` zLWdS27l1^=Gh84#ia@r01KVl<5lH}vdsGcN}u zipRVOF!KsP<`p2BR|3)rGcN$DY;gs$s0mE81|*7U3ncA<$c!~0rLgqS0Ja7>J;43< z1f&jhe#Qxqds@H>A@SXT&knf$kYmvBu{pLTX>kvd{s|!cF#l*kl`WovEGhyMoq;U+ z2kNB7b3mfleF?XJ1=NU)4v_r|knCRq(haje1FCHC3XmwKnQ-&2Kow>j0GYQ2$-E8N zb%H`0>3l+-}!E4TYLpsGy^7j16ecxCVB^1)CMN{09jN4 zCi(yXNy8mPe;2_XAZ zknGO@>4w?w0#&v+2PBGVCcJ!LIRo|22atIMNamG*bi&NL0W+@xS@Zx*v<6vp4NSBF zS#%0av;`!J?jpE*bYSk0IRiRB2+2J?*z|$QIuM5IKLFD|2c&-jlKv?m{V@MDK$R_? zfh?K;6P<%B>Hrg601`!aImmXT`0+Ul4Nr@+p!0-~>|X)W4YOYbs%-HZWKkZN=muob zFEIPJAdB9CiS7W2qPq$n9v7fSX6ymEXAhEl4uJH*+_MC#Z1E9f(GHmC31ra{nCKZ~ z(FB<21&}DZdzx(-zz2H>EM(cRE~)hZ_&}Hc7hd!J7ya^JbyC28QII_7sF#vwFYf>S zhkVYMm$c+Ejpmud%=oAH6R?6Rcsgxaj(#UJc|Ci9M z1gq)((0%Sj#@~P7Lr9?dOF3FEm9lJRe9dHZJ3J%j61elJ^8ereML)rPrx1vU5ZHC_ zKHM)*--)B;Kq)9>`CnZ51nWP6B*HUnAe!#}1A7U!Gw3(6CV?0Gp_&eM@PcH*GgKhD zmZR#rvVL7sDa> z-~UC|z{Z?_h-iUCu7gF^Ktv?K2E%)eH;@e$c##D)_+SSwNG3dE0z}uNzyJO(x(PO? z1R`?bFDNkJA$SYb94DwbpwS($t^|m#Ss-(6gGB-$A|0sa+(9;n|AiIQoCAwM65$yZ z5KX~gP4Eu&U1UuHFIu6R4tDT@WWqCKAi88hmfr(g&H@qP2Ac!-#C=qAdZFeV>JSCV zglD|C01oD>fByYn^Z;zm5s1iPkjO)@$O4GSMv%xOut*O?WIjmbF<7JkBGUT@6ol|e zmM6%z^S_9P+J0aWNFqEV1fnSdtO@S*r^uQFUd)1OI@rMrk_peSfap>JS^f-cxeP=^ z0BjE2>(5cmDT0~<+A;&y#R1WE>-WF^i(Y_5ew+sf#);n`Pr%K2iEIu(JUty)1d<5P zcmUBf8LSEJiC4&)1YT@~T7IyD7bFv&u?M0n7G(Kru;oi2BHmzg;FiBZHD@o>oI@R= zAer!t7KkoUur9dmZ;^HJzc>!nbzl)lB0Qr6qUpgekU!y?-XUuecyS4;2{ecWc3=ub z*D6$9?@@K}e1T_vkW6@n4@6f9s;&>ny7*swgX%i42qY1nVFJ-)kE-b-vL=BShF>98 z9qix*$%JP}Ky-1U>iUGLD;uioP=_c;COm@$qU-Wcl)(6mtc(A}QmC#2i$D_L86VDp zQ_4J4O<#~T3A`})26rGxCOqQ~L|4YofBzSK1&8Sgh)5XN9C)OELp6s3YR;h!QIJe{ z#u|t&1&}%4!RAbXi14AB^8?u&{ud5Va}F#5NrY!qKs4R_0jf&C#za6wj)O#gfkj*( zB3pleLI+;N{zf)f;DtHVU{E~))};Z_RS(t$PhfvgbxnloI@BQwk_pccfavl>)%6!y z7ypadP+bQWfh58+{+tEJgb1ppf5@5yUOa)-7YFD%|BS`Sa+~6Ffeqpv@$fTOF~ivk~cot{DXym z{=w##jLIjvS$ai~l)N~-5qvlt>&s2w|NlRHCa~K_g(EmDywgX8=SBS2fB(C{N0xQE zsEBM}?Db@5u2B(T;BU+DWMJrZQQ^tZc)KPkU>7q314D0(ip-0%U%?(~Il$jy3R2>u z!V}nA#JW@F?V6o4@afuvbL(mYHI3_-mvDgpt$b-#B?yj_#@A^|MR(Q=@Kz3cGH zza9(>y*?@;fxRIr0zvy(85kIL3V@VZ!j*9?0G+$`@-j%Ji;74hzCg#=!mqJ%Rq_{*1Z8Kdj16zEuetsS^zpG?PViK z5yE#bK#C3_DFPjs_A&;f2w~k5kfOOria^Kfy)*|YLRj|zq^JT(5$GhomqH*#E-E|$ z`@pe$=3Dy5KA#;#eH^l}SGB|HlDgKf6~sr>K>6uc03g3g3{*#%OG zuw58rrUppmF(j3sv*2DPfK(!E=Le~j0I8gVq!M%p+)Fc%N`&oTGg&|?i;z@;4u5;e z15$~wT>xa}hu3S8UU(p>1ReVJ@{tRQ-(^55FMw3aA*lo%2KRCYNF~B{QIN_VAeCP} zBK!_IB<^J&NF|!>OF$}5A*lo%9``Z@q!QtGWssQ-Ae9S{RDuqbduatyiLhM~q%sAh zvJ6Qj=rp;P0w9&(9KZ%r6!RLI1O9#hITM`FjxjMXAaVisP7jblx=03r4xxK_+!-Yo z@PSOT0I6g~QVBYo?&VyNN`yCfK`J#sDsO`Agd_{lp>!{cK`Ig60OwH!kjnK)DnWa`G2WN>bAeEg+DnX~-y;KINMA!}v`6VEg@klB`r`^5$>4@TY zaBNNisWe4W2|5Mu<#~`wgzeyL)&Nq;jieHE{N2l?Ae9K)!6BamQu**5!tbDC?_O4e zR3iKiPQC#kmD`b2f{wd;8385p_`K`Qg!I^LZcAcI`M@{ouD9gp|&o&!o501iY6kV+{em7rtsUTy)YM0f)n zG%O&MAKoH73_1?)Wfw>#!W$f*$o}ziP11{FNGd_+;Jr)$sYDCJCm@w`kW_-szk6v0 zQi-q~?9MA7l|@J@LFeMVKf*scJweFI3P2a-zAd3i4%*`xR!9EITeL=H(M=p4P5 zJ3uNCwsV8bTmmxl%NvB>LFeba>;tJp*bdIR;F{+Yl1k9Qc`s8yD$)Et0c7R^B$c28 z^?^2-H{P1E; z(hD^tm7tUQULF9cMA!~4H1B{^{&|J)JLm+zm(xHh5w?qi%sc{8c?n4+=w!c_IUtn? zze5T*kjfQEDnTdyy>tSpMA!}v`2`@Abx0~fC;h#Y0I5XS4t8e`NM#6;O3(>_FW=c9 z`+a8xNRd90BG9RSFHeFLp;?>)Qpt*>5_H<%%lROc2#diPBLbxI_De(nfldK@Sqf5# z=4}s<%8f`WL8t${^aiO!*berL2}or-l1k92fG-t6DiO8|f&yIuq%sysCFr!km*1_C zy$xyAN`O=vBdG)(6ZrBhNF|!>EFhJfNGd_c1HN1gQi-q~+;n{Nd`;4e`!5iF2OSIe zvJ#{c?)RNnK#F!DDFU4o_%Z~f2+iUHAe9r4RDzBOe5nOeiLe-)CpLgorXi^W9S!)B z0i+Uc@qTdhfSdg`NGd@`0=~Rvg;GU=%Yy|VGlh^;g3bbbxdx;XVLLeeP5`NV@f_i8 z&>4U)n?NcNwu2+G2BdNylFEgkwsizZCBpCEx+Mdoate}4(3ycR^*|~Swu8+K0jbPF zQVBXM@FfdKCBk;Fk6b`19gtLl&JcWg%M!)!U^5LsD#eggf({RSxdEgSVLKNn!Kr{$ zzIlf5JLu5Bmu(=G2;0GNBmz=-2ubB~kl$lKDiMAMhbIe2#n(b3SDvu$l1RWpvG6AF#;dgK-wSZL4K~f1iHt?kx zNF~B{a2yqYR2CtrTn`FQ9*|0e?TEgL2a-zAF@rB3nWOj}9G)>CGv$y}f{qt_xdWsU zVLP}a_5i8;@&w^`(6NIr`#>rYwu1`=1CYv7NGdmj+?fJWiSRqPz7hecT!5q!bWGt( zE09XK?K^)w1&x0oDFPi$_)-+42yXGtJ0L}2NQywG6~6pnhT>yzC+P}Er4Eux&?$y5 zkAYOe?c5KJnIj;TOh_tsfc!BBq!Mm%_rINcK+0}EMg$D#NW+(A;&EwEGLHeN zG)7VhI`i=5S&&ME?O=C$fK+lKsRW&M_;N8wCBk-a1nPiP-hYJfJLn9=mz5xuaKG;q z04dsqqzH5@;>!?_B80`@6#nPQnxq#KkW_+>OMIyXQi-q_oM)eaRHh-R1RbOJk^!U= zZt;F_*>VM>(gsN-=y=7K*Gy14ykKu10I3v0QVBYC@#PwjN`&p;=ve_$`QjnM+ebms z(*#n9upR89DIk^mkW_-sXnYv~Qim&{>Z!Zy96y-2d#46l0Z3&yl1k9=kuN_QqWBn`AY(u(b&*tpj*WbI9HbI%F{EU1 z0jXq0QVBXQ^5tBRN`&p;h&BMJym=21K%jFZUlxN@qInxUwy+*aCFuOfm!2S%aNBpv zfQ;)xQUp3O@}&w$5yE0{`-TUkG66{?=&Z<>zYI{k4bHJ&9<51wVTPmJ_IZeaUAGO%9ro-z~KS&1~}fp!f=Yqvpx46z+__~gq1kV-^a00#{Z$jmiJDnW-%zH|erMA!}$h44G*w91zyAe9KegX^OWAe9@CRDw>ieCY*J ziLf1PCOE0JA*lqNZuwFHq!M8}I5xrcW(<-_(5aU%zv-a(9bD$l0oiVZq!M%*=F2l6 zm2lg4f=eh~Bt@VDFkdbQDMDBb&eRPc;~w8ccpG%`<;z--N`$w;$*2INawn2X(218X zgFz}mW12fN9zt`eD_9LUc?$|4hBNnrGkgrllwz<7ND>2`lKGMsVhVI_azA(sH2|d2 z6Gy3sQ*)IdCa{>4i3)%kjjlnDmm7!OM2-IQi*1}3rJ-< zl1k8tn=chXDiOAWi&F!T%2*_opp!OVe%C72$W#k(w_nK`Ie`2iyMR{+gs0Tai?Pj?#ST4^oM+ z9h`gLfK+xPsRW&&`BD|65@9>o?>9gy6OmMc&dz-KTOGyk;5a%0QfZE)5_D$f%ZnhD z2;0FqZVgB!FOo{oVVN(NgH$4H2TxvhfK)!dg77=&5Y3mhAe9KegR2toAnr~im7v2j zUj~CzB5Vh{vj`6PR@ME0aA&u9h`_IKq_63 zRDw>_e0fh5+3!0!K#Js%6oC%We7O^(2+iUj_tqr6_<9N9ZP4MGFZ)3%5f+0}?cg$I z4@jjil1k9&n=hZMAbWd1IDpoGR4OB>1f9zHaxX|F!gg?~oB>k#^CH6Upwl>CP6nw& z*ba_z@F4DaB$c33I$vgjR3iKiZZLL$%v_435_CN0OM8$?gzeyQn;ekJY9y7QV>@4p zf>a`G2fGtIFdT@a5_DYW%h$>%eg`L`7?7FjNGd_cbiO%Sb9g=XSo#1*t^%9UMnCAeAeTRD#ayeCZ5QiLf0UN;)8w^++l~ z=XAc51gS*W4lcLA!@Z$MDnSQyzI?BQ?Dw4_Ama>>6oJm{e0d6_2yXFC@X#$ck|NMC zoiCSy6d~*c`-25!+{5#TumK(4`LY_M65(TTLGl2;0F$8hBLn&l!ZbLC2TAoCZ>fupR6p@L1<1B$c3J zO<(4KR3iKi?mB(BvnJ`q3M7@F<4#{Xfm9-F2NwWOKq~8yRDzB>XiAV06x&V_kRe~d zauCmg&Y^wT2QdUTz6y>r7LdwQNGd_+)4ogrsRSn|@HFh7ThR0y2v!J6zut)Ddz?Gp z+**_Lq7^I$u?}=(?Mr!xA<$UZc?YB@0Z9?)l-ifSB)~zy69`!>cm-zD^P@12sX$ip z_ttUlJOVO87RdOzcxEdmDza0f_bCX!0fskkqhK`Ifc3EZ9o zPZHQ8sRW&d`|_qZI8#7F5z-r~0GTO@q!M&W?#uNcm57z>1u##{If4_>zW=;Yy-MIe<3 zzk|D@Js_3qkW}`AI@lf{l?dCxg?tT2Webu@(D}qK$ zzbpf(MED&X?*<^1n~+q3&KQ2_15$~w9b8oOb(FBI3$&z zLxo@d5J2%exM=-weNEB}6C{FP~w*XAe9K)!6|tONM#R_O3-1&FV#RQ5w?SK zM-ND45|T>LA;vHN@MHSD1fih!066=uqRAD?lm{wuAi+ z?#DjagYY}(u;Z6?Ae9KegHv(}$o5@GDnW-JzYGDXMA!}vr4W$H2}mkIhau!;=)B~YtRO`Qi@}Kl+=+BVQVBXJ`Q>dsaPtt>k^p-fyc|ayNhRojIRN;KQSyJHR`say`q>aie|2ycUJR{)tg6Gz zAe9K)!DGQJAeH$@DnTbCzvKj|MA!~q5%lERnxq%5NGd@mBfq@Qi{f{1^ne$rQbmB*1(f{svrnFvye@H=?mWCcj& zTqKpCqm^HpgH$4H2b(zqq_P-ECFscIm%JdAaNBowfE4*5DFU6s{PG14inqbJyaJ?B z1xY37^yQcPKq|qVBJjeKf@{!T%IcjUUxQn#;BGH`{S42}7?44?!SaxH;3iP0ltK)G zb&SBV=KxZ<5lJQJFz1)vAeC?*KnC(mKq}jjRDuq9eyIpji3mS%;jaKv8H=P6bhz`& z@7&;aAWy(f378LF?tuEBqy{!l0GZI@0hu6;WCG|g=$Bg|CcxYe9&=y-sr(2w2jbK1 zAfI-FR3h9D9`pTjbxqQX<47t&hey9m1gQk|CU(BL3Jup_uo_VBF96afgES@{fb_S6 znl1k7K)GxntLH!Te8hip~-IMLGKv07P0%)(;7LXwl zNQQt;t$w))ZV0&NvH@nud~Aj=?py&fgdr0#ccPq!M&0_RC+KC^Y~$m`Xq@&5%@rPQ!kA z0i+UqVL8oKCtO2P+BnNO_3jvwA z14-o}P{IiUsYKWgE@B)&D*KRBf=<(ZsR2@nupR791CYuTB$c3Jv|s+?K=C^`F{*%6 zS|O=C3bOqQNF~B{aE%IHb}fLU@)$_vDv(Nq?ck~fJSP8aE5h%fz?138~mA}CTL82LS zfcML(>?lPl*aK%kDla0b1Rd=CG8?24;Q?^)?EtAMkV-`Gf#;bvfK=8Z zsRSJa{!$#I5)pjh$eRID8H}V7bU^saw`|~&0G4gQ$q~FoP!mbzMNl*!2B}2Y4$d|m zAT$4O1_dI-@1SGEU(N)nMA#1QkJo@yUPV#~I!OFwK1e0P@8D1>0I6J!q!M(1_)Axi zN`&p;X_63-%0?uWpp(O2N`q7)YzHTC50J`mB$c2O!(V=6MfUqna6xZ`qzH6~_{%dO zMF@+*>B|CS90!t0(Ba}Q7lBkFECvUq21w<-O^5&j9XkH90;Ce|?VaH4zY|Fj==AZI z!5~Eli^1ta1Y}%4l1k9|<1aNqDiIcgQzZ*XWh#kmnl_-Uc0D{<0CI67KE&U^D+*UX%1< zFOo{o!R0T*K`IfpgNwcwAeEDmRDupHf2j*niLf2)_ZuLUnMf)hfzmHCNF~B{aCdVL zNTofJO3(r4FK;rV6q4X}1bF&P6iFrM;PaR3K`IfpgY(%EkeRPHAp8zG5dCE(PCtmG5_C}d%V>~Fgx|sOJ^^IrbR?Ca1Jqv{f>a`G2ZwwENM$aPO3=aTFWEsV z5w?R{)j1%Q&PXajr>(!d%Y^Lr?teQ|K+0s0l!1<5f4L2$4AfMCj3LKdh8C!c*Ms~G zYOhp4+AF!5z)Z&6}IR2IE;B9N(_?_ha|L7?N{UrvM=1RF;NmzaMptx0-u7D*-O82FdzAeD%i z1ecf}Kq?m_sRSJl|I!wu5)l^QoN))FvJy!p=v?@h!XTB1bOa9H3m}#LNGd_+#lL(B zI%f!BJ2-6~0I5_(QVBXI{^fpK}Pz;L%NS|>5$b_9>S&#|r3qa?|zYasHXu&}@0iUqIEn?gWI&!D``inlWG|1zMuuK6xZs!PC2JGps z!!HA1dLfz0<~=mv{J^R}`r#8ZTsw8%uSt5*0+s>k=UMJV+%XIe|O8U*4@rda(vcCFq#Qm!=?7o-wlJ2=yU`vJFBfkF}DchIqtFOxwk5w?RHb1Oh*Za`8AI!p4U zB}gU0c5q&p0aDq9q!M&~K{PeDxvgzexsDgmi9LQ)Aj zOY-GzkVKqIXJmw3AHcE@pMuVwd|3%G0agrxE8Yl@UB{4Ag3hFT z=?_u~$~=fA|3P3i;M8{tk@~>RKO2x4O<;M5ZJ<*uUvfjtfTccg3>bh^Mj)vKoo@N^ zA!>sFTq(+cRO%tA1RZJlayv*RA_l|0SYsSJ3+@= zzDx$GM8p8tOmLdofTR+1*yT%0kV=H@U>||gR2z~?&{3B!`9UfXwjif zxd5c{!!m?#K_^(gtOTh@})mWB`Ezv7L~x~f_=dX!GZG#o(X#E z*mpL7jHw69LIMVKj^#@Zh%wMCuoFCG8-=6@bZq6z$Drl`!u{ab0#92SAgKf$XZdm` zNG06;I}1Q|aw91MonHBJ3P=$m;J__m@buKfrHJ4Fooe|q3#1ZZF}Sq>o=(}0q!M(L z7^J*CBk+@5tEFh5_I(C%Qv8Q3Bq=8OUnmjrX`X} z&_S3l4}nx7YzG%`;4y1{B$c2eE?>?7sYKWg_7Qma^yw0q-`N*{&b549*o&|l9O5=0 ztM?%(107`f+N&2-;6hpf@BvB>uqsfgs|+i3L5*u2kO?(lIZzT{UjRDP61BNw_Z`~Y z3GIFp*zL;G{DUz#ES$ep9Mp=Hm3Xi^Y5x=k28Qq~hX0oX{)>t{Se?}Uq4irSyYYdS zvl$r}!aD8#iwZngoz!|DEQ_I(8?1`w!Rn;f_qyE#y6bp4U3t3QSUOz=y4^TBUH>#b z|6k7lF$<&$Y$H<%TjP0#1_p+1-#?30HmpnPb`|KpaPSca^TjO2PEnl=>yj25Y*?4n z$!h{4Z8bKmOM2la!objaAdH~KDXwLI(ZI&Q@cPV)B0&(pM&ZRbJ}^T(i{ZsjCJ-~Sl>0v` z&xUnLFV`?IFudsEV_qrC4-b36$Hu@A8Tnt7<-zKtWDQOfAbIKQugo{pz*Ot;{y)yanUCa@i1iZWNctqoAe?_l!2l9XZNS> zSPtU@4xO$~TECU@Sc-yN&fjvBfq|hp^$&yfhZ5H2e@vx%3w_?NNoqY%!Vw-8{Qp9y z>yzf%Ck*^8(?DqQi^SgcD_IEvoK9S-X*QQq<1dcO+8pJO)NHH)p9}&qCi-gX!S0`ogJY1dh!t6gN0wW_!L&Cx{W;L!(da+8HfnguZ!_`UM$M$nP zT%BZnJhGS{+5g{*J~rE40a+9uS0bGOV!hCZTE&yakj0e6@Lv=pYJA{umO#b@P$FI~ z#K4fn@uCqFqQ?I_YyTMEcD9sF*|09Dq^?sIl>fS11s26@SeIm3%TpTt-}D41>%V6N zC(Zw+M?k!XjG#2r{h_n;fo1KJ61C=cES;qftV^F1NjKXulziy6d$E;~fx-Gm$@HCJi-B@+ zDaVUTfB*kCzU>T>F5$@Hc<~4%arlL}5Cg;EEQTz`|0OCsF9iRCZf4^-oW+>Mkj3zV z3Caz7p#Un9KZL#Dm1kfGd!Zo*B3FuoNFgwr2~2(hC6O2Z_(9@VL2)#_Xm!$yGEn|L zqOus2%Hs}$%KE_IFyn8%u7BK&ZwGXi{^*ST^Wx;+|Non7|FA~Zv2-7M?GzsTUlf$| zy9;cXKcrd4vGH$r6X~rnkSJ3Q&&UCF+BV986GmhSAOChYHs|K!8rC<89=~R3PW{2q z?fL^$038ndZ)(u6E~(p8n&85mxx zWwgNa9jLM?QGVeCPF^Ka871%6B!$7VAlLsA6^{QGI$cyax?NN_;tppqyyynyL=vt2 zgTva(|3Im_L@Hwnerx}W>O5GTbclrk>f8UKAm4)AUMl_HGzV0aXM>#8{Q<7P092D6 zi#rSt46%U!rX?Vijv$r)FEsOlg6aQ4Q0RdIi!b26s0pa#=LL!Ue;FXc04m!*fU?B| zeg+1lK6Q`jU)18k>ZB~57e7J8FR0$= zcID}G%V|AO%CRs4tSIMyShhh9y!Bam@+dkL>hk! z|1WCuV0BV__p!LcVK18h|Njp%vy>xC;Kiq(|NlpV#Irau1Q^#Qy>Q}VVCXL8X#K|D z@(R@7a8qeLP{JPY;uRAELu9v`4up3H!ZU&J&OvxK5Z(a@&jrHU1mSr=cuOF>7+X-} zfQ+3C63F6xu?7?-;J~cQX#HOz75-n;1zgjV@;Ckm1$_y7_=_}O= zzUbv;U^v7A@_ZKW3l||!9Cep+WbwSP0JEEI!AY{jC%n5xg`@R4p1?V?7y|x_g7U@TaHPcC{iF4NDd&qT zfByeBJ`jI6tlJcnXfuwyUy~I6|60Zl5WP5K!@8vZ*D}_CIiURZ|60ZpFb8BK=wcR- z3Wjb|knxK_*{npY*%qXbp@g^D7Nm%wgr)UBsmel7&Rq zMC-T6$PyFO-16!dSWD}H5@}FwIS4WVCASzKaCpuBBIh?Koa5pTXYpiMfO3NgsD%p3 z4JD<`whMNxOJXi{&SH7-Pk@0T5|moQUhG$9V2A{_21_`@0$$t(apBn>G$a9PJC>UN zFXed6mBsSn4L>Mdg@F=9&&G90|3yI^fz|`1VlNzoK#gHYnGo>eyC4HYCtKu;A6yI! zhr_~+zk#dA2t5V{P?Cr&RkviV*sw0COg`+tsKC$XA%e`!C;m78_}~4Z z^knz(_&BisEKo~O7;#Nqq0IWB0vFrnUjG5+?MHeofGh1G~&VPBxnZDvdB`13wz-Jst_WrkMp-MFflMJ zKCo+DQm5&XUF(v1I~dp*7+z~0b6{a;=J5FQ{O1y#O-w6NqWi8^O}cV%_QbWCsHWsPR+7)cwQwo7?Lk zkR!kab7W-effC4WZL2Y;|OKaWxD>+Mq3 ztZxyoxw;Q~e7_-mp!vYpfd8Tapo;rP^Z)-P&aMAT?8D)1GwHNb1@#?3oji~!4zD>u zJu;RCKNb#ztGYl{CMYD$|GRO#=4$X`aX8Kfs`i|le>3y%)h%~HK$-DC32!h6ytvH+5)f%V&cgiFLaubrf3Ry_Wc>dBzf%_Euul2otRUAjGB7Y0 zABc>NkBdJ1-xOr?3umw*5VQHj|JP4IjoofvfnehUmaZIOo$TG8xjUMk_}V(VaX>I~)SlH=cYIKb_N zh(4%Djw})W&)!_i!%)K2?aR}}_TQDKgVC+!c6TUGx355nQFHAdhSHS{zZFVY8-8<^ z&TqX`!g9>%Ke(gaV8_7U0-9XwVzW^wVX@&XWpjJ|+3)pZu*3yWbG?>>p@g&B72-gF z|BS}BosCbvW^!|Eu!|}A339F4w}XtO@*rzUczWF!8!VJcS-L;G<~2TGeB09X5C4<{ zovwc_zHB{NBIF6SoGHfXKYQ!R(vKj&u(cd02?c2`<*-pG@wVYCac{j{V%vI&f8T+C z66F{AdJs?YcCmH)@<2TIpB>@T*Ss%yph}qC{w&oF66R(FhX0HwL7kB1H$12bk6)I7A%lgHfni_6hIL6{!5y+K;2I*~ z!Rn-ipivy_!=0ufpyb7FA<^mjrJEYXB&XZ{x+1~TC6Uzhc9zgZv7Vu~%*{eQjtgZ1YU zp5v?_C7?9+S_x90HUFq6LKD4@Umh76t|e>(8b95S`$0HBfPtW+~Tw ztb~vGXqu%&=}!ptsoS>T!Rn;o;9%`z!54ox1cU_#ce<#U{J-A)!uoZIQRs_nKfw8_ z6I2%|2M31+{4Y^a2@4MXf4%iUDId7bQvLD&e`IHjia>Xaia^+Z(Hu}AarkwF_0bX* z>%*lD|3x!EA|I?j^S2cI|Nq}Yu7u0MLZb9Hi1?;`%%S^5=!?7`(A-|i6ZT&;<-zKt zmoESR{|^lde*rpFsrd*@7*x^4Mn^^-4h!G0fMIRYeh^`Oy!!*jPyo1&-mwCt21MXe z1Io>TVZE+@jK2kRmj3B1{qf@VJ5VPrvV<2jFcS7+0SCC~040eR-%+JnAyUn?f0*J* zxtnW$uokfzA8gH6Ihm01bkM{xAFUU$g<#Eiwy*8hN?-n25WzEl7RM zt+@YS^>DfPXs9Z%#htn!i(?Oi@>gJB*ozsTKq(#6mvI9%4Z~s<{%Kg36y9CS(S0h| z(z1lF`$qO{p5}u*%(tvh7ro0qz{7mV`b05@rDZ8g_rcdp#s^vtlyG%NaJ1g;jQs;n zpT9w+({I*N9#BPZe8Ax)sF&3In~}fe9;hkdm(c0^quZCK(=VahgQfW=2Y>4hkT~xL z&^UnY7Z7=o`KR^uT9xdRJl%CM%_)`~4BfV1X<3l86Z8G%gFM!kYaVsS{^@40?PFj# z&|Q~O%6Z%^1vK3FI?i?i1H%C@zmb7~;kBRbL>M2GpI+P9PKNPYLGpUGy)b?gh%aZ` z597Ci_ybAg)f}YwJyof^^fttx|4V;#yZ(VT`Z`^I^tygXSq##5xZC$bN+)R2fFUwI zJ}$cZX>1^TVFL6{s^&K$!QC+`3ZY@$#T>?_AcMoZ*_wa+JLaMy%y8UAMFLa|^;Qd% z@OJyLFrPQ(v3PM-n}MO*kEh#>1H#`6;=8D5d~;w)<8PG*C6sKQ=D+{CeN+s3LsVos zT~uT`eN+@Wga4Go^}6ITbo;c4w4UsZX%pyX2CalB5$nGGqCy9h5kS^5*0|LBbi1gC zH2?V5{i5`2Lyd|sLx~F5SxC-s16hmY3^NelMMWY$E;hRPh{$1(<3Yjj`dGJ*ibkU) zD9lT>nr-Lo0*y{8W`O7yf7n6!ou&0a321;n>A{2UwpCh?APNHqk=2V?Aig(8_w|=6v>6zht9kzM zw*>tE{~v1N>0O{U+>8C%3=A(tK}BKro8~tH;AjSohJiXt!QuP;o;mEcKE9iQ;s5^< z-qyn2*RFsJ!|w$^a^ROaB;`{`fE21FBj+K!*E`Kl~T%0P}lYKLq?2 zZ2_rs{bKC;!T5vq_fqzK{?8nCzvgcJT*}^k?BD|d?hl>dl<@sprzyySxcKOkhXXSH8pdpDY zxC#8m2LeFg#Std38DTHBt1vJ)H2<)PEVBrEu?nQ{oi+2ZEasg{wyaCai21rEN&7@# zz>88Hu=>^mC4$D^Ak{-7#E92S#@{j`zOG3M4t;SC6ro3uoEi&J^WWqzOCzYFe*rq! z586J3m|_i4ks+YK$dF<1bxl&}i`$wYyLet3XMKTo5?)xpD^YF!`@cjXivcpZ2Ql!! z*^BR>K61c+v(W#d6CSKi0ySSF4`(sICMbw}g6q)rQP&*Q&A^Kpq6{2btD zj4a`CYyPKFa|t|0bhudstdha_!0V5}-LjxgL)bo$-tcZv&qBDlj)k#=H~jzQ@E0%N z!}<;!jsI>mtxKx816COi9@ggssVrp<_UQP$Z*ml5=zq~EApe3! z7b-xV-)q1A{|Ajw);5v7 zrTh5nyex?qkKcnv?|xYSF6Dm#>K-3w08O46A9x*@#q}bR0W>lZ`^QqQR0kXo;V-z@ zA-%#<@$eUtAiXa@YeyiuI%A)_=I*q6%^v>Z-@E_+;bRz}wPW3`PhRBx`v3oM7S{_c zP=_4qudrT-$C~XJN`(VnsDPTk2O>*3vIJkudDVfDTwysM$ z9NN1^CF1Y@|BY`nm>C$rrG)X(&Q{RSU|45s2Ll5`XD_HC>zvvEV#n5WmR5AumZbGe zUBJM=kk-=+nv+fIi7iO$am`8VNzF*>$xWHl-wK*-?%uivG{@fxB0F2>FfcG2cfG;L zz{t?Kbpog=a`=-K(AnCwQ=q&B& zbiMLlbPZ^zm!bQ^f6*17K^E5w0slppfZIi-JgwhKIkK2uuxl|eL}q|A{TE#Txl?%# zsDSDPdC2%|+>2OM28PC?E0`D9 zc9V;WOeCny1*!of4~J#3WGTFGd<$y9g}vDH3^XXn)A|i;$YPNCQr0Yqh`7VeY7C%h zyDXlJ8K6AX^!@+;7uApd{|D7N|4TVu{00>hovu%yEsPhi^gIuA0p*LR$N&FBCNX#a z|NkE}(DD67qz7ok?0@fekCt^w|IJ>Qf$Toc()?c|vXiaoMSL8h6#|-{Ol!3CjVb}P zkh>jim=88u1h_IVlzuQinbue#!Oh4&(V?RCK#3SQ-Y&dm2lX8gQ`;|Ys53CUc=h%F z|HB#GeXEmREPV3+f8^pnpaKOHsEZl4txHwlDG})Y znEj21xkQDd`2dggv7*=6CwZ8CR5;?S4;Hh66fhYdIQ-ufr2oZEknxAJ6f%B*+^G8% zR8V);KIyEz0U9;=&0X(PBHDd8iz!n3V2P6U!4eMbgC!~22TNUEs5}GZsm|IPt^Z3! zK!Zn#pe{Ygc?&_r>xBR1G2NG6fR<@=e`r3&(arWcs{3&B3;q(D<`--w+8!k`FHHXY z{|}kvhE@KDe}mG$$m@0cK+anTB3_H_1NnC$hmCX#UMn>d@_<(&>BQxO)ny^aP3Mb%Q%KoxXRvc|jeQZc$JthWV7G z@10u7Zr?kg{!MsHr;8xRf7d&&Z@-8IIfo6Jf?k03R)b8D|6iUG{6F+T5{@i}7Y9L|^}}E}REG(6yTV+>*6n(s(>=xbz>D*r|NjR^_+k-Q)GtdG*%1^zi!tDFYbJTd07MOJyQ_%;{QW%nOwpT_U?t&1Cb>xpuA*!;P9C<-67!B zARONhfwm@=+H^BnF_!9a9Vk(=N@Ofm<$6*gd+>#Tl_OKBB-eowL90aOQi0}!EX{{l zxSo_=>i%zh;P3?L0~a4OA7DKE{SYXbl}L0kH6LQMVk~{$e2|grK*^o&hnN@`7)q9; zbu%>|0-1k~>p;mdkoiZso|NouKFIXCBRCYa@!T&&mKvZYM)I@&|Nn0T>3Xq54b+(FZrcJ;4prcUP~Z$! z@P8Y~ycb#sad}Xc6WQH%0HV>wQlr$NyX^=A1B32A1_p+J7yq9A|KHsPn%LS8YJzAV z4|wq!ECd>w1o7@Z1-SyG|HY-JpwuAHyYC99eZg+Kp=(`IiMZtokgH1h177H#YljZmj=N0h*B%>}IzJPtH$0h;dv6$LKu|Nnn+^8u*Mv2aQEx};XOf)b_Xx*UcQnHPsZ!UZ|t zW}m`~owq=`kG%+g4{8?kymwuwZ>&wky_(3SQr?B!+Tv@0{)k={1@E;Zu9PEUQDg%S@?co1qEWNEW zm>3ws;nLy%%Xorcgn~PqE>H!G$OBhF1z50H_L^5cDx^9h>#y2~>>SaoOVlQ78Q7HA#w0<`n|bzgVslPumB#vlLxj|5k+tp~!oKOS@A zVJJ<0vF`5w|DA3e-5xoeeBB-yoqjCceAc|+br(Y2yx<(vm(YW(C<< zBG&E3fsp5T!2rrCZY2zc1J{EU~g&`C? zwiIl9JGj^P!;2hHEA`*MPT7EM>yk?4j5i+{C#cH z{O@n65VDdzpryLEoB#bO73y~V(Cxs2kbHdvq?a8uo03rQxBFN$xbN2dMgiQaHa^ajv1ZnlK5LD zf(BS!pEMsZu>HWmz)WWAk-tR~H1Gr}40@eq!UA4QmS$iuzU0(=gvT=UMQ1fjXE6_d8|Z|>hT3-w{4M7} zJ>JsyU3@Jk`CC8>xcRra{pa6y^5rrH28IlTF+S3ug~(5ukMLxlH0UgS(7SO(=enfM z(kHLAy4)CB4wPu{Z?ogycHp&8x9fwhhAExvk~mzfW%;+cF}hp-D0|gi%i-qMV8>8; zvAguif7b`i$2gj6AFy=d{r`K7aw{uSCx}>PI zZbQekP6I~=2d~o4-Jf41{r>;|<@SI7|2OzB%d$9FA1wRk=GIX6pMk&CCbLwmKSS&{r}(T%+ndn@tV1_n8Wx$Z#Aeme7(ui6qGLbTa*6%|KEJ# zf4A?S_&8AZJ0uFucp@1Upp57K^8f#4-v|F++_(kGe4Vv-US$0F|Gzsvqq~&jMKgHS zFNd`=3x7*EDDV}S7#Ln8-UH>s8?CqbTih5K7#)Llu`145``wU;pM-z{KAQnq>IK z3d&E6{H=Ex7#Om6UsQrdX+XWDZfBOo3ES2sbvtt`P65+Ai!-)?=IuaBl7Fz)3Z!-W zI18k8^04plGkFDTa2T8nyNPvp@T7j+}2~hFY(J`R| zB=_t;xRii9TNqq=z#V?-4#?rMpxhn&|N3#rg5?+BI?o`B_r;etpyK1TYV(i(r3#I| zA>IvsF$JXSh3k7*cL%h5@&N;=ar^)I|Nn=ZZ9&uW45dO@e_w=w`tiqEK?0x@WPIRo z2527yVkHe|d4B7G#h~e=QbzE~;bzsGZR?U4npHt_M+}Q6>;i`gZ_loENyk~I>{^!u z+H&G>xSJOwzYwG``=ki-iPu7)X0mnwPvb8J1_6d5&gKIm)(4AT86N-*do{li==SC4 zb`%KfF69aD{-<5Z(|qjD!T0>#=QB^TfJUEs7+pa5-uFW{pXaxOjGexJ_**YCF)#%8 z${2PFcZPoH4*Sy?`lCDa%eO;}ov}QnB?o`8cs2jBFJsQKkLvbjvG(RDb!z^l09r}a zP%PPf>hkMeA10RXmlb1nxcuWRRqpoXP?UTv)9dvBE;DBbr~&(rvy=@a8OhQe%hMgq z(H+gw?fZw>_e*CK3utCOilsY6X4?2P@w-`dZ>z@T0FqdWG; z!QU)d_MN3X-f`CV%9y(EG5h|2=(4`n>HDXQsr#Dst&+HIU!Lwl7VAQeQtRg53i}us z7#fPjyH8(!_x+k;$qtu)KFlnoiXcZBzLx6segGEV0&y)!3hdrO7O*KC-JUFWa;&KunXj?%ddJ{!0zT0=yv_n$=2y&@Tc4L!+#F`*3S$K3=2Vt z4YcA0)X(nbov{nF@E0_dnZe+|z;N&(KeGqVZiWU1hTy>e*C6s>El{&L1319kZU+H~ zWb={^P?SQC8~d*_^=g4=mDL!STN|H8_jme*w?`Yha=O1pl>{0Gqm&a>IyM3}*IyBS9uLF?RMxgR?M4 za9DStK)CVk*UZcZoLdjn{_H-Sc>tV;TMR&XILp4%^+!~v14pL=OY;E^uhK7BEZx7s z6XXY<^D|fSfG4e?P5~_d295X31=Y3F844H}tbcWe{wa6vKBayB;7gufcLB#{k01Y= zJ3xy7|MyM+ow(L1&^zG|sQ7dE^MRj%p)-Kxc*6^R1_ls^6*Lj=S$euV^iQ|z4_44J z(1 zzzMAT^yOFIFDV9abRPyUbJCLXOnE1h0{N1O}O0zHB z{(qXEeeksY*jr=yr(3?$SD-WY4}V`MBLl;?!;Ji`u8a%}%r~t+^Y>eW=1_hA9Q?`R z+5FSK)AvUiTb6w!Xkt8`#X6p&)VcX5v}}_C<*^^VK8)bPZ33upQv($hlCR~P4?aMa zoHGIBJ*4u@pQAgTr8APH+n=Soo};spquWbUVpTLqXq2fUVm8m!6^VLgnj?? zx)}ZG0i(m6U`_5RNPH(W6;=Z~5VdQTG7mTHUpwb|}#&!F%So?!2lYh_vm+U@w z`E_pz8!Wu}5S57^xH19DU<7t7Pq#lucR9GAE$8U=X91P9r2@>Qe>&mrfmrDKrI+Vp zcO^@wHwUO08p+b_&C(gk0j<@-yL{N71@k|J4j(pfu!0NbbD$#>8ZN&F70j04U_A#4 zR(=MM=N}+RRZ+`fp z)Az%{pDe+i%|8{w!fUyk&;7sruG#m;|JS_D2Ol(_`fvR0@+(jU%?mE^ZoU@m4rb}L zRu284{Ez#3DOdAh5$hYBu^dG&tZ$Uocgund#-`>bM9t08=+`{W)f^09ot?29);Eei zSl=i$gzDsk%UOeUe6YS*D*9sCumAtMZ-CaFaDdmHaDo~TFC0J%m%F_MIvKm21)44X zmptv11v}DNpj)8%*ZX>5T{FQ&*%##I^QD^Lb|P4~*TbdT66P1a|E_V~@f6dH%(!KR$?ayxCFWn(OS-QEj zeLr-6gr>eu-ye0%S@v<(-}zfW?aXd37Hcn#(wOG|kc3#P)_oq7z5n#qSg?G*+!^~u zIi|yv?S{78p zmI`(I{;>u(BTCt!E!l40Kb;)CPAuRO95mwv>b6X{1Dfo50@}D>Z3=4JmMdkkyod%3 zVuNBm?8OJrmIEv^U~}$(#tv9sM1aNu4u^KmXb_c&;7df@`l60RSNrF_=!N?5v&zGgN);1KXy4zvQ8JM=~H z|NsB3k42V>TfZx1HvaG4e4M}e`G@c@XbpcEyctE!l6AtibxBz~@g=;WFATu*n31K8 zui0OyKmPx})8d5!m;&u#iH*5#s|duYy)|toP;V{@7W{ zVg0?7+4!5A@$JsoC(ZvJlxM;gv3WNi<8OZUp|g~y+m*wb6&&E^Su8JJJpgrpK!f`n zFX}+q6e+~xK`AiyiS_*w!T+Tk;lVGSaD#`ztnZg5hGlU;0|K(a_=ffUQXflOP+*i8 zhrLjH@&A8h>jD1OBG4d%s{m-xI%w$)WYYenD`-6Ge|ITQ7R!qXpm~bJ*7r+!yFuzo z*dS`U55L%S3l!4=88<+olK|@7#&WdYF6H}Q$^+gP75VZEsHy?aY4ZfX_;>FA|Hzly z85tO$p5|`_jbwn<>4U<8zr72zG=}BHcaVjhwSR(N>;w%zb-F$Pxo#e4SRIlOJ;Q7pK7GT;`|$ z|2thD1P8q6`UKJ~VOjg6)WiCFDVy;(x6V=?cpQYmn|+|<3Ncdw-OMtOng2^4ys!lu zCIai7>Veks)jnV-HEjJ>%IJnL6x5Ukr~3b*phj!=kJm!or99oS99b+cv_L)n!`-z{ zTL1I6f{F)dTFBn1m7ys_VQnvAd z7yEDg|9|+!>-+!zzpMc*%lKa^_Tuh+(7-liNp8T4Dfj>X?_`VYKK}Yrw~q=-u<>o{ z(_!Hy9H3cf>)++lFV@}v|36DCuG0XtDn0mx!+lUph;$!&ZP;C+B4Pcxl%+%R_08^! z;05AtR);J!hb<7uNO2M_l;g4Xb{fLVXxVt=44a06K2e<=rO98u-<|Ns2k zTzR^EzjTF)w1hCqmdZ8P3NVxib^Ctk?gVWF-ebd)#qeSQXjt-yz~M8Y-EYD{;{@Hl0^PM7-3PlbG9R=4SH@xegTHABXvps; zXso43zS*`0ysS?wJgoUSfAceb>wj_ar5thbu`id3F)(~T4hphT(St9UnjbMY|Kupr z`n>eN%G4+8Rwqs9KE4Yi+x(KHh^P4hGxLf6Dy=`(u1@-|()$G@|6irI0z`AHTb*RG zZgo<`y46X_ph#oya%1dpXY6ugI{1>Q!=0)57<2P+u<2*uruTX>z}13PF*YA#YCg^c za>FvXstFJ^&Bqu)EZBR#Rws44^gZcx>3`Dg()Xg%rT;~@OW&JLm;N{1E`1+5UHU(CyYzkObm{-n?b7$7 z)207Mw@crjPM7{ay)2;0oq_oS^ABinbpHo=`p>%6NgV4}C&{c|oz(5h5f^{*@Psb5 z4t8WV#P?8Ea1m3@&m;U*$GPPmD>ZI=f z-*5g`={4A}I;q!_0Tw4eA#tJ&ij$W0;5Y#(o-k$o>ZBd(S0_DKzdEVQjam6(hdXog zJ8I>~3l>ZFhjtCM0jtWHYVusW$6k#3hhflilxfo_*Ro=%s3o^F>uj!u_;j&7GemQI&`7Sy-_dAs}ngbk~c zW^7oUv|_{Rq&*qhBlt%^`=(PmRY8SKw~LBFcLaFFtg&Qw z0Z;S4eoqCsjoB>F&E4t2(_GEMPl11fL6JF0ov{y+MOW* z8n`JC_+KFM!VX+?@Wg`Egs2E~GVK86?!%$oJ}MmDn*R%B{ufI8FVuJeT4>vRgeMj> zClVGO-2Do)@x}O(@i*iD|1Ui*b$FpKd;u_&lhX?)xGr12%=|NozbcE1S@ z3kU76&ye1t$f_&89z3e*S;3IuNx-0}}p-t)vB;($!LCV3W)il11FeSG09ya{!}>RWOC_jT0ok*<;v0C+s`X+1 zmSjfIEc^Wf|NkFnQJDb}Ukozu|FwV@ryznYV8N1YppC5oFSZ`||9^4CwslFpu3rLP zyx9Byf9rwBNZ59%HP=Dz6lt#g!c?l0kpa>PGO6JJcst1AhHdMTN<=aOVB#4EKr1n7 zwyjHA2qLb>eYEW5@|D}IGr;_~n zZwd;v7kp50f&Zlf{~;?&Kng$=6}X=OS{?zUgAY3$Q)=zzXej!gOgWxDTncG%UF@{QUUAF zr2>|*Jf%Wl>Da^8pG(-gYk9zJ3@?y&L>uGIHE>*ZAA5b(GFGINr9&sx~ z#pYU(|J}z*`MbC}I2@d;PM65}mwtXN3FmV7m$3f#6)AlO(#+H$Vg0+b8>FX{zuT23 zE1)BW?SI6}ivR!rcgVfCaP9y9EU3eqKzS5&V92=|x#pitbv(^KnM*|$N^Dq{6n7X* zb@D~{vd-i8NccI%~*OydJxE-D-? z2TH{ne}QX#K3J{K`qE2?fg!y6XY((XBE#=Dn;$Zl@MvG`U~fLo*!+^Q^jr6dgAX{E z4}vHG=7Zg*njbMAe92V8_IY*dr4lZPx>q1|E-D=H;7MB0p&>s&t^J~Npe@ayb8r4z z-{+rt!1{Qp?29W`|3lZ8LHaJ-*JK_1(~}`;maF9B`K)6D-aBCl3xLp10TANy)ZiW|Nmj*|Df)A>60v$7tbz% zW`nYrUKH;HF+gh&aI6Ua#=4+uT@qth2}c&!3yTY&K3~)gQ2sCB$P#-I1DXYgC}HAn z0WA-v`vPLAfB*mYx;8W);eo6n&SE(3+91ln-~d}fjJj|*i}?lr?*ISKfHGz4ffAwS z7aWZickePVfYt!D9R!62bX5(1OCuu#!~Zgt7x@SO|Nmdc@gf~e^Sp=$(*iHT!L-N= ze=sfa!W~4Ly>I|gWeP7Wz_iK>12C=eLIX_eyifqs1}`MQw8;wrFfH?f158`IU;xuL zFMb>VB?^cCWezXig381)mlsdLw8x9PVA|)!RWKd!;w+dBd2tj>N4(ezrenYb_y4kl z7i+=%low0EbjFLhU^?f;R4`req8Ch;yl4f}6)$SRbj^!Ws1vqu2eALM-<=ov+=-%3oo*{oT?Yt+~SUfkXfn)d~*XD9)!T4N7*aS|+2#$jz* z0Tu~+u^l9W&|lZ>#$(M|1C|VUF$*Nw?IvK&+5i>lfQX1#v$jA*${->V)~p>+krarC zj5TWyR3r!@qF~KB0V?7E7AaG)Hk|?%345Uj5&^GT4()yu23=Ab5D)+wdiG@KV&Xbb z!r6R?k$*Ld%IlBar5w#C|Mz+_G#_N_VgpMZW8`1VqEh^>`(X1Cg*fm^h`>NdGYYg2 zVqwR&bxFZt#<#5xhj;%hwF2$tG5+Qjmht63_`I4Y;8hGI9G#{hg|AH@9nj_<6{TER zOc9I0f~;Uentw1s)+&Hn3CBUbbI>l)7oc^ku@arJKT0{e*+GjzTqU|qZ-CcvTE;2_ z2mdb>;GcTne<@Ed%TZ7ZE8u^r#Q$rc9ohUXs~H#=>TDYSfB65uzTBkO#h$~KfrWvg zT=<0o=%kY))`v@Ejx(G&!@%%bFyO`aH{eD?3FmPJP^N4?zyTVAEy?Uc);~X_A>uPAAshzyr6l&@VP^s2@LB_jQF{|6@=o@Qvm z`Pl3BAD(iW--sZR4k*=F%JysnZOZ&uY7rc4{NFtsoNh8eRb=pg(KoQfV+&ICS`;bq z9A^ayftDCp#){M_b^D5Ry9#((NR)6mSf4Ka)_n4Rx2uTuK@V$Jky=KFPFInIAobuh zwi_IIi2kQogspj&iY@Wr?XDiFRz(9W4~C&e&KHc9cCT=zx2z0aD;$T znF8c&l}Dg~L{m_h1P4PD@PJnmcb~96-Rb*-zvUoki_CXd9tM^YP0Lsr{ua>US8HDx z{{H2l0TOUDBWrvKDlM%~*SSJm{}JSR%U%~wXf6?Z@r#Rrq5F&V=aQ`BY@l4ye2n9@ zRKSaKFVQ{F{QyOBnk>Hr&fOIoTIl9@p9Yi`^IV@upARLxXR|W7g8!kv5 z>U4bro-k1aMX{>_f6HyqaCUI7uSnqkQh|W~r3x<|fRrAQ0JX8dlw9dHeF5HB4$8sM z_VYE6)Q?hj<8LpwgUS!v<{uBrEt(I&L*)r414H*8>)$1JkF$eA`i`QR4wF=Mw(jVdA$o+z9Ba893*Q)6;h& zph)=8SqdrvzTcDnrd;|X{Kd}i|Nlq6mVyN(H0y$rgDA*D-5)Gtzm#zPFa7dD57f%) zcKu*|xP-^jRRXl=Um7fQtT*)myo}iT0i%rIy#XpCG{9wq3fL{E#e^>CJdGm?7{vs1 zcM7kL)2g!|ALrt`{3%N69-o(9XPl;X~)6UNgEEXPFitrb<%=^tCMCNq}uow$fW-u zPyac%I*H@Z>Li&%bQ%9Tj2Qnq3=T7_<6nosanf*jb<%_>hgK);IJ7$H!68E9Ul8+< z#UUAEuDTpC4zC#$V5##$WF*kj7shu8_uGA8(MxpP%NC z#-E=Tkj9^1mXOAuUssUEU!U%f#$TTwkj7tMo{+|0UtiD*ZjASWcSd-YF77V<(Ovte z`)Mp>ZJbPJ?H9<2il7B(hi7)5=yv5WKBaxC`5`}un%Vus_?Pyt=I8t%s{11M^-{0y zQi1Ms%@6B4eP39AED_fJ2%0rghm3=DyK;28}0I?fc^Ml5SUy*TL53OHIGuY(6N^>H7p05>Gxa>GtJd_I=VF%EKJ`q}x?M z+x1C6P~Zz6xDBtRV2TC0FCKi!^m%Fbspf~wU_(KNFo3-H1?0tM)e2At|HVQ!28P8T zCS*w=Y1bIsru5_H195l-47<15EL*0aLOaV2ZT`OsO`2 zDczdw>yqa5vu@bFE~(pNiJTp z4YaUv#a{+F;>m#FBJ z>GqnGb@OcQ^ikmf4dvEsW??85hm7UAZ030332I+~7@!&3*V{qPh8{ry9n3X8kOI25 zkb$AGk_F_3Qi1M3p6(zX%Rr7&R`Brd;o!jC2fEiKz2=58xPF`c#RK_Nl;t7oc;bL1#v| za&(7&X}wh9%IqqjeW=s*hw*{#+8^D%Up}t_WiY+(_nVIkbk=?V33GJ&egFx704*X5 z6<|K0eIY1|A@D`re{d5Alyi{^1_@A?sn_?#i=F5Hg9d_nof&OGP5g5HZr2yx4bU03 zh}Wf^u^b0$IXHSvOUA%l2k|uZ%U8F2F z(5QC?ivR<||56T+pZ|;A0e6Z@S({J%f6WDwez6s_E594u*L(X6-i|Xt7}M=4(CsVH z>3XBvRV296^+Gp8Sf}fqZdZlIM<8`M3$@j~zsXtFud&H8&? zbmKp8_dB@P#SGen)_<`OwAKBH_3;u5X!lz;Jp6y@o&TjbK>Zz#|Cho0Cl4DRczF@L zDKF;k|NqvuK3WfyBy`3;cpYt7d!<_z)E_Ao0S%7ARe{}8ViT6d_+rgE zuv0*5`b)IK!@~j)imZ==R#iNBv3o6ef~qWJoZtO?q))2WUOdABHr3jf2p=yswp^yF|get4p|SWf>R_fcJ`l zc6N5BzGzN;!T?>>06MGT(2oEAAqh#s_&{){>z_{7FQ6fbIT76_OhFS60dwa>X|-}*!mSNFllDcua6EGma} zL5o^j8D75xw^~F%9Yu~_-#0H7odz8}CeU5V13F^9gsIcO`g^I)3$6YC|AV3-96H>- zdmkuvMH*^gytVA{Qc&Ppfg5FwHkgKlyDw* z6#-qM@YGC5zy9y*Idm%1WJV)ejAkXfmN~CM3l0)gRIyH za!&J!|HhZTmx}OjJI%kH$M4%gmJ$yBeW#mW8oZWD`+ks_vBa?Jbi>QUhM$uB`%afL zH@{S9K6ujFSEN|7*;j(Y()CY~dMS(bsWQc8UkMh_dWKTvZdVEa6&$4sAYKV`cP&qI z>K}&JG2O9$_}9mZFyHKq{R8rM&kB}(|NsB5FO^=wSZde&fT@JDu@;mT8p=6a50vUy zmi{SIf6=q||Nn2U5{$2?(W9sJ&D z@y%6&sf77^>>rfq>vsL~S^}oV07c690CTx*}(=)5%MQm1w%bA#tSv@G_2FK78=8Kp6LpZm#{Hbv)e%yT2Qs zX8yqZv-#tH(2}0>#>biuu{1set?DV2Q3X*Ymq8R`DM#Zo(58#hBXRN3#s>~}JN>ab zTw>O8pya*P;}Z3jCne88JJk=Dh_)OkxnuRXgstUC$(7gB;^HB0cKR0=AAPvj=`V!( z1ET(`UU;xN3DhMT#iJoG8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*AuyanK!=@~ zVH*oG!xnc*BOGs87jW`-B6%nUzRnHkvFm>DG4m>CS%m>JyIm>Ck- zm>DYAm>DLqF*B@SV`ezS#>{YmjhW#d8#BWjHf9Dkc4h`Kc4h`Qc4mekc4mewc4meq zc4mfY?92?S*qIrQu`@F~VP|Ie!OqOU!NJU+!okd7z`@L5#lg(r#=*=G!NJUs!NJT> z#=*?c#KFwa$HC07goBx38wWGP2@Yn4TO7;`uQ)&p=NTBLu`n}qurM=}fClN&B6oGq z>ZJ8^RwvmXU7h4}2KU&20RsbrIRgWOAqeZ4>w);8dD(gS<#`IJMMe2V3=9nJJ`oCr zdPWL~c_|8|1qz8psS0`dB?`r*1qJy;mD#I1CI7={YV%iRD3wdFiRHIjOm+c_qaR z={e5%1(oRff)jHKa#Ef1%TkLH(^EliOV9Bw%_+$YNv&|s&o4?bDJ}z& zi@HoK>e8^NOT(fr1&caR;GwzC7>oOii!seJ#^OF>EbcSL;yz<6?lZ>XK4UEIGs5CN zBP{MS!s0$7EbcSH;yxoR?lZ#TJ|isdGsNOPLoDty#Ns|fEbcSJ;yyzx?lZ*VK0}22 zLW&aeiVO0KQ+*RliZUzGU}+FdJOw1~lb@J^CJt7QMI5Z&J+;I+KewPLwYWGnB_y>1 zoN>VU14$4mcY*9c(EyV(asj6^ta64}eRO3!i5$xO{F zaZE1BEK3bZttcri0%g|p98{6?obb%Nl>G95{9+`sn&uIFH2a}x9U+fqKQxUa){G9xvfc(t7 zlGGxG^c+-i<5Ezn2gL)1I2N@amts?!iA8M^=$27z;+SH^Wmv?p*prDxT_zTFX;{>O z^8uP4Q?RH5=Lq%uIoTnkGROF$Jaln+ivka{sRFE_EksWdGOYKAYIm!9KU99WuKR0;Nv zXE97sdX9T)30MLYN+5T^`2I;*smUd!;J8H<1E~b-gBTKAn&gsLk_goc5rcXJ6hH2% zB~UTc_;63n1KFFI3JN*~ka>9!bx^)*UJ6LQ5@fDRYEEiNDu@eGo}L5Y!<47zKv*z` z!1xeXf%H3N=A}T?K*Gr>H9Zq-J1969(sRO6i%L=}97{@yGLxWA2Zs}~xCuB%qN+6k z1rM5jlTuI)LsJLN%;;hex1iVo3R-mYz=;V>FQ}+PR|ig5XzD=K6}mc*^U%foK%PU> z>j&~2h8Q@{p}5(v6rAT!#XufL*9-C-x){hYsAAx10nL5j<`TLXmT&<#gV5Ds2^VlP z2u&ThI=~Raj3aRK23;MN_y9L=(A8my4{-AaO&z#-gD!@}zu;yIx;iZW1vgtj>JoD@ zQxZ#31B&v~ixP9eX*{$TiOZ0l6PlNqmS2<$Y1Np3EJYK8wm(tSfdd7u&IA(g$uaBFPyd=>xYC zk>x=8f=g2Kk~4Gs3y{iWsF-hJaW-5Oqz@{NQi6lUGZIr$i-Pk@i;`18e4os`Y~=Xx zEDi>%0Lgh4!(>3^V+nE=gO$t3V&MAKJrzYAxGqH#gBEe1h5*=HXw-mW4Ve#$DP+D+ zeln!u0jC@H)Dnn8LE6COHIaaa={YW$ z#W)m$>YkFs99H;o}$uo zKy?_zJMcgOyWOz_)jiN)fac!{^n3#oN6!}!apMYbjtBV*#T?@b?COnhs5e5`iyY#f z(3A%2PD0riGjlqRSdIE@-)V*3qfKSZUL8I zXl{n~;Zf``!eX9LDY(syst${rq5TjPb%t2XGsI#ZxWq$qAGD7Qjc;(MgZzcyL+U^% z9~=@$^2Q)rkoaJqq4H7mgI$Uw4|XMp5AGj>Y96=L)Rd&e0RSq$o2l9pOH=qQrDiLlr4ggY9+7&(BFs%*%`iwV_?}Aj1d9!2=32*Sr+x z{JfM*P&ImDZ z9fQON*DuI?P<`o~lbBloHW(7mpmGY+Q|US2HaA9SLiK>!<5+wG@?%J91;m96={W&K znYo#u0fwN|;*!Lo63@Jp)C%ZWqAPS5(KD~OBrz{J71XZ+mFwVAz8E12GSfY^#51oX zH9fV+%mfs|P%(%-@Klv)W&)}rLH#pOPcjMIuR;uMfZ9_?{RWrJvdm)e_-cBNZ)P53 z*b-FiXXb(HJ$Qc(8uoBLtc*t%hn4@>#L(1-K->k2Rbv;o2yh&_r7tA)rCcoE&gV(lwmuO0Kw5Abi(0NA83~%(C@z7Fk08tnNi8mMOU+A8g$aSv z4zduaenM6OisL-6KrxaYx6HiE;tXWd({mtVV5Lx%u=oIrLA9snxaE`4G>Ac9``uIXkR+g91;q_`ObCk<$e)>cDM&I<)8OqM zkPRqqLsEZGyuUNfDA}up5073!t*#Ata+TB)#ZzDY)ef@#r%|*5_G_Y#pS; zMwW+&Agh5{3U3c!kxb74RadD+PMLX$pn<~loS@X4)Wl+F-vl&?keLG>tA_Xe0*X?T zGeNU|Zuv#Ii6x-0a!D;H$p8lsXix++FOZs81QvwwL3s|EO%b)SQ(`f+YX)M$Dr<1q z;#3b;1({0(XHZlV;VMAxa!)ORHA}!X3P=oFTLml$o&-(Lf%MgaEAx`wit=-veNxL( z^GY0poIrXJ?H-T-XkMhC64HP`j6-6nhl8BJX%|sBL+fD-ap(NJlA`<^kl~PUK&sH; zbuq{(AoGe6%OQ3b!_~v<=S+|gv|oul8i6bhtB42m&GYJ#{EeO?!f zJf8T6n*mdUq8;j2n4D)Gq;dzv2PmDu(f~{pBo1j6LmElJCHbI9WUv2}d8wdbe&5W3+{6Ni zUGAxQ$YvLV{NtXQhvWdrcm%D372sKVkQ<;KPnbAl_!vVyXmA%k&I(a$Twwwd#W2IT0=pSt8_~=#!eNFH4)=jg zhMR$IzX_=C1@#ZuHYB$hBguhHL6S2F}G~Wa&1L`+}(U+!%*? zV;t&ng{u(`^@cdiH-xKqPc4DE1(c#ebK;<>&!n7Gx6GW9)FLBLA2ukpIJLw#GcPx> z0-Wc;e2>iH60jE`imLAB+DTdfT{{ya-ix0E(bRV99N+AU0{oYOOwEMgVkYr3^rbd zWG})8IP`#A5AruQJ)pT8Bylu9!0m^K!`%;aJHl$vSRB~>V8_G7!SR3)homVmAIYDP zCK6->A39b9sz|`$0&2S;+BDGdE3hoqwk=o&>4&={fLue{ee- z;vR4x2BU8Xk%N?^;FfP`aT&;XkQtz5O%Sn6EMiHRV$ePvM89)sQBi7MNkC#wYDo!n zkrYS<VQaHvnguHG0DiWue_BiiRE?lH#Ueq$W&H^$+9V;t@`#^HWr9PT&5;eI0=?l;2W zej^<2H^Sk5BOLBG!r^`+9PT&7;eJCL?l;8YenTAYH^kw7Lmcim#NmEJg!{3qpM$3@ z$Ydt8X$lqvjU|EB!&HKKpmYXXqXY2?xEu#7fQ;XiLWCh@Kax097%UE65tEq;4kGXv zAXpv50@!#HNC>I~G|mDVw+9J;l(Y;Q9?N=3bOokdc{O3~p*c z`f3n4^mz`DD9E3X^1TQi^b&@; zE+-(fAT=j553+t1u|6lbBrzSdS`NKE52?LPz*Fux<-qGeaP*JB{>34OTOT;0aM%ZG zzC-diXq^!>>q6WKSz>@)AGoiDQy*vv0xo@^t|SgQJnn>aPO5tbR%d<3x+x@Zp0SWpp}2{~Eby(a8T2Y9h4vQN>D+)p7D>Sy@ zB^J0mMH2*-jM&6M6P2JvVIa9YG(Dh#5>|F%kplGr!Rx3XGZs)4;66KOToB5Ky9$(s zAZ;iV_29DC9kzbVu_Qk?GZ{Jw3mHuZxg4a|H#IlEsM0C1s3;RW{{gZCy!8RvBm=2I zE5jjGA!z&#zP=LD5`##<$Ic*yq6xHm2dPJ1e~Hx2M=3;++RspN6G(#rZmtQW<%-}# zY(V0J9RlY=dmu=BG(7lF$>cwR1uph?3rr#6bZGE920FLFF6rx=_!& z*yLb_g8c_I2|Qv0oi;>>8@Zs0L)!JASqyQdf zp#5>s=}2Q2*myj&I)REC;Se`O7Kf^Z%;|yl&O)X*K?Ag4H$vq>gPQ3%;I2Bfh69B+ zY|H?Xi%X#k-oS1KD}{(dg&9EW0g6j=Q?V`LOV0^NEG@<=1ONvsV`y{~Y7m-Z@ zxu+jp;0?n=`r-I@GQBQ)EgM$s^X6X2HdTJ496(u;`K*~<2 z3B{md7h)!gIHPHa=n~p;dSPrZavKAgv=)eZJk;OnO1|VfQe4Pwv#ShpWC~Juz z@eWQ?kO3&j`T>YuP?#Wzg4II#;6*+@;6W|WBs+Xv5kwq38;T)@sUOrmL0d!W1L~fj zi-9|TXy$>s2NKNQwY+ zA%2DkK$qiSh(oP~4D5r`E<`<|&VxvS&4TSs1epS>KOxG&%`(uK4tQ-HvSrBo5Fz?N zX$qnX!beU|Q0IUoFwzQWdjv!R7Cw-9B+v)|c5y@)BimsDi#oKlV*>UBn%S^uMOO=p zUJP-NOVG@KMLoJ&a4CeQ7UpDhwV=I;AfqwGp)N!-$FCG>5~euV7z}e@fr73cYCMK| zsPSmx@F^b*ageR3X2ZL6=xV_wH=0@;VF;PJK~)Q%wm~x&GHrvV7DqfnreM(2;&20G z`UO=jeCh?w4Unl9G_^R~0GUQXQ;Wk5kSP@Sm<3Yn94-dxPUOI|HBw(2+S@^w2Spe- z4`P>xIRuya;KYrr-!-oc-FCQMR5`HC*ySL$;*f*tgYOrF^3nGFK@&8%tV1pqps|1< z4zUtk{-M+#(4q=jJVNB5K?St}MGPrQP{dJ#9pVVE8=z*P%0nE3ERP&?5Z$1<0?{u- zmWSwu$iv2(z=a+-p0KQ!1+^H!p$O80Yd;`F0jxfNIvZ>(q&)%^fhdFc9a3&e6gXJV zIs_jg4{H0v&ocsf0=jk-LmYkG1I$Ql;uvCJ&w}F@)m)ILA$<&l8^9jNq81bYp#C!G z=n`o11CLce`EWKgNRauU`XDp49CXGMxC4=z0v>-3LlXmqBTNk39*2fSaB^mGaefh0 zD@ZUs2UQFbmQXRMR&d^O%gIkH0rgNoW`ovb=a(ksq=E%Nc^9@`9cnbFUk6{q4mAeU zRz*6u29iNh&a#0Bp{PTYh43?Bkk)e`#1Lf{k{A~A5M>xb9ipy*i@_TKNbZ9)0KoBy zP>02RNb5Ba>ae&E(nvrv4~zRC4Fs?{P#+l5_APb{0bO5%xi2Tg6BPDn>&L+{0M-Fn z3k6*#g%F062TrBA1@KBXvkasGoR3k&)1cyzeVZs!5G{~08ocEY$vB8M&|EcS4*_WT zHe@W+IUl^+umofsNFF?4?3-8sBf@1;kkm zV2Sh`s5tUY2(S#u?65?T(Iw!t1+g3?m7Wt?kdj!E3K2m#GCjvHwH#d#95$ZC=)&M~ z2-A3Issq^#YO7&b4^4Scd1OPOI>F{5i$isQ#gY60RSr&n$o_*W2d|M&#qc4>UL-?6 zfdTd(a=njD9^@CKt+7Z-P~3sT7=)W33Lpb&puQ`t+&~ovISbZKfU1RA1FCbt4uOed zQ46yUT`f2zp_!WkE<_D2EbawW8`#tuVR0{LvJb0TEbawO{9#p##l4_qepuC_xEDM&b0rYPP&wq16{H0;HU>J&45kMvhOrhLE}oNL1Y0)^6${M+jZ%Y)kz%kAcx*d4 z8zF*auK-vf*v}AG!q@zRB*5ZGOXQH64j^erm|&AngY6~3w(cIR6o* zq_=|*1m{Iie1qnv;In=pSqA)$jxikkc<^u@? zh&zzQp*vDQ`31a1)hWL;F9n*!;PnAGl|ix?a<;)H59#(Ise+Z=NM=CPcp?;`sDU*X z5z?skpms5lRDt{eaU|F-NRfeC9;FM2P=?|baEAzo9PBtlgfyxzXIeYxHu$vVG+ln9<-1YEQQ5x&rC=O1By?m{ou3?nI(qX0TzRJ8dVJ9 zVYnEiKnGivo)b`7oB^#jz;jhDscDI&InZhV)Q*NMsDRc5(4|SBb)_)oxJo<1`;M{sGbmACrap%cL|DB#aRr zCeWD0P!Ca#sUB)GhWa$H@fhksV=f>WboItK++&QxJ;pfPV~oQ+#yH#q8gIhp9wQv? zF~Z>Eiqd<+{%6)69L-2~N-p$-~a1k{;8 z0tug;NLDfsQU`Jwel-wh5l{m%2CrREXA@8ZHU_^MXo~}%dl36`!QqX$0Uf+~9mOt8 zHJ}ab5G648V5%V`52xWc7xaA>L5f*vmEC6u?G(13!L`aPVok$1CLgny_gHAO9 zDF){qaDKvQY$C?EVN1^-9>5fbI2<94&Al)?;Ee!CLPN11AqR3A!aTS*Br{;w11>eN z=z%vLu*tz3fsg|?6reE)%9}8EgT)~MfMP#b91;L1;_j(=P{R>sgTz2SLpIkvH4o}5 z6m?+Vps9oB1(=)MQ}f_^!C_*cjy|MCgfI^zhHkHGUKxhHATe}xkcl1S&I!U?ND>3- zfbD+;ue!=fEJ;PUAAHIh4s#ILUZf~R3sQ(Zu(@V%3_#rk7DLV*P;nR7JTycx z*nEf>iej)h%F=jHiGc_ZG-d`R;HiI1iqTGN9? zLH7B8mg<9QDX<7QJYcIYd=o*p93|!;x1G@CAkKk=FH8<>Bt#R6d0=sf25?ypUaW#@ z2^MjvyI_XH)Z;P-9v(%BVDrJ2LL39m$1rms;vmBjc7nwq24kuP8;qtFbkHy?ctCX! zvYik)kOi1#f#qNpVKWnK8Hzse#0JdsU{gW!q9|t?f<-}birhBFJ`@Pra|Jrp9Wr47 zRRh{p0WKWwksJuhc0ue@x)g!_lECWtcX#Rx_-C>ghX@ZaMqxL_F5o46l{t5B| zXt*rMjnIxTxJ-xL$pJDMLk_g@1S|oc7li16O?@Ed{NUnX<(T40;9?v@yci;kAr31D z(CtOEuTcD80yQ4p9N3fy7ICcZgiVQHsK;S1Y>ES2J#2~tLmY>{U{f6E>S0qBSj4fq zA2wxyp&sFW#3U6o=n-cQKqsz1bFtt%px~hgN*7Rl(8(mY8h8jGse$?)t_JQ4BsI`U z7jW5w5|yQ}AOe>kDEkheT}-eZsB>Vd!D65)12hf{$`_#3^^hO}tv|`kOTjJ)DqrE} zNy62G4?2P$sss`S-|3K>SOH<9NI~2QIl>8%yP<&#b{Co)qCSD2F9|XhVh-GB45M(# z!;C|d2OA06dkeZF1GFXwERdc9ZvLRvPtbxEMHCcQP;qc|3)aq%p5s_hkOR7;7r8A5 zZr>p{q`-=y-&}q$IT{4=kFV0}%r?&_Dv{2Q=JNc#uelY|x$U}3m^*edJ9WJtmRuSY@a1fz&S8+j;V(8e8D3~Uvo zm58lfgft}zSyO{DR)u`=1oAj0ia0cOLHQaoE)UO82rZB@7K=7eKRGqA2wY-$!q*dk z?@EG*L6R&upJnD3WtL=C!EQ+gr#4W#9XTLD`92RS09F9*V?f%e$ik3#fQmq(02BvB zaKnRAi!(uUDR4QcTFCk^uqenb$Q`hdh2-FKAiy%vumGQW0FeWo1p$&u&w&@4==XJj zq@m#ix*{7?vZ5&gs{ome?OrR0B*b5kNQCsV!ATcX{=n~YMJm2f#6kQ2L8d_WFJL$n zA_r-7AosGt=?rsv5Hx>{v7!-Lk0NUa?Pq~5dP5Ng^*!L@2oSr$NdiStdJedXgbqZ2 zRDr?=;zr1rBka5Zta7lUzR}u!KCq<(=;E-V22&hjJi0jSsBcVh?CN1heWR;~9rcY6 z2MxBOcoPw;;B<*12OBd9FUkZRDO{Wlwmm%uy0M}ZQlKOFkSvYhLkdhdAEF%O7Rbg6 zh;jrUUVcN(hggr0hZu+8BgJTXPH=fz;>I1F*{R0dcSkLw!D!(sNuZN{SMbOV9!nG`9e~Y6zkq5+$Ir0CL|bBsh^~ z0U!$CW0cT{LstOX_XSD*2%{n8BDyFjTtMRv(6T)=FS7(*dBN<1%DboLp-Dl@PE=8d zJ+KY|HaT#o07U{?-eNco)`y3j1_H@cXkuVTqKZLNCRhgKKhIpy&QZ{rRUjc~8z3aL zC^s`Nu_V99J;>G9)g=j?XOf2msfwxa7gopuSXY zVmjiCBe?!F0{YWn`a$RAU^fEl1W3J!!x>O(Kx-dLb4oHnW0Ro16|~MM_H^A?uS_TmsbtTXc>t1JZ-q7DZP9+uwpI4(?~73xme#^3##)Shy=d zcEJ{nV`u}lS@S`Aj6ofp)FOl?Sek+ADD(6SarFVmC7Pe0GHC9Fih}G$u9M-ykhUar zOEHSsP%%))8X=CDBn?VU&&3c*C~EspmYh^_YTx$6XUg3T>LAVEpJlH(!aw(vI1N#MsJXkMi{TE~l2&&Z(o5A6ZRXfCV&{!+R zTo$;xf`lh*IXfsI;By?1D$56S?=OltxcvzCJ7k$U*o{yJV93M58>>8c$vGbLLGmDJ zaQ_{A=qRfBo+c3E@yLUUWNE{TR=;Gj@25G=z2Ure^ z9iU(bX~8fH?hnNIm9W?amsL==LxURBj|ZO>0O_Y>fQ&>J134Kk1{s$rHi4)F)en%u z3My`lL)-|5xFL3Ni1Dy?F2rn;43I-m#UR$9i(#sRSdXgC2#a|T=b)-HL{SHE8N%NX zS0VTi7a{XOu0il2EI^Ph=9(o!Nee* z#WWWjxoB!39>-J*4gkcOBuI)x;)6W|YES0m7a{or+;;*;4pa`w-C#MWdp(Q&laq5w zK^F#t$CSawf!jbOs1l`!`p!KSO%5yt%D;IidNNZ%%_H!542pOq*b>-y3W^j&3uycU zG^d3k1=0mCPavHvL}LTe+(DGH=<=ZX0&rYH>j4aTuopo6F!1@S0f{9U5Vs=@O_YFQ z7?if4GbzC(MfusOAf-_MV2H!d69y?joO6>2+6E6c4MPk?2gojPOWiRiKQA3-5$Ig! zl8lhl3is4Jh`At{;L;>;A0Fgtu)f5S46s;kZem^vNED(EvS=SkUrB0Sa%K*w(+mk8 zkUoeQxQ785`$edS2RS&vAZ8-Ou&4va44S$$ggW<}$^vjugW@i+Bm>L`_kR#--15^= z{OXceoB?o)N*$8$LD6N35I|Hp;K?*DIeU0GN0mu^QcdS9Z3o-*V zGzO0yP{SQmex(+t=0UDg_D-#Y_hSQ!5aKSSi8&yr!`uQI)6Yyv&4(1h;P4HD@XbuX zNdX*&C15d#?FconmJ}#l1ByU>w#>5Bpw!}$#G(?I`RL-{9yVAKY>r!IUSf`Oer{4` zUTTqNUO_2hBpYHI$ZSv_8n-$~%7m(e8RcJEg3~M8V)Mq1;6yhPsYSu1MQMr2;KZ1o1C`57EPx7wO@xX=g&dQUQ;U(sL31b|lfbnPR1vaWFnLIU zhok^%t}m)>ptu6N!?PGut!G{)q|$=w1zoNK@c^_Uf{MFk=7DNkuvy^o18{2*mPo+m z1h_7T4i118JRl@d``12hpoJzNThYYfLrB=fK>>g+4y%c=h=Y`)jbZqJhln6$J=B@t zadn6|NCTQVu%ROibD%>m=;GkvAuQ&D#j%(V8Xf{E$1n$n`QV`;kOnk&g2l0z4;wN< zHyt#IE(FT|CD7#(AfIH$gF*|W7q(vst`xL(0lJO}Sq$93h6}*% zws1^I0p0WjPtd4-DmE!ig4u%{2E``D5Mi|N2W?US2S0{5WCj7`UKDeTahPKaZWv*N zeX%hPbBu79V}!#TBOK-!;xNY$hdGAW%>noPQj5T4J+gn{!HE_=CZ$Q3YQauHjSmx8 zS&Ec+A=5@^>Y(jM6uZGrMNah4162)lhu-FTUa#VGOSnP!)0W@`3?1dx=G<8sWLy8iUvmwW_f#W+UwXig` zxCGY7g$_4?EQhzN;Vn$$yaiQ=BnJ*;aDG9TgQX8laY$TYh=Yy7wBH2k2hd3&P(5Hj z!0)U88HZW!!s}YJG8deBK;;3NIM{Y9;?OJwDt5qSAyQC6t$^4Kbs9D?#Ap`Oe5hJ@ zFe1ANT@J}z@cSpg{&%fNO)f1-g{lVy0&J`jDg=s7&=_TAUJ6tMtk1CsrU!H{H+YRN zSRC9ma!xD&bqF9Q-@@Go^;CKe9yM@3;86qj3$hxJ%c0?dEDX036i=XW1Qe%%Wx?@* ztOw$3uuE{rfn5L|>qXWF_CKgSiYy2*4BCSNI}*}v$5aDp$%B=E!W%RujI0POk)8uS zaVO2+H5ig!oO3b@0&)`bQo%x?^-YjdY9L%t+Zwc{0$e{rg+ObWP&7f;j)TV&5o$p9 z6r`3UX6A&XR)9tsgWWxYLE#I!=Mz;B97b;W=?GOIb*KWc{WZ`%H(-tSxz{Y^ZzM%u5b-_lyAd&A~j#f zjcp-sPljp&%b^>HtPevD>JD^qeCDO0=|OcIc+Dl!UTv^q6nBBu!!1Bl4>255J!q|B z4$LQLdLVL8i?GSTEW;{?p%2`Kg~b$D7OXEfH7Y+p7s>|@xk4s9z#^bD6_lEmS_E3O z1J3DCVbEIa0?}nP z#8YsHgRKUQ)g-2Xs|s-90b2?V)1cIXoW$f*Q2F4TpORWyTm~@*LmVUwzF!qpeI^d| zVCQ2|pM*m_*qNB>p=~0N<=`?K+~+h&gS7fh(!hp+{Q;X|M#!P-0jC_3G)PC(7}W@5 zvvH^c8Hd#GHG&#ojKvKIIgloV*+yuVW7mu7Kx1fp!~AEI2610$5+n?;n}Mzd-5n5l z?9M@UFAjAe<50o^tPU2YP$yxSgOG>nM^9s!C|&}kS+ukUlgFhW5lAqV&;)|TEKIdv zQ$ghvhPx1I(IbZ#^U?JXV-Gk$(Gx2)V8Q7fj~j951zC$F9MD|{_7M^4K*nL_*V0Ug z?P$ppi+Skk@SBG{sp7UDLp|7doazxt6YPB=)WOWd8hr5mcnEW0>e0OovkzSyyLuyN zX#=gxOklxm1TG~&X%}J+hW8=XfZFw-Jqnl!3t}Bi9^q_MeF$;5ddHNM;PS)*kIcN1 zpw#4&a8Gdk=EBR&x{%#AQR9bDPRCxY&bg4vgx55LGFJ}JK_CABC%H$Nq{ z7%CqTpA5ZRD?TN$BoS(syJvh!DtLk{J{c6)@g<;>-5~CA_rxQX3qBeZY__{+M0{m( zQF0R8%m`>;#1|B$Cg)^AgVo(99@OGOlY`k60e46-=*-vnq|C%(Ot~V^4H-!Gz#N|o zT1FlZIn@Uib|81b zRn`bgVg4%yw^kAMfRajnd3<7S66oYFba4c~C>3HNvi(J{mU4Uns8bBLADl|yA(oU` zf)rLLa!6qXN{8_UMd0nyl}O^5Me&(=#U(|hpmvoZ!abRw)i9v;7LwYuqQuB97w*2&&|xsO{_qel?dv&Lh>J6Jwz-cv$zC2 ztBxuT4})Ns%i@bub5fH_U}hr3bMjN5dJ$r2;O@H#hInd9Iy@yp!VjSbnz7N+DO}#f z1<6gtkl_WG+u-&TfL6A|=Va!kf~3+@^N{plPdmZ!;QR$mo-jA1r$SDyiqFj~K!kBH zsH}`nE6qy=%^xG;FgQL1Jp2N(6Vz=%gb}3Rf#htE*~an3#wE#M`5;$6m-yo3qSVy9 zctkdZr1b!IPgqd`Dz(Ao97rrTvp5-Cj)MwOcb|BFU!VBm(j=(kA$|pk!Lu7w4RUe^ zg_XZ+aC~tl=wdu@F_sBhWeF1pm)D@3_=%9X2B}TXhaF-VUyzuST2hjlg5p<@nxx8- zR1}Z6`^5W&K}-H*$RH!g4v-kQI*BiUEb}mixEn*8W|~MX70^k_fbE5)uzk@zmU;{9fQp#8aYT>hlznpBBc7# zFAP%tf}1Fi)B+2Sg2a-H_#*IaL*SYPAr7jNN)X=2Ps&P7E-@k?4-c<`#N_PMlz2!5 zQw&)=3)7nqTU{MrSegn-_E2{t#dAEQ6bBbLa5ItRlk>|`ixSgQVP=Bs#`xUCiulxu z0`M^ch_K5@%t?z+1KqBR5KAv8g~pR9+qn86~QjhHYyA9i{n9!LP*?z)PfT~ zsHYU4Qj}PZ=4L0~_~g=@9H?W!W_bj_JrB;y;L^z5C*C6<9#LMDq{91r9s!V~f~dV9 zc6$VXdSqq!Ii;YKf!bvQ#S8QVhWKLe;S2G(;L{hN;S7@lXX5x0_^AybeXbE9@fC)K z@!-}hq%Z`#8zc^j^VEv?a_~M0ki*@5;*rEr>N_NHXax_g*irRB;wLG+2-Ky7*$=e` zEC&W>>56V%kh@cS zN@{X`3M9Xw=nZmrg1Z-LKccdS#2d2ug4Cjt(xN0-t&ZVFSn#8p2}!qz^p0#MysL`l zZfNrg!wzT#l$e)UoL^FuUyzxM=}u4sBPGAY7~LHpacIK>!(5PDVoC}&aZE9!E(^LH z$)!oD@zDMOvOkd3 z5-&zr8iTr6Xlmi%QCyk?O@;`4&^ASUc@d-^3UUKXtfV|Y9(0}<%siNQa!zVuQG7{a zI#T)ub>|RW3RoWl$)1eFl>BmV&kNkX1KX342pR_hS5@HlU3_s#KD3?z%cp|M>XKAM z*B#s$L-+?S4>1T5Sdh8|q90VXB^Fge3UGuz&r3jci z&^vQ*ad5*CtQAx>!QBUGP(qpvsA?h2185|})Pw6ESnm|79xR5XJ_7jx+`omC$fYHz zh;Rf~MzE?0Dcxj(4lKnfo(nze9AOSbJ*WeZE(XpK@sMsWA`Ku0M-b{k?H5R80%;S1 z+zk?gwg=;pVhUZ|x`4DlQ=v!P!|edefd=6~EnrY54C;5V zIK=PZ?ibANluS^q6c1|VfQOP(ixKewNn}ajn|I@p+99AgKyS-{#XyZ&Sg8fI7ctfn z5B5IHUZmkRxZ6SHbY@O!3N-sd8c<07hU7y~$p{%*hMSdJnT_0L0JX~ELCvAuR7h_M z>K14NxikrUUKk>bA>z4V8Z3M@$YB8!9C0nj!A zxcz`E2a0>pdSy@@Y@7lavxCWlQVygS2q_6b{szfGc(4K~9yBrv4p*=oG;-pR%1DrS zL0&v;It5(bgT!)EbK!j>Fh8*X8Ya+g3p5RaNeCPEyN zK_MZHWDatEg!%_Q*8wp)J|Da>E*?@#fjVGtb+CX21!z$|yzF)i@kDgLKyvWFhQ~z& z%sBAO0xVqwImIJ)`@r@DImMS{rj~<_c7r<}lmiia-oq9 za|A*j-0uKg$rq29vjW)%76(;k@WDjzGzg>whK3oY8e>Qr335Vo=ivGwV@_bR(fTuB zF=&6H7^y#lB3_aYA16WA_$D$PXl6V$9CPy-R>R+t!ka1v8Jco++s0dGQ7L<*7yS`DyVb<@xCHNcAWp44`&G$`#apIIscydvGadA>2xNOCcgAAf#xDTWc)|Wxn1M8ch=M`9(z~s@x0=e9S^-WOB zMe3U*6+rqXIOH+hijtY)i_(*fk*_Lra(p2d!PeBd|rFsR}fC(6lvtz6TU< zAisbz26$*0sr-eCW9?rd=}XEiiBHW-&WEfRKy_zgNq%l-a(r@rDQLPC*=%@S2#zag z!3JsPfz3`$%*{zHE{=yMQlz*^%q_@4b}-CNusC=q7!*_R_%F&&DlIO_12-dKVS%k* z2C^4gvw^E3xLWW)K2ob5Y9F|BgkCa3gK!`)e_rYSRCGfHN zq|CfT*gOS94sGxs>Lzfb9$JXN`cxqG$l|ajB+N}%+fYGHh-MzNbpTFX`Q`BVfa`gjIfUxunu`X!8+f26&v9GRsmSGZzSd!|EmEaU#%qBJi*eXc7u)7f4-VNoG=JPG$*gy#y%! z!Mz+*kCte%E6N~LLSk=11%yz5{K5b z5aSTy@HH-Fsh~yHFu#HAD#|a92hH$9%V>yLdQv>tN09gfi-EH`G?bxn2Ns7oFTS9( zC_NR_yF`|QER2C91*Gx|tPdPfsC`L@IC#1Y;dW@khm==H?n%x8Elfg5BVhfBr4^6_ z2Jeo6&GL1DW*Tr#2Uo+;mPI~j8XBes5wft!dSmdSlVYT<99%6lw4ud2cukC>uM5lq z?DaKB9=Q$#732kA=YSWq!OVtK51^?r@Dv=Roc48zFGwu{7wdV+sqwk_d6^|3*MriO zuSjKvAo?7A_5bBwimJb#|7IP^E36+C4^uTnXn+8$=(*v~tWSk3J9JT=o%@uHY zXYhqA7_Nlu7zaB5;!j-aK;8iP)hQ>l1nK~!JLn+RfaHS{%iss2fDWj33~~ayJ17-A z&JNjT0y;z?KMyPg(gSfjrW8mH;vRf*P}jhG0=3UQwZs)v27}fp6+`w_!tDda7gQH4 zyg|Ca?gVXOfy5l>sBIT#u%>d*0_dF7#NyNdNJ>G7gHM@*io(=_4u(Qk=aO1nQj}kb ztP*S=#D7S_kaPgv<^kCY5Aj%L8Q65N9+3Hytb;}aqUG7~*M!7>OxL&L+x877V#pD-~{c*Eio zCWacHU{SDJAbx}z3lfI79XT?= z9FP#yzn}%(D8eA|;M5YA%=FBXM99`$`0lD=Ph%I5JZLj0KKbC(68FU1+(dAEqv{6x z0Yx5RCSEn$~&?Nx4K{OoDEZ54m}_VY&xbnE)k*dQ-mNFQTc^|!!9Be9H|g7 z@J@NKA6z1WQ$fcffYT>vM{}x2VqQuP_~;>sK2RkG3K57-@ZN5aA0zw=QuAC=%Q7Ly z6hYKN)W8oT0;>asDMTD>D_G1qC%-rqp}8Eikp#=Z``|Dr&2=v*1#1P_;hG2GyA|c< zI;N#%=4F;tx;R7p2$h4F3(^6y3*5{Ds{s2Kl1@-`g2lmc1Fc1&bt>4aFgsI=5=&CS zI~NhggXBPEJ(4h75BOqCa2z><#(&`AV0%C%n|o1yX#vFDU@_ms3b-)T?O<^%W_aai z=E2p1Oa`Ti%slW87^KtC!2WV8N==1aN(ZsaF$dh!MiGPNJFqvPhYmnI2{jw+4(zgE zJ3ujvRT>(9h_FL39pp=}es~z7NJHEkoSK&ct%XAJ!InV8k=+c=+EBM5i^DwuF1sKH zF@jpIAf=$VgB`ShtPbuLn4#tAIpK+!C2sje!AZ&fzMv~pKzgBKzQsslpf~|vuLmi- zis6#bIu2bJWDe-CfXck&u*96w)MAkF5V!gkCxc39kN^V%LpXFHJ7_Q$)PpD~$_Fj8 z0E>ebYlF8JL8hlr#b681p=N;8LgsFed(;r~L5qe#`=ruA=@OwHvMv`srw5vxhOCbU zxydgKy66$w4T5&^U~WKN7>qCzsap~cUqlNv4>S&z2+h|pb0EE7NXrE#1|B~FkIo{@ zb%}tiLIlqbgUs_Zc7bgE0*`*hmx9VxP=5)F9H^cKn+?(fHW$&2hl{5}>T?7iRO>_S z2kA?Jv^*dyp^+jAWFKfk9=s7PIX@3M{y^f8VFPfVwFErao|*z*EDY0&tOn)>uwJBa z0r8On7wk^3SYmc+d@`gv09~F5mjee4#Ef|GfFaaBAbsG`A8^kDx>gZME(OwfhAa<) zF2;em6*3qGjyAYG$>5F~I8ah6O5#(CjX-0YX_+~xkn{(d%*C15p!R~)Acq4ikU;i= z2B%Q;<2`t{hd+0!mEelffV4=eRne;;4GY577Tm=II`hGZ&zd=imK+B3i z=?#7V8zdb;2ADwy{eTh?cp)sv{l@VO*!I1FH^eb8FhJ82C^vzUI|F!8Ae0B%1P8JY zdD9zwvl{~g19(ykv<9DnfdRA;4y+b^qZ*>?uHKMo51`5^@%g|x#9tQRy~4c*-Z;uj+(`=Ox=+CK!HRD^~RWXBh1cL%8J2AY`x z9}`||#DFQrz<{~43nT_U`5aRGg358w$PTzbg-%j{#L#wb!KaC#WgK*78??QQ0f!s| zxJ-mpB`7Kth8Bx`PTu3=~wzYD_?B8NNUjsu3gz zE)SuhiOVhUauTW!wu1^?9BLk9%^XxMC{RG<2x4~>0|U6l1PwcoyWo?gNDcstBh8gT z+FIbU25I*b0|Rmc8O(+#gzsPiE$;?Tn;`96f|SXy9ZL)heqr(8utMIjTfw1&m4B3jr01^k81`TFV(gbft0&P$N`4g@lx)lkOhLE=( zK{h2Jm3z>}Eu{PfPs%WWHzy&=RY*Aistk)67(lCRVVj8{H5XzN5je=PY#st_EJAi0 zI6Z<_1u!rm7C1mw=R*1s@aZxJ=Ng!cNEnGw6mHq&6CSvka0Lv}A{u$B_Cx9%X|J%pTC04sbToCKi|&a#;+ko3Y7( zH=rQ70a+h-^9hn1IB_BP;0+~EGZ{e3q#;2AN_XJfT_77r7!Z8;rV%7DDQ$e{Nv8kgtIW-Tog9mi`FDUNNH*%nF)PS~& z;3)`fDzxv1CdYueQ=WkVR3?Dh8K9~Jl<1*+aIpunAIgW6RM4qmkT^ImLMCUyK@8Fh zZWlpneDH!>a6Uw8vq3gHz(OBXMx>-xfEJ3T7G;7qsX*jGtvHw**l1`kv6unT@`ThM zpfFA?G69!|&>|dVvjaGkzQVAO#Glz5w?X z7#JA9lhTl4A3FPA3=xC40lcXIGLMbAnE(>FsGA6oHxGd83Pi9mfb9b}|3K@3a=~lv zkjgP|`w`nF0Z7^arFzghn>_Ot75Qa1oAgK*xA8gkGs51__5(*@SvS^-x zfdRH)9<)vZQobS@5$FryL1QQ&GobE`%shsr_RhN#1!*$&>`hop3P zXd}cyN5LTZ5gIp;Md?tpA(7ex8QOu_ z0jZ-Ai@;&xu*KgnKCB>z@j+<^yx1Gbe2^G?p*OlXbdfi*e$e7>7$3GC7Lv^n{(*^u z;vB9PX`wcFAvcm;$aOe)5jS=@cpgAWXwZe*Fndtskj#O$?;wp(usBk`4Vtn+24qXh=zlA0iklB#YMc7yi0|ThchNdBKZ4OZb+PMT?N{U#x3>)7;U$hJshn%pH z0?8PlBA5Zx_W*ew(Km*!?PFkIKoSEt+dy`L`pwX|0542N@J$)gu`EP}_n9G@KwVsv zb_{GT0l94hi9-gEI+SV--qwMZ@ZgxsFGr|@ii6wP~2Cg{p^$K_eJZ-+=}$5#=;g3u2A{y3`hF zc`ZW`bXhGpVM6^3awEiOlqIwbkTGXSz`{nQz`+BV@d3wG8f2*~12k$OIRq5Os7qrR zuq=sXa0D-wg|{mpDIK))7BT_{T2_jsZpT~<3r#7o-U&FbKn;WTau6FNg#bFc&bNE*O1kx3=EL;3r@?3#x*GaATMSGg?QE%pV)A1n-z>t5LU)e=Y)Ldr@=Va@tAEU>tA6U>tAAU>tA2U=(l2U=(k_U>I-8U>I-0U>I-AU?Ib=va0W~fYG3Ji3&Cx+OcQ<_g z6IBnS-;O-52^tGWp3el$ae~|in%4x;Ancr9S*6x>1dRA-6a=zbG|TFC{03 zK`%G6BDtu9!4t*ITTU@(9S(zAPH}K* z33#mshz(kQ0$TS0VmpG?<$&xjD$N6R4HQyA=N~CBFz|9QFogK{2M0q$KwO4kPd|4g zE`y7|ucN0QvIql1kePw82``spo)=sYd(?iz)R#A1cq#FSKp#5{$>l9JTif)a(2 zdSfkH_}s)Dlu%>JCrq@u*4N`=h4ctAh zr3IiJ$_gc^iMa}C`9%u3`9-M;pxxX>xnLLQfjz(gai1|Sm#%^%!WpH-sS3Wqo<0ho zBYYInit=+6N-{Ew6%vb!Q*)DYDiu;ni!$@l74pDaWFV?QE5I@nb26*I#&d;$)PoAR z;jSE>XzI%udaz1be3_wYW5=L?J&- zAvrN82V_}d9@tH~pn?lD(4nBApPW;qsQ?;&08Icw+?j}QR37NWRnQg^h5RCjq)SeY zZ(?R1*zcftF#`EJFTX?~H7~z3Jwu_mATc==99*ClOAbnaA%~YCNFP#o!Tp{JcDr*> z2qe5qG7|F?K%)(M#D@pS9+2A%Kz4vk0=W-iK?+pf$O0r^ng<%x0i_&-3Wbc+!~&2i zaNHW1gVce{z~aa9%zOp7MsU0#^qJw*S6q^UN1rK3UqNY6szO<2QAufH4kCg;F$uOH z$jrdV1f&kDyW;cnQY$h`^b<=!lmd8309YF+FBw{b^dbD6Uyzyy$_K^yIjIUM;AM~q zwa_q1ttd!ME=f%RhYWJ=3^Fq?1cy&)9$XE$elE!XP0cERDhhPsa$;$-_Zv$``VpW@1lny@7xELJZAalX_30&`hGAy|F1}}*~Mu3X9 zRB#GrVDQZZjXvb3l_-Q|f_>?%t*rnH4aAPR=f_ZtfnQUfw>we*OW0LBS!R zVc`*xQPDB6aq$U>Ny#axY3Ui6S=l+cdHDr}Ma3nhW#tu>Rn;}Mb@dFOMf{MuFC092 z2ihP6>O#4vmV_3k7C~0>f>u#N3v@@&oK$LwPhxQih^R4Ph}df|5c*V^ecWYg>CqXIFPmZ(sj}iIXNz znL2IyjG41$&zU=K{(^;z7B5-4Z25|nt5&aByKeo4jhi-a*}84}j-9)9@7cR=|AB*t z4j(ys?D&b3r%snAuU@}-`|kaR zkDoq&`TFhqkDtGO|M~mxKgAUf?uvz|if5qxKhXA59R7qVe%$ilihrQ}@8MyUn`;F+ z?T&#VB_$z`)>^np9K@ zIckH!D=`nubV*GHna|*#T*45XTEO5~n$F-=n#15#n#bUqSjpg6P{iPySOn4w(!&s( zSW;S)k_fiPttb=B3dtxfDh9I{7{XIi@=~FkkWvWCH$M+78(a#d6H6G}iZU5OGD<<} z8A3`^8GQ5e7=lYdw>mH|%-FUr>BF{lNx`LgzWI3}rK#bmDIpo9Zbg~FpyQH3?r=*@ z@=YvqEGY6#tn@0)^D518EKLtiE$~k+@yjm*d5VF7!2?wIkclUBtxKA~ur`SqN&kfw zMuw7&j0_dWz{MJp421db|Ns9W))goX;vddmopdFCHRzfd1`r=4e*sAz#IG+xl}FYO zl5Z+SmA`?eU%7mB63lFUBsRJ^b(N^*^dOnDsb+Q3wi;AZDZ@QRUIy-!v7!yvYnyd1UiJ_Lt2; zl}9&UXa#=xt1D6E(bIv|YW(sw+fe0^?caHNb<)+-tCLb#5Gi&A3p2x)2aF5_%m}ex z9Lx+153r|S9d>4hZ7j?TXIPjS?y)d4ykcQy_{GA^z{bkVAi>JapvB6}V8_bL;KRzy z5XH*OkjBc)P{PX0P{+#5FpZU&VHqnk!!}lChI6dU4A)qh8D6k5GyGs>W?*AuW{_ZG zW-wr5W^iL;W=LRTW~g9eW|+jr%&>xunc)x{Gs6WoW`=ug%nWbXm>JmEnHj{`nHk*J znHhrEnHjR!nHiecnHi?BGc&AWXJ$CY&dl(HotfbWJ2L|Z2Qz~T2Qz~K2Qz~e2Qz~k z2Qxzi2Qxzk2Qxz%2Qxzx2Qxz-2Q$MG4rYdJ9Lx+SIG7o3aWFHy0)+zu1H&{HW`+(H zW`+`IxFs_}cBz2|Nul@JGt@wC+k_lZzz`2r0o_sQ;>_S5;OgfN8Y2Y_q%ycMA~v*# zfCoK1Qy3Toz@quNxruoxKACx`jtpW<9;t~1;K5Udmmt}&)FRN58P^I&1_7`fWZ-l$ zNDkzj)Z${04hDt=FcFvo8R|hIzWFJoInX_>jtmSt8IT8iQ<+0@is7TO$siuYc!o3( z8$NcM0^)%krNac?p$;0bNlo$0OD+OmVadRt!5j?f6N85b7#Ipcc7yuJP`(DTK9^Lu zzA)zCoYd3;1{IKg$WC17V8Kq13Be^P5J3ipG!Wk{Gbc5qvLKaVJBSxtl2}wyS^(;t zJ2EsfK#rq88-ZY`1*wFD0!X)CVs5G<1H(54kat`WqcD(oEOulF1*ylBVEB$hM>xY2 z=J3pvROgJuqL6%F(CuALl_jYR;n>XyXJ8Nk$0KxeH-iwE2ic~}z|hPbmI)rs138aj zF%x(zY5-!o3miD9MGW^rriWxEXM+V87@R?TXySt=3(pjWQy|gc%HopL+>p%NRL5da z2!L1&OPIq!7u16I41r8OsflIiLpKZzGZzVr?^%mr-E>MwhQHvE8Rq~7hRGmNe^*}++n&j@I4m(IGX-?}Y5-^&x)B!g z&>SEIj+dZR2=_WuP)SZ`9_W-(1{ttSFlf;jLn#wH#zXR9$$+5*WRp)m==L{|8yp!J zc7a47X$+Kp9T^z*qKbqwFt{-JIQu3RKvX$0Ft{S~!;xlPz$FT(?tx)enF#Rxe-io3 z44_infQx|vge^Fk8GaZtGwg_BW(Z%y!Vs~Bg&}ec3q#Zz7KZ3GEDSMgSQuj0urS1} zVPS}0!@`iThJ_(<4GTlk8Wx7+H7pD%Ygiak*RU|8tzltEU&F$Xv4({qa}5ha)*2Ru z>@_S5Icr!La@VjhPcgL(v)*hT=6W3?*w=7)sZ$FqExfVJKh2 z!ceh>g`si{3q#c!7KZ9IEDSYkSQu*8urSoEVPU9W!@|(8hJ~SV4GTll8Wx7;H7pD* zYgias*RU|OtzltkU&F%Cv4(}Aa}5ha*BTav?lmk7J!@DPde^Wp^sQlG=wHLaFkuY~ z!^AZ#43pNdFic*(;O^tY5>zuwe}g!^Sl%44c-lFl=7K!mwox3&Ykm zEDYP$urO?2!@{s*4GY80H7pFf*03<_Uc|evea9|A!!@)Hy z42RaRFdSaP!f<2_3&YVhEDXoiurM57!@_W44GY7`H7pFL*03;~Uc_tvm5++V}O@L&xK!^1T!43E~ZFg#wv!ti7b3&YbjEDX=q zurNGd!@}@l4GY7|H7pFT*03%L!^br&44>Ap zFnnIa!tiAc3&YnnEDYb)urPdI!@}@m4GY81H7pFj*03=AUc>9s5jGHY2FWY@AV$gO2zkYCHfps<#OL2)e$gVI_S2IaLZ3@U3` z7*yA?FsQ9%VNhSo!l1F1g+X&I3xn2L76$FLEDSnpSr~NJvM}haWns`?%feu=mW9D^ zEenIuS{4T5wJZ!KYgrgf*Rn8}tz}^_U(3Q^v6h9waxDvk)mjz?>$NNlHfvcJY}c|d z*sWz@uwTo<;INj3!Er4MgVS0T2IsXb3@&R~7+lw~Fu1K{VQ^o|!r-x%g~4+z3xn5M z76$LNEDSztSr~lRvM~6qWnu7N%fb+_mW3g3Eek`?S{8=jwJZ!FYgrgV*Rn8#tz}^d zU(3P}v6h7)axDu()LIsX=(Q{iF>6^EV%M@T#I0pvh+oUXkg%48A#p7WL(*CnhUB#@ z3@K|_7*f}=Fr=+zVMt%g!jQ3+g&}h-3q#gg7KZG#EDSkoSr~HHvM}VWWnsu)%fe8w zmW82kEek`@S{8=lwJZ!JYgrgd*Rn8_tz}^-U(3Q!v6h9QaxDu()mj#Y>a{EkHEUTI zYS*$b)U9PZt>L(^IohUT>_3@vL}7+Tk|Ftn{@VQ62=!qBmng`smT z3q#jh7KZM%EDSwsSr~fPvM}_mWnt)F%fc{WEepfMwJZ#i*0L~6UdzHTWi1QC)U_-O z)7G*uOkc~wFk>wX!_2iT471j!^*WR46D|%Fsxq7!mws73&YyAEDY<` zvM{V)%fhf>EepfOwJZ#q*0L~cUdzI;Wi1QC*0n4Q+t#u$Y+uX5uwyL?!_KuV47=8{ zFzjB-!mwv83&Y;EEDZbBvM}sl%ffJAEepfJwJZ#W*0L}hUdzI8WGxHB(X}iL$JVki z9AC@AaAGYB!^yQQ45!wzFq~e?!f<9S3&Yv9EDYz?vM`)q%ffJBEepfNwJZ#m*0L~M zUdzI8Wi1QC)wL`P*VeKyTwlw=aAPeC!_BoU47b*@Fx+0t!fUdzJpWGxHB)3q!N&(^XqJYUPg@M0|s!^^cS46oL*FuY#N z!tiD-3&Y#BEDZ0~vM{_~%fj$sEepfPwJZ#u*0L~sUdzJpWi1QCS5UfL!@}UXhK0dv z4GV+!8WskhH7pFiYgick*03=6uVG;bSi`~)xQ2xxXblTP@ER6|kTom}p=($e!a!xm zS{8=yYgrh6tYu;Nxt4|D*IE{a-ypxOXJNRyo`vDsdKQN3>sc6XtY=}kxt@jL)_N9( z+v`~v?yP5FxVxT(;of={hWqPT7#^%=VR*Qnh2hb97KX>`Ss0$IXJL4{o`vDrdKQM~ z>sc6HtY=|(xt@jL)p{0&*Xvmr-mGU~c)Om3;oW)`hWG1P7(T3LVfeV7h2hhB7KYF3 zSs1>oXJPodo`vDtdKQN7>sc6ntY=~Pxt@jL*LoI)-|JZz{;X$V_`9Bk;oo`|hX3nX z7(y1YFzlJi!jQ3ug+ZW~g`s8&3q!~X76z9!EDQ>>Sr}AivoL7PW?|T}kcGixB@4rx zMJx<=7O^lC%w}OYu!@CY$21m(3wu3@lSw z7!+o(FmNnlVMv(3!f;>_3q!;T76y&QEDRp2SQxJKu`qm@$->al$HH)71`C773>JnX zi&z+9RAx3s@L7 zOk-h4Sj57hvzUd!U@;5Bi8(9`CW~1Z{>)%u@L9>ia9}D6!;MKS3@bo-r?N0uEM{R? zu!x1hW-$u`%M2EVh7~Lf1v6L}bSAMdI4ovi@L9#e5U`4cVZj_0h7-Lk3_f#M7|!&v zFhtB@VQ84h!f>OHg&|-L3q#997KVt4EDUQVu`t9;WMSAaiG`tKA`8QXUKWOsIV=o4 z6ImD%CbBSWnZ&}7GLeO0$0QbpJCj%#<}6@gkXXsW(9_4laAgJyg8<0hB`gdR`dAol z%wS=7Fo}g>%>ovNGjmuNGA6JvOqj&NkTZdWp7``lJVfe9>g<;KV z7KRP0Ss4B-Wno}g#=@{=H4DRz)hrBqR-^X7&Ml!Fr1mp!Voiuh2g?v7KRH8Ss1QN zW?^ty&BAbFG7E#pY8D2c)hrArma{ONS-P5VbJMiVK_0Jh2hN{7KRUVSQx&{VPW_&hlSzK92N$K zxhxEKCbKZ)fXtrE!cYJ*e=-Y03CNDgEDRNMSQy?+W?`rS>7C5N&@hLEVag;HhA)#@ z7!p9{OlDyS0EOLT7KRp(c~e*zI_9u299Y7_z%rMGfnzQU1J7I*27$RO3?g$`7_Ka1 zVOTMTg<;Jc7KROTSQxf|^nlzC^3Plr2AR1m3<`5u7*yu6FlfwWVYso3h2hRJ7KR7Q zSQwsw=sp&P1JhU-p7gOW9GS+#5CMwwsVodVlUNw`fb5;a!jLkBg`r>~3&RXh+M2|| zP%@E)p<*Hn!-7dH3`bV6Ft{vXVVKg#!f3&V$rEDQ`wSr{BB-RV)l=rm--50O?=F!k{ykg~0$677JJyJQlMsn9OBiu$arj-~kGI zP+2mQg`r^r3&WE|EDUERu`pOnWMS}`!opB7iG{%gq-O~W!;d}|h82@o7#L==Fx;8Q z!oV_{g<;Pm7KRIxSQu<3vM>ZpVPUA5#KLd@WIxD^1uP5?CbBSa%w}O=0i_*~x&jm2V4J7@qX9Fa#`MVPILt!oabNg<-}j7KRXz{3;fP2$1|L z7KWGwEDSGJu`nboU}1Q(iiII%0Sm*2RV)k{3s@MwtYTrvS-`^ZV-*WS!2%YBKdV?6 zN*1s%Fsx=_r~sL}nuVce0Sg1iY8HkDP#CXfVQ2xlX*CPOgT*WiDyvx-0_L(Xgv@1O zh?vX5@MaPV!wyiqPGn*D07~m1J3w&&fL(d8p zh6+&n0G0oXSr|A#W#0l8hM2i53<+~t7}iWu`mS8U||TE!NL$RgM}ex1`9(D$h_Gs3^ky-Z5j&$M?VV#Pd^L8pP4KS8Vgt$ zCQM*q@R`WMu%eHJ;mHgZ29^~p3~TyW7+%a^Vc5{e!te%^W>>K=uuNfLxU!Iifny2_ z!;OV33?Zvo7nZ?3TF_(p5&MFp$4v>0K9kP&xp<@9HgUD(Yh8|EoxSEAw z!U7fsnbj-|Qx>o=D1h8LnT6pBsLlbo2UK@YV_}e)!otw9kcB~E3JXKWLKX%UklPlr zFuYjI!tiD>3&R~yc!J76Q2D=rg&|=E3xmc=76y(LEDRA-SQru(voNGAW?{%!%)*ef zn1!KWF$+Vl6G!k`24??M&^gDETwGZwNiG|XjT zXqn5x&@q>Vp=T}&!-Tmk3{yaP4&+BrIDq^-mxW;kDDLO7FkG0x584JUQWh@L|ma#DWSjNKeXBi6v!*Uh|mgOuA9Lrf4c$Tv; z2rOq|5LwQ`AhDcEDRYdSr~L?urU0X&cd)`5evhXJ{AU%sVoeCrn4~Y zS;WGyqmP9_Vk!&6o<0@^nW-!c0+U%7Zh+GGR2GIQQ&|{hOl4u1GnIwG1Qhn5wAatV zkTZ#eL8hOD;l(r-28DhWh83$=7-mdhVMqa`*Xb+_bEdN}2+U?-5Sh)wuwxYq!<-2$ z3_Xij7#4uqP>Wa?R6t=kmxbX4sC=2r!th}(3&WSWEDS&9vM~Ia%fgTY%JUOg7_NZY zxS;$ngN4BX)CQZu!l2U6!tiDq3xmrX7KWVZEDR2lSr|0>Sr|S{V`0cy%EF-2&%*F! z8Vf_gQWl046Id8nK0dVh6^iL7!3MZ7&K;KkSoE_n7|dj0s94FuVAIdSU^0`1p=KouLjM@_H2u!;0lB z3~QFNFl+#&hvh5`CZP84R2BxCsVoc*Q&|{Xrm`@2Ol4v4naaWtFqMTN1XSitWnqW` z#q(4ah7?eLVJZtl&QunLf~hPFB~w`#DnR0^Sr{@_voPeWW??8;&B9OuD)&KUKB&B3 z&B99&` z?`L6HFr9^A4af~MSQsX(U}5M1#oY`R28&573;~l^7-oR#Bv6??jfJ5F6bHR53>F~y zUKR$M87vGbptQPzg+XQo3xfiv{sr}AK>eH zB`gddK=u427KR8=Ju-=fAz=~=gTy=*hKwmJ3^|~--4qsvk|`_gULJ=28($t3^wyv7#!xYFu2TPVepv8!r(KHg&|-b3quIVu6ZmB zG4og$66UcmY?;QwkOFFJOk`nb0LA?j7KQ~2Sr}|U?F3Mo2elDqurRy;wW}AhFiZfo z1t+pFyaBbVL3Qs!7KSMxKBz4TYWITrARv2tSr}TTurPS^vM_W^VPWv;Wnt)H z%fc{W3JU|zG8P7bWh@LKy(|nExf%*eeSQr{W z?w-QJ&;n}Hf$9s8yFv8@sBQz5?Y%4v7eL{;jDsptJ_+NAouS7;@&ZFci#VVJMl$!cZ}fg`s913q!*^7KWC2EDRmac`OWbKxM}~7KSDBSQu8!V_{e`kA-0aD30f`FzlGe!mwu^3&VkVEDT5H zu`ryN$HH)C9t*>Tc`OW9=CLr`n8(6!XC4c~gLy0rPv)^OyqL$r@Mazh!-sh+3}5E4 zF#MRu!tiGv3j@P^76z92EDRj;Sr~ZcvoHwEXJHVT&%z)vpM^nYJ`01wd=>_k`78_? z^H~@=rn4~kfchJtJP7LZt!81+S;oR(0KzL-7z}2yFqq6@Vfe6!g+T%|W&o-mLG5Bt znGI^MgT@v>dS|mRoS4nRaAr0O!v#=#2-FXq#KNF3iG`sDRG!UdVMv+H!r(KTg<%CK z&rWAyFj>yRV6mKq!3LDym$NXqEN5ZxSkA)Wvz&z?U^xpz$Z{5jh~+E{G0RyP5|*x0je`+urN$n!NM?SISYfvY8HkUpmGURb}eLK__C0N zp$61u>SbY2naaZO10>eV!k_`F+ZM7g`~an4P@fi*hC%(@RV)k)p!#k(3&S3eyFhjC zau$XopfY$73xfry9lDH#;mk4?h6~GB7;I*;FgVO)VQ`tr!r(EJg~0~YS6j-$-~wv5 zg4$Q0zQ$4(hJd9k3_hTK8K`XuYOjLmr7R2)p!#_!3qt~^f3SdsA!R8GL&j1T29>2O z3>u(%YAFkY!BQ564$%0+N*0C*D_Iz(fa;9NEDQ#dSr|SnU}2a68tYlf!Voi)h2ajU zTm+Sopn7343&WGCEDSpHSr}eSWnnOw&%*EqR0k|&VW?Qj!eBC=h2aCJKAF$L@MS6s zL(NhahK8jq3^wyw7=D22m-#FVe?WE1WERkbHbcN<76ukjoeD}@(^wchK_iX)FwLma;G`SjxhXGoOXQ0#tX; zXJN1b>7UHP-~iGO8p8mMNz7+q@R-KJP%)o{!Dku^!xB&(zm$ccW0h$9_&B8EeH4DQ65MIf`-~cLf7qT$8fXZA@|78gagUk#Th8ZhZ7>@L^ zFjRo*6j1p9%5O_p7#4uW5~s5;oLR`iumm*THI;>7#Z(rCHB(s_HcVw<*fN!cVFyTT z77N3gSu6}2X0b3ZfckceSQuD9?NZR#1*km=>fiUVFvx)VccAtGs2$M9!l1H|t^$&vF)qCyQAamMmsr za9GX4umsf3oyfv)1vK6X>NkVhBuiNsctGPips`L+{{&QqgUV&lSjaLK28U%V3_NRC z7zEa^Fo>*SVUSqE!XN`0OJ2jmpt6RAL1PUIgU%Wj27@&$3@*!97(AA-F!(HEVF*~p z!eFw7g~4JC3xmxX76u26LIh6qrYgVMt+76zADEDRpASQva}u`mS8VqplG#ljFV zi-jR(77N1{P&_PQVK7+2!mwu*3&V}+EDSa)SQt1!X$3T94Qj8iU}4w*8nd3j!Y~Ci z?mdBpVa6gBhCfSK7%Y~sFxY_lf74kQo=j(9crl%YAqUh40Huds7KRc~|78^mg9WG$ zH=l*!4#=GOEDU?*voN@{!UcuxB9)!xqq3-Fy~?6Z2UZ z&dg_FxG}kM7#+H{jy7^Z;6LHk)41g5hv6!fz&h)ic; zDCuWmII@(5;lxrF28rn`3>Ez>3^Jg+HGzfU%u*JH3n1}@EDRSWurSChWMP;wnT25v zXw0Rbg+T$7CP4ka=`0K_{VWVuma;J10M$FwSr|G%eHGBy?gSQwJ4;y@9)S9i3t1R$ zOkiP9S;)e$U@{BC5|H0O{TNUi9@K}K&cZOIpM~McQWl06OIa8!K;xACEDSc&Ss3n2 zU}1Q(l!f5~$oz#Y3=bx-Fz75~VaNf^Bg|o8SOIcZKMR8csBHi$$0x8bYygc#Pher# z0xA#tSr}YEebdP-3_hSR0*&i}<|sh!=x1T@0EOLT7KV@sEDR?mvoJ(}#^0y2Fc_?0 zVK7<2!jJ))6X;`M_%VZp;SH#qpUuKB1JoAjXJPOGjfaBjkwq*Fb5^i0ELg$9uw(@b z!wS%N4JaLg(h(?~tYBf-1Bzpics~n6z;qUd6`*n+WX@t1hBb>>7&a_sVc4>mg<;2H z7KS~GSr`t0##BLb9E({PVwSNmBrIcLNLj|hkg<$~A!iv2Ljh=P095~i>ReEL3o6?| z<8KRC7#u)(cM=Q32~geujlqG&-#}w@i&+>%Kw~kWxs-kuhJ=|c3@cW$Fl^~(VMv+D z!mwr~3&RdjxiOQ4VZ%xmhCQHiVEXc+k(nFkvPO!;O_J3{U!5 z7^Z;QD4?;~einuqGg%lOtYl$$)6c>%XC@27la(wCEz4LKIzV9p>f6m^VR*5Uh2cv- z3&WC`EDUc}vM~GrjU&utVffR}!mws03j+fvoy=rmU;(9*nJf$(pt-G?EDSuLGy)nA z0i_Yp*vJGHh9fgs7$iXHV6R76u1U zeK~=J!DS%}!=DK(3?2(v7#Kj~=nGjGSU}_BpfN*`nG0DMctCSo3t1QhCbBTZEM#F2 z0gW{;WMPn)$ik4akcB~JA`3$XXgqEr3q#IA76z4xEDQw;Sr{}x^%7|83^WG;8atcF z!ceo2g~0*TR|fSr7qT$4fW|HtvoLgk<^~tDFkD%|!f;~+3&WiiEDR4oeQwa0_+l1@ z37|gzVitxcD_9s_tYBeyvx0@;!wMFLDKl6YL>99!%$UK#AORXrSi!>ZV+9MtAJDkU zN*0DWGgug8Ky@N$+#WQ?2O0-l$-=<1l7&G4G)4s)=K+oBEM{Ryn8m`70_uCsVqwSu zjbqMYVJHEOTh3x(r~%c<6Id8NfZ`oAzqX2nL1GmP!<1z#3^J=&7!+2qFsOjWpg{2n zn!^CaA!ytQRG)$33^Wc88h-}WjjLD~TtMS5GgugIfaWJ=voN@* z{OBAO28%f?3^t%SJ5U@fW?{Gis{cWAKcMmiG`0&G%Lk3)uVP`?GK+;_$1E0xJ+oLC zmVnA-&^Quk+<68I!uJwt(7cpmYqHTVKb*AhVu@pgL&16$hLm+I3==@~dKQKy>sc5W z*0C@|tYcwVu#SbnXFUr;z;ko7DK73)|SSU}<+ zd)Kir@T_NHIJ1t0L0~-#!-aJ$3<~R67$VlQFvP59VMtid!Z2k$3q!_w7KWbnEDTrH zu`t|N$HH)D9Sg$)ke+oc3?l1T7;M(DFtn^=Vc4>cg~4JS3qu3Qt?OABBtU*$$HK5@ z9Sg&Obu0`|*0C_WSjWQfW*rN|2ax!B76zYnEDTfDu`tA}V_{gbj)fs%9Sg&Xbu0{P zKzi1*FsxY5!mwsN3xfz~-2%w(>sc6T*0C_mSkJ!1RppcoN zyO5b-ULiBXjzVUJ8->ga-wK%-1d5m$REwAyY>Jo}B8!+AN{W~nCKNFi%nY;2m>IT}F*95%V`lhP#>^m8&di`w z&dlIkⅆ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�jD2m48dnYp+_!aj6Xufk>^sN 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

BO?R0dHoaha)AX6?d(%Ir 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 diff --git a/Debug/openal32.dll b/Debug/openal32.dll index 40b2aa0fb865d6a19ba18f953b57271abcebf44c..1bb27f0d62d8a368115ea95694362249aaaac2ea 100644 GIT binary patch literal 630784 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�mugt}GnOhh)HB(a%3Am{ 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%0DdM)c-x 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 nfx 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

>) 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 _(Hs3R6 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 z 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 Tv23txvFxzyu|z%ZVC3)s&pJ*> literal 423936 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 z

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

fZU?1aSVOtd1#)XD_-rml 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

YrRzK)P3mt4gT#Pn6G_vy~0=m%GscuoV7Q) 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

v2|CD9WXSVp?%C7xu%FoOHjJ`?!jQjiI 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ν|C1RTnfw_97@z#x{mVe7 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�-$&=31<}mr_FFy0Z|49hLmtt0Z^KZ31=0MWME(j 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 diff --git a/Debug/sfml-audio-d-2.dll b/Debug/sfml-audio-d-2.dll index 52938865a99abf2b6e5ddbccfad29fe4aab4a930..5f29575703aa4482de95a7759c4b91d326d7d7e6 100644 GIT binary patch delta 246015 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

;OCkn|Hpj)E-3OuN!e)WVjPpUO!v!TSf;tNv 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

4Qg(E23N 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

%II2j@FXdkwa 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%0Di7M+4%(5M#c+%jB*ggQ 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⪼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

x` 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 delta 262836 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 diff --git a/Debug/sfml-graphics-d-2.dll b/Debug/sfml-graphics-d-2.dll index 98ca0f193e7cdfe3e8e19bcc53902d7433c85e4c..d7b7e6dc430549ad8fe7b548d5918944a1e36e4c 100644 GIT binary patch delta 536680 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%0A){!KaKvrJ-&SMPL&i;evIygWc{@{7Yoagv) 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 APyhe` delta 525848 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℘p~^w73H@^n+<;=t01fMaCaYdJcm4hk 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

g6_s|Ohdipo=A@CF(41!TCXF-9C5RfT% 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

3=7< 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

+P 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 a877D@@NAcp6A@$F?vNyUoDD=yV*>!&nlC&6 diff --git a/Debug/sfml-network-d-2.dll b/Debug/sfml-network-d-2.dll index 2f149855e08df1ea25ba02d49c4ccb2402f619a9..8aad026e264048a3aac8a9069e520a746c03ba5b 100644 GIT binary patch literal 330752 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~PIAHZnF~Ww;^7z))b#!eD_c4rOcDu`oz5FfgpJW??{yy9+D~ z9;{GBSSY=c)QS=Y28M4Nm>~`V`4!E61qOx$y`q%Fl0*iEt8bxxf5*VUunimra8n%^ z7##E<$`~wo7#J81urM%iFfcGIK{e2Uf#HB&CPZPf9>_cv1_lEL28J~l>Kyb+a*9C~ zaDuIZhUpy)bqDke43g8*85meV(ImhMiVOyZ2N>!c^ooj$k{K8vVXVLkiMU7D)TQR+ zCo?cqDKjuI7_c%hfD-Hr40TQ*w+&@{1_WM){bXQx8EC}B@Y3cO1H()ATqcH>MqZ2z zFJ<2|GQ8AS$Hee*aTp`ROF4N)hL<}(F)_SsiDqDU*{{jW@UqH>f#Ky;J4S|=9}<}u zUap?T#PIUjWd??q4+EJPUe0M^VtARphk@axlOz+vOWE5@3@ko!Uz7+&&iWn_5i$-%_%atkXX!^`uR7#Ln=y=7o{Dca7! z@bW=A6T{2XCX5U(udQWdc&P{y^LfC)@bY^GBg4x{?-&_g_U>k4c$vY$%XhL=y*GBLaq$YW%9dHO9Q!^<=sW`>uHr3@?>$GBLcAo5{rRGIA*>{MIutyj&l}#PCw< zJ_EzcrxuJ1FCDHiFuatGW@LC7c9eY0e9ZUr-Fno@8KnsbS2_@bYmI6T{1Q2N@V%?tIC>@REgriQ#2GD9W^6GcdeV zJ;2EDk^vM#(*GD3UT!O7WOy0Kz{v2@Mvj@`;k!NCfxqU4I z!^h#Dm-(v93@=|vGcmlpI-7~%Wdg_) z?l1<1mtykF3@;NwR>}x5F}!qt#>nvU&?ZKPmv8%-7+!LK9A3N%l>T@@?t2CDuPVsD z0Za@pZzVG_yu5mkf#KzaiA)SHvkx;cybOB;N`IV;3@_K{Gcmk;4oVL7+!vLWM+7|A(n~ZRCXBqPI1$wDTEmnA!x7+%VQ z4Bf@V$nY}Mn2F(~0VsY~gRH!^nUUe;Lqkyh1x509kZnds7#Loz1%=Ry=S&PQo&7-m z6=q_1dD4lI;ibwdMuwODpe*hMQoK}%k>TYAP}bPJgn{9uTO%XG%Y~rCu;wQd!%KCL zl1Hx@8D7SMGUAFDCWe=fK^cM%BL*@%IB9qgW}hfk>RD~14f3IA-5PA zUe4dk$na7Nl985mwBF)}i|{42=F z@UjDx&ztvw(sMBr!%NMp3=A(_)R-Aw_Wx&OczFsG@v42G@Y7{xcsYAHBg4yW%!~{# zKkj5=cq!A$!0=KWRMtIWVrF9 z(@%XE8D0iRF*Cf}Ed}x~sEFLC$HegRjv^z&%k2Wp3@;yn^3mN%Objn)gfcO_On$@2 z@baEE6T{2S_Y4d#r?4_Hyv%oJV0bwTRBo7p%-iskf#GGf10%!BwvS8|O{myV!fea#n8d@wRIybSun#PBjUh>_vtim6NtFF#u_F}&=v28AC7Bg4xh z|3K*v6pgn)F5UWxf#Ib>2qVMG+nu2J02SAPAaypN#3~NTI8G}W7+%)yXJB|K0rG+| zsH8r(5ma6+XJUAHqzx2)AP3z7X$u7vv=@9C8D3^9gX#|zMuwMx!Hf(qbwDN8_HT>~ zFF%1ia~D)%N~AC`yle&~q<1Z#@)VS#p6q5|cQH%^PUj#BRyj-jYN-w)W<-tluhL>Ob85v&cgL0mgC?mtm)>;OJmkU6)X|ppj zykr9vf{C6C3@_izVPbf>98{$`ePU#I=?luR9*-FrUKWE=_PkP1ep6&(c*z1vr}o=H z^`#uBe4Yx5Ut4B|mo}h^G!0ZiDz-5(yo>>r-szyicabI&!^_-qMuwLeAkQef)V7SKQ*BI2FgN7phEiWSCDz{LGk;Wf#Ic|5;Ma~Pf%r@;>gJGa=!{Q!^)f zYTcA5FfzQXzs|()(#sR%Ur;7_07|j9#h4jhPHP60&;1MxFYka7rn(lWz64d)bJ-Xf zUUE!gV0dW^3L!pFxf=;`ZV9LcyARUQ1uA4pL0M>nBdGrHW@LDI3{=7uf|5WEsNCHS zs_mIT8F4SDe7ON~GxG}uhL?S(85mw#f~qGMZzhJ9{(Bf1UPjGfV0g(2GVj1sPh_es1{V-|8Qbpc)9r$1H(%{Zw7{!CqYGliWnoqOMXyN ziE3nGc&Q3%gB-ZY!0__*T~Piw!o=|MBPeC}c!BC)P&QRs!o={>7L@Z|#4<9x6h6zq z@N(WmCWe z%Rq^BA*j&*lf%gH@;RtUR|IN}@QN}sygUJFPksh@pAXbrcnQh@ETGW!2iaD&3{;+i z8kGVd16G6T>207aUbqERK1(w)ymZ%KWO(UR4NA|TmP`i7gNvP+7+%(ajF$u@Y7vmD z{)4J4FHmzKv>DXi1*I41C!qZMpNZk+K~QnSa|09~p#1v?WO6PjZT#5C$nbKr0mwX1 zcD4jHiG2IJ_ zj}8`4{Q;`7_(08`l`^3A^CD1t9F#=8KxO;WC5#L&4M0xg1~uNx)-W=>oCwMlXZ#o# zUS0>aXeWWHXj@PLa066Z6|V-lFO!Mk<;?v|3@=k6K>637iQ%ObD9*ovO8E^SA6bKZ zDV7FuUoxovbz)+8DGn;g7J>44?Ez5z3t}Y;Gcvq9H;;+oW#tM``>KqI;iWyOFuw(A zxv_#$U4t7V!^_`-%nUEXzB4hrbOaSuI-sV3dpaY-%OEvIhL^dZBDWaS{!<2(5qhA8 z`pXZD3@@L6EZ_eJRR6LuGrSZ9wShN$1*PYMObjpC6qy-bHiF8vH=ug;I;d#=1j@u` zLAFW6FfzOho(C%LLA@uK@NzY%r3y}e6G8Rh z8Blz4j~E$VJ{APU2PngKE&#RHKwjmS1oam{ z^#>~`Z6tuKoDFI$Ui-|%@G>xfk>TYTPyZ^bMuwNByO zVPtr@Sb~Y+K{mK^4IyP)l_!sA$#z#pP#EYw6v228Nd_&w<)6pwi+$s4DUT1!5_vy-{$8f#GE~ zsL7cIirR^wTDQiGnc-zRDES=XVPbgcdy|pjWd*3Ib{N#Uo(HOgD=U~7UW$AJ^*=y< z(*kAUr=U6@0Ti{;pk|cVZ3c#yjVhr2FQ`rl2PtU+Ir1#1i?Rdc^T(jT?gLf0KPNCS zycB6=VtA>)8Pxd!#o$p;%uE1frrY;H{i7}hhL?rYLH-35zUEh%7+xxY3edZt>=FTL zP78w^xeiolb%NY{1?0>BpmO6?DX9MjYK=?)C1vk&28NexpmZt-swQ+mt=w`@W^w`* zOTD1l^aiNyy&2@HJWy{j6O`InKs_aWP#3Dpo{8b*R#50N)PefbAa9j{dT1L#CEOWM z703<>gGV-?_?-h9KhS1mczHO8iQ(lrP`0mJ%*60=3MjD8gQ|&Jpt9-f8YYI93L;Dl zFQY-d@@@7E3@;CYdQUo_CRjPB!MBK&nc-zFsLikg)FIyt%82(iFfhE71hr^gK*I#* zL5bm)F)00k`k@7&R6Ls>G=2c8yAOg&sWYGq@%##?zn=)|4=!b7czFXq<~@Jq0A&4=MnDeFgPrK8RKMkc$}5n=pM$(*1j@R(pqfMiR8J>^ z#xm+a^@3$8Bg4xrpjbE$>Iwe>#llliY4+h2sDJq#R9}L6;DKjB`AwXe;bl0elKTYG zu@@xK0cvGD2D!culuj!_9f=lDv3?&k5KsjQh@~4q<1e7WfoxD~ZW*Yz^U#us;pH1p zLUISi>ZSk&hL>kSUHBcg3=A(PgWAe^%8U#zZ`Od?Lec2zWN2q zgRRoc3@-yf9$XD-o=*d%;*Fp-wGJpaw-+%oykr7ZZM>l3K?2m{TMQaB`3LHV?F4m$ zu7JAN{d`OeFRefW6{4U4hy|cFQZ>kwX`oK4rK?ZbzI;gIoNIn2kC%u`0;bqx1MuwLcK?UO-(1=YrC~YhP zwbEokywVz0c>M*25xD%gq*43I6~kGhtBWANPof;pI;eMuwLqAlZCSwmMb9!0@tE6V$&1 zWpQaxdbtKFKqrDa!7`wXeH_$y7XsDEZ$S<}0V<>)gTm!p3TS){R28*=QjQRDy$18Y!nGy~Ps6G1^|bDELiWjn~fmq2xt?JUsv3uq`u8B{yl zfd(6Xf^y>&P|)Rr8qr>$;TX|UPu>AaBWmTDdnt&V2&vKIDT^$u4G4dl!@?4dNIXUP^FgKHqS1agD&8>nA99h8|Cfr_QGpwSNrP(xT5)GDw8bp<^^EEiB)SszrgR)Na# zub|ix$OrWoK&A3BP+RmMD4)lGijnUiLJ3q_oCW3D8=&!n#UOk8{)5{0pkW{pPzT{X zD7K^$85mwJH3hYwLFMjjknv_9?=ylD{~u6eA{;bUkOV6Kd_kkS9H0TZ$DmSg9cXk= z6BIomph~kJ)R=t*>S(KiN|gkVj@_Wf$+Ac$hL?$;5!X4OAZafG4MT!z*ji9QVF5}O zi$O6x4^*sIf(8avKvmm*Py><+lzWbXM$jC5LG=e{L^BOEVCo2JxYmFYVK}IJvkBD5 zik-p4@Nx!dK*$*6v^Y@xu@Y2}v494S_JeA=U!dm4Qw1i5mkyxHMj8|bX`tp{;RObU zmvcZB-*QkN@ewG%{(`Ez7a-PTP|uJLG+Mz4l3fDwr9G$>z6#Vvx(XUoNQhu!cxgQi zRG))_-4K-3Y(SkPcTlq;36$;kW-~FoJOOH0Zw3|N`#_yXNl+wD0rj2vK`m7)P=J}v zWny@_A%u|uG<-jbM?+vV1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^D~zx@Bd^_v%5_y7NoJ&ftr(C#-G z{}~t<(1@KaAidTQz31*>*9$TYWFI5gzWSYWKzi6AdS>C!6WaY|XAel7+C#9riqO=7 zukXA7DXN0GdzzpK&;!Ss-O0$n=2bHwNK>y|qVnf)2pj z0dm#n)sYKX4zLIqAMJGg5YX%TC1o*4WvB0(ZdZ_|985+=nj3+e26g! zBIO5>vIa{%>2`gh?fRnm1!F+B?~CSxjDfwOCxSpGs6&*+9|oClq}%lf$RQw`YmWW@ z-|Ktg#ZQQv{{IIB|C?^#FDae8AO}Xqcl&-YKKo+EKG6KFjrE%s@dqH0!UBpEjPPte zpnw@(%mql{WdaJX13N*c6B%A1d(p#7bO$25vNpoPtNys_3y_<$7%~EGGYfS4^1LwF z2=efg*CO4aFM={cprUdR(dODG|4Y0eVFn5?XlU_(6Je(-D40534;*v-!_@72AP^c= zfA>PH1_j!Yz5oArhdyaO#MBx3;`N;4u77ZbU&LNe_&Hd=c_F_a5`N%BO0K@%-Y!c2FdrdBMEl|9`MIG+uCmobLPP1N(6NK ziUjg+4;2XNcI5#(`OfzL|631~IAsLiW)|r6z3}4j26!Uq^}P_7@sgQ=q1%_^#p5lY zI5^XMim@~F3^WEn>NP+q-j(CE1T5FB015b>X+Fu=>3gQzl>;-4Z`lp=Vl^mqp2i*$ z0i|(JriNjNe=mbr)Eix!1Snh3{@Ko2A!x#S6#Xpr}3ZB4r&Y7aV9kP{IMq@3VJ+g#$q$ zbZ!?YggU?>)Bz8n6ED851?6>)pzgB)y`nxz3<59o_Wu7L5rr8rvv+|4ro#HoizHAW zK8-!Z!jJ|kZW%(77z9rI|Nmcsfq@|*i9w(!wYVTZuQ(MJZjkUgjvQVtpzzwTQ;?YO z+5ir(2yob3cyVAIBD`|IVq0FUSqBaa#$MM80lmIk0=q*wzy%%)$f2$qnolrxx^6h; z`iG&{cgqWrU0?%1nG}>nKw*kCA*|jB@^66kn-@j9A(<6i*g@8_Wc|-zDTJ42jc+C} zFffD%_U=vj|Ns9^(6ONeGUf5sjQ^mccNrKmD!`st@#6Vfu)9E>1*QL9-xct9=Y^DX zOrW?9-3gA=7Zqz@aUGJ;05+oM#get)aA5BC6$tDN?Fs5_&H4ZTKR7F$+W!B4XDi5g z-Mt_(5L9&CIrRU3Z!bvAi?^%6TA4se>k}y5fa?s77t?n9|KAOEEGQJg45ZYveKk_* z=}BP_c=2Hu_S6%*fV9#TupQ+nG-a|`2SGI!9Nh}4 z2z$C+dpcb^AXQoixO8v^MM&rbaOp4s)CTGGo$}(=N^q!vGtK>NU|V3Gz5oswES@gg z2J$qhkgx?M9B?54TK|>xKjSLGzm0D|@ea-}|Nj5qnL}IgCh`z8`3CcegS}*ap zYy+*Wn*$2F-Yft9|9=s?3apYDoDIQ3fxT0={QLhO9Ec5DKsl-4A1Ggd$N;E;{rf?g z38d`Bf)!u`n0mpQUo6@Rk^#Bp#i11-TS4tQm)@x$PXs|-=ep*}%Q2lZs1F3ufA19rXS(KVwl3!Hm0y?Z3R7XSV8`dIt`P}?Q161D-)m(zMM>3Xx z(u41X7Xd4f5*bebsM!IlUdlFse0>HKfUd}`j!m0E;#hJ=#AZ?}I5#&&`^6kqeumP~F{uJy9~4F4ln1ZRr%>kJEl~F=;C8PY4)->JqXA10Yrx(69^@rd_g+M}m!kH^4zR;l zyhvY)7SM?HM=zv33T}T~-2iES{8$Vs$v|z*kcp=w?sO5pw z{)pKHDj31-kKDyzt>E@Y5y%Q?`$G&AX5eNAD4T&9NbL{v#h?TXZN2j3G6=jV*o3{@ zxw{@*?m*ff3qb*nXn%<0BHAAcxk%*;I5mUE1G4^SFcwo(o}2)O(S;WbOVEP(0=&7Z zwhrVQ%=DbJ9wd$>eQ>OYrRVdYU_wnF6$tk>z6oGrU;uR)_b&PS|NqV@#8kL@{z58T zaMkL&=S9&fgu{JB0zqwxUf(@0l3{Hp-zhJiEQF>B{uV!G28N6aAV2q(fNEtg@$9w%7zxyanW@RuCBg754|%<{*_XPJ%j5ptg4J2T;4A5n?GzFNB-0 z78Dv6S}&D`Kt=X#{r?{{E(7JRUjP3;|2~H1A2B6HP@y@fDmuX`IGTUzmk4Cs0eb{& z)9-En|7S5~Ib<31P6atOsJ9g)9?;u+0o3AoaUWbZ^K`au06Bjui0quY<}Wx9S-X2d ztQT2J{{IKHnLsX=fV7R+A^Kl@Tmx#{$bcFW9xS~*ykORs|Dq}v!Gi-y;BF>3*r$P- zPUT>S{rUU<{|hBZL~-=Cg17-0ub~}ur=_5%1tlp^*Si_sCa4YBn0 zf^2&69@2tihK30|g+bya1frM$ltj$ugVQ9WuG;hBC@5dMa=heXWMJr>3NkAQltf={ z0u?hL?hC1vpk~&cztCpZ%r&4mUI7ZEUJwaRcgMgH3{vyr`aDQNh1-RFF;AY`%A!o(IZz_1VCe%UtVae1-S&Iqcpbd88f5re><|NsAk+G0IL3<6W2ef{Pl z1_4lD$S^Q4R24A@fRZ4HU0TE-019nT$GxD4K_D$NCzYWfu_S{5#L7#|O=W-&5rCU; z&~g?=LE3LWkjpO{SosAi9d`B;Q+{25mS5m}q5v8PtXK$6@dls*qGka&sKCvNR**d*^P_G0!* zu$AD%+6%Jih1xuD!TxeLsPGEq34$c57nYF7XUh7Y@c?WoC}3ZNECQv~7ym$o7l?!u zUacTz^8v+sUU|0^|l&-Y1;g$3a?%e+1U%qq@W_I8kVP+ML7L&LFh?y1DFl0M^(>IrK#eJvUU1TY1rE3=H1!Ioi~)`4 zy#!Zapghps3L*obb_#>-1Sxx=G7DxZxMzQD+5i9DQ$Z;a)VT*Uj=BC}f$IA{6YM}{ zXn?muidH6Q8h8Z>e+EdXy|@i&*&?OiwAr8}1TA2C$`}M*d|ZK}fQelODquVy1&rc~ z|KI@;5e9JiGNp_`0F)m<_fWklLzE+r%NPVe5d|t!?v*hJfV!rjGU#R*g8(SlK>fiB zWk~HcaAAU4(11!D23WxYr6J{ua|ygX*ZAfNbo@>MG=67FOz~m?9lz`KJ@ew=Y;ev7 z6($*Vpv31Y5bz>#HYinb@PlS?_*>S3D#{-qxlnmvrQP8A zymKljJU|06-QdD0px1Xo;0u#^AQO2yTR{z$?x`TMbE?LFa1=6iw}My!kQP$l3tpI^ zDxk@nsUR{49vGcVj{g9=*TGcVZYKr7n##s5Jg`B545 z;BvqQR0MyU0d_faZ!3r!knsxIRuG#DDn&uz3ob=L3`i*oQuZPg(tZY~Lfr2pY|9?pcSME++hGQ;2nlDFT_Ezuqx4}l0o2w{WA0v3z_Ozvlx_MA3!<`1)$~& zxWfRNR&=Rk5IFPy|9?=r45(xfNY2mAP0ULPE-8YfG)VelDn&|P8XVB}_nGhi|L^2t zA~B0&y$BO@BA5sUTKRZ|{j;|Np;u11aZNdV5Pi+5|z)ZUxCeYJD*4%YRV?Nc*-4+_eR_ zZ}+k?Fm!+EZQb(=l%m0g{TKZKQ5L-zWVyi)kmX=fu)7yTGkdXgBMdVI8+M@e0Dp@L z3)ryU&A-5-k|10Ei~fNa#s^ZiZz@Qt`Ijz#>oEpU4d?p2^#FhCE(QjMW3JB`n`>V% zlyY|Wf*jN7`=U4WNKh}>7XdHAXMh5c1C&5cO^4RPzDHi@E%^UGgXIor^6W?;|2DAk zLA|XLK)!j=x&)+$r?d3~IQ&3lXYU(G__20R1+jv9TT8%d_kkmcr?d41SS^SQ1X<<; z8iecxsd=$y0XXDYdV4{}zgWBA|Nob|%nS_t2w%0Zff_pCz_fOKQNjiC5P$1OP;0$6 z1Qbsd)4*o1^@6#9y;DJ96!fAJ=3>1FzEi$4R%IAZ!bvMf6+UTXlMsD5nsH5*cb5P7`Vjc=AM6Y^h;=WPO#T1= zwH=z9dRr@g{{J8F;_V`6yxaj<(F-EMVGXLvdwW4@UIc*r{H1rQ#1C+P6%UJQrL}F!lEC`0@Y$i;Ix( z=gQy!rGAL%und3{`5?9M$nTmD4t|K;0WVI@0Xrh#MG%D1+dBhPc0nzeJr|S;Zh)d_ zDv0cydIgdSxVu|HEO07#3kei1h}IV~=fZpoviHTj$zU!E)I-&C|NnpK&d9(3&K518 zCQ0`f(6;?!g6h+qZ(X8-@6!2=30m@yF`FTYS;3JMCI&ejWH|ANTQsi3Ot znClB?BBl-5AyW(g7m#u32An-KrNd!=l}oLnHg>1O2`J}>dzCvA;8z$3*rW5 zynr?Vgr|a9t)LVJZnc6Kkfa7u296I%odgPv7bp5rlA6gJNQ*$@rQ|QL>98cZp#T5> zmnVLpC}y7nsv^O2-;E3cFO24)HwK{n<9V||tpO7baQ`@IE~NPin*ZizU|;X#<)IdDh4v07~N^@rR8J0-(eL62IHXAOMOskob*827#Q+yi|t# z(h>$#MsaFEVo_pAei1`*eo87sW*$RMYF>It218P5T3TumLvCtuabh}rwjMU#X@h9L z1cn`V{Qzn_L)SDRFKGGzS~&9Izvz$4;L^u!4mf;4P2q0W58dE}UA`Yci@M?=J?{UY z_9#dOzPKc=`G|n^n-@HwcmvNOK-y2U5%xE}$zX)GpL#$OhEc>c&}Tp=3^Uq6>CJb= zi?%+v(=r4=Y23HxMNuC(i7@seue5M|)6MZ>CaiVp+wFdOpn~zliyu9p zyaeuz@-s6qWHDq&fXzJd;sB`RJ@LYK3TU#mqq(-@KYz;`CI*IMtu>%N!?D&{2vrB6 z>cNz21H&=bMux2a-Ju;py{(|;bO30Iz8GTIYDmUnJ>CkMAOnT&@m3#@Mg|6k*ZkeR zAa?UX#!d)hFNn*=-`l~!z|akwW&|1e!UEKX-p2qQmRbQHmYO&V+&=Vxn8Uwq3NOf| z*`K(&!PW)z_JTG42K7?+arB1pUFZhe-Z6z0q_7)22?(|xF?ND2e;M=t z|NkAJ6n^jl6aTgzu%?3#Id*}BvJbKHZ-bb_d@8N8*8`?D`vf!0B|%`#7azd%27+}S ze8j-Ntwj{%f`FZ1qb?!@dV9gW1=+s;|GRk^uCNGn2eJfpGY0T)2ip+XI~61kn$QKM z&Emk z1?xQ9^Z);Ar3?*($Zn8`K!y%NWM$9){}~2g{twUq#j9?xZS1{ZBLaJ;f<%LQTW^2{ zD7t;$baTGo0Jn7~fCgo!g2*6H@{n2x>dt{wz0mFg8^PAw3)1^S7t+3Gg_!t4Zu)Kh?N|@tsrgycr8_L?+%dElzvd%2FhyPy&w|2SY-VIkX2y$1D#;2 zSbHHR9fGvlK=l|XWpq2=DwgWtVaHS0~f1}yXAOK1cpu3q>+8G2u2^Um8Dzq~QfMOhU zHL*lHg8(R|K;i=J3<9A0sX?8$#FUhx)Z$`>;*uf;@K6GLloC|-A#iB-o5nXHEYK3^ z&F}yJcd{~K>Cye^^!)*qr8>qb?e15t2)8ccy{_m>Pec?N-u6i|Qt&wo)C&h~iY z-6#Hw-hk*_I_>}e*Pft4o8!MI3&bH4!AT3`k>r2oOK({Yg#$Xbx9_{F05P0!w8Ymj$PIAn;<>ROIk7oD2#t zkcX|`y!bi=*4O~Gof!^vBEst-NbB$a|3U4D8=atWu;kRtveXn<#f}n)qnyzY7!85Z z5Eu=C(GVC7fzc2c4S~@R7!3icgaF$9E#E&cgjzw{r~bUS*a+(2LN_vMgL=E*o)4O> znEKCFLG*9$MbiJe1J)D3uiup?;Dt>+s1L%@?fa)&pi>aOmvRNv2=KCFG*b{R`37VmzHvoYj(`_M5PJjoxB0#g?DqZeqPGS< zhzH`_9?-+|q} ze_m9A0tU2&mBaeY3q$R<~#AnntF45J=xBj{x!{D-ptl_%iE zyG}&>*CEG0)Hb{c3gW*V2>*dYkEr-BgV+lSS4jL@Re&QLGy)0=h5BYN7iau~@*%b? zhcoU$66oQ>6YxU24(@;DE@b~hEg zLkqr0MRzZj^a@)3=Fkluf8u%JR1IQ)vKLbo$aWs z_tv%`?|8(V97z3e-1QAOs$4k&dVL?f(C!9D7f1-i^(uposPMP!0?iDg4!f8@24uc8 zgT~P}bcSweuHC{=FI2oQpsFKpMZW>x$QEXhURBeS4b0Q(Miq7&={7bcU|! zc3siwdZpWUO{edTW1wx;sJ0nEY-4EA)AdGk?HdOE*7*#eDZ3jC{5?|{7#Qlgnrp8x@V9k>#@*9cJ-#Pz9Lm)D*nm{2jquX~z zr|*Rq2dhB5Grge~f)oonAPl&0gdaT3_v zDPS8x8*it;ZL9#xOz8HV(CK^Pg+JKFBcSc%y{<3iVC%u0~DJ-wj^f_h!|1iVnk?&_EB|NsAgt=9b|i!qA@Iiybg7u|A^1+*zT ztMUK;9o};p1P((t?t{)3fb8Ih%+tDZbi-ow)PGS6h%OUQ8{kV8185yRl272Kih$%@ zIXYc;z(>X(yx^z+6*4;@BjY#bG6=kw-Uu2ZL@Ms%ZsHqfM&;-|m5*Vz2s!6H`6;KRiQAm*uS`P$OtqN8RDUjA! zyS}I~s^{qTU19C}q)Y?5`Je0l|JQbXA|3jo({({-=#tkQ(4ucax9@^Z-#gu*OFBaz zfNB%ae&!R977?U~z3}3B0knuMpcQSmt3Uv#3A?=lG{MFVX^ew+ z!=x60o6DfJs-UBUI6(Vs-n=+a2}usvtwd@sqnYnp3^IQ;xHMq_o6m~X`~*VgXZ_Fc zK-53YZ*)MdIBG|PMq~-)@_TBXayn%7y1z$Nx z9J+MhWf_CO3$sd$`~_JFy{HTn)fU!oUSxtSc^Z3|U!DOJ-9F18`3y9V9P`@Nd4VGQTXZQpoE_bsMGoZl#E`4=77Az!u%oZ1!p0c3EI^C;&mn{A@Kx)0@e%^ zIH3YTAohfM(AKL9;KcAFAEf34II$rI=D|{=z?`t0LEy#9avXsfS_-lf6qqs~OPu!$mn^4VSb}l@Bs@=`glBkfEh)+Ieil-23cUCVszgAWj(jh?*pvZkVSqO? zTzF9c3JGX3{7{NWhWqkBA%vL>+e<*=&}4XG1%tqg^=0TG2T6r8;HDTT;2wkQcp3|7 z?_OAe2)8>cs1t6G^0Au(v@y4vDd5F2aCrb4$jK;0E+;`@3&IffpcE4LVk$UEfz;Yy zRSQ)QD^HCNbh!TK-{$)t(&_;9$<4tY<$)Ar-$CJnUVb8#Us&{a8ldZ_yvYdIJM7#NE9K+Vb*i?TsRvb+{+uH|4T;p_J02z;?O6C%cB ze8Bq63;z;q0Ru7&HeSXPcHH#~NZ>fixozF99L)#RJ3(i_{jv7tC})S3QQe_`f?h;I z?C5m;(Omn3p@ivmSofEVA9t7qGI;JX3uG~5rDjyzXBNm}`Y-wcyqHbG`pb(W#sB{| z|6nX-JOf&Lla-qB<36)M#*J6Z0vQ5#nFaof7J!wCSbupjv-tmivsLo zd_cYV!GliMFFQdiDzY#B?{@vt?favXM_?CN;LyKr-!I2m7=Qix^{dHq(h zu0P6HU%bi%WxgK)AjO&BUh*3d^K8oh|IHQ*B{m>V1*neU01s(yP5J-7TL5%M-;1Pz z|NpyPKY(@40|`S^yvhMDJ>LS#?4fVKDvy9v`u=%Q0aC>Ps>DIL3M|zKGWr9^65;Is z|2qv{t_Qi$^@p|Vm$L9~-!EW=FPJO9{_S*q0a9rQGv)-W1g3BKcL?*_GEae|@9d6|`9Rem*vXpkazsKK8l_1oZlH1onph4|-9Z1a=4iHrIav-M#{d zB6l6Qd=r2axhH&4O9OP&0ccm+3psF!3^iVrpz)yd zQyOb|z~!$%FSugm2z>Dg(%=SnPC?a#4}=dI|H;D>7Et$QF~VE!{@_9t6dSW}XbkOs zgGfw}^7}O>xS*El1Ra^jVeQLPA`SN19&psM1c3beA_dIhczwnC%?mpmW<%YBt^NaL zGiV_v2hM@e5c>=&rtn1wQhXrShe+nFO$5a})V#$+nAh#fqwUHub0?^2`~4?MXrT0m zz$G(Bz>BBJAPYcUhCiT%#xItDn*pG3`P1#e5%}T&IB0mfL;rL;u{0l$>Gu88>Bs^} zaKaGx973950)-L+Bl!fV=6%gEUY_DhKKc-#;%5K#Cxhhbo8(DyaXwxC-(*XucFA!~rUYeE+;) zO$F6kU%ErTbTfg2>Psghq^f-hD$nt`91&*7EJ*v8p%QsKP$L+097^p8Y$s?UZEr~Z z06MbO_sxqPv7q{uLz|=fAS_jYtE4wCzJi_m1hhTdJ09fn2O#FsTu?3hpp^AR3#eue zeE?bwA9|kAoX*DC=pyugJCOQ-7zQ2FxWY78{cK?|;3p9H-45f2jJ$@YCA!|Zznbjqdg zn-`lvHC!l%wLqy#x9b(K3+97_K-Kn}7k6SH^`GyX7n&*m|G##DsDViCM@UWuB^=i) zovvp2=|f0UH(sH4J+0VouKg|F8ACT|vF3GvLkgh8dvaCvOBnOn&lWV%q=z zpsh_W*34sK*fD<#WXK3KjRzh>05QN}6M6@#<;{zX?En9>OJ9ICioVc_`Tw8Up!*p5 za5$)Ya0Jwm11}CoP6GqU2Ib!{=sCrpVMd;S|Dq4TjZhZrFE2zgL2>`5x%SWhQZ}Ol zuX$c`b^CI3h5qRf+`t$IDIz|Af)8gAh-p6mK3|T&|Drd*mT*{qd9gkN)F}R6f^DP* zYDW)VJCMTB!|{Qv)7z6^9CGdOlpPGm+l9bCR* zGtYC93TL(}hYZ9t5RWL+z~+I5LNemPV_i$q(W^@={sHZH0v}Kf+Wz7Cr?D1vsBe8e zzwyaZ&c<5MoKHgy)9aY-FBvhQjs>JUlJTF3fgvLS)HOlrkr<_e0w2~Rfv9?LmsudA z0Hk-xE7VR2OZxx+#s^B57@sWd0N3`u94~A@nb4Qx#o6Tl|Dn-!7gVg^OcJO8ipIm@ z-)>hP(2z5OHY2QbL#p$@>S6Lo;xJ=D=?|K``M0@(&Ku={H2jLd)i|^(s)N(PIQ4fY zfXgyS9(V()Bd~fHQodWDlc4W^J8YSbAm=p;mA3TP5yGblwM?M;DBLZpDrUjv?j*c{O9y9Pe};02ah z(e1mU)Az~?#Tbw~F7$?82?CwV`(iz~iG*$90dy){GiZi78zb1Dc78|(nYErZx&W-C({)Ox?~LxyIo6?5N;$e+7g)Q_01aEbX+Fu)>HFp- zs4M)M6Lf_7E5^=HXmH@0wkk*l1;}Jv&I<%v-vbVk$pPKIJ@6ng2g`JH`*w8to_WC+ z4f4i`-q15ay{;z$Ud#b^NU#M7c&iAWxtRM&gyv%QCjI}vv` zi{P4zX-@)m>^VAJk3b6W|DZ%z9SIUV0-20X*~1|4f-4z)kPb8%4LbJK4P?O6*u$Xl z;ha4T0(YSEFco`7?mP^*J&kr>0VpZ?@^lMW3l?*L>zE&}*+9ExeSdU^{^$$^-->{> zu!Ho+FzQF@n+GoN$#)<2{saFu*Wd6#pcjP^;PM@kur}-i?f**vB`ip5|93oO5(m7l zVaGlOf#3iC{|BY3Bl{Qx;zJVCiJfb}(w}X9LyY?}1CiVpu%AKTg&>mqqLJMfu^-{S zl>Kya-}+P}_k94luP`1Fe!Jt4!tV!?`&bT;>^{)w!HZ4l>yu6= zme&fs;H3~hnh&uAy=a4kWB{nzcwrR_3Ra$O*FTVqn{$Xk;Kh#^NJJ`Fzj@&Vauawo z6f(C}a)?3T$$!W`#fC!+0`Y#S5`&@arP9G#&bzyTxy8U+ab03KAn?F-Tl9*y<_ z*XK{VU0*T;D+Kx&R(H5Kjd4tABL6-T}p# z4gWUqu;!N_@N5QXIO<9uDB8PXK~r&{zVwgg11teAwt)*?ko=Rt7g?Y*0UFKBb&VOnb>JKVk6#yf{C0zq zfs0$1X74c2Q6qN(yF@ z@1Ns{_~kf3zxc(Hf6?n-(D(yrypiL@abNH#&A(7YjSU`u-~dfjK`L#e@q%tw9&1;T zQbo{MD6GoimA`p@+egwRD>J9S@2Y7mp<2BRk4b4YDD-3Rh z;PwNOcQBYJ;U{42%2TY}>kD!hk2bja;a~=xU%42Z+ITu$K|_-aB^=$Zf3#gWUNbkJ z_zwxfXkx90jL#$>#%CJeNH8)mg!k^f13Jye4P%G~Wl3D6qkAfdv<53I*6ao=;@`#*2z9_^ zumdi%UMk^+$bmwR_4Tgi6aOJ?rX8ml1YR5o2IW@dF>J_E7sEi%`41|PvrfJSK_VHN zhYy@)5CHicv;gbOX$FCK-^7ySj8v+uyTV8)PyuZD0Te4G{-DWNSDs>b&{7i6Jn|oK z019-5qNe#D*1ms=mAb)+9&*js3)f&!kn@1AsshbAbG&AKeHNUwKq;F6>S?G02vCsp zwSc1ZbrHNZfro*=;Pi}|& zkdj+l03^AA`q?_?5NXZg9DULnD5`O$x47n79)^;LZdab>7ogI#*Y`(YZ>T`fi;v(S zhK8W;AJEv|A5hqV$58@c<>`wH0Z54sT$=HByZ(U%*J*h2YXp@lxJF+3h&i1~+ju#aFs>N~_hI~jb${KXeg*S*`9gMXV~(0|b# z@EM`Gpfc|V-Wj1PKS)|Y^(`h39A7%&y|q`67q~)Jj)5bF1zhv-1iqLIYKC0J627xzFw(~{Eei~3;$L1n~Kzyi6YHUTn655d~3<58fdx1g{BcVO>goG)memZjnk;X2<1OkOuY%|Q|HhX}mlz)?ofc>P z=7oSKqPGKc1#X&*`T(=P1?ftGEun&Wu<=pU`QN{gju@o7pyL6FIk1%|1UP@A^|v~G z|G<~Ny?~VD{M$l*fv<*r;RCM6LBm%ZfiLXgoIfv?LR4D6d9e>vauK--1gZW8RhC&S zFRE?9c^kYeSs?JmVz570K&!VHI+-BeiG^5ztpkZ}9>)u9RP&CzfsAMA7U*^W9nsJ! z2ww}vj@wj3kfEC|^WwA($UqL5d&9xjfx_p{i#HIvtlzv??S>-)FwLt*HLt(|WIV*Y zFW@o|G^iep$Goin83D-Ui$OTr_1G8{7jz2|XrHVCc(3?km;e8p-w1S{0iR$Iz|tAW z(jCCj8OYJ?z|-l-13G2?OlRty-cXUC7owne2cIvWdINL}!wVKC(9p?=z!&CVr|WdO z9_jWy@}k!XRPcNNA0F(>@xs*wT!4YrqxAZUyfAYC6+*~ID#SM*0o`_82r8Y3Zx143 z3c`Za=M#{_12$U#+C|>!O0ZUk22QW51ZY$#@P$0sR~)^eJV7rGfm@a=ovv>{(l0i{ zxDR@L9|VG$SubL|K+(q$(Cexa@FK+u%;|K6EIxxapI)p2Clj7d*DJlCA<0mcpclrD zV3pvRMHSHf>>8Z`EZx33ogN(Bp$44+Jdj}IdGXH)DHtVQymtZxBXm#4gj);(FK)YF zl;xoImlPA_Q4FMhy=DT6BS_8+ zas2=PwK8Y|>BW8|;ceE?b@6{*%(DX}{~wUiqdA~xB5E;ZD5yUClEno|37}Qkpc4yD z{TDp~*&Z7LGUp5bwgaFIF#km#Kt%1pqTRk6|3zOwM07wRt{kB1PSFW9z)(UTvR(^q zeva1l7rOab|1(Y?@@ru88z1m`q9r?pF$Sv;ZSPL_c^AiAUo(J~T!T)%xbs2^(M|#_ zr_eJ4#Uc3Q=x#>P%?^JUA<3!14m3+65cDDnQhs;3UO*0V@WP}$kifj}0E)>ipkrLO z{1^3s2%Z89Zs>O1(CK>QwFUO&J4?Ze)_`=b`7as((K!JuxB`4c#*r8479hj-^!gqN z>|3U$5$*uEtoM=bd->H%>Cx5NMcuiakTgL2jsP~GwY#7cMj|KIvpIWO2+rcU2C zua#fRfUdrH(Pj#A77HZh@x1tI2RfAaHRDSb&_NC=(1RQhOQhfjE-beH|9^+jeJm?u z__w*f28|lS?E){A0qtZ#+RlzR4B zYEEV@!w^5@0e|`O#TJxZK&1tgT-=L3ck z?(WbBouOA=P67?7e*q2CfLaRwMP)96t|0mFV@|@uJ=0|No4XY!-pu z&>cZ9{uD4VypHY$jY3=iO;UpnA$PS0<-9+Ppc$?gwPv6IVd-|g&@BMU-xs=_SpHwI z{_;Y{1~e7+ppzHmc!(1~nt2?+ni)XsYak_{1?F3zV-Ve6z#;Gf5(2M4HJR%c$Y{iy zM+^clnrtw#R`U@b>o+g5Qq;bPAp4} zPcKa@N@0L-7~*~MlLz_)6{PkAv>CtvYCC}TOmcu5V}C#^$eciPfsnq*K`U_6;t-Bg zsnE=WZhHf*I@zZKD!icQ)m7s%1(KdUkkd2AaaTg;dGT*^eIEciv&-2So{&M@J?3C8 zs1XjnG2%-~Cod?GM?#Kp`)UdH3$}h1TC)MpMfG0>XsQI%t@so0!YdEDl@02}8CVTR z)ep)bps+Cosr3cTaCAFybUK3O!yus@43fatkU}%h_s&mXCI1Y; zf)GRhS%AHbH44$pa|I2a{&}$zkqbP{yFX-0*b_L-#^D4CBQ7$kq{~%1$aACXy!xGIR~is?aI;V1nMz& zhw^|rg0A3`&ak-;Tl*Qh_VCY(g|=YVzF-7ZzaVFESigDEYYq-@Z0QWmJ-&ZlOoW8f zaR*S*!2tFosM2QW4*hf72{i1<06%ik6t}ss1dC=q*jLEzAVNOte?}7`KY~X83EkIX z1F12lnSpa3B!)g5XSni^Spd`;1x?0(coC!pmc`7Q&^ucq%)o($d+Qp^izqat{P>1& zZ}S_DFv0~0^enmNS`mg4y>8bJ#~BK=m zU7E$v9r~g95NHqDhyS8)Ad06$6oW<+L4^-TcOVPMWEKGnh|%4Gp#6F;3c7tibPINS zv4B={xp4gfh0urQg90yXG{ChN6J!MkPxDF8IuDK@u%iTCFd2Za98dsT&jhg`^aHf} z1U*zt6ygG`K@2*=@+&B7fmd;$gdsIKkod^1L293n6dwYx_=tc6TJymKr1&r~At654 zA&N2MBLHGFG(Hm0;sZ1zc!Cks0RWB>bL{9e(ii ztO4<4^T7{f6)in8fp_wN z(=*EpBVEGj*%jgfoatHB2vTGSPwm@%gnRLy_X}E1^5F%$3fKh@M}2rPSrgQTL7ZU#YDq7GG^{bx3FOd*)q0RHB{}Co z!dIaVo}ci$7ZQl!${+`Rc=1XDGloGYILJa>LqrTi?2jPQe%}u-3gl73Djnmc5J7v#W>fW_r;bx;t&THzmFJb@G%xZL;{)X*m-yF=W! zfq3^B$U)*x59~11+zE=iM2HKJ+o*`p0FU2h{m=M>WFHat2SVGUY&wXb0X6XoAmwE9 zK?m@4<}9H20nK_Ggcl+lFVc6ocW(Y#ttqZgv(Tve`K=uYs zHY7Za>Jj;Yc>k$sgIxxWdL;iHceDTtfy&2c;9)J6Zr=}`jyB+$*WtxMHLy0E9y+fD z@eoPr7Un_B{)MjqXud}TG~Wa2%7Obf#~mOY8*mr6GZ1t)c&DRCH@LTQ2ydB!#e5Es z`8?RnH$K@N`ltDjKqptH7Yo#M0?`DCj|4<~fO~(0#v{P>l?tf7GE@VV{h&#d4=;}E zVboW7DhO#&9QBnys5r(q1^^3d5Djtf41{|Fo8RyRhlL+^eFBm`?)m~kfqj56QQDab zIg^6p#R8fC{{wnmUkAKc5B345gnRRX71CM&CnsNy7u!LKK%0iF)IsB@pn>@`@bTBa zZ(cl>f*$<9@j@3=gMkj^;CK-P8ixQ?dv9LcQv{7Cg3q?dR|GAxf6^)NS{!6rt331o zhu1Mo3_B9OVHr(_jp4bzL0ZKD9{UCznIsD;l!*;7Pn%fDSYvrr|;cg9@P2vziYoyx1uZD(9g?PqGlR zv2~px?*Bog`@zFMA6}Rsw-2DUegN6}8duQ)X%$QbrD)RP0pdQR29nA@=>4#u1|RIu zP2UeMyg(rj>cMNgsFA{7#JvH9C*jC|%+JEsqkzUs!2$H=#Tjse1R64bKp_*ZgcKjW z5aV&jM+TCA@uerQbst_VQ387hnhhbT0308SCBYJyML8rsSaG`poY=4s=;`kdc;>HD z0Mv^(04mnN19R50NWPt~f~US9&b-MWBS52PptT_WAP%lnglQgXG-AkumS8i0hS0iE z6+-=vOFd|;5i%eLu9R>!PeAQ&l=SfjY9B&B_#B%*FLombSq>=uVD%#H-9ykn&2I!? z=LaGVcmpSXP+|a8wtu>rz^ib7fUX<;0ljV%IvqPv3DmDIu?AJQ9H1SMpre<%eZMe6 z?!Sbp%2onZ1|J|p2VX!GbY>?Al8>NmD;E$CYdArp4}$`)|DweG7Zr(d|7vh$hQyf-@8}QG%G`$cNa0t#kyp z_fh=+=Qsm4^TD$n#5Cz3^~(&T@)mFV8d~652!qR2aDn@Uf1598w)jIg*MHG3kfE_P zpxW2>Lx&>^ykUaevw_Bb8%Px?ohwLv16nUaqI)yd5$;8-QUDD!LGPRWEeC3_f!18) zfD3fc{tz$lg|s^$KDs3bPWFBni$tLEyW~Kp(QuUL;!-dZ)X)0@x*Qm~MyCTLfV9>D zyyOJxoE(rG!SHhfsUj)&U=#-!0;u@`G*6`{2X2yEzj<*DR79iI5|H%s0VzK4)z`is zUc8Y3Wz`QaCW8#~MQa3>fCSNOKy@Of`>rX$+-HVGH>Uc_!Z7u0#Ha@i3htJMX}Jt? zJ+cEK{#R&3w9oMQ-}M9Ngu?F758Y0nw!(*Q!JrqPWI=}WAhp{ejgt&?t55?1%7fS+ zK&1Vk@fuK}h#u~LqzM#jP}{)ePuBm82IB221SL{*`+7*UZv&Ej_{%5gv>K=@U+Dwd zN$LCHg&e3r4gJ8s&B>$nKnVwE`0g#J!T{B)|3w`j8T==xe}-@;w1@)t+K}TL9uPPf zp!5bie-7Fv@R$Ie>H2frMPLGCs_Rd8-~`xQ7nlv2?E2H`!qwC5`=|M3!V6xoWBxS1 zi~yBUA0RFamx3Qi<^z%^%30XlvjFa%1(2zpKiz=~!0t%^U1Arw06h5ya?c#Fdjei$ zfht3g(>##eb6gVco;{Kzq@O_a@RMm?PYyLy>znz}>R}GIj8$J8%QoJ)nb$L2OujtpU5o=Y^LL)IH$vfx2h8 z1U!7^fZR)Ld}aO5cz~4N@s%gOA6~2iN6m*9UOXTtpp~a81nq^C9|BE?@{3^pf({eD z_{;bIKWNp_2Y4RZDvsg?Xdapm5+%y>koq0DedGJ*MF>B*=9K`|MIQX%LB~HY9)RpV z@xo6ARCa$$tdG^9#si-w!WD!8BTUUJ)ad&LQ>{5O3cKUQn2Qc(EE} zG@|^0)B!0VLA*hSp1*y;{m=QJ^7Tu%@1Oso99O_A+N8wbiIE?lp&;|1=L>?0FOYEx zFMLHnZv6AYgdG;#r$OZ>Hiu!=FD3xd|Ah^vzncX894{CoVETg5^3FD zasEvb!r@;}aFv7ZUt^Fch5kh=f454)GT${&HbFBSE&sVf`=g+G@gPg!3u8A>-xhlK z_B1T|(Zd`P-Uj4_cXI^`Lx~?K34xaubqjTW>GoiOr4VsJP*A?;_I=Um`v!CdW{C`F z;d*x{Bt3Qu{J&)V<;6zWt zi=R-<2JsSjeK!wciw?wn6AJRbAs#YtYU%dFqLFd|?aB)$%i6JMfYU`s&p<+u}6r?i5@ z;KPfjED$e;bAUbg;l*K5(3abd(D%@F$Q*$$rgDHagCp)DH};4t12u(+4+?N3Vur_y z=ZI*shDDPT)QLA4z)t-0V&cDl|3R~o3qf%KTBpeI;uxr{0GgKj^CFEAy1_a+IUqC4nD=)h*C){QdL9(&DDM9W5`l$BE+~Ou z4{;3pL0z&J4xpL^#k?P&LI7r-Eb-=nLIDyU9FQ?uaC`bVsO*H9b{>@FvAYgDK7!(3 z?B=C`%3zpz^#shz`k(OuIlsb3?+LUgL6fW;pi^&4JV3Kk77V2Z=xt0Ekk!5)UflWf z?>}h&$BX}>&^G2P&j0^kgYJjv7VHKuj(c&M36v*3Kz4*Mh%ySiDB!~0@Lb0Uu1gNF zFhI_vZ zf~=efd88ID`utXN1qbMAFwj~21y2#7I)N2ys4fF_rx2kERs{~#4IsS>o}q?n1v{wH z0H4z^6;x(=@`7U%dK($YN{#0TD<@;O(iqiBuquR=C!V8P$%?RY1}Gxm{rva86Lb&R zpYA}8pciTX|ACHQ1KrW&`o-GyL%BdV=#0oO%z+}7p&yDN=T!*2L^x_Xc1O(vb$b!v z09J)?RK-hFM-{MvT0Nypj4zdTfF=nYKnV-fL<Nlvj>` zs;y(7ItR@`ko<|6Jt3Ehf)_ZyNMr!D1$cVFhj(!>`w9fUUam@8MLvQGB&^eFY zz8t+FjEq4qUV)%buh$A{A-|)y@}?2R{_Y0uAm7kj-VIU!7&WoB>o-LMj*6I z9jE_5OA0|tL^*<9G(t=Td&U)X1UCn>FHhhLMP!e35n~x-JPh2T{sHn7a>hnF?@AD2 zAL6(@&{>EavT5L)@b0nR*M zI(;E`2tvD8KS166AJFdABxX>q{s8J;eE@Z@pksv9pb8OJoeJ_g45P;HmeeS1Lmp_K$6-$L3$=>83O5f4%iavylHKh(T(gn2n2c}(-PJ^#F1 z`uE@eGiN|7VUGV$mc&n(7!Man3}Q8yg!FebT9C$XRG{a3UFZaDf4zb8ND!2hF*|+V zWMn;L764sSyYlnD|Il?+pxZVwUNAE-fY#}q{0 z(ex3?{1u?B(O~hw7mvZA19td}1c>>GB%7b{LJCv}K!QXhV*||mjKCMoNakli%x5Io z{D2pMpOM@@17?0e;0t9W^8+B}F9dZoNeG`855PqcG(JI>*9E>f^A}XSfP)2G@%rL6 z6C*xftosgkEMJxjIDOQhnfLeaKhP=sM5T`x#h@w}61aR>pxZzLU+AEjx0V$1LNUz) zbw`?yAp9GP*F3E4Rq!Fl%?H&%yH_EHsdW1O*#%m$mVF3x89=uPV`u1(9bkbI|GGo} zG}>^1?wT#dy!f^X%f+{+K?Od%Ntaaxx%l?S11uNcF8K2gcJb|m$|~gM6`W> zbozd1uKmDK#L-;)K^@v#LAr7`qlJNi0gL5+D3(K1fiK?0YQF-=en@X+Qa9*G!XKSX z&{~%jl+-YbSsXAkxB1{JU$UdX*e@4f2${`dcN zEI61ueIJ0J}B{q^nY)_=U7;vCfs=oHmN)GLAMi2rz1-@SQF?JEKn!^O zb9@8dIX?UAA9MnSLxoY`MaJ)c|0AN17I4Ht&b(aq3zn_YCVv>xcw#pivetxAN&4!aqs89{{g+e-(M{K^Y4EaBZ$QT5_(bb4O9@Z zbc658P-X(%^V{qD;)Uj)f1phve_jZH+7%2St${E8GlJS=paSB>#()3*2fXM27miTP z&pt>o+eReE;_!WxO9-e*|~H>UzP|&(XJTE2=mw9?t$zzL2{bY?4O9~m zSnmfZFD4+D7qHuu2@H4na=h^T1M0uO0ky@>{QCDFJP`uAiwv~E;=>EIKmY!}2Ax~{ zf)ASQB|+)-#RrIEn-8#n?uH9}6ZGO9lE{-RiEdZWjnpp!Uj%D|X0t$-HNB_@HDM4_ zLy)Vfw|)aBTC4|2;7EVy!r=4>^D%1o%J&brq=Bp~ejyIB3v`nW3uqCs@1GZ%-$0%R zT|o}MM#laNDA++47<>qLQSuVR;Q$R^1d2c|zW5UG!uc0S6toZxa;L?~48pwWnvU%`GQvH1#KAB)-_cyaRizyI)6;V+8c zA@e+c!+6cL91Nu_Mh9Lef^yKN@BjW=x`HnEnfL+Rya6Y*Yw!R4?>_Nj7Rb5aA}a4W zC`*Dgq&)xkA5v@yfocoBP7aW$-}8U}vr9Q-m<>R@JHJ4x;TM5E{{r?QwpI~(tl{Q^ z;}doQAKC zb&}|GebVjwz|tEkmC`BxSo@pIm&w?D_Mra^!s$Oj(aO=y04ZxXXfX=B z*!l%jwlp6BT_N-z)S3miP@(7E@6cj|pUHegixG70eQ|bb3R%T0*#Fq?tAdW&I)FX< z0~`UMH0Ar_;!Ev=mabs`a=e!A4*hZQ6*K6fwlCeFVK|Or)^5<<2;HtqkxpOGJn#$MCm^vm&9xr{igmLDy1~cEL9Sr}MQHO89#9boyCv$l z1GqeU3GKnXc>V#T8+?0B>~|3J3TPSWN&Ze>#Lb$YzeB=+qto|EcjyyvS?c@Z1rI1@ zUGMZF-4L|z9Y`hUhM*TgFN!{bI6R1Z#R9uS?*zR#2rZ;v_`Qb8{{U@8^$-D-!Jxar zBp`V;9ho`qf$d;i^F$#e1{Yoq?;MgVnOz?5Mv+e_{EE!Z=k#nJ;>|Dy!RlZp(Ds! zK|aNwBhd1z@1GZnASZ&(xC0;J{RG*(RHDpleiH(|UwzF^QN$5|LKQb^dym$&K!oCE6?pXrQZ#eOQ*HgU&7t1?d9D54N z30r!7cLer^ZV7r30*Ne0+lt-jz{@oZ3=GFzzbJr)LB2rFvHSqOg%*5+mILTUrEV{a z|DqC*QO${9b2l{CZeS?kYp&hESi;|2yMehR>2*rC>yKj&whZ0AM|wjqXrJoz-BY3i zy2JZNw}($)cj%s=EXH2f3jzN{Pk?V$03Fol{1(&>*i!;(7^ro_J;!<6bq#2R0%({S zo+gnz5&<#hxz3h zK>fB8hKvFi{{R0E^5Qc?Mu8*He%k{>MuB+96$QbxyI~JCCxFvG-ul$#BPhat9CQ87 z0E$yzj!qAe-q7zspb0LuC;vb*l>slNf(s`ONCo;2RM+9nbqF^=+UEz5+vh}_M+aKo z!wgPHZ@|3^+XtXr18RA41cKIIfmg`9d69Pylv~}vWu*X8e;Tr`C!7Rl!W|3_FP!b^ zudkpTyFG6~we_DDUqCs|_sUI4d@Z#b#kRQPHx+G{o z7&My!ZDI+SFbcc~dJQVBA?tYOyn-YsNLejmg6O}gm{7g{*8B#ie=mH5`u7Ydg@Za2 z_aXlN0V*@0{yhxI;UND$1PMd^`w-MTIs*3ZsgJN$IV3YNm@*2yNP30v@0yp${^c-5 z_*cY~p8h@h80uf`#}I!?-G$KWK?Oh5zn3Ak1IWKKK*CV}etZIt-^TZ-{`~;*Z_!JH zfA_pV_U{iQ|FW1--M?t{(W5&ccY@k^W>8na6F;``_ZNS_-UX>=BTD^WaB={tzXob3 zKSgc0Vb*71aPyZDrTz=J*aewiMwI%Ekg~)2%?mfe>M=I+qPcfe9(i#HW_lUu@bUfg zBKZ+4eTRWsDg@Kt>Dw^%YDB5uegmfd8>q`h(EQtvVd{?&rJfOp-4j@NqI8 zEZu>i1C_gZnmTNy%+PZFfxE<`$4N^ zIIKN*iUq;r5}@I=Zjp}8&^Mr_*Bg-AyItQv>hI~GGMLC_2HZ<%`4zNY`WASQ#{wSB z_7HQik3@m%f6V>~diZjK!?*bmODE`3W;_9m<{sBS%?EI;uYyhyLncy7IYD!%Cs{y) z9-$n~kC;k1L2fv~1inXvqxm662`A_Ls)3+XwUAFz}_v8pN zE*F#^z~f@8K_x$*HAe|3fx#Ne;FQ+o`Xdg~y?^l#Qm3I=fW`&eX8`VhU|ay*T+71< zO2QXlHe7(Dhd*7u7dkvVxDffCdpkYc)GPe7ZybEc5^!`t9V<&FceVc)5TNn*|>m1!?hou?4Mv zdhS0hWLOyhWLOa znsn5`@xv2#-1Q46;xN`_HG-BN|F17&eX;f|BLnElKmHcbwuf$4f#wHn%|F=qTdsmS zcAy>pp!FIKFO+V9+UOkM#u4}~uuvZG(tPlxaP7B1Wg}<=nK=}6M0RI@MYpd&^Fx+W z#qKYlLxr6z0zeAE*HePRzXTHgHK1lF$V#TtIIso@(8=k4x}7XKUBA3$>jq7genBz; zbOZ2@An^XS2@n&kU?#ADc6EU40G&Y#RRgs}465b?W2dVCxJZQ`1@@=gRiM+!CJxde zdV3F?^bg^55yCt_h6G2plLIx<6f(Pr&PW|s;O?@Kb?*i zsCmZj-oO9QF+^ji%drjhVRbS%ePAyiDR7Kx`q)2Q|1O*dLOsxB7Ujw=SDADep1xjepqkH1PdY7HYa6b>YsRVNW zY>;B9>a5DPr3#PMRoWtiwP5KF8Rw2uBo9jJZ)orv?I1jK@>J#z-u zwFK=(DZ7l!^Lc>a!IzOimu`50T0!921{6x||C?dzg9)p@b`GQ-y5&%ru=_LD0WyVE04K zKTKGCBse^w>L(LcF9vo$2W0hFGGX=8KK}pT>%r584{m{~P0(qJLf|$AOTdc^NbdkN zSMCbEgG&O7>6rNjM|lHktHbRpz_jlNxTFTRhhX-txP}>8SnWd_&v6CU1EBCr!(swv z{=0S&7T#t=saFA&iYH!N2PJ!Ou>Ze`$Dx?^m7NCnzox_W?L)1rdbp?^wvL30Ki%?DXJeSf@u*d6+#*$TGf$Kftwrwb@pG7|2h z@1xps`QQI$__D|huqyD)tPk!n3uKtwN8RbtcKIJ@Wh7{)%QTR+zJIy{S-@KnK^hqt zpdHb8P$i0`X-I0&fYn3hFOtYiPiRLp9K8fy@D1*d`hIw!dlNMC@}Rl)0caPx>jO~8 zx`CDw3U)hjSi5o*@j^JRJl0Me#rz-+=Zjre!J0tp93FIYz32tyE>LQGu@Ia{AAoM; ze7y;FjM^9Eb0FLmQIHbezSPLmPBY(4S5(9#B^Tt;G#ekJG(d zFCg4oVgT;)!2L24Bp3Rp(H=7UIp!hH3 z0^EO|Abo`W2l5y)2Du-}zrGwVM6QD7vwi=(;07hQ6E9AH+AH9S;n{ge!a)lHWaH4+ zcldI=U^@>r@9#NqL0GrT`e#pq*(g+&BfgA>u0ZDVb=l=a~Jy0SJO^Fo{(eGzL zCDD)9qEKOI0(}4xh6+M+=4nuOC-jH*g&w@lVn|B>(Upg)eXO z+6VW~_mdE%YmY+xqX&|M_^0X^I5)eTfG82!2Xiwhc=jDZ=1sW><3ap04^*d-?;kw# z8NPpBI6>pU_X0Tef>t?PI0xzvfDZF?1GQ@cSvo^O$^QlWX^@f+pf=9|mVg(s@KpLC z@I??PbdGR<)?J~leN_b2BcQdfkUQ2~e?V7_9dmup(Chm?a2KdGmwkw#+xJIr2qR0- z3oCH{hXXR_vG^3Y2u1XtA*qgd65O7{yWS(@Jjhp|mK^*ZxF5$I!7JN9Yd}CtKft3^ z*(VsfLx1$TaIplun05w~L7~e({)1wj*yzDbUx`ORi3NFo?|D$pIU)dw{DlzHagC*7 znkR^1UOlpTfl%{s+=2iOFU;{w=1*<|> zI^zwhr9Y3sJ0lZ8mev(@yZ+h9z{0?w?ZIR1%K^3b50bqt*zH{pN>PYT5Lgw$UX8b? z_BMj-g>292gAU^7fr?si`+@j!f?Sp0`+$8pUfc$i(cnvF7BN{O3?iPhh`7pyJd#ZqMbGjZz2I=<)2@#4}RSjE=u zArc6x*!{MFsv6%vFV36-SpjMZI$<{!9zj_AcVIh6GfTjWvON$6tSTr2n+hsP-+k%)UI#z8?Z#+yRFvXlv|iIpa$mq3>W?`L~6>gH~*R zUYrGc5p<=c64WR7=0MmiYVt4lI^{7t3~mLJc$v z1X*m(0k#GdpE6KuFnh9K|KVIO`Qs?mi$A)3d8|Do%3VN__FxA{^b4r1=*rXSB+?C< z9S6;Yxqb^NU=HO8dZBU{Bn*x>DNtkN6DZN~ZwvhdkF!8< zJr3Ghl?Q6ElR38oKA(@H+n1+HutNZ)q=1AXWc=#@a{rph^}BCC?Xnk#!Re0$v?7&BeGpnx9|84` z@HU;XnD-2n7{TU+fLdN)^JeapVPIhR{u63$4o-6+;i1q59}mYD9^k7+U)$cY^v~7eLF!pzGH_t8o5+R`LHAeF1MB zx9byg>)}|Jx3-suX@X@E_1<{~yrV zvZwxwLN5pYu?OB*f4c{#rQrO9boP$bM@9z7qLCeYP-}jOv(VKGz}0u)QlIrdBY?R0 z1x-b-*$PhY#_O>}vMO$WKwJmzPjtHq9DKkW04l{^6oNYjppyCJZfxE`AMb;0gRz9@ zgLEj??FI)Q)@`t$_(8NcvR!#(z>BwD`~a7J&{@n}+y+3>BgQ%=P_jF75FE*z$6bGb z`sAPmh(AC>^IfnRIWdT_c+(Oje>EV&AKW?t-wsFM;P5m1LFM3Lus@K?$4#3+;NI(Dki2jxTURwFr_mASZr-s&7!P=yc@)%{YNJ4t@cN z@oogU?E|>|#nBo1rrY(4wkr>4KRD>bw-=p(BHgYpv|T}Kk3f|k=sYjb=E4_iSA(iO z&{8+Zu?3q!wGWw9Hz@c(`77&x#s)Id-(s*A-hh@gf%7ubz8bOBpd?rZPJ)>GYW{;7 zZp6A7l0P1h;XY=F`#{nE!gdWP*ubrYz;5sY!Z(mM{+kzBt3Yo3ybYv41fvNNOp04U z0SYdEL9I>!{(XYrg^Dj4U&D%Q*6kQ&9K?SD?eO}w`3(>1C6NS*0htY;lmv=~SCEn| z5S&Cn`#?FMZM`?$fg(Ymrc>QYkY9g+<3$3+ub?9^(zikK0ZC1Fi2EJLcYn-!H1|(j z1&Ru+?%%fp_AO)E2Uk<97h)q|ZxB_8_`zw&$F9Xf(xKHXrne^{dXxNa55 zBX_!e?{xa!fUU*$z40P{HAwsobVjw;_rZ%*n?a=y^39peM>MS8ym+<+906!0B*>Mx zF;e*nnosoo^CA&cwlP3z#wi#kg3B}P!TFCP z;Ki{QpiBpH)r8H+nJ%>Z&5r;7|JTF1DxmN{tIu|LPEz4SmVZOkc?uF+K#6n0O0b7I zUB4W6eIdZWz|iaZBB0mzOW=zJaF2zfTL4_#ziEEK*y;M@MK8E-_n_DJNnmg2gP<48 z;65e%@PrrHi~=tzHiPE)qf%+NHb6GxQBi4NX$z~LYcLbeK6Q7${LH^QiPzpM;&&8q&T{v?NkA%i?OF+aC{-PZ_}QE z;*H1p&5Iiwk>d@f8|*%`^!sAcN>F2z!;-NCJlP7`3}mCJ%4;TQLofP`3H9$;huZ_@bjUlclje0Du3CQCv< zbH51D?VtwThweY!zCZqpg6EX~yjZ**G?-kh)eAay)Nv`;z^)rmeN!L-S-<|@{|v zT$4gQ0ovBo={n~%#|vh#U*~kY&Up#iNdn!h4tCNyi0%&8B4w`fKT?5_6zNADS)B}d@V_$-0AA9vW&_4DhCG0Q4mi_zx8nj8`n4>LYZ|HH$ z&>bb<15a#TSc9ZY!S3)0jSo${LFh2S!fqJ7+M&(`{os;jBTF3UK~W2@VT~ zHagJD6qHkYK-=kTnjbQiaJ`tn!Hp*E<0(l)(Ya!M_c( zKvfVV{Gw$cDArhBegh?L(9|?MXBDpjY5oDqAb+5l=*x>Zu;3T)N!WJXu0O0@zZ9E+ zlkan1EfxvPT_bWj8M)Lp3g(8V18AT1)W`JCOp zU$lMSfY03fpisC|Nn1a3|cO8@lj{!i`Oy`p?a_)P#yl7>&1-4 z|Ng&}2YJi&1*k#Me9+;=hoztj>KeF!VF908^Z~T#KL~WJ){D?(prGLC_I<+a`vH7b z-vflBL4q&3L7ROZfK`K+i9k2}c&-N3F@L&2i$hpSvIm^$ zh)SLVt_YkzMBv#2V}~guHG{+V%ZsJp8lS&q3#c@N$Uu`^H>iaGt}76+QN9vXSMWEt zflejyUkJ_!pup_){So-$?g~(VLW=fMduaNFT4T5J-+%ChB-t1LGam|g(GIC+I$gg& zw0{YFF%L<5i3U`A4JZ|SdGUY6zyBbGFW$}t*}?L1BLf2i_*fIrmQBztlJYMOEC4y@ z11R@`s)!eUF!Ml}n)AiN1^@oPu6LRFza#w&8U-Kaw>q8}qV6#{uW_A1i>2S0GHTy1r)VOlIW`E84 zLTSOj|DbJ%pa~yCkodqQC`kGUhAq*?pFUc_6*G9BaY;Tj2%rfhYdNSw{81M1!gW3< z=n+wQ8Jq*5DZv38I4|Zv1Nt*O8Gz5M`W*102HZJ?gmx)pdw@;z1Ev!87jNhN`~MoW zG#qps?0?Y$NMiW3?BD+vm*#=2d;=xARfRNQGh!gD+BBw_znz=1O+MNp_yUXVsI4=S-!2KI4_T}OB6)0r`8Bn4Ls>($`7eqh@IsbG! z`2_qIJp-Or0v!ouuo%=i0c|+$1y|Zo1$V#-IIO?C;0G%x5zP9Z1-=66_B_z=565dY zkiDOlgWL>ia(n=-!|wKQ3G5DV2m;M_*Fe-kH-J|&3cSc)3~EZpK{EJ`MUZqX!T@R` z|EXpa05zCE$31h@Fbc%GW#*(7jM7p18Mxiu1{W9b-TWq+3ETO)QHSG?)m_< zU%uN{qWK|n^H1gykM2;3=0}VrvY_@TDAqqPl=64G{?K;)0MlgoTDjX*0#uAkgItPG z^aV+g2rPbo&jH8pOCeCR6ts-uNq4D$aOn%MD||0>mR{*}J<%C@raSbCb?BKQxpIzf z*9+FJC(7U^?1Y*CI=`SBVnV2ZaOjIpU!KlTfo@kGZdZX41F#nuOV~i}F5v_Ff~iCb z>_E6l`B0NUZJcgb9%j(_9Cx4^)xjE(H_G1$><;|^+2#&iG9A1C780cwdhAF;50^Wx`xSn@?qPJ@mOPTw-H z<^|$NVB~&TuP@IF->IO~{Q7$YGI|HNw8L6*I6+K+lpF>Pi~=uA z=R->l8S6JM>Ocj{)7V1_(EGA18W3fNO9P`oynk96wTcXI_-TO4hZ{S&P|F99-$bW? z!tD#_7!*js04>XJLF#^JYJ-**N5O*NF*8JI@djF2yy3X9x^bWXRdk38Re7{)x-azC&>zUy2f4L9TiwOO~9r~lhpxadi)GuReuKmCO zI^kIb)C-paUFum1&uh$3ec-$n`h^)};RC2fb+ATIUIT49vk2-2Pa3>H={i0K<<(G? z=0{8=#vqf?^V)HcJm}y=(0l__D>SdI0ZE1a25LzdL=GsA{K=8Tt?ob}^2BsgNwn-p(H!i4l z-UH5DpxSxTY;fjcGd}QI?6nBEEeJXl0+fLQ`$2*92fFJo6I48rvN8-3lxXci-#;(9 zr~Lch4V#}3hM0;nKLOhD58nXh`{za9Ldf?0KQFd`vNX2!IcGo_8f)VZ&3@1bkwABV zNVh8o^nyeV{5zn)`4h7}3SA=unmh${N)NKU@S6Z?sQhR?$p}8*6FN;~3~?ClMjd4Q z{08#)xed59*s&9Iwl}z=@Od@j^w1B;b8ByoyMk_mVE`TJbig5?*Z0heHw(c7+@SRY z-M(+YqcKdS>7Zib4SY~*-b`?u2SPk+WEx}eTm1k6U3QeUVs(9%i=Vxu`!6xv!50~>w-DhS=)#5fZ) z26P~x+w}n0V(bjv0iQ5D^TKvID5Y{h%5#x6Mu8Wp zGePA!(iAS}P|**@XJ1^L26DZJ^_v$nKxF{9V-9K`%Cs>GocaI%KWN#PMjN9*d{Am} zX-)~Xig`$8Ac6#^H=O%RphqwDf^RYV^WxJC@cLWW#K|8}CV$}!sttX=fDU1^cT=LQ7>rq z>_%{yLk7i5)j-kx2UN!V7kvUQhCnCJa8Cy%$y(0iuAoNxe^B`a85ni_5C>T+_;MP! zJ%lJJhzLx`c?jLE99;~s5*1S3@^6C)K=PkN2h#e28c_b*Tk-$@|DEzk6*6=~JNhkD zAn&|^j$nRy;XDoGj}k9bQC*PR!J}(${)>Xs`JWe((?FwZ#R^cB4UkO8JPkB98#W1) zNLgMgF)@JiHfVy3>&2PgfB#?dgM@tFytoA_SbX0!S6VQXx`3CK_yqL&J`a3xc{)fh zWH_coq}TO%zzcSWahI2W#`OXOJ z4P6n`>$*Ik*LO=GNM>92zyIAoK&*wc|NUqF5e{Z{gVJ>98^{#Tn{E$_|DpnrzHSSJKwF!Q&}01X&!1x+sdF1PfZQBnvp*aKwS2N25`WZMVr z(k-2(6Pjx$Fx2UFhfZjI#n>4-0W@s=2DC7;J9GK019W8PS*~k0N4V`d#)X?b3oQy?*f%pTeL3(Wif#GhW-EkzqW(1`1dh% zy0#$ctpMw7d2R6GaW^RcG$6^vfaMxqi@Z$v_aAiE8Ds+U064QlianlgMu8W3Q*ab} zw1Gso{vR@rl+w*8Z~$5c#&t+;~0TmDEhR-j7rSReqfaDh)jPz$xu@-0K+7)P?|9O}CQ__*n2u6G3U^%Zv4$ zAo>kxB?Wkh)OI3B6Qs;7VefYR@>>42EJ!D)L-Yr91LU9X0D=FPtiQbI2i2;sUm(fI zrk7FRh595=G6J=ZK?8#MAo-`UhbMsQNta&4nu>s4&|MU%C5cq5CBfk<0iVynwxSTF zA9QH~$lu^0>r$>4D?9%Ee|aC&FM%imm$hGBtepTJye<~(cKs3X;ztiCXjoouN2r6g zc3Q!Pf$jhUAI%P%%;I_x2r{=FRG_$i0F7fdAG8R3@eLBhpam;0x?NvbyZ$I=f1%#- z@BixrP^B39qB9WG;Q~#({Q=LEfg3}AUdT@Xm2eOta7*aV3m&i#(gA$G!8I&G*OwPB z`$1{J2I6)|T)pUH6nIfR0Tx%FHEM@J`e1SOp%2n;1@#F2^nuPjE};3b=-~LnY%haW zlT@(4LKSqXC#Z`5@!$@#0B9T)YttQEIDpN=Ilc+rNZWdVzr_nYmh=Zy9hNAAh9pro zmHro9a*+kp+gZ~0@Bd31klIil@KA&RXwf_*t+YUtH1>fK)SJ%G56!g#4E#Mk3=9nQ zT;P)!+Zq@c7(gA>nyPv>P!F`MsM}Y-+V?}fSPf`huXX5~VxDf$GSxTTz5<{tFhKWR zKuib6{g)TYeW17pjf%hN0Hs16&;n%8tsWr#+Mso=0@AJ@IzxFtJ9T{DfaY33sRB9~ z^0XIp7^eV3jUUK<9)>bE*ch!XsKa&)RIq#jl@T7G^Z9u|L;J2A0slp>fGaRi04(nP z_uu$rcPNkcg>F{?>4Q+4z^iM!Lw`tz3cOZ$4Vt_~T8#rvh0p*@?gcN(2Nequz2F8J zjqzP!L z!`}nS*>~DVNDmzlw_WXqrUy4@da#3~2UAc(2E4-qw467K5!6xrk91GN>~1pC0W{#E zyW!~|0MxD`qGv&D43nk~(tgiFwBPaVzX9#fI8%#gxpjP6P>deT#?Oh`YWW zln`yK-@GX6gyeAK1<#n{DWD52K%3(sV;t!6;QOFKq0HO_vg{9t>D&$-^eq(yEf4{V z&F=j7pMRe~^Dq4pp^P0Lm<8Z6Uzk6{`2YVuXhFoXU@Bjbiy&#gMJhgi&i1A-#YRybWfs8#L zm<6D^qO1S?f9;lW03qTD5;4g*feVM7(#Z#Q*>Q!He~c8^OWF z^qRZ37bN(Cx98vg-d2|X|3PanOLi(*zD^@UWXn03^i(zA%C4 z2IYK+&7FVaP8n0iAVrbQ+_;^=XU(FQ+jI{GP@rz&o8$0Fu9yI+4a-62b#}Yp3j# zAe^y!T{nPs|GaqE0;;3ebo;L9^j!fj`c?!%%gPg=+V92v7SKTAg}@h)640`8Nq6Xy z&d>$mvfp(9cytrA3naAxWZInW&^euFD*{ z^P;oqA1Ki7kN$p{&%^aM-Es>@frY*TG0AVaZu!;6=zuX4@j4T;_T0H z2cDPUd(HnGcLc4QX8<384mkt|bP~A43-b!FLde4ZUCrPaI}8cmY~=7w0fp~`osxvZ z7aD#$z~MK)85Dkd0$)gqL&FamM6dvNoe|LMdnXVSgi7_`fMEg!(t^f+|3M=^AaRRk zP|$+b!FIY%0B1$t34y)7cV0L*fr58CD71ThSG+K21ZBU_?X8ze)IrimD!_TJ({%}a zP~^@F?naP*m%Qv}U|@J%w@~B+i$F>@uMVhJC(^jE<~WOhbrTCC14EsA28i<_9AwB5 zmS$TJ?|-S`G1osV8GY}W1$IUpXAyXjT>9^S#)1vZ0xvAUQN#jr3`FMwP?kT!a@=(R zNF|aJIvPMuSn!%3Nvxy+w!C-297cf`x0}#27$hBdG=Q>rf%Tgg{Ggf zIg=igkG9NV6v#vxhQ_S#9C(lq0LLOPKtNsuuYB_X2{iev{~7lX>8bI}2}TA6aDAu) zst=0@C#&PF9{=F=A-HMU+v@>H>03FNo~yb@&IVQM#vsd<&Yh05iH^<+s@ z7Aw?(PLRX*33Pu6`Y*Zy+<^lPls~Em4=EXEu|t(5ft4|Ie+fWVwi}|1=Xk5dKgi(T zYc2>I6u4czAkhv`MFkp61dZ!JUHOQyM5uWw$ie@5!3~fX4{Jf;*V_E=Kj?@$6S(tU z)q@&r9L+BcxT(I(dw*63s?jUJVGJe(yL&-2vlmPE7kGppr~^3| zv{H!=G=vSV>pKH^UK@0~zB%rI?hGajXOx1RF&{L{{w0g+1z+>O|3Pqvytn{%NNnA| z{}8uG2XVkn0wa%{m`~Uw1Um>_4WX>porlc>OOAG$}|KB?m zBn@uITm`iqy3f6^2N~MB=Q>{uDw}kp92_ z|GQd2WJhZ`L=kf@XyerX7s}8!Wp6LYz84}jps?u$DQZ1g644DBW|s)+ZOsAOx(;0K zaddM8_V$9tnO_u_{`=n@z!KEW01bh_-rg9Hx9p3MBqIL({~!3`Ft|LEc8cj#m>^!ECI{0_AwtqkO?7l%NF$hHfh zxCNz%-=+Wlzn=B-CCGaq7w-jC576NJFA7aiJRldhg32~>n^0xv*42b2r%VY8i&D?yF8E09Lq@@jCC;1CO_Eyl*cz#y=gQ2=Bo=nUfW z#f$==d?~}gz>vR~Q2>geHJ>uO3Z|^m}Il=&~KMX)qZid9v zA1=`T6lliVAs-w%pmMF(^$chVH1LH>0XU*MTVwwJ|KB|oOfq%%f@o$B)Y_cvjSw@fz|`1!M(jc|Ns9F z1d0AD1!VwGOmu_mx6Y|Hkp2O4cPq%J;I=)8(cKG@cyTQkQuO}hEd>?u(3u%<0S^tA zuBjIP|Nrlp8vP$UTLii^6Kd20Z~+f8>>tDhFPw@%Zt4XoZ9Q2c0&E9z`dHLS%>XSqd)_ct+R|# zpe!+`G?gJOGc_lLAty606*SEONx!{_^b1<8@&Pm+0i7R4UZ3#+G~x2$zvz$4;A%sy z0-jPqBT-(EgaH|M(s;2I)Hef-NEy7y&H4A=_&~SshqO*dA86AObzBKLDSidiH$WLY zhq&)7S?+5?G`~RZTU8B-7x1{4#tTt|`_5*AWtjN4L(dxlDObz^`wmn}VRfqp#I0zj zkU-ok)s0jhfR?m?+moQgzEh8w@*oGA?lY!9tJx!+sS~o;vp^@ra=gd_B~{-GfiL2@ zpy@ONoK8Vx=hPHP9s!jf-K`)_z>AnHaPiU6n*9I&|E^vT+2K1K8WEt*-kB0mo(Y}a zdZ{Ea>wgw|uj>|2!SjNl5|ooc#SEmd0W}Yr4;s7>2bJ%>TV6~7>DwO4(|W0d2NZan ztr4Ipd9LGNIsjCw`Myc(o(d98>kRaH`4`j*orCaHM-~UvQ&THI-LV;gFS0tYQ~H2#b8hMw_Ymo>;97ACeI*{ zvEn_mK=+^jqAXXy8?;hNL1Qs?MPQRaV>dS-Rk#nR?^Fa*3u*=#yf~HtNx*MF3HY@& zXvCr$BJ&4Sc5Qd%X*~c60bicZUQmewD!V{5I0Qo9q;LI>qK41{g+gkwY(pZ2RRUF{es&6_yG&%!xkOv8%<(F0wsQd!e zjMi^nyeo!O+@NtxNPda$LCP-+*rD}j$dCX3cfMd`U?8+=thM9^r2hpPpH@#0Du zIPZe|o^b_K-$A?=kOt1@j1b=jf>cfb`xtbV6wmS2f***!1&9sO-vt)!Xs!PN?*1@9 z^uCx?2ufVNAko&7B{3Oyz_x&L%8OU2U|X0nK7hqQ_27$Z5HaRnaNQl$3y#$QkOM%4 zIjCn2X;Z#%g487pz2M6Ig>m7({~15P=BR)IyANUxOK&fT3--ae9FR+(KFC4x0f-Ip z0f^PnS_k(5Nbidq1t5LBAW^UnSU}@-y&NE0G$6LHW=Md=-hkSfA`mgQ-l-rZLA|XY zQLqo*KQS(Qn`v9c(g&4#KAko&7C6*aFU|Y6;Y)OOI!U66P7zFjUf<(ctwS%~pp|=+# z^x{(fzyBE~V2v|C8g(HWIeU9ST(I+Uvq1p`4d4_c=YiM|=Yd!qtu=7xf%Lv8&j;!2 z1&M;%V;ev{bMScipTGbAgL^y2T>o%^np8!gs^m*RZ!bs&I)MD;#c@!`xqzK^0HkA5 zGC1V8d#B#{`~QCsMD>gNd7uI#;m7~~-K`+9vo!|d44&>@5G$~EDoA$_D6Kh_K~3ld znegIT9+=D3+Y3_h;y8rM05upCQO&hW7)xCIoZ!bs| z99(u;Aa6s1D*`FFKx{~Gfmj`_)jzQG zDPWg$fLzj?1a>`NMh93d2PBpc5##S|1t|&W?FET~UFBX1Q4JA#aXS~xW$5h%DSUAz z_uv2Q&?8*Tp(mPuaTmE}%mAAi05Ve=Vx|Dh$4s4IulM$XWWi?pWP%(C^)aZ>f|b7@ zHpqKjtsquMYZa!CnLy(cARqsQ82G{wTp&#aDFyp@3D_kjAeT%`1Up(VV+~kL0wh)o z5fkcd1t|&W?FET~T@_jaQ4JA#@iGU@W$5h%DSUA&2h`ks@aO;k7jBtg8R70w*uJMX z{M!S4g21Eo8lZyzg?t8Rl!m_*v=pVcch4ViLx08#0Z5r30ug#)4a>*;t@A-^OTY?W zOf3P=C4e-&IFt-pF5vs-g>*K^z|!j8-Web#_&~x~^muE}A4o~w3uXmmfDQ`i?QQw- z|39eh@uE5&tWT+XDo9~(izrAY0IC3L*uTPm|6lL#oeDBJsJ9pFM<2LLL8342WP>K} z-n?*ydL8P4quHPt7mx;U>t|iwzyHvbd6K0QoJ1i5J|Gn@t|Wr%7*P8Vl()1%)u1bM zD&ovWMu8U_b8$50WwSw*;Tm@ERK&v^NM$I%FoB(cf#J$V$a*wT%OPSDqX4Kx0L@E; zY+@7uS!=?;z~H@!Q2-R2puVlcCPo2}mq2WjO^gDdU;*`Q^*1pJfWih8ej1w?1(HhB z(o%~UiZiQH8H!SqQ!~p_Q$TCmic$+pQ;SO=Oo%XedZQ#iI5jVY0W^M}^*>`iqJD0E zV-Oq`-dl?@!HdyXIPQ7|l<=WL>AkK`0zjKTydjB|@ij-U?~@ne#h@17g+P$Z`jUVD zL6g0qCptrqfT}~tLhL6mm~ue_>G#27roI>(T%^FS@fV&D4|u(6;6`Ch1og4taH{M!zJ7QVk| zg9SOricqK(c!C_={6C-tc}Ss3ggp4fXSCzaL1&nN@9zff5PtDI9<&sbC+NlDAh2`6 zEc>-Q= zCPIwz{qsT%6riv)_#NacLT-kP2fpZqj|T=ezu^cD3r9U87o)$?nfjsA_YG+H??qPv z*!qB8-`C(xmU0o$KIifvaEA@lF9CHY__u|=0w355TFCP<>EHj?;viOX40uT_!;5>9 z85wru?q?J@4DH2$R``Ptwubf5vxr>2l0TmEC>+eO=xPxq;QlMV4rP(uD`%Z<9i4wm;QNC9*2}fIzSvk!42)-3G~6k8=N``oktEzuJ1uNOuSGG zfP^;xHqh}rz8_xPP6N5&1JW2U5 zz6JaY*ZARQFi?y&VV|O#)Bh>VsEp z^oH&MrBl$A0vw<<1gHLs+FSxpz%7jd^_n+yyKd-oT?0zf-M(uAUx+};yH3|D;L!@u zy1sZ&n(p@HdGRt5Jl4Ymx}%b*+m{16du#%k_6P-=x1=+4MRV;6hMIWLD*Po3W#Qev z9H5P{9MFX+P}S;S)pI&S7l2IeP6F*onp3O=I@TR@(UORV( zUI1@+yntal)Q~E$`WBEOE&oLWAcmxZ1sl3u8#-N2G}m5W;BRXK9S&y{406q*Z0d&GcL}z0$e6<^#U8mzYR1b%?X`0h1XtPu=+SX z0$d{F-+><5{l@43Y_mDUJ+Sf_YTt{65uhG%@pv$ zD+26x>o+e>grfxoIQH?}PX?-#{_}71{SQ6zpCjN!9Jsm118D=7V{-;l_+imMClcfu zsD5(-`avgPxq^@1Kxzy_>Wc=H`hxiOjPIKl%OXH!5okl^F$W%oZr>Nj9C;a_EfP>8 z;DwbZ$c-!k-L5Y{`y5{EfwZE*VqtX7r(j~ z8FmDofRrPkk!*0}ff(JcFOaHm@NuG`#*J|pI4U7~W55wYA^{1H4djQ%v~YakArSQ9 zvpXz2cmiIyzyb$!KJ+^`s7&aK=0gHOFD8XS`Mz&n?C}MK)CX|R5qT}$4cg`E`{u=a zKWIo@=wxKrQGJs5km3Y2Fd%!RNDLwr<&gGZ7}g7EEd4-1@q>RGxcm5{JCFr@j@(us z@VdPvpi&yNVC2t>L|@2>Ge2JRgK9hj(AguhZlDIxk4{Gp(ETLkAjJaw`ep}X#irmfi(oZSO#fRL8R5eroUDIDbV!oYyqq(P0`Z>3@x`e~i}#6%APUtWmCum! z72M%D4M~*NZ(b|{HQw=LGbH`51$upDUMPlvW}SFmdW;t2dTDI_3} z+|%nS1F?NNxE$i>aQ)A}E%bj-w=3w*Dv3bEd@ST{p%<;-(n$tx?Xm!Hbm6rYWM3Hc zLM+Hti9Fz5@fv@y|3DVDUMi`C)a3$TsfqreW+JHV0J)>pMU+J#gXb=23u8tk3)cI0 zWkBs%#FeyQRp2XWV?cU)L|Fv>ixz;V=R~Z(ym;pi+N@i;#Q0Kadzb5f=$&*o{0aL8 z5{AemF8`hJ!|A_`ekA+P22_I*?LR)O{`=uaP5-^|#p%C`z9joE#t-F=T>|l^=Z7u+ zB*^t&*8dEFex&gSBJV>2CD|8x4xo(7642}WKJdj8R}cqu@<8(;mY^3xFge%v0WVHK z<$QUX4{`*)_+}4M$`a5U`abBz8i*WdS2+*Fq{A*CX&y+S*>RCk;KdVPv_cbdAD1$y zW(D@rj^ITBz2efwTuun*+yP|2($nW6pNv@aS~? z(OAm?;+28!J%qI6ejsmnLe4yp_I$T1>iK+x_^|drxV_xv3OaQfQ3QeVBeb~T-{$%c zdWbGZ&+LA8pnfHen1 z*(ne=6l83-Gs22d%(${m|{f(jCas z?Zg2-g+qXUUm#EGrBWTxvStsKV~#wG-Jt@2T$wCQXPo;V-7r^!<%uN*6I7~JLX8<*pyBtBe>jGqT&xL>&hke1h zulob2y|vr--+$|4rH~fK0Z^*}+Tw5n-O@heBeOsj(|^$q;5LMW^_Lf`K)pOfjSN;L z@rhX=;{!;qg*0l5qsIN;f8$G~ON0D8@v#@6TChh zytxLvBM2N4!M31~um*<&i0la64@x?{z8hY=aRP_Leo#nU0f)qe7puXc3)-sF-3ulm zT`L6-kX4`^JKe4l;4zUyb|4YZ9{=uMka%GCR1gR3Fb+3R;H3J1{La(SstpbtFx7gX zG^5-1!V4F$HJ}C5@U*kj9Hg8jpt}_;%n=A0P=)l`65ap(@5Y{bWSvpMiw{(+xN^L7 z=VD-Zxf!%+6dJq2VCO1;_CkQxXZpT*;p-0a0BCbtcPmIdpc}H87!*P7t{@LA@dmkw zr=wLG?18Bu3e=A^18oU&1+{VRyvPT&Tu!{W>H;!M1Y~?Kn1uE>Ux2E@RsoPWG~Bvu zK`MDbBE2B-!0xFa4mjK{xPYwHg;~oDwzd^Sfhwo{;3#_19moOg5QoFVuGS3XQkDSF zT|J-^QaHeAR0}jV0bVH&-ewF+Z?I(c%n>Ent~)|9od72T!)rw9Rf8Fel6o(Laws^_ zVx-=FRAU>U#_r@`V0fttnuURe{Y6kS1AHb2EIAe1fPw{dAWAp*sExqxsUQwGSav#t zf<+A6ZR6=^{SV$54W>ZBau&2k)^`Ee$7~KDQ$WXhbWa75ol`*@7LU39VTC0hCdlT$ zUSA&Y0RtOAZKo42UV_uY2T;`o))Ca*3*x*GvjSzF_Yey~RO^A#kZx#_I$#a5>;*^@ z_|CaEFMfej!4r^3D@Z(`yBEX(JMD`T$PQJK-$7 z;_Xm^IKU1P#GR}R3@@L8N_yW0a46`33ylL{w}Hscse2$By4ky1K`d}6WSWCQVK+Dw zKxBt+KO__yUNG5$L!loO3gD6+S{VJc0Qq?f$XwqGFV=&@8nmsqyBADC%6=6mkfJpp zMUed;-Mt_V*kN)Gpn$0ck0bGPw1OIc{M)92sMbp*;F3NHZ0Hh@Zs>r_i}QxiU;^F2 z_P?76d>79J8_ZAP?*UcU^fpT4zII7DRzIn}AAsP{Rh4Q!bi=f?*11mp-)YF9uah zCtlnHS1q7j&)wjC;oZ=({|&e>>H%5X3epzP-3#J?!|ji0?X5K=*wmO&a*a@OqFO`OXYE)1N%Y$8=0dh6eX9rC| z)~A3(rh>$Sx?4dUu+!MV{z!3#`Xd=^W-o|pJz2tYycKj>0%)iMw7U?*1{d~IL9C9c zpxJF$c@GKu2P~l7EuixLH*~Y0ktHZU_kxsylIbo`!4@jg?Zm;q&x5!1WJx%@NJ`cN zxdGHS7eQ)J34jV3h~c0EqCiH&S_WqPnXgBlCk-~yT^0u9x^dC_439fMz)&&aT2(PKvNq9JfVu|wxy;V$UX zg?NmAo9p!e$d++%5}E~$T~Lp!dn$+o&*hxMtd1aBUOY7g_pTT~>EogWiq{WWfV~bG zy$X23DDXnf8g29{J}$cP$O_0g3h`FpVVFY_pmP*JZjN{YnWG2oV@P=d8plelpzo+Z zt$Mqo=8lHI@CpIQ_>I5>`1pBX;~UU{1Ca3>(5V^NP8`4(zi|Z}1q>dgd7=**rGZUW zf|dbzuyp!9=?;C;?ZndQ`rw%Bea3Fz2e7G8(1B#&E2^LHZ}a78Jy}u;TFMKmc%ncC zfzRWITz>QB#T0OJ2DH(6@qpOiiU+&_y~FqZ>!9w?2jCu;A=nDgmUhTw*P9oY^+2^9=xBs)@UHj3?x`RS zShXbB(lVH(>7cQORuI|YdY^wAc$XP(cj$v|rp{K-$sVtHx_uvX2Xb^y1@XGUVx6uJ zUcUYJ|G)9clEh=K#~Hzm1y_N97mL+FUIEo#PeAt)-Vf?^-2tv*eZkE!P|XFt{25&9 zfXjLfEl{!D02*g9%gO9IEKjyle5j1!XUQWGF4dIq7#$MMMU>|0Kn@*q+C(z9T z-BUp#Lafo*{dB7wvMAjctqJ?vltN=li0PKs` zrLV2PNx}Eci)^rTJ43H)JLqH`@Eq$K9nf?^1E{qT+5l<6oOvM%)oTe8U@`djAJoWz z^!$_!pp6WdbVi09>~A2A4AAf+eAN!5%6E9fDDcAA7+aNp0 z{1{MuAM%D#AU-@JwFrDV%M~i@O_4@N7#TdMD{m+Y=8le1lqV;46H)t{nG>`M;HD9;y z7tqyAp4B1AJY+>vvo1KE4~f9~HYOh- zeH+jod54eSzD;>N?XQu5XF_oP0-unMHNKx4g5m@(HYIKHcN zKuqNLKA{E@0mru$sQLlTW@E-TsPJe$!UBu$5Ty8q44k4y)`h?qF|Z*RXp~8SDi_x` z%?Ciq>_Q+Y&TT+Kp+CA^?{qq`ymp86g<%{_ze=09fja ztp6Dii1vH)8yWC%N0_S?J6%6uE?o5e02^O$Rnc};2y!B2yD|@&@?k z$qz3S<)E>Dr_=Waxak*qBdFJxk4aCUThzQwySz)n5TO^+4)#@TrHbZ|QY~t`3X`Cvc8#(6UVdh}F^x;1t;D z`lq?}4?_uSx9gwRa^0ak)}bQBtj#C>zZUFv<*{}ZDPsp;>GGP%_yA_}5fTF(JcMZ5@yQVvINf0O3^1-i9uK?G9Z7x__CcId#oHP{%_~6=Z?yZP08k zXl2MT*VBx>zNZ6wLr(?05LX773z{J033#zZ62j^AJrejrA3To65s*;~K2DAYbc@7+ z-p~g@FEaE&bq44JyALm_H9`KH)9pK_(|1O9=nQZ_WS%?!Q1n*%{+gH}!(D1uTyR4aU2%!3zUpsLuF1L^SW z2QQpdVCOqt_|7QsVxBsvj6%vc@y$m-N2lLWgA`XBpt~3tZhU7HcmO>|*+_n)FQ0n5=TVC4t8T@Q4+?t$d! zJs`FHpk(X&;e`dbO}L{wbVp|>sIX@M#RX{Jcf^kOwQ)H%9cIl6siIzcp~wJ-6PQQ(D- z5~xItZ$4sT{pQ6~P!fL{dzfDye6NSXU&!5lpuL7ce<5cxf!N-E83k@Y_Z_%yv8SA~EV&xAk$32Ii$1imnbq@4gz&+WxSL72>k7jI-i_2HXt z*EgW?yXJ!efuKU=47d#933?#`YO{c@`SShnqCy&^^g*}p6L2fx3B3N}dEqSwN~0V| zwOjKM1?x92{>y`N-ys?DTZN#M3c=v=VqnX6YS$N_HpK%_dEyEx`!33%BnYs7c>-SS z6o5q+#|vRea6ntXd9egl@fq;`c~C~-2z)UQoNYiO5_L$bz~&8X_+|ai2tZEX3ef%z zmW^8YyF9(FDgnK|3V|=ez{Leecc?2_5Kcu@i4zTn^H`#2E1Y0C9Y z05pBy=>?UufuOAL2Hb$W(F;0pz(Ei+MDgLp1SL>nztZh{rPKEbWKfpl#b;rps#4^| z6JbzfJV8nII@WJqaDr;Hr?H0=C``x|sM-U~5^K({YP zmq3Rg=w|H~%rGGykPxKs3}Iptc)>3VDm)=0c9EbO22yr{TI?}QOz<(g3??Rl_>kNJ zVthi#y=qXmaDay{d4gVuLIr#|x&=A~dqEePGQos+Ktd4rvM@6Vyoi@UxOb&AxKsg^ z^&t21Ff$4KfR^bJ%+zzQE-yGafvT$?;P91!3Lv?c6DEY@-Yp>au9rr*_ooz!d-ou@ z_XHK)D-Ld4uyljYbm4}udqaN*z4#9)4IqITz``W(LI}xmF;K^)f%pAIupr_-g@yRA z1eMU>_{Ti&=(y_-P}Kx#0lkm_=T=ai1X_IY=Y=jP<%RwL&xQN|uc!x=gC{|S9N~s0 zq`sVmT%I_9j;GwRQvlJN!Kf@jrzG_HzWFcu<^uR2jTlLAo(4H_VZ(72flk*4-Cw$S zpIiVfBWHn}o?syfDhzIP``!T0;9QXaaj!JjUSZ>@1cR^#KEDeEvaa=#`g~Knq(y zx77!L`riLVO)jwrfR1(g^5P>XQhxj|l>p7~eHZ!nKO-fZMW8oyN6?ELUq*)4(cszC z3*Ek;gE3FM*eVSkg<>UP zeNViokpXLF0I}Ub;R)Id3p>f7`wKV(K0rbs3S~9BtVH5saykf0er0A zywC?J1?_nP-96C4#w73tn(y|oF@gK7pt04hY)tU89agY03B(5!Czhqgr+IKcMqSoH#&Rq+w?!7=tA6O|3xE;|=8W$Z_12 z(0MwbCV&+`XdER1QeOr1y1oaEG`&awiGl`dUUI^dDE~I!cY&Y{3NQ9R5<~zLh z_s@$hqM+&&dIZ{05C>mqgWEf>@j9gVd&&bf1=Reh$7c$5|9J@^>9;3EKe#Ik-b_}` zk7UMg5lHA`Y;{Mo-}lc8UyyaMussaXhv>PYsfVW5x1cNu)6*{ku?y=-OW5_BA;+gb zDf$uqeaw#JUv8)wg!~J2|58vR$`?z1I}DP*mjbZ+ClsU&n|Z|`2@=fn{qw?<3+%6M z(7mvry`|vfDu?VO~XUzNpI=>E)x-jKA0$!|y3`3xvzoiAS1fw{Clz$A9 zkovD2VMG*wNT&~h4~>Ez+jJPx67OW}4*k$<#Q+*vegkUmfku|WM`?Ate(3Uj(*Zhq z;lnW}RtD6fFAh@n)q+gH7weF)!A7Emzw4jlphf~H*pE4~Fm{Ljfmn(jjBumS^>YNg z(1A2>!3P;ALJ}8bnChAUo{S4M5l49nsz6e?!P7mz174hG1vOehR{=v>SZA2PNe0va zdGn$GuPr#thm_ZUUWl?GnFMOf4Dcz8uX5 zWk9nRprhJe^MfU@)o}u#@gGo;OIkdm#t*3X2O8*`$PGFqg5$*pUZ{6L^@ustbRK;D zAXM`}T{Mt+MxZbUAEM^^r&9o)=bwVIGJf}>n+Hm0$e9kCJpTL)a!&{|qJ6{D>Bs{P zWzgvl;Jd5uf+9Ke4`>|0L#NXVa``kzw}(NemqB+ZNAn>QP#M^K(B#EtkV;s+BTm>i z;3R=UK+;DsY3YNL2b>Hb>Ei>qm4@Pr51?DQ_w#}qzo3!>$tNGcY!sh-0QqDhFW5+2 zDa#s^5b(zoinrh#^!Nc~%0DlzFrtS)r0x^wbQI`@)>|T-jw0ZA0qyeq1G;+8l@%#9 zt_0OUgk1y)-xZ{V?@CBh5;J@uVGVI5gpK0L4cfi)aF&4|_t|^|RN$yUJcFF! zAlAT1hq%lKjH*@#jv2N^xFe)HlQsAYuaBMkR|ssUMW zc>H-G3U}IUELy<S}`*HK4Yz@1Gat zpd#^0x9^|-q8y+b$G*Jy!~veJ0R{hakT1}@3wARyf#DudVI>PO9#qN+L6|RI{{IU- zRbv8PW3iYg@!~9~82A12VhP+3Z(N4pXdi$ox);`r;E=L({Zrxrs%1WdlP|}M1P0J@ z0pC9_SpWY04{E6_1exyp=fzA8&_OaCzQ6gmh5iPeaT@UA6*JfjaN}tG@4x@SbtPy# zXeY>{gv&eRumiF2xp&ELaF~JIYXx$zGt|8@Oi=eO13AE#<7gTE}vu9e~tlEXhG@}l<|vVd}cwz z3%S1n8Vx`46C6y?DM!~o-5f8z{YP@2JU%la<(~nOp1R{<(XQNj=6R!GYN!bWLX zfZIO{LAqeBSqZ9-35OQ;_?z(+J$xW`;kp-n z6+Az_Ay)7RGcqt_V4k*O!-R4^7+4kfv=xQ#pd(j)qORcKV*(ZH;Pc%&Kn*fqj_v>s z(78dJ$6YZz2R#e&7O3nc=sTo@kAn&EKjy-FXu;|VF2O{_*#Jrz>d9MQ7+0 z*ct)fD=!2@6cq{eS;}^yfh;DTw}Fy!xBpfJUUyGoDV-n9wLch2 zAX&rV7b0ui1zlZ>nKcwaZ6?IxHn1vi)@T6f4fuluxi&ixC;O-l8cM2qr+`e}G!@tdgrS)Vf2dMab^5yUU?$AHYRNyQg$fBgLq&BmYwtNb7S{_j5V;^QZ9E{A93 z2QPHMS@{NJ<~Kx%N#KRV-@pGOqL60xAgi~-|3K0Mcn&y52{M-l+7p(cMA{rMaxj46 z4|*OTsCxtoK^EjOLr8gwrM`0g(_Fy;i&h6lM6@nrWnjqYc!VCUGeN}|B42=2aXe-g z$Y=oREnq^8*6iPZVF!Xu1tlaKM)a)zfeB&dO6*pup;`%6g|Ko0Gpdz8e!;Dr0UF~8 zhKR_o)cOhd;NkW2IRP;2OBND`2KnE8&sIXT78>A9V6r-1d^Xl zP>`RFyWRi~bV0L~HY0c-5G>^T;YG*4zyCo~_@Gu(J1EPC-T*IDxPg?zg1&=#LmZGC zwnLRk;KjC|SaaCdAK*Ye!~r>9`G6`SkDXB^KaU~D3n=`M%S+!sFB1O!{oi^3TEm2V zMAR^#2^1`iJ^vplDGIC#T*C-_W){eJ@D;U&QTzcfASZ!p7}x<$(8gs7QseS1_8RT} zcNF`;su1?g_=alV#_w?ZCV+D8i#MRa{{tbChyJc%aj}FMu+h>yJ(+j@J?}tsDU_KE8mI2fonE z2x*Y+1NG*J^b{!mQOaB7!WJ?giC9tkrqlI9C+IZMADym$AjLCs?b-$^kV60PZ*yV= zjmLBg2KD-Wcu@v&jqjfqn?cnDXie^iPLA%-FP#A_-LUI#H)t>kyx8;&lm{RaaDPDk zE%0IU29v;t|NsAkrY(>V6{ZfKSbKL!(RCpe?>`aU{&DC zUx9%|AmauDYLV^w6<%ad1EsaEpOMp=I>b}Rtrfy443eG*)put&5as?J?B)K-FDO0% zs{)t%0-P)Y84O&gKB@i!_X)VZ^Z5m8CLlL;8@Lcw?#FJW8LE|FRR}8;xKXX-Kv+2g zw8!-0v%mjA72O}uF;g$H-hfj&yrxUwL0EqPyY<^al_jEv2dhF@KZ6I=`p(bra-tEG z?>sn~UxMaqJH0r%T|vbKXvhv!|Dt6O!cj<(3Q+n*%AdY}UMzkBPE?Sd%jHkt8Um4~ zaHbdEKQG#UAQkL0q!9rK+C_w=U@!ZGl4QWDzy<9Mklqz?r~&Bl2_AsZf*rJE)A!Gd zXizN%8b11A?Zg4CR&?YMwliZNL-+ye2Oy#ktO{X!f;_72r#`|H>|{iIZTW~6JQT$R zNHb=990u6|Yi~G%ILJjWBtCG|2ar;~L=ckRKt;SG2dIe8hZgZnkX`;I9v~?vj&9IC z>L1;qKOo0qmV#@7&>!879M(*w+#o%nKRN?BUSEWm2Qj^r6U6iV0jfpBq2_P|zL0wl z&QIN;e?X^4gPada-z}g{0kZQ!UM2~ng%5NXx~60X#B!O?59_}tY?va9++6~@S3pytlWM9w=W|**mwyOk+lbAsVtc8M9F@sj3-+Br5 z55!f!-a%YNXcGjwdm!tpURZ-N&k<-iuY;O}ZI%<#9%h(=)W38H5A3Z)Sq}?4#<>&J z=5_s&0$RSx(CPaoBkLivK(FtG7wQk;eano1k07xvFN7cd{SVqs*6Vs9Ad8{bcMJHG z6r)dIQ4s${+Z(Vh(9AE$kaAGV46zI`zT5YM@!1y&;DR5tj`TUGc|mI8L<=9^KQDB^ zP344Z67orA_4f=f(V|e?ixP ze1Ea=)8GGDjJ>|!UqrkCjXIqGM==YyT6@v{_3!^qgI?bkFDl>v{SRs}y(j@S5f}n` zeZL33@CP+Lj_`om5e?5knh%4D<0DYbULchMokoyO#0Ntrfft2uK@F%l$VCIYK!N!* z_AsdZ^uv%z;QRmo|3PdPBhcE~qWp?V$VCH*CHX}}C46`eKxKf#1N(jha03ytejx>v z(|tK!+yI3F$VcZvj2GQcKq($PGBfunxPbxcHcbLEzjXV40iEE`9r^=&JHwZ!5Vfvf znh$^s{QS_cJlKveK=|8afjR@jCAY!ipTKgE}{1>1T z0$;qC@D9Xz02^!pZ>WC|_+rytkPlb_KzmAFw1blzPcK9gU5%}UDvXW^KC6EYv0*nWA^cw6e0vQ4vs7=D{ z&*2Ty4rq6O$#ZbHVJp~i1Rx~+EkH?sB;Ch%|S)fG&NKpLs z-~XVaAYODkf#$H^ytsZBnkssw85wr$Gsl)HkZMWTHNq!B-6c|MNAP?w*7=QNuD=Nj2=jJyGu+|Jo8!ABqo}lAkj9&fyZ|(Y_l(*XzbR`RK z>q+QH9uF^~iwB-G!JG>d1=atEE*@AFxQll|h(#cyKnOKIKY#r9zcF|$y0oo3RG>5T z4ak1+m!RN$1KNS*`=DD8(lsjKhMv3_`r@^Ex9bDM0n=O{9!IC|i`V>MGai8W9w344 z&<_SN^p3t^B3-y5L2fIhtV0`e|)-B+NxogYGVUjbQn7^K1XN+-w5 z(;$z9zUgM__I=O^S^)n5bR#)OCs%jqn{L+!pw$E%ASvG`uWdo6Sb~o4eA4av0@06r z(e3*LtP^xhR42$BkXFc!C*L>SfgGT{XyE&VUW9?H<*@dJ29P_58~UJA;I$gaQV*7H zK~MzUY#uZp2lNi2C*VUs?%n$P|0QU$_a)>Q{3oFD2FZI$ z*uB>UvdH%d=#C{UzUzeg4m@TL_MR-rdvMR9`7Rdh9nd{ZaL+k$VDX*NEr{YsPIrG^OuGYWBK>)h z4Qd@gJHm&-ZoW zy6ZKd*2>e^!;t;T9FB0g9`oj^=;g zKQG?g1nW<{2n+xFpyHBv{UT>z8kb?wh-u$$xJ6||sV}<(cAv#1m^JoTw84`YxIDmd z-Vu1f2s}S$)(u(&-_7}7)C01a{`F08+y2Fgiy-<-Z|IMpUQh!$3>>N);3ae=LfxT% zjx&K8rroZ8jybR}zGm!H9yb*th2^@o^> zo|7TQVCWBc0V<4|kFY?pu@FAZkoi}X^5jpq1D5qLSmqZvxOp9$37^lXc`Rq4=7BYWJI<$0L+3qTbY6gWoIl=zcbp$wBfhr^4HP5_Ej{}Fd7*p(j0J#;pSQn zh7uWYTeUlo!#b3s1k_aR=6G@D2H1$#(jaY|FXo>EjcPpT=6bOi-06A%I#A~I5@-Vw zbOOeU|DwuA& zeJunod>K!HWI+Qv9geKvt<5ZqkTs8xaOv=35_oa@3MgEl8>>~WfYUCt9X7#>N#F}K zEarGI3B>!RmLyU#8G)m`Y(BuzjjPm0%MY%g^0oN@N)ZcB%OD0ge6fr_f%c<==DR~V zzy~0Md(}VS_Y{@#fQm)XHN7MhxazQCmBZSD15_BpN?Z?)*W56AW8RP%$AHYjAUV@UoFK+gXzVW0`d4Lb!92kyWo z7*Wo*1f99{r8D&nWRB#+3!(F%#Cf3G_duub9@q$K=$@eNb1!5;g%RW!%sZg@Mo|9e z0GAFsx_x(a`fdSDM0SU60jd3X_3!^)*CPQSHLkZnMsDc!J@VqjIoQPHg%^9yfy)`t zj0tF|>{?K%fIQ^dd?dj7&5LkQ!x~q*!X6r!qG;g_+R$VVt`k@SUVMeL#2^iYm!NtC zGq54y+khOtM4cb=;f3}okl(?F_`S#gh2Ig-Sm~P=OOF2i-whh_=XlY73S3_y6>5;> zS+UsNg6TVO{hIYZV*?rPlRJTM-+gG1fCkK25bj%W7`yxSf{K33u)^)W2V}VK@Ci_Z zz#rl=@bPir(-2=+9s-FQLt5S7GkH>R1fv-7&V)N1GrfTNmv+a%0Rc%V`$5SSm+v9z zMPM3Ieav&*^##a$!l!P4PNMwqVjswS-w!Wd9fw5_sO{(rp5llH)pi2l5vVE0K@Ffc zFML2kps`U<Pp@dHig zgZIV3_xhayl`up(5)ytw(~a|DK7$7%6qzf_jLO1 zfLs%B0KDM+K)34-@NKQT4??%Nl{of-uVVV}!UJ4#Z0UC0(&@V4xa%L#!EoKa2bxbZ zb^0FY4&4yc>nri18LaO>>wyx^nR+1$GuoSscYrP|0NqZ-0BZ^Qes~da5S+z9_rS~sm9-y0CltTvhE&nkpgBrk z5$J3dWWNmZ9Ay}26*1-u}UJ^(6u zPJr|12}sJh^Wwk}q;$^nV&f5TSqSOH#Y8X(ybwJO>ct@yj-bOGZLHtC2m&QC@XcV5 zvGtS)CV@N9y9f#*m;~a3OOumRi;F2+Wk$WE2T5-mk<(iQsQjC=Q;cBww*gfCfsQ1F zZ1DN;q7{-MLBg=p^uxe;d`-9Onoidh;9iIC2Jp$(8@fYRfbYjxy$4iQfbPfegx!y^ z`Z%~50l6Pz%WhEnQ5M{{=7HRgp#ZWFbm_!CaQ}Qscj$)ZQ%s$q8@gSWbh<8hE!XRN z0GwEE904VgIbeAfu>71(*9G0a3t)$*gAS(v6#%Xqnon?ax^C$9-O&7y1yp!$_}%M! z;Kg=OEfl%|TA*(D3$k?aA#maV`Lf$}1GGTh0KST&10n?}aUQ&=1nGut>X;J6B=F+y z5%hG^d?dyC%?oKz3IlKO;FkxjD`%J!1zA@H+CR7=ifO>^lnVvjSMeo-fscV9gMovA zq1%_^zo^9}@Tsq9;6j-Lbjd{YVWQe!pv3ax!FEvYWC?gNZ4ZP2YRiFFqWJ!K;dTrx zX8q;`2gr1Akl;)0;PD68jX#Lv-O*Q|o(I>kpm71v(vuelc7WRAKe_`&z_-W!==PA% z_Wfe%E5P3lzAHZT3v;MIx9gA201?pEi~e1pWb~oi_XD#p2l#q09_CQcqJuK-Zr2aY zu3s!&dCEAteFZ>s*izl0Z>&Rk$~lj_z5t~W&~k@2+O9mEt}nWMzi5NbV`B{L4t*2U z?fQlpbkim0R*;u@z= zc5vYdX=xin-GH-o3yx3B@g&&!$G(4FH17hH2ge}kBmk76Ks`ROgP%ier0jic^lPG6FZFlUQM96$Vz>8}K z!0xwx^J2k%2X`IZ$pNJUaK1kQjvUB-2~ft~1#TemK<=6}`Ml zGlPbovNnQ30(4p0%UsYx8P^}(9wME-U%ErTXovD>gU<6~1m7JfV(rRP9Nq29qwOmK zlDvp0K>W6W3XnJ5zHh(<$P4h*rmmp7uwDed;DlNLx^vL=1v7Yw=?l;fjTi4Xz^(oS zT51w1q8-Z98Tte~qzWmqp76JC1WSEk28%;Wth-x57Cz|qeE_!bPIu@XW{}n!-L3-6 zt|Hd1cgjFZ!kEE@UKvMss7Pn%mDf_;t~ab*1wcg?Xq5~DXbI5`ZBVgxr5o(J8v)(E zH<&?J$b~?i2I|3pJ#r`Tg#%1XL>nT^?D~Y+^-4gu?;U2}D}gUK!D$KBW{Wm5Pe6SrsI&Ixg&3%=1Z`RZO;$E615o=1+0DpN0P;W5dTIV`t{ev+NPzCjKKM|8 z`yl_eP=SMwIJgh-Z}S!5KG^*w;J;|kWpL}{1gIhi{nN<=o&1LEf&&E*sKo3Bx6vW- zhh%;?_{@2@87&|)eE)!s&;4`Ei3K#916?_t1(JaUGLnPA+s66p240=~QCzi11@HLE~n(U1S7O5g>ih2SC> zG|vyZ!d0-_^-HHCXgl`HE(QjMqQ!EV1O|Cnx4O!cz{U{HQ^cAB}HZ7#SGCd-rbm_y7OS zKrBh%17g-H;UR3P)``;EctWxR* z6*;^G+R$v+4pzwy6=z)y<}yLu5WNrVTS!lE&Wj_Un04iNZ2`*Ow|9V*!gQWq1?IwZ zDx&J_g6M>dJv_)@5_mCl8z}0L3RCFLK(;M^|2G~9U}Rvhe)HlK$d}M`@FIgrV9x*l z{{t8p7$h^91VDZUu>~`k1VFwtVPIh3$z&2JNK8*NRVoLW?tTEqa(@0jZq zA)_@WqPXOrTEYRreL6*SY&<{Z`I-ue&{;vcn;D9VY)P*_@(w=R8 z1G(Yv$WDGlYKnv`eu7mv;8jZ*ED9_Fpjzj}=@nqpz@q^rqM$R}89^ZpopXPA9duBJ z2uLxg0XGk(7<2)+D16c$S}nX>1!_L|a=b`e_4hxx{+IyC*d1Fyqe!fiIX}GB7kB;W_Sl1GLiWxGN~JFm!+E4LuRm>v|;sG)2Vmf@{^^ z{{jC+Yak};Z2|2&FEwedJ;6|-*X?_vJ5U08^2L{K-xGoVMJpf*SwT$+@J?}1Q347B zMo2oilEozOV&WE1I)Dv4-P{amBe5_{06FAN79_tbFfcIu&O+QJ@+FH&peVJtG^d0i zBQviAwQ_*O2dsYqiDQny7sr=DL;FJOrBVe*6!QeW*nlj|2^|LqjY`ya0#!y3_re_{4{?z7n-^y`!TK~P_JLL! z@dUp3z7)wnxb17lVIM~LEGN!9a~$Sn{m)o~C|{f3fNm2!fP9-EymCb zmr3A-o+fQH$q|pI#%V8%Or5&|Ns9o3=9k*xl97ZC5SDwkow~$ zvj23#duvbZMe)D22$j{jO$IxUoN{xoVum}O9@()s@f-bfb>;T=N(Cy39EeI+S zz>CVUO@2elS44To!M_c3gA4yQChHS5>fOFP{M!V(T|uJO7i;)HOR!vdy1iJeJy?oB z#VV*^0@nwixyLTBEvSVzmJr6$zeZW83YHfLc=2foDC>h(=zw-WErfA6Uc@Z|Wq;6` zfa7aml>m}G7~yf8K}V4VbZJ2IL6#SG^FV`le~vqffZPshDmY1iS)ldPGNA4sWEe9C z)IkFmAo$ID4lZ&)ohd7*4sd%4b9@uLAk(e6mWQFtp&N7tI?D^rh2Zu_x9bnckkB8H z18qQ+sV{T@%k>9nWNMx#e7ntLHuJzNV4vp>fjAl?S8 z5tm_v__PUP3_RX&xF70fww18C93fD{2khjvi@^Q>B?RzneK+htUUf91!LfwZegEcz zbKC+p({0BZaQ>OJK zX!8Aslq7=y+#Jwg9KuCl{jeKn(U+To_UV9zi2j1o=!qBJn?UWr5(WNkzTY7xqutFD z%F*TerUNv90jZu(lrRarn6(O2Jwt{{pR9yLG7EUl=t2o%AJ3fAQxeR4$bipX+8)!0!jpajB^s)1&|2AX8xwd zILt33Y(5hf^O44DvY0^O83?z)7S#g+APc^vbu;j92Q{k;AkFG^D?n4e9BJU8p>B|` zm_XV&h*r0g2xw_9=&(E_uTKD}fLo33U$A`-7sC9D zX5Ru(mi~flpA*P5Uwrl{fK(vc2ikuhe%ux9fZ;6ghPQN>&HOE(UIuDxE3F2XG~lfY z*(Vr4+s(JJaLwFk@uF%jcn`rZu++f^4Bfsz__whz&fIA5B7W}Q|J)zAf9(QQQWqa} zyMkl{W^UAY;R==636jaa$PAZKc%g+Xb?_k*+$xC|{7@;dRoN$4;Zg!GzRZDG1(jlh zOL4roi7LeolLEP{+m)l!ptAxL^4)fk31Kw23<2dQ zX#W>vJ~&ZNf}5{{nxF$A=6~WBVEDu@2r7EPSr()Tbh#0%hkb7`-1(6B#~iQe^!;<( z^$Vye1KOzoDl`79`uo4R_6tLqU$^fU@P&)qU}u09ZCQ7_egQQtkV=wc%R$3lpy8Bv z*TJofZeI>&-!I1)8Ni#OM3`McJJcYqf>c%&)l32}-Y$kzR-ns%%;C<2_8S|j5#!Z8 z)l338sd?!o87RZm#QR4FREzs^ys!d|_JI852=kZmTu}6Z{H2HKuXoEp{_^E`Q4K1F zT>o@?h%kfZ_WnR35#kkx8YY1kN=RPG0af7OG7D5Tc+?>L5mJNd4{&=x0XpM?vcU&= zi2_>OB!C7)Kz@kt_Wg43Arm-ya^}Fi;R&5a0Iw`)KEMcCZ0-BT+V@Mb@^M%2752TM zpk42OUWkKgPtY;+9BJL5PtrO?9ABR?KF|&FAV*p!i&wYnABYcCYMBIHI4puh7HFGJ z*FspDN&}B4>C__p=vT`m@B})3>{81lkercNl$czSTEu`EgXH-ilI~yJn*~jyK}g|{ zG8+~SHaNpU2`wD>SN#3YzugsdWC6#E%xQoBzdj51x(vx^9I=EZ(ewS(&!iP5}YrPrp#kd z%eeLl1Ap5@@G#~RNNRcW!fqBUl&X)r-T`HNP-?jYPAzx3eeYQNJ}FK-?h2mf1%MN+H<0u-r=CgR#e?~vKt>*ziG$1o`pgBj??GqU34dTPT`=Y3Cej^YDEdWqA{D0x!?#dDHU$g`gWa9Jw{!i<4{gTDh3oVfqA%;SN z@I(WXz>B%_KtUJ>8Ag8wYSn=K0a2 z2*J0YiPcb^jT$dbAOzn*1r=UwMhL!#3QD|~hY$qc@EFRoQQ$=gtJ`WLsi10as5JZH}c7z}zd=?=D5#iH|5JZGe1ws&e`1tf9 zh0l@}CV>|xW+B4IaRw}WIA$S-&zcrQ`0Qvw2_NM0iv?DGJ?jD4@&{6W?VSlRiiH8x zoyXv&Ctiq60<|4NueV+*5d%rj>jt%+ z7{EJ3=THCp|MfEXbjzI=FTr)x2S|3WXlD|5@pC#PIm7Rqi*G&xnl&a`!D(eqO2HfDwZI;I0+>P+rf=ga1e@uf-o5rN{|qY1vNkCB86Zy zs33HOhTx74CV>~AA}9j+f*DXp9~6XNrow^{RHq&2K!o3!4tV$>N3blO$o1z7oGo=HjH4my4bgnEU|6)ClpMRSNXuwnv)Ilr~ zVFqpM0*@*hbb(H}1T8W|9gqcWmG}M8;UNRMjn+v9dXWkv)H0kah9T}AB}YSG6pV(z zXb23i5J0PseE+;S)CHQs`13++GPKbLs?BbLIvp5|ElB$hxjuB|33#D530#qZ>a=hb# zew(A4gV`5!ic}{TVx>96NnrbBVB-lmHavm15O4&(xYY!55J$iZopuld(o+BPLbw?c zg3FsgO(f8`?TeC$Am)ee&>z;JANboAfd`ZRypZk%t=0We#`?k!+>!@RIKTMa4pRIE z6o8>18!Q+~Y(N|-P|pU^7`AN!9qJkc68!}B{0Hzbj2cK7qT=Zk@G)sgpjZTLhVuRM zLc1N}E(VY)P-6)?&+Yr?MSUB10>byti>*DNTLNB!w`sZluy*}Y77iZh4dn=W(bfj? zCI@(@)t?tT8~^_A1{nj|K*bUC;&LBI7JPv~0mwHXDUb~>z|NF~+Yk)4;k7@=@ugrh zm|cH#f{v{H^CA_*=KyWU0{3xV)FaH40htMsf(*U>21PUI&Tf#f?~_iBxaK3EU08-7 z{=glq2~J-;+O8bXgauAdX#Fop+qAyhmE+=rPS+oewV+kD^=0hGU4MWF`dojYZBl?F zO)v>IA7(ft|24lc0k`1KAg^hIb#cHKXZ`5@((8H#bf&|9(K{Ew1B+asE?w=9=Hn9J zm15l=J}(7N7PX!%3Ge>W?aT9D^a4cXgD%k82jR(}$Ytpc1>Fe-Rd5EPU_V&FCs?lk z(do#OaX^zr;KhBY5J-=}>jKcigaZoB(X`wjbDN6YDoGL_tLxF}uXTK}{9` zj&CyJqpI`o|8An7YT2H!tphN>0Qg6eI({@r`5r16*mH-2)!P0Z$D4 z>Hd;22Xyh9h60N~787`NNZ^0b1>nIE5$i86O28#QXiYRjDeDWVQU=f@J7{b~8nhtf z1!Je{pKj1KC5)iWEzq5D9L=?V7|M9MK@)@=U4k6~uP=AI{(zo9sf^R%NPa+Og8kzG z+JCZRrx0QZsqq2GW+u?-gfD*WMtBKyJyd5XZ1NK{mG1fhbh_OiZQnPb1#zJtm_y%y zx9@!c2f-JxYc;!l1)y6!{(y!(0zngMFSIK`=8AN>zG<#~!%)xkn(6hnZqWTJjG!^0 zFB!X#f{qDPDIo`)WgDo{Jkwlz1{8Gni$OtmrZe;e$mM%FT@Sog>Gp*?iUaH@4v^uX zKn1M|Z$8M>>3ae^W2*_;?AzA1B&;Si+Ou+-R|FadG$PcGY0PPtOnF*P10nH(}&4kRifW~C)XEF)wf!;Z2 zF%xt)T~cw05ktIhQgMkPLwq=B>;^fWXvGHS7xelC_x{iFE>Nh0#t@;KHhurR@U8g! zU)%MIwJS$4>x)gGHVbIGHwQQofOdj|H+X*lHwyfkLE2w{S^_q$ASURbcgP)DPhJ#* zn@@K@W8PXVpq9%I(B`2)5zvA#-xr-865XM9f?m8T0~J&(ovv4!Yu|7bd4gm?_m*AY z-ySLu1euV&5cuLSL|H(0=#?PQc^%HRpqA+yh+P)~yM3R$_z7yEg#PGuz0>K$^4f-f zyRSeX=oSQUy#-ncc?Ep-3TG{7#P3cJRQSb;TCf8GxwtWOmc0^N<^x5sp(+Me*F#D^2+W-C!fSkqv zt-8CKL75Od-|*&zBGgYfPGx|Yk7yW>!Eb(}5#C#S137nqYyP>VAZI{2g*<^T`e58Q zy`gV{dO^3sSk!=2fOgFY1inZBH&Zz}T_5mo3%wl#I`FF3_eWrF=&hg^xRHn)TB;Cd6-9r`2a#SL)TCK1pJI_=_E14t=Hx2pi81e!CSN#Mn?`oI4pqT-v6 zXjs2_!Cw!lkihlPlKD&mpk4>4{JAzCG6x1?pPvso9|godF`r2wKGX%YYb`$1C$YGM zAwJYCv#7WPbtw_iaf+-E9Nv)4f}ooA#TBsgLGwEqby${{gXVW|g|}`A$mj6zmV_B=91v4k^6ngQ}XRv4_Fo zEwT_1-fjyK;cdSV5#AOH=@;H9VCRFv`$r9q@a}fyfUJ<`2zQSKXzpyTfuu#`B!R*Pw@1fhknve8FJ42;0e3Y70$(JRgY5%NGBI>ALA-Oe3YT|4;fXyw0+GX`2d4p8 z!<#3d*Ow#k#k@R_Q#e4?;hPtpRoId%vi+d$2dKZq(Ft173p$Vh%a9GtISU7!RyFv$1Mi*rR_L5TOyRf4^bHGFZzC;v9r-{29tN%^3b?4K8Xpb!8p zm;z0y*Fp@0ZvsJzBuw`;mV%vf+yPWHGl2HyI)XY7pmn0hoj}J~fsQ|bI8+t4xiBjr z>*q9P!Pn0PHoxHs4hui-`UIo|^{7_pdKt_%AIA%(M$pYFuCD`LFoW|qsE~d0!lD{J zT@IQcpOy=%s(s(QSXcy_0SE0DPJ^6T_U1))E_6hb8Qr`Iqr>}Xg9X`zAFqpBIxs`OTN(MF%KBfesAjc%cd^CPB&U&kLU%P@qFs^SlRT zFrqw*I(`HyKS1|&fXZg@M0_5|RNp_KeS1zKprzYTwnV2RCC31puPC=4OqB4po;5=g0u zr4WWCUc&ZSl|T!QQrsTX$7d0N@arxoZ2oyr7~@JGp!AHie+d*u3o^i+-D1cQpb^T5 zYYLBot{rVq28{*&7ySSp1(dM<@*=Mo04<#e zvQ8-jG%dsI3YriB`W~FxsZ;_Kj*OfXCA2cg1B}OtO~b(3W`wuQwJ*e z7!dvm09D1ff*-plkVL`pk7IqV>!0Qd4u%p)JQX};7RZ2J4?6*LR4eB7u*X2HFND9q zs=(L7dML37WGr~bEbw2n0355JvE3PkfBzd_DqUiHpmZuIo-)CsB;c`LsFfPe5mrvd zZe=j4m0(o}D^EN}wNe#fuKQ3f-0cfG zv$5OtOE1p^OWzOBBrEU|;jZb}-L)IkXhZ}BSQWxu6)#cU)ms3+S+f;X-#CHNDrgH! z38?Lbb(|e33aQGZW_s9`kCJZ@>EVVNmh{k(kD4ALOF@xCVtQ~!wGxpYz*eHC2T_ET z;PkLK2V^BYJ#5LslO6&{N)M|+O?7PP0qidH^iZ3JBR!;ms&V?K2M(<3?T`uw2S!98 zz6^VgSec8G7{IE)Il@5^bk{5sY9U^oi<%gGia{}hoESbZA*@`9-AXf5E5WJ|R!(3> zwUPs2ug>*xj)%2gU1PRS0)* zu%f!7AqVDl{??NJ|NleW(tL=e+x1Up0I2H*U8xujYEIELF~Hj+R7ejqvrz&Ckscm^ zD)j=i^pKqm3lvCYVFT{`keD9SP_0Cy2e6gs>ETBf+)8+QSd@m89!fzC3ut->ASFG_ z1C=X?!T^yT!0td#4+U^{pr!}VHhq-z;GP9;P@;4vs9HB*GYni`pp8d?8~#XRm<=HR z9^vVA1zpksI#8>Z#Vg>&-waS#au}aX>-7EA3m(o9==SC44RK@&dhq}v2^qD@%LIGu z5HZJbg4$<@{jQ)P9MBXks8Z#6@d@k>P#aJNY9i)DJF0&0hAB|vq#IQ5f`%tRy6=G^ z9!HA{(!XsWvVZH!(foj^#5u!TfI*dg!XzBL8DEe ziy^)TzQ_kP6^?+HXKjuFY1T?Y()=A1;R2mTkV%6J+nEGjOiTw2V#h)5lDU-zPLqd0 z>*8;0N1TK4WIOfmvqkGa1xCYe+XV%;Xc{t)CkDm?o$yl1Vszkj0!Y=NRB#`qjP=FW z6j0Y5G#vHk#YNB<(}@@H39!X(-=aW42GZ~*3MRHC_3!^~KF|c&pBL9aq6Uzq^)D7g zgA{LIgdSmW0;CRmq+(AxSVh6{PjLS-$c5h`z)b=WQ!*CB1Z}NpKEV##o&2MWwcGW_ zYpd?iFWpWO;PrG*F23vz{h@u)GV}>VQnuUm$;B7Uu1`8$AAryJ4}BB#q8waIaC9?3 z<9;WTz>BG=ptx^70@|v49~6RMk3#pA+}Mejw|KG>v{oUpI6F0ktl1#2|9OtPegTCJ z=CV)FeZmM?ez= zAq4FwoS%-Qf%B8`fwWH7Z=eo;C`V_YNU!TR&~m32wXvWq#?dR{5%j`40aQV7K<+ZW z2`V(fr2sfya1o&RLTZor{&|rBX+v7Sc`*%Q1WJPqQ~kqOkgcG0M;c-E7>AyrnK#h# zzJFfqi--AVT0A)Q5b(coG)#ROQR?>wz|@-&rG95LcwzXDFqpRgahT46M=v-%VQcUH zX|9j}A47*Ryo`JCGQ2;9Sq&Lu7mEVwkMc`GV zkc)mm4L#F9kb^;){W_=}NT>xC+WjWO;}x^Oi)453IpK>UQI{!zt^1(hzkRWhlW5L32IjMgPi8dfs_&yw7dp#1R)H%UkZNN z6s-ND06mWerNTizuM8B1Kiom?>;MmYv2?nAIqv!bw9cp3^+f>agq{}%z&VklTc9%( zbP7W=Xd}au7iU2u8lcYolfd542SG2K!TRBy`xPgd1YYb21yvM~%7F>uHSoC3hLeah zboQKN5{P%q$;nTS&rPf#t7{Jq8gP2S+rK{n9*lb71uj22U4Ojb0(;>LXoW1;qYaRh z*$uh|!1~RL08kByGnatv!*xC^C|HkzI@PX7I~G7I{=Zl|Nfi4)w$^~QRC$4~r7H{o zRm~qDN4R|H4*dWg$2AQGxfC*v`>r?i9cYh1x9;*Uu;DaP{GSH33lejaQWE1+QqvMa7aD*glmLNNzWDxmk>mCEf474O zq}G}o1ok%~(}UEbjki1nRUhDDq#0Bo@@aE)AB2t{grIB3a1FTr695-#(AD7c+Q4f< zt>3&53&JcBA?3>kMEMekx4d`#aGYU|7U(?d4=*f09`pUse2}I4%YRW0$boH}0ztI_ zddWTqBnnQmApahB{R47$r|+K^MjjyLe=Hq2N<{d#fo_`u9g)Zp_+mM@(&qpj)#1v~ z;RJ0kg+RFtlEnbp3WRiB5+^uw|9G*%4Kz~xqtvwfONN^~ zgFwauO%{RfKmSEpKoR=q#Y2BkF}&Lclyf<{Py83XaS^2@8kjSnM0hUueTU!Qc8Bv~L8wIIq(Qw3dy3TOjD7);}+# zT|r%gKg|^^45j(UUBN!={*nbguPuu)iw!jC;{@vV=0M_39n>fL@xRm&=CdD~ECLw{ zpwx@-9uwGmcOa=P;KgMK1IeEc{r>)copjvw1t>rv*1ZVKQpouKAKW?aMz(P)s8{ym zf2lFd#sE~yruu=xG9SZ^T0dA3<#T~a;Dv-gsE7guCunhIf*&|I53zvHiVV4cD5DBM zilP0OoC{0>m8r!HAPh=ZFdW+b2B|&$;*bk0wUkIf!|TNrH&EQNyjTX2>vV)Rf}VpK zcHm44Gi;Owt*_4dpCK@ZsP=d_Xj%+3-^VA2nC}w+&-cyp21Nwwd>;$)e4m{IC{{R- z=lk~AAqw-*FZ1pzfrGKd2e@ z;{}@|xTNN9c?EL0>z{6p=AArD3=9r6b{R{wSOhYTfCvU{76DLw3@*OEyioE26*+&v zS)3!_#b+4f6@>9}9>}cFKiy2A(eJ<)*5(Whtp`e2U$()-yE{O3Kn~{bX6gj!Vdb~81kbx128QAS7{7Z;2M6eCw$LA? z;Sd*11Sx2K#b_D&p;!|l1d3?T>Vnb_-8~z57#SEkdnSN%b%%Zc`|HE&BM^l!yXA|BWy4x2FC7{~y|_IRt6~A!Q7-@&e@R39RkO&}kE{dv5J z1JpVJB{i_ZMo`d$W#QEhIDQr2?FZaF#xK2~o5LSKs(u}J(2j@<2Pb}ppnw+!R-i=i z0d%@B$A3|%5>6B)%e+BKzJR>z`={Ho@i@qxI~_qTGx)r;`%AYd!xa_*(9m)>7yNXV z|Dty;gN}6+u>SI5mm6%1mZLZHLucp{P-y}_D;qQz|0E!b0W>)Cr(3Y`5Xk5tkWC!j z6G8rOKExRGUo-{c@*+2oLtZr3zF?^1Jns4c6m}q^9)Nc1s~K44o@C@#m!DHkPCjim~I2kG9`Lor#2o0 zIUBOyQp^~XX+SrXfZJdo=YfxY?{fX}n#t$@WWH=AsI`WaFrc{>Y(LKasVfJ#3pd~T z?|)F&w>$Jt&R0l%iV*fcvwk`wyGnU{AlGJs>YmnS)Xb3+M{hAKjrmK`(Yf z1$;pxMS`F~l^4rkLOk69oq~`Yb>udaz>E3LkaPs9@n1TD>zl*SIfFB|5&Kqe+-4Gp z4GT=oXsG$wone+oxSHo7BRX{C74O(!1(E*=7a0Pr)5x67uc{S|(0qFTg zzCT_tf=c2KFCJKc)-;qj9e2F}x{DQb@)784fG6Oylkd8L?}>z7Ez9NvT9Wy{M6CM@ z|Mt*lLH|Xe7udXY{QLhklQHztz880x1YWc_fr18hq|k4BP$=tIzj<-U5fV(Ga{R*` z$k`qsdwK6N3EY78O*rnN-2sc_MX>)IAO|cQ*a^~!(}Nf7K~3f#FUs8i{?F(+&LRL> z?e~HYQatc)JJEWwR3f7VBo2!AZ{SGgfL!6pwF9(S@TCDG0|R(Ws@s?6#X%d;qO#Bf zK`;J-m4dJRy#T)U_X_yh-y7YaYk%)_yIueZ?F5Iv|H00GUDEv}12mQjTAVBlu`vW5-E2HnQL zppZp$?cdqMY=ozQ5BHb^UNksB(m*uisO@iHmxGRt-3!u>sC$0gL!<+i`;dF0VP!6A zegO3+K7vCZwBDf%Vhp@(4@xHB^kD!_{}*Q&9RZwStCy#tcvp zAo}}4_Mkw2V+{`i=y1j_JD8sXvF4n`&fpl1frR%NJ5U{Y;YG12sE)i)%Kl=R<=_9W z#X!w8(N^6!)O?#%2pCyO6a)#tR)t?BBnZNAKV7 z0yR>6@$~QG3_#96>EG`LxhE95o)^-;zXVOFSo-%KHelDIjVB`eg%~zw_?UuRf!e?K zfw=dQ%1;8;5hsxK9uAo95F6GR@jctW7QB+7puK}E`k7Z(h`{`19Js-3k1mudl! zQtg{1#D9w2UqH9X!|#v3X9-%t;LGu%5)|I99Irv+C*8cDD!7xQTXe#476I@zpB#{a zPUb1d|5hme2bb|+|679ne~5(va_^7IQ$!dzK1GCq%~R}QKz#gu1f}B-FD~eV{g1sp zbk-Kd|Dag2$r*?R%lq_epo?mCn!?-L5x4^TfV)I(P+JImC)AG@m7sRjf6*35npy;k`5*sFxn8sw{r&&) zHX{Rr@qw3D7#SE|o(B!N`2KhyVFfzc{yhIS*Ym9hO1MCU!jBhvx}f9nvjlp5AuTLr z6jOc7K{s30fToPj2Z5SH|8+nW?aLZQ28I{XMxe_11jM{jj&9czFH;y97@BKOF!Hzh zGBPk6Z$0o2G<*+Y?SQgg^LO`x*q}icFr#}ah-*C+q_kKXWXA$f>IchNw)7tP_y0e5 zWa|X7!cyJly&w$^#VQ~jd2k(_5FOoM<3K|#V21Gl{?KSN=qjdvBRWC?&U=~9!*b>m$Fup%tJOUM72N(n3BMls8 zpfId62REgATR}+;GzR$My&K}n_ zLF-VS;z-Ecq(HYXk2dH8IRVgdOQ6x{KQHtxz@@Vfq$G(j2E`M2ZECI33o|_s?@M#- z7sgWlZeM|BONJ8m9iUnje2>a&me&)E55Pw6WsM;Tjt6$%3~0Up?f%bhSExflA%N&U z6rlS3vJoiq)`E*vXT8`0iseiHzyI%=2f z1YNca&IpLn0;H2`d_Np_eF2IY&U@6|m@yUf>+31DTk`((8I7Ad3Mc{LT~?+QV%|&QwLo+28irD?ZdZ=u4v-7Beb;pQ zE`d(ZgG^fsN)oP1AO+Tiw@d;r78!yv7t*3VQ0j@Xe)HnK0VM3feKXKF!VQpe=-7tJ zJ4C%M`Ho58!2kdML8BPF@0bL(K-F-(gXYDgoc!eMko@4(ycC9l#N_PMlHkm$REA;@ z0gX~{{U5;st^Zg2{{Mfc7$XA%T0Fw)e~uSw7NB4U55GchD+Ha(Ss}twT-5FRqq$Oq zrP!}K^hdW7XhlzN2%|t}=#ySo(8|RhyFh-?23_V0zW(pWi+zfqAbkMZ6A>uF3|dw7 zqccFHx%L4=2}ifXF zl!Fp4rm6h>Z|(Ypzxf&isO~-S`~QCi76#C5xy=V9UR0=nI?i9TFLX{l^85e)-d2!& zKyNRI6Zk@215_AubPIG&y#kU2`JorY3hbSF=lB2r;AX%d1yE&q;rIXl&3i#4LkV|x zD~RzDWFzQQ-LgoiTewvI{$~am;`;++xih#rh00li5(j7xI7sH9^56f=AGAx~bZ$NK z`#LR0xD zH5vk=Aut$106jnR1iZ*n0+qDjo2i9Br3P$*;<_fJ2*KP$kK_?>`x0|~2Y7Bq5MnUm z{t|0YtH$@wi$*PIVF7CD6hN)PzStPcd{9`oEBJtW0c*kHV$eO3zC7Im)`CTlZJjQn zh;5x_q6`cfA9T>qoB9W;S`gbh!Kw;$L8p}Hu?S@Jh@x)myr2Q!7CEWgl?SxZmLtyk z&5IoxfB$1_H$Vy*>`W~F$@-sh1JRxfY<|N5K9BGP$bjRn;HBS~n{!e>fQ}Uh_y6C# zu+{`M3ZVOPI08Xu1nMh+DkRV))gj;$2VFrs!r#33Dg)iS`{uq>OeOMHypV9Ll=-kb2!A=3tq`NOicOVO7WUcuCD8BxHYE~r) zXl4NoVLKDD5)xhpi0}%;w`~A4?8{W*m?5cx7|+%KuUC7e0&b3j&Zm&-4*ihr^hX1E zwb}$pQ1GCPW=n&H1Yo1t5JOm0VXBat*^tg`l`5og!Jg}J1|MiW9@6?o(0tNjaACsH z`~b8*O`{uh9z~A|)Lv+NgcrAEILfabp#F91ff6O~=_0;=UbN|e`ZfO*zy|Yg17$3> zW3Im#U$Y!@{l(Db`m4hgyq~HSdLZLZP^ku5-|YM6g%?<_wG33R>+e?RPUuQV_*lPr zkqruN5|a`*kZ`ykv>YGo9`LgG7n;%_yFrJG{COb(W`j!JZ=fbBfouv%PYFor3IBR= zP_q5-;wC7~`f|Kz1JU4JKs6v1_>>8b7fv91!J-x*7I<$E#|uMA$cYpmUZ{guP_-@+ zumdl^^J~h;y#GjY=qu2rKqeFL8#n+75NP?;m*Yj61h~}r^CA}Hr4uhYAhn$Jn-|NJ z2&ZXCc+NnCCsE}YXwdD$3pEu)F%MpxuFoRS>-+u%gWTW$0U3`$3zR|Y*#%xmse%<^ zn??bZTmKZn?gUSxfYT3A^9vI}MbC#91rm71*K^gtV;|7<2GbNF^9va34QdsU$JZnN zG6}p8Q9|y@bjyR%D`Hp)*E!_u?Tb{)*FZ`fQqb-kYWe4!X3Ka;6JGPLk#16kcSOrA!h&oF$uhAQh>w= zboT!TxIzTY{_h9r2WKtlTA3gJ5b?tDpWysII5a?&SsBD2a5{u#LvVU@0gq_y*(r!` zCL~_<@BhYH9#FC`^M(ywt^l>*et^OOF#yXi4+@8u(%^Uuc<}(j00jtiB=(&gGz4BY zgCh`fj@63^QlJR*-4poYj3`Ji=~F6M0-$?-KwB|j`)hx^@KOdxr2%Astym5;1OvXs zrC}Ch0c=1OL5(|(nela*QU98`{u#yAkVeptbsIIDEU>0}+9gFH1Ol zmV?7H0UVwSc7le+u#YUk219#&cf9CP0JRaj16aCUMLIb;16V+}{z#;Ca)C!m;iJR~ z`Y8KGR?31xxmgMnQph8v6J=q6dzOKL0kkZ#*L6j}i%JoYLQ?a@an}=|!8Xv$$O-Tr zN~mG`P7xfoI*_mxmj#9Gf#%u+47KbpzKZ|-|Jt`ZRG{1SKqnJuPzyB9IR&Eh4LGm* zE_l%n3RZz`2bOMMkxs!*M;7#@Qio(f?IMY^PDa>rDH$eaffu2&$kB8L91026Z(d9W zDSsM!NCY%y4=Te{m=N*g!Ne?Z0y<`B!vv2r@E9RV{K0qZzv*;EnSp>VR0a*{egU;x zQHFHIWkCLa1HIP=G|2!`^9H|wTp_#Hdqcl~u0a9~YgG&U{SO`-1JA(h0A*27W3C!JB>4tZ z*V`yVZrCo>17A|50UB)lg3!_m(ZT`sGGshW1>|&B=u*)Y%*+BW_DCc7j1?pe-q8+T zE4qOh;jcZ+%mP>kz+eT_C_OAg0KI(&PL2(rbmIHxg)KLzkOEazr$KE!Y$KYG_S^wP zdya_ymUD)H9HPGkIS;T(98|8Lt{*}<4^WN=FyK000hWC>(3^t!$Xc=5m+ zJpK+U!+8*MRT|>p;tq6a9zz;vb;B3_?XCg=|3yn6Wju%Y-~VZyuCG92@S!g{1-o6} zfXesK51oOai}5-gdAePpD_Y*LGYhM^e@`Hd6NPra2?Ld6pnZ!b5QpW9{rwLbP)ZlWGN1&~{|3u`7yfOoJgo;n zGxd-SBkadrKY+^WZr=}`zM%V0Lw^Ki)TOaBfJWl}i&{XeViAKC`$ssK1zyY-1A7tD zBYz1sI&Ry84Ng?1TfYu9T;A|y->1|E<_y2!D1``tl!+%j5 zNZkAv1`R0vfXpM^;9?edF)^A>10x5nP3qCL50T;6X$UIO2 zdBeplkeQc>vEG0XKu#~9V>G_}7j=L*D?|7%Xp<4Bw2g&Yie%V-RnQLY|Ei#E=l@kf zo8A7a{<+K|@L!eZ3W)pyW`6*aZ@}aWF!=;bg7yIYR|W0f`L7CE(DYvwv|Q=GDyXCS zUllaj{a^Z!*ryN>^>W`M;(n|c1Lf))$^ zR|R#_{;Pr(YX4USEwuZu3R(*AUlp{h;lC=VZTepo)cXIg3d;ZgRY6(vzbYth{;Pt5 z;=d{=5B*nta{=Tp(9uW#Rlk7QKfvT4Fv)O{MF12$pzs8RBkbZI&_-&WPABlzI&dEi zqzDN^>Z=ck`U+I~Ld#g>)dHX+Ho84nxGXZmY`ft&ivUB3?LrU@zP;&Bw_v9zhzB}J8+1MFmrh^s%8L?y z&;ZJh7wLSUQt1Q86_8SM7eTwh_HlrEK4qYbm^xkmfOP)>6}4GP8B6p*a|@t4@4x62 z@XZGTovvUjOIcrdgH~tZyW1M%Lr{D$LCWYEU;~i$zCh&zLGkPR=f!(OMXS;cT58Nv z%GV9rF?E|4)HGmu&6fo_Jv`vWL`D!F#KuwSf((XYkp2HNwC5p>uk&Cehb)d4&a5Ca zL3bxWZx{kcx&+AO-MpYM4+M>@R|G6YOUfXNsznE)nJz+?uP%mI@HV6p^ER)EPGFxdbmTfk%o znCtP3iwtK{vPm zR|Q?q{$CX|$c0EQ;Q0bjB7KqS1Zp(0Kw2UUC9K`9e?V6xa|FI{g~+rXC>3h1<@jI9 z{$dH|-~X>!Uq}o8{r~z9{xk}i&kK0*js=`QP|_yI8KK>8g2TE$cHe6KRwCbeyF|J> zl%w@hiAeZ{Gu{8XPk&z3&D80}(iz9oX%rt94cZU_(uKf~@+Y|aR`>MCxa=0}g=dm`fInrIqVf?@QSnIcv?A|3R;DXtK#l7`F>5tZLB@w+TDh!QwU^Ar~ z>qNi|p~gB1FoUzPP6os%;p=u~2@eZ+asB_F|IJ5uy4`phYYe~#zQCpSK&8r9{9C`3 zu8EI}CR{Lq%q9XOg-@9Aw@%j|md14+%?JL3ce?&D{@?w-o0QOb$%Ya-5O<;sPhz;} zQz_G@!(c}+1n^69$M8v6;|G;3a#11thy zQ$D@?{rk^jQs6iSVVp?(KQoAx2l=vUy2 zJHNpij9EeYG4dkFifsq_eF^^Xd6H1Tuh!KG0@idK%Q>bKg&>_=_Hh1JOv3 zeLKVnBmbHPs_P9(g3e&R?|GqE=8(+eo zapX9Qz>6@jPL|hvFTVT&Tg&<))Ebe%&`bffCmCLFf{Q+u7lxeZLmHs?uH|4TWk1Gx z;5dr_;|t&KfBwIC_zyY6WM24j!a|HMi{ZspaIOX=Q=GvDcLm7&H!}R&SPvd&5okS7 z!oGp=<$eaxZV(QJ65i%o4#pDpEY=qSoPYnn@cs?*Pl+iwcj!ZW8)F3uCl-)SqXREn z85kHcE`UP81uhP9N5SjVtp6{T`~{~9NPYt6j6aa0Lck@%hfZEl_;rVV=@dNy+NJFJ zWAPaf?fVD31LqHDjLH>s$U(R7lTKccE#09nIz_L5)VRJ`eB(Haz%j5l7)i=u@SwoT z0L9P0jE)8tfs6;Ph(`aB8^K}W;DXrD^@s7%fL_-RDT_hvfzH$y-L4#+t{0BG-eF*1 z5P-J+yM6BjzE}WScYB0|AG8{xRQQxypI8{Hl%jSm?Z7#d0hj=4TX$Uc1? zb^=paterXvPWSL6!FBi*i74tJ-% zIOh5oVdP_wEZD`}z8_LLc|qzTiK+Fm1}#y7pz`7J4^X-*WqK{lzs;4S^*{;JYfj^n z;DWB53#}vy?S8|*4V+b450vomZ}a78Jy`-O_+-Gx=e-d722O(@g92Wx`2ptODw{wK z1m_Q)g`kuf@ZvtWZ2&rKv$^)m|57#3VwV>==Fl8a$^lwk9}4O4f`SIrWY&DG4r)$A zGK(o#DM#ypQV!7d!M;C0;R)Ra@}nEAr2w)W6NBBuu@IE{177&U+yfdd{9g*XE-3KD zBQvmjUQ50f2fGJ!lw|-UQ*H%I;VslaZ0#Fe zu!;EFH^}Xwzn?%Zz^@*qJ#+@50e^c4)qN=Xdx+7W^*D+xJP}3!m?xKxSFYa)L#mJM=-&i&Sv$g=I0v2^N9Z%HTFOV-~}I(Uc1; z0*gT=Hrs+ohEkAww=;p}ao~en#AO0lVk3eErDsrm1seGWk3xY{F(`L-Vch)yG7ePU z|IcVZ#1CfVK;ot30*k;xkUs)moCbG;SinnON_e|PL83wbMO`j{_Gy#oHBkO}{_oF! z(AFG~D;ZvJvHt!4Vi^m1!vN%1X!~RPzd!#M3LIb&Xgxu93QCbdFDziqkRQ-w{R7e>fhFrducf+q zL2(%PU$g)ehp-6E0dWYF(g^p}5O&`r$RG&BeJ0(apez*hA_49`P(chX1|Sag{Q()- zL^#w9JOHDd#gOp?G_uN&u@ck(J7EACWqq;I08|l3G=o=ezc|bUTBHmz5$?H+3oHUJ zs{Z`>PeQH(_XolE)&+u&4+5F@;@!_b|6_67MhD7I|1y4Hw4dJKXg`5kMcuAE{Oer> zm_h9*4rt}m?JLmfd#5{8p!pSJXQ)7P?Hz_Pg>F|4ZC9R7(23k4oxTsceIG!ArrVd} zf9QkPr;oWlhqZrRfEJUymgCg0sc1K3%@V>7LQH@EAI50a;P4bADH26O>g#S- z4p3|B52zQ*)am-8vGzxDaqfc>rq`@5?DRofzHvnXB>W^A(c7ONaD-oH>I-Oy9d`vE zuLkN%KLKBD@}%4MiM6jli9&ZMhju7WXDA0~!ICRRu$_lB6UDoI-vqv}`VVS?vVaNS8JL^|LQbYLL`8!8K&eExkBS6H zzwxE-AG>dKyQm0!|JZ%`wPW`UuuO=G2uSSW>x(xpzPfmW`*!J8e8N}@9a6e6Y4-98ZagMH_s!t?zjC_w!y{ay!yJtzVS zv2GU?9yAZ0_@1I7G4XqfiU`zq0_7Ygj5&j0;4}Z=7;>I5ci**NRstYt+%fm2FgISQ!6L>0t%P_YXt)1gHNq!{Mo z-{$%(;DyOcaI4`k|2E&}pkA8sf!EP5xoo-%<6D$It!z#cGNTkrK&x#z!kob(i zh|e!L;KiP6K{1aK_`)xCy#qy@@AJSHo1TLM_HY&hq<38Y1;mFO3RlVkUOECw9~cEb zdMS$RWBhDLcvN772cG&2eAt2ja=>VT4k>Yc0&*HGC~A2a!N)Q%mD+*E_dsa_lrmm` zPCV&!eFEy%l(N2D0cr(97gvI%-~RspA0gd|F1_IwC^0?(j~g0;&Cmsz4jDasG3nQz z|DZAhw5XON;Kf4F?q^?tz$^x^(M;eoRd^V{&SEY#0BM9fs}#vzrq?1Uawi!;3xJ+L zBki?qx9c0oLV*X};QiPS0y7HWr4?kM^ou%h4v~OV(%^a@s=eFw2^C`xf81h|1^2&f zV+>gY7)sf}+3>XjvTqlHq|n;mkkS*IX=gy~dt~h|bbkH+AA5)gzRU_#zJo@2SzrA7 z4C+Ne7Se(vr13APA;W{L8f+eTy#TCP4{|TOwT7jK2y3tWeF(}aEEw$-kp2wN8jcrH z;Jn0Q%PGwufZ6*5%^$$*MD{62f2Z#s(2@|))}TKx_B{Lpy7K%uV~QcDQx6(>L0*yw zRS#;1gVqDDe~ec(+`n0j83iEoeE+2w>MI0moebGaPq)!YIJN@Is3X zq>rVc_CEvvRD4rE;ADtwUN@+3^`_euH0T62`wO_k@S_)D0~5#w&bz@z6asQ$R8HH1=?}Gf!Ca3zgntg@7>d`6!@Oub?%283E>?_}CJV5dvns2LcoGWpci}yRtD(gkboCY!A&e5 zh*&@tOZfk-AXmQdgSZE@5HQ~OZ1f9esDr>kNfrSvUwE2-u#_uz^RyZqU=ipRY29GR zBGCNve~DgDK;ZvUju+QKRm%~9*u&kTM+{j6cCa!qFa!mF_w0h@x5MNKI{_RYEG)?J z5!@Zi5!PJ_iVzFXpwj>UCB+SP3?(sPFYG`DAJA<+!eR?L45QpLhfE|XQag+~cECSlc0|H+>djqQI|1=*F=#X>jjumigKF<7lclj{ucG9W@<{(^+ueh0iLhO}&2|CbmA|KAGoJVZnH`3wb6 zlKHQ zsRD%;RMVBO|NrlAfN27|6I0V(kgES%K{3)j7v$&e(-4Pd%rIjS2!}W@4B@oP%|~P) zgL2)ze;`Tx^iv9wIQE1_rYNL+uF=FIkZ~XgG2aP3V*y-bW6pO%o8bRTIkMQY7&1D9 za~=MRhFo9~cr6BMx-uA_Y_tFg@=rO~eGt+@C4UYPoIg;@D{#i>wzYwlRi&-pKt=q*0410}B>`0MMc(=J0?Q-XMF9fJ-am zvvDsNpHLQ)I}}c^Ag^Bn%?IQ^`1AjNsl@+Mk^iLvpmbEq@xOrOzrhPdu)}0p4^%QY zBX62Oiu=&+H@&VR0a*-ituJQY2Nez?sO1h!3n=~>{);kzhPquj0{)A7faae#Sr`ud z7j?M60@@#9gLPmVY5+KXRG1kUvczBTNHc&gOJUy$8U#42x!B+&i$Eu@4u}-h0FkmP zAktI;MB2)nWD!W~5%mC5yf$D;Rsu}1ihwCq0WhV@bCN}1PCu)|Nl=5BVX+CAW?5`; z5>(f7EOr6$Tkrh&|Nl5^!wD7vMg~TPg&@hrHYZpFjUma-pr1)bE+&|J&ISH{`x%hUXlvD25Q zJCp}>@~J2&ErQb+DAk2>bWQ{%MQ9-l8qNO$9?b_WTe9}$fm|m9+RY%)&C=M(GSve# z>v{_k#I@I`5yU77a^aiPDCN__52$=l`^J?6)PCjcW@)Xl0L{@MPxFJ@sz|LR(E3D> zk)ZVuydcJLR*;FHQ7fzk6i7Wt0a!hVahw&T3!i$>JmoKza^Y^4so?gsFHa{Am=${% zv(yCle;mLyo$=95*FV8w$60@zhRlL5^Z->cCm0ul=q#=mI%1&oRtg%b>tJGFfZjy} z-D3g3)0qnlBpBS=q-IYkcc3N4+OyM06-G=9v?OZDVF2v&6Q5kx4jBsGWoAm(D8uFxwT zq4#@BAAm<-&}@aLwGiG1ouN1Qx4GVLJy25E?R%r~;RpNw{Ea^kurV@}1a^nsXnX_~ z_?5uM#8BeU?RrBM#J4Q~aSf3)1h6qPfaaNyG%z!i@FQtpW+>(F=KXV;MWFd4V<(sa z_DS|3W~eV2x?NZwbh?Os0P`{_mJ1)CT_1uqA z6wrkOx*r*odtikDs6W?i>vI6Kl?k*k2_y$!(t%}A4O~CyKuw*o|NEdh~x3;zE9 zpVl*V4w&kl0H)^VfT`9DFts!VOs!4$`~Ux({?;jfK|MB*9iRqDw=YX)Z_nTV|9eAO zI;YM6FhCXS2#8|?~zuol(Z1Wfw z0|P@Embe8u3)DW|@CepA0*@ymS2v*X;^sFTpb&tpo&v3uV*oEnPU&|2!@r%Q@h5yy zcMxcL-t`Z&lMQ%5>W@ZC_;POZZty~N30wFwZdK3%@5&Osa?tu#iCv&GxU&!Ofdp$9 zDz+7tD z?fa*(Qbd7uvLtBY>`!Brh$4tB(e3)Du|h-%#0CwOHdcx-ILu@$Wqq-p54s!ybzB!@ zH#QvF{pL6;%Na-oiRoNW_@l42$ha!QAdmstaqz;27Zm*xNcte{hkzI7E`U=bk_^Ol zaQYE3J^;B59drrWe^C{1y7>ZH%I*5c*cG&#=f9}N1r`Bg&~o8F|3!7+>|WnDf&WDf zz#9G-gLd12_FNl-P6+`usCq;H7@q?KE?4gtki2FDrD%0d~e-8|6xCXoD#>D-{G!|;1YRU@fdjDhKuHB;(5n|T zz7!bn!Wk^V(|VvJ9wGr5+ky;x1-#&50qFxtJ7h3$f`+z0Ltmf`RAMlV{H@a&KqGw; z7gz+Ee}tEcXK_G=yg;fxa63C068rni{Zs` zn4%Ihs0_&R0GQkIn4xBupjcT8(^bl3d;oGl#LY{zX`F!LLxu@?{4_W$JcEG)?9m;d zfPc@yz|j4p`3O(z|58h^OhAT!6^p=&Ye*6bh%l%O4~NKaL&%q;WEfb12KT@#Y`Z_S zek%#ea6l5d(R#bYAtMAK(%Jgr@Bja;2THVhTR;5$|G)cO0B9#!Murt=e3gNr0h(g3 zwH_#u3jZ(4a)Cu4KF;_6v@y5xA|$+eTi<}&5g?L-iGd*i60zN<1A1GZfCf#o7&5+C zu?YO%3bF)h=4A-4doIWc-5ow2mLyBB2kw}XtO4HsW_Uu^!# z#NSl>|Nnnah)rphCLX;k9{jEG|Ns9_Yp(bgQ^Ezlf+ek!qx)3%!S5HEe+cn6IsX6u zzt>UF7Brm8-){W>|Nn&vmMj9DExw=xvoHn1{_*$!|AiS4_8$;C2f}9f_y7OG0tlN0 z#4drbIY8_R2%87Qu7R)x{{8=-wy?pHMF5;7(mGpwMgD<~NC#O4O7y?k7#O-gfa3gH zsXQWTMPL~tEa1fr@H`n$_lIuZKi$V5 zP6h)b14AH~?Ct&X`~QD9`{)1vfmzI;8Z_X=6R_V^S`U;KX2@8BhDkw6vp54@TmZ}P zv>qr8&k%sffZC@l0WY?}Wo#iS1C$gYBl%x`f=2IMzXbd*6$pFL2v#W3dZ1JU-2DX2 zmKmRYas3=5Y(eG00npItF{l7V!3=Ich%~?PF+Ld#8W@ILuHo11$`hU?lh(-rnjQ@M zFUkQP@#k*|U}j+WUn&D0UET5GB&=xVZ!u?PVCZ(;u@lrdOta+RZ&d>cc-XX_)Um)4pYG zSj6Gbd{D#sc+pGin_k`--~|!|GyX{(0YKs zWd#$cDgh~Fe9gKLB%0x44IYgJt?&nxKm08%Obnp&en15a1E_g@ApkU!0UG(0fadpW z%|{eKrbRI^Fm%_xfNW7>=w|OW=spKg(tZB_HCxAtMvVNe0if%LYF~7-cNfU?x;_ZV zNU&xR$YMZN2{KC)tn2~ADv)A@Ue`AP!T(FYpsRchT3u8720AbTQkns}ZWLKr%K`qD z4IpK%KR{+L1u+?n|92N~z*YJF_zx-~vtawLYky>cd{DsC>-r&}*Y!sCxqx2RKLMaQ zYEY{mv=js6sg?sJ?)=+b|5&?zDHQ=Nggsr(+wFRT`JnX;{wB~dhTXM4Ku$tfbRJ|+ z>3rk=;UIH(AY-U0PYUtak4|39SG z!qRr5C}R&&&7k%_dI#qP`)ANfBLUFb2Jjix&5zPb#kyTN8ZE%RGw$ZvKcKD_Xc+{K zZta=>s!t#XIe^JGVDbZ)`~oKLfXN$R@(P%|04C3X$rE7m2$*~TCJ%tgf-9iICq975 zH(>Gwn0x{zAArd_VDbi-yaFaKfXOpp@&uSX0w(u>$sJ&F3z*yhCf9(;6<~4+m|OrR z=YUDju`T~qL8rg`SDgSB=>d}+VDbx?Yyp!EV6p~GR)EP8FnIt>x`0U!FzEv(1Hfbm zn2Z3EF<>$QOs0Uz3^17kCP5o?{;Puak^EN$?bi6O3fgS-Ulp{q=f5gw>&Jgp(4LR~ zs-T?`|5ZU7nEtDR#u5Ijf{NY$s-Vg2|Ei$5&i|^QY4!iApsD2ls-Q8J|Ei!dm;b7u zS+oDDph>g;suth_IY8qa|5ZVq(EqABU=dJf^}i~pANyYw)HD09Dgzb=HN*d_g0lX9 zRZ!9MUlmju{8t54U;kA>O~ladHz?Z|slZ1WUl^p>Zq!+$Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd70>3W09lH!pn` zfDQq8(|l0jW$@ZR|GPs}IC`CUy1h;qpLoFt67c$CeB#CTHGlr^xD&@B@G|Q0|NkI; zq6mE|EC2lO^*!-Y7^EDg|A_I47YEn;`QHuJza6B12S~pZNIy)`8RHW#=D-zA0x6mT zQuOuF|Np(d7hZx5fGNIUeBwnuTyZK$aREs239#Z7FQ=>lIiu%g512mjvUom{cY2IZ zyfA`m)&Obt0cq|AYrgO@9IR=}OMj3Wn2lSEPrUfM8s>-3tN;App#jnq2G+FVr4m@v ziI<%7AvOykY3|DS|Np=7i5Gj}`Zt60vw-xAf%RW_`Disr-s%a^hp7OG19-243;hG&mn)iS-F9B)p4fy~6|I5aOfByIO%7B>f zHh`F4{{8>|(rq4yc?HDu0U6v|0b+s-fTf78jDKJcy;%hdkVmWj{NFJHWV|cLc;5>z z1wmHBJOYZZ{cy!wL5fR2iY1_mpR9uT{tieDOcN-`yFdb9-#36X1%Na?egN_PdXOAU zG028kkN{Y5Fi5cuNbxqP;wF$BvSI^}09dgaNHGUUaVJ>uikG2a=bU(HGZ*Bno|mp5 zwNTBl$o#Mp=J#hS|NP(aB!)%cr6*Ybg_oj8>b*cNI}BI66QuY6NU;o9@t&6@>p_-G zd3k;gDA-Ftk#QB2i+W8!%u`_I2T%;`2Qxt{Fl?|Nr;)8i0)F0LQfeh?xL36Kqo`n7IaIycd`WP64OafgBhB z5>*Df6|@xZr6yQ`0Z3F1WEaf-9T59Zu7Cy8{uO`z@2CLTuLQE+_sq+8D?mP9^YR&( zp78P>i0-ukIp#7*8_XybNcO1%iGjUR0x~KDWYqP0ptNx0nrpECDfl z!ORoC{{Mf;4tDVb5VIUC8UkYGfSFr<{{R276dV#$K+G_(XatDq4QB56@&EtJ5U_$7 zAf_o;v;xG`0y85(OnETV2E-HrIThyoGvC26v41%%B(^U9^M8i{$oUfY{{Qd(((U`< zzbNQJC+jaSvyj5j>x=P;7abtQJRrrd?}Gfg;^p?`pkV8HxgJcPcsXqrC|)8!!8QjZ z)GGmEP6RW5fa0YM%$x&aR)ZV?b65`~7psB9z~L$bvg<`Oi@?kJyZ_N|V4zY(GinT3 zA<*sn;bjCUqM(rnP8&H(|NP$(k;x+P^89VI_<|MHUO$Xayl?@jYXGTRj;;>o7?Alt zmLXLiptQ#W(kGI^BJeUFU0<*7gO|tWBB^gMKJnttl0W}<=%ljVi9=x{wA6)Vdi%|_y;as65&n@2Wff& zvTPT+CP>hLNp$^+aQ)&S{d++AtMKUW^?ma419GeC2`K&-{rSJ+2*|zm=vqPQ51^}G z15*D5q@EvBy~s1`kbC3N^?|Npe)C@xbWNT0 zmzPVxE}LAuQcB|xH}Yp|@pyxa{6T98tKmw_NAES5ePpLlU@!Jq#-8bGmRh}}+z%@DF1 zoBatOo1pfCj0YX$i)z0$x}}jIOEo|lbI&!jAc9x~C9&FO{Q)4Gp#B9J5AiRu{od%7W`Zn@ zNM;dudFCo!|H51fN=GIjO%K9Z1YS_?&koocG=I4O)?EvXJe+A9+Aocp_ z>TN*kJ3#8^W2i@Vj|fN|14vytx;nUfAgwlNe%pdvvVlVC(%e7)ckBU0iz#*!Q1fdE zy8cNZ{XHQ4UoWHi4B`S<`3-Idq<~aAB(Vs*JdRy8DE!{MbU?P{f$@nKIv{;75?KUZ z_M_{An-7W~7Ld9Ykh*kqbr9Ep%>VF`cLGv+0qHw4=gCG7t9{qS;bKbn0pAYC6o;jkZF7brbUM{nQgfYfV%>VbZ2>K`Ke2jr?h zv;X|xu>w?j$785RPCr+`>OlF#99;Y6uF z0#aWAQm;;w`Y9mw6F~m`ex8tjLE)JKQhxzt{&Awzn}F1FfZ}U9QR-Ph>N7y$nNCnW zC_Jys`15}U11LPraj6Hj&)>~J%D*>2<9{FlaQl1`$bqSRlR{^$P=2~c>M6I2gsH!lIH-w+DQ z|2Wlu=>=Un3~gV!%tQ(~kO@g36AplEJbD&?c!5-#fK=ZA**6`#YNYT2`yZr!1t`4I z391L>*DKRN!=sTb0x!*pQojVGz5!%DJ5lOOKKA~_FDFXa1DQ~jBjcF5-MFh23(4XA+y&aaQA{Q18_1XN?V zqU(gzc)h*{Uj73qht_*t6_7!_l^`*&5%WPtIDjl?!eRud{+`UWsD zTmfQ2O$Cp3gnR4FPp*iikH=s|NPIW zInE;Rf@kKR|B;8`Md1|V6E7m+2Kj>w;s6=631m>O1IXbF?I7=fNBj#wDqB53hw_3t zenOy*-%=3wUvDqy9LJX+0}l80f+qr;L3a1<01Y8pfb>D#-lYQ>eRwx%uf1e1->>&M7CqNN&;icLnQ0&flDF;&8nuF>y5cgki zFDSXcwC@4+DWQgSfd;ybPrO(@5f*lHK_-WQOlAO^JmY2VY*2K8^&XrEV#a_1WgD0Y zj?dL#CTM{C<+#umWfP{vL4`kr}tw;SZ%6)&%L zBhpD1Xjaqs#EXqRfBx@KsbUd$DT3AbUSE-yimf3194{ro^n;gztq60xK<%3xkRe|{ z;eP%Qnj1mwp;(Z;u4}->7U*Ek=F~O+K<;wwMkHhP7hYKh^-En9?1B%Z>-AL{S^^?|s^l5;?m>*pq*#9k1|F5r}(mYlpm>HP>u-5pS7RYz9`F~bgv7^pP+t34@jQ_ zNZb`XT`M=`@$lu}U>cEC0mnR_gM?mTq6tD=qR3}RP6p(rjkUPHbNAow#d~kYfLkcfY zx`+YkvjFMakFF1tA9i&jsR!jB9gun+P`d5Mrd|kL{hy9M|91$0;v*hY{e_ououKr( z<)s+1K2ZKR0;(v$wev2J32Q(ultniI<}(Nl4{uQaz6GS~4=DVe@52!uaP^>Y2mz^& z0maXDg6cu_g9=D}3CR3*Tya7uuAa}iK|MP#x1du)c==wnU?*)852o#}k z7lLfu1k$;rm_^{FD7sFF|3UFJw+$4Y7hX<9j^_==Ctj3*bl(B#zP^`Gc!2V$3rM{{ z5vcwnO1%h3y#+{pIZ^7Lw1LJ&LF1S11l5DegDoKS79jVF6Q#Zdr2YrU{O5a!@oxx7 zeFDh++lf-I0#e@rQs0hCeXp;?OD1r9@Vxv5DhFK;Ak`}e{(<7_Z40Pg0ZB0Nw?HbK z1Alvcue`hhmVl+4HO41iY-;`Ue+LgJ1VnM!2uTMp5>$UQf$PCLFRMWI!%PFsFQbxLjBSGT{cOIl#Ibv^c2-)Gj#(uK(t|ybmf@dci%L z-5{Y}aL;A~n5h9$=++17J%D>Q*QyX@To*{h_{0lWxHZ-wYqo%_nYRnnIk@mL3nT~g zIw&k9KmuSl@qrXi04Xj6E57p579YVG($FdMC(BcV4cq2NfG9UM{ak1cevK zYqlVz3LvEmph_)310B96UK$`*pP(+05J>5tY8HW)r8|l84m>@8EV|MJY8TXk#{Y2X z2K66SRUAM4R;Qt+Hw!+N^)u$yObrm3W*U{C%0vAQS3rKwm$UVz(sz(`L zeF6$zSa^fVYbKBhHXsvHv6}$550oFSG=gS=L7``kT{Y79B*;HYKe&gZ2bo_2 zQqKc&&GqeQ;e_FTka`!8`ZXZ)mlLI41f*V~jz!>Q`F79}U(kFvXlfcdTX(DpDc(Tl zKWX^$f5#V)d)x_{5AyF8ka`!8`Qk*WZvm;#0jYn!4VQm?KfIh)g5)lcJw70PCqVkv zZv*9x125Mh=invACthfRlq>-$>A__*I7mV1^;ZRw`JhzsrXDobP!DSVqH9J;4@W@i zIzZ~w(ba(sM{h4q0jb{rQvZD`F8{((Cn)?=KW|}8@B86pSuv9PLHcw+`W}Gv z^`q;9yB`#eEFg6p4J-mL)6vyoxF6L1x>EP&|BeKZdUKrWT|Wf8(5gcjzXUZ6W`eX@ zfVBSEg6ws;dqDlB5|E-5AVt?v6u}&W9G;+YLKl$w3n2B&aj8erI?5akfzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC0ArRXAW@p547J(O;Ie-3Jzj^T~ z7jf4Z$a^69RUr9?Sz!4~Smf7$6T5gVRN@|&2eo;CD z14Ck7eqLp6erYiS14C%AYY-^B0vv;bL3CiKX9$S)^Y;$`(E;Hu41PYrU@_-#7Y1jS zP_VeKw+lm%uM0zvpBq?zkY9*DNWF`zk1L1{at#5C>&GxK=rb@dz-Y&S0I+;;h(A~! z59#y2?3ImXaL&(KuQ$jscx zEG9EAIj1xwHKwApBr_+oq!MN!8tu$r#Sp^~z)-}H&ydbg#E{64%b>vE#*oR7!;s2Q z%%H%a!BD|q!C=Oq$q>Wf%aF;C3|3prkk63DP{N?V5XO+nP|Q#Y4iN>0V1^QgQic?U zOon`h7zQH-0|r9|bA}iOS8&**G88csFcg7xq%y=XgfTcX#4v;~n z8ZwwL=rI^Fm@?=w7%`YJn1jg}aQG)PpD>ssw|8q#(0^svxs~ zupnyR!^eq5;Ij;*j00H?t{fN`7+9QH1eC-W1foS41X|P?1f=8`1kz<7c0{N#2+Wmb z5U`VA5Qr3H5U`MA5U>_x5D-^n5ZEHXAaG3#VIIiLGtMjm3K9sh43HoL14Du{i@-#A zgm?i|+`@rHV5S;EJOL_RTv7xo^NUN9ij#{n3rZC7OG^~;(-evl^U_nHYG|JyAg+K~ zhd~X8`~XV7pt3iQ0o2;S@FHFTkX}eR2`Ljn^*}s0N5D+9VMt~Gm5W6TI#BUaaIR1Q z^B{U*D&iSRz;z9%#4ct)=(JEOSm}(cOM$@-Tt4SB z6rhyg3JlQ{?PpurAnTR>8rLP36UCcNd5oS2uFU!stbT9lfWT9lfXoT^Zk zm{Xdno0*qcl9`y3S(Tci0M(dTl3J8ll3#@E2SkX)gX?0LPvRMp8S)wOz`l!T0EIhp zO$Q3g9B^HS8tUj~K-xVvU{i`1Fyj}bK9eDrp#a=^0L5}8I7U$87!+F|461c8V@wO# zI|SKE;1rR^kjIb@j++#4{HHRcLFqh(WQJ4*1!#+{lp&Qt7u|&|*m;DK$BnRkaCg$YiCntiEg+hLEa%oXfYKo3Rei2wR)L@X-l+@yqqWsF#6isvoq49|gCs6u< zr5VgHP+&*`*L8{D+7J}3B@7wh@CAh@a*9%5C?pMzSFc?_VOmdudMP|8rmPy~)E9k5stg8~E0epGiu>{eg^ zr3Q#hK0_r~rzS=&MGGhbToU3rvqT}Y7^N-n z;LecBP{I(;P|A?UP!29<3&5pG3PU^tte*zb1L>22+V1J#Tn|bwpf*_%LmC4pEtO-5 zb7XrQ8FIktAazSBxLptOHMwm(kei_Cq&PJ-8%qJ6SX7i)2~PkZ^)QU;E>L<;1h+8> zmEN$L*O0-0!HB^GS|7$Ugn>gOlOYXk3aHPP2JX>-8=NppvC!!057Y}vWymJ7Bn9<} zL4CA3nPwtK&4qaxIVyEy5n(E zVp>UR5hxeKf{tAGB!YX!l*1uoE}-~J z1CK?3Ml3)h4rxfWK4@eDl4nX762UPH3gcodB>}=MXnunF2NCiJm7sATP)@~HQzAkR zR7*j4#SEbE1?8m_EH23?DJcMr$t7o$=4Gd*K;k?twMaKLFF7AHEXKgVV5Pvo08(eA zuMeh+K@0{429J=CfMA7!qWqHlVtjFEb{I=X=T91t4902&Joab;itjca!}~92pqAuD4?V^>Setdv8~pK^sddqn{9Zy9HF&f=2jL z!DHK?`3&Ov&bbVU3C%>zmYsG~pRkMNCz^1znC7BzFwnWw}+ zD7U~`fk*r>b2&6`;~&pN&umD39?f5%(i9O2v>ZVn3Hgh((PgBB zNF^qEy#*Sf1dVBuGhR(7r()(tgeS1%OT4u%vF@g%&dn??DN0SuO)5=`hm9-1I*1i6Ga%oR(;oqa8}89L+$AGMe4)k8 zz|P`<#vMVk6o~mwY~h37?~pNYkSU-QEuc|U*c=+DtqvL`1-0lv>z{_>93H{=El4ab zK_1wLW<_GsC82N!jl+P{;2-H{V8BxkBHGbt6(PCh8MgKZ{t^umARvE0%B8_k?i1Ut zL(9&n-FoQ!EO>$iv|JT2g8|c)S6q^qmz-LRF=vYikD*ac$1^xHxJ4BvW2CWGIVbFXCs0;)3azLvtL38$?*-Auv7$gGtQ>epWzyJ{ejd4JFWS})8 zpmJrnW6b#ng#STfG3a$CWDO%|P8?JNAg>a_-p9vQE`xS(fN}@!{1DFoE5ku+-bd%( zA#0@}_1j=A-9cp`41@AfJcBDk1$5OLXtxgiauRfXw*q+n7-_{ma$0m@NCl5Uf=2do zz^h(C`{Y1tq!I1}_3=^n9wK^Kpt)91|EUOVT^X#+l9^YWT7+0nguT(iz<_mq%V@g= zliXdSbNQ0?IkqW)4Q%Ex1Ak*3!W2VL(zcB|EQRr7UW@1+gRyAC(;#)U;dO9|4>Dy}RpNzGL+R&aBP4|WX+_Kb2>C{8T_9Xbcv*2z$ungc$G z1+q1$40AV-COV-w_6&~{*mF`2M)Xh3ekhS#{V2+Wa#gl%|Y zQC?v+|2Zh5(SW%Nub00@=|g@8`FzGL6=hr3Up`4IW{2G z3Mq*tiQq#Xz)phhB397I%ZJF6VjVIa!qT<~}yOetEPffh6+`3jJ%!k__45_zS$NucvY(iD;^OHzwL z`30N+Gm90{!KEAM{G7x*@J{&9l!9Pz=CHEzO{{Q9EJ*|%!Wf)cl?qNf&~ymajy?TC zTn1G~xAY3Jm4PA0jYXhW8Io?(tYT79V#<aC{8R(O;Jb$osU|qkf@MWng>1xLLoU3 zRI|gY_EONXsX3Jji3&xj#icpm0|h}!KrThnm6DpAlUS6Rq5yKZLVjK<*c_0esYME?niCZe>xE%9Aq>&u;>F`_oKlY9(;-16S)xL5ZemUj$XZZ+ zT2fg6s(FhQz=w*ZC?qQ6C=_Sp zm*%7>sz%8IIdU3Jl5&s^Bw|br}>GR2k4u1A_S-bP#f0VlH@>Jxt6uKczG$ zRlyG`%n($XryGI@AW-w5v?x_USv5sLR{?ZTGc=+haR3i#g}l_nB85`uq0g|0g{lQn zs(MBdppFVeUt&>eBCK$P#T+!v6r~oY7J*8lq)JG7h8IMc#R_oyK*wf-jD=&6fSm#Z z0~e^pVWnULlHhVg9QFro!hkX#ETg~-1|3NQQVzykpq2_$gv&7{r6{$y*h;~m0xStn zdlb7LW*nSWEmkd7El@31tx8cXRs~^@KruYT9TB-DvseLA3xKl>$VWs}3qk4D--3J=9$AfksfZN#GV1=w$6+h5!Z^ z1}6s4x!0iflna9ogAZ60=#*^GdC`6hAq<`jz6`EVH7*#fDX?-d0XmHXUpo$zA3<|U zpjJx}LnQ;OH3w?Zfo#X#nqy!9wR%9ayaf!ISle?!sp|1@)^n*%ot3-_V_X6 zgHLk=g%s%QS(g3IwRFffRKupbM9hzSeB0MM zf&C!u0<7S?2V#OTsIdrUj1r?EfG-4C1vr>k1w>A;2v}T)okdRSsq6U6A0BcE2U!GS z>>>3S%txRsRsa>NfYKm!F!}%g|NjTE9T*rG(Dj1EL3qVM7J)5Ly&ygagUXK+P_Zla zECN5EY>--zogg*HW+UroIfQT{vKko&gg8h)2!qTrfQrNH0EvUncL$YP0f$%w0-*9B zaS&!@U|>jriZwW}2rO}65%}Q1BEaIrBB0@fumhwQWClnNvOAE?+j59SfElEKfq?;8 z%?YUaP$@74GV2ah9Gjhg4zUP;!VRn#bY4CK0|V&nd=W>4n_zMvJ2jx<7LF_eF^((( z3!r>tbCBJHY>v%gM86zaO#{>nm^~mGxC1pGq!)%kW_^H)kF*a~Od`2?gFWClnN zvR&xrf$nGksoQgeMc@h4T#z0R2HEukDkkEBJN!Xoew(8Zvq0enQ{&6Pz>otq1Ed#*L1r~T z#XF!hOg~5sOg|_OV$%;&lW>$p;0RPNh!4V`^6Cau?1d|f0J0xI>Otukqz>79bTdHm zAl!14ML@+3;wKOvghA$8K*c=VP|XLa$7Vjd86a~&c*#)~fflG)AU+6#%%1@jTY+Xi zNIf?5(aivv1Hwm+vIsnZng!y6Feu!Az{K1kegmlk$$>C(xS;C=$%F8Nqbve8P`w~N z2!q@e02PaIN2GO-T9BO}HOOY8>j%k$Fv~F(ff-P9KztAeg~=MI*dBKl0c7(*>Oppc z)FGRXZU#tx6q6SM4_uiU4g@hX9L{HEU@l;0&?sPL2rXb{m{h>baJ+z-fu)d{!KRRz zp|X&f;c6i>18Wg8gH;hTLwXT2!;~UshKoha42;Fh3>C%93_psQ8JtU)8JJ3$8Ei_K z8D^I%nT>0m>IaLnHfB)nHid@nHj!SGc#n@Ff%->VP=S~WoDRA z%gk`1mYLy4Ei;2c9Wz5j9Wz5m9W%p*I%bAXb<7M#^~?+j^~?-2>X{i1)H5^usApy{ zYG7u_XkccT(ZI}bqJf#=LjyB|LL)OnKqE6lLnAZ8hDK(F2aU`O0!_>e4o%Dq1x?Hh z3!0c2E;KPSFf=nW7&J38Bs4QKOlW3iIMB?@@S&NRL8FD4A)$qtVL}Tt!+{oNh7T>w z3<|Bx3`wob3=>+J84k2EGkj=eW>9EjW(a6wW@u<*X4ufi%C!%nXk@m>HBhnHjP>nHlbNGBbF0F*EdbF*BU)VrG!) zW@d=*VP=@$!_4ramzhDJkC`E$kC~yNkC|aZA2Y*)K4u1ierAS^{mcvk6POtyCNMKB zoWRWRU;;CP#6)I>fQifuvnDb#+?dGBz%YrK!D13KL-8bLh82^T87@p>W?-1i%wRB? znIU5`GsBF@%nT(H zm>Gg*GBdQ#WM= z%)Im%XKn46pwyhy#NyQAn6O~b)q)ikW-&>nnK>!C!EU}jF*%t@G2jK_(1jPeDS8Dd zNnpo=diEd;;;4a$Q9K#~I6@#?i9vuEj6?gV@Ms8($PnO?Vh|t(kI29o^)%KHP-2}d ziB$qB2pZ!7F$cRkP=D2-npptkPEa4YA`H?W2e};?gXBPbkU9{J3&Z>kGWS3&!rTi~ zGM5zlKOos35RTtpAon)ZA>7+Qg!%v^^&1GNC)V8~O&uuQ3)&Ik{v!f^JdL#Q8SMTA z#h*e8BK~$n;g3I%daY7s0TBJO2txNj>3Aspw-6%kTL7W8iXiixMo@X3LI~dks&0D$ zgufrEenUQlzat-_KM|@vvyd6QKC=+2?*&xdhkS_mZ>V~O5{Q0{5{S3~ly6Z2F>fc- zJqMxg0nwm--$^L{4b(kfpzZ;R=h zklzakm;-XN2Oc$`@?ah`pRR=F(=CO};5p*`Q2G=!-&R5MS5pBbe|ACnAR1&2j9yR- z$;Ydq^tNJ%c?XM`!SmQ>ikSsK;eEZBSpejhN5#wnYzzzxZ;K)MJiHX5KfV-VPdbzj zqCxh6XpsK=Qi%SlQi%RmD1QR9oKu6^uU8B)#|%n4Lfzp5bw@bV9Z66=h-PPCV915K zCmUK06+`K|5{Q2~p?nYxa?g|!h`;8SK-{ycgjoP&&Q_@Sff8l`P<}pL!YlwKYAz_Q2NMQ`{fBx;Sqe(SI*GW;H;}tQX%s}`!l1YZ$q}m#G#?03 z55f-L7{GN3$Q__G4x-m2vViNi3H6Zl15yXWAUi<$`1~N7a;Ws4G8rwh)}P9q+TMKu=xtLkZ^Z{w*Nu#;z2+kD11R~ zQ$R{rEd=y{)IUJ#18gCnp4hMlnR@}LP0W)**v}3Xh%mJwLj8goNEjWffs{$NYaseT zX)}j_eppx)AoUwJ5YR)4-xnbHogk(kqdMKU`pX4MHU-TtP~5=Of@oyBWaeVp^#N+vgL2$< ziKIj9Vn{~~3w(B^Z(#tJ%^){`;sr#*Fi0N=$E34>$3sBjoCCF^29F&ezr)PHMw41b zgWR>D9Fk5z?%~Nm^&iX*kQ|5&QvU&(zL=nC8RT{w0{TFDiFG^3jsr;L@B#v66KgK9 z>Ol5SK(b#UlW>>>AcbK70rjM~qX8P$9Y}e31p)IxVU3*TpWeev^G`A%`Rf4Ge2^X( z2DuNEzc{iWY5ohEeXz6uQ;%%d$=#TC1!O_&GN{Czze=EXC1jz7HM(7(xOq^CNUwX) z)Wh5a(+5&701Z2k*c$@sL4JpsfsKacFOVE;Juk=(5FgZ@WfF$$-v#kK)gbJOY>1yg z`J^M8MZg8h2dM$AjRVohW+)0l^bzY8YO4derC}l@t|m={gf+9SrT@W)`yCD4b9tgj`2T~VK?}3QFfXaV>(m$Z|3aI{FT@dw$pyFJe5Oah& zA>vY<5OV@LAmR}n5b2OaTe)oXXJRw324-x*_L%=&r5&K@WCApu%!a0uWl;J=C!|k)8Jcd~q3Zmhd=L$agYZs> zx$#hOr*264@`BQ#-4OW%C_fuYmvuw>=#5Z*50st`r58czwcU_D@s4h00d58chQm8fS1q2xw7>uEOyB=l%VFm^U&mLw0(Egzis5mT7QkzCD z@28tH5p3f)6d>9-0R@mcC7}Q{?Sj$<%$=aT1Y={PLFpPKj_i($#)RE*0?8dWpze5q z#~sM#H<=PPU!xG=Pm4l`KRpU@`xBIwFHC`yuOR<-ps5A<5rjc- zpM=Q>HyM=R_Xo&L36mgh%9sSv2Xa#a0ev7hf%JZu4AJ`oY9~nV93u5DfZ7KNyBh@b zfb2Q|wF9J{qm;0}43NyXAfO(({J3+N5j?&O@(ZYr1KF2R3TYQR^g;aV0i{9V0K=d- z0;SKMQb>7Hfo3Pj9GF@V4N?!HabZ~53G({{B)_wi5%&9q2@rSQn1F~=69W1`?m!L) z-~EgjW0(bHkZ^d=3o#$02ZllZ0fpC;GKl{h(Cnkc{|?YLt_QSC1;q_ZIsR|}xeF9_ z4bZUYKne>7BJ?7M#jn$h1nbV4azvfdQw|A(IcWAEhXKfK4p6swOn{Vk0Z=!B!toB8 zUXXu47~Kp3XqbS+6)NzD2`G+0X5hlGG>7c>@RNl7UQvPYdq)Mt?=#Tc0&*YBUS#v@ z9z*gQXuc6N{{T{V18N><9zvlKV%`fZ=7GboACeY5`XONmvICSp0{S6!M+B5kfYS9) zx*baQBk2R_MaIbP)IC8s92zPS;V=Q}?gf>oaRTxm%noGpAHQY<@BIe39Tfi{bq^{b z`3Q0XtkT?yP0qGY+&w$Knr9t^18WesY z8Z@_62-OdAKRO2a1zil856cVGRtNHz!%Rr{FPaJQ-zq4-9Lles35gGoU+z@nj}MTV zHw4sx!ukpxHOT%3v5ECFa{5hJ#)MH{EU1B`Uxir^e}c@0VUQi5bbh1;l5RKDp!yT! zW|&$K4N?!HabZ||fx>sgEJ*l)%rL1%H5aBIBnM&>Yc8^1=g%SB$LOg=lm&BYA%0wg z<`$S6K<)s!`}AytyWgOx1*rjHkRD>)3{p?5T4L3K+&Os;B>fi5LAZBH9qw=jnGJIH z96V}3ZUtfFa6a%2GfjP|gQTeob8x3AiF!zQv(%%y3FHQl9WV@X7mSUKhNUTLs{@7M zgt>^YyMg9Tm|I}(CDwkBxeD_T<{C7h`k!2L|3S|{*a4+M{4!}~fw|IO=8d=-d&F!>8e@^e+01y-q|%AY`z2kHN&i7I~uO}guFCZE;?wqC$(Ffx5LC-$@05tAkVhjv5VhjugN(>C|6d4${DKRh{lVM=s zm0@7mDaydWr@+7pWl08x&x#BT z`brE8W?~Es-U18^+tnBtKqr$02{SP82{JHfh%zv|mSQjLLOl?nrcjw%B~yC?(0d0_?y4j~4H zGI0h5X9)&|6H*KevjiC!eyTDsERtYgaFb$S$W>)v5D{QtV3TBEkX2w{crC!dut9`@ zVY3(m!(|Z$1{PHYhIJq{QVb0KVhjvjG7Jo@Y77j&l^Gb=Wf>T@N-{89mSbR8B+S6D zQHgkRSs?p$r4V1tA6oDMF}4*vl|5{1jwhxFycO&@RQma8;av;j|(H!w(q-h78c5m?{hm!Qu=ICj=N6vSk?< z@|77F?np5(JeOo($W&oqC{$!%*d)ZjU@pqQpe)6}kSfW*uug%2VW|`YLyZCh!*W>$ zh8|G{hS@3%47ySb3|Ax=80-}p7#sx{7{cTj7_Q4RFwB!-VE8D znt>rhkbz-^8Uur!Is?NYX$FR7IR=I-5e5b&RR)G)6$XZSVFrft5)2G2N(>C5A`A@i zQVa}h)fgCpg%}uKDl#y<5@cYQ-p|5tq@RW1eLo9>(gYR;lL;&g9TQj>W=~*Y_&kAy zfqxmXq(Q$uwgn2!;R@I49qiF7<6W^ zFoeutVJMuz!q7K^g<t?Yq{GY|b5ILKLVcTpLhC8!a7{1SDVGx?b!k{~cg~4ME z3q$f87KXYxEDST}urO?y!@_WJ4hzHkIV=p^b6FVF=dv(3&t+klGM9y6(_9vY3v*c* zKFnod;G4(7pfit!!D}81L&iK7hU$4N41M!h7?#arVc0W|h2hdX7KV58SQxnGvoNU4 zXJK%e&%%&0pM{}*J`2Nv`78{t=d&*l?5yeZx^sI@GWFvP+!Qx z;JT27p?M(-!@jzyq2>tt6$?Yj zDi(%0t5_KBtzuztUd_UgzM6%hV>JuI^3^O1S68zzn66=A=w8FZ@OljkgT`7GhJ>{& z4C~jjF#KH0!l1s6g<;}47KZohSQs?dvoJ)jXJMGIo`vDodKLzm4J-`p8(0`lY+zw{ zxq*ejYa?3-8^3^%bbByM71IJk+0;o&A02K&t{3^AKo7_Mywjp{KnFflMQ zurRPPuraVRa4>K(a4~Q*@G$T)@GC@?58C^0BAs4%E9s4=KBXfS9pXfbFr=rHIq=rQOs7%&(z7%><#m@t?!m@$|$ zSTI;JSTR^L*f7{K*fH2MI50ReI59XgxG=afxG}ghcrbV}crkc0_%Qe~_%Zl11TX|L z1Th3NgfN6MgfWCOL@-1$L@`7yA%#4*G(B!JI7P6nSHn#PdM0J?=Viy@mKhas0C zj{$W5QXxYT_}0`?hBAh7h6;vChAM_?h8l)ihB}6Nh6aX4h9-t)h8BiahBk(Fh7N{K zhAxI~h8~7qhCYUVh6xN48747IW|+b-m0=pgbcPuWGZ|(v%x0LwFqdH-!+eGX3=0_+ zF)U_S!myNK8N+gh6$~pGRxzw*Si`WEVI9MIh7AlG88$I&X4t~8m0=shc7`1cI~jH{ z>}J@*u$N&U!+wSX45$Y%=o;yzB+w$Gyk$t{jfVfHFXiN%@8@x>)YnR)3B zE}`}+p!34xONtURONt#_9EwX)92~;zRUpS>m*f{YxHuR&K!n{Pen2r3VvT13^yp)_ zzbUl~Vil&juCA`Gxa2%>Nd!2#;F5y4-zT#ebW069M3Dm$Ee7!^MTtKG3gLDc8aYrW zumZrh10lzNfgv>6p-DkJ9h6#Fnp#}qfD)f*zQw8r#hbWPP?XZbO?*>JGV)U#Ksm<% z5_j+b!xK4J)u1^SOC}9B2`))2DJ=$DN1e!ky99seLLGym2)lbxlt3ad7<_LEIKn+0 zT^+(rLMjVV9pI4;kq(Alx&&4RDv`j(L(>HgB@p97k_$j-I5jV|2(B3}1JQ{l4!_F< zRooDN5eYWa5II&MBA7ll1i2?OFC8AZn3|AMdZ?qT1H>e(X%r>}jRH)g;I?3K2$J^^ z)<6U?0vuuydT1iFg(O37zyXIELL4HEL(>sb+n{D+qO^e11+<4LaJXJl5Y5P zLfQ{Fbb8>^38~p}==8;>(+{5{Wz8W{OpXsnYiY%YL)ug*O|AHFcv}mv;lYsB8?<)E z5iIdu_{@m+#w&{_*a93OjVY|w1~|rtLktErfFm6p9pPb|SzJ<-nwX2L%?Sw(N5?Qw zd&n^iQ2-f0iV`!dNtMDDE!e3iCkF<5 z`*?FmeFAQvz=Y5nG)UrDRHHU#plaQ)Rk{&i-^aVb>pG;07A)tOSLuK#9zcFE0u>rg z4E9d2J4|uNgD;Tr$S*FzA@7%;mx@CQa=WJkx~BsjUF{v=-3O?@jT{^u!w{`HNLwW_ zCB*?EkKRCxaC8iV$bd@!CYJL@HL$Qa&iOkrZM?H#jM!)=)F3#03vU zL(>en=7xEMv0 zIlwW(6B=Lgw#tVd0n4rqD-Ya%_dAdeFnIe?Q2 z@g{*BjNY$=dD%HXH#aelrri;kRT%jmoHbD@Ye%Orm?}df2jo^nacT+HD$LO}A|528`sNn;N*^cSCX2ZT7)*j2J0D?5&B^IY5D?*mHSBdw`FHUmsKvuxOfHk~8i-%|(ULZTD5ngGTIjN+k z64Y>kOiyK|;ZGiD!3K^+Z06)sXbyDD7c?-8VF%KnF@~I9ex7rFL1ki6PAYgP1grop ze$f~C;825Z4N4k89T|j}fE*4bl?AEsnR#jX4v?2$82k-?K=y@z8@?MD}JyrO!~pX z(C~wWA?F7RL(~rz2Dcw93}!!A803DiFbMo$VPN^e!tmxh3&WA`EDUSDvoK8g4%&lA zc~B;NW?``S%)%h_nT6raCl-bipI8{?d}3jk@QH;X=MxKq+9wu<1$S8(cHL!RxN?_; z;oDsn27!Al3H!M_+d~!xr-v*IeGgd}&OKyd;CsZv;P;4yq3;n3 z!<9!Y3}TO27{VU2FwA(&!f@j;3xm`X7KW%NEDZCWurNG$!or~Rl!YPXDGS4jrz{LF zp0Y4#J!4_Wd&a`B;Ta3VmuD;tCeK+I8lJN-9DB~f!1IEI!RZAHL){A&hJ7zs7?fVJ zFm%0SVL0@Xh2hUj76zkNEDUpAu`pbF#lj%+nuQ_dH4DR%*DMUrUb8UhykSKo$XgbMkhd%h)84W$+kbh!?t%U40qnKFvz@TVTgOr!m#Q+3&WT9 zEDRPOSQyGaurO@-dz?3uDdJ@pYE_QblqWLP`Jawz;uU&;n{5#2ASI|3~O$)Fig44 z!Vq$sg~8%B3&WAyvhhBe<<7$$sUVJP{=!VvV0g~8$*3xfzqA4vaK7KRUBSs0#tWnsAW zm4)HVR~CjtUs)J-d}U!+_mzcV-d7fe313+l+P<VX*kh!eH=~g+c8r3xmv87KVSIH1UOnLG2rP{=^p#Yi=UUOuEa$ zaN{xy0|S!Sl)EepI+s}(=3GOlTkx5M;lu?NhAB4?V#mI)FdVqV!XR-AAy)C7g~8|rxnrZX^bf=*UI@7RHML`Ot1 z$THa58{&|QVX#jvg6wTZ*{McUpF1LoA&9{~Dzzxz0lY;3)Dwm7L*WOx2RfMz5(e$M z22IJkGuYclqKc#K$c%vPi9l5anxtk(Vz5t7Edj5qMwW%F^<@ZWuun<_t)WAevj;8j ziie2BC+FuCm&9k5q!uND4t5B$SAoftCFVGUg1DKv1v#nlpw4NrgD0dviA+XBF)&0i z*n`&QK+FX9pFw>}Gj~poGkZpl%=Vl0Iuum-Z%}g%JFHTL)&r2yrgg%3&~_&H-YFCr@cACamBl5gxwkb4v2IFC5LGs8A!K3KDDSQzX%ddk&Y3N?RC>Z^7*AD@%d@- zMTvRo&;c*Fyg8%2y;Ek2Lr#8jB4{WCbnHi=uWS^K*o>*BNpO>GUpI7FPoS%}KTvmcK*anIn&;|ttCKmh5 zJO_Ifs1gSkm(Y0Mq~emqlGG9h=vgCyPOct~j>zHxPA-OyjsZ?C0gf)lj*gIRs0`LD z_W7kH)GTo7p?kux?dVYS219s^IX8Y9qG#ru)`ONldIf?1T znDQPGQ4DUZ_T`x=B^j8q@!*{2ibLMfHQo!ndy_#Qlv9v~#)%oeh8E@wouIr#qF(61 z2@EHgLFH#oezF6J20)58Xa)eU^k$gLVqct8np;4+S&putP`u7!U!0y=Laug(2Q2o* zd8rj-8}N+9zPO;2Jnf(){t}`el!+n3!jM5>f&o5L5|aeN1^z7d1(diTg4sTmA}=r$Gux+w(jv)$ z;OH6ws-F(A*cYdkq?4mPz|qA3T&pHB+ow_#3=D5UWoBMVD#=;G(-E2&K7dWg%p>1~ zS6~wo%MvqlNDd7rS4jEi2})6=xdkK}0F8~~;MgEbJ190Bq8N@*W&$`qgP82&1M(;d zOMkEll!fJAM*Dcryi8CnN>V8U-3!d{hXVZppazCPfTM?jfuTbb1A{lKeFdnE)L@2EOTgL?5Zw)K!2mjz;20X8nGY(a9Ri$O zJU|Ul1_LI0&}ah5{eV!&nI8=8O!o1id7yo<@IWM7n1f3^mvNd2IV zp^i>r@V+6a6xj=|D?vVlB`x9&3jptAhsEh#7W?9i{PNtyyh@TAwcut)L=*!nt9@}L z>1|?PNIzAX)xI<>C%>H3aD{4TxX5gu2};@cMtY3G4B+AC$RN&QpIHnV&H;@%boGFw!qecq3>qK67&WnXL_~2!6vKV; z%MD1q1Gm5sbW)HJ=o~jt%DF_oxsHzDob-d)J~KTpzX*|#iOt54f;T%3&u|H%HYKsL z7*lb86R4rY@D!pZH$Sf=1GlO!Cj0ns&^RS7vp|PEFm%II;WiDdj)nZXAG9xz!8bU} zIl$1wzy*9PvBB`Ju}-}vNw zkP0OX@s!l!lA`=d21bT>=ZcDujH3K)=jZ0;=P{^4Z30C#cs*J?)TVgQrhWznJ%;%BvgD!?P(b_U zr21+Luxi- zd}dx*VoqjCd_f|}`6a1E3=AR+@y8T_poUI&*v}xB`Om{aA}jigHr(7#I$*WEQ7nre~Hg%QF~$vOpvl7(`J+ zDV%}f9aDU9Y6i#=C8Ljt2`eoMMPihOp9DOHzw+ zGxHKlQW<7KTmlkcn1x`+r!shgLOQviGQOCB!4=F-ECI3mAn7_YADYnP%Zdw%GV@B( z;)@whGRK$aCT6D=B$i}=)IMd7FE1|0$t-~i)PrIKYG!G2Q3+^-Fa?~i+Zdcd=Zis- zIfFi|<~S zpBe_%6wbg0?Eb@KZG+dtOAJz6y?KCf?;5&V)iU{NlhwEPfslhC`v5`Ss2X{ zl$cqZid5#jVD>G|DamxIEJ+Q?56?_VbFUX3t_MC%?!oHL;|$C>7@RGaxg9 zOA?DpN((&m((=O@+*krjQ;RACQj5~^i*gh5l2gGUpIXEq22zV^pJxh#6q0C22B`S( zOkrSn3K9(l&lrNHfE|lLMI(sCAj9aASq#c35XI0E&^a+Dr?H<Ul+3(zTcywtH(d)Qh2oOLyp+V8{Jd0K zrOMP|C3`zwE}O*S;?&%voJxg?+?>2(Tcy&XJgeg5jMUu3V%=Qu%GLa|65ZtdT&u+5 zT)i?wC57C?yv(%J;u7e&UJ%>tc)1i5Y)Xnsi%US=Rw7L^Rs!o&P_QXZO)f3UEUAR@ z6%=fWAXk2+rUVpamSyIorl%IeC6T3F!NWJ1`FTF6WvMv|IUv$jDY4iyuPi@1wMa>! zG}AFTIkmXhRw*qpr#Mx~&PE?@HmYX0`A8}-Y`4)zajT6!+|!`o)Q5$q9jUQ6s(v&C zhDit*fJXTl7<%ka*#EI-U|?{7@Kp?44EzjA3>X5y^#OyMZMtol-E_MbcK__Q+262d zNMK;-VPIg8F$gm#H`rw0W|(f+YB= z7=AT0FtRc7FbXkBFv>AnW^~R-+1Si@wQ-5b6_W=hVP+G|=9sN8+hTUW?2H+kxvqJv zd8K)ixtc|d1&5`BrH^HrWuN6QOG#@7>on_L>-W|ow%2W$?cUl6+8+XiPXnY9lsBk1 z5H$=ij4{kGEHP{_>@l2SxWsUS;U2>ihF1*LjI519!FInlVm1ypW;gk05@MQWT4CB@ z`rCAx*#)yZW-rXXm@%01m?xMwn$I@hV}8;6n)yBRZ{}PUu@*fRGb}Dxh*=s~x>|Z! z23clV_FC?-JYjjol3@a*zAZDGY&Ok&m3f)PWD7H^2&?5*_pL;&E3BtmZ?xvLQMOrR zv)|^XjiIfrZMto{?FQRBwl8d-*>T%@*q7O_0QqA9149G@1A~-7iNR!pwFc~l8irF1 zHyK_sG%yM>iZkjk+GzB^=#5dDX`88_nTJ`3*)p?ZW^v|I%omt{GZ(d(VR6RdhQ&Us z!&Yaku2{Xd`eOCd>c15O1H%Reh8PA0hHpkv#uH6iOkbM%ng^N3nWvezn0K1@nNKml zX7R&9*)rI&#PYhOl$E(vpw()t(^lHnUe+nrd#vwSzp@swv9-ytDY2Pmx5e&&otb@z zeS-Zp`!Dtk2f)dbfx)27V2Qy71An6eqZ%W569*F?ldq-{W-4Y^&3~A)Sd>}KwraNC zV|~KX-(bH7WbXq8h7tw_hUErjhSLn!8y+$|Yk1jE z+{oCd-e{xIQKJt=e~dVcMU34{l1;9ezcy#Jkg;g9SYmO~;<^QkrHW;nrI?k8RistA z)fB5OR$eZ z%_7>O)WXct%aY5+z~+?A2b+A`jkbquneCG8mf7vLdv6zJpKZUu{-FIsklz>>8EP09 z7?=!%4fGA38T>MMX86l6&8W)gn$at;Eyc!*jQLGmOy-+hG0`_oG2L(a#njBq%WRq1 zZnMi~&&=A)XMt0Fqs2E%aVujhU#mE)4y!3v*Q~xa&lj$ZKO|F};mGubABKiTW=2j%UPc*4xkg1s6-I2v#>Sz> z`Nq?Y&l%r0<}r~lQ87_7bukSvH8Tq_OE5Dt4>O-+wZ-aym786LU5Ooo0V9J40|P^q z0heK@;S9qgh8GO)7+y2_Z1mMw#6-d5DcCPpO~05jm}%PP*v_}zZhOG?y6q2J7CQku z89RCVMEh1yI5;pegfK8Ls2Ri>2pcXl-fiq=nPu5$dE4@hrG%A=)oH5>R(GtPSTR|% zTk}{8Sx>XxWqr*$)F#blip>HWGuw3AXSPgsQg-fkX7*9`W%kGHuiG;OK;o6fK)|5S zV2QzQg9`>P3`7mJ4L_Sc2A5rb%%sfa%~i~`%p=TW%`?pl&HK%#n9nqyZ+^l2s`*3n zm*(siJQji$;uiZYj#ylkT!WN=|%UbPkW@6@s<}1x#n18j(uG z%);6t!XnS2$zq0uvE^1v6RVq60@gCt8rCM(4%R-_X*M-B6Ks~*DA+pK`q-YdeP=6X zS7X<2x4>?b-5I+#c0cU;?7xHTp1=qy{u!hUDh#$6d^NBzWH-_>>M=TI^w-G2_?q!6 z<2IA!CQD7t%;L-rnjJH{VfM=Gj~So2oVk{Hf_a{KjrnBr)#m0F-WIbgxGh~Q11w`K zGc0Q?8!THaJ1l#^HSaeoaqC;wFRi~>v)BmOh}y{87}(g`0(PpJ)&&+z33bQl;Irh)U#3&Ssl3`RUg z5=JUUX-4fv+{Ovu^8A|Jce{9dh69Y?HiDZ$vO$^QY{PGcZbl_Wi;eCWeKb-uHZz`S z{NDJtv8qXgNu$XIlRYLUOqQ7+H+Qz!W^vsj*OJZJ%v!)k&nCtu!zLM=cWdls+0D0G zVzRv)*?18HUTzm zc1!Fw*s0mO*az4%e1Mc2yoLsbHioRm8pbBZ$Bf?_KQm=FV>VxDe#QKOd80*}#UzVa z7CS8VS{$-CVKL2ehvjb@8Cwlo6I%z{YqmdaLG4#2Q1gyqo53Rk3!@056r&g5dT566 z4&x)nrVuxns+roG2ARg1CYvrdJ#5Nv=4cjb)?n6SHp6U**);Rb=F@Dp*xayLX1B|Z zL4b+Dhk=3Nn87UrH6tq{Gh;8~WyZUVSDG%f*k$2t<6#qG6Jt|lQ*YB^(`9qbmdP&8 zKG{CszTAGQ{VeB(n&5bM)EOIQ^EY&TutY%m(u`;zbvkwNDlfcA~!oa}r z%t+Muvaz^HtI2AUGbT4oI88lFlTGKCel)c*t2NsUZwITHdz;6bgIcufES^|=u=r!a zVY$}wmZh*&uGKWFZB{p|o>+abYO`5t!)NPa8(^De+iJ^D07-AmM!`m=CTqdwzctM@ zdubMF9%Wr)-C?Z?&O7YTRL^9mVrO7yW0z*vVYkCh+TOxG&_3OMf&Ci$9rmCTTS6EZ z7+MTg8Jsb=VIX2?1#a6fHauYnDp{0`Jd84oN{r?i#T$1RPchzSTyL_%WQz&AS(({% zGe7eh^A7WA<~z(UnKN2wSWK|kV{yWQVFDz7RT)n--feux_`9*RiK|Jb374s&skdp4 zX}jra)2pUGO~uSr%mXdrE#6xQSjt#xSejV=w^FdyvEF8V%ld*%Bh-aQ>=_m?F@TO^ z{AeIxC}XH$Xkxg`^qgst8JoG3d9%5owV1V%wU)JqwXb!Mb%gap>u1)VtbbWc*vQ%_ z*=X48wAp8K%I1>I2b-@pzib$6b!SSL|=vKec}git7zb3`-ao7`P1t z3`7m24Xzp7Hh6CE-hkIo$WYu+*3i??&oIg`$*{q&)v(KOg5gEOYle>uUm0>3@fryk zNf;5z!4Hj}8GkbVWh`MLYocVLVe-uMm#LW9HgGw&$?}Tj1Ity`>#cWN9|rsRwe?5q zESr3rYMW-8g*MAcy~cWn^)j2?HkWN)+O*luw%uWS-gc7RTDwhlyX-F6 zmDso2_t;OgpJ~6#{+azx`+xQf7ns0xBAbDnfxbb2L5x9$!8OBIhHOUZCOIaBCY2`n z=9A1%n%^_mvI(F7}@peUab#`rb^X%5z9k=^p$6z02Ut`~B-)XWP)J^=|6})+ekVSaaH>*>u<(w^<6Vv)_PQtO0g+?S9xXd|(3C!x;uM zzBvdrn5|UnC>+_WO~BX%q-mOl3AE}v3Z-tEQ@Ux*Q{P!so6N&otnHQT+Ha}|q z!TgW8j>U9~6&5Efu2?Wws#@wGwU;JXPO+R}ImfcWYL3+gt2Qk z?xrcG?WRHI9TsOTv@JU=cUxYz{#uk?G^3S>~-v|>>cbw?c?p!?F;QI?VIiA*)O-> zW`D~5w*71S5BA^e85Ecqwt(7^28#?f8|*aLXK=;fwt=T%pkb6@qG5sIOT!+gZn2 zf3yB=&1<7=V`lrzmeG#a?yB7*J1zSN`zrfx`yKW->|fe57%(%aFfuTlH~4Sx%aGSd z)hHfZKh+zx8g&~@FqXRK=MVBBRq&-j4x3u8``IVMu3#io-?7n&Y4{b*`q7HpPh z)@rucY?s+xvv+3G%x9agHNRnQW#MI!Z86zmi-n-&bjyX7Yb-ZgzOnpd`NQ&`C5si8 zm7tY`mAsXjm9CYEm9>?#mA6%}RlHS(RjyUBRjpOK)l93^R(q|ES$SCpSch51SSML$ zSm#@pS=U;(Sa(}bvYu(Z(0ZlyM(aJ+2d$4=U$nk${lWUHb(BqlO`1)PO_5E7O}$N< zO|Q)qo7pytY*yNAwApEM(B_QIMVsq34{d~PRcr%oBWyR?9<;q@%VNiCCv0b8XKUwd zmuFXDH{EWD-CDb?c8~1d*nPG8XV2ik%y5B$fq~ti*`V8CrNJhHT?T@N(uOLAR)#Ky zzJ_K-HpUsoMaDcPStcT;Ql>{uznK0sbuo)HOEoJsJ7#v#?4H>(Gj($#^KA19^C{-D z%(s|dF*mVrvhcKsvPiXPvgov!WwF%al*LtxM;2c#Vl7)Or&~r@bxBY7St@igpWqSZK!yN_&1~vm7g9L-A1}hBK8|*W<1Rix! zGSoB-Hr!$;WvpPVW~^guWNcwu$#{nG zJmV$CtBf}oZ!_Lwe8~8O@j2rw#RC)WYS^MXEMcPmdOH>WhQG(Hks@&*=KUZgDIOSkExKUgsGgVim8^VfvK6PjVVI{GXoC;0|VHf1x%(;wDKZil&C9ex|!jv&<)% zpECbtu4|EEvBctug^;C}WxeHo%U_mSR!LTitZrF-x011rvM#rtVtvZ`fi;JXmra6A zt<5f*3pPJ&tZV~pb8Q#d-m>MgGqTIFn`L*%?ztU{y}G@NeUbet(0D=vGq~@~WuR{0 zVo+tU%HWm(lcAAelHnx7Lx!IWm5hRnnv6CXJu(t9b}}w9USxd9n90P&q{w8E$t4pe zQzO%G(-PA~rk6~a%#6&E%qE!~GW%qvWFBPRWxmV&i@CW)gT-14MoT-(1j}~Izm{26 zRaWz@)?3}Tvb3(V*=Y02R>>~aZj#+0yH9pX_Q&iQCNMM1VPIfTHOMm9Z1BlI%P`5X z-EfWJD?=e8FQZnYT~L=)8Lu+FWh`S7WYT1^$>fy@yQzw4lIbMVL#CfhmCS<7n#?wt zshAg;A2$DFZelUp;)KOl3wO&r%bAu(ESapVtdguIS#7tvV#Q=_WSwL^$@-A>RqIdI zN;W|@T{dfNUfBrQI@uQ4uCl#k%VcM3mt;2yG?%u4nL&VofnkZk5rZcN3=9kxm>Fak z7#LU#IgEIW1dK$CWQ=r7FW6kMxnaZbfEhHEzz|>rQZis1~yIfe@iml&=v++n!K@PgqL!yATo3?CRiF??b8#_)sT7sDThe+(InSd2jC z%NQvbnHX6Z`4|NlF)%PFurR1FFfeEs>KGarni$Tonq&3F`iJ!cn;%I{$Q;e0Kf#D9r3x+og9~k~H zWHFL4(lBx`iZF^XDln=rsxfLXYBB0CnqsuZXot}SqZdXWjJ_ECF#2O8U@T&+VQgS* zVr*j^Vw_`KVBBKdV?4olit!BNImRoD4;bGtzGM8s_=oWyV+Ioz6Alv*6CD#56AzOZ zlN6H-lLC_tlLaPAOm>(YFgaoJz~qO?9}@vn2~!zU6;m5i57PwG3eyJD4$}puJ52YO zUNF63ddKvE=?hZ^GYK;pGXpaVGaEApGY_)_vkJ2svk7K1%;uOaFk4}E!0d+E9kUN+ zKg<}+CCm-XP0T&a1I$CrW6Vp;d(0=8FEL+ZzQKHp`5yBt<_rNW3_lnc7(k)tV-R2v zVh~{vV~_w2#~R}X;}+u%BtI=Mt}*K{yJGghEW|v)yv2Ni`4;m7=Agdh9;*{pZ>+vp z{jp-P=CKyBma$f`*0DCRwy}1x_OTAJjh?y;U?J;!>9^&0Cf)_bgv zSf8=JVtvQ@iS-9-5gQAe7@G#0B{nB)-q;A(n%G9z*4QqvJ!1R9mdDP(F2t_F?ttAB zI~IE$dl7pXdlh>fdlP#bdl!2j@EB2weU5#JeT{vKeUJSV`#JVY?AO?DvEO5V1e|8> z*gvs1gaGR7LlKE@%&3E&L8de5YF;)du6;@NM z=2#uDI%D<0>W`I&b&Pd}b%Aw_b%S+}^#W@Z8yy=9n*^H-n*y5(n+BT>n+f1?k`*=^ zYK}}L7%>=w=5kVubBrsD7Z|TGzF>UA_=&NJiGxXsNsdW{$pY}W!5xzq@Q^Pt?J%8S zI>U5}=^k*;%figT%m0`2+J8;NFRfg@Hwj z#R`ip7JDq7Sp2YHvE;E-vDC4&v2?NYu?(?{u}rb-vD{#}$MT5f8%qW&0V@eB9V-*7 z2&)9E4672W8CH9&9#}D0b65*lOIRydYgijtTUa|-->`lFF6TgF;2JhQHfz8!@Wkeg zjfJg??F`#JwkK>a*nY76V>`ocf!!Lr3w8|P6b}mBJN7T^L8sb+y4@xQ4hC}!78nSC z%ijRQ0&tl=2Rv80#qfaP6~hPM@fA=B&S4~DWMkxD#BhKGJa&~}*kZWCki{s#Xp7Mw zBOBuw;|Aj=#yTb?CVNa+OchLROcP97OqZA*F@0dlV#dJ0AixT4Lx2`4fkrn+@n{H) OhQMeDjD`U25C8y$+CcjN literal 332800 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 V^}!8X^l^Yu{%8n{hQNpm0RRxJG=TsB literal 202752 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 diff --git a/Debug/sfml-window-d-2.dll b/Debug/sfml-window-d-2.dll index a7826513595bfd8d172fd95926d6af0e5f266a31..c29734cf109a28fe7aeb3b6034e415ab092de77e 100644 GIT binary patch literal 339968 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�mkij2Iah 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

FuP!O13cQn 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ཥWXC`a204p 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%0D6R=aVE%{NaqbAo%F~93cn-J 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 diff --git a/Release/glew32.dll b/Release/glew32.dll index cbce7da7692ddd7eb16880ec7b05e0faa8139c1a..cbe1d67b3c5e482ecb039d17fba4312ed0173f23 100644 GIT binary patch literal 389632 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxuq0I``E7}%gvFq$EO4H8%k z3=GT+4y+6yg&?(X8Z5%VkjKoB#KFXnQpU=l0W#wPD}w^e(;z+^voV|qhI5E#JYZxH z!J}HQB(E?DoCpW14DvdQA%P-A_K#xY0MD6&tPU?I0gy>kO~NP zU|?|2gD7K&^kQIOXkcYvkYZq9h+~B)fRYXj3*P%zw0i=$2Fh$A02x*zWZ2Q zbnM|XXU>Fnzv*`63F|K9(EiYyqQcO{!`5=Ll*NLhgu6??>Qucz4Tr<)SH=h8Vh=Z; z_#YR0cn2u0#ewynf#?U>nEL$j1EK} zj@!T(jbs_JeJoyUlKzA2ivZcD;03cU2Vw@yJ{PdE#RaIMF%Z!fh$vC^)qu6M9#}jD zWZwd~eRCjY!0bB!R8(JpGFJfg->4z+xMac^ZC@AiK8M2ci>Z zo f;s{jH0ElP|s%Q#Cv;F#A~oK+(L|098~1B5H#w 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 U~)aCP^I_x1<^4YGio8=sZ~ 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

%rr#F!PbrqNo6c7fcOu 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 z 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 literal 331776 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ⅆ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�jD2m48dnYp+_!aj6Xufk>^sN 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

BO?R0dHoaha)AX6?d(%Ir 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 diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index f02d719..0f93c44 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -22,7 +22,7 @@ #define FRAMES_DELETE_CHUNKS 1 #define THREADS_GENERATE_CHUNKS 8 -#define THREADS_UPDATE_CHUNKS 3 +#define THREADS_UPDATE_CHUNKS 6 #define THREADS_DELETE_CHUNKS 3 #define VIEW_DISTANCE 512 // Si les chunks arrêtent de s'afficher pendant une game et qu'il y a un access violation quand tu quitte, il faut augmenter ce chiffre. diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index abbdbc9..d120d7b 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -105,8 +105,8 @@ true - external\irrKlang-1.6.0\include;external\glew210\include;external\devil178\include;external\sfml251\include;$(IncludePath) - external\glew210\lib;external\sfml251\lib;external\devil178\lib;external\irrKlang-1.6.0\lib\Win32-visualStudio;$(LibraryPath) + external\irrKlang-1.6.0\include;external\glew210\include;external\devil180\include;external\sfml251-32\include;$(IncludePath) + external\glew210\lib\Release\Win32;external\sfml251-32\lib;external\devil180\lib\x86\Release;external\irrKlang-1.6.0\lib\Win32-visualStudio;$(LibraryPath) true @@ -115,8 +115,8 @@ false - external\devil180\include;external\irrKlang-1.6.0\include;external\sfml251\include;external\glew210\include;$(IncludePath) - external\sfml251\lib;external\devil180\lib\x86\Release;external\glew210\lib\Release\Win32;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio + external\devil180\include;external\irrKlang-1.6.0\include;external\sfml251-32\include;external\glew210\include;$(IncludePath) + external\sfml251-32\lib;external\devil180\lib\x86\Release;external\glew210\lib\Release\Win32;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio false diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 8d51188..e946a35 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -1,6 +1,8 @@ #ifndef CLI_DEFINE_H__ #define CLI_DEFINE_H__ +//#define SFML_STATIC true + #include #include #include diff --git a/SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html new file mode 100644 index 0000000..0a438f8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + +

+ +
+
+
AlResource.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_ALRESOURCE_HPP
26 #define SFML_ALRESOURCE_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 
33 
34 namespace sf
35 {
40 class SFML_AUDIO_API AlResource
41 {
42 protected:
43 
48  AlResource();
49 
54  ~AlResource();
55 };
56 
57 } // namespace sf
58 
59 
60 #endif // SFML_ALRESOURCE_HPP
61 
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:40
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html new file mode 100644 index 0000000..28f8b2f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Audio/Export.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_AUDIO_EXPORT_HPP
26 #define SFML_AUDIO_EXPORT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
35 // Define portable import / export macros
37 #if defined(SFML_AUDIO_EXPORTS)
38 
39  #define SFML_AUDIO_API SFML_API_EXPORT
40 
41 #else
42 
43  #define SFML_AUDIO_API SFML_API_IMPORT
44 
45 #endif
46 
47 
48 #endif // SFML_AUDIO_EXPORT_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html new file mode 100644 index 0000000..f91aeb2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Audio.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_AUDIO_HPP
26 #define SFML_AUDIO_HPP
27 
29 // Headers
31 
32 #include <SFML/System.hpp>
33 #include <SFML/Audio/InputSoundFile.hpp>
34 #include <SFML/Audio/Listener.hpp>
35 #include <SFML/Audio/Music.hpp>
36 #include <SFML/Audio/OutputSoundFile.hpp>
37 #include <SFML/Audio/Sound.hpp>
38 #include <SFML/Audio/SoundBuffer.hpp>
39 #include <SFML/Audio/SoundBufferRecorder.hpp>
40 #include <SFML/Audio/SoundFileFactory.hpp>
41 #include <SFML/Audio/SoundFileReader.hpp>
42 #include <SFML/Audio/SoundFileWriter.hpp>
43 #include <SFML/Audio/SoundRecorder.hpp>
44 #include <SFML/Audio/SoundSource.hpp>
45 #include <SFML/Audio/SoundStream.hpp>
46 
47 
48 #endif // SFML_AUDIO_HPP
49 
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html new file mode 100644 index 0000000..006cfd4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
BlendMode.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_BLENDMODE_HPP
26 #define SFML_BLENDMODE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 
33 
34 namespace sf
35 {
36 
41 struct SFML_GRAPHICS_API BlendMode
42 {
49  enum Factor
50  {
51  Zero,
52  One,
60  OneMinusDstAlpha
61  };
62 
69  enum Equation
70  {
71  Add,
73  ReverseSubtract
74  };
75 
82  BlendMode();
83 
95  BlendMode(Factor sourceFactor, Factor destinationFactor, Equation blendEquation = Add);
96 
108  BlendMode(Factor colorSourceFactor, Factor colorDestinationFactor,
109  Equation colorBlendEquation, Factor alphaSourceFactor,
110  Factor alphaDestinationFactor, Equation alphaBlendEquation);
111 
113  // Member Data
121 };
122 
133 SFML_GRAPHICS_API bool operator ==(const BlendMode& left, const BlendMode& right);
134 
145 SFML_GRAPHICS_API bool operator !=(const BlendMode& left, const BlendMode& right);
146 
148 // Commonly used blending modes
150 SFML_GRAPHICS_API extern const BlendMode BlendAlpha;
151 SFML_GRAPHICS_API extern const BlendMode BlendAdd;
152 SFML_GRAPHICS_API extern const BlendMode BlendMultiply;
153 SFML_GRAPHICS_API extern const BlendMode BlendNone;
154 
155 } // namespace sf
156 
157 
158 #endif // SFML_BLENDMODE_HPP
159 
160 
Equation colorEquation
Blending equation for the color channels.
Definition: BlendMode.hpp:117
+
(src.a, src.a, src.a, src.a)
Definition: BlendMode.hpp:57
+
Factor alphaSrcFactor
Source blending factor for the alpha channel.
Definition: BlendMode.hpp:118
+
(0, 0, 0, 0)
Definition: BlendMode.hpp:51
+
(1, 1, 1, 1) - (dst.r, dst.g, dst.b, dst.a)
Definition: BlendMode.hpp:56
+
Blending modes for drawing.
Definition: BlendMode.hpp:41
+
(1, 1, 1, 1)
Definition: BlendMode.hpp:52
+
Factor colorSrcFactor
Source blending factor for the color channels.
Definition: BlendMode.hpp:115
+
Equation alphaEquation
Blending equation for the alpha channel.
Definition: BlendMode.hpp:120
+
Pixel = Src * SrcFactor - Dst * DstFactor.
Definition: BlendMode.hpp:72
+
Factor colorDstFactor
Destination blending factor for the color channels.
Definition: BlendMode.hpp:116
+
Pixel = Src * SrcFactor + Dst * DstFactor.
Definition: BlendMode.hpp:71
+
(dst.a, dst.a, dst.a, dst.a)
Definition: BlendMode.hpp:59
+
(1, 1, 1, 1) - (src.a, src.a, src.a, src.a)
Definition: BlendMode.hpp:58
+
(1, 1, 1, 1) - (src.r, src.g, src.b, src.a)
Definition: BlendMode.hpp:54
+
Equation
Enumeration of the blending equations.
Definition: BlendMode.hpp:69
+ +
Factor
Enumeration of the blending factors.
Definition: BlendMode.hpp:49
+
Factor alphaDstFactor
Destination blending factor for the alpha channel.
Definition: BlendMode.hpp:119
+
(dst.r, dst.g, dst.b, dst.a)
Definition: BlendMode.hpp:55
+
(src.r, src.g, src.b, src.a)
Definition: BlendMode.hpp:53
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html new file mode 100644 index 0000000..3dbacfb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
CircleShape.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CIRCLESHAPE_HPP
26 #define SFML_CIRCLESHAPE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Shape.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_GRAPHICS_API CircleShape : public Shape
42 {
43 public:
44 
52  explicit CircleShape(float radius = 0, std::size_t pointCount = 30);
53 
62  void setRadius(float radius);
63 
72  float getRadius() const;
73 
82  void setPointCount(std::size_t count);
83 
92  virtual std::size_t getPointCount() const;
93 
107  virtual Vector2f getPoint(std::size_t index) const;
108 
109 private:
110 
112  // Member data
114  float m_radius;
115  std::size_t m_pointCount;
116 };
117 
118 } // namespace sf
119 
120 
121 #endif // SFML_CIRCLESHAPE_HPP
122 
123 
Base class for textured shapes with outline.
Definition: Shape.hpp:44
+ + +
Specialized shape representing a circle.
Definition: CircleShape.hpp:41
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html new file mode 100644 index 0000000..4cc98f3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Clipboard.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CLIPBOARD_HPP
26 #define SFML_CLIPBOARD_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/String.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_WINDOW_API Clipboard
42 {
43 public:
44 
55  static String getString();
56 
72  static void setString(const String& text);
73 };
74 
75 } // namespace sf
76 
77 
78 #endif // SFML_CLIPBOARD_HPP
79 
80 
Give access to the system clipboard.
Definition: Clipboard.hpp:41
+ +
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html new file mode 100644 index 0000000..2568ec7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Clock.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CLOCK_HPP
26 #define SFML_CLOCK_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/Time.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_SYSTEM_API Clock
42 {
43 public:
44 
51  Clock();
52 
63  Time getElapsedTime() const;
64 
74  Time restart();
75 
76 private:
77 
79  // Member data
81  Time m_startTime;
82 };
83 
84 } // namespace sf
85 
86 
87 #endif // SFML_CLOCK_HPP
88 
89 
Represents a time value.
Definition: Time.hpp:40
+ +
Utility class that measures the elapsed time.
Definition: Clock.hpp:41
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html new file mode 100644 index 0000000..df49c5e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Color.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_COLOR_HPP
26 #define SFML_COLOR_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 
33 
34 namespace sf
35 {
40 class SFML_GRAPHICS_API Color
41 {
42 public:
43 
51  Color();
52 
62  Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha = 255);
63 
70  explicit Color(Uint32 color);
71 
78  Uint32 toInteger() const;
79 
81  // Static member data
83  static const Color Black;
84  static const Color White;
85  static const Color Red;
86  static const Color Green;
87  static const Color Blue;
88  static const Color Yellow;
89  static const Color Magenta;
90  static const Color Cyan;
91  static const Color Transparent;
92 
94  // Member data
96  Uint8 r;
97  Uint8 g;
98  Uint8 b;
99  Uint8 a;
100 };
101 
114 SFML_GRAPHICS_API bool operator ==(const Color& left, const Color& right);
115 
128 SFML_GRAPHICS_API bool operator !=(const Color& left, const Color& right);
129 
143 SFML_GRAPHICS_API Color operator +(const Color& left, const Color& right);
144 
158 SFML_GRAPHICS_API Color operator -(const Color& left, const Color& right);
159 
175 SFML_GRAPHICS_API Color operator *(const Color& left, const Color& right);
176 
191 SFML_GRAPHICS_API Color& operator +=(Color& left, const Color& right);
192 
207 SFML_GRAPHICS_API Color& operator -=(Color& left, const Color& right);
208 
225 SFML_GRAPHICS_API Color& operator *=(Color& left, const Color& right);
226 
227 } // namespace sf
228 
229 
230 #endif // SFML_COLOR_HPP
231 
232 
static const Color Red
Red predefined color.
Definition: Color.hpp:85
+
static const Color Green
Green predefined color.
Definition: Color.hpp:86
+
Uint8 b
Blue component.
Definition: Color.hpp:98
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
static const Color Magenta
Magenta predefined color.
Definition: Color.hpp:89
+
Uint8 g
Green component.
Definition: Color.hpp:97
+
static const Color Cyan
Cyan predefined color.
Definition: Color.hpp:90
+
static const Color White
White predefined color.
Definition: Color.hpp:84
+
static const Color Blue
Blue predefined color.
Definition: Color.hpp:87
+
static const Color Yellow
Yellow predefined color.
Definition: Color.hpp:88
+
static const Color Black
Black predefined color.
Definition: Color.hpp:83
+ +
Uint8 a
Alpha (opacity) component.
Definition: Color.hpp:99
+
static const Color Transparent
Transparent (black) predefined color.
Definition: Color.hpp:91
+
Uint8 r
Red component.
Definition: Color.hpp:96
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html new file mode 100644 index 0000000..5734d34 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html @@ -0,0 +1,57 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Config.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CONFIG_HPP
26 #define SFML_CONFIG_HPP
27 
28 
30 // Define the SFML version
32 #define SFML_VERSION_MAJOR 2
33 #define SFML_VERSION_MINOR 5
34 #define SFML_VERSION_PATCH 1
35 
36 
38 // Identify the operating system
39 // see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
41 #if defined(_WIN32)
42 
43  // Windows
44  #define SFML_SYSTEM_WINDOWS
45  #ifndef NOMINMAX
46  #define NOMINMAX
47  #endif
48 
49 #elif defined(__APPLE__) && defined(__MACH__)
50 
51  // Apple platform, see which one it is
52  #include "TargetConditionals.h"
53 
54  #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
55 
56  // iOS
57  #define SFML_SYSTEM_IOS
58 
59  #elif TARGET_OS_MAC
60 
61  // MacOS
62  #define SFML_SYSTEM_MACOS
63 
64  #else
65 
66  // Unsupported Apple system
67  #error This Apple operating system is not supported by SFML library
68 
69  #endif
70 
71 #elif defined(__unix__)
72 
73  // UNIX system, see which one it is
74  #if defined(__ANDROID__)
75 
76  // Android
77  #define SFML_SYSTEM_ANDROID
78 
79  #elif defined(__linux__)
80 
81  // Linux
82  #define SFML_SYSTEM_LINUX
83 
84  #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
85 
86  // FreeBSD
87  #define SFML_SYSTEM_FREEBSD
88 
89  #elif defined(__OpenBSD__)
90 
91  // OpenBSD
92  #define SFML_SYSTEM_OPENBSD
93 
94  #else
95 
96  // Unsupported UNIX system
97  #error This UNIX operating system is not supported by SFML library
98 
99  #endif
100 
101 #else
102 
103  // Unsupported system
104  #error This operating system is not supported by SFML library
105 
106 #endif
107 
108 
110 // Define a portable debug macro
112 #if !defined(NDEBUG)
113 
114  #define SFML_DEBUG
115 
116 #endif
117 
118 
120 // Define helpers to create portable import / export macros for each module
122 #if !defined(SFML_STATIC)
123 
124  #if defined(SFML_SYSTEM_WINDOWS)
125 
126  // Windows compilers need specific (and different) keywords for export and import
127  #define SFML_API_EXPORT __declspec(dllexport)
128  #define SFML_API_IMPORT __declspec(dllimport)
129 
130  // For Visual C++ compilers, we also need to turn off this annoying C4251 warning
131  #ifdef _MSC_VER
132 
133  #pragma warning(disable: 4251)
134 
135  #endif
136 
137  #else // Linux, FreeBSD, Mac OS X
138 
139  #if __GNUC__ >= 4
140 
141  // GCC 4 has special keywords for showing/hidding symbols,
142  // the same keyword is used for both importing and exporting
143  #define SFML_API_EXPORT __attribute__ ((__visibility__ ("default")))
144  #define SFML_API_IMPORT __attribute__ ((__visibility__ ("default")))
145 
146  #else
147 
148  // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported
149  #define SFML_API_EXPORT
150  #define SFML_API_IMPORT
151 
152  #endif
153 
154  #endif
155 
156 #else
157 
158  // Static build doesn't need import/export macros
159  #define SFML_API_EXPORT
160  #define SFML_API_IMPORT
161 
162 #endif
163 
164 
166 // Cross-platform warning for deprecated functions and classes
167 //
168 // Usage:
169 // class SFML_DEPRECATED MyClass
170 // {
171 // SFML_DEPRECATED void memberFunc();
172 // };
173 //
174 // SFML_DEPRECATED void globalFunc();
176 #if defined(SFML_NO_DEPRECATED_WARNINGS)
177 
178  // User explicitly requests to disable deprecation warnings
179  #define SFML_DEPRECATED
180 
181 #elif defined(_MSC_VER)
182 
183  // Microsoft C++ compiler
184  // Note: On newer MSVC versions, using deprecated functions causes a compiler error. In order to
185  // trigger a warning instead of an error, the compiler flag /sdl- (instead of /sdl) must be specified.
186  #define SFML_DEPRECATED __declspec(deprecated)
187 
188 #elif defined(__GNUC__)
189 
190  // g++ and Clang
191  #define SFML_DEPRECATED __attribute__ ((deprecated))
192 
193 #else
194 
195  // Other compilers are not supported, leave class or function as-is.
196  // With a bit of luck, the #pragma directive works, otherwise users get a warning (no error!) for unrecognized #pragma.
197  #pragma message("SFML_DEPRECATED is not supported for your compiler, please contact the SFML team")
198  #define SFML_DEPRECATED
199 
200 #endif
201 
202 
204 // Define portable fixed-size types
206 namespace sf
207 {
208  // All "common" platforms use the same size for char, short and int
209  // (basically there are 3 types for 3 sizes, so no other match is possible),
210  // we can use them without doing any kind of check
211 
212  // 8 bits integer types
213  typedef signed char Int8;
214  typedef unsigned char Uint8;
215 
216  // 16 bits integer types
217  typedef signed short Int16;
218  typedef unsigned short Uint16;
219 
220  // 32 bits integer types
221  typedef signed int Int32;
222  typedef unsigned int Uint32;
223 
224  // 64 bits integer types
225  #if defined(_MSC_VER)
226  typedef signed __int64 Int64;
227  typedef unsigned __int64 Uint64;
228  #else
229  typedef signed long long Int64;
230  typedef unsigned long long Uint64;
231  #endif
232 
233 } // namespace sf
234 
235 
236 #endif // SFML_CONFIG_HPP
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html new file mode 100644 index 0000000..03304c6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
ContextSettings.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CONTEXTSETTINGS_HPP
26 #define SFML_CONTEXTSETTINGS_HPP
27 
28 #include <SFML/Config.hpp>
29 
30 namespace sf
31 {
38 {
43  enum Attribute
44  {
45  Default = 0,
46  Core = 1 << 0,
47  Debug = 1 << 2
48  };
49 
62  explicit ContextSettings(unsigned int depth = 0, unsigned int stencil = 0, unsigned int antialiasing = 0, unsigned int major = 1, unsigned int minor = 1, unsigned int attributes = Default, bool sRgb = false) :
63  depthBits (depth),
64  stencilBits (stencil),
65  antialiasingLevel(antialiasing),
66  majorVersion (major),
67  minorVersion (minor),
68  attributeFlags (attributes),
69  sRgbCapable (sRgb)
70  {
71  }
72 
74  // Member data
76  unsigned int depthBits;
77  unsigned int stencilBits;
78  unsigned int antialiasingLevel;
79  unsigned int majorVersion;
80  unsigned int minorVersion;
81  Uint32 attributeFlags;
82  bool sRgbCapable;
83 };
84 
85 } // namespace sf
86 
87 
88 #endif // SFML_CONTEXTSETTINGS_HPP
89 
90 
+
Uint32 attributeFlags
The attribute flags to create the context with.
+
bool sRgbCapable
Whether the context framebuffer is sRGB capable.
+
Attribute
Enumeration of the context attribute flags.
+ +
Non-debug, compatibility context (this and the core attribute are mutually exclusive) ...
+
unsigned int depthBits
Bits of the depth buffer.
+
Structure defining the settings of the OpenGL context attached to a window.
+ +
ContextSettings(unsigned int depth=0, unsigned int stencil=0, unsigned int antialiasing=0, unsigned int major=1, unsigned int minor=1, unsigned int attributes=Default, bool sRgb=false)
Default constructor.
+
unsigned int majorVersion
Major number of the context version to create.
+
unsigned int antialiasingLevel
Level of antialiasing.
+
unsigned int stencilBits
Bits of the stencil buffer.
+
unsigned int minorVersion
Minor number of the context version to create.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html new file mode 100644 index 0000000..6b6fc89 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Context.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CONTEXT_HPP
26 #define SFML_CONTEXT_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/Window/GlResource.hpp>
33 #include <SFML/Window/ContextSettings.hpp>
34 #include <SFML/System/NonCopyable.hpp>
35 
36 
37 namespace sf
38 {
39 namespace priv
40 {
41  class GlContext;
42 }
43 
44 typedef void (*GlFunctionPointer)();
45 
50 class SFML_WINDOW_API Context : GlResource, NonCopyable
51 {
52 public:
53 
60  Context();
61 
68  ~Context();
69 
78  bool setActive(bool active);
79 
90  const ContextSettings& getSettings() const;
91 
100  static bool isExtensionAvailable(const char* name);
101 
110  static GlFunctionPointer getFunction(const char* name);
111 
122  static const Context* getActiveContext();
123 
133  static Uint64 getActiveContextId();
134 
146  Context(const ContextSettings& settings, unsigned int width, unsigned int height);
147 
148 private:
149 
151  // Member data
153  priv::GlContext* m_context;
154 };
155 
156 } // namespace sf
157 
158 
159 #endif // SFML_CONTEXT_HPP
160 
Class holding a valid drawing context.
Definition: Context.hpp:50
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
Structure defining the settings of the OpenGL context attached to a window.
+ +
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html new file mode 100644 index 0000000..dea71a4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
ConvexShape.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CONVEXSHAPE_HPP
26 #define SFML_CONVEXSHAPE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Shape.hpp>
33 #include <vector>
34 
35 
36 namespace sf
37 {
42 class SFML_GRAPHICS_API ConvexShape : public Shape
43 {
44 public:
45 
52  explicit ConvexShape(std::size_t pointCount = 0);
53 
64  void setPointCount(std::size_t count);
65 
74  virtual std::size_t getPointCount() const;
75 
91  void setPoint(std::size_t index, const Vector2f& point);
92 
108  virtual Vector2f getPoint(std::size_t index) const;
109 
110 private:
111 
113  // Member data
115  std::vector<Vector2f> m_points;
116 };
117 
118 } // namespace sf
119 
120 
121 #endif // SFML_CONVEXSHAPE_HPP
122 
123 
Base class for textured shapes with outline.
Definition: Shape.hpp:44
+
Specialized shape representing a convex polygon.
Definition: ConvexShape.hpp:42
+ +
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html new file mode 100644 index 0000000..33413f3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Cursor.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CURSOR_HPP
26 #define SFML_CURSOR_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 #include <SFML/System/Vector2.hpp>
34 
35 namespace sf
36 {
37 namespace priv
38 {
39  class CursorImpl;
40 }
41 
46 class SFML_WINDOW_API Cursor : NonCopyable
47 {
48 public:
49 
76  enum Type
77  {
80  Wait,
81  Text,
82  Hand,
89  Help,
90  NotAllowed
91  };
92 
93 public:
94 
104  Cursor();
105 
113  ~Cursor();
114 
144  bool loadFromPixels(const Uint8* pixels, Vector2u size, Vector2u hotspot);
145 
160  bool loadFromSystem(Type type);
161 
162 private:
163 
164  friend class Window;
165 
175  const priv::CursorImpl& getImpl() const;
176 
177 private:
178 
180  // Member data
182  priv::CursorImpl* m_impl;
183 };
184 
185 } // namespace sf
186 
187 
188 #endif // SFML_CURSOR_HPP
189 
190 
Crosshair cursor.
Definition: Cursor.hpp:88
+
Busy cursor.
Definition: Cursor.hpp:80
+
Window that serves as a target for OpenGL rendering.
+
Cursor defines the appearance of a system cursor.
Definition: Cursor.hpp:46
+
Horizontal double arrow cursor.
Definition: Cursor.hpp:83
+
Busy arrow cursor.
Definition: Cursor.hpp:79
+
Arrow cursor (default)
Definition: Cursor.hpp:78
+
Double arrow cursor going from top-left to bottom-right.
Definition: Cursor.hpp:85
+
Double arrow cursor going from bottom-left to top-right.
Definition: Cursor.hpp:86
+
I-beam, cursor when hovering over a field allowing text entry.
Definition: Cursor.hpp:81
+
Help cursor.
Definition: Cursor.hpp:89
+
Type
Enumeration of the native system cursor types.
Definition: Cursor.hpp:76
+
Combination of SizeHorizontal and SizeVertical.
Definition: Cursor.hpp:87
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
Pointing hand cursor.
Definition: Cursor.hpp:82
+ + +
Vertical double arrow cursor.
Definition: Cursor.hpp:84
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html new file mode 100644 index 0000000..5e44831 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Drawable.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_DRAWABLE_HPP
26 #define SFML_DRAWABLE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/RenderStates.hpp>
33 
34 
35 namespace sf
36 {
37 class RenderTarget;
38 
44 class SFML_GRAPHICS_API Drawable
45 {
46 public:
47 
52  virtual ~Drawable() {}
53 
54 protected:
55 
56  friend class RenderTarget;
57 
69  virtual void draw(RenderTarget& target, RenderStates states) const = 0;
70 };
71 
72 } // namespace sf
73 
74 
75 #endif // SFML_DRAWABLE_HPP
76 
77 
virtual ~Drawable()
Virtual destructor.
Definition: Drawable.hpp:52
+
Define the states used for drawing to a RenderTarget.
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html new file mode 100644 index 0000000..0a473ee --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Err.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_ERR_HPP
26 #define SFML_ERR_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <ostream>
33 
34 
35 namespace sf
36 {
41 SFML_SYSTEM_API std::ostream& err();
42 
43 } // namespace sf
44 
45 
46 #endif // SFML_ERR_HPP
47 
48 
std::ostream & err()
Standard stream used by SFML to output warnings and errors.
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html new file mode 100644 index 0000000..aaae108 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html @@ -0,0 +1,146 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Event.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_EVENT_HPP
26 #define SFML_EVENT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 #include <SFML/Window/Joystick.hpp>
33 #include <SFML/Window/Keyboard.hpp>
34 #include <SFML/Window/Mouse.hpp>
35 #include <SFML/Window/Sensor.hpp>
36 
37 
38 namespace sf
39 {
44 class Event
45 {
46 public:
47 
52  struct SizeEvent
53  {
54  unsigned int width;
55  unsigned int height;
56  };
57 
62  struct KeyEvent
63  {
65  bool alt;
66  bool control;
67  bool shift;
68  bool system;
69  };
70 
75  struct TextEvent
76  {
77  Uint32 unicode;
78  };
79 
85  {
86  int x;
87  int y;
88  };
89 
96  {
98  int x;
99  int y;
100  };
101 
110  {
111  int delta;
112  int x;
113  int y;
114  };
115 
121  {
123  float delta;
124  int x;
125  int y;
126  };
127 
134  {
135  unsigned int joystickId;
136  };
137 
143  {
144  unsigned int joystickId;
146  float position;
147  };
148 
155  {
156  unsigned int joystickId;
157  unsigned int button;
158  };
159 
164  struct TouchEvent
165  {
166  unsigned int finger;
167  int x;
168  int y;
169  };
170 
175  struct SensorEvent
176  {
178  float x;
179  float y;
180  float z;
181  };
182 
188  {
212 
214  };
215 
217  // Member data
220 
221  union
222  {
235  };
236 };
237 
238 } // namespace sf
239 
240 
241 #endif // SFML_EVENT_HPP
242 
243 
Keyboard::Key code
Code of the key that has been pressed.
Definition: Event.hpp:64
+
float delta
Wheel offset (positive is up/left, negative is down/right). High-precision mice may use non-integral ...
Definition: Event.hpp:123
+
A joystick button was pressed (data in event.joystickButton)
Definition: Event.hpp:203
+
A joystick was disconnected (data in event.joystickConnect)
Definition: Event.hpp:207
+
int y
Y position of the mouse pointer, relative to the top of the owner window.
Definition: Event.hpp:113
+
The window lost the focus (no data)
Definition: Event.hpp:191
+
int x
X position of the mouse pointer, relative to the left of the owner window.
Definition: Event.hpp:98
+
Joystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased) ...
Definition: Event.hpp:154
+
The mouse cursor moved (data in event.mouseMove)
Definition: Event.hpp:200
+
Keep last – the total number of event types.
Definition: Event.hpp:213
+
Keyboard event parameters (KeyPressed, KeyReleased)
Definition: Event.hpp:62
+
unsigned int joystickId
Index of the joystick (in range [0 .. Joystick::Count - 1])
Definition: Event.hpp:144
+
A joystick was connected (data in event.joystickConnect)
Definition: Event.hpp:206
+
A touch event ended (data in event.touch)
Definition: Event.hpp:210
+
int y
Y position of the mouse pointer, relative to the top of the owner window.
Definition: Event.hpp:87
+
Mouse move event parameters (MouseMoved)
Definition: Event.hpp:84
+
A character was entered (data in event.text)
Definition: Event.hpp:193
+
int x
X position of the touch, relative to the left of the owner window.
Definition: Event.hpp:167
+
bool alt
Is the Alt key pressed?
Definition: Event.hpp:65
+
unsigned int height
New height, in pixels.
Definition: Event.hpp:55
+
KeyEvent key
Key event parameters (Event::KeyPressed, Event::KeyReleased)
Definition: Event.hpp:224
+
The window gained the focus (no data)
Definition: Event.hpp:192
+
float y
Current value of the sensor on Y axis.
Definition: Event.hpp:179
+
Sensor event parameters (SensorChanged)
Definition: Event.hpp:175
+
SensorEvent sensor
Sensor event parameters (Event::SensorChanged)
Definition: Event.hpp:234
+
A touch event began (data in event.touch)
Definition: Event.hpp:208
+
TextEvent text
Text event parameters (Event::TextEntered)
Definition: Event.hpp:225
+
TouchEvent touch
Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded) ...
Definition: Event.hpp:233
+
Axis
Axes supported by SFML joysticks.
Definition: Joystick.hpp:60
+
Type
Sensor type.
Definition: Sensor.hpp:50
+
A key was released (data in event.key)
Definition: Event.hpp:195
+
The window was resized (data in event.size)
Definition: Event.hpp:190
+
unsigned int width
New width, in pixels.
Definition: Event.hpp:54
+
The window requested to be closed (no data)
Definition: Event.hpp:189
+
MouseButtonEvent mouseButton
Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased) ...
Definition: Event.hpp:227
+
The mouse cursor left the area of the window (no data)
Definition: Event.hpp:202
+
int delta
Number of ticks the wheel has moved (positive is up, negative is down)
Definition: Event.hpp:111
+
Touch events parameters (TouchBegan, TouchMoved, TouchEnded)
Definition: Event.hpp:164
+
The mouse wheel was scrolled (data in event.mouseWheelScroll)
Definition: Event.hpp:197
+
A mouse button was pressed (data in event.mouseButton)
Definition: Event.hpp:198
+
int x
X position of the mouse pointer, relative to the left of the owner window.
Definition: Event.hpp:124
+
The mouse wheel was scrolled (data in event.mouseWheel) (deprecated)
Definition: Event.hpp:196
+
Joystick axis move event parameters (JoystickMoved)
Definition: Event.hpp:142
+
JoystickMoveEvent joystickMove
Joystick move event parameters (Event::JoystickMoved)
Definition: Event.hpp:230
+
Wheel
Mouse wheels.
Definition: Mouse.hpp:66
+
Mouse wheel events parameters (MouseWheelMoved)
Definition: Event.hpp:109
+
Joystick::Axis axis
Axis on which the joystick moved.
Definition: Event.hpp:145
+
Key
Key codes.
Definition: Keyboard.hpp:48
+
int y
Y position of the touch, relative to the top of the owner window.
Definition: Event.hpp:168
+
Mouse::Wheel wheel
Which wheel (for mice with multiple ones)
Definition: Event.hpp:122
+
Mouse buttons events parameters (MouseButtonPressed, MouseButtonReleased)
Definition: Event.hpp:95
+
bool shift
Is the Shift key pressed?
Definition: Event.hpp:67
+
Defines a system event and its parameters.
Definition: Event.hpp:44
+
Button
Mouse buttons.
Definition: Mouse.hpp:51
+
Uint32 unicode
UTF-32 Unicode value of the character.
Definition: Event.hpp:77
+
JoystickConnectEvent joystickConnect
Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected) ...
Definition: Event.hpp:232
+
MouseWheelEvent mouseWheel
Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated)
Definition: Event.hpp:228
+
The mouse cursor entered the area of the window (no data)
Definition: Event.hpp:201
+
A key was pressed (data in event.key)
Definition: Event.hpp:194
+
MouseWheelScrollEvent mouseWheelScroll
Mouse wheel event parameters (Event::MouseWheelScrolled)
Definition: Event.hpp:229
+
Mouse::Button button
Code of the button that has been pressed.
Definition: Event.hpp:97
+
bool system
Is the System key pressed?
Definition: Event.hpp:68
+
int x
X position of the mouse pointer, relative to the left of the owner window.
Definition: Event.hpp:112
+
EventType type
Type of the event.
Definition: Event.hpp:219
+
int y
Y position of the mouse pointer, relative to the top of the owner window.
Definition: Event.hpp:99
+
bool control
Is the Control key pressed?
Definition: Event.hpp:66
+
A mouse button was released (data in event.mouseButton)
Definition: Event.hpp:199
+
Joystick connection events parameters (JoystickConnected, JoystickDisconnected)
Definition: Event.hpp:133
+ +
MouseMoveEvent mouseMove
Mouse move event parameters (Event::MouseMoved)
Definition: Event.hpp:226
+
unsigned int joystickId
Index of the joystick (in range [0 .. Joystick::Count - 1])
Definition: Event.hpp:156
+
The joystick moved along an axis (data in event.joystickMove)
Definition: Event.hpp:205
+
unsigned int finger
Index of the finger in case of multi-touch events.
Definition: Event.hpp:166
+
A joystick button was released (data in event.joystickButton)
Definition: Event.hpp:204
+
unsigned int joystickId
Index of the joystick (in range [0 .. Joystick::Count - 1])
Definition: Event.hpp:135
+
int x
X position of the mouse pointer, relative to the left of the owner window.
Definition: Event.hpp:86
+
Text event parameters (TextEntered)
Definition: Event.hpp:75
+
JoystickButtonEvent joystickButton
Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased) ...
Definition: Event.hpp:231
+
float x
Current value of the sensor on X axis.
Definition: Event.hpp:178
+
float position
New position on the axis (in range [-100 .. 100])
Definition: Event.hpp:146
+
A touch moved (data in event.touch)
Definition: Event.hpp:209
+
int y
Y position of the mouse pointer, relative to the top of the owner window.
Definition: Event.hpp:125
+
A sensor value changed (data in event.sensor)
Definition: Event.hpp:211
+
Sensor::Type type
Type of the sensor.
Definition: Event.hpp:177
+
SizeEvent size
Size event parameters (Event::Resized)
Definition: Event.hpp:223
+
Size events parameters (Resized)
Definition: Event.hpp:52
+
Mouse wheel events parameters (MouseWheelScrolled)
Definition: Event.hpp:120
+
unsigned int button
Index of the button that has been pressed (in range [0 .. Joystick::ButtonCount - 1]) ...
Definition: Event.hpp:157
+
float z
Current value of the sensor on Z axis.
Definition: Event.hpp:180
+
EventType
Enumeration of the different types of events.
Definition: Event.hpp:187
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html new file mode 100644 index 0000000..7fe4c19 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
FileInputStream.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_FILEINPUTSTREAM_HPP
26 #define SFML_FILEINPUTSTREAM_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 #include <SFML/System/Export.hpp>
33 #include <SFML/System/InputStream.hpp>
34 #include <SFML/System/NonCopyable.hpp>
35 #include <cstdio>
36 #include <string>
37 
38 #ifdef SFML_SYSTEM_ANDROID
39 namespace sf
40 {
41 namespace priv
42 {
43 class SFML_SYSTEM_API ResourceStream;
44 }
45 }
46 #endif
47 
48 
49 namespace sf
50 {
55 class SFML_SYSTEM_API FileInputStream : public InputStream, NonCopyable
56 {
57 public:
63 
68  virtual ~FileInputStream();
69 
78  bool open(const std::string& filename);
79 
92  virtual Int64 read(void* data, Int64 size);
93 
102  virtual Int64 seek(Int64 position);
103 
110  virtual Int64 tell();
111 
118  virtual Int64 getSize();
119 
120 private:
121 
123  // Member data
125 #ifdef SFML_SYSTEM_ANDROID
126  priv::ResourceStream* m_file;
127 #else
128  std::FILE* m_file;
129 #endif
130 };
131 
132 } // namespace sf
133 
134 
135 #endif // SFML_FILEINPUTSTREAM_HPP
136 
137 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Implementation of input stream based on a file.
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html new file mode 100644 index 0000000..d39d3c0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Font.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_FONT_HPP
26 #define SFML_FONT_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Glyph.hpp>
33 #include <SFML/Graphics/Texture.hpp>
34 #include <SFML/Graphics/Rect.hpp>
35 #include <SFML/System/Vector2.hpp>
36 #include <SFML/System/String.hpp>
37 #include <map>
38 #include <string>
39 #include <vector>
40 
41 
42 namespace sf
43 {
44 class InputStream;
45 
50 class SFML_GRAPHICS_API Font
51 {
52 public:
53 
58  struct Info
59  {
60  std::string family;
61  };
62 
63 public:
64 
71  Font();
72 
79  Font(const Font& copy);
80 
87  ~Font();
88 
109  bool loadFromFile(const std::string& filename);
110 
130  bool loadFromMemory(const void* data, std::size_t sizeInBytes);
131 
152  bool loadFromStream(InputStream& stream);
153 
160  const Info& getInfo() const;
161 
180  const Glyph& getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness = 0) const;
181 
198  float getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const;
199 
211  float getLineSpacing(unsigned int characterSize) const;
212 
226  float getUnderlinePosition(unsigned int characterSize) const;
227 
240  float getUnderlineThickness(unsigned int characterSize) const;
241 
254  const Texture& getTexture(unsigned int characterSize) const;
255 
264  Font& operator =(const Font& right);
265 
266 private:
267 
272  struct Row
273  {
274  Row(unsigned int rowTop, unsigned int rowHeight) : width(0), top(rowTop), height(rowHeight) {}
275 
276  unsigned int width;
277  unsigned int top;
278  unsigned int height;
279  };
280 
282  // Types
284  typedef std::map<Uint64, Glyph> GlyphTable;
285 
290  struct Page
291  {
292  Page();
293 
294  GlyphTable glyphs;
295  Texture texture;
296  unsigned int nextRow;
297  std::vector<Row> rows;
298  };
299 
304  void cleanup();
305 
317  Glyph loadGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness) const;
318 
329  IntRect findGlyphRect(Page& page, unsigned int width, unsigned int height) const;
330 
339  bool setCurrentSize(unsigned int characterSize) const;
340 
342  // Types
344  typedef std::map<unsigned int, Page> PageTable;
345 
347  // Member data
349  void* m_library;
350  void* m_face;
351  void* m_streamRec;
352  void* m_stroker;
353  int* m_refCount;
354  Info m_info;
355  mutable PageTable m_pages;
356  mutable std::vector<Uint8> m_pixelBuffer;
357  #ifdef SFML_SYSTEM_ANDROID
358  void* m_stream;
359  #endif
360 };
361 
362 } // namespace sf
363 
364 
365 #endif // SFML_FONT_HPP
366 
367 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
Structure describing a glyph.
Definition: Glyph.hpp:41
+ +
Class for loading and manipulating character fonts.
Definition: Font.hpp:50
+
std::string family
The font family.
Definition: Font.hpp:60
+
Holds various information about a font.
Definition: Font.hpp:58
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html new file mode 100644 index 0000000..b9c1b94 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Ftp.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_FTP_HPP
26 #define SFML_FTP_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/TcpSocket.hpp>
33 #include <SFML/System/NonCopyable.hpp>
34 #include <SFML/System/Time.hpp>
35 #include <string>
36 #include <vector>
37 
38 
39 namespace sf
40 {
41 class IpAddress;
42 
47 class SFML_NETWORK_API Ftp : NonCopyable
48 {
49 public:
50 
56  {
59  Ebcdic
60  };
61 
66  class SFML_NETWORK_API Response
67  {
68  public:
69 
74  enum Status
75  {
76  // 1xx: the requested action is being initiated,
77  // expect another reply before proceeding with a new command
78  RestartMarkerReply = 110,
79  ServiceReadySoon = 120,
80  DataConnectionAlreadyOpened = 125,
81  OpeningDataConnection = 150,
82 
83  // 2xx: the requested action has been successfully completed
84  Ok = 200,
85  PointlessCommand = 202,
86  SystemStatus = 211,
87  DirectoryStatus = 212,
88  FileStatus = 213,
89  HelpMessage = 214,
90  SystemType = 215,
91  ServiceReady = 220,
92  ClosingConnection = 221,
93  DataConnectionOpened = 225,
94  ClosingDataConnection = 226,
95  EnteringPassiveMode = 227,
96  LoggedIn = 230,
97  FileActionOk = 250,
98  DirectoryOk = 257,
99 
100  // 3xx: the command has been accepted, but the requested action
101  // is dormant, pending receipt of further information
102  NeedPassword = 331,
103  NeedAccountToLogIn = 332,
104  NeedInformation = 350,
105 
106  // 4xx: the command was not accepted and the requested action did not take place,
107  // but the error condition is temporary and the action may be requested again
108  ServiceUnavailable = 421,
109  DataConnectionUnavailable = 425,
110  TransferAborted = 426,
111  FileActionAborted = 450,
112  LocalError = 451,
113  InsufficientStorageSpace = 452,
114 
115  // 5xx: the command was not accepted and
116  // the requested action did not take place
117  CommandUnknown = 500,
118  ParametersUnknown = 501,
119  CommandNotImplemented = 502,
120  BadCommandSequence = 503,
121  ParameterNotImplemented = 504,
122  NotLoggedIn = 530,
123  NeedAccountToStore = 532,
124  FileUnavailable = 550,
125  PageTypeUnknown = 551,
126  NotEnoughMemory = 552,
127  FilenameNotAllowed = 553,
128 
129  // 10xx: SFML custom codes
130  InvalidResponse = 1000,
131  ConnectionFailed = 1001,
132  ConnectionClosed = 1002,
133  InvalidFile = 1003
134  };
135 
146  explicit Response(Status code = InvalidResponse, const std::string& message = "");
147 
157  bool isOk() const;
158 
165  Status getStatus() const;
166 
173  const std::string& getMessage() const;
174 
175  private:
176 
178  // Member data
180  Status m_status;
181  std::string m_message;
182  };
183 
188  class SFML_NETWORK_API DirectoryResponse : public Response
189  {
190  public:
191 
198  DirectoryResponse(const Response& response);
199 
206  const std::string& getDirectory() const;
207 
208  private:
209 
211  // Member data
213  std::string m_directory;
214  };
215 
216 
221  class SFML_NETWORK_API ListingResponse : public Response
222  {
223  public:
224 
232  ListingResponse(const Response& response, const std::string& data);
233 
240  const std::vector<std::string>& getListing() const;
241 
242  private:
243 
245  // Member data
247  std::vector<std::string> m_listing;
248  };
249 
250 
258  ~Ftp();
259 
281  Response connect(const IpAddress& server, unsigned short port = 21, Time timeout = Time::Zero);
282 
291  Response disconnect();
292 
302  Response login();
303 
316  Response login(const std::string& name, const std::string& password);
317 
327  Response keepAlive();
328 
340  DirectoryResponse getWorkingDirectory();
341 
357  ListingResponse getDirectoryListing(const std::string& directory = "");
358 
371  Response changeDirectory(const std::string& directory);
372 
381  Response parentDirectory();
382 
396  Response createDirectory(const std::string& name);
397 
413  Response deleteDirectory(const std::string& name);
414 
429  Response renameFile(const std::string& file, const std::string& newName);
430 
446  Response deleteFile(const std::string& name);
447 
468  Response download(const std::string& remoteFile, const std::string& localPath, TransferMode mode = Binary);
469 
491  Response upload(const std::string& localFile, const std::string& remotePath, TransferMode mode = Binary, bool append = false);
492 
509  Response sendCommand(const std::string& command, const std::string& parameter = "");
510 
511 private:
512 
522  Response getResponse();
523 
529  class DataChannel;
530 
531  friend class DataChannel;
532 
534  // Member data
536  TcpSocket m_commandSocket;
537  std::string m_receiveBuffer;
538 };
539 
540 } // namespace sf
541 
542 
543 #endif // SFML_FTP_HPP
544 
545 
Specialization of FTP response returning a directory.
Definition: Ftp.hpp:188
+
Represents a time value.
Definition: Time.hpp:40
+
A FTP client.
Definition: Ftp.hpp:47
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+
Define a FTP response.
Definition: Ftp.hpp:66
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+
Specialization of FTP response returning a filename listing.
Definition: Ftp.hpp:221
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
TransferMode
Enumeration of transfer modes.
Definition: Ftp.hpp:55
+
Specialized socket using the TCP protocol.
Definition: TcpSocket.hpp:46
+
Text mode using ASCII encoding.
Definition: Ftp.hpp:58
+
Binary mode (file is transfered as a sequence of bytes)
Definition: Ftp.hpp:57
+ +
Status
Status codes possibly returned by a FTP response.
Definition: Ftp.hpp:74
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html new file mode 100644 index 0000000..c6b7f40 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
GlResource.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GLRESOURCE_HPP
26 #define SFML_GLRESOURCE_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 
34 
35 namespace sf
36 {
37 
38 class Context;
39 
40 typedef void(*ContextDestroyCallback)(void*);
41 
46 class SFML_WINDOW_API GlResource
47 {
48 protected:
49 
54  GlResource();
55 
60  ~GlResource();
61 
73  static void registerContextDestroyCallback(ContextDestroyCallback callback, void* arg);
74 
79  class SFML_WINDOW_API TransientContextLock : NonCopyable
80  {
81  public:
87 
93  };
94 };
95 
96 } // namespace sf
97 
98 
99 #endif // SFML_GLRESOURCE_HPP
100 
RAII helper class to temporarily lock an available context for use.
Definition: GlResource.hpp:79
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html new file mode 100644 index 0000000..432908a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Glsl.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GLSL_HPP
26 #define SFML_GLSL_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Transform.hpp>
32 #include <SFML/Graphics/Color.hpp>
33 #include <SFML/System/Vector2.hpp>
34 #include <SFML/System/Vector3.hpp>
35 
36 
37 namespace sf
38 {
39 namespace priv
40 {
41  // Forward declarations
42  template <std::size_t Columns, std::size_t Rows>
43  struct Matrix;
44 
45  template <typename T>
46  struct Vector4;
47 
48 #include <SFML/Graphics/Glsl.inl>
49 
50 } // namespace priv
51 
52 
57 namespace Glsl
58 {
59 
65 
71 
77 
83 
89 
95 
96 #ifdef SFML_DOXYGEN
97 
110  typedef implementation-defined Vec4;
111 
124  typedef implementation-defined Ivec4;
125 
130  typedef implementation-defined Bvec4;
131 
155  typedef implementation-defined Mat3;
156 
181  typedef implementation-defined Mat4;
182 
183 #else // SFML_DOXYGEN
184 
185  typedef priv::Vector4<float> Vec4;
186  typedef priv::Vector4<int> Ivec4;
187  typedef priv::Vector4<bool> Bvec4;
188  typedef priv::Matrix<3, 3> Mat3;
189  typedef priv::Matrix<4, 4> Mat4;
190 
191 #endif // SFML_DOXYGEN
192 
193 } // namespace Glsl
194 } // namespace sf
195 
196 #endif // SFML_GLSL_HPP
197 
198 
implementation defined Bvec4
4D bool vector (bvec4 in GLSL)
Definition: Glsl.hpp:130
+
Vector2< float > Vec2
2D float vector (vec2 in GLSL)
Definition: Glsl.hpp:64
+
implementation defined Ivec4
4D int vector (ivec4 in GLSL)
Definition: Glsl.hpp:124
+
Vector3< float > Vec3
3D float vector (vec3 in GLSL)
Definition: Glsl.hpp:82
+
implementation defined Mat4
4x4 float matrix (mat4 in GLSL)
Definition: Glsl.hpp:181
+
Vector3< bool > Bvec3
3D bool vector (bvec3 in GLSL)
Definition: Glsl.hpp:94
+
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
implementation defined Vec4
4D float vector (vec4 in GLSL)
Definition: Glsl.hpp:110
+
implementation defined Mat3
3x3 float matrix (mat3 in GLSL)
Definition: Glsl.hpp:155
+
Vector2< bool > Bvec2
2D bool vector (bvec2 in GLSL)
Definition: Glsl.hpp:76
+
Vector2< int > Ivec2
2D int vector (ivec2 in GLSL)
Definition: Glsl.hpp:70
+ + +
Vector3< int > Ivec3
3D int vector (ivec3 in GLSL)
Definition: Glsl.hpp:88
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html new file mode 100644 index 0000000..94154ad --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Glyph.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GLYPH_HPP
26 #define SFML_GLYPH_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Rect.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_GRAPHICS_API Glyph
42 {
43 public:
44 
49  Glyph() : advance(0) {}
50 
52  // Member data
54  float advance;
57 };
58 
59 } // namespace sf
60 
61 
62 #endif // SFML_GLYPH_HPP
63 
64 
IntRect textureRect
Texture coordinates of the glyph inside the font&#39;s texture.
Definition: Glyph.hpp:56
+
Glyph()
Default constructor.
Definition: Glyph.hpp:49
+
float advance
Offset to move horizontally to the next character.
Definition: Glyph.hpp:54
+
Structure describing a glyph.
Definition: Glyph.hpp:41
+
FloatRect bounds
Bounding rectangle of the glyph, in coordinates relative to the baseline.
Definition: Glyph.hpp:55
+ + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html b/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html new file mode 100644 index 0000000..beeb1d6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html @@ -0,0 +1,98 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
GpuPreference.hpp File Reference
+
+
+ +

Headers. +More...

+
#include <SFML/Config.hpp>
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
 A macro to encourage usage of the discrete GPU. More...
 
+

Detailed Description

+

Headers.

+

File containing SFML_DEFINE_DISCRETE_GPU_PREFERENCE

+ +

Definition in file GpuPreference.hpp.

+

Macro Definition Documentation

+ +

◆ SFML_DEFINE_DISCRETE_GPU_PREFERENCE

+ +
+
+ + + + +
#define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
+
+ +

A macro to encourage usage of the discrete GPU.

+

In order to inform the Nvidia/AMD driver that an SFML application could benefit from using the more powerful discrete GPU, special symbols have to be publicly exported from the final executable.

+

SFML defines a helper macro to easily do this.

+

Place SFML_DEFINE_DISCRETE_GPU_PREFERENCE in the global scope of a source file that will be linked into the final executable. Typically it is best to place it where the main function is also defined.

+ +

Definition at line 69 of file GpuPreference.hpp.

+ +
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html new file mode 100644 index 0000000..f7646d0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
GpuPreference.hpp
+
+
+Go to the documentation of this file.
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GPUPREFERENCE_HPP
26 #define SFML_GPUPREFERENCE_HPP
27 
28 
32 #include <SFML/Config.hpp>
33 
34 
41 
42 
61 #if defined(SFML_SYSTEM_WINDOWS)
62 
63  #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE \
64  extern "C" __declspec(dllexport) unsigned long NvOptimusEnablement = 1; \
65  extern "C" __declspec(dllexport) unsigned long AmdPowerXpressRequestHighPerformance = 1;
66 
67 #else
68 
69  #define SFML_DEFINE_DISCRETE_GPU_PREFERENCE
70 
71 #endif
72 
73 
74 #endif // SFML_GPUPREFERENCE_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html new file mode 100644 index 0000000..fc75eb6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Graphics/Export.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GRAPHICS_EXPORT_HPP
26 #define SFML_GRAPHICS_EXPORT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
35 // Define portable import / export macros
37 #if defined(SFML_GRAPHICS_EXPORTS)
38 
39  #define SFML_GRAPHICS_API SFML_API_EXPORT
40 
41 #else
42 
43  #define SFML_GRAPHICS_API SFML_API_IMPORT
44 
45 #endif
46 
47 
48 #endif // SFML_GRAPHICS_EXPORT_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html new file mode 100644 index 0000000..696886f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Graphics.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_GRAPHICS_HPP
26 #define SFML_GRAPHICS_HPP
27 
29 // Headers
31 
32 #include <SFML/Window.hpp>
33 #include <SFML/Graphics/BlendMode.hpp>
34 #include <SFML/Graphics/CircleShape.hpp>
35 #include <SFML/Graphics/Color.hpp>
36 #include <SFML/Graphics/ConvexShape.hpp>
37 #include <SFML/Graphics/Drawable.hpp>
38 #include <SFML/Graphics/Font.hpp>
39 #include <SFML/Graphics/Glyph.hpp>
40 #include <SFML/Graphics/Image.hpp>
41 #include <SFML/Graphics/PrimitiveType.hpp>
42 #include <SFML/Graphics/Rect.hpp>
43 #include <SFML/Graphics/RectangleShape.hpp>
44 #include <SFML/Graphics/RenderStates.hpp>
45 #include <SFML/Graphics/RenderTarget.hpp>
46 #include <SFML/Graphics/RenderTexture.hpp>
47 #include <SFML/Graphics/RenderWindow.hpp>
48 #include <SFML/Graphics/Shader.hpp>
49 #include <SFML/Graphics/Shape.hpp>
50 #include <SFML/Graphics/Sprite.hpp>
51 #include <SFML/Graphics/Text.hpp>
52 #include <SFML/Graphics/Texture.hpp>
53 #include <SFML/Graphics/Transform.hpp>
54 #include <SFML/Graphics/Transformable.hpp>
55 #include <SFML/Graphics/Vertex.hpp>
56 #include <SFML/Graphics/VertexArray.hpp>
57 #include <SFML/Graphics/VertexBuffer.hpp>
58 #include <SFML/Graphics/View.hpp>
59 
60 
61 #endif // SFML_GRAPHICS_HPP
62 
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html new file mode 100644 index 0000000..b6c126c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Http.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_HTTP_HPP
26 #define SFML_HTTP_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/IpAddress.hpp>
33 #include <SFML/Network/TcpSocket.hpp>
34 #include <SFML/System/NonCopyable.hpp>
35 #include <SFML/System/Time.hpp>
36 #include <map>
37 #include <string>
38 
39 
40 namespace sf
41 {
46 class SFML_NETWORK_API Http : NonCopyable
47 {
48 public:
49 
54  class SFML_NETWORK_API Request
55  {
56  public:
57 
62  enum Method
63  {
64  Get,
65  Post,
66  Head,
67  Put,
68  Delete
69  };
70 
82  Request(const std::string& uri = "/", Method method = Get, const std::string& body = "");
83 
97  void setField(const std::string& field, const std::string& value);
98 
109  void setMethod(Method method);
110 
121  void setUri(const std::string& uri);
122 
132  void setHttpVersion(unsigned int major, unsigned int minor);
133 
144  void setBody(const std::string& body);
145 
146  private:
147 
148  friend class Http;
149 
159  std::string prepare() const;
160 
171  bool hasField(const std::string& field) const;
172 
174  // Types
176  typedef std::map<std::string, std::string> FieldTable;
177 
179  // Member data
181  FieldTable m_fields;
182  Method m_method;
183  std::string m_uri;
184  unsigned int m_majorVersion;
185  unsigned int m_minorVersion;
186  std::string m_body;
187  };
188 
193  class SFML_NETWORK_API Response
194  {
195  public:
196 
201  enum Status
202  {
203  // 2xx: success
204  Ok = 200,
205  Created = 201,
206  Accepted = 202,
207  NoContent = 204,
208  ResetContent = 205,
209  PartialContent = 206,
210 
211  // 3xx: redirection
212  MultipleChoices = 300,
213  MovedPermanently = 301,
214  MovedTemporarily = 302,
215  NotModified = 304,
216 
217  // 4xx: client error
218  BadRequest = 400,
219  Unauthorized = 401,
220  Forbidden = 403,
221  NotFound = 404,
222  RangeNotSatisfiable = 407,
223 
224  // 5xx: server error
225  InternalServerError = 500,
226  NotImplemented = 501,
227  BadGateway = 502,
228  ServiceNotAvailable = 503,
229  GatewayTimeout = 504,
230  VersionNotSupported = 505,
231 
232  // 10xx: SFML custom codes
233  InvalidResponse = 1000,
234  ConnectionFailed = 1001
235  };
236 
243  Response();
244 
257  const std::string& getField(const std::string& field) const;
258 
270  Status getStatus() const;
271 
280  unsigned int getMajorHttpVersion() const;
281 
290  unsigned int getMinorHttpVersion() const;
291 
304  const std::string& getBody() const;
305 
306  private:
307 
308  friend class Http;
309 
319  void parse(const std::string& data);
320 
321 
331  void parseFields(std::istream &in);
332 
334  // Types
336  typedef std::map<std::string, std::string> FieldTable;
337 
339  // Member data
341  FieldTable m_fields;
342  Status m_status;
343  unsigned int m_majorVersion;
344  unsigned int m_minorVersion;
345  std::string m_body;
346  };
347 
352  Http();
353 
368  Http(const std::string& host, unsigned short port = 0);
369 
385  void setHost(const std::string& host, unsigned short port = 0);
386 
405  Response sendRequest(const Request& request, Time timeout = Time::Zero);
406 
407 private:
408 
410  // Member data
412  TcpSocket m_connection;
413  IpAddress m_host;
414  std::string m_hostName;
415  unsigned short m_port;
416 };
417 
418 } // namespace sf
419 
420 
421 #endif // SFML_HTTP_HPP
422 
423 
Request in put mode, useful for a REST API.
Definition: Http.hpp:67
+
A HTTP client.
Definition: Http.hpp:46
+
Define a HTTP request.
Definition: Http.hpp:54
+
Define a HTTP response.
Definition: Http.hpp:193
+
Represents a time value.
Definition: Time.hpp:40
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+
Request in get mode, standard method to retrieve a page.
Definition: Http.hpp:64
+
Status
Enumerate all the valid status codes for a response.
Definition: Http.hpp:201
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
Method
Enumerate the available HTTP methods for a request.
Definition: Http.hpp:62
+
Specialized socket using the TCP protocol.
Definition: TcpSocket.hpp:46
+
Request a page&#39;s header only.
Definition: Http.hpp:66
+ +
Request in post mode, usually to send data to a page.
Definition: Http.hpp:65
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html new file mode 100644 index 0000000..d46b377 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Image.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_IMAGE_HPP
26 #define SFML_IMAGE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Color.hpp>
33 #include <SFML/Graphics/Rect.hpp>
34 #include <string>
35 #include <vector>
36 
37 
38 namespace sf
39 {
40 class InputStream;
41 
46 class SFML_GRAPHICS_API Image
47 {
48 public:
49 
56  Image();
57 
62  ~Image();
63 
72  void create(unsigned int width, unsigned int height, const Color& color = Color(0, 0, 0));
73 
87  void create(unsigned int width, unsigned int height, const Uint8* pixels);
88 
104  bool loadFromFile(const std::string& filename);
105 
122  bool loadFromMemory(const void* data, std::size_t size);
123 
139  bool loadFromStream(InputStream& stream);
140 
156  bool saveToFile(const std::string& filename) const;
157 
164  Vector2u getSize() const;
165 
177  void createMaskFromColor(const Color& color, Uint8 alpha = 0);
178 
199  void copy(const Image& source, unsigned int destX, unsigned int destY, const IntRect& sourceRect = IntRect(0, 0, 0, 0), bool applyAlpha = false);
200 
215  void setPixel(unsigned int x, unsigned int y, const Color& color);
216 
232  Color getPixel(unsigned int x, unsigned int y) const;
233 
247  const Uint8* getPixelsPtr() const;
248 
253  void flipHorizontally();
254 
259  void flipVertically();
260 
261 private:
262 
264  // Member data
266  Vector2u m_size;
267  std::vector<Uint8> m_pixels;
268 };
269 
270 } // namespace sf
271 
272 
273 #endif // SFML_IMAGE_HPP
274 
275 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+ + + +
Class for loading, manipulating and saving images.
Definition: Image.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html new file mode 100644 index 0000000..3604782 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
InputSoundFile.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_INPUTSOUNDFILE_HPP
26 #define SFML_INPUTSOUNDFILE_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 #include <SFML/System/Time.hpp>
34 #include <string>
35 #include <algorithm>
36 
37 
38 namespace sf
39 {
40 class InputStream;
41 class SoundFileReader;
42 
47 class SFML_AUDIO_API InputSoundFile : NonCopyable
48 {
49 public:
50 
56 
61  ~InputSoundFile();
62 
74  bool openFromFile(const std::string& filename);
75 
88  bool openFromMemory(const void* data, std::size_t sizeInBytes);
89 
101  bool openFromStream(InputStream& stream);
102 
109  Uint64 getSampleCount() const;
110 
117  unsigned int getChannelCount() const;
118 
125  unsigned int getSampleRate() const;
126 
136  Time getDuration() const;
137 
144  Time getTimeOffset() const;
145 
152  Uint64 getSampleOffset() const;
153 
171  void seek(Uint64 sampleOffset);
172 
185  void seek(Time timeOffset);
186 
196  Uint64 read(Int16* samples, Uint64 maxCount);
197 
198 private:
199 
204  void close();
205 
207  // Member data
209  SoundFileReader* m_reader;
210  InputStream* m_stream;
211  bool m_streamOwned;
212  Uint64 m_sampleOffset;
213  Uint64 m_sampleCount;
214  unsigned int m_channelCount;
215  unsigned int m_sampleRate;
216 };
217 
218 } // namespace sf
219 
220 
221 #endif // SFML_INPUTSOUNDFILE_HPP
222 
223 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Represents a time value.
Definition: Time.hpp:40
+
Provide read access to sound files.
+
Abstract base class for sound file decoding.
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html new file mode 100644 index 0000000..3c7333f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
InputStream.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_INPUTSTREAM_HPP
26 #define SFML_INPUTSTREAM_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 #include <SFML/System/Export.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_SYSTEM_API InputStream
42 {
43 public:
44 
49  virtual ~InputStream() {}
50 
63  virtual Int64 read(void* data, Int64 size) = 0;
64 
73  virtual Int64 seek(Int64 position) = 0;
74 
81  virtual Int64 tell() = 0;
82 
89  virtual Int64 getSize() = 0;
90 };
91 
92 } // namespace sf
93 
94 
95 #endif // SFML_INPUTSTREAM_HPP
96 
97 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
virtual ~InputStream()
Virtual destructor.
Definition: InputStream.hpp:49
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html new file mode 100644 index 0000000..892a5c9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
IpAddress.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_IPADDRESS_HPP
26 #define SFML_IPADDRESS_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/System/Time.hpp>
33 #include <istream>
34 #include <ostream>
35 #include <string>
36 
37 
38 namespace sf
39 {
44 class SFML_NETWORK_API IpAddress
45 {
46 public:
47 
54  IpAddress();
55 
65  IpAddress(const std::string& address);
66 
79  IpAddress(const char* address);
80 
94  IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3);
95 
109  explicit IpAddress(Uint32 address);
110 
123  std::string toString() const;
124 
139  Uint32 toInteger() const;
140 
155  static IpAddress getLocalAddress();
156 
179  static IpAddress getPublicAddress(Time timeout = Time::Zero);
180 
182  // Static member data
184  static const IpAddress None;
185  static const IpAddress Any;
186  static const IpAddress LocalHost;
187  static const IpAddress Broadcast;
188 
189 private:
190 
191  friend SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right);
192 
199  void resolve(const std::string& address);
200 
202  // Member data
204  Uint32 m_address;
205  bool m_valid;
206 };
207 
217 SFML_NETWORK_API bool operator ==(const IpAddress& left, const IpAddress& right);
218 
228 SFML_NETWORK_API bool operator !=(const IpAddress& left, const IpAddress& right);
229 
239 SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right);
240 
250 SFML_NETWORK_API bool operator >(const IpAddress& left, const IpAddress& right);
251 
261 SFML_NETWORK_API bool operator <=(const IpAddress& left, const IpAddress& right);
262 
272 SFML_NETWORK_API bool operator >=(const IpAddress& left, const IpAddress& right);
273 
283 SFML_NETWORK_API std::istream& operator >>(std::istream& stream, IpAddress& address);
284 
294 SFML_NETWORK_API std::ostream& operator <<(std::ostream& stream, const IpAddress& address);
295 
296 } // namespace sf
297 
298 
299 #endif // SFML_IPADDRESS_HPP
300 
301 
static const IpAddress None
Value representing an empty/invalid address.
Definition: IpAddress.hpp:184
+
static const IpAddress Any
Value representing any address (0.0.0.0)
Definition: IpAddress.hpp:185
+
Represents a time value.
Definition: Time.hpp:40
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+ +
static const IpAddress LocalHost
The "localhost" address (for connecting a computer to itself locally)
Definition: IpAddress.hpp:186
+
static const IpAddress Broadcast
The "broadcast" address (for sending UDP messages to everyone on a local network) ...
Definition: IpAddress.hpp:187
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html new file mode 100644 index 0000000..1e4a7de --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Joystick.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_JOYSTICK_HPP
26 #define SFML_JOYSTICK_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/String.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_WINDOW_API Joystick
42 {
43 public:
44 
49  enum
50  {
51  Count = 8,
52  ButtonCount = 32,
53  AxisCount = 8
54  };
55 
60  enum Axis
61  {
62  X,
63  Y,
64  Z,
65  R,
66  U,
67  V,
68  PovX,
69  PovY
70  };
71 
76  struct SFML_WINDOW_API Identification
77  {
79 
81  unsigned int vendorId;
82  unsigned int productId;
83  };
84 
93  static bool isConnected(unsigned int joystick);
94 
105  static unsigned int getButtonCount(unsigned int joystick);
106 
118  static bool hasAxis(unsigned int joystick, Axis axis);
119 
131  static bool isButtonPressed(unsigned int joystick, unsigned int button);
132 
144  static float getAxisPosition(unsigned int joystick, Axis axis);
145 
154  static Identification getIdentification(unsigned int joystick);
155 
165  static void update();
166 };
167 
168 } // namespace sf
169 
170 
171 #endif // SFML_JOYSTICK_HPP
172 
173 
The Y axis.
Definition: Joystick.hpp:63
+
The X axis of the point-of-view hat.
Definition: Joystick.hpp:68
+
Give access to the real-time state of the joysticks.
Definition: Joystick.hpp:41
+
Axis
Axes supported by SFML joysticks.
Definition: Joystick.hpp:60
+
unsigned int productId
Product identifier.
Definition: Joystick.hpp:82
+
Structure holding a joystick&#39;s identification.
Definition: Joystick.hpp:76
+
The X axis.
Definition: Joystick.hpp:62
+
The R axis.
Definition: Joystick.hpp:65
+
unsigned int vendorId
Manufacturer identifier.
Definition: Joystick.hpp:81
+
The U axis.
Definition: Joystick.hpp:66
+
String name
Name of the joystick.
Definition: Joystick.hpp:80
+ +
The V axis.
Definition: Joystick.hpp:67
+
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
The Z axis.
Definition: Joystick.hpp:64
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html new file mode 100644 index 0000000..ebd46c5 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html @@ -0,0 +1,160 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Keyboard.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_KEYBOARD_HPP
26 #define SFML_KEYBOARD_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 
33 
34 namespace sf
35 {
40 class SFML_WINDOW_API Keyboard
41 {
42 public:
43 
48  enum Key
49  {
50  Unknown = -1,
51  A = 0,
52  B,
53  C,
54  D,
55  E,
56  F,
57  G,
58  H,
59  I,
60  J,
61  K,
62  L,
63  M,
64  N,
65  O,
66  P,
67  Q,
68  R,
69  S,
70  T,
71  U,
72  V,
73  W,
74  X,
75  Y,
76  Z,
77  Num0,
78  Num1,
79  Num2,
80  Num3,
81  Num4,
82  Num5,
83  Num6,
84  Num7,
85  Num8,
86  Num9,
90  LAlt,
94  RAlt,
96  Menu,
111  Tab,
114  End,
118  Add,
124  Up,
136  F1,
137  F2,
138  F3,
139  F4,
140  F5,
141  F6,
142  F7,
143  F8,
144  F9,
145  F10,
146  F11,
147  F12,
148  F13,
149  F14,
150  F15,
152 
154 
155  // Deprecated values:
156 
157  Dash = Hyphen,
158  BackSpace = Backspace,
159  BackSlash = Backslash,
160  SemiColon = Semicolon,
161  Return = Enter
162  };
163 
172  static bool isKeyPressed(Key key);
173 
187  static void setVirtualKeyboardVisible(bool visible);
188 };
189 
190 } // namespace sf
191 
192 
193 #endif // SFML_KEYBOARD_HPP
194 
195 
The Backspace key.
Definition: Keyboard.hpp:110
+
The J key.
Definition: Keyboard.hpp:60
+
The F14 key.
Definition: Keyboard.hpp:149
+
The left Alt key.
Definition: Keyboard.hpp:90
+
The F7 key.
Definition: Keyboard.hpp:142
+
Keep last – the total number of keyboard keys.
Definition: Keyboard.hpp:153
+
The &#39; key.
Definition: Keyboard.hpp:102
+
The F key.
Definition: Keyboard.hpp:56
+
The K key.
Definition: Keyboard.hpp:61
+
The numpad 0 key.
Definition: Keyboard.hpp:126
+
The Enter/Return keys.
Definition: Keyboard.hpp:109
+
The numpad 2 key.
Definition: Keyboard.hpp:128
+
Give access to the real-time state of the keyboard.
Definition: Keyboard.hpp:40
+
The H key.
Definition: Keyboard.hpp:58
+
The numpad 6 key.
Definition: Keyboard.hpp:132
+
The left Control key.
Definition: Keyboard.hpp:88
+
The Space key.
Definition: Keyboard.hpp:108
+
The Q key.
Definition: Keyboard.hpp:67
+
The Y key.
Definition: Keyboard.hpp:75
+
The Menu key.
Definition: Keyboard.hpp:96
+
The G key.
Definition: Keyboard.hpp:57
+ +
The 5 key.
Definition: Keyboard.hpp:82
+
The X key.
Definition: Keyboard.hpp:74
+
The Page down key.
Definition: Keyboard.hpp:113
+
The right Control key.
Definition: Keyboard.hpp:92
+
The V key.
Definition: Keyboard.hpp:72
+ +
Left arrow.
Definition: Keyboard.hpp:122
+
The 0 key.
Definition: Keyboard.hpp:77
+ + +
The F2 key.
Definition: Keyboard.hpp:137
+
The Z key.
Definition: Keyboard.hpp:76
+
The P key.
Definition: Keyboard.hpp:66
+
Right arrow.
Definition: Keyboard.hpp:123
+
The M key.
Definition: Keyboard.hpp:63
+
The F4 key.
Definition: Keyboard.hpp:139
+
The + key.
Definition: Keyboard.hpp:118
+
The Home key.
Definition: Keyboard.hpp:115
+
The 8 key.
Definition: Keyboard.hpp:85
+ +
The numpad 1 key.
Definition: Keyboard.hpp:127
+
The left Shift key.
Definition: Keyboard.hpp:89
+
The left OS specific key: window (Windows and Linux), apple (MacOS X), ...
Definition: Keyboard.hpp:91
+
The Escape key.
Definition: Keyboard.hpp:87
+
The 3 key.
Definition: Keyboard.hpp:80
+
The F12 key.
Definition: Keyboard.hpp:147
+
The U key.
Definition: Keyboard.hpp:71
+
The 6 key.
Definition: Keyboard.hpp:83
+
The numpad 5 key.
Definition: Keyboard.hpp:131
+
The right Alt key.
Definition: Keyboard.hpp:94
+
The numpad 8 key.
Definition: Keyboard.hpp:134
+
The N key.
Definition: Keyboard.hpp:64
+
Key
Key codes.
Definition: Keyboard.hpp:48
+
The S key.
Definition: Keyboard.hpp:69
+
The F13 key.
Definition: Keyboard.hpp:148
+
The F10 key.
Definition: Keyboard.hpp:145
+
The W key.
Definition: Keyboard.hpp:73
+
The F3 key.
Definition: Keyboard.hpp:138
+ +
The F6 key.
Definition: Keyboard.hpp:141
+
The 2 key.
Definition: Keyboard.hpp:79
+
The 1 key.
Definition: Keyboard.hpp:78
+
The R key.
Definition: Keyboard.hpp:68
+ +
The right OS specific key: window (Windows and Linux), apple (MacOS X), ...
Definition: Keyboard.hpp:95
+
The Pause key.
Definition: Keyboard.hpp:151
+
Down arrow.
Definition: Keyboard.hpp:125
+
The B key.
Definition: Keyboard.hpp:52
+ +
The Tabulation key.
Definition: Keyboard.hpp:111
+
The F8 key.
Definition: Keyboard.hpp:143
+ + +
The numpad 4 key.
Definition: Keyboard.hpp:130
+
The T key.
Definition: Keyboard.hpp:70
+
The F5 key.
Definition: Keyboard.hpp:140
+
The F15 key.
Definition: Keyboard.hpp:150
+ + +
The Delete key.
Definition: Keyboard.hpp:117
+
The numpad 9 key.
Definition: Keyboard.hpp:135
+
The F11 key.
Definition: Keyboard.hpp:146
+
The Insert key.
Definition: Keyboard.hpp:116
+
The O key.
Definition: Keyboard.hpp:65
+
The End key.
Definition: Keyboard.hpp:114
+
The 4 key.
Definition: Keyboard.hpp:81
+
The numpad 7 key.
Definition: Keyboard.hpp:133
+
The right Shift key.
Definition: Keyboard.hpp:93
+
The C key.
Definition: Keyboard.hpp:53
+
The 9 key.
Definition: Keyboard.hpp:86
+
The F1 key.
Definition: Keyboard.hpp:136
+
The D key.
Definition: Keyboard.hpp:54
+
The - key (hyphen)
Definition: Keyboard.hpp:107
+
The L key.
Definition: Keyboard.hpp:62
+
The - key (minus, usually from numpad)
Definition: Keyboard.hpp:119
+
The Page up key.
Definition: Keyboard.hpp:112
+
The F9 key.
Definition: Keyboard.hpp:144
+
The numpad 3 key.
Definition: Keyboard.hpp:129
+
The 7 key.
Definition: Keyboard.hpp:84
+
The I key.
Definition: Keyboard.hpp:59
+
Up arrow.
Definition: Keyboard.hpp:124
+
The E key.
Definition: Keyboard.hpp:55
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html new file mode 100644 index 0000000..ef1595d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Listener.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_LISTENER_HPP
26 #define SFML_LISTENER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/System/Vector3.hpp>
33 
34 
35 namespace sf
36 {
42 class SFML_AUDIO_API Listener
43 {
44 public:
45 
58  static void setGlobalVolume(float volume);
59 
68  static float getGlobalVolume();
69 
82  static void setPosition(float x, float y, float z);
83 
94  static void setPosition(const Vector3f& position);
95 
104  static Vector3f getPosition();
105 
123  static void setDirection(float x, float y, float z);
124 
140  static void setDirection(const Vector3f& direction);
141 
150  static Vector3f getDirection();
151 
169  static void setUpVector(float x, float y, float z);
170 
186  static void setUpVector(const Vector3f& upVector);
187 
196  static Vector3f getUpVector();
197 };
198 
199 } // namespace sf
200 
201 
202 #endif // SFML_LISTENER_HPP
203 
204 
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
The audio listener is the point in the scene from where all the sounds are heard. ...
Definition: Listener.hpp:42
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html new file mode 100644 index 0000000..62f1ac9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Lock.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_LOCK_HPP
26 #define SFML_LOCK_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 
34 
35 namespace sf
36 {
37 class Mutex;
38 
43 class SFML_SYSTEM_API Lock : NonCopyable
44 {
45 public:
46 
55  explicit Lock(Mutex& mutex);
56 
63  ~Lock();
64 
65 private:
66 
68  // Member data
70  Mutex& m_mutex;
71 };
72 
73 } // namespace sf
74 
75 
76 #endif // SFML_LOCK_HPP
77 
78 
Blocks concurrent access to shared resources from multiple threads.
Definition: Mutex.hpp:47
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
Automatic wrapper for locking and unlocking mutexes.
Definition: Lock.hpp:43
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html new file mode 100644 index 0000000..6279c1f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Main.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_MAIN_HPP
26 #define SFML_MAIN_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
34 #if defined(SFML_SYSTEM_IOS)
35 
36  // On iOS, we have no choice but to have our own main,
37  // so we need to rename the user one and call it later
38  #define main sfmlMain
39 
40 #endif
41 
42 
43 #endif // SFML_MAIN_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html new file mode 100644 index 0000000..6c8648b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
MemoryInputStream.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_MEMORYINPUTSTREAM_HPP
26 #define SFML_MEMORYINPUTSTREAM_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 #include <SFML/System/InputStream.hpp>
33 #include <SFML/System/Export.hpp>
34 #include <cstdlib>
35 
36 
37 namespace sf
38 {
43 class SFML_SYSTEM_API MemoryInputStream : public InputStream
44 {
45 public:
46 
52 
60  void open(const void* data, std::size_t sizeInBytes);
61 
74  virtual Int64 read(void* data, Int64 size);
75 
84  virtual Int64 seek(Int64 position);
85 
92  virtual Int64 tell();
93 
100  virtual Int64 getSize();
101 
102 private:
103 
105  // Member data
107  const char* m_data;
108  Int64 m_size;
109  Int64 m_offset;
110 };
111 
112 } // namespace sf
113 
114 
115 #endif // SFML_MEMORYINPUTSTREAM_HPP
116 
117 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Implementation of input stream based on a memory chunk.
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html new file mode 100644 index 0000000..40e99e7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html @@ -0,0 +1,68 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Mouse.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_MOUSE_HPP
26 #define SFML_MOUSE_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/Vector2.hpp>
33 
34 
35 namespace sf
36 {
37 class Window;
38 
43 class SFML_WINDOW_API Mouse
44 {
45 public:
46 
51  enum Button
52  {
53  Left,
58 
59  ButtonCount
60  };
61 
66  enum Wheel
67  {
69  HorizontalWheel
70  };
71 
80  static bool isButtonPressed(Button button);
81 
91  static Vector2i getPosition();
92 
104  static Vector2i getPosition(const Window& relativeTo);
105 
115  static void setPosition(const Vector2i& position);
116 
127  static void setPosition(const Vector2i& position, const Window& relativeTo);
128 };
129 
130 } // namespace sf
131 
132 
133 #endif // SFML_MOUSE_HPP
134 
135 
The vertical mouse wheel.
Definition: Mouse.hpp:68
+
Window that serves as a target for OpenGL rendering.
+
The first extra mouse button.
Definition: Mouse.hpp:56
+
Give access to the real-time state of the mouse.
Definition: Mouse.hpp:43
+
The middle (wheel) mouse button.
Definition: Mouse.hpp:55
+
The left mouse button.
Definition: Mouse.hpp:53
+
The right mouse button.
Definition: Mouse.hpp:54
+
Wheel
Mouse wheels.
Definition: Mouse.hpp:66
+
Button
Mouse buttons.
Definition: Mouse.hpp:51
+ +
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
The second extra mouse button.
Definition: Mouse.hpp:57
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html new file mode 100644 index 0000000..1070211 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Music.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_MUSIC_HPP
26 #define SFML_MUSIC_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/SoundStream.hpp>
33 #include <SFML/Audio/InputSoundFile.hpp>
34 #include <SFML/System/Mutex.hpp>
35 #include <SFML/System/Time.hpp>
36 #include <string>
37 #include <vector>
38 
39 
40 namespace sf
41 {
42 class InputStream;
43 
48 class SFML_AUDIO_API Music : public SoundStream
49 {
50 public:
51 
56  template <typename T>
57  struct Span
58  {
63  Span()
64  {
65 
66  }
67 
75  Span(T off, T len):
76  offset(off),
77  length(len)
78  {
79 
80  }
81 
82  T offset;
83  T length;
84  };
85 
86  // Define the relevant Span types
87  typedef Span<Time> TimeSpan;
88 
93  Music();
94 
99  ~Music();
100 
120  bool openFromFile(const std::string& filename);
121 
143  bool openFromMemory(const void* data, std::size_t sizeInBytes);
144 
164  bool openFromStream(InputStream& stream);
165 
172  Time getDuration() const;
173 
189  TimeSpan getLoopPoints() const;
190 
211  void setLoopPoints(TimeSpan timePoints);
212 
213 protected:
214 
226  virtual bool onGetData(Chunk& data);
227 
234  virtual void onSeek(Time timeOffset);
235 
246  virtual Int64 onLoop();
247 
248 private:
249 
254  void initialize();
255 
264  Uint64 timeToSamples(Time position) const;
265 
274  Time samplesToTime(Uint64 samples) const;
275 
277  // Member data
279  InputSoundFile m_file;
280  std::vector<Int16> m_samples;
281  Mutex m_mutex;
282  Span<Uint64> m_loopSpan;
283 };
284 
285 } // namespace sf
286 
287 
288 #endif // SFML_MUSIC_HPP
289 
290 
Structure defining a chunk of audio data to stream.
Definition: SoundStream.hpp:53
+
Blocks concurrent access to shared resources from multiple threads.
Definition: Mutex.hpp:47
+
Streamed music played from an audio file.
Definition: Music.hpp:48
+
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Represents a time value.
Definition: Time.hpp:40
+
Provide read access to sound files.
+
Abstract base class for streamed audio sources.
Definition: SoundStream.hpp:45
+
Span()
Default constructor.
Definition: Music.hpp:63
+
T length
The length of the time range.
Definition: Music.hpp:83
+
Structure defining a time range using the template type.
Definition: Music.hpp:57
+ +
T offset
The beginning offset of the time range.
Definition: Music.hpp:82
+
Span(T off, T len)
Initialization constructor.
Definition: Music.hpp:75
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html new file mode 100644 index 0000000..44a1e11 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Mutex.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_MUTEX_HPP
26 #define SFML_MUTEX_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 
34 
35 namespace sf
36 {
37 namespace priv
38 {
39  class MutexImpl;
40 }
41 
47 class SFML_SYSTEM_API Mutex : NonCopyable
48 {
49 public:
50 
55  Mutex();
56 
61  ~Mutex();
62 
73  void lock();
74 
81  void unlock();
82 
83 private:
84 
86  // Member data
88  priv::MutexImpl* m_mutexImpl;
89 };
90 
91 } // namespace sf
92 
93 
94 #endif // SFML_MUTEX_HPP
95 
96 
Blocks concurrent access to shared resources from multiple threads.
Definition: Mutex.hpp:47
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html new file mode 100644 index 0000000..60bc46d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
NativeActivity.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_NATIVEACTIVITY_HPP
26 #define SFML_NATIVEACTIVITY_HPP
27 
28 
30 // Headers
32 #include <SFML/System/Export.hpp>
33 
34 
35 #if !defined(SFML_SYSTEM_ANDROID)
36 #error NativeActivity.hpp: This header is Android only.
37 #endif
38 
39 
40 struct ANativeActivity;
41 
42 namespace sf
43 {
57 SFML_SYSTEM_API ANativeActivity* getNativeActivity();
58 
59 } // namespace sf
60 
61 
62 #endif // SFML_NATIVEACTIVITY_HPP
+
ANativeActivity * getNativeActivity()
Return a pointer to the Android native activity.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html new file mode 100644 index 0000000..c81d8c8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Network/Export.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_NETWORK_EXPORT_HPP
26 #define SFML_NETWORK_EXPORT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
35 // Define portable import / export macros
37 #if defined(SFML_NETWORK_EXPORTS)
38 
39  #define SFML_NETWORK_API SFML_API_EXPORT
40 
41 #else
42 
43  #define SFML_NETWORK_API SFML_API_IMPORT
44 
45 #endif
46 
47 
48 #endif // SFML_NETWORK_EXPORT_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html new file mode 100644 index 0000000..2c92f74 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Network.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_NETWORK_HPP
26 #define SFML_NETWORK_HPP
27 
29 // Headers
31 
32 #include <SFML/System.hpp>
33 #include <SFML/Network/Ftp.hpp>
34 #include <SFML/Network/Http.hpp>
35 #include <SFML/Network/IpAddress.hpp>
36 #include <SFML/Network/Packet.hpp>
37 #include <SFML/Network/Socket.hpp>
38 #include <SFML/Network/SocketHandle.hpp>
39 #include <SFML/Network/SocketSelector.hpp>
40 #include <SFML/Network/TcpListener.hpp>
41 #include <SFML/Network/TcpSocket.hpp>
42 #include <SFML/Network/UdpSocket.hpp>
43 
44 
45 #endif // SFML_NETWORK_HPP
46 
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html new file mode 100644 index 0000000..854e164 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
NonCopyable.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_NONCOPYABLE_HPP
26 #define SFML_NONCOPYABLE_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 
33 
34 namespace sf
35 {
41 class SFML_SYSTEM_API NonCopyable
42 {
43 protected:
44 
54 
64 
65 private:
66 
77  NonCopyable(const NonCopyable&);
78 
89  NonCopyable& operator =(const NonCopyable&);
90 };
91 
92 } // namespace sf
93 
94 
95 #endif // SFML_NONCOPYABLE_HPP
96 
97 
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
NonCopyable()
Default constructor.
Definition: NonCopyable.hpp:53
+
~NonCopyable()
Default destructor.
Definition: NonCopyable.hpp:63
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html new file mode 100644 index 0000000..fca5f21 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
OpenGL.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_OPENGL_HPP
26 #define SFML_OPENGL_HPP
27 
28 
32 #include <SFML/Config.hpp>
33 
34 
39 #if defined(SFML_SYSTEM_WINDOWS)
40 
41  // The Visual C++ version of gl.h uses WINGDIAPI and APIENTRY but doesn't define them
42  #ifdef _MSC_VER
43  #include <windows.h>
44  #endif
45 
46  #include <GL/gl.h>
47 
48 #elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) || defined(SFML_SYSTEM_OPENBSD)
49 
50  #if defined(SFML_OPENGL_ES)
51  #include <GLES/gl.h>
52  #include <GLES/glext.h>
53  #else
54  #include <GL/gl.h>
55  #endif
56 
57 #elif defined(SFML_SYSTEM_MACOS)
58 
59  #include <OpenGL/gl.h>
60 
61 #elif defined (SFML_SYSTEM_IOS)
62 
63  #include <OpenGLES/ES1/gl.h>
64  #include <OpenGLES/ES1/glext.h>
65 
66 #elif defined (SFML_SYSTEM_ANDROID)
67 
68  #include <GLES/gl.h>
69  #include <GLES/glext.h>
70 
71  // We're not using OpenGL ES 2+ yet, but we can use the sRGB extension
72  #include <GLES2/gl2platform.h>
73  #include <GLES2/gl2ext.h>
74 
75 #endif
76 
77 
78 #endif // SFML_OPENGL_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html new file mode 100644 index 0000000..8deab6e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
OutputSoundFile.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_OUTPUTSOUNDFILE_HPP
26 #define SFML_OUTPUTSOUNDFILE_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 #include <string>
34 
35 
36 namespace sf
37 {
38 class SoundFileWriter;
39 
44 class SFML_AUDIO_API OutputSoundFile : NonCopyable
45 {
46 public:
47 
53 
60  ~OutputSoundFile();
61 
74  bool openFromFile(const std::string& filename, unsigned int sampleRate, unsigned int channelCount);
75 
83  void write(const Int16* samples, Uint64 count);
84 
85 private:
86 
91  void close();
92 
94  // Member data
96  SoundFileWriter* m_writer;
97 };
98 
99 } // namespace sf
100 
101 
102 #endif // SFML_OUTPUTSOUNDFILE_HPP
103 
104 
Provide write access to sound files.
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
Abstract base class for sound file encoding.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html new file mode 100644 index 0000000..c04c1e2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Packet.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_PACKET_HPP
26 #define SFML_PACKET_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <string>
33 #include <vector>
34 
35 
36 namespace sf
37 {
38 class String;
39 class TcpSocket;
40 class UdpSocket;
41 
47 class SFML_NETWORK_API Packet
48 {
49  // A bool-like type that cannot be converted to integer or pointer types
50  typedef bool (Packet::*BoolType)(std::size_t);
51 
52 public:
53 
60  Packet();
61 
66  virtual ~Packet();
67 
77  void append(const void* data, std::size_t sizeInBytes);
78 
87  void clear();
88 
102  const void* getData() const;
103 
115  std::size_t getDataSize() const;
116 
129  bool endOfPacket() const;
130 
131 public:
132 
171  operator BoolType() const;
172 
177  Packet& operator >>(bool& data);
178 
182  Packet& operator >>(Int8& data);
183 
187  Packet& operator >>(Uint8& data);
188 
192  Packet& operator >>(Int16& data);
193 
197  Packet& operator >>(Uint16& data);
198 
202  Packet& operator >>(Int32& data);
203 
207  Packet& operator >>(Uint32& data);
208 
212  Packet& operator >>(Int64& data);
213 
217  Packet& operator >>(Uint64& data);
218 
222  Packet& operator >>(float& data);
223 
227  Packet& operator >>(double& data);
228 
232  Packet& operator >>(char* data);
233 
237  Packet& operator >>(std::string& data);
238 
242  Packet& operator >>(wchar_t* data);
243 
247  Packet& operator >>(std::wstring& data);
248 
252  Packet& operator >>(String& data);
253 
258  Packet& operator <<(bool data);
259 
263  Packet& operator <<(Int8 data);
264 
268  Packet& operator <<(Uint8 data);
269 
273  Packet& operator <<(Int16 data);
274 
278  Packet& operator <<(Uint16 data);
279 
283  Packet& operator <<(Int32 data);
284 
288  Packet& operator <<(Uint32 data);
289 
293  Packet& operator <<(Int64 data);
294 
298  Packet& operator <<(Uint64 data);
299 
303  Packet& operator <<(float data);
304 
308  Packet& operator <<(double data);
309 
313  Packet& operator <<(const char* data);
314 
318  Packet& operator <<(const std::string& data);
319 
323  Packet& operator <<(const wchar_t* data);
324 
328  Packet& operator <<(const std::wstring& data);
329 
333  Packet& operator <<(const String& data);
334 
335 protected:
336 
337  friend class TcpSocket;
338  friend class UdpSocket;
339 
358  virtual const void* onSend(std::size_t& size);
359 
377  virtual void onReceive(const void* data, std::size_t size);
378 
379 private:
380 
385  bool operator ==(const Packet& right) const;
386  bool operator !=(const Packet& right) const;
387 
398  bool checkSize(std::size_t size);
399 
401  // Member data
403  std::vector<char> m_data;
404  std::size_t m_readPos;
405  std::size_t m_sendPos;
406  bool m_isValid;
407 };
408 
409 } // namespace sf
410 
411 
412 #endif // SFML_PACKET_HPP
413 
414 
Specialized socket using the UDP protocol.
Definition: UdpSocket.hpp:45
+
Utility class to build blocks of data to transfer over the network.
Definition: Packet.hpp:47
+
Specialized socket using the TCP protocol.
Definition: TcpSocket.hpp:46
+ +
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html new file mode 100644 index 0000000..ece954a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html @@ -0,0 +1,68 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
PrimitiveType.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_PRIMITIVETYPE_HPP
26 #define SFML_PRIMITIVETYPE_HPP
27 
28 namespace sf
29 {
40 {
48 
49  // Deprecated names
53 };
54 
55 } // namespace sf
56 
57 
58 #endif // SFML_PRIMITIVETYPE_HPP
PrimitiveType
Types of primitives that a sf::VertexArray can render.
+ +
List of individual triangles.
+ +
List of individual quads (deprecated, don&#39;t work with OpenGL ES)
+
List of individual points.
+ +
List of connected triangles, a point uses the two previous points to form a triangle.
+
List of individual lines.
+ +
List of connected triangles, a point uses the common center and the previous point to form a triangle...
+
List of connected lines, a point uses the previous point to form a line.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html new file mode 100644 index 0000000..5787542 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Rect.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RECT_HPP
26 #define SFML_RECT_HPP
27 
29 // Headers
31 #include <SFML/System/Vector2.hpp>
32 #include <algorithm>
33 
34 
35 namespace sf
36 {
41 template <typename T>
42 class Rect
43 {
44 public:
45 
53  Rect();
54 
67  Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight);
68 
79  Rect(const Vector2<T>& position, const Vector2<T>& size);
80 
92  template <typename U>
93  explicit Rect(const Rect<U>& rectangle);
94 
109  bool contains(T x, T y) const;
110 
124  bool contains(const Vector2<T>& point) const;
125 
136  bool intersects(const Rect<T>& rectangle) const;
137 
152  bool intersects(const Rect<T>& rectangle, Rect<T>& intersection) const;
153 
155  // Member data
157  T left;
158  T top;
159  T width;
160  T height;
161 };
162 
175 template <typename T>
176 bool operator ==(const Rect<T>& left, const Rect<T>& right);
177 
190 template <typename T>
191 bool operator !=(const Rect<T>& left, const Rect<T>& right);
192 
193 #include <SFML/Graphics/Rect.inl>
194 
195 // Create typedefs for the most common types
196 typedef Rect<int> IntRect;
197 typedef Rect<float> FloatRect;
198 
199 } // namespace sf
200 
201 
202 #endif // SFML_RECT_HPP
203 
204 
bool contains(T x, T y) const
Check if a point is inside the rectangle&#39;s area.
+
T height
Height of the rectangle.
Definition: Rect.hpp:160
+
T width
Width of the rectangle.
Definition: Rect.hpp:159
+
Rect()
Default constructor.
+
Utility class for manipulating 2D axis aligned rectangles.
Definition: Rect.hpp:42
+ +
bool intersects(const Rect< T > &rectangle) const
Check the intersection between two rectangles.
+
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
T top
Top coordinate of the rectangle.
Definition: Rect.hpp:158
+
T left
Left coordinate of the rectangle.
Definition: Rect.hpp:157
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html new file mode 100644 index 0000000..0d87558 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
RectangleShape.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RECTANGLESHAPE_HPP
26 #define SFML_RECTANGLESHAPE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Shape.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_GRAPHICS_API RectangleShape : public Shape
42 {
43 public:
44 
51  explicit RectangleShape(const Vector2f& size = Vector2f(0, 0));
52 
61  void setSize(const Vector2f& size);
62 
71  const Vector2f& getSize() const;
72 
80  virtual std::size_t getPointCount() const;
81 
95  virtual Vector2f getPoint(std::size_t index) const;
96 
97 private:
98 
100  // Member data
102  Vector2f m_size;
103 };
104 
105 } // namespace sf
106 
107 
108 #endif // SFML_RECTANGLESHAPE_HPP
109 
110 
Base class for textured shapes with outline.
Definition: Shape.hpp:44
+
Specialized shape representing a rectangle.
+ + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html new file mode 100644 index 0000000..6fe417a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
RenderStates.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RENDERSTATES_HPP
26 #define SFML_RENDERSTATES_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/BlendMode.hpp>
33 #include <SFML/Graphics/Transform.hpp>
34 
35 
36 namespace sf
37 {
38 class Shader;
39 class Texture;
40 
45 class SFML_GRAPHICS_API RenderStates
46 {
47 public:
48 
61  RenderStates();
62 
69  RenderStates(const BlendMode& theBlendMode);
70 
77  RenderStates(const Transform& theTransform);
78 
85  RenderStates(const Texture* theTexture);
86 
93  RenderStates(const Shader* theShader);
94 
104  RenderStates(const BlendMode& theBlendMode, const Transform& theTransform,
105  const Texture* theTexture, const Shader* theShader);
106 
108  // Static member data
110  static const RenderStates Default;
111 
113  // Member data
117  const Texture* texture;
118  const Shader* shader;
119 };
120 
121 } // namespace sf
122 
123 
124 #endif // SFML_RENDERSTATES_HPP
125 
126 
const Shader * shader
Shader.
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
const Texture * texture
Texture.
+
Define the states used for drawing to a RenderTarget.
+
BlendMode blendMode
Blending mode.
+
Transform transform
Transform.
+
Blending modes for drawing.
Definition: BlendMode.hpp:41
+
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+ +
Shader class (vertex, geometry and fragment)
Definition: Shader.hpp:52
+
static const RenderStates Default
Special instance holding the default render states.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html new file mode 100644 index 0000000..67db3ad --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html @@ -0,0 +1,73 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
RenderTarget.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RENDERTARGET_HPP
26 #define SFML_RENDERTARGET_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Color.hpp>
33 #include <SFML/Graphics/Rect.hpp>
34 #include <SFML/Graphics/View.hpp>
35 #include <SFML/Graphics/Transform.hpp>
36 #include <SFML/Graphics/BlendMode.hpp>
37 #include <SFML/Graphics/RenderStates.hpp>
38 #include <SFML/Graphics/PrimitiveType.hpp>
39 #include <SFML/Graphics/Vertex.hpp>
40 #include <SFML/System/NonCopyable.hpp>
41 
42 
43 namespace sf
44 {
45 class Drawable;
46 class VertexBuffer;
47 
52 class SFML_GRAPHICS_API RenderTarget : NonCopyable
53 {
54 public:
55 
60  virtual ~RenderTarget();
61 
71  void clear(const Color& color = Color(0, 0, 0, 255));
72 
92  void setView(const View& view);
93 
102  const View& getView() const;
103 
115  const View& getDefaultView() const;
116 
130  IntRect getViewport(const View& view) const;
131 
150  Vector2f mapPixelToCoords(const Vector2i& point) const;
151 
181  Vector2f mapPixelToCoords(const Vector2i& point, const View& view) const;
182 
201  Vector2i mapCoordsToPixel(const Vector2f& point) const;
202 
228  Vector2i mapCoordsToPixel(const Vector2f& point, const View& view) const;
229 
237  void draw(const Drawable& drawable, const RenderStates& states = RenderStates::Default);
238 
248  void draw(const Vertex* vertices, std::size_t vertexCount,
249  PrimitiveType type, const RenderStates& states = RenderStates::Default);
250 
258  void draw(const VertexBuffer& vertexBuffer, const RenderStates& states = RenderStates::Default);
259 
269  void draw(const VertexBuffer& vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates& states = RenderStates::Default);
270 
277  virtual Vector2u getSize() const = 0;
278 
299  virtual bool setActive(bool active = true);
300 
333  void pushGLStates();
334 
344  void popGLStates();
345 
367  void resetGLStates();
368 
369 protected:
370 
375  RenderTarget();
376 
384  void initialize();
385 
386 private:
387 
392  void applyCurrentView();
393 
400  void applyBlendMode(const BlendMode& mode);
401 
408  void applyTransform(const Transform& transform);
409 
416  void applyTexture(const Texture* texture);
417 
424  void applyShader(const Shader* shader);
425 
433  void setupDraw(bool useVertexCache, const RenderStates& states);
434 
443  void drawPrimitives(PrimitiveType type, std::size_t firstVertex, std::size_t vertexCount);
444 
451  void cleanupDraw(const RenderStates& states);
452 
457  struct StatesCache
458  {
459  enum {VertexCacheSize = 4};
460 
461  bool enable;
462  bool glStatesSet;
463  bool viewChanged;
464  BlendMode lastBlendMode;
465  Uint64 lastTextureId;
466  bool texCoordsArrayEnabled;
467  bool useVertexCache;
468  Vertex vertexCache[VertexCacheSize];
469  };
470 
472  // Member data
474  View m_defaultView;
475  View m_view;
476  StatesCache m_cache;
477  Uint64 m_id;
478 };
479 
480 } // namespace sf
481 
482 
483 #endif // SFML_RENDERTARGET_HPP
484 
485 
PrimitiveType
Types of primitives that a sf::VertexArray can render.
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
Define the states used for drawing to a RenderTarget.
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
2D camera that defines what region is shown on screen
Definition: View.hpp:43
+
Blending modes for drawing.
Definition: BlendMode.hpp:41
+
Vertex buffer storage for one or more 2D primitives.
+
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+
Define a point with color and texture coordinates.
Definition: Vertex.hpp:42
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ + + +
Shader class (vertex, geometry and fragment)
Definition: Shader.hpp:52
+
static const RenderStates Default
Special instance holding the default render states.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html new file mode 100644 index 0000000..9c69601 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
RenderTexture.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RENDERTEXTURE_HPP
26 #define SFML_RENDERTEXTURE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Texture.hpp>
33 #include <SFML/Graphics/RenderTarget.hpp>
34 #include <SFML/Window/ContextSettings.hpp>
35 
36 
37 namespace sf
38 {
39 namespace priv
40 {
41  class RenderTextureImpl;
42 }
43 
48 class SFML_GRAPHICS_API RenderTexture : public RenderTarget
49 {
50 public:
51 
61  RenderTexture();
62 
67  virtual ~RenderTexture();
68 
89  SFML_DEPRECATED bool create(unsigned int width, unsigned int height, bool depthBuffer);
90 
109  bool create(unsigned int width, unsigned int height, const ContextSettings& settings = ContextSettings());
110 
117  static unsigned int getMaximumAntialiasingLevel();
118 
130  void setSmooth(bool smooth);
131 
140  bool isSmooth() const;
141 
153  void setRepeated(bool repeated);
154 
163  bool isRepeated() const;
164 
179  bool generateMipmap();
180 
196  bool setActive(bool active = true);
197 
207  void display();
208 
218  virtual Vector2u getSize() const;
219 
234  const Texture& getTexture() const;
235 
236 private:
237 
239  // Member data
241  priv::RenderTextureImpl* m_impl;
242  Texture m_texture;
243 };
244 
245 } // namespace sf
246 
247 
248 #endif // SFML_RENDERTEXTURE_HPP
249 
250 
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
Target for off-screen 2D rendering into a texture.
+
Base class for all render targets (window, texture, ...)
+
Structure defining the settings of the OpenGL context attached to a window.
+ + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html new file mode 100644 index 0000000..d23f617 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
RenderWindow.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_RENDERWINDOW_HPP
26 #define SFML_RENDERWINDOW_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/RenderTarget.hpp>
33 #include <SFML/Graphics/Image.hpp>
34 #include <SFML/Window/Window.hpp>
35 #include <string>
36 
37 
38 namespace sf
39 {
44 class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget
45 {
46 public:
47 
55  RenderWindow();
56 
76  RenderWindow(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
77 
94  explicit RenderWindow(WindowHandle handle, const ContextSettings& settings = ContextSettings());
95 
102  virtual ~RenderWindow();
103 
113  virtual Vector2u getSize() const;
114 
131  bool setActive(bool active = true);
132 
158  SFML_DEPRECATED Image capture() const;
159 
160 protected:
161 
170  virtual void onCreate();
171 
179  virtual void onResize();
180 };
181 
182 } // namespace sf
183 
184 
185 #endif // SFML_RENDERWINDOW_HPP
186 
187 
Default window style.
Definition: WindowStyle.hpp:46
+
Window that serves as a target for OpenGL rendering.
+
Window that can serve as a target for 2D drawing.
+
Base class for all render targets (window, texture, ...)
+
Structure defining the settings of the OpenGL context attached to a window.
+
VideoMode defines a video mode (width, height, bpp)
Definition: VideoMode.hpp:41
+ + +
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
platform specific WindowHandle
Define a low-level window handle type, specific to each platform.
+
Class for loading, manipulating and saving images.
Definition: Image.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html new file mode 100644 index 0000000..4decb96 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Sensor.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SENSOR_HPP
26 #define SFML_SENSOR_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/Vector3.hpp>
33 #include <SFML/System/Time.hpp>
34 
35 
36 namespace sf
37 {
42 class SFML_WINDOW_API Sensor
43 {
44 public:
45 
50  enum Type
51  {
58 
59  Count
60  };
61 
70  static bool isAvailable(Type sensor);
71 
85  static void setEnabled(Type sensor, bool enabled);
86 
95  static Vector3f getValue(Type sensor);
96 };
97 
98 } // namespace sf
99 
100 
101 #endif // SFML_SENSOR_HPP
102 
103 
Give access to the real-time state of the sensors.
Definition: Sensor.hpp:42
+
Measures the raw acceleration (m/s^2)
Definition: Sensor.hpp:52
+
Type
Sensor type.
Definition: Sensor.hpp:50
+
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2) ...
Definition: Sensor.hpp:56
+
Measures the raw rotation rates (degrees/s)
Definition: Sensor.hpp:53
+
Measures the ambient magnetic field (micro-teslas)
Definition: Sensor.hpp:54
+ +
Measures the absolute 3D orientation (degrees)
Definition: Sensor.hpp:57
+
Measures the direction and intensity of gravity, independent of device acceleration (m/s^2) ...
Definition: Sensor.hpp:55
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html new file mode 100644 index 0000000..9394094 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html @@ -0,0 +1,76 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Shader.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SHADER_HPP
26 #define SFML_SHADER_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Glsl.hpp>
33 #include <SFML/Window/GlResource.hpp>
34 #include <SFML/System/NonCopyable.hpp>
35 #include <SFML/System/Vector2.hpp>
36 #include <SFML/System/Vector3.hpp>
37 #include <map>
38 #include <string>
39 
40 
41 namespace sf
42 {
43 class Color;
44 class InputStream;
45 class Texture;
46 class Transform;
47 
52 class SFML_GRAPHICS_API Shader : GlResource, NonCopyable
53 {
54 public:
55 
60  enum Type
61  {
64  Fragment
65  };
66 
74  struct CurrentTextureType {};
75 
83 
84 public:
85 
92  Shader();
93 
98  ~Shader();
99 
119  bool loadFromFile(const std::string& filename, Type type);
120 
140  bool loadFromFile(const std::string& vertexShaderFilename, const std::string& fragmentShaderFilename);
141 
162  bool loadFromFile(const std::string& vertexShaderFilename, const std::string& geometryShaderFilename, const std::string& fragmentShaderFilename);
163 
182  bool loadFromMemory(const std::string& shader, Type type);
183 
203  bool loadFromMemory(const std::string& vertexShader, const std::string& fragmentShader);
204 
225  bool loadFromMemory(const std::string& vertexShader, const std::string& geometryShader, const std::string& fragmentShader);
226 
245  bool loadFromStream(InputStream& stream, Type type);
246 
266  bool loadFromStream(InputStream& vertexShaderStream, InputStream& fragmentShaderStream);
267 
288  bool loadFromStream(InputStream& vertexShaderStream, InputStream& geometryShaderStream, InputStream& fragmentShaderStream);
289 
297  void setUniform(const std::string& name, float x);
298 
306  void setUniform(const std::string& name, const Glsl::Vec2& vector);
307 
315  void setUniform(const std::string& name, const Glsl::Vec3& vector);
316 
333  void setUniform(const std::string& name, const Glsl::Vec4& vector);
334 
342  void setUniform(const std::string& name, int x);
343 
351  void setUniform(const std::string& name, const Glsl::Ivec2& vector);
352 
360  void setUniform(const std::string& name, const Glsl::Ivec3& vector);
361 
377  void setUniform(const std::string& name, const Glsl::Ivec4& vector);
378 
386  void setUniform(const std::string& name, bool x);
387 
395  void setUniform(const std::string& name, const Glsl::Bvec2& vector);
396 
404  void setUniform(const std::string& name, const Glsl::Bvec3& vector);
405 
413  void setUniform(const std::string& name, const Glsl::Bvec4& vector);
414 
422  void setUniform(const std::string& name, const Glsl::Mat3& matrix);
423 
431  void setUniform(const std::string& name, const Glsl::Mat4& matrix);
432 
463  void setUniform(const std::string& name, const Texture& texture);
464 
486  void setUniform(const std::string& name, CurrentTextureType);
487 
496  void setUniformArray(const std::string& name, const float* scalarArray, std::size_t length);
497 
506  void setUniformArray(const std::string& name, const Glsl::Vec2* vectorArray, std::size_t length);
507 
516  void setUniformArray(const std::string& name, const Glsl::Vec3* vectorArray, std::size_t length);
517 
526  void setUniformArray(const std::string& name, const Glsl::Vec4* vectorArray, std::size_t length);
527 
536  void setUniformArray(const std::string& name, const Glsl::Mat3* matrixArray, std::size_t length);
537 
546  void setUniformArray(const std::string& name, const Glsl::Mat4* matrixArray, std::size_t length);
547 
554  SFML_DEPRECATED void setParameter(const std::string& name, float x);
555 
562  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y);
563 
570  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y, float z);
571 
578  SFML_DEPRECATED void setParameter(const std::string& name, float x, float y, float z, float w);
579 
586  SFML_DEPRECATED void setParameter(const std::string& name, const Vector2f& vector);
587 
594  SFML_DEPRECATED void setParameter(const std::string& name, const Vector3f& vector);
595 
602  SFML_DEPRECATED void setParameter(const std::string& name, const Color& color);
603 
610  SFML_DEPRECATED void setParameter(const std::string& name, const Transform& transform);
611 
618  SFML_DEPRECATED void setParameter(const std::string& name, const Texture& texture);
619 
626  SFML_DEPRECATED void setParameter(const std::string& name, CurrentTextureType);
627 
638  unsigned int getNativeHandle() const;
639 
661  static void bind(const Shader* shader);
662 
673  static bool isAvailable();
674 
692  static bool isGeometryAvailable();
693 
694 private:
695 
709  bool compile(const char* vertexShaderCode, const char* geometryShaderCode, const char* fragmentShaderCode);
710 
718  void bindTextures() const;
719 
728  int getUniformLocation(const std::string& name);
729 
737  struct UniformBinder;
738 
740  // Types
742  typedef std::map<int, const Texture*> TextureTable;
743  typedef std::map<std::string, int> UniformTable;
744 
746  // Member data
748  unsigned int m_shaderProgram;
749  int m_currentTexture;
750  TextureTable m_textures;
751  UniformTable m_uniforms;
752 };
753 
754 } // namespace sf
755 
756 
757 #endif // SFML_SHADER_HPP
758 
759 
implementation defined Bvec4
4D bool vector (bvec4 in GLSL)
Definition: Glsl.hpp:130
+
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
implementation defined Ivec4
4D int vector (ivec4 in GLSL)
Definition: Glsl.hpp:124
+
implementation defined Mat4
4x4 float matrix (mat4 in GLSL)
Definition: Glsl.hpp:181
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
implementation defined Vec4
4D float vector (vec4 in GLSL)
Definition: Glsl.hpp:110
+
implementation defined Mat3
3x3 float matrix (mat3 in GLSL)
Definition: Glsl.hpp:155
+
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+
Special type that can be passed to setUniform(), and that represents the texture of the object being ...
Definition: Shader.hpp:74
+
Geometry shader.
Definition: Shader.hpp:63
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
static CurrentTextureType CurrentTexture
Represents the texture of the object being drawn.
Definition: Shader.hpp:82
+ +
Vertex shader
Definition: Shader.hpp:62
+ +
Shader class (vertex, geometry and fragment)
Definition: Shader.hpp:52
+
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
Type
Types of shaders.
Definition: Shader.hpp:60
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html new file mode 100644 index 0000000..3ca83d9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Shape.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SHAPE_HPP
26 #define SFML_SHAPE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Drawable.hpp>
33 #include <SFML/Graphics/Transformable.hpp>
34 #include <SFML/Graphics/VertexArray.hpp>
35 #include <SFML/System/Vector2.hpp>
36 
37 
38 namespace sf
39 {
44 class SFML_GRAPHICS_API Shape : public Drawable, public Transformable
45 {
46 public:
47 
52  virtual ~Shape();
53 
74  void setTexture(const Texture* texture, bool resetRect = false);
75 
88  void setTextureRect(const IntRect& rect);
89 
105  void setFillColor(const Color& color);
106 
117  void setOutlineColor(const Color& color);
118 
132  void setOutlineThickness(float thickness);
133 
146  const Texture* getTexture() const;
147 
156  const IntRect& getTextureRect() const;
157 
166  const Color& getFillColor() const;
167 
176  const Color& getOutlineColor() const;
177 
186  float getOutlineThickness() const;
187 
196  virtual std::size_t getPointCount() const = 0;
197 
213  virtual Vector2f getPoint(std::size_t index) const = 0;
214 
227  FloatRect getLocalBounds() const;
228 
248  FloatRect getGlobalBounds() const;
249 
250 protected:
251 
256  Shape();
257 
266  void update();
267 
268 private:
269 
277  virtual void draw(RenderTarget& target, RenderStates states) const;
278 
283  void updateFillColors();
284 
289  void updateTexCoords();
290 
295  void updateOutline();
296 
301  void updateOutlineColors();
302 
303 private:
304 
306  // Member data
308  const Texture* m_texture;
309  IntRect m_textureRect;
310  Color m_fillColor;
311  Color m_outlineColor;
312  float m_outlineThickness;
313  VertexArray m_vertices;
314  VertexArray m_outlineVertices;
315  FloatRect m_insideBounds;
316  FloatRect m_bounds;
317 };
318 
319 } // namespace sf
320 
321 
322 #endif // SFML_SHAPE_HPP
323 
324 
Base class for textured shapes with outline.
Definition: Shape.hpp:44
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
Define the states used for drawing to a RenderTarget.
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
Define a set of one or more 2D primitives.
Definition: VertexArray.hpp:45
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ + + +
Decomposed transform defined by a position, a rotation and a scale.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html new file mode 100644 index 0000000..49e24ec --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Sleep.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SLEEP_HPP
26 #define SFML_SLEEP_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/Time.hpp>
33 
34 
35 namespace sf
36 {
47 void SFML_SYSTEM_API sleep(Time duration);
48 
49 } // namespace sf
50 
51 
52 #endif // SFML_SLEEP_HPP
+
void sleep(Time duration)
Make the current thread sleep for a given duration.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html new file mode 100644 index 0000000..618b1cf --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html @@ -0,0 +1,57 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SocketHandle.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOCKETHANDLE_HPP
26 #define SFML_SOCKETHANDLE_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 #if defined(SFML_SYSTEM_WINDOWS)
34  #include <basetsd.h>
35 #endif
36 
37 
38 namespace sf
39 {
41 // Define the low-level socket handle type, specific to
42 // each platform
44 #if defined(SFML_SYSTEM_WINDOWS)
45 
46  typedef UINT_PTR SocketHandle;
47 
48 #else
49 
50  typedef int SocketHandle;
51 
52 #endif
53 
54 } // namespace sf
55 
56 
57 #endif // SFML_SOCKETHANDLE_HPP
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html new file mode 100644 index 0000000..5f0358e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SocketSelector.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOCKETSELECTOR_HPP
26 #define SFML_SOCKETSELECTOR_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/System/Time.hpp>
33 
34 
35 namespace sf
36 {
37 class Socket;
38 
43 class SFML_NETWORK_API SocketSelector
44 {
45 public:
46 
52 
59  SocketSelector(const SocketSelector& copy);
60 
65  ~SocketSelector();
66 
80  void add(Socket& socket);
81 
93  void remove(Socket& socket);
94 
105  void clear();
106 
123  bool wait(Time timeout = Time::Zero);
124 
142  bool isReady(Socket& socket) const;
143 
152  SocketSelector& operator =(const SocketSelector& right);
153 
154 private:
155 
156  struct SocketSelectorImpl;
157 
159  // Member data
161  SocketSelectorImpl* m_impl;
162 };
163 
164 } // namespace sf
165 
166 
167 #endif // SFML_SOCKETSELECTOR_HPP
168 
169 
Represents a time value.
Definition: Time.hpp:40
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+
Base class for all the socket types.
Definition: Socket.hpp:45
+
Multiplexer that allows to read from multiple sockets.
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html new file mode 100644 index 0000000..43ea5df --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Socket.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOCKET_HPP
26 #define SFML_SOCKET_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/SocketHandle.hpp>
33 #include <SFML/System/NonCopyable.hpp>
34 #include <vector>
35 
36 
37 namespace sf
38 {
39 class SocketSelector;
40 
45 class SFML_NETWORK_API Socket : NonCopyable
46 {
47 public:
48 
53  enum Status
54  {
55  Done,
59  Error
60  };
61 
66  enum
67  {
68  AnyPort = 0
69  };
70 
71 public:
72 
77  virtual ~Socket();
78 
96  void setBlocking(bool blocking);
97 
106  bool isBlocking() const;
107 
108 protected:
109 
114  enum Type
115  {
116  Tcp,
117  Udp
118  };
119 
128  Socket(Type type);
129 
140  SocketHandle getHandle() const;
141 
148  void create();
149 
159  void create(SocketHandle handle);
160 
167  void close();
168 
169 private:
170 
171  friend class SocketSelector;
172 
174  // Member data
176  Type m_type;
177  SocketHandle m_socket;
178  bool m_isBlocking;
179 };
180 
181 } // namespace sf
182 
183 
184 #endif // SFML_SOCKET_HPP
185 
186 
The socket sent a part of the data.
Definition: Socket.hpp:57
+
The socket has sent / received the data.
Definition: Socket.hpp:55
+
Status
Status codes that may be returned by socket functions.
Definition: Socket.hpp:53
+
The socket is not ready to send / receive data yet.
Definition: Socket.hpp:56
+
Base class for all the socket types.
Definition: Socket.hpp:45
+
Multiplexer that allows to read from multiple sockets.
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
TCP protocol.
Definition: Socket.hpp:116
+ +
Type
Types of protocols that the socket can use.
Definition: Socket.hpp:114
+
The TCP socket has been disconnected.
Definition: Socket.hpp:58
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html new file mode 100644 index 0000000..be47322 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundBufferRecorder.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDBUFFERRECORDER_HPP
26 #define SFML_SOUNDBUFFERRECORDER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/SoundBuffer.hpp>
33 #include <SFML/Audio/SoundRecorder.hpp>
34 #include <vector>
35 
36 
37 namespace sf
38 {
44 class SFML_AUDIO_API SoundBufferRecorder : public SoundRecorder
45 {
46 public:
47 
53 
65  const SoundBuffer& getBuffer() const;
66 
67 protected:
68 
75  virtual bool onStart();
76 
86  virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount);
87 
92  virtual void onStop();
93 
94 private:
95 
97  // Member data
99  std::vector<Int16> m_samples;
100  SoundBuffer m_buffer;
101 };
102 
103 } // namespace sf
104 
105 #endif // SFML_SOUNDBUFFERRECORDER_HPP
106 
107 
Specialized SoundRecorder which stores the captured audio data into a sound buffer.
+
Abstract base class for capturing sound data.
+
Storage for audio samples defining a sound.
Definition: SoundBuffer.hpp:49
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html new file mode 100644 index 0000000..1027769 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundBuffer.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDBUFFER_HPP
26 #define SFML_SOUNDBUFFER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/AlResource.hpp>
33 #include <SFML/System/Time.hpp>
34 #include <string>
35 #include <vector>
36 #include <set>
37 
38 
39 namespace sf
40 {
41 class Sound;
42 class InputSoundFile;
43 class InputStream;
44 
49 class SFML_AUDIO_API SoundBuffer : AlResource
50 {
51 public:
52 
57  SoundBuffer();
58 
65  SoundBuffer(const SoundBuffer& copy);
66 
71  ~SoundBuffer();
72 
86  bool loadFromFile(const std::string& filename);
87 
102  bool loadFromMemory(const void* data, std::size_t sizeInBytes);
103 
117  bool loadFromStream(InputStream& stream);
118 
135  bool loadFromSamples(const Int16* samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate);
136 
150  bool saveToFile(const std::string& filename) const;
151 
164  const Int16* getSamples() const;
165 
177  Uint64 getSampleCount() const;
178 
191  unsigned int getSampleRate() const;
192 
204  unsigned int getChannelCount() const;
205 
214  Time getDuration() const;
215 
224  SoundBuffer& operator =(const SoundBuffer& right);
225 
226 private:
227 
228  friend class Sound;
229 
238  bool initialize(InputSoundFile& file);
239 
249  bool update(unsigned int channelCount, unsigned int sampleRate);
250 
257  void attachSound(Sound* sound) const;
258 
265  void detachSound(Sound* sound) const;
266 
268  // Types
270  typedef std::set<Sound*> SoundList;
271 
273  // Member data
275  unsigned int m_buffer;
276  std::vector<Int16> m_samples;
277  Time m_duration;
278  mutable SoundList m_sounds;
279 };
280 
281 } // namespace sf
282 
283 
284 #endif // SFML_SOUNDBUFFER_HPP
285 
286 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:40
+
Represents a time value.
Definition: Time.hpp:40
+
Provide read access to sound files.
+
Regular sound that can be played in the audio environment.
Definition: Sound.hpp:45
+
Storage for audio samples defining a sound.
Definition: SoundBuffer.hpp:49
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html new file mode 100644 index 0000000..cd01224 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundFileFactory.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDFILEFACTORY_HPP
26 #define SFML_SOUNDFILEFACTORY_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <string>
33 #include <vector>
34 
35 
36 namespace sf
37 {
38 class InputStream;
39 class SoundFileReader;
40 class SoundFileWriter;
41 
46 class SFML_AUDIO_API SoundFileFactory
47 {
48 public:
49 
56  template <typename T>
57  static void registerReader();
58 
65  template <typename T>
66  static void unregisterReader();
67 
74  template <typename T>
75  static void registerWriter();
76 
83  template <typename T>
84  static void unregisterWriter();
85 
98  static SoundFileReader* createReaderFromFilename(const std::string& filename);
99 
113  static SoundFileReader* createReaderFromMemory(const void* data, std::size_t sizeInBytes);
114 
127  static SoundFileReader* createReaderFromStream(InputStream& stream);
128 
139  static SoundFileWriter* createWriterFromFilename(const std::string& filename);
140 
141 private:
142 
144  // Types
146  struct ReaderFactory
147  {
148  bool (*check)(InputStream&);
149  SoundFileReader* (*create)();
150  };
151  typedef std::vector<ReaderFactory> ReaderFactoryArray;
152 
153  struct WriterFactory
154  {
155  bool (*check)(const std::string&);
156  SoundFileWriter* (*create)();
157  };
158  typedef std::vector<WriterFactory> WriterFactoryArray;
159 
161  // Static member data
163  static ReaderFactoryArray s_readers;
164  static WriterFactoryArray s_writers;
165 };
166 
167 } // namespace sf
168 
169 #include <SFML/Audio/SoundFileFactory.inl>
170 
171 #endif // SFML_SOUNDFILEFACTORY_HPP
172 
173 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Abstract base class for sound file decoding.
+ +
Abstract base class for sound file encoding.
+
Manages and instantiates sound file readers and writers.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html new file mode 100644 index 0000000..bf2ac09 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundFileReader.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDFILEREADER_HPP
26 #define SFML_SOUNDFILEREADER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <string>
33 
34 
35 namespace sf
36 {
37 class InputStream;
38 
43 class SFML_AUDIO_API SoundFileReader
44 {
45 public:
46 
51  struct Info
52  {
53  Uint64 sampleCount;
54  unsigned int channelCount;
55  unsigned int sampleRate;
56  };
57 
62  virtual ~SoundFileReader() {}
63 
77  virtual bool open(InputStream& stream, Info& info) = 0;
78 
92  virtual void seek(Uint64 sampleOffset) = 0;
93 
103  virtual Uint64 read(Int16* samples, Uint64 maxCount) = 0;
104 };
105 
106 } // namespace sf
107 
108 
109 #endif // SFML_SOUNDFILEREADER_HPP
110 
111 
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
unsigned int sampleRate
Samples rate of the sound, in samples per second.
+
Abstract base class for sound file decoding.
+
unsigned int channelCount
Number of channels of the sound.
+
Structure holding the audio properties of a sound file.
+
Uint64 sampleCount
Total number of samples in the file.
+ +
virtual ~SoundFileReader()
Virtual destructor.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html new file mode 100644 index 0000000..d782433 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundFileWriter.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDFILEWRITER_HPP
26 #define SFML_SOUNDFILEWRITER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <string>
33 
34 
35 namespace sf
36 {
41 class SFML_AUDIO_API SoundFileWriter
42 {
43 public:
44 
49  virtual ~SoundFileWriter() {}
50 
61  virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount) = 0;
62 
70  virtual void write(const Int16* samples, Uint64 count) = 0;
71 };
72 
73 } // namespace sf
74 
75 
76 #endif // SFML_SOUNDFILEWRITER_HPP
77 
78 
virtual ~SoundFileWriter()
Virtual destructor.
+ +
Abstract base class for sound file encoding.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html new file mode 100644 index 0000000..52fb615 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundRecorder.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDRECORDER_HPP
26 #define SFML_SOUNDRECORDER_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/AlResource.hpp>
33 #include <SFML/System/Thread.hpp>
34 #include <SFML/System/Time.hpp>
35 #include <vector>
36 #include <string>
37 
38 
39 namespace sf
40 {
45 class SFML_AUDIO_API SoundRecorder : AlResource
46 {
47 public:
48 
53  virtual ~SoundRecorder();
54 
77  bool start(unsigned int sampleRate = 44100);
78 
85  void stop();
86 
97  unsigned int getSampleRate() const;
98 
108  static std::vector<std::string> getAvailableDevices();
109 
120  static std::string getDefaultDevice();
121 
137  bool setDevice(const std::string& name);
138 
145  const std::string& getDevice() const;
146 
160  void setChannelCount(unsigned int channelCount);
161 
173  unsigned int getChannelCount() const;
174 
186  static bool isAvailable();
187 
188 protected:
189 
196  SoundRecorder();
197 
214  void setProcessingInterval(Time interval);
215 
227  virtual bool onStart();
228 
243  virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
244 
254  virtual void onStop();
255 
256 private:
257 
265  void record();
266 
275  void processCapturedSamples();
276 
283  void cleanup();
284 
286  // Member data
288  Thread m_thread;
289  std::vector<Int16> m_samples;
290  unsigned int m_sampleRate;
291  Time m_processingInterval;
292  bool m_isCapturing;
293  std::string m_deviceName;
294  unsigned int m_channelCount;
295 };
296 
297 } // namespace sf
298 
299 
300 #endif // SFML_SOUNDRECORDER_HPP
301 
302 
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:40
+
Represents a time value.
Definition: Time.hpp:40
+
Abstract base class for capturing sound data.
+ +
Utility class to manipulate threads.
Definition: Thread.hpp:48
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html new file mode 100644 index 0000000..8c87aae --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundSource.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDSOURCE_HPP
26 #define SFML_SOUNDSOURCE_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/AlResource.hpp>
33 #include <SFML/System/Vector3.hpp>
34 
35 
36 namespace sf
37 {
42 class SFML_AUDIO_API SoundSource : AlResource
43 {
44 public:
45 
50  enum Status
51  {
54  Playing
55  };
56 
63  SoundSource(const SoundSource& copy);
64 
69  virtual ~SoundSource();
70 
85  void setPitch(float pitch);
86 
98  void setVolume(float volume);
99 
114  void setPosition(float x, float y, float z);
115 
128  void setPosition(const Vector3f& position);
129 
144  void setRelativeToListener(bool relative);
145 
161  void setMinDistance(float distance);
162 
180  void setAttenuation(float attenuation);
181 
190  float getPitch() const;
191 
200  float getVolume() const;
201 
210  Vector3f getPosition() const;
211 
221  bool isRelativeToListener() const;
222 
231  float getMinDistance() const;
232 
241  float getAttenuation() const;
242 
251  SoundSource& operator =(const SoundSource& right);
252 
263  virtual void play() = 0;
264 
274  virtual void pause() = 0;
275 
286  virtual void stop() = 0;
287 
294  virtual Status getStatus() const;
295 
296 protected:
297 
304  SoundSource();
305 
307  // Member data
309  unsigned int m_source;
310 };
311 
312 } // namespace sf
313 
314 
315 #endif // SFML_SOUNDSOURCE_HPP
316 
317 
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:40
+
Sound is not playing.
Definition: SoundSource.hpp:52
+
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
Sound is paused.
Definition: SoundSource.hpp:53
+
unsigned int m_source
OpenAL source identifier.
+ +
Status
Enumeration of the sound source states.
Definition: SoundSource.hpp:50
+
Base class defining a sound&#39;s properties.
Definition: SoundSource.hpp:42
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html new file mode 100644 index 0000000..202d7a9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SoundStream.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDSTREAM_HPP
26 #define SFML_SOUNDSTREAM_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/SoundSource.hpp>
33 #include <SFML/System/Thread.hpp>
34 #include <SFML/System/Time.hpp>
35 #include <SFML/System/Mutex.hpp>
36 #include <cstdlib>
37 
38 
39 namespace sf
40 {
45 class SFML_AUDIO_API SoundStream : public SoundSource
46 {
47 public:
48 
53  struct Chunk
54  {
55  const Int16* samples;
56  std::size_t sampleCount;
57  };
58 
63  virtual ~SoundStream();
64 
77  void play();
78 
88  void pause();
89 
100  void stop();
101 
110  unsigned int getChannelCount() const;
111 
121  unsigned int getSampleRate() const;
122 
129  Status getStatus() const;
130 
144  void setPlayingOffset(Time timeOffset);
145 
154  Time getPlayingOffset() const;
155 
169  void setLoop(bool loop);
170 
179  bool getLoop() const;
180 
181 protected:
182 
183  enum
184  {
185  NoLoop = -1
186  };
187 
194  SoundStream();
195 
210  void initialize(unsigned int channelCount, unsigned int sampleRate);
211 
229  virtual bool onGetData(Chunk& data) = 0;
230 
240  virtual void onSeek(Time timeOffset) = 0;
241 
252  virtual Int64 onLoop();
253 
254 private:
255 
263  void streamData();
264 
279  bool fillAndPushBuffer(unsigned int bufferNum, bool immediateLoop = false);
280 
290  bool fillQueue();
291 
298  void clearQueue();
299 
300  enum
301  {
302  BufferCount = 3,
303  BufferRetries = 2
304  };
305 
307  // Member data
309  Thread m_thread;
310  mutable Mutex m_threadMutex;
311  Status m_threadStartState;
312  bool m_isStreaming;
313  unsigned int m_buffers[BufferCount];
314  unsigned int m_channelCount;
315  unsigned int m_sampleRate;
316  Uint32 m_format;
317  bool m_loop;
318  Uint64 m_samplesProcessed;
319  Int64 m_bufferSeeks[BufferCount];
320 };
321 
322 } // namespace sf
323 
324 
325 #endif // SFML_SOUNDSTREAM_HPP
326 
327 
Structure defining a chunk of audio data to stream.
Definition: SoundStream.hpp:53
+
Represents a time value.
Definition: Time.hpp:40
+
const Int16 * samples
Pointer to the audio samples.
Definition: SoundStream.hpp:55
+
Abstract base class for streamed audio sources.
Definition: SoundStream.hpp:45
+
std::size_t sampleCount
Number of samples pointed by Samples.
Definition: SoundStream.hpp:56
+ +
Base class defining a sound&#39;s properties.
Definition: SoundSource.hpp:42
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html new file mode 100644 index 0000000..03300f1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Sound.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUND_HPP
26 #define SFML_SOUND_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/SoundSource.hpp>
33 #include <SFML/System/Time.hpp>
34 #include <cstdlib>
35 
36 
37 namespace sf
38 {
39 class SoundBuffer;
40 
45 class SFML_AUDIO_API Sound : public SoundSource
46 {
47 public:
48 
53  Sound();
54 
61  explicit Sound(const SoundBuffer& buffer);
62 
69  Sound(const Sound& copy);
70 
75  ~Sound();
76 
89  void play();
90 
100  void pause();
101 
112  void stop();
113 
126  void setBuffer(const SoundBuffer& buffer);
127 
141  void setLoop(bool loop);
142 
156  void setPlayingOffset(Time timeOffset);
157 
164  const SoundBuffer* getBuffer() const;
165 
174  bool getLoop() const;
175 
184  Time getPlayingOffset() const;
185 
192  Status getStatus() const;
193 
202  Sound& operator =(const Sound& right);
203 
213  void resetBuffer();
214 
215 private:
216 
218  // Member data
220  const SoundBuffer* m_buffer;
221 };
222 
223 } // namespace sf
224 
225 
226 #endif // SFML_SOUND_HPP
227 
228 
Represents a time value.
Definition: Time.hpp:40
+
Regular sound that can be played in the audio environment.
Definition: Sound.hpp:45
+
Storage for audio samples defining a sound.
Definition: SoundBuffer.hpp:49
+ +
Status
Enumeration of the sound source states.
Definition: SoundSource.hpp:50
+
Base class defining a sound&#39;s properties.
Definition: SoundSource.hpp:42
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html new file mode 100644 index 0000000..6248236 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Sprite.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SPRITE_HPP
26 #define SFML_SPRITE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Drawable.hpp>
33 #include <SFML/Graphics/Transformable.hpp>
34 #include <SFML/Graphics/Vertex.hpp>
35 #include <SFML/Graphics/Rect.hpp>
36 
37 
38 namespace sf
39 {
40 class Texture;
41 
47 class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable
48 {
49 public:
50 
57  Sprite();
58 
67  explicit Sprite(const Texture& texture);
68 
78  Sprite(const Texture& texture, const IntRect& rectangle);
79 
99  void setTexture(const Texture& texture, bool resetRect = false);
100 
113  void setTextureRect(const IntRect& rectangle);
114 
128  void setColor(const Color& color);
129 
142  const Texture* getTexture() const;
143 
152  const IntRect& getTextureRect() const;
153 
162  const Color& getColor() const;
163 
176  FloatRect getLocalBounds() const;
177 
190  FloatRect getGlobalBounds() const;
191 
192 private:
193 
201  virtual void draw(RenderTarget& target, RenderStates states) const;
202 
207  void updatePositions();
208 
213  void updateTexCoords();
214 
216  // Member data
218  Vertex m_vertices[4];
219  const Texture* m_texture;
220  IntRect m_textureRect;
221 };
222 
223 } // namespace sf
224 
225 
226 #endif // SFML_SPRITE_HPP
227 
228 
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
Define the states used for drawing to a RenderTarget.
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
Define a point with color and texture coordinates.
Definition: Vertex.hpp:42
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ + +
Drawable representation of a texture, with its own transformations, color, etc.
Definition: Sprite.hpp:47
+
Decomposed transform defined by a position, a rotation and a scale.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html new file mode 100644 index 0000000..9d7f7af --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
String.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_STRING_HPP
26 #define SFML_STRING_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/Utf.hpp>
33 #include <iterator>
34 #include <locale>
35 #include <string>
36 
37 
38 namespace sf
39 {
45 class SFML_SYSTEM_API String
46 {
47 public:
48 
50  // Types
52  typedef std::basic_string<Uint32>::iterator Iterator;
53  typedef std::basic_string<Uint32>::const_iterator ConstIterator;
54 
56  // Static member data
58  static const std::size_t InvalidPos;
59 
66  String();
67 
78  String(char ansiChar, const std::locale& locale = std::locale());
79 
86  String(wchar_t wideChar);
87 
94  String(Uint32 utf32Char);
95 
106  String(const char* ansiString, const std::locale& locale = std::locale());
107 
118  String(const std::string& ansiString, const std::locale& locale = std::locale());
119 
126  String(const wchar_t* wideString);
127 
134  String(const std::wstring& wideString);
135 
142  String(const Uint32* utf32String);
143 
150  String(const std::basic_string<Uint32>& utf32String);
151 
158  String(const String& copy);
159 
171  template <typename T>
172  static String fromUtf8(T begin, T end);
173 
185  template <typename T>
186  static String fromUtf16(T begin, T end);
187 
203  template <typename T>
204  static String fromUtf32(T begin, T end);
205 
221  operator std::string() const;
222 
236  operator std::wstring() const;
237 
253  std::string toAnsiString(const std::locale& locale = std::locale()) const;
254 
266  std::wstring toWideString() const;
267 
276  std::basic_string<Uint8> toUtf8() const;
277 
286  std::basic_string<Uint16> toUtf16() const;
287 
299  std::basic_string<Uint32> toUtf32() const;
300 
309  String& operator =(const String& right);
310 
319  String& operator +=(const String& right);
320 
332  Uint32 operator [](std::size_t index) const;
333 
345  Uint32& operator [](std::size_t index);
346 
355  void clear();
356 
365  std::size_t getSize() const;
366 
375  bool isEmpty() const;
376 
387  void erase(std::size_t position, std::size_t count = 1);
388 
399  void insert(std::size_t position, const String& str);
400 
413  std::size_t find(const String& str, std::size_t start = 0) const;
414 
427  void replace(std::size_t position, std::size_t length, const String& replaceWith);
428 
439  void replace(const String& searchFor, const String& replaceWith);
440 
456  String substring(std::size_t position, std::size_t length = InvalidPos) const;
457 
469  const Uint32* getData() const;
470 
479  Iterator begin();
480 
489  ConstIterator begin() const;
490 
503  Iterator end();
504 
517  ConstIterator end() const;
518 
519 private:
520 
521  friend SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
522  friend SFML_SYSTEM_API bool operator <(const String& left, const String& right);
523 
525  // Member data
527  std::basic_string<Uint32> m_string;
528 };
529 
540 SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
541 
552 SFML_SYSTEM_API bool operator !=(const String& left, const String& right);
553 
564 SFML_SYSTEM_API bool operator <(const String& left, const String& right);
565 
576 SFML_SYSTEM_API bool operator >(const String& left, const String& right);
577 
588 SFML_SYSTEM_API bool operator <=(const String& left, const String& right);
589 
600 SFML_SYSTEM_API bool operator >=(const String& left, const String& right);
601 
612 SFML_SYSTEM_API String operator +(const String& left, const String& right);
613 
614 #include <SFML/System/String.inl>
615 
616 } // namespace sf
617 
618 
619 #endif // SFML_STRING_HPP
620 
621 
std::basic_string< Uint32 >::iterator Iterator
Iterator type.
Definition: String.hpp:52
+
static const std::size_t InvalidPos
Represents an invalid position in the string.
Definition: String.hpp:58
+
std::basic_string< Uint32 >::const_iterator ConstIterator
Read-only iterator type.
Definition: String.hpp:53
+ +
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html new file mode 100644 index 0000000..8e6d10b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
System/Export.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SYSTEM_EXPORT_HPP
26 #define SFML_SYSTEM_EXPORT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
35 // Define portable import / export macros
37 #if defined(SFML_SYSTEM_EXPORTS)
38 
39  #define SFML_SYSTEM_API SFML_API_EXPORT
40 
41 #else
42 
43  #define SFML_SYSTEM_API SFML_API_IMPORT
44 
45 #endif
46 
47 
48 #endif // SFML_SYSTEM_EXPORT_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html new file mode 100644 index 0000000..58f050c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
System.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SYSTEM_HPP
26 #define SFML_SYSTEM_HPP
27 
29 // Headers
31 
32 #include <SFML/Config.hpp>
33 #include <SFML/System/Clock.hpp>
34 #include <SFML/System/Err.hpp>
35 #include <SFML/System/FileInputStream.hpp>
36 #include <SFML/System/InputStream.hpp>
37 #include <SFML/System/Lock.hpp>
38 #include <SFML/System/MemoryInputStream.hpp>
39 #include <SFML/System/Mutex.hpp>
40 #include <SFML/System/NonCopyable.hpp>
41 #include <SFML/System/Sleep.hpp>
42 #include <SFML/System/String.hpp>
43 #include <SFML/System/Thread.hpp>
44 #include <SFML/System/ThreadLocal.hpp>
45 #include <SFML/System/ThreadLocalPtr.hpp>
46 #include <SFML/System/Time.hpp>
47 #include <SFML/System/Utf.hpp>
48 #include <SFML/System/Vector2.hpp>
49 #include <SFML/System/Vector3.hpp>
50 
51 #endif // SFML_SYSTEM_HPP
52 
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html new file mode 100644 index 0000000..5638eb0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
TcpListener.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TCPLISTENER_HPP
26 #define SFML_TCPLISTENER_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/Socket.hpp>
33 #include <SFML/Network/IpAddress.hpp>
34 
35 
36 namespace sf
37 {
38 class TcpSocket;
39 
44 class SFML_NETWORK_API TcpListener : public Socket
45 {
46 public:
47 
52  TcpListener();
53 
65  unsigned short getLocalPort() const;
66 
85  Status listen(unsigned short port, const IpAddress& address = IpAddress::Any);
86 
96  void close();
97 
111  Status accept(TcpSocket& socket);
112 };
113 
114 
115 } // namespace sf
116 
117 
118 #endif // SFML_TCPLISTENER_HPP
119 
120 
static const IpAddress Any
Value representing any address (0.0.0.0)
Definition: IpAddress.hpp:185
+
Status
Status codes that may be returned by socket functions.
Definition: Socket.hpp:53
+
Base class for all the socket types.
Definition: Socket.hpp:45
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+
Specialized socket using the TCP protocol.
Definition: TcpSocket.hpp:46
+
Socket that listens to new TCP connections.
Definition: TcpListener.hpp:44
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html new file mode 100644 index 0000000..3b8e6f9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
TcpSocket.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TCPSOCKET_HPP
26 #define SFML_TCPSOCKET_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/Socket.hpp>
33 #include <SFML/System/Time.hpp>
34 
35 
36 namespace sf
37 {
38 class TcpListener;
39 class IpAddress;
40 class Packet;
41 
46 class SFML_NETWORK_API TcpSocket : public Socket
47 {
48 public:
49 
54  TcpSocket();
55 
66  unsigned short getLocalPort() const;
67 
79  IpAddress getRemoteAddress() const;
80 
92  unsigned short getRemotePort() const;
93 
112  Status connect(const IpAddress& remoteAddress, unsigned short remotePort, Time timeout = Time::Zero);
113 
123  void disconnect();
124 
141  Status send(const void* data, std::size_t size);
142 
157  Status send(const void* data, std::size_t size, std::size_t& sent);
158 
175  Status receive(void* data, std::size_t size, std::size_t& received);
176 
193  Status send(Packet& packet);
194 
209  Status receive(Packet& packet);
210 
211 private:
212 
213  friend class TcpListener;
214 
219  struct PendingPacket
220  {
221  PendingPacket();
222 
223  Uint32 Size;
224  std::size_t SizeReceived;
225  std::vector<char> Data;
226  };
227 
229  // Member data
231  PendingPacket m_pendingPacket;
232 };
233 
234 } // namespace sf
235 
236 
237 #endif // SFML_TCPSOCKET_HPP
238 
239 
Represents a time value.
Definition: Time.hpp:40
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+
Status
Status codes that may be returned by socket functions.
Definition: Socket.hpp:53
+
Base class for all the socket types.
Definition: Socket.hpp:45
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+
Utility class to build blocks of data to transfer over the network.
Definition: Packet.hpp:47
+
Specialized socket using the TCP protocol.
Definition: TcpSocket.hpp:46
+
Socket that listens to new TCP connections.
Definition: TcpListener.hpp:44
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html new file mode 100644 index 0000000..46ab847 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Text.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TEXT_HPP
26 #define SFML_TEXT_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Drawable.hpp>
33 #include <SFML/Graphics/Transformable.hpp>
34 #include <SFML/Graphics/Font.hpp>
35 #include <SFML/Graphics/Rect.hpp>
36 #include <SFML/Graphics/VertexArray.hpp>
37 #include <SFML/System/String.hpp>
38 #include <string>
39 #include <vector>
40 
41 
42 namespace sf
43 {
48 class SFML_GRAPHICS_API Text : public Drawable, public Transformable
49 {
50 public:
51 
56  enum Style
57  {
58  Regular = 0,
59  Bold = 1 << 0,
60  Italic = 1 << 1,
61  Underlined = 1 << 2,
62  StrikeThrough = 1 << 3
63  };
64 
71  Text();
72 
88  Text(const String& string, const Font& font, unsigned int characterSize = 30);
89 
109  void setString(const String& string);
110 
126  void setFont(const Font& font);
127 
145  void setCharacterSize(unsigned int size);
146 
159  void setLineSpacing(float spacingFactor);
160 
178  void setLetterSpacing(float spacingFactor);
179 
192  void setStyle(Uint32 style);
193 
210  SFML_DEPRECATED void setColor(const Color& color);
211 
224  void setFillColor(const Color& color);
225 
236  void setOutlineColor(const Color& color);
237 
251  void setOutlineThickness(float thickness);
252 
270  const String& getString() const;
271 
284  const Font* getFont() const;
285 
294  unsigned int getCharacterSize() const;
295 
304  float getLetterSpacing() const;
305 
314  float getLineSpacing() const;
315 
324  Uint32 getStyle() const;
325 
338  SFML_DEPRECATED const Color& getColor() const;
339 
348  const Color& getFillColor() const;
349 
358  const Color& getOutlineColor() const;
359 
368  float getOutlineThickness() const;
369 
385  Vector2f findCharacterPos(std::size_t index) const;
386 
399  FloatRect getLocalBounds() const;
400 
413  FloatRect getGlobalBounds() const;
414 
415 private:
416 
424  virtual void draw(RenderTarget& target, RenderStates states) const;
425 
433  void ensureGeometryUpdate() const;
434 
436  // Member data
438  String m_string;
439  const Font* m_font;
440  unsigned int m_characterSize;
441  float m_letterSpacingFactor;
442  float m_lineSpacingFactor;
443  Uint32 m_style;
444  Color m_fillColor;
445  Color m_outlineColor;
446  float m_outlineThickness;
447  mutable VertexArray m_vertices;
448  mutable VertexArray m_outlineVertices;
449  mutable FloatRect m_bounds;
450  mutable bool m_geometryNeedUpdate;
451  mutable Uint64 m_fontTextureId;
452 };
453 
454 } // namespace sf
455 
456 
457 #endif // SFML_TEXT_HPP
458 
459 
Define the states used for drawing to a RenderTarget.
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
Style
Enumeration of the string drawing styles.
Definition: Text.hpp:56
+
Define a set of one or more 2D primitives.
Definition: VertexArray.hpp:45
+
Graphical text that can be drawn to a render target.
Definition: Text.hpp:48
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ + +
Class for loading and manipulating character fonts.
Definition: Font.hpp:50
+ +
Decomposed transform defined by a position, a rotation and a scale.
+
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html new file mode 100644 index 0000000..649dda0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Texture.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TEXTURE_HPP
26 #define SFML_TEXTURE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Image.hpp>
33 #include <SFML/Window/GlResource.hpp>
34 
35 
36 namespace sf
37 {
38 class InputStream;
39 class RenderTarget;
40 class RenderTexture;
41 class Text;
42 class Window;
43 
48 class SFML_GRAPHICS_API Texture : GlResource
49 {
50 public:
51 
57  {
59  Pixels
60  };
61 
62 public:
63 
70  Texture();
71 
78  Texture(const Texture& copy);
79 
84  ~Texture();
85 
97  bool create(unsigned int width, unsigned int height);
98 
128  bool loadFromFile(const std::string& filename, const IntRect& area = IntRect());
129 
160  bool loadFromMemory(const void* data, std::size_t size, const IntRect& area = IntRect());
161 
191  bool loadFromStream(InputStream& stream, const IntRect& area = IntRect());
192 
215  bool loadFromImage(const Image& image, const IntRect& area = IntRect());
216 
223  Vector2u getSize() const;
224 
238  Image copyToImage() const;
239 
256  void update(const Uint8* pixels);
257 
278  void update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y);
279 
298  void update(const Texture& texture);
299 
315  void update(const Texture& texture, unsigned int x, unsigned int y);
316 
335  void update(const Image& image);
336 
352  void update(const Image& image, unsigned int x, unsigned int y);
353 
372  void update(const Window& window);
373 
389  void update(const Window& window, unsigned int x, unsigned int y);
390 
405  void setSmooth(bool smooth);
406 
415  bool isSmooth() const;
416 
440  void setSrgb(bool sRgb);
441 
450  bool isSrgb() const;
451 
474  void setRepeated(bool repeated);
475 
484  bool isRepeated() const;
485 
509  bool generateMipmap();
510 
519  Texture& operator =(const Texture& right);
520 
527  void swap(Texture& right);
528 
539  unsigned int getNativeHandle() const;
540 
572  static void bind(const Texture* texture, CoordinateType coordinateType = Normalized);
573 
584  static unsigned int getMaximumSize();
585 
586 private:
587 
588  friend class Text;
589  friend class RenderTexture;
590  friend class RenderTarget;
591 
605  static unsigned int getValidSize(unsigned int size);
606 
614  void invalidateMipmap();
615 
617  // Member data
619  Vector2u m_size;
620  Vector2u m_actualSize;
621  unsigned int m_texture;
622  bool m_isSmooth;
623  bool m_sRgb;
624  bool m_isRepeated;
625  mutable bool m_pixelsFlipped;
626  bool m_fboAttachment;
627  bool m_hasMipmap;
628  Uint64 m_cacheId;
629 };
630 
631 } // namespace sf
632 
633 
634 #endif // SFML_TEXTURE_HPP
635 
Window that serves as a target for OpenGL rendering.
+
Abstract class for custom file input streams.
Definition: InputStream.hpp:41
+
Image living on the graphics card that can be used for drawing.
Definition: Texture.hpp:48
+
CoordinateType
Types of texture coordinates that can be used for rendering.
Definition: Texture.hpp:56
+
Target for off-screen 2D rendering into a texture.
+
Graphical text that can be drawn to a render target.
Definition: Text.hpp:48
+
Base class for all render targets (window, texture, ...)
+
Texture coordinates in range [0 .. 1].
Definition: Texture.hpp:58
+ + + +
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
Class for loading, manipulating and saving images.
Definition: Image.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html new file mode 100644 index 0000000..7357749 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
ThreadLocalPtr.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_THREADLOCALPTR_HPP
26 #define SFML_THREADLOCALPTR_HPP
27 
29 // Headers
31 #include <SFML/System/ThreadLocal.hpp>
32 
33 
34 namespace sf
35 {
40 template <typename T>
41 class ThreadLocalPtr : private ThreadLocal
42 {
43 public:
44 
51  ThreadLocalPtr(T* value = NULL);
52 
62  T& operator *() const;
63 
73  T* operator ->() const;
74 
82  operator T*() const;
83 
92  ThreadLocalPtr<T>& operator =(T* value);
93 
103 };
104 
105 } // namespace sf
106 
107 #include <SFML/System/ThreadLocalPtr.inl>
108 
109 
110 #endif // SFML_THREADLOCALPTR_HPP
111 
112 
Pointer to a thread-local variable.
+
ThreadLocalPtr(T *value=NULL)
Default constructor.
+
ThreadLocalPtr< T > & operator=(T *value)
Assignment operator for a raw pointer parameter.
+
T & operator*() const
Overload of unary operator *.
+ +
T * operator->() const
Overload of operator ->
+
Defines variables with thread-local storage.
Definition: ThreadLocal.hpp:47
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html new file mode 100644 index 0000000..3542ae4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
ThreadLocal.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_THREADLOCAL_HPP
26 #define SFML_THREADLOCAL_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 #include <cstdlib>
34 
35 
36 namespace sf
37 {
38 namespace priv
39 {
40  class ThreadLocalImpl;
41 }
42 
47 class SFML_SYSTEM_API ThreadLocal : NonCopyable
48 {
49 public:
50 
57  ThreadLocal(void* value = NULL);
58 
63  ~ThreadLocal();
64 
71  void setValue(void* value);
72 
79  void* getValue() const;
80 
81 private:
82 
84  // Member data
86  priv::ThreadLocalImpl* m_impl;
87 };
88 
89 } // namespace sf
90 
91 
92 #endif // SFML_THREADLOCAL_HPP
93 
94 
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
Defines variables with thread-local storage.
Definition: ThreadLocal.hpp:47
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html new file mode 100644 index 0000000..e72cc8a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Thread.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_THREAD_HPP
26 #define SFML_THREAD_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 #include <SFML/System/NonCopyable.hpp>
33 #include <cstdlib>
34 
35 
36 namespace sf
37 {
38 namespace priv
39 {
40  class ThreadImpl;
41  struct ThreadFunc;
42 }
43 
48 class SFML_SYSTEM_API Thread : NonCopyable
49 {
50 public:
51 
74  template <typename F>
75  Thread(F function);
76 
102  template <typename F, typename A>
103  Thread(F function, A argument);
104 
125  template <typename C>
126  Thread(void(C::*function)(), C* object);
127 
135  ~Thread();
136 
146  void launch();
147 
159  void wait();
160 
172  void terminate();
173 
174 private:
175 
176  friend class priv::ThreadImpl;
177 
184  void run();
185 
187  // Member data
189  priv::ThreadImpl* m_impl;
190  priv::ThreadFunc* m_entryPoint;
191 };
192 
193 #include <SFML/System/Thread.inl>
194 
195 } // namespace sf
196 
197 #endif // SFML_THREAD_HPP
198 
199 
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+ +
Utility class to manipulate threads.
Definition: Thread.hpp:48
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html new file mode 100644 index 0000000..b0115d6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Time.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TIME_HPP
26 #define SFML_TIME_HPP
27 
29 // Headers
31 #include <SFML/System/Export.hpp>
32 
33 
34 namespace sf
35 {
40 class SFML_SYSTEM_API Time
41 {
42 public:
43 
50  Time();
51 
60  float asSeconds() const;
61 
70  Int32 asMilliseconds() const;
71 
80  Int64 asMicroseconds() const;
81 
83  // Static member data
85  static const Time Zero;
86 
87 private:
88 
89  friend SFML_SYSTEM_API Time seconds(float);
90  friend SFML_SYSTEM_API Time milliseconds(Int32);
91  friend SFML_SYSTEM_API Time microseconds(Int64);
92 
102  explicit Time(Int64 microseconds);
103 
104 private:
105 
107  // Member data
109  Int64 m_microseconds;
110 };
111 
123 SFML_SYSTEM_API Time seconds(float amount);
124 
136 SFML_SYSTEM_API Time milliseconds(Int32 amount);
137 
149 SFML_SYSTEM_API Time microseconds(Int64 amount);
150 
161 SFML_SYSTEM_API bool operator ==(Time left, Time right);
162 
173 SFML_SYSTEM_API bool operator !=(Time left, Time right);
174 
185 SFML_SYSTEM_API bool operator <(Time left, Time right);
186 
197 SFML_SYSTEM_API bool operator >(Time left, Time right);
198 
209 SFML_SYSTEM_API bool operator <=(Time left, Time right);
210 
221 SFML_SYSTEM_API bool operator >=(Time left, Time right);
222 
232 SFML_SYSTEM_API Time operator -(Time right);
233 
244 SFML_SYSTEM_API Time operator +(Time left, Time right);
245 
256 SFML_SYSTEM_API Time& operator +=(Time& left, Time right);
257 
268 SFML_SYSTEM_API Time operator -(Time left, Time right);
269 
280 SFML_SYSTEM_API Time& operator -=(Time& left, Time right);
281 
292 SFML_SYSTEM_API Time operator *(Time left, float right);
293 
304 SFML_SYSTEM_API Time operator *(Time left, Int64 right);
305 
316 SFML_SYSTEM_API Time operator *(float left, Time right);
317 
328 SFML_SYSTEM_API Time operator *(Int64 left, Time right);
329 
340 SFML_SYSTEM_API Time& operator *=(Time& left, float right);
341 
352 SFML_SYSTEM_API Time& operator *=(Time& left, Int64 right);
353 
364 SFML_SYSTEM_API Time operator /(Time left, float right);
365 
376 SFML_SYSTEM_API Time operator /(Time left, Int64 right);
377 
388 SFML_SYSTEM_API Time& operator /=(Time& left, float right);
389 
400 SFML_SYSTEM_API Time& operator /=(Time& left, Int64 right);
401 
412 SFML_SYSTEM_API float operator /(Time left, Time right);
413 
424 SFML_SYSTEM_API Time operator %(Time left, Time right);
425 
436 SFML_SYSTEM_API Time& operator %=(Time& left, Time right);
437 
438 } // namespace sf
439 
440 
441 #endif // SFML_TIME_HPP
442 
443 
Represents a time value.
Definition: Time.hpp:40
+
static const Time Zero
Predefined "zero" time value.
Definition: Time.hpp:85
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html new file mode 100644 index 0000000..b5004cb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Touch.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TOUCH_HPP
26 #define SFML_TOUCH_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <SFML/System/Vector2.hpp>
33 
34 
35 namespace sf
36 {
37 class Window;
38 
43 class SFML_WINDOW_API Touch
44 {
45 public:
46 
55  static bool isDown(unsigned int finger);
56 
68  static Vector2i getPosition(unsigned int finger);
69 
82  static Vector2i getPosition(unsigned int finger, const Window& relativeTo);
83 };
84 
85 } // namespace sf
86 
87 
88 #endif // SFML_TOUCH_HPP
89 
90 
Give access to the real-time state of the touches.
Definition: Touch.hpp:43
+
Window that serves as a target for OpenGL rendering.
+ +
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Transform_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Transform_8hpp_source.html new file mode 100644 index 0000000..b24c599 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Transform_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Transform.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TRANSFORM_HPP
26 #define SFML_TRANSFORM_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Rect.hpp>
33 #include <SFML/System/Vector2.hpp>
34 
35 
36 namespace sf
37 {
42 class SFML_GRAPHICS_API Transform
43 {
44 public:
45 
52  Transform();
53 
68  Transform(float a00, float a01, float a02,
69  float a10, float a11, float a12,
70  float a20, float a21, float a22);
71 
87  const float* getMatrix() const;
88 
98  Transform getInverse() const;
99 
109  Vector2f transformPoint(float x, float y) const;
110 
119  Vector2f transformPoint(const Vector2f& point) const;
120 
135  FloatRect transformRect(const FloatRect& rectangle) const;
136 
149  Transform& combine(const Transform& transform);
150 
169  Transform& translate(float x, float y);
170 
188  Transform& translate(const Vector2f& offset);
189 
207  Transform& rotate(float angle);
208 
233  Transform& rotate(float angle, float centerX, float centerY);
234 
258  Transform& rotate(float angle, const Vector2f& center);
259 
278  Transform& scale(float scaleX, float scaleY);
279 
305  Transform& scale(float scaleX, float scaleY, float centerX, float centerY);
306 
324  Transform& scale(const Vector2f& factors);
325 
349  Transform& scale(const Vector2f& factors, const Vector2f& center);
350 
352  // Static member data
354  static const Transform Identity;
355 
356 private:
357 
359  // Member data
361  float m_matrix[16];
362 };
363 
376 SFML_GRAPHICS_API Transform operator *(const Transform& left, const Transform& right);
377 
390 SFML_GRAPHICS_API Transform& operator *=(Transform& left, const Transform& right);
391 
404 SFML_GRAPHICS_API Vector2f operator *(const Transform& left, const Vector2f& right);
405 
419 SFML_GRAPHICS_API bool operator ==(const Transform& left, const Transform& right);
420 
433 SFML_GRAPHICS_API bool operator !=(const Transform& left, const Transform& right);
434 
435 } // namespace sf
436 
437 
438 #endif // SFML_TRANSFORM_HPP
439 
440 
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+
static const Transform Identity
The identity transform (does nothing)
Definition: Transform.hpp:354
+ + + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Transformable_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Transformable_8hpp_source.html new file mode 100644 index 0000000..d89ccaa --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Transformable_8hpp_source.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Transformable.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_TRANSFORMABLE_HPP
26 #define SFML_TRANSFORMABLE_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Transform.hpp>
33 
34 
35 namespace sf
36 {
41 class SFML_GRAPHICS_API Transformable
42 {
43 public:
44 
49  Transformable();
50 
55  virtual ~Transformable();
56 
70  void setPosition(float x, float y);
71 
84  void setPosition(const Vector2f& position);
85 
98  void setRotation(float angle);
99 
113  void setScale(float factorX, float factorY);
114 
127  void setScale(const Vector2f& factors);
128 
145  void setOrigin(float x, float y);
146 
162  void setOrigin(const Vector2f& origin);
163 
172  const Vector2f& getPosition() const;
173 
184  float getRotation() const;
185 
194  const Vector2f& getScale() const;
195 
204  const Vector2f& getOrigin() const;
205 
223  void move(float offsetX, float offsetY);
224 
240  void move(const Vector2f& offset);
241 
255  void rotate(float angle);
256 
274  void scale(float factorX, float factorY);
275 
292  void scale(const Vector2f& factor);
293 
302  const Transform& getTransform() const;
303 
312  const Transform& getInverseTransform() const;
313 
314 private:
315 
317  // Member data
319  Vector2f m_origin;
320  Vector2f m_position;
321  float m_rotation;
322  Vector2f m_scale;
323  mutable Transform m_transform;
324  mutable bool m_transformNeedUpdate;
325  mutable Transform m_inverseTransform;
326  mutable bool m_inverseTransformNeedUpdate;
327 };
328 
329 } // namespace sf
330 
331 
332 #endif // SFML_TRANSFORMABLE_HPP
333 
334 
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+ + +
Decomposed transform defined by a position, a rotation and a scale.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/UdpSocket_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/UdpSocket_8hpp_source.html new file mode 100644 index 0000000..864adc4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/UdpSocket_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
UdpSocket.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_UDPSOCKET_HPP
26 #define SFML_UDPSOCKET_HPP
27 
29 // Headers
31 #include <SFML/Network/Export.hpp>
32 #include <SFML/Network/Socket.hpp>
33 #include <SFML/Network/IpAddress.hpp>
34 #include <vector>
35 
36 
37 namespace sf
38 {
39 class Packet;
40 
45 class SFML_NETWORK_API UdpSocket : public Socket
46 {
47 public:
48 
50  // Constants
52  enum
53  {
54  MaxDatagramSize = 65507
55  };
56 
61  UdpSocket();
62 
74  unsigned short getLocalPort() const;
75 
98  Status bind(unsigned short port, const IpAddress& address = IpAddress::Any);
99 
112  void unbind();
113 
131  Status send(const void* data, std::size_t size, const IpAddress& remoteAddress, unsigned short remotePort);
132 
154  Status receive(void* data, std::size_t size, std::size_t& received, IpAddress& remoteAddress, unsigned short& remotePort);
155 
172  Status send(Packet& packet, const IpAddress& remoteAddress, unsigned short remotePort);
173 
189  Status receive(Packet& packet, IpAddress& remoteAddress, unsigned short& remotePort);
190 
191 private:
192 
194  // Member data
196  std::vector<char> m_buffer;
197 };
198 
199 } // namespace sf
200 
201 
202 #endif // SFML_UDPSOCKET_HPP
203 
204 
static const IpAddress Any
Value representing any address (0.0.0.0)
Definition: IpAddress.hpp:185
+
Specialized socket using the UDP protocol.
Definition: UdpSocket.hpp:45
+
Base class for all the socket types.
Definition: Socket.hpp:45
+
Encapsulate an IPv4 network address.
Definition: IpAddress.hpp:44
+
Utility class to build blocks of data to transfer over the network.
Definition: Packet.hpp:47
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Utf_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Utf_8hpp_source.html new file mode 100644 index 0000000..e73989e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Utf_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Utf.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_UTF_HPP
26 #define SFML_UTF_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 #include <algorithm>
33 #include <locale>
34 #include <string>
35 #include <cstdlib>
36 
37 
38 namespace sf
39 {
40 template <unsigned int N>
41 class Utf;
42 
47 template <>
48 class Utf<8>
49 {
50 public:
51 
66  template <typename In>
67  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
68 
82  template <typename Out>
83  static Out encode(Uint32 input, Out output, Uint8 replacement = 0);
84 
97  template <typename In>
98  static In next(In begin, In end);
99 
113  template <typename In>
114  static std::size_t count(In begin, In end);
115 
130  template <typename In, typename Out>
131  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
132 
143  template <typename In, typename Out>
144  static Out fromWide(In begin, In end, Out output);
145 
156  template <typename In, typename Out>
157  static Out fromLatin1(In begin, In end, Out output);
158 
174  template <typename In, typename Out>
175  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
176 
188  template <typename In, typename Out>
189  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
190 
202  template <typename In, typename Out>
203  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
204 
220  template <typename In, typename Out>
221  static Out toUtf8(In begin, In end, Out output);
222 
233  template <typename In, typename Out>
234  static Out toUtf16(In begin, In end, Out output);
235 
246  template <typename In, typename Out>
247  static Out toUtf32(In begin, In end, Out output);
248 };
249 
254 template <>
255 class Utf<16>
256 {
257 public:
258 
273  template <typename In>
274  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
275 
289  template <typename Out>
290  static Out encode(Uint32 input, Out output, Uint16 replacement = 0);
291 
304  template <typename In>
305  static In next(In begin, In end);
306 
320  template <typename In>
321  static std::size_t count(In begin, In end);
322 
337  template <typename In, typename Out>
338  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
339 
350  template <typename In, typename Out>
351  static Out fromWide(In begin, In end, Out output);
352 
363  template <typename In, typename Out>
364  static Out fromLatin1(In begin, In end, Out output);
365 
381  template <typename In, typename Out>
382  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
383 
395  template <typename In, typename Out>
396  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
397 
409  template <typename In, typename Out>
410  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
411 
422  template <typename In, typename Out>
423  static Out toUtf8(In begin, In end, Out output);
424 
440  template <typename In, typename Out>
441  static Out toUtf16(In begin, In end, Out output);
442 
453  template <typename In, typename Out>
454  static Out toUtf32(In begin, In end, Out output);
455 };
456 
461 template <>
462 class Utf<32>
463 {
464 public:
465 
481  template <typename In>
482  static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
483 
498  template <typename Out>
499  static Out encode(Uint32 input, Out output, Uint32 replacement = 0);
500 
513  template <typename In>
514  static In next(In begin, In end);
515 
528  template <typename In>
529  static std::size_t count(In begin, In end);
530 
545  template <typename In, typename Out>
546  static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
547 
558  template <typename In, typename Out>
559  static Out fromWide(In begin, In end, Out output);
560 
571  template <typename In, typename Out>
572  static Out fromLatin1(In begin, In end, Out output);
573 
589  template <typename In, typename Out>
590  static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
591 
603  template <typename In, typename Out>
604  static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
605 
617  template <typename In, typename Out>
618  static Out toLatin1(In begin, In end, Out output, char replacement = 0);
619 
630  template <typename In, typename Out>
631  static Out toUtf8(In begin, In end, Out output);
632 
643  template <typename In, typename Out>
644  static Out toUtf16(In begin, In end, Out output);
645 
661  template <typename In, typename Out>
662  static Out toUtf32(In begin, In end, Out output);
663 
677  template <typename In>
678  static Uint32 decodeAnsi(In input, const std::locale& locale = std::locale());
679 
692  template <typename In>
693  static Uint32 decodeWide(In input);
694 
710  template <typename Out>
711  static Out encodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale());
712 
727  template <typename Out>
728  static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0);
729 };
730 
731 #include <SFML/System/Utf.inl>
732 
733 // Make typedefs to get rid of the template syntax
734 typedef Utf<8> Utf8;
735 typedef Utf<16> Utf16;
736 typedef Utf<32> Utf32;
737 
738 } // namespace sf
739 
740 
741 #endif // SFML_UTF_HPP
742 
743 
Utility class providing generic functions for UTF conversions.
Definition: Utf.hpp:41
+
Specialization of the Utf template for UTF-16.
Definition: Utf.hpp:255
+
Specialization of the Utf template for UTF-32.
Definition: Utf.hpp:462
+ +
Specialization of the Utf template for UTF-8.
Definition: Utf.hpp:48
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Vector2_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Vector2_8hpp_source.html new file mode 100644 index 0000000..9b1b31a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Vector2_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Vector2.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VECTOR2_HPP
26 #define SFML_VECTOR2_HPP
27 
28 
29 namespace sf
30 {
36 template <typename T>
37 class Vector2
38 {
39 public:
40 
47  Vector2();
48 
56  Vector2(T X, T Y);
57 
69  template <typename U>
70  explicit Vector2(const Vector2<U>& vector);
71 
73  // Member data
75  T x;
76  T y;
77 };
78 
88 template <typename T>
89 Vector2<T> operator -(const Vector2<T>& right);
90 
104 template <typename T>
105 Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right);
106 
120 template <typename T>
121 Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right);
122 
133 template <typename T>
134 Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right);
135 
146 template <typename T>
147 Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right);
148 
159 template <typename T>
160 Vector2<T> operator *(const Vector2<T>& left, T right);
161 
172 template <typename T>
173 Vector2<T> operator *(T left, const Vector2<T>& right);
174 
188 template <typename T>
189 Vector2<T>& operator *=(Vector2<T>& left, T right);
190 
201 template <typename T>
202 Vector2<T> operator /(const Vector2<T>& left, T right);
203 
217 template <typename T>
218 Vector2<T>& operator /=(Vector2<T>& left, T right);
219 
232 template <typename T>
233 bool operator ==(const Vector2<T>& left, const Vector2<T>& right);
234 
247 template <typename T>
248 bool operator !=(const Vector2<T>& left, const Vector2<T>& right);
249 
250 #include <SFML/System/Vector2.inl>
251 
252 // Define the most common types
253 typedef Vector2<int> Vector2i;
255 typedef Vector2<float> Vector2f;
256 
257 } // namespace sf
258 
259 
260 #endif // SFML_VECTOR2_HPP
261 
262 
T y
Y coordinate of the vector.
Definition: Vector2.hpp:76
+
Vector2()
Default constructor.
+
T x
X coordinate of the vector.
Definition: Vector2.hpp:75
+ +
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Vector3_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Vector3_8hpp_source.html new file mode 100644 index 0000000..6ec27f6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Vector3_8hpp_source.html @@ -0,0 +1,62 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Vector3.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VECTOR3_HPP
26 #define SFML_VECTOR3_HPP
27 
28 
29 namespace sf
30 {
36 template <typename T>
37 class Vector3
38 {
39 public:
40 
47  Vector3();
48 
57  Vector3(T X, T Y, T Z);
58 
70  template <typename U>
71  explicit Vector3(const Vector3<U>& vector);
72 
74  // Member data
76  T x;
77  T y;
78  T z;
79 };
80 
90 template <typename T>
91 Vector3<T> operator -(const Vector3<T>& left);
92 
106 template <typename T>
107 Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right);
108 
122 template <typename T>
123 Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right);
124 
135 template <typename T>
136 Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right);
137 
148 template <typename T>
149 Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right);
150 
161 template <typename T>
162 Vector3<T> operator *(const Vector3<T>& left, T right);
163 
174 template <typename T>
175 Vector3<T> operator *(T left, const Vector3<T>& right);
176 
190 template <typename T>
191 Vector3<T>& operator *=(Vector3<T>& left, T right);
192 
203 template <typename T>
204 Vector3<T> operator /(const Vector3<T>& left, T right);
205 
219 template <typename T>
220 Vector3<T>& operator /=(Vector3<T>& left, T right);
221 
234 template <typename T>
235 bool operator ==(const Vector3<T>& left, const Vector3<T>& right);
236 
249 template <typename T>
250 bool operator !=(const Vector3<T>& left, const Vector3<T>& right);
251 
252 #include <SFML/System/Vector3.inl>
253 
254 // Define the most common types
255 typedef Vector3<int> Vector3i;
256 typedef Vector3<float> Vector3f;
257 
258 } // namespace sf
259 
260 
261 #endif // SFML_VECTOR3_HPP
262 
263 
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:37
+
T z
Z coordinate of the vector.
Definition: Vector3.hpp:78
+
T x
X coordinate of the vector.
Definition: Vector3.hpp:76
+ +
Vector3()
Default constructor.
+
T y
Y coordinate of the vector.
Definition: Vector3.hpp:77
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/VertexArray_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/VertexArray_8hpp_source.html new file mode 100644 index 0000000..abd00d0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/VertexArray_8hpp_source.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
VertexArray.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VERTEXARRAY_HPP
26 #define SFML_VERTEXARRAY_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Vertex.hpp>
33 #include <SFML/Graphics/PrimitiveType.hpp>
34 #include <SFML/Graphics/Rect.hpp>
35 #include <SFML/Graphics/Drawable.hpp>
36 #include <vector>
37 
38 
39 namespace sf
40 {
45 class SFML_GRAPHICS_API VertexArray : public Drawable
46 {
47 public:
48 
55  VertexArray();
56 
64  explicit VertexArray(PrimitiveType type, std::size_t vertexCount = 0);
65 
72  std::size_t getVertexCount() const;
73 
88  Vertex& operator [](std::size_t index);
89 
104  const Vertex& operator [](std::size_t index) const;
105 
115  void clear();
116 
129  void resize(std::size_t vertexCount);
130 
137  void append(const Vertex& vertex);
138 
153  void setPrimitiveType(PrimitiveType type);
154 
161  PrimitiveType getPrimitiveType() const;
162 
172  FloatRect getBounds() const;
173 
174 private:
175 
183  virtual void draw(RenderTarget& target, RenderStates states) const;
184 
185 private:
186 
188  // Member data
190  std::vector<Vertex> m_vertices;
191  PrimitiveType m_primitiveType;
192 };
193 
194 } // namespace sf
195 
196 
197 #endif // SFML_VERTEXARRAY_HPP
198 
199 
PrimitiveType
Types of primitives that a sf::VertexArray can render.
+
Define the states used for drawing to a RenderTarget.
+
Define a set of one or more 2D primitives.
Definition: VertexArray.hpp:45
+
Define a point with color and texture coordinates.
Definition: Vertex.hpp:42
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+ + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/VertexBuffer_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/VertexBuffer_8hpp_source.html new file mode 100644 index 0000000..15e4325 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/VertexBuffer_8hpp_source.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
VertexBuffer.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VERTEXBUFFER_HPP
26 #define SFML_VERTEXBUFFER_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/PrimitiveType.hpp>
33 #include <SFML/Graphics/Drawable.hpp>
34 #include <SFML/Window/GlResource.hpp>
35 
36 
37 namespace sf
38 {
39 class RenderTarget;
40 class Vertex;
41 
46 class SFML_GRAPHICS_API VertexBuffer : public Drawable, private GlResource
47 {
48 public:
49 
60  enum Usage
61  {
64  Static
65  };
66 
73  VertexBuffer();
74 
83  explicit VertexBuffer(PrimitiveType type);
84 
93  explicit VertexBuffer(Usage usage);
94 
105  VertexBuffer(PrimitiveType type, Usage usage);
106 
113  VertexBuffer(const VertexBuffer& copy);
114 
119  ~VertexBuffer();
120 
137  bool create(std::size_t vertexCount);
138 
145  std::size_t getVertexCount() const;
146 
165  bool update(const Vertex* vertices);
166 
198  bool update(const Vertex* vertices, std::size_t vertexCount, unsigned int offset);
199 
208  bool update(const VertexBuffer& vertexBuffer);
209 
218  VertexBuffer& operator =(const VertexBuffer& right);
219 
226  void swap(VertexBuffer& right);
227 
238  unsigned int getNativeHandle() const;
239 
251  void setPrimitiveType(PrimitiveType type);
252 
259  PrimitiveType getPrimitiveType() const;
260 
276  void setUsage(Usage usage);
277 
284  Usage getUsage() const;
285 
307  static void bind(const VertexBuffer* vertexBuffer);
308 
319  static bool isAvailable();
320 
321 private:
322 
330  virtual void draw(RenderTarget& target, RenderStates states) const;
331 
332 private:
333 
335  // Member data
337  unsigned int m_buffer;
338  std::size_t m_size;
339  PrimitiveType m_primitiveType;
340  Usage m_usage;
341 };
342 
343 } // namespace sf
344 
345 
346 #endif // SFML_VERTEXBUFFER_HPP
347 
348 
PrimitiveType
Types of primitives that a sf::VertexArray can render.
+
Define the states used for drawing to a RenderTarget.
+
Vertex buffer storage for one or more 2D primitives.
+
Occasionally changing data.
+
Define a point with color and texture coordinates.
Definition: Vertex.hpp:42
+
Base class for all render targets (window, texture, ...)
+
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:44
+
Usage
Usage specifiers.
+ +
Constantly changing data.
+
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Vertex_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Vertex_8hpp_source.html new file mode 100644 index 0000000..9f657a4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Vertex_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Vertex.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VERTEX_HPP
26 #define SFML_VERTEX_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Color.hpp>
33 #include <SFML/System/Vector2.hpp>
34 
35 
36 namespace sf
37 {
42 class SFML_GRAPHICS_API Vertex
43 {
44 public:
45 
50  Vertex();
51 
60  Vertex(const Vector2f& thePosition);
61 
71  Vertex(const Vector2f& thePosition, const Color& theColor);
72 
82  Vertex(const Vector2f& thePosition, const Vector2f& theTexCoords);
83 
92  Vertex(const Vector2f& thePosition, const Color& theColor, const Vector2f& theTexCoords);
93 
95  // Member data
100 };
101 
102 } // namespace sf
103 
104 
105 #endif // SFML_VERTEX_HPP
106 
107 
Vector2f position
2D position of the vertex
Definition: Vertex.hpp:97
+
Color color
Color of the vertex.
Definition: Vertex.hpp:98
+
Utility class for manipulating RGBA colors.
Definition: Color.hpp:40
+
Vector2f texCoords
Coordinates of the texture&#39;s pixel to map to the vertex.
Definition: Vertex.hpp:99
+
Define a point with color and texture coordinates.
Definition: Vertex.hpp:42
+ + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/VideoMode_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/VideoMode_8hpp_source.html new file mode 100644 index 0000000..970fc89 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/VideoMode_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
VideoMode.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VIDEOMODE_HPP
26 #define SFML_VIDEOMODE_HPP
27 
29 // Headers
31 #include <SFML/Window/Export.hpp>
32 #include <vector>
33 
34 
35 namespace sf
36 {
41 class SFML_WINDOW_API VideoMode
42 {
43 public:
44 
51  VideoMode();
52 
61  VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel = 32);
62 
69  static VideoMode getDesktopMode();
70 
85  static const std::vector<VideoMode>& getFullscreenModes();
86 
97  bool isValid() const;
98 
100  // Member data
102  unsigned int width;
103  unsigned int height;
104  unsigned int bitsPerPixel;
105 };
106 
117 SFML_WINDOW_API bool operator ==(const VideoMode& left, const VideoMode& right);
118 
129 SFML_WINDOW_API bool operator !=(const VideoMode& left, const VideoMode& right);
130 
141 SFML_WINDOW_API bool operator <(const VideoMode& left, const VideoMode& right);
142 
153 SFML_WINDOW_API bool operator >(const VideoMode& left, const VideoMode& right);
154 
165 SFML_WINDOW_API bool operator <=(const VideoMode& left, const VideoMode& right);
166 
177 SFML_WINDOW_API bool operator >=(const VideoMode& left, const VideoMode& right);
178 
179 } // namespace sf
180 
181 
182 #endif // SFML_VIDEOMODE_HPP
183 
184 
unsigned int bitsPerPixel
Video mode pixel depth, in bits per pixels.
Definition: VideoMode.hpp:104
+
unsigned int width
Video mode width, in pixels.
Definition: VideoMode.hpp:102
+
VideoMode defines a video mode (width, height, bpp)
Definition: VideoMode.hpp:41
+
unsigned int height
Video mode height, in pixels.
Definition: VideoMode.hpp:103
+ +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/View_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/View_8hpp_source.html new file mode 100644 index 0000000..aff2311 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/View_8hpp_source.html @@ -0,0 +1,61 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
View.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VIEW_HPP
26 #define SFML_VIEW_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Rect.hpp>
33 #include <SFML/Graphics/Transform.hpp>
34 #include <SFML/System/Vector2.hpp>
35 
36 
37 namespace sf
38 {
43 class SFML_GRAPHICS_API View
44 {
45 public:
46 
53  View();
54 
61  explicit View(const FloatRect& rectangle);
62 
70  View(const Vector2f& center, const Vector2f& size);
71 
81  void setCenter(float x, float y);
82 
91  void setCenter(const Vector2f& center);
92 
102  void setSize(float width, float height);
103 
112  void setSize(const Vector2f& size);
113 
124  void setRotation(float angle);
125 
141  void setViewport(const FloatRect& viewport);
142 
153  void reset(const FloatRect& rectangle);
154 
163  const Vector2f& getCenter() const;
164 
173  const Vector2f& getSize() const;
174 
183  float getRotation() const;
184 
193  const FloatRect& getViewport() const;
194 
204  void move(float offsetX, float offsetY);
205 
214  void move(const Vector2f& offset);
215 
224  void rotate(float angle);
225 
241  void zoom(float factor);
242 
253  const Transform& getTransform() const;
254 
265  const Transform& getInverseTransform() const;
266 
267 private:
268 
270  // Member data
272  Vector2f m_center;
273  Vector2f m_size;
274  float m_rotation;
275  FloatRect m_viewport;
276  mutable Transform m_transform;
277  mutable Transform m_inverseTransform;
278  mutable bool m_transformUpdated;
279  mutable bool m_invTransformUpdated;
280 };
281 
282 } // namespace sf
283 
284 
285 #endif // SFML_VIEW_HPP
286 
287 
2D camera that defines what region is shown on screen
Definition: View.hpp:43
+
Define a 3x3 transform matrix.
Definition: Transform.hpp:42
+ + + +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/WindowHandle_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/WindowHandle_8hpp_source.html new file mode 100644 index 0000000..4416eac --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/WindowHandle_8hpp_source.html @@ -0,0 +1,58 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
WindowHandle.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_WINDOWHANDLE_HPP
26 #define SFML_WINDOWHANDLE_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 // Windows' HWND is a typedef on struct HWND__*
34 #if defined(SFML_SYSTEM_WINDOWS)
35  struct HWND__;
36 #endif
37 
38 namespace sf
39 {
40 #if defined(SFML_SYSTEM_WINDOWS)
41 
42  // Window handle is HWND (HWND__*) on Windows
43  typedef HWND__* WindowHandle;
44 
45 #elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) || defined(SFML_SYSTEM_OPENBSD)
46 
47  // Window handle is Window (unsigned long) on Unix - X11
48  typedef unsigned long WindowHandle;
49 
50 #elif defined(SFML_SYSTEM_MACOS)
51 
52  // Window handle is NSWindow or NSView (void*) on Mac OS X - Cocoa
53  typedef void* WindowHandle;
54 
55 #elif defined(SFML_SYSTEM_IOS)
56 
57  // Window handle is UIWindow (void*) on iOS - UIKit
58  typedef void* WindowHandle;
59 
60 #elif defined(SFML_SYSTEM_ANDROID)
61 
62  // Window handle is ANativeWindow* (void*) on Android
63  typedef void* WindowHandle;
64 
65 #elif defined(SFML_DOXYGEN)
66 
67  // Define typedef symbol so that Doxygen can attach some documentation to it
68  typedef "platform-specific" WindowHandle;
69 
70 #endif
71 
72 } // namespace sf
73 
74 
75 #endif // SFML_WINDOWHANDLE_HPP
76 
+
platform specific WindowHandle
Define a low-level window handle type, specific to each platform.
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/WindowStyle_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/WindowStyle_8hpp_source.html new file mode 100644 index 0000000..c71b0d2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/WindowStyle_8hpp_source.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
WindowStyle.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_WINDOWSTYLE_HPP
26 #define SFML_WINDOWSTYLE_HPP
27 
28 
29 namespace sf
30 {
31 namespace Style
32 {
38  enum
39  {
40  None = 0,
41  Titlebar = 1 << 0,
42  Resize = 1 << 1,
43  Close = 1 << 2,
44  Fullscreen = 1 << 3,
45 
47  };
48 }
49 
50 } // namespace sf
51 
52 
53 #endif // SFML_WINDOWSTYLE_HPP
No border / title bar (this flag and all others are mutually exclusive)
Definition: WindowStyle.hpp:40
+
Default window style.
Definition: WindowStyle.hpp:46
+
Title bar + fixed border.
Definition: WindowStyle.hpp:41
+
Title bar + close button.
Definition: WindowStyle.hpp:43
+
Fullscreen mode (this flag and all others are mutually exclusive)
Definition: WindowStyle.hpp:44
+ +
Title bar + resizable border + maximize button.
Definition: WindowStyle.hpp:42
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Window_2Export_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Window_2Export_8hpp_source.html new file mode 100644 index 0000000..1ce8fe0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Window_2Export_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Window/Export.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_WINDOW_EXPORT_HPP
26 #define SFML_WINDOW_EXPORT_HPP
27 
29 // Headers
31 #include <SFML/Config.hpp>
32 
33 
35 // Define portable import / export macros
37 #if defined(SFML_WINDOW_EXPORTS)
38 
39  #define SFML_WINDOW_API SFML_API_EXPORT
40 
41 #else
42 
43  #define SFML_WINDOW_API SFML_API_IMPORT
44 
45 #endif
46 
47 
48 #endif // SFML_WINDOW_EXPORT_HPP
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Window_2Window_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Window_2Window_8hpp_source.html new file mode 100644 index 0000000..433d774 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Window_2Window_8hpp_source.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Window/Window.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_WINDOW_HPP
26 #define SFML_WINDOW_HPP
27 
29 // Headers
31 #include <SFML/Window/ContextSettings.hpp>
32 #include <SFML/Window/Cursor.hpp>
33 #include <SFML/Window/Export.hpp>
34 #include <SFML/Window/GlResource.hpp>
35 #include <SFML/Window/VideoMode.hpp>
36 #include <SFML/Window/WindowHandle.hpp>
37 #include <SFML/Window/WindowStyle.hpp>
38 #include <SFML/System/Clock.hpp>
39 #include <SFML/System/NonCopyable.hpp>
40 #include <SFML/System/String.hpp>
41 #include <SFML/System/Vector2.hpp>
42 
43 
44 namespace sf
45 {
46 namespace priv
47 {
48  class GlContext;
49  class WindowImpl;
50 }
51 
52 class Event;
53 
58 class SFML_WINDOW_API Window : GlResource, NonCopyable
59 {
60 public:
61 
69  Window();
70 
90  Window(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
91 
106  explicit Window(WindowHandle handle, const ContextSettings& settings = ContextSettings());
107 
114  virtual ~Window();
115 
133  void create(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
134 
150  void create(WindowHandle handle, const ContextSettings& settings = ContextSettings());
151 
162  void close();
163 
174  bool isOpen() const;
175 
187  const ContextSettings& getSettings() const;
188 
212  bool pollEvent(Event& event);
213 
239  bool waitEvent(Event& event);
240 
249  Vector2i getPosition() const;
250 
263  void setPosition(const Vector2i& position);
264 
276  Vector2u getSize() const;
277 
286  void setSize(const Vector2u& size);
287 
296  void setTitle(const String& title);
297 
315  void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
316 
325  void setVisible(bool visible);
326 
340  void setVerticalSyncEnabled(bool enabled);
341 
350  void setMouseCursorVisible(bool visible);
351 
363  void setMouseCursorGrabbed(bool grabbed);
364 
382  void setMouseCursor(const Cursor& cursor);
383 
396  void setKeyRepeatEnabled(bool enabled);
397 
413  void setFramerateLimit(unsigned int limit);
414 
426  void setJoystickThreshold(float threshold);
427 
444  bool setActive(bool active = true) const;
445 
460  void requestFocus();
461 
473  bool hasFocus() const;
474 
483  void display();
484 
497  WindowHandle getSystemHandle() const;
498 
499 protected:
500 
509  virtual void onCreate();
510 
518  virtual void onResize();
519 
520 private:
521 
534  bool filterEvent(const Event& event);
535 
540  void initialize();
541 
543  // Member data
545  priv::WindowImpl* m_impl;
546  priv::GlContext* m_context;
547  Clock m_clock;
548  Time m_frameTimeLimit;
549  Vector2u m_size;
550 };
551 
552 } // namespace sf
553 
554 
555 #endif // SFML_WINDOW_HPP
556 
557 
Default window style.
Definition: WindowStyle.hpp:46
+
Window that serves as a target for OpenGL rendering.
+
Represents a time value.
Definition: Time.hpp:40
+
Cursor defines the appearance of a system cursor.
Definition: Cursor.hpp:46
+
Defines a system event and its parameters.
Definition: Event.hpp:44
+
Utility class that makes any derived class non-copyable.
Definition: NonCopyable.hpp:41
+
Structure defining the settings of the OpenGL context attached to a window.
+
VideoMode defines a video mode (width, height, bpp)
Definition: VideoMode.hpp:41
+ +
Utility template class for manipulating 2-dimensional vectors.
Definition: Vector2.hpp:37
+
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:46
+
Utility string class that automatically handles conversions between types and encodings.
Definition: String.hpp:45
+
platform specific WindowHandle
Define a low-level window handle type, specific to each platform.
+
Utility class that measures the elapsed time.
Definition: Clock.hpp:41
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/Window_8hpp_source.html b/SQCSim2021/external/sfml251-32/doc/html/Window_8hpp_source.html new file mode 100644 index 0000000..8a5c209 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/Window_8hpp_source.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Window.hpp
+
+
+
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SFML_WINDOW_HPP
26 #define SFML_SFML_WINDOW_HPP
27 
29 // Headers
31 
32 #include <SFML/System.hpp>
33 #include <SFML/Window/Clipboard.hpp>
34 #include <SFML/Window/Context.hpp>
35 #include <SFML/Window/ContextSettings.hpp>
36 #include <SFML/Window/Cursor.hpp>
37 #include <SFML/Window/Event.hpp>
38 #include <SFML/Window/Joystick.hpp>
39 #include <SFML/Window/Keyboard.hpp>
40 #include <SFML/Window/Mouse.hpp>
41 #include <SFML/Window/Sensor.hpp>
42 #include <SFML/Window/Touch.hpp>
43 #include <SFML/Window/VideoMode.hpp>
44 #include <SFML/Window/Window.hpp>
45 #include <SFML/Window/WindowHandle.hpp>
46 #include <SFML/Window/WindowStyle.hpp>
47 
48 
49 
50 #endif // SFML_SFML_WINDOW_HPP
51 
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/annotated.html b/SQCSim2021/external/sfml251-32/doc/html/annotated.html new file mode 100644 index 0000000..4f2e1ee --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/annotated.html @@ -0,0 +1,162 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nsf
 CAlResourceBase class for classes that require an OpenAL context
 CBlendModeBlending modes for drawing
 CCircleShapeSpecialized shape representing a circle
 CClipboardGive access to the system clipboard
 CClockUtility class that measures the elapsed time
 CColorUtility class for manipulating RGBA colors
 CContextClass holding a valid drawing context
 CContextSettingsStructure defining the settings of the OpenGL context attached to a window
 CConvexShapeSpecialized shape representing a convex polygon
 CCursorCursor defines the appearance of a system cursor
 CDrawableAbstract base class for objects that can be drawn to a render target
 CEventDefines a system event and its parameters
 CFileInputStreamImplementation of input stream based on a file
 CFontClass for loading and manipulating character fonts
 CFtpA FTP client
 CGlResourceBase class for classes that require an OpenGL context
 CGlyphStructure describing a glyph
 CHttpA HTTP client
 CImageClass for loading, manipulating and saving images
 CInputSoundFileProvide read access to sound files
 CInputStreamAbstract class for custom file input streams
 CIpAddressEncapsulate an IPv4 network address
 CJoystickGive access to the real-time state of the joysticks
 CKeyboardGive access to the real-time state of the keyboard
 CListenerThe audio listener is the point in the scene from where all the sounds are heard
 CLockAutomatic wrapper for locking and unlocking mutexes
 CMemoryInputStreamImplementation of input stream based on a memory chunk
 CMouseGive access to the real-time state of the mouse
 CMusicStreamed music played from an audio file
 CMutexBlocks concurrent access to shared resources from multiple threads
 CNonCopyableUtility class that makes any derived class non-copyable
 COutputSoundFileProvide write access to sound files
 CPacketUtility class to build blocks of data to transfer over the network
 CRectUtility class for manipulating 2D axis aligned rectangles
 CRectangleShapeSpecialized shape representing a rectangle
 CRenderStatesDefine the states used for drawing to a RenderTarget
 CRenderTargetBase class for all render targets (window, texture, ...)
 CRenderTextureTarget for off-screen 2D rendering into a texture
 CRenderWindowWindow that can serve as a target for 2D drawing
 CSensorGive access to the real-time state of the sensors
 CShaderShader class (vertex, geometry and fragment)
 CShapeBase class for textured shapes with outline
 CSocketBase class for all the socket types
 CSocketSelectorMultiplexer that allows to read from multiple sockets
 CSoundRegular sound that can be played in the audio environment
 CSoundBufferStorage for audio samples defining a sound
 CSoundBufferRecorderSpecialized SoundRecorder which stores the captured audio data into a sound buffer
 CSoundFileFactoryManages and instantiates sound file readers and writers
 CSoundFileReaderAbstract base class for sound file decoding
 CSoundFileWriterAbstract base class for sound file encoding
 CSoundRecorderAbstract base class for capturing sound data
 CSoundSourceBase class defining a sound's properties
 CSoundStreamAbstract base class for streamed audio sources
 CSpriteDrawable representation of a texture, with its own transformations, color, etc
 CStringUtility string class that automatically handles conversions between types and encodings
 CTcpListenerSocket that listens to new TCP connections
 CTcpSocketSpecialized socket using the TCP protocol
 CTextGraphical text that can be drawn to a render target
 CTextureImage living on the graphics card that can be used for drawing
 CThreadUtility class to manipulate threads
 CThreadLocalDefines variables with thread-local storage
 CThreadLocalPtrPointer to a thread-local variable
 CTimeRepresents a time value
 CTouchGive access to the real-time state of the touches
 CTransformDefine a 3x3 transform matrix
 CTransformableDecomposed transform defined by a position, a rotation and a scale
 CUdpSocketSpecialized socket using the UDP protocol
 CUtfUtility class providing generic functions for UTF conversions
 CUtf< 16 >Specialization of the Utf template for UTF-16
 CUtf< 32 >Specialization of the Utf template for UTF-32
 CUtf< 8 >Specialization of the Utf template for UTF-8
 CVector2Utility template class for manipulating 2-dimensional vectors
 CVector3Utility template class for manipulating 3-dimensional vectors
 CVertexDefine a point with color and texture coordinates
 CVertexArrayDefine a set of one or more 2D primitives
 CVertexBufferVertex buffer storage for one or more 2D primitives
 CVideoModeVideoMode defines a video mode (width, height, bpp)
 CView2D camera that defines what region is shown on screen
 CWindowWindow that serves as a target for OpenGL rendering
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/bc_s.png b/SQCSim2021/external/sfml251-32/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yVBlb2V36ZrV_;wqY>4M&U|`Djba4!+V0=6GbhdDy z$g%Ttcb+`6#8YkZGXC6IYKEp}T6srWr?B1GF(F9Dgj?HVt465w+N3F~L=2m{I{LlD z^>%5vZqF6G-~TJ)wO6ipu)6bXjiwh*F19Y=5PHv}_T<_>?)LXZ=brv~w|9jRwclw=A z?M&zHUgY;R*`eBLylJ`psaF}A4gY^O%Fm2B5}9e|mBi(c{`-FBy$*q2n=WRjOR}*p zfBY&&@WtM>%(GnQhCZ8Hrfu)q@J^}V*|pnFG0l-`VjpgNRw?t~DC2x;r?WccM z%Omn1@irTG-CEDAzJ9+RYg5`mgEysJmY;n7W;LYAo9$3t&1meNHsy-)mEv3(1`Syq z@t=pYwN6di?6r!ub^RVD1}~=5i}Ig{wN2S0S{h%+$*`d)R#lZfS1eDaG`5P5VMCE= z^x0z@R^R$Gm60JLb?c-y&!09YUR*eu&fwsA<<`9iTVESDS?SxbGI$-AnRFpglk?-w z))MJk_rJ3+X!!n)F*APYoSvijm+7tb{~abbGah}k{T}t&$Z~D@q`Q~4Y!~SWvp(e` zVceXhX1;R!uD#zA6+PP+HDAA0(fxK@?D8*$&9kMu%}YGP_Juw8c;!!0+6oK)g(sSw zY~HWlnwgvTf6fV!_7>ip`-^|dGPU1!;hwI1lEZZJTJ>Wl_HWi~`r*qYH%WNrY>^GS z)7LcBm>zvDv~{n$U&>{X3q>_wrW{sld81^mt-e{7!GY7X-Tl!#sfouWS|6QU6KDPP n@q}r5#vGT5l>WvCZQg&#VN<^6zNab-3=9mOu6{1-oD!My(o5xe(dH6;i_@% literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classes.html b/SQCSim2021/external/sfml251-32/doc/html/classes.html new file mode 100644 index 0000000..1e6ab53 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classes.html @@ -0,0 +1,130 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Class Index
+
+
+
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | r | s | t | u | v | w
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  a  
+
Event::JoystickButtonEvent (sf)   Socket (sf)   
Event::JoystickConnectEvent (sf)   SocketSelector (sf)   
AlResource (sf)   Event::JoystickMoveEvent (sf)   Sound (sf)   
  b  
+
  k  
+
SoundBuffer (sf)   
SoundBufferRecorder (sf)   
BlendMode (sf)   Keyboard (sf)   SoundFileFactory (sf)   
  c  
+
Event::KeyEvent (sf)   SoundFileReader (sf)   
  l  
+
SoundFileWriter (sf)   
SoundStream::Chunk (sf)   SoundRecorder (sf)   
CircleShape (sf)   Listener (sf)   SoundSource (sf)   
Clipboard (sf)   Ftp::ListingResponse (sf)   SoundStream (sf)   
Clock (sf)   Lock (sf)   Music::Span (sf)   
Color (sf)   
  m  
+
Sprite (sf)   
Context (sf)   String (sf)   
ContextSettings (sf)   MemoryInputStream (sf)   
  t  
+
ConvexShape (sf)   Mouse (sf)   
Shader::CurrentTextureType (sf)   Event::MouseButtonEvent (sf)   TcpListener (sf)   
Cursor (sf)   Event::MouseMoveEvent (sf)   TcpSocket (sf)   
  d  
+
Event::MouseWheelEvent (sf)   Text (sf)   
Event::MouseWheelScrollEvent (sf)   Event::TextEvent (sf)   
Ftp::DirectoryResponse (sf)   Music (sf)   Texture (sf)   
Drawable (sf)   Mutex (sf)   Thread (sf)   
  e  
+
  n  
+
ThreadLocal (sf)   
ThreadLocalPtr (sf)   
Event (sf)   NonCopyable (sf)   Time (sf)   
  f  
+
  o  
+
Touch (sf)   
Event::TouchEvent (sf)   
FileInputStream (sf)   OutputSoundFile (sf)   Transform (sf)   
Font (sf)   
  p  
+
Transformable (sf)   
Ftp (sf)   GlResource::TransientContextLock (sf)   
  g  
+
Packet (sf)   
  u  
+
  r  
+
GlResource (sf)   UdpSocket (sf)   
Glyph (sf)   Rect (sf)   Utf (sf)   
  h  
+
RectangleShape (sf)   Utf< 16 > (sf)   
RenderStates (sf)   Utf< 32 > (sf)   
Http (sf)   RenderTarget (sf)   Utf< 8 > (sf)   
  i  
+
RenderTexture (sf)   
  v  
+
RenderWindow (sf)   
Joystick::Identification (sf)   Http::Request (sf)   Vector2 (sf)   
Image (sf)   Ftp::Response (sf)   Vector3 (sf)   
SoundFileReader::Info (sf)   Http::Response (sf)   Vertex (sf)   
Font::Info (sf)   
  s  
+
VertexArray (sf)   
InputSoundFile (sf)   VertexBuffer (sf)   
InputStream (sf)   Sensor (sf)   VideoMode (sf)   
IpAddress (sf)   Event::SensorEvent (sf)   View (sf)   
  j  
+
Shader (sf)   
  w  
+
Shape (sf)   
Joystick (sf)   Event::SizeEvent (sf)   Window (sf)   
+
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | r | s | t | u | v | w
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource-members.html new file mode 100644 index 0000000..7afed0a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource-members.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::AlResource Member List
+
+
+ +

This is the complete list of members for sf::AlResource, including all inherited members.

+ + + +
AlResource()sf::AlResourceprotected
~AlResource()sf::AlResourceprotected
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.html new file mode 100644 index 0000000..d781ece --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::AlResource Class Reference
+
+
+ +

Base class for classes that require an OpenAL context. + More...

+ +

#include <AlResource.hpp>

+
+Inheritance diagram for sf::AlResource:
+
+
+ + +sf::SoundBuffer +sf::SoundRecorder +sf::SoundSource +sf::SoundBufferRecorder +sf::Sound +sf::SoundStream +sf::Music + +
+ + + + + + + + +

+Protected Member Functions

 AlResource ()
 Default constructor. More...
 
 ~AlResource ()
 Destructor. More...
 
+

Detailed Description

+

Base class for classes that require an OpenAL context.

+

This class is for internal use only, it must be the base of every class that requires a valid OpenAL context in order to work.

+ +

Definition at line 40 of file AlResource.hpp.

+

Constructor & Destructor Documentation

+ +

◆ AlResource()

+ +
+
+ + + + + +
+ + + + + + + +
sf::AlResource::AlResource ()
+
+protected
+
+ +

Default constructor.

+ +
+
+ +

◆ ~AlResource()

+ +
+
+ + + + + +
+ + + + + + + +
sf::AlResource::~AlResource ()
+
+protected
+
+ +

Destructor.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1AlResource.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccd5539fd45fdfa0dabfc9de534afb14cbe00f4 GIT binary patch literal 2327 zcmeAS@N?(olHy`uVBq!ia0y~yV5(zaU^u|R%)r2~HgFz@BN5;e;`;ype+CAI7jM3n z_8*$Sz`y{;2M!!y?Ytw;z`(#!666=m@E-!Mo(eHyVBlEh>Eakt!T9#>+pt?c46PT> zdQSgde=@()l|x=j<<*jkUAwg9o9Cv;rTsf}>}}cZyJC(9gKxjEGPkd&JIl|-mQfdA z;PAP*iE);^2+xNDR`1i2F~`k$?Nn)^-cE9%PEeJ)J4zRj!8 zcYpK3_wVaI%zVav{{6YNFV_9(TYqL=jLMC};#oHzTJwLj+5dNAm5fz&(VMqFF4g{5 z7O~mdyRP_i^YiO}79=!0V`pVHvDc7T@YC@i1BzG6cHhnGUa;T+U;Tmw57JHTHGWjq z|J!1(@uTo8KUdwo`@e3Jj?BG%m5kp!FSj1gU3p~H#arqU%Jb0mUer(jql|x zuKzFbJoNUxY?3QjvsTk{Tl&2CNjc}YKbx*{`|_VjDblm#*IfNGDW&lld$#F*mBtz%pIo{>|6Ti;<8S8I{8^}yUjP1l{?#Lsp4^HxmYsLs zS^VG287e=|?D*ps{Qv(&_wY^ePha=jRJ<*JzCA0+v*@t>#QWtj6_aWbJnGg*Uw^sU z?Dx63mu|`K>#6@gH}=iz*}ogx54Jnbzu!^)DcW%3W1n;Nd-5ivGvAy0>cF3AaX+rk z*seYAev3-w@s2-n&+GOqd%VoP{%L{xv;K8F|IqhmUtZGZ%Cl^BHdhOO>hAn- zJNeo4s^fyD8v9Ro&aFS0_xHyCorN2}%OCmv^t-6A_om(7eulI^`~IQzzMS#?BfZbc zXMMXW{^78^dHM9qkJL}Hzq73o_sKDv%>U_k$*N}l`|SFEzRlSDhcA4N%6o}P_iN@? z%zk_5&$)g3JU^|g{uFJw@wNWHulshK{j;yk_1t^cNqf>SJp6s~=)Skg&(E*B|L51? z^0P++1_T5pN{G@GT`}^B6{IkD&JpOZ~nf)%kdp30{o_60Z zJp6s&NZ;(cM=xC76USa>cU4zr-}m?*Zw;TX{&e%E^{WrQljO_pKb)pXkKX-C6Y4dVSyi zH2Y^2%kRfo|NpqFeIBpHpYz(EqYF$uKXtID?f7y}&P^uo@|$yK+f`2H{tu{IKfQR5 z@bSe-|4u!$J0~AooAvIlqPX%swsZe(PyMO8bCycwk-x?-e)W9cU-wVF z|KwuvKkMGFjsJ^HpD7(&t>{^H{h9xMmHqAO)jZ`s2Gn_{8Os~bf1-I=<>!I@Wk2HL zF6_R0Hfh(^<#Scd>)$s2Nt6Gz=4wK*K`DyLHm6C_lN((20OEpqy zP*E9}ZsB`*3!jL{orkPkTy?^EkG z2bb^vc=o@Z*M^@5KS!7Uh?}!xeg0Yg`}_IDavMOk`k}+-p8J9c*S5 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::CircleShape Member List
+
+
+ +

This is the complete list of members for sf::CircleShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CircleShape(float radius=0, std::size_t pointCount=30)sf::CircleShapeexplicit
getFillColor() constsf::Shape
getGlobalBounds() constsf::Shape
getInverseTransform() constsf::Transformable
getLocalBounds() constsf::Shape
getOrigin() constsf::Transformable
getOutlineColor() constsf::Shape
getOutlineThickness() constsf::Shape
getPoint(std::size_t index) constsf::CircleShapevirtual
getPointCount() constsf::CircleShapevirtual
getPosition() constsf::Transformable
getRadius() constsf::CircleShape
getRotation() constsf::Transformable
getScale() constsf::Transformable
getTexture() constsf::Shape
getTextureRect() constsf::Shape
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setFillColor(const Color &color)sf::Shape
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setOutlineColor(const Color &color)sf::Shape
setOutlineThickness(float thickness)sf::Shape
setPointCount(std::size_t count)sf::CircleShape
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRadius(float radius)sf::CircleShape
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setTexture(const Texture *texture, bool resetRect=false)sf::Shape
setTextureRect(const IntRect &rect)sf::Shape
Shape()sf::Shapeprotected
Transformable()sf::Transformable
update()sf::Shapeprotected
~Drawable()sf::Drawableinlinevirtual
~Shape()sf::Shapevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.html new file mode 100644 index 0000000..f4b8994 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.html @@ -0,0 +1,1478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized shape representing a circle. + More...

+ +

#include <CircleShape.hpp>

+
+Inheritance diagram for sf::CircleShape:
+
+
+ + +sf::Shape +sf::Drawable +sf::Transformable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CircleShape (float radius=0, std::size_t pointCount=30)
 Default constructor. More...
 
void setRadius (float radius)
 Set the radius of the circle. More...
 
float getRadius () const
 Get the radius of the circle. More...
 
void setPointCount (std::size_t count)
 Set the number of points of the circle. More...
 
virtual std::size_t getPointCount () const
 Get the number of points of the circle. More...
 
virtual Vector2f getPoint (std::size_t index) const
 Get a point of the circle. More...
 
void setTexture (const Texture *texture, bool resetRect=false)
 Change the source texture of the shape. More...
 
void setTextureRect (const IntRect &rect)
 Set the sub-rectangle of the texture that the shape will display. More...
 
void setFillColor (const Color &color)
 Set the fill color of the shape. More...
 
void setOutlineColor (const Color &color)
 Set the outline color of the shape. More...
 
void setOutlineThickness (float thickness)
 Set the thickness of the shape's outline. More...
 
const TexturegetTexture () const
 Get the source texture of the shape. More...
 
const IntRectgetTextureRect () const
 Get the sub-rectangle of the texture displayed by the shape. More...
 
const ColorgetFillColor () const
 Get the fill color of the shape. More...
 
const ColorgetOutlineColor () const
 Get the outline color of the shape. More...
 
float getOutlineThickness () const
 Get the outline thickness of the shape. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global (non-minimal) bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+ + + + +

+Protected Member Functions

void update ()
 Recompute the internal geometry of the shape. More...
 
+

Detailed Description

+

Specialized shape representing a circle.

+

This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

+

Usage example:

circle.setRadius(150);
circle.setPosition(10, 20);
...
window.draw(circle);

Since the graphics card can't draw perfect circles, we have to fake them with multiple triangles connected to each other. The "points count" property of sf::CircleShape defines how many of these triangles to use, and therefore defines the quality of the circle.

+

The number of points can also be used for another purpose; with small numbers you can create any regular polygon shape: equilateral triangle, square, pentagon, hexagon, ...

+
See also
sf::Shape, sf::RectangleShape, sf::ConvexShape
+ +

Definition at line 41 of file CircleShape.hpp.

+

Constructor & Destructor Documentation

+ +

◆ CircleShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
sf::CircleShape::CircleShape (float radius = 0,
std::size_t pointCount = 30 
)
+
+explicit
+
+ +

Default constructor.

+
Parameters
+ + + +
radiusRadius of the circle
pointCountNumber of points composing the circle
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getFillColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getFillColor () const
+
+inherited
+
+ +

Get the fill color of the shape.

+
Returns
Fill color of the shape
+
See also
setFillColor
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getGlobalBounds () const
+
+inherited
+
+ +

Get the global (non-minimal) bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

+

This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getLocalBounds () const
+
+inherited
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getOutlineColor () const
+
+inherited
+
+ +

Get the outline color of the shape.

+
Returns
Outline color of the shape
+
See also
setOutlineColor
+ +
+
+ +

◆ getOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Shape::getOutlineThickness () const
+
+inherited
+
+ +

Get the outline thickness of the shape.

+
Returns
Outline thickness of the shape
+
See also
setOutlineThickness
+ +
+
+ +

◆ getPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2f sf::CircleShape::getPoint (std::size_t index) const
+
+virtual
+
+ +

Get a point of the circle.

+

The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

+
Parameters
+ + +
indexIndex of the point to get, in range [0 .. getPointCount() - 1]
+
+
+
Returns
index-th point of the shape
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::size_t sf::CircleShape::getPointCount () const
+
+virtual
+
+ +

Get the number of points of the circle.

+
Returns
Number of points of the circle
+
See also
setPointCount
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRadius()

+ +
+
+ + + + + + + +
float sf::CircleShape::getRadius () const
+
+ +

Get the radius of the circle.

+
Returns
Radius of the circle
+
See also
setRadius
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + +
+ + + + + + + +
const Texture* sf::Shape::getTexture () const
+
+inherited
+
+ +

Get the source texture of the shape.

+

If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

+
Returns
Pointer to the shape's texture
+
See also
setTexture
+ +
+
+ +

◆ getTextureRect()

+ +
+
+ + + + + +
+ + + + + + + +
const IntRect& sf::Shape::getTextureRect () const
+
+inherited
+
+ +

Get the sub-rectangle of the texture displayed by the shape.

+
Returns
Texture rectangle of the shape
+
See also
setTextureRect
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setFillColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setFillColor (const Colorcolor)
+
+inherited
+
+ +

Set the fill color of the shape.

+

This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

+
Parameters
+ + +
colorNew color of the shape
+
+
+
See also
getFillColor, setOutlineColor
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineColor (const Colorcolor)
+
+inherited
+
+ +

Set the outline color of the shape.

+

By default, the shape's outline color is opaque white.

+
Parameters
+ + +
colorNew outline color of the shape
+
+
+
See also
getOutlineColor, setFillColor
+ +
+
+ +

◆ setOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineThickness (float thickness)
+
+inherited
+
+ +

Set the thickness of the shape's outline.

+

Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

+
Parameters
+ + +
thicknessNew outline thickness
+
+
+
See also
getOutlineThickness
+ +
+
+ +

◆ setPointCount()

+ +
+
+ + + + + + + + +
void sf::CircleShape::setPointCount (std::size_t count)
+
+ +

Set the number of points of the circle.

+
Parameters
+ + +
countNew number of points of the circle
+
+
+
See also
getPointCount
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRadius()

+ +
+
+ + + + + + + + +
void sf::CircleShape::setRadius (float radius)
+
+ +

Set the radius of the circle.

+
Parameters
+ + +
radiusNew radius of the circle
+
+
+
See also
getRadius
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Shape::setTexture (const Texturetexture,
bool resetRect = false 
)
+
+inherited
+
+ +

Change the source texture of the shape.

+

The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

+
Parameters
+ + + +
textureNew texture
resetRectShould the texture rect be reset to the size of the new texture?
+
+
+
See also
getTexture, setTextureRect
+ +
+
+ +

◆ setTextureRect()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setTextureRect (const IntRectrect)
+
+inherited
+
+ +

Set the sub-rectangle of the texture that the shape will display.

+

The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

+
Parameters
+ + +
rectRectangle defining the region of the texture to display
+
+
+
See also
getTextureRect, setTexture
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Shape::update ()
+
+protectedinherited
+
+ +

Recompute the internal geometry of the shape.

+

This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1CircleShape.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c65ef4e7287794b35eb15264a69604d32af5f5 GIT binary patch literal 1009 zcmeAS@N?(olHy`uVBq!ia0y~yV0gm7z|g_L%)r2KVE^`c3=9ks0X`wF|NsAIU|@Lh z=4)yHp$QBO3}AfVzya3IJMs(+3>+mve!&d?A>it%5F-W#<_1p}$B+ufw{zca+oT}i zX3n2o`G5MKWix78Zrv6%o>P2F)#*T4+e`g>)%8+3^&qms)2cHhXp-L{71fskK0%Xi zB}_V}E8cJKc`He7gK1vqC(GYkE<6je{=FhE$=j%J&bn_p{}pD|J=f**T=mI*(&Nuw z^D=fw+`s$7?rY067m1%QqTa2wdEb??F(_vB9CJy_e);1qg~dW^au?}I?)wpPLS_2z zz@k9ieHxyY>nA<+IvsT~R(XSK?RsdsK1$$Hp%{<&+>Obtt+sc)t&Y07%2 zx$ncKuo|w^UDG7DZtL7@92pj_p4n znAsXWTbAFn_TW1lu5&*28{ee~EJP-=WHfs+$#i)#Z8@mI z$oEuk(qRLhc!me!KW6qa)pU6>eQCgsW4Pb%wdZZff1vtO#Ybp?sG6oHd(tF^wH5A{ zc2=0i>gRe^&DZvJTl(_V$7|D{NNg9_<8%G&!P;Y{xt^D}u211{oGo1Pi$iL1^_vq> zleQd6RXsgdKfP#Qv<-`A)YC&Rqu$wks;F>&T3A3SRL)eTZDzY7(Oj{0BzxQW;P%gnx z^_*|g;R5E<)*f~;zqjvcT@o7JU}xajAV&huemJLiIpYW3b1^qm7^4y=F@XKMLT66M z!JR5%&6Cn<85~-ah<(G4T{mW~5jo#-=<(Her_znAxZBOZz`)??>gTe~DWM4fm;%_P literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard-members.html new file mode 100644 index 0000000..2e82aae --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard-members.html @@ -0,0 +1,63 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Clipboard Member List
+
+
+ +

This is the complete list of members for sf::Clipboard, including all inherited members.

+ + + +
getString()sf::Clipboardstatic
setString(const String &text)sf::Clipboardstatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard.html new file mode 100644 index 0000000..116b884 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clipboard.html @@ -0,0 +1,152 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Clipboard Class Reference
+
+
+ +

Give access to the system clipboard. + More...

+ +

#include <Clipboard.hpp>

+ + + + + + + + +

+Static Public Member Functions

static String getString ()
 Get the content of the clipboard as string data. More...
 
static void setString (const String &text)
 Set the content of the clipboard as string data. More...
 
+

Detailed Description

+

Give access to the system clipboard.

+

sf::Clipboard provides an interface for getting and setting the contents of the system clipboard.

+

It is important to note that due to limitations on some operating systems, setting the clipboard contents is only guaranteed to work if there is currently an open window for which events are being handled.

+

Usage example:

// get the clipboard content as a string
// or use it in the event loop
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();
{
// Using Ctrl + V to paste a string into SFML
if(event.key.control && event.key.code == sf::Keyboard::V)
// Using Ctrl + C to copy a string out of SFML
if(event.key.control && event.key.code == sf::Keyboard::C)
sf::Clipboard::setString("Hello World!");
}
}
See also
sf::String, sf::Event
+ +

Definition at line 41 of file Clipboard.hpp.

+

Member Function Documentation

+ +

◆ getString()

+ +
+
+ + + + + +
+ + + + + + + +
static String sf::Clipboard::getString ()
+
+static
+
+ +

Get the content of the clipboard as string data.

+

This function returns the content of the clipboard as a string. If the clipboard does not contain string it returns an empty sf::String object.

+
Returns
Clipboard contents as sf::String object
+ +
+
+ +

◆ setString()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Clipboard::setString (const Stringtext)
+
+static
+
+ +

Set the content of the clipboard as string data.

+

This function sets the content of the clipboard as a string.

+
Warning
Due to limitations on some operating systems, setting the clipboard contents is only guaranteed to work if there is currently an open window for which events are being handled.
+
Parameters
+ + +
textsf::String containing the data to be sent to the clipboard
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock-members.html new file mode 100644 index 0000000..e1e1a77 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Clock Member List
+
+
+ +

This is the complete list of members for sf::Clock, including all inherited members.

+ + + + +
Clock()sf::Clock
getElapsedTime() constsf::Clock
restart()sf::Clock
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock.html new file mode 100644 index 0000000..ec4bada --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Clock.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Clock Class Reference
+
+
+ +

Utility class that measures the elapsed time. + More...

+ +

#include <Clock.hpp>

+ + + + + + + + + + + +

+Public Member Functions

 Clock ()
 Default constructor. More...
 
Time getElapsedTime () const
 Get the elapsed time. More...
 
Time restart ()
 Restart the clock. More...
 
+

Detailed Description

+

Utility class that measures the elapsed time.

+

sf::Clock is a lightweight class for measuring time.

+

Its provides the most precise time that the underlying OS can achieve (generally microseconds or nanoseconds). It also ensures monotonicity, which means that the returned time can never go backward, even if the system time is changed.

+

Usage example:

sf::Clock clock;
...
Time time1 = clock.getElapsedTime();
...
Time time2 = clock.restart();

The sf::Time value returned by the clock can then be converted to a number of seconds, milliseconds or even microseconds.

+
See also
sf::Time
+ +

Definition at line 41 of file Clock.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Clock()

+ +
+
+ + + + + + + +
sf::Clock::Clock ()
+
+ +

Default constructor.

+

The clock starts automatically after being constructed.

+ +
+
+

Member Function Documentation

+ +

◆ getElapsedTime()

+ +
+
+ + + + + + + +
Time sf::Clock::getElapsedTime () const
+
+ +

Get the elapsed time.

+

This function returns the time elapsed since the last call to restart() (or the construction of the instance if restart() has not been called).

+
Returns
Time elapsed
+ +
+
+ +

◆ restart()

+ +
+
+ + + + + + + +
Time sf::Clock::restart ()
+
+ +

Restart the clock.

+

This function puts the time counter back to zero. It also returns the time elapsed since the clock was started.

+
Returns
Time elapsed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color-members.html new file mode 100644 index 0000000..e5939b3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color-members.html @@ -0,0 +1,86 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Color Member List
+
+
+ +

This is the complete list of members for sf::Color, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
asf::Color
bsf::Color
Blacksf::Colorstatic
Bluesf::Colorstatic
Color()sf::Color
Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha=255)sf::Color
Color(Uint32 color)sf::Colorexplicit
Cyansf::Colorstatic
gsf::Color
Greensf::Colorstatic
Magentasf::Colorstatic
operator!=(const Color &left, const Color &right)sf::Colorrelated
operator*(const Color &left, const Color &right)sf::Colorrelated
operator*=(Color &left, const Color &right)sf::Colorrelated
operator+(const Color &left, const Color &right)sf::Colorrelated
operator+=(Color &left, const Color &right)sf::Colorrelated
operator-(const Color &left, const Color &right)sf::Colorrelated
operator-=(Color &left, const Color &right)sf::Colorrelated
operator==(const Color &left, const Color &right)sf::Colorrelated
rsf::Color
Redsf::Colorstatic
toInteger() constsf::Color
Transparentsf::Colorstatic
Whitesf::Colorstatic
Yellowsf::Colorstatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color.html new file mode 100644 index 0000000..7c3dcf9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Color.html @@ -0,0 +1,987 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Utility class for manipulating RGBA colors. + More...

+ +

#include <Color.hpp>

+ + + + + + + + + + + + + + +

+Public Member Functions

 Color ()
 Default constructor. More...
 
 Color (Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha=255)
 Construct the color from its 4 RGBA components. More...
 
 Color (Uint32 color)
 Construct the color from 32-bit unsigned integer. More...
 
Uint32 toInteger () const
 Retrieve the color as a 32-bit unsigned integer. More...
 
+ + + + + + + + + + + + + +

+Public Attributes

Uint8 r
 Red component. More...
 
Uint8 g
 Green component. More...
 
Uint8 b
 Blue component. More...
 
Uint8 a
 Alpha (opacity) component. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static const Color Black
 Black predefined color. More...
 
static const Color White
 White predefined color. More...
 
static const Color Red
 Red predefined color. More...
 
static const Color Green
 Green predefined color. More...
 
static const Color Blue
 Blue predefined color. More...
 
static const Color Yellow
 Yellow predefined color. More...
 
static const Color Magenta
 Magenta predefined color. More...
 
static const Color Cyan
 Cyan predefined color. More...
 
static const Color Transparent
 Transparent (black) predefined color. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
bool operator== (const Color &left, const Color &right)
 Overload of the == operator. More...
 
bool operator!= (const Color &left, const Color &right)
 Overload of the != operator. More...
 
Color operator+ (const Color &left, const Color &right)
 Overload of the binary + operator. More...
 
Color operator- (const Color &left, const Color &right)
 Overload of the binary - operator. More...
 
Color operator* (const Color &left, const Color &right)
 Overload of the binary * operator. More...
 
Coloroperator+= (Color &left, const Color &right)
 Overload of the binary += operator. More...
 
Coloroperator-= (Color &left, const Color &right)
 Overload of the binary -= operator. More...
 
Coloroperator*= (Color &left, const Color &right)
 Overload of the binary *= operator. More...
 
+

Detailed Description

+

Utility class for manipulating RGBA colors.

+

sf::Color is a simple color class composed of 4 components:

+
    +
  • Red
  • +
  • Green
  • +
  • Blue
  • +
  • Alpha (opacity)
  • +
+

Each component is a public member, an unsigned integer in the range [0, 255]. Thus, colors can be constructed and manipulated very easily:

+
sf::Color color(255, 0, 0); // red
color.r = 0; // make it black
color.b = 128; // make it dark blue

The fourth component of colors, named "alpha", represents the opacity of the color. A color with an alpha value of 255 will be fully opaque, while an alpha value of 0 will make a color fully transparent, whatever the value of the other components is.

+

The most common colors are already defined as static variables:

Colors can also be added and modulated (multiplied) using the overloaded operators + and *.

+ +

Definition at line 40 of file Color.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Color() [1/3]

+ +
+
+ + + + + + + +
sf::Color::Color ()
+
+ +

Default constructor.

+

Constructs an opaque black color. It is equivalent to sf::Color(0, 0, 0, 255).

+ +
+
+ +

◆ Color() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::Color::Color (Uint8 red,
Uint8 green,
Uint8 blue,
Uint8 alpha = 255 
)
+
+ +

Construct the color from its 4 RGBA components.

+
Parameters
+ + + + + +
redRed component (in the range [0, 255])
greenGreen component (in the range [0, 255])
blueBlue component (in the range [0, 255])
alphaAlpha (opacity) component (in the range [0, 255])
+
+
+ +
+
+ +

◆ Color() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::Color::Color (Uint32 color)
+
+explicit
+
+ +

Construct the color from 32-bit unsigned integer.

+
Parameters
+ + +
colorNumber containing the RGBA components (in that order)
+
+
+ +
+
+

Member Function Documentation

+ +

◆ toInteger()

+ +
+
+ + + + + + + +
Uint32 sf::Color::toInteger () const
+
+ +

Retrieve the color as a 32-bit unsigned integer.

+
Returns
Color represented as a 32-bit unsigned integer
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the != operator.

+

This operator compares two colors and check if they are different.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
True if colors are different, false if they are equal
+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color operator* (const Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary * operator.

+

This operator returns the component-wise multiplication (also called "modulation") of two colors. Components are then divided by 255 so that the result is still in the range [0, 255].

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Result of left * right
+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color & operator*= (Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary *= operator.

+

This operator returns the component-wise multiplication (also called "modulation") of two colors, and assigns the result to the left operand. Components are then divided by 255 so that the result is still in the range [0, 255].

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color operator+ (const Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary + operator.

+

This operator returns the component-wise sum of two colors. Components that exceed 255 are clamped to 255.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Result of left + right
+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color & operator+= (Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary += operator.

+

This operator computes the component-wise sum of two colors, and assigns the result to the left operand. Components that exceed 255 are clamped to 255.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator-()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color operator- (const Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary - operator.

+

This operator returns the component-wise subtraction of two colors. Components below 0 are clamped to 0.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Result of left - right
+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Color & operator-= (Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the binary -= operator.

+

This operator computes the component-wise subtraction of two colors, and assigns the result to the left operand. Components below 0 are clamped to 0.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Colorleft,
const Colorright 
)
+
+related
+
+ +

Overload of the == operator.

+

This operator compares two colors and check if they are equal.

+
Parameters
+ + + +
leftLeft operand
rightRight operand
+
+
+
Returns
True if colors are equal, false if they are different
+ +
+
+

Member Data Documentation

+ +

◆ a

+ +
+
+ + + + +
Uint8 sf::Color::a
+
+ +

Alpha (opacity) component.

+ +

Definition at line 99 of file Color.hpp.

+ +
+
+ +

◆ b

+ +
+
+ + + + +
Uint8 sf::Color::b
+
+ +

Blue component.

+ +

Definition at line 98 of file Color.hpp.

+ +
+
+ +

◆ Black

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Black
+
+static
+
+ +

Black predefined color.

+ +

Definition at line 83 of file Color.hpp.

+ +
+
+ +

◆ Blue

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Blue
+
+static
+
+ +

Blue predefined color.

+ +

Definition at line 87 of file Color.hpp.

+ +
+
+ +

◆ Cyan

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Cyan
+
+static
+
+ +

Cyan predefined color.

+ +

Definition at line 90 of file Color.hpp.

+ +
+
+ +

◆ g

+ +
+
+ + + + +
Uint8 sf::Color::g
+
+ +

Green component.

+ +

Definition at line 97 of file Color.hpp.

+ +
+
+ +

◆ Green

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Green
+
+static
+
+ +

Green predefined color.

+ +

Definition at line 86 of file Color.hpp.

+ +
+
+ +

◆ Magenta

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Magenta
+
+static
+
+ +

Magenta predefined color.

+ +

Definition at line 89 of file Color.hpp.

+ +
+
+ +

◆ r

+ +
+
+ + + + +
Uint8 sf::Color::r
+
+ +

Red component.

+ +

Definition at line 96 of file Color.hpp.

+ +
+
+ +

◆ Red

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Red
+
+static
+
+ +

Red predefined color.

+ +

Definition at line 85 of file Color.hpp.

+ +
+
+ +

◆ Transparent

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Transparent
+
+static
+
+ +

Transparent (black) predefined color.

+ +

Definition at line 91 of file Color.hpp.

+ +
+
+ +

◆ White

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::White
+
+static
+
+ +

White predefined color.

+ +

Definition at line 84 of file Color.hpp.

+ +
+
+ +

◆ Yellow

+ +
+
+ + + + + +
+ + + + +
const Color sf::Color::Yellow
+
+static
+
+ +

Yellow predefined color.

+ +

Definition at line 88 of file Color.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context-members.html new file mode 100644 index 0000000..0d2bb7b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Context Member List
+
+
+ +

This is the complete list of members for sf::Context, including all inherited members.

+ + + + + + + + + + + + + + + +
Context()sf::Context
Context(const ContextSettings &settings, unsigned int width, unsigned int height)sf::Context
getActiveContext()sf::Contextstatic
getActiveContextId()sf::Contextstatic
getFunction(const char *name)sf::Contextstatic
getSettings() constsf::Context
GlResource()sf::GlResourceprivate
isExtensionAvailable(const char *name)sf::Contextstatic
NonCopyable()sf::NonCopyableinlineprivate
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
setActive(bool active)sf::Context
~Context()sf::Context
~GlResource()sf::GlResourceprivate
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.html new file mode 100644 index 0000000..0cd5a84 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.html @@ -0,0 +1,392 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Class holding a valid drawing context. + More...

+ +

#include <Context.hpp>

+
+Inheritance diagram for sf::Context:
+
+
+ + +sf::GlResource +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 Context ()
 Default constructor. More...
 
 ~Context ()
 Destructor. More...
 
bool setActive (bool active)
 Activate or deactivate explicitly the context. More...
 
const ContextSettingsgetSettings () const
 Get the settings of the context. More...
 
 Context (const ContextSettings &settings, unsigned int width, unsigned int height)
 Construct a in-memory context. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool isExtensionAvailable (const char *name)
 Check whether a given OpenGL extension is available. More...
 
static GlFunctionPointer getFunction (const char *name)
 Get the address of an OpenGL function. More...
 
static const ContextgetActiveContext ()
 Get the currently active context. More...
 
static Uint64 getActiveContextId ()
 Get the currently active context's ID. More...
 
+ + + + +

+Static Private Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+

Detailed Description

+

Class holding a valid drawing context.

+

If you need to make OpenGL calls without having an active window (like in a thread), you can use an instance of this class to get a valid context.

+

Having a valid context is necessary for every OpenGL call.

+

Note that a context is only active in its current thread, if you create a new thread it will have no valid context by default.

+

To use a sf::Context instance, just construct it and let it live as long as you need a valid context. No explicit activation is needed, all it has to do is to exist. Its destructor will take care of deactivating and freeing all the attached resources.

+

Usage example:

void threadFunction(void*)
{
sf::Context context;
// from now on, you have a valid context
// you can make OpenGL calls
glClear(GL_DEPTH_BUFFER_BIT);
}
// the context is automatically deactivated and destroyed
// by the sf::Context destructor
+

Definition at line 50 of file Context.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Context() [1/2]

+ +
+
+ + + + + + + +
sf::Context::Context ()
+
+ +

Default constructor.

+

The constructor creates and activates the context

+ +
+
+ +

◆ ~Context()

+ +
+
+ + + + + + + +
sf::Context::~Context ()
+
+ +

Destructor.

+

The destructor deactivates and destroys the context

+ +
+
+ +

◆ Context() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::Context::Context (const ContextSettingssettings,
unsigned int width,
unsigned int height 
)
+
+ +

Construct a in-memory context.

+

This constructor is for internal use, you don't need to bother with it.

+
Parameters
+ + + + +
settingsCreation parameters
widthBack buffer width
heightBack buffer height
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getActiveContext()

+ +
+
+ + + + + +
+ + + + + + + +
static const Context* sf::Context::getActiveContext ()
+
+static
+
+ +

Get the currently active context.

+

This function will only return sf::Context objects. Contexts created e.g. by RenderTargets or for internal use will not be returned by this function.

+
Returns
The currently active context or NULL if none is active
+ +
+
+ +

◆ getActiveContextId()

+ +
+
+ + + + + +
+ + + + + + + +
static Uint64 sf::Context::getActiveContextId ()
+
+static
+
+ +

Get the currently active context's ID.

+

The context ID is used to identify contexts when managing unshareable OpenGL resources.

+
Returns
The active context's ID or 0 if no context is currently active
+ +
+
+ +

◆ getFunction()

+ +
+
+ + + + + +
+ + + + + + + + +
static GlFunctionPointer sf::Context::getFunction (const char * name)
+
+static
+
+ +

Get the address of an OpenGL function.

+
Parameters
+ + +
nameName of the function to get the address of
+
+
+
Returns
Address of the OpenGL function, 0 on failure
+ +
+
+ +

◆ getSettings()

+ +
+
+ + + + + + + +
const ContextSettings& sf::Context::getSettings () const
+
+ +

Get the settings of the context.

+

Note that these settings may be different than the ones passed to the constructor; they are indeed adjusted if the original settings are not directly supported by the system.

+
Returns
Structure containing the settings
+ +
+
+ +

◆ isExtensionAvailable()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Context::isExtensionAvailable (const char * name)
+
+static
+
+ +

Check whether a given OpenGL extension is available.

+
Parameters
+ + +
nameName of the extension to check for
+
+
+
Returns
True if available, false if unavailable
+ +
+
+ +

◆ setActive()

+ +
+
+ + + + + + + + +
bool sf::Context::setActive (bool active)
+
+ +

Activate or deactivate explicitly the context.

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True on success, false on failure
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Context.png new file mode 100644 index 0000000000000000000000000000000000000000..b82e46ea8433c761d0ecead6c30b0e54c73c0788 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0y~yV7SA;z!1Q}%)r3l`t7v<0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`Dc94*F{Fa=?cAHwRx1d& zZg2nd-~4`Ahe&hhHZ$)%S5HrNb2t?{d3}q3lkmoWtpZNMf+{N;b>^s;PB`p&DbsR} zO6>Cg{CN^*3U>XxXwmg~Qi;#(g4ZiQ|L^LRoi_bzNi^@dH#6FlBW1iUI&xj*m5u)vP0YbzZ-}uezc8(dV7pwF_Feex395%GVF3O)pDI^KA@UyA6#lo_a9p zYQ^R`(LS{e+H04d*ITZ-&Tn~kb?-waz0#|<1(!WLvrsi=mcspqMcG%spL@vlUX*d= zA<@c!DhsEyC6+PwSj{dOl|L2SQT}WB&>9$W^^7>234gseO zMP_j)4qcXl2>pg_S?Qln7OW31-c_bHpXYn>3e#BY$^C826&vLKYBE%;u_gL4iy$iN7FMs7JNffGkIj3qN$0oBPNV9^C%ZDwrrs@5)}8+J-X){_*7tdm zzrEf}`?i~7#_K-$!Updr1q|V*9y0iyddRSD%3;PiQw}r6tW1<>Q)Buu_aCF + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::ConvexShape Member List
+
+
+ +

This is the complete list of members for sf::ConvexShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConvexShape(std::size_t pointCount=0)sf::ConvexShapeexplicit
getFillColor() constsf::Shape
getGlobalBounds() constsf::Shape
getInverseTransform() constsf::Transformable
getLocalBounds() constsf::Shape
getOrigin() constsf::Transformable
getOutlineColor() constsf::Shape
getOutlineThickness() constsf::Shape
getPoint(std::size_t index) constsf::ConvexShapevirtual
getPointCount() constsf::ConvexShapevirtual
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getTexture() constsf::Shape
getTextureRect() constsf::Shape
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setFillColor(const Color &color)sf::Shape
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setOutlineColor(const Color &color)sf::Shape
setOutlineThickness(float thickness)sf::Shape
setPoint(std::size_t index, const Vector2f &point)sf::ConvexShape
setPointCount(std::size_t count)sf::ConvexShape
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setTexture(const Texture *texture, bool resetRect=false)sf::Shape
setTextureRect(const IntRect &rect)sf::Shape
Shape()sf::Shapeprotected
Transformable()sf::Transformable
update()sf::Shapeprotected
~Drawable()sf::Drawableinlinevirtual
~Shape()sf::Shapevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.html new file mode 100644 index 0000000..761eace --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.html @@ -0,0 +1,1456 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized shape representing a convex polygon. + More...

+ +

#include <ConvexShape.hpp>

+
+Inheritance diagram for sf::ConvexShape:
+
+
+ + +sf::Shape +sf::Drawable +sf::Transformable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexShape (std::size_t pointCount=0)
 Default constructor. More...
 
void setPointCount (std::size_t count)
 Set the number of points of the polygon. More...
 
virtual std::size_t getPointCount () const
 Get the number of points of the polygon. More...
 
void setPoint (std::size_t index, const Vector2f &point)
 Set the position of a point. More...
 
virtual Vector2f getPoint (std::size_t index) const
 Get the position of a point. More...
 
void setTexture (const Texture *texture, bool resetRect=false)
 Change the source texture of the shape. More...
 
void setTextureRect (const IntRect &rect)
 Set the sub-rectangle of the texture that the shape will display. More...
 
void setFillColor (const Color &color)
 Set the fill color of the shape. More...
 
void setOutlineColor (const Color &color)
 Set the outline color of the shape. More...
 
void setOutlineThickness (float thickness)
 Set the thickness of the shape's outline. More...
 
const TexturegetTexture () const
 Get the source texture of the shape. More...
 
const IntRectgetTextureRect () const
 Get the sub-rectangle of the texture displayed by the shape. More...
 
const ColorgetFillColor () const
 Get the fill color of the shape. More...
 
const ColorgetOutlineColor () const
 Get the outline color of the shape. More...
 
float getOutlineThickness () const
 Get the outline thickness of the shape. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global (non-minimal) bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+ + + + +

+Protected Member Functions

void update ()
 Recompute the internal geometry of the shape. More...
 
+

Detailed Description

+

Specialized shape representing a convex polygon.

+

This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

+

It is important to keep in mind that a convex shape must always be... convex, otherwise it may not be drawn correctly. Moreover, the points must be defined in order; using a random order would result in an incorrect shape.

+

Usage example:

polygon.setPointCount(3);
polygon.setPoint(0, sf::Vector2f(0, 0));
polygon.setPoint(1, sf::Vector2f(0, 10));
polygon.setPoint(2, sf::Vector2f(25, 5));
polygon.setPosition(10, 20);
...
window.draw(polygon);
See also
sf::Shape, sf::RectangleShape, sf::CircleShape
+ +

Definition at line 42 of file ConvexShape.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ConvexShape()

+ +
+
+ + + + + +
+ + + + + + + + +
sf::ConvexShape::ConvexShape (std::size_t pointCount = 0)
+
+explicit
+
+ +

Default constructor.

+
Parameters
+ + +
pointCountNumber of points of the polygon
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getFillColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getFillColor () const
+
+inherited
+
+ +

Get the fill color of the shape.

+
Returns
Fill color of the shape
+
See also
setFillColor
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getGlobalBounds () const
+
+inherited
+
+ +

Get the global (non-minimal) bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

+

This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getLocalBounds () const
+
+inherited
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getOutlineColor () const
+
+inherited
+
+ +

Get the outline color of the shape.

+
Returns
Outline color of the shape
+
See also
setOutlineColor
+ +
+
+ +

◆ getOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Shape::getOutlineThickness () const
+
+inherited
+
+ +

Get the outline thickness of the shape.

+
Returns
Outline thickness of the shape
+
See also
setOutlineThickness
+ +
+
+ +

◆ getPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2f sf::ConvexShape::getPoint (std::size_t index) const
+
+virtual
+
+ +

Get the position of a point.

+

The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

+
Parameters
+ + +
indexIndex of the point to get, in range [0 .. getPointCount() - 1]
+
+
+
Returns
Position of the index-th point of the polygon
+
See also
setPoint
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::size_t sf::ConvexShape::getPointCount () const
+
+virtual
+
+ +

Get the number of points of the polygon.

+
Returns
Number of points of the polygon
+
See also
setPointCount
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + +
+ + + + + + + +
const Texture* sf::Shape::getTexture () const
+
+inherited
+
+ +

Get the source texture of the shape.

+

If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

+
Returns
Pointer to the shape's texture
+
See also
setTexture
+ +
+
+ +

◆ getTextureRect()

+ +
+
+ + + + + +
+ + + + + + + +
const IntRect& sf::Shape::getTextureRect () const
+
+inherited
+
+ +

Get the sub-rectangle of the texture displayed by the shape.

+
Returns
Texture rectangle of the shape
+
See also
setTextureRect
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setFillColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setFillColor (const Colorcolor)
+
+inherited
+
+ +

Set the fill color of the shape.

+

This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

+
Parameters
+ + +
colorNew color of the shape
+
+
+
See also
getFillColor, setOutlineColor
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineColor (const Colorcolor)
+
+inherited
+
+ +

Set the outline color of the shape.

+

By default, the shape's outline color is opaque white.

+
Parameters
+ + +
colorNew outline color of the shape
+
+
+
See also
getOutlineColor, setFillColor
+ +
+
+ +

◆ setOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineThickness (float thickness)
+
+inherited
+
+ +

Set the thickness of the shape's outline.

+

Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

+
Parameters
+ + +
thicknessNew outline thickness
+
+
+
See also
getOutlineThickness
+ +
+
+ +

◆ setPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::ConvexShape::setPoint (std::size_t index,
const Vector2fpoint 
)
+
+ +

Set the position of a point.

+

Don't forget that the polygon must remain convex, and the points need to stay ordered! setPointCount must be called first in order to set the total number of points. The result is undefined if index is out of the valid range.

+
Parameters
+ + + +
indexIndex of the point to change, in range [0 .. getPointCount() - 1]
pointNew position of the point
+
+
+
See also
getPoint
+ +
+
+ +

◆ setPointCount()

+ +
+
+ + + + + + + + +
void sf::ConvexShape::setPointCount (std::size_t count)
+
+ +

Set the number of points of the polygon.

+

count must be greater than 2 to define a valid shape.

+
Parameters
+ + +
countNew number of points of the polygon
+
+
+
See also
getPointCount
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Shape::setTexture (const Texturetexture,
bool resetRect = false 
)
+
+inherited
+
+ +

Change the source texture of the shape.

+

The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

+
Parameters
+ + + +
textureNew texture
resetRectShould the texture rect be reset to the size of the new texture?
+
+
+
See also
getTexture, setTextureRect
+ +
+
+ +

◆ setTextureRect()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setTextureRect (const IntRectrect)
+
+inherited
+
+ +

Set the sub-rectangle of the texture that the shape will display.

+

The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

+
Parameters
+ + +
rectRectangle defining the region of the texture to display
+
+
+
See also
getTextureRect, setTexture
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Shape::update ()
+
+protectedinherited
+
+ +

Recompute the internal geometry of the shape.

+

This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ConvexShape.png new file mode 100644 index 0000000000000000000000000000000000000000..99b556c43087b320357363c7e93ab908de0a4c78 GIT binary patch literal 1022 zcmeAS@N?(olHy`uVBq!ia0y~yV0gm7z|g_L%)r2KVE^`c3=9ks0X`wF|NsAIU|@Lh z=4)yHp$QBO3}AfVzya3IJMs(+3>+mve!&d?A>it%5F-W#=3Y-1$B+ufw{zc4+N>qO zcDr5c{r^e+f1DB=i$8H0THJiwQOFY2_EG!0uSjCX`V{4^M2q4Rim4_o}4!i zO}_IXea&CZB`;^Cg=7k)R~xNe*Sv)3{|@!@D#q1D>OcR@>j_ehs)|2xC~w;5^Q*Jh zeQ5cs_HtMFb(L7}$re@qUYE8`xi@)Ih#(?Nye=)Bu|(zSL(NI&EU$MtT(W!~#rT0y z*`fLt-*1+ag@3wIZzs-I_$l>9dRlIKZOf9-@P?=vDhHO%P;rp;5qc2hBeZ}|jk7@W z`~;cfg@2eB_8&O!Bk~~FM`!^%cKjgD;(3fQ!@kDJOWbCtIOzHWP0~A}!kG23?}@>i zwL9OQSAALgPG_g~*|pch<0oC-rQ0q3lJE7Syw_6mJcAmmz4W@bslBL)FiHFV*QrF! zlQmC!=D9oXPkz1rMA0K?qV)1?tIr40S31`@p8xc9TdTU3apJ?1aw;p&-2MJ!;gkIL zCo|aJ{ghnxIwZP&_b#tXmihZleT5c?scCwOCrx75YT)U)OJFj~iq_(Drpyn@B^axo zb545vgWcfu|w=LQw+9Xiuh?4o{{lN|F{U8s1Mo zZ2HOMm)fL*H}BMBM@2v3_wef$Tob!x(dV7O*Wb+X^3|9*BY)?fHw^M6?T3V~ z_6eUfIo{nZ+jTd?KP@Y5M%lmYwHE&-+`3!f?{+&&yE|}W&poZgQr`QMqo2 zsHb{)qbJjqLn@5mxJjJE01h3Aw!{p!1Iz!gD>S(t-E;V<1Oo#DgQu&X%Q~loCIGsI B)n)(y literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor-members.html new file mode 100644 index 0000000..2c2f2c0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor-members.html @@ -0,0 +1,82 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Cursor Member List
+
+
+ +

This is the complete list of members for sf::Cursor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
Arrow enum valuesf::Cursor
ArrowWait enum valuesf::Cursor
Cross enum valuesf::Cursor
Cursor()sf::Cursor
Hand enum valuesf::Cursor
Help enum valuesf::Cursor
loadFromPixels(const Uint8 *pixels, Vector2u size, Vector2u hotspot)sf::Cursor
loadFromSystem(Type type)sf::Cursor
NonCopyable()sf::NonCopyableinlineprivate
NotAllowed enum valuesf::Cursor
SizeAll enum valuesf::Cursor
SizeBottomLeftTopRight enum valuesf::Cursor
SizeHorizontal enum valuesf::Cursor
SizeTopLeftBottomRight enum valuesf::Cursor
SizeVertical enum valuesf::Cursor
Text enum valuesf::Cursor
Type enum namesf::Cursor
Wait enum valuesf::Cursor
Window (defined in sf::Cursor)sf::Cursorfriend
~Cursor()sf::Cursor
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.html new file mode 100644 index 0000000..f24e73e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.html @@ -0,0 +1,335 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Cursor defines the appearance of a system cursor. + More...

+ +

#include <Cursor.hpp>

+
+Inheritance diagram for sf::Cursor:
+
+
+ + +sf::NonCopyable + +
+ + + + + +

+Public Types

enum  Type {
+  Arrow, +ArrowWait, +Wait, +Text, +
+  Hand, +SizeHorizontal, +SizeVertical, +SizeTopLeftBottomRight, +
+  SizeBottomLeftTopRight, +SizeAll, +Cross, +Help, +
+  NotAllowed +
+ }
 Enumeration of the native system cursor types. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

 Cursor ()
 Default constructor. More...
 
 ~Cursor ()
 Destructor. More...
 
bool loadFromPixels (const Uint8 *pixels, Vector2u size, Vector2u hotspot)
 Create a cursor with the provided image. More...
 
bool loadFromSystem (Type type)
 Create a native system cursor. More...
 
+ + + +

+Friends

+class Window
 
+

Detailed Description

+

Cursor defines the appearance of a system cursor.

+
Warning
Features related to Cursor are not supported on iOS and Android.
+

This class abstracts the operating system resources associated with either a native system cursor or a custom cursor.

+

After loading the cursor the graphical appearance with either loadFromPixels() or loadFromSystem(), the cursor can be changed with sf::Window::setMouseCursor().

+

The behaviour is undefined if the cursor is destroyed while in use by the window.

+

Usage example:

sf::Window window;
// ... create window as usual ...
sf::Cursor cursor;
window.setMouseCursor(cursor);
See also
sf::Window::setMouseCursor
+ +

Definition at line 46 of file Cursor.hpp.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum sf::Cursor::Type
+
+ +

Enumeration of the native system cursor types.

+

Refer to the following table to determine which cursor is available on which platform.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Linux Mac OS X Windows
sf::Cursor::Arrow yes yes yes
sf::Cursor::ArrowWait no no yes
sf::Cursor::Wait yes no yes
sf::Cursor::Text yes yes yes
sf::Cursor::Hand yes yes yes
sf::Cursor::SizeHorizontal yes yes yes
sf::Cursor::SizeVertical yes yes yes
sf::Cursor::SizeTopLeftBottomRight no yes* yes
sf::Cursor::SizeBottomLeftTopRight no yes* yes
sf::Cursor::SizeAll yes no yes
sf::Cursor::Cross yes yes yes
sf::Cursor::Help yes yes* yes
sf::Cursor::NotAllowed yes yes yes
+
    +
  • These cursor types are undocumented so may not be available on all versions, but have been tested on 10.13
  • +
+ + + + + + + + + + + + + + +
Enumerator
Arrow 

Arrow cursor (default)

+
ArrowWait 

Busy arrow cursor.

+
Wait 

Busy cursor.

+
Text 

I-beam, cursor when hovering over a field allowing text entry.

+
Hand 

Pointing hand cursor.

+
SizeHorizontal 

Horizontal double arrow cursor.

+
SizeVertical 

Vertical double arrow cursor.

+
SizeTopLeftBottomRight 

Double arrow cursor going from top-left to bottom-right.

+
SizeBottomLeftTopRight 

Double arrow cursor going from bottom-left to top-right.

+
SizeAll 

Combination of SizeHorizontal and SizeVertical.

+
Cross 

Crosshair cursor.

+
Help 

Help cursor.

+
NotAllowed 

Action not allowed cursor.

+
+ +

Definition at line 76 of file Cursor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Cursor()

+ +
+
+ + + + + + + +
sf::Cursor::Cursor ()
+
+ +

Default constructor.

+

This constructor doesn't actually create the cursor; initially the new instance is invalid and must not be used until either loadFromPixels() or loadFromSystem() is called and successfully created a cursor.

+ +
+
+ +

◆ ~Cursor()

+ +
+
+ + + + + + + +
sf::Cursor::~Cursor ()
+
+ +

Destructor.

+

This destructor releases the system resources associated with this cursor, if any.

+ +
+
+

Member Function Documentation

+ +

◆ loadFromPixels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::Cursor::loadFromPixels (const Uint8 * pixels,
Vector2u size,
Vector2u hotspot 
)
+
+ +

Create a cursor with the provided image.

+

pixels must be an array of width by height pixels in 32-bit RGBA format. If not, this will cause undefined behavior.

+

If pixels is null or either width or height are 0, the current cursor is left unchanged and the function will return false.

+

In addition to specifying the pixel data, you can also specify the location of the hotspot of the cursor. The hotspot is the pixel coordinate within the cursor image which will be located exactly where the mouse pointer position is. Any mouse actions that are performed will return the window/screen location of the hotspot.

+
Warning
On Unix, the pixels are mapped into a monochrome bitmap: pixels with an alpha channel to 0 are transparent, black if the RGB channel are close to zero, and white otherwise.
+
Parameters
+ + + + +
pixelsArray of pixels of the image
sizeWidth and height of the image
hotspot(x,y) location of the hotspot
+
+
+
Returns
true if the cursor was successfully loaded; false otherwise
+ +
+
+ +

◆ loadFromSystem()

+ +
+
+ + + + + + + + +
bool sf::Cursor::loadFromSystem (Type type)
+
+ +

Create a native system cursor.

+

Refer to the list of cursor available on each system (see sf::Cursor::Type) to know whether a given cursor is expected to load successfully or is not supported by the operating system.

+
Parameters
+ + +
typeNative system cursor type
+
+
+
Returns
true if and only if the corresponding cursor is natively supported by the operating system; false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..28c4e2f45361933f72040896d7528c597d7cb905 GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(UyD*_7wMBca|?|7rOi{IB-GiY}NlywQBUL{3lt3gal9W`>Giv{6#ZJ+T_2f%F5_? zuTS@W3o=zi^EW6;xmDS?Eo_@8c0u8ah0pXuXqO4R$`?zRlq|1Rec`gt$=h1H%+FRo6XG^aSPrH&!?kLV7?Od)3m1_lOCS3j3^ HP6 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Drawable Member List
+
+
+ +

This is the complete list of members for sf::Drawable, including all inherited members.

+ + + + +
draw(RenderTarget &target, RenderStates states) const =0sf::Drawableprotectedpure virtual
RenderTarget (defined in sf::Drawable)sf::Drawablefriend
~Drawable()sf::Drawableinlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.html new file mode 100644 index 0000000..c37f4c6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.html @@ -0,0 +1,191 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Abstract base class for objects that can be drawn to a render target. + More...

+ +

#include <Drawable.hpp>

+
+Inheritance diagram for sf::Drawable:
+
+
+ + +sf::Shape +sf::Sprite +sf::Text +sf::VertexArray +sf::VertexBuffer +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
+ + + + + +

+Public Member Functions

virtual ~Drawable ()
 Virtual destructor. More...
 
+ + + + +

+Protected Member Functions

virtual void draw (RenderTarget &target, RenderStates states) const =0
 Draw the object to a render target. More...
 
+ + + +

+Friends

+class RenderTarget
 
+

Detailed Description

+

Abstract base class for objects that can be drawn to a render target.

+

sf::Drawable is a very simple base class that allows objects of derived classes to be drawn to a sf::RenderTarget.

+

All you have to do in your derived class is to override the draw virtual function.

+

Note that inheriting from sf::Drawable is not mandatory, but it allows this nice syntax "window.draw(object)" rather than "object.draw(window)", which is more consistent with other SFML classes.

+

Example:

class MyDrawable : public sf::Drawable
{
public:
...
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
// You can draw other high-level objects
target.draw(m_sprite, states);
// ... or use the low-level API
states.texture = &m_texture;
target.draw(m_vertices, states);
// ... or draw with OpenGL directly
glBegin(GL_QUADS);
...
glEnd();
}
sf::Sprite m_sprite;
sf::Texture m_texture;
sf::VertexArray m_vertices;
};
See also
sf::RenderTarget
+ +

Definition at line 44 of file Drawable.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~Drawable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Drawable::~Drawable ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 52 of file Drawable.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void sf::Drawable::draw (RenderTargettarget,
RenderStates states 
) const
+
+protectedpure virtual
+
+ +

Draw the object to a render target.

+

This is a pure virtual function that has to be implemented by the derived class to define how the drawable should be drawn.

+
Parameters
+ + + +
targetRender target to draw to
statesCurrent render states
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Drawable.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c9c218738eecf8fdab27ddea404759f021f66d GIT binary patch literal 2175 zcmeAS@N?(olHy`uVBq!ia0y~yU}j=qVCdjrW?*1QUbto@0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`gU{2&F{Fa=?cLX9n`}f} zA0B@zaqqus{Z|hQjYqfFZ&6;I8r3*OXOivY{Q?Q$eC>x5`4t=*WN)q%Tgy{l@d~N-H-?#ncY!M1v4h?%NcLtmnt*DXNa3CeU!F3VH2jW{R^q!YR+W$8( zs+qfGYMt%>U$uX(uQff>!6cB7U$*L~1_R?aHB>KR@%7<{1vi*E1RnGkH8C*$Qs#1K zu(O=|h=JwBBn<|}Ur$aqSTHbFsc<bYlA{4|C# zMUb@%R=rw&@{78oh)0u32b1RnmJRyv_y2lmP_w(HeolC3?vu?2=etVWy)*5F{IdV| zzFHp9IsRMnp67>(Utix>#m`oI+RJjA$>;dv8l%}O>{lQ7pfo*SntR!pg>P+MwJJPE z_rO+;>-RlZuUfUdM(yF2=IF$jb@n&su39BlIXB_f)x~r2#P!!#=YQ7NyPIkH{_Fk6 z`)v8Y868w-ymj@XmHhU1?U}1qJ^P`|6%+r`jOn_#)Uk{mhE}UrRUJLX6w`U3YLwomujQiDZ z*1k0>ul#*HE+%yAp=(SvQi(Udzd!sh?7#dwrpprFSM50eT{$51s?>VnGrOwRY(J}g z|Ni%#Oxtfp#)-#y|L|xFDnzEx{@2zdISplJ6d!{nYDUS=?dT5)7zp%|NYy13v8`Asl+sOnne0x5V z>1~hR`I_LR+xzo_6ZU>ywTe?Z*v8wSe(kEPzEakEyh5xA_0zaM*wh~WW&W#Z$Cn7XmE!}T*XU~24?JHM3tJui4|3%HUqd)A;md;R*c=J0m{q17) zxqBp4xDNc&(K5JyeYVz~c!{&mGjiir%~_SzFV3~+P0h#id!LytjR;BD^?nP#%)Fh8 zj_r1Y*pm3~n&=MElSevUUp@ZHd`o0_!rIS@hxaZHYt+>g6Vmx|_sb;>gSsyZ4s3ha z!L-4in`=wEa8zQ%=r$B&70b3UuxzxB^{&U^fz0C>jLv#dDL z>$&y+$(Hh4SFZY2vFt$9^ZwhJj)`Ww9covEp>^M5{%yGX;|$Q!JB(qA*I z)>nTIs5|_!Gj>5fY7gVZG1nj<&4|+db3&}!#8!VKiN&kkA;MOouk39 zf1<{R^PGI`<~$utAGCkgb8lFcHBmlz!K$o@@lzR?-Z)@Qk7qts*t~NT+QO-D;QVL# ZDK+O;U$E~mU|?Wi@O1TaS?83{1OVdp<6!^* literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event-members.html new file mode 100644 index 0000000..5f89278 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event-members.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Event Member List
+
+ + + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event.html new file mode 100644 index 0000000..94b35e9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Event.html @@ -0,0 +1,505 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Event Class Reference
+
+
+ +

Defines a system event and its parameters. + More...

+ +

#include <Event.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  JoystickButtonEvent
 Joystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased) More...
 
struct  JoystickConnectEvent
 Joystick connection events parameters (JoystickConnected, JoystickDisconnected) More...
 
struct  JoystickMoveEvent
 Joystick axis move event parameters (JoystickMoved) More...
 
struct  KeyEvent
 Keyboard event parameters (KeyPressed, KeyReleased) More...
 
struct  MouseButtonEvent
 Mouse buttons events parameters (MouseButtonPressed, MouseButtonReleased) More...
 
struct  MouseMoveEvent
 Mouse move event parameters (MouseMoved) More...
 
struct  MouseWheelEvent
 Mouse wheel events parameters (MouseWheelMoved) More...
 
struct  MouseWheelScrollEvent
 Mouse wheel events parameters (MouseWheelScrolled) More...
 
struct  SensorEvent
 Sensor event parameters (SensorChanged) More...
 
struct  SizeEvent
 Size events parameters (Resized) More...
 
struct  TextEvent
 Text event parameters (TextEntered) More...
 
struct  TouchEvent
 Touch events parameters (TouchBegan, TouchMoved, TouchEnded) More...
 
+ + + + +

+Public Types

enum  EventType {
+  Closed, +Resized, +LostFocus, +GainedFocus, +
+  TextEntered, +KeyPressed, +KeyReleased, +MouseWheelMoved, +
+  MouseWheelScrolled, +MouseButtonPressed, +MouseButtonReleased, +MouseMoved, +
+  MouseEntered, +MouseLeft, +JoystickButtonPressed, +JoystickButtonReleased, +
+  JoystickMoved, +JoystickConnected, +JoystickDisconnected, +TouchBegan, +
+  TouchMoved, +TouchEnded, +SensorChanged, +Count +
+ }
 Enumeration of the different types of events. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EventType type
 Type of the event. More...
 
+union {
   SizeEvent   size
 Size event parameters (Event::Resized) More...
 
   KeyEvent   key
 Key event parameters (Event::KeyPressed, Event::KeyReleased) More...
 
   TextEvent   text
 Text event parameters (Event::TextEntered) More...
 
   MouseMoveEvent   mouseMove
 Mouse move event parameters (Event::MouseMoved) More...
 
   MouseButtonEvent   mouseButton
 Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased) More...
 
   MouseWheelEvent   mouseWheel
 Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated) More...
 
   MouseWheelScrollEvent   mouseWheelScroll
 Mouse wheel event parameters (Event::MouseWheelScrolled) More...
 
   JoystickMoveEvent   joystickMove
 Joystick move event parameters (Event::JoystickMoved) More...
 
   JoystickButtonEvent   joystickButton
 Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased) More...
 
   JoystickConnectEvent   joystickConnect
 Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected) More...
 
   TouchEvent   touch
 Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded) More...
 
   SensorEvent   sensor
 Sensor event parameters (Event::SensorChanged) More...
 
}; 
 
+

Detailed Description

+

Defines a system event and its parameters.

+

sf::Event holds all the informations about a system event that just happened.

+

Events are retrieved using the sf::Window::pollEvent and sf::Window::waitEvent functions.

+

A sf::Event instance contains the type of the event (mouse moved, key pressed, window closed, ...) as well as the details about this particular event. Please note that the event parameters are defined in a union, which means that only the member matching the type of the event will be properly filled; all other members will have undefined values and must not be read if the type of the event doesn't match. For example, if you received a KeyPressed event, then you must read the event.key member, all other members such as event.mouseMove or event.text will have undefined values.

+

Usage example:

sf::Event event;
while (window.pollEvent(event))
{
// Request for closing the window
if (event.type == sf::Event::Closed)
window.close();
// The escape key was pressed
if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
window.close();
// The window was resized
if (event.type == sf::Event::Resized)
doSomethingWithTheNewSize(event.size.width, event.size.height);
// etc ...
}
+

Definition at line 44 of file Event.hpp.

+

Member Enumeration Documentation

+ +

◆ EventType

+ +
+
+ + + + +
enum sf::Event::EventType
+
+ +

Enumeration of the different types of events.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Closed 

The window requested to be closed (no data)

+
Resized 

The window was resized (data in event.size)

+
LostFocus 

The window lost the focus (no data)

+
GainedFocus 

The window gained the focus (no data)

+
TextEntered 

A character was entered (data in event.text)

+
KeyPressed 

A key was pressed (data in event.key)

+
KeyReleased 

A key was released (data in event.key)

+
MouseWheelMoved 

The mouse wheel was scrolled (data in event.mouseWheel) (deprecated)

+
MouseWheelScrolled 

The mouse wheel was scrolled (data in event.mouseWheelScroll)

+
MouseButtonPressed 

A mouse button was pressed (data in event.mouseButton)

+
MouseButtonReleased 

A mouse button was released (data in event.mouseButton)

+
MouseMoved 

The mouse cursor moved (data in event.mouseMove)

+
MouseEntered 

The mouse cursor entered the area of the window (no data)

+
MouseLeft 

The mouse cursor left the area of the window (no data)

+
JoystickButtonPressed 

A joystick button was pressed (data in event.joystickButton)

+
JoystickButtonReleased 

A joystick button was released (data in event.joystickButton)

+
JoystickMoved 

The joystick moved along an axis (data in event.joystickMove)

+
JoystickConnected 

A joystick was connected (data in event.joystickConnect)

+
JoystickDisconnected 

A joystick was disconnected (data in event.joystickConnect)

+
TouchBegan 

A touch event began (data in event.touch)

+
TouchMoved 

A touch moved (data in event.touch)

+
TouchEnded 

A touch event ended (data in event.touch)

+
SensorChanged 

A sensor value changed (data in event.sensor)

+
Count 

Keep last – the total number of event types.

+
+ +

Definition at line 187 of file Event.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ joystickButton

+ +
+
+ + + + +
JoystickButtonEvent sf::Event::joystickButton
+
+ +

Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased)

+ +

Definition at line 231 of file Event.hpp.

+ +
+
+ +

◆ joystickConnect

+ +
+
+ + + + +
JoystickConnectEvent sf::Event::joystickConnect
+
+ +

Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected)

+ +

Definition at line 232 of file Event.hpp.

+ +
+
+ +

◆ joystickMove

+ +
+
+ + + + +
JoystickMoveEvent sf::Event::joystickMove
+
+ +

Joystick move event parameters (Event::JoystickMoved)

+ +

Definition at line 230 of file Event.hpp.

+ +
+
+ +

◆ key

+ +
+
+ + + + +
KeyEvent sf::Event::key
+
+ +

Key event parameters (Event::KeyPressed, Event::KeyReleased)

+ +

Definition at line 224 of file Event.hpp.

+ +
+
+ +

◆ mouseButton

+ +
+
+ + + + +
MouseButtonEvent sf::Event::mouseButton
+
+ +

Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased)

+ +

Definition at line 227 of file Event.hpp.

+ +
+
+ +

◆ mouseMove

+ +
+
+ + + + +
MouseMoveEvent sf::Event::mouseMove
+
+ +

Mouse move event parameters (Event::MouseMoved)

+ +

Definition at line 226 of file Event.hpp.

+ +
+
+ +

◆ mouseWheel

+ +
+
+ + + + +
MouseWheelEvent sf::Event::mouseWheel
+
+ +

Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated)

+ +

Definition at line 228 of file Event.hpp.

+ +
+
+ +

◆ mouseWheelScroll

+ +
+
+ + + + +
MouseWheelScrollEvent sf::Event::mouseWheelScroll
+
+ +

Mouse wheel event parameters (Event::MouseWheelScrolled)

+ +

Definition at line 229 of file Event.hpp.

+ +
+
+ +

◆ sensor

+ +
+
+ + + + +
SensorEvent sf::Event::sensor
+
+ +

Sensor event parameters (Event::SensorChanged)

+ +

Definition at line 234 of file Event.hpp.

+ +
+
+ +

◆ size

+ +
+
+ + + + +
SizeEvent sf::Event::size
+
+ +

Size event parameters (Event::Resized)

+ +

Definition at line 223 of file Event.hpp.

+ +
+
+ +

◆ text

+ +
+
+ + + + +
TextEvent sf::Event::text
+
+ +

Text event parameters (Event::TextEntered)

+ +

Definition at line 225 of file Event.hpp.

+ +
+
+ +

◆ touch

+ +
+
+ + + + +
TouchEvent sf::Event::touch
+
+ +

Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded)

+ +

Definition at line 233 of file Event.hpp.

+ +
+
+ +

◆ type

+ +
+
+ + + + +
EventType sf::Event::type
+
+ +

Type of the event.

+ +

Definition at line 219 of file Event.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream-members.html new file mode 100644 index 0000000..561cc1e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream-members.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::FileInputStream Member List
+
+
+ +

This is the complete list of members for sf::FileInputStream, including all inherited members.

+ + + + + + + + + + + +
FileInputStream()sf::FileInputStream
getSize()sf::FileInputStreamvirtual
NonCopyable()sf::NonCopyableinlineprivate
open(const std::string &filename)sf::FileInputStream
read(void *data, Int64 size)sf::FileInputStreamvirtual
seek(Int64 position)sf::FileInputStreamvirtual
tell()sf::FileInputStreamvirtual
~FileInputStream()sf::FileInputStreamvirtual
~InputStream()sf::InputStreaminlinevirtual
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.html new file mode 100644 index 0000000..01ead3d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.html @@ -0,0 +1,334 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::FileInputStream Class Reference
+
+
+ +

Implementation of input stream based on a file. + More...

+ +

#include <FileInputStream.hpp>

+
+Inheritance diagram for sf::FileInputStream:
+
+
+ + +sf::InputStream +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FileInputStream ()
 Default constructor. More...
 
virtual ~FileInputStream ()
 Default destructor. More...
 
bool open (const std::string &filename)
 Open the stream from a file path. More...
 
virtual Int64 read (void *data, Int64 size)
 Read data from the stream. More...
 
virtual Int64 seek (Int64 position)
 Change the current reading position. More...
 
virtual Int64 tell ()
 Get the current reading position in the stream. More...
 
virtual Int64 getSize ()
 Return the size of the stream. More...
 
+

Detailed Description

+

Implementation of input stream based on a file.

+

This class is a specialization of InputStream that reads from a file on disk.

+

It wraps a file in the common InputStream interface and therefore allows to use generic classes or functions that accept such a stream, with a file on disk as the data source.

+

In addition to the virtual functions inherited from InputStream, FileInputStream adds a function to specify the file to open.

+

SFML resource classes can usually be loaded directly from a filename, so this class shouldn't be useful to you unless you create your own algorithms that operate on an InputStream.

+

Usage example:

void process(InputStream& stream);
if (stream.open("some_file.dat"))
process(stream);

InputStream, MemoryInputStream

+ +

Definition at line 55 of file FileInputStream.hpp.

+

Constructor & Destructor Documentation

+ +

◆ FileInputStream()

+ +
+
+ + + + + + + +
sf::FileInputStream::FileInputStream ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~FileInputStream()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::FileInputStream::~FileInputStream ()
+
+virtual
+
+ +

Default destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::FileInputStream::getSize ()
+
+virtual
+
+ +

Return the size of the stream.

+
Returns
The total number of bytes available in the stream, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ open()

+ +
+
+ + + + + + + + +
bool sf::FileInputStream::open (const std::string & filename)
+
+ +

Open the stream from a file path.

+
Parameters
+ + +
filenameName of the file to open
+
+
+
Returns
True on success, false on error
+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Int64 sf::FileInputStream::read (void * data,
Int64 size 
)
+
+virtual
+
+ +

Read data from the stream.

+

After reading, the stream's reading position must be advanced by the amount of bytes read.

+
Parameters
+ + + +
dataBuffer where to copy the read data
sizeDesired number of bytes to read
+
+
+
Returns
The number of bytes actually read, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ seek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Int64 sf::FileInputStream::seek (Int64 position)
+
+virtual
+
+ +

Change the current reading position.

+
Parameters
+ + +
positionThe position to seek to, from the beginning
+
+
+
Returns
The position actually sought to, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ tell()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::FileInputStream::tell ()
+
+virtual
+
+ +

Get the current reading position in the stream.

+
Returns
The current position, or -1 on error.
+ +

Implements sf::InputStream.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1FileInputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..ee26b028f9d85eba0643492b011093af89c975cd GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0y~yVEDkmz!1Q}%)r1PFrCAXfq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}bkoztF{Fa=?cCRsRx1dw z&FX@1#acqCZ``Yvl`}cd_^TbWsmDH-bQrkIV(!DbR z)0V{XJp56t7vmAsoW8sIkD1)WC9`rLD&;MHt-3;G?Z!L#Hrur3%)2WvFTZuO%G;#i z8%KEedT%=JwRuU2jBuTs(PRs5U2e(ipDTYV`2D;i6wm$o-n?$phgx|&VQ%J$pB=YK zeJ;u1*zdN}X1~l&P2Ja*B6n;le>TlT^FH_W!qx9KNv@e4eSVttI^CFMB^PI(eOyzu zIY*0ahw~1>a@940=lrfVlyij7+^jk0>n|PkmD6NJ@{aiKPU@9Dnt#8{=&L4j0>askJ@Za&1jP~6VvlrUkp8jd~;b&fle7DCQ`n)!$jA2%cOGVtd zFTFiy3;!OP|5R(;^Ut3geR_7PeiMx|DK6xFIAw38T=?6cC;d84zWa0TPLdky1Dj2O zGv4@CZ<^KdEHhAVqkf#11@HE$mnvDK1-I#D9y-%~T_{fT#M6N5Ex8v@g^Rmet=rLl zz2)=jl#O~Z`zkI@$rII$UYffx&g){(!`y?LLana6SiRKbK-|Cd3(gV? + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Font Member List
+
+
+ +

This is the complete list of members for sf::Font, including all inherited members.

+ + + + + + + + + + + + + + + +
Font()sf::Font
Font(const Font &copy)sf::Font
getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) constsf::Font
getInfo() constsf::Font
getKerning(Uint32 first, Uint32 second, unsigned int characterSize) constsf::Font
getLineSpacing(unsigned int characterSize) constsf::Font
getTexture(unsigned int characterSize) constsf::Font
getUnderlinePosition(unsigned int characterSize) constsf::Font
getUnderlineThickness(unsigned int characterSize) constsf::Font
loadFromFile(const std::string &filename)sf::Font
loadFromMemory(const void *data, std::size_t sizeInBytes)sf::Font
loadFromStream(InputStream &stream)sf::Font
operator=(const Font &right)sf::Font
~Font()sf::Font
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Font.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Font.html new file mode 100644 index 0000000..67cec41 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Font.html @@ -0,0 +1,568 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Class for loading and manipulating character fonts. + More...

+ +

#include <Font.hpp>

+ + + + + +

+Classes

struct  Info
 Holds various information about a font. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Font ()
 Default constructor. More...
 
 Font (const Font &copy)
 Copy constructor. More...
 
 ~Font ()
 Destructor. More...
 
bool loadFromFile (const std::string &filename)
 Load the font from a file. More...
 
bool loadFromMemory (const void *data, std::size_t sizeInBytes)
 Load the font from a file in memory. More...
 
bool loadFromStream (InputStream &stream)
 Load the font from a custom stream. More...
 
const InfogetInfo () const
 Get the font information. More...
 
const GlyphgetGlyph (Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) const
 Retrieve a glyph of the font. More...
 
float getKerning (Uint32 first, Uint32 second, unsigned int characterSize) const
 Get the kerning offset of two glyphs. More...
 
float getLineSpacing (unsigned int characterSize) const
 Get the line spacing. More...
 
float getUnderlinePosition (unsigned int characterSize) const
 Get the position of the underline. More...
 
float getUnderlineThickness (unsigned int characterSize) const
 Get the thickness of the underline. More...
 
const TexturegetTexture (unsigned int characterSize) const
 Retrieve the texture containing the loaded glyphs of a certain size. More...
 
Fontoperator= (const Font &right)
 Overload of assignment operator. More...
 
+

Detailed Description

+

Class for loading and manipulating character fonts.

+

Fonts can be loaded from a file, from memory or from a custom stream, and supports the most common types of fonts.

+

See the loadFromFile function for the complete list of supported formats.

+

Once it is loaded, a sf::Font instance provides three types of information about the font:

    +
  • Global metrics, such as the line spacing
  • +
  • Per-glyph metrics, such as bounding box or kerning
  • +
  • Pixel representation of glyphs
  • +
+

Fonts alone are not very useful: they hold the font data but cannot make anything useful of it. To do so you need to use the sf::Text class, which is able to properly output text with several options such as character size, style, color, position, rotation, etc. This separation allows more flexibility and better performances: indeed a sf::Font is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Text is a lightweight object which can combine the glyphs data and metrics of a sf::Font to display any text on a render target. Note that it is also possible to bind several sf::Text instances to the same sf::Font.

+

It is important to note that the sf::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a sf::Font must not be destructed while it is used by a sf::Text (i.e. never write a function that uses a local sf::Font instance for creating a text).

+

Usage example:

// Declare a new font
sf::Font font;
// Load it from a file
if (!font.loadFromFile("arial.ttf"))
{
// error...
}
// Create a text which uses our font
sf::Text text1;
text1.setFont(font);
text1.setCharacterSize(30);
// Create another text using the same font, but with different parameters
sf::Text text2;
text2.setFont(font);
text2.setCharacterSize(50);

Apart from loading font files, and passing them to instances of sf::Text, you should normally not have to deal directly with this class. However, it may be useful to access the font metrics or rasterized glyphs for advanced usage.

+

Note that if the font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when using sf::Text. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

+
See also
sf::Text
+ +

Definition at line 50 of file Font.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Font() [1/2]

+ +
+
+ + + + + + + +
sf::Font::Font ()
+
+ +

Default constructor.

+

This constructor defines an empty font

+ +
+
+ +

◆ Font() [2/2]

+ +
+
+ + + + + + + + +
sf::Font::Font (const Fontcopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+ +

◆ ~Font()

+ +
+
+ + + + + + + +
sf::Font::~Font ()
+
+ +

Destructor.

+

Cleans up all the internal resources used by the font

+ +
+
+

Member Function Documentation

+ +

◆ getGlyph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const Glyph& sf::Font::getGlyph (Uint32 codePoint,
unsigned int characterSize,
bool bold,
float outlineThickness = 0 
) const
+
+ +

Retrieve a glyph of the font.

+

If the font is a bitmap font, not all character sizes might be available. If the glyph is not available at the requested size, an empty glyph is returned.

+

Be aware that using a negative value for the outline thickness will cause distorted rendering.

+
Parameters
+ + + + + +
codePointUnicode code point of the character to get
characterSizeReference character size
boldRetrieve the bold version or the regular one?
outlineThicknessThickness of outline (when != 0 the glyph will not be filled)
+
+
+
Returns
The glyph corresponding to codePoint and characterSize
+ +
+
+ +

◆ getInfo()

+ +
+
+ + + + + + + +
const Info& sf::Font::getInfo () const
+
+ +

Get the font information.

+
Returns
A structure that holds the font information
+ +
+
+ +

◆ getKerning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
float sf::Font::getKerning (Uint32 first,
Uint32 second,
unsigned int characterSize 
) const
+
+ +

Get the kerning offset of two glyphs.

+

The kerning is an extra offset (negative) to apply between two glyphs when rendering them, to make the pair look more "natural". For example, the pair "AV" have a special kerning to make them closer than other characters. Most of the glyphs pairs have a kerning offset of zero, though.

+
Parameters
+ + + + +
firstUnicode code point of the first character
secondUnicode code point of the second character
characterSizeReference character size
+
+
+
Returns
Kerning value for first and second, in pixels
+ +
+
+ +

◆ getLineSpacing()

+ +
+
+ + + + + + + + +
float sf::Font::getLineSpacing (unsigned int characterSize) const
+
+ +

Get the line spacing.

+

Line spacing is the vertical offset to apply between two consecutive lines of text.

+
Parameters
+ + +
characterSizeReference character size
+
+
+
Returns
Line spacing, in pixels
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + + + + +
const Texture& sf::Font::getTexture (unsigned int characterSize) const
+
+ +

Retrieve the texture containing the loaded glyphs of a certain size.

+

The contents of the returned texture changes as more glyphs are requested, thus it is not very relevant. It is mainly used internally by sf::Text.

+
Parameters
+ + +
characterSizeReference character size
+
+
+
Returns
Texture containing the glyphs of the requested size
+ +
+
+ +

◆ getUnderlinePosition()

+ +
+
+ + + + + + + + +
float sf::Font::getUnderlinePosition (unsigned int characterSize) const
+
+ +

Get the position of the underline.

+

Underline position is the vertical offset to apply between the baseline and the underline.

+
Parameters
+ + +
characterSizeReference character size
+
+
+
Returns
Underline position, in pixels
+
See also
getUnderlineThickness
+ +
+
+ +

◆ getUnderlineThickness()

+ +
+
+ + + + + + + + +
float sf::Font::getUnderlineThickness (unsigned int characterSize) const
+
+ +

Get the thickness of the underline.

+

Underline thickness is the vertical size of the underline.

+
Parameters
+ + +
characterSizeReference character size
+
+
+
Returns
Underline thickness, in pixels
+
See also
getUnderlinePosition
+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + + + + +
bool sf::Font::loadFromFile (const std::string & filename)
+
+ +

Load the font from a file.

+

The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Note that this function knows nothing about the standard fonts installed on the user's system, thus you can't load them directly.

+
Warning
SFML cannot preload all the font data in this function, so the file has to remain accessible until the sf::Font object loads a new font or is destroyed.
+
Parameters
+ + +
filenamePath of the font file to load
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromMemory, loadFromStream
+ +
+
+ +

◆ loadFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Font::loadFromMemory (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Load the font from a file in memory.

+

The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42.

+
Warning
SFML cannot preload all the font data in this function, so the buffer pointed by data has to remain valid until the sf::Font object loads a new font or is destroyed.
+
Parameters
+ + + +
dataPointer to the file data in memory
sizeInBytesSize of the data to load, in bytes
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromStream
+ +
+
+ +

◆ loadFromStream()

+ +
+
+ + + + + + + + +
bool sf::Font::loadFromStream (InputStreamstream)
+
+ +

Load the font from a custom stream.

+

The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Warning: SFML cannot preload all the font data in this function, so the contents of stream have to remain valid as long as the font is used.

+
Warning
SFML cannot preload all the font data in this function, so the stream has to remain accessible until the sf::Font object loads a new font or is destroyed.
+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Font& sf::Font::operator= (const Fontright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp-members.html new file mode 100644 index 0000000..7dbc8bf --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp-members.html @@ -0,0 +1,85 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Ftp Member List
+
+
+ +

This is the complete list of members for sf::Ftp, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Ascii enum valuesf::Ftp
Binary enum valuesf::Ftp
changeDirectory(const std::string &directory)sf::Ftp
connect(const IpAddress &server, unsigned short port=21, Time timeout=Time::Zero)sf::Ftp
createDirectory(const std::string &name)sf::Ftp
DataChannel (defined in sf::Ftp)sf::Ftpfriend
deleteDirectory(const std::string &name)sf::Ftp
deleteFile(const std::string &name)sf::Ftp
disconnect()sf::Ftp
download(const std::string &remoteFile, const std::string &localPath, TransferMode mode=Binary)sf::Ftp
Ebcdic enum valuesf::Ftp
getDirectoryListing(const std::string &directory="")sf::Ftp
getWorkingDirectory()sf::Ftp
keepAlive()sf::Ftp
login()sf::Ftp
login(const std::string &name, const std::string &password)sf::Ftp
NonCopyable()sf::NonCopyableinlineprivate
parentDirectory()sf::Ftp
renameFile(const std::string &file, const std::string &newName)sf::Ftp
sendCommand(const std::string &command, const std::string &parameter="")sf::Ftp
TransferMode enum namesf::Ftp
upload(const std::string &localFile, const std::string &remotePath, TransferMode mode=Binary, bool append=false)sf::Ftp
~Ftp()sf::Ftp
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.html new file mode 100644 index 0000000..0a062c4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.html @@ -0,0 +1,745 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

A FTP client. + More...

+ +

#include <Ftp.hpp>

+
+Inheritance diagram for sf::Ftp:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + + + + +

+Classes

class  DirectoryResponse
 Specialization of FTP response returning a directory. More...
 
class  ListingResponse
 Specialization of FTP response returning a filename listing. More...
 
class  Response
 Define a FTP response. More...
 
+ + + + +

+Public Types

enum  TransferMode { Binary, +Ascii, +Ebcdic + }
 Enumeration of transfer modes. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~Ftp ()
 Destructor. More...
 
Response connect (const IpAddress &server, unsigned short port=21, Time timeout=Time::Zero)
 Connect to the specified FTP server. More...
 
Response disconnect ()
 Close the connection with the server. More...
 
Response login ()
 Log in using an anonymous account. More...
 
Response login (const std::string &name, const std::string &password)
 Log in using a username and a password. More...
 
Response keepAlive ()
 Send a null command to keep the connection alive. More...
 
DirectoryResponse getWorkingDirectory ()
 Get the current working directory. More...
 
ListingResponse getDirectoryListing (const std::string &directory="")
 Get the contents of the given directory. More...
 
Response changeDirectory (const std::string &directory)
 Change the current working directory. More...
 
Response parentDirectory ()
 Go to the parent directory of the current one. More...
 
Response createDirectory (const std::string &name)
 Create a new directory. More...
 
Response deleteDirectory (const std::string &name)
 Remove an existing directory. More...
 
Response renameFile (const std::string &file, const std::string &newName)
 Rename an existing file. More...
 
Response deleteFile (const std::string &name)
 Remove an existing file. More...
 
Response download (const std::string &remoteFile, const std::string &localPath, TransferMode mode=Binary)
 Download a file from the server. More...
 
Response upload (const std::string &localFile, const std::string &remotePath, TransferMode mode=Binary, bool append=false)
 Upload a file to the server. More...
 
Response sendCommand (const std::string &command, const std::string &parameter="")
 Send a command to the FTP server. More...
 
+ + + +

+Friends

+class DataChannel
 
+

Detailed Description

+

A FTP client.

+

sf::Ftp is a very simple FTP client that allows you to communicate with a FTP server.

+

The FTP protocol allows you to manipulate a remote file system (list files, upload, download, create, remove, ...).

+

Using the FTP client consists of 4 parts:

    +
  • Connecting to the FTP server
  • +
  • Logging in (either as a registered user or anonymously)
  • +
  • Sending commands to the server
  • +
  • Disconnecting (this part can be done implicitly by the destructor)
  • +
+

Every command returns a FTP response, which contains the status code as well as a message from the server. Some commands such as getWorkingDirectory() and getDirectoryListing() return additional data, and use a class derived from sf::Ftp::Response to provide this data. The most often used commands are directly provided as member functions, but it is also possible to use specific commands with the sendCommand() function.

+

Note that response statuses >= 1000 are not part of the FTP standard, they are generated by SFML when an internal error occurs.

+

All commands, especially upload and download, may take some time to complete. This is important to know if you don't want to block your application while the server is completing the task.

+

Usage example:

// Create a new FTP client
sf::Ftp ftp;
// Connect to the server
sf::Ftp::Response response = ftp.connect("ftp://ftp.myserver.com");
if (response.isOk())
std::cout << "Connected" << std::endl;
// Log in
response = ftp.login("laurent", "dF6Zm89D");
if (response.isOk())
std::cout << "Logged in" << std::endl;
// Print the working directory
if (directory.isOk())
std::cout << "Working directory: " << directory.getDirectory() << std::endl;
// Create a new directory
response = ftp.createDirectory("files");
if (response.isOk())
std::cout << "Created new directory" << std::endl;
// Upload a file to this new directory
response = ftp.upload("local-path/file.txt", "files", sf::Ftp::Ascii);
if (response.isOk())
std::cout << "File uploaded" << std::endl;
// Send specific commands (here: FEAT to list supported FTP features)
response = ftp.sendCommand("FEAT");
if (response.isOk())
std::cout << "Feature list:\n" << response.getMessage() << std::endl;
// Disconnect from the server (optional)
ftp.disconnect();
+

Definition at line 47 of file Ftp.hpp.

+

Member Enumeration Documentation

+ +

◆ TransferMode

+ +
+
+ + + + +
enum sf::Ftp::TransferMode
+
+ +

Enumeration of transfer modes.

+ + + + +
Enumerator
Binary 

Binary mode (file is transfered as a sequence of bytes)

+
Ascii 

Text mode using ASCII encoding.

+
Ebcdic 

Text mode using EBCDIC encoding.

+
+ +

Definition at line 55 of file Ftp.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~Ftp()

+ +
+
+ + + + + + + +
sf::Ftp::~Ftp ()
+
+ +

Destructor.

+

Automatically closes the connection with the server if it is still opened.

+ +
+
+

Member Function Documentation

+ +

◆ changeDirectory()

+ +
+
+ + + + + + + + +
Response sf::Ftp::changeDirectory (const std::string & directory)
+
+ +

Change the current working directory.

+

The new directory must be relative to the current one.

+
Parameters
+ + +
directoryNew working directory
+
+
+
Returns
Server response to the request
+
See also
getWorkingDirectory, getDirectoryListing, parentDirectory
+ +
+
+ +

◆ connect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Response sf::Ftp::connect (const IpAddressserver,
unsigned short port = 21,
Time timeout = Time::Zero 
)
+
+ +

Connect to the specified FTP server.

+

The port has a default value of 21, which is the standard port used by the FTP protocol. You shouldn't use a different value, unless you really know what you do. This function tries to connect to the server so it may take a while to complete, especially if the server is not reachable. To avoid blocking your application for too long, you can use a timeout. The default value, Time::Zero, means that the system timeout will be used (which is usually pretty long).

+
Parameters
+ + + + +
serverName or address of the FTP server to connect to
portPort used for the connection
timeoutMaximum time to wait
+
+
+
Returns
Server response to the request
+
See also
disconnect
+ +
+
+ +

◆ createDirectory()

+ +
+
+ + + + + + + + +
Response sf::Ftp::createDirectory (const std::string & name)
+
+ +

Create a new directory.

+

The new directory is created as a child of the current working directory.

+
Parameters
+ + +
nameName of the directory to create
+
+
+
Returns
Server response to the request
+
See also
deleteDirectory
+ +
+
+ +

◆ deleteDirectory()

+ +
+
+ + + + + + + + +
Response sf::Ftp::deleteDirectory (const std::string & name)
+
+ +

Remove an existing directory.

+

The directory to remove must be relative to the current working directory. Use this function with caution, the directory will be removed permanently!

+
Parameters
+ + +
nameName of the directory to remove
+
+
+
Returns
Server response to the request
+
See also
createDirectory
+ +
+
+ +

◆ deleteFile()

+ +
+
+ + + + + + + + +
Response sf::Ftp::deleteFile (const std::string & name)
+
+ +

Remove an existing file.

+

The file name must be relative to the current working directory. Use this function with caution, the file will be removed permanently!

+
Parameters
+ + +
nameFile to remove
+
+
+
Returns
Server response to the request
+
See also
renameFile
+ +
+
+ +

◆ disconnect()

+ +
+
+ + + + + + + +
Response sf::Ftp::disconnect ()
+
+ +

Close the connection with the server.

+
Returns
Server response to the request
+
See also
connect
+ +
+
+ +

◆ download()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Response sf::Ftp::download (const std::string & remoteFile,
const std::string & localPath,
TransferMode mode = Binary 
)
+
+ +

Download a file from the server.

+

The filename of the distant file is relative to the current working directory of the server, and the local destination path is relative to the current directory of your application. If a file with the same filename as the distant file already exists in the local destination path, it will be overwritten.

+
Parameters
+ + + + +
remoteFileFilename of the distant file to download
localPathThe directory in which to put the file on the local computer
modeTransfer mode
+
+
+
Returns
Server response to the request
+
See also
upload
+ +
+
+ +

◆ getDirectoryListing()

+ +
+
+ + + + + + + + +
ListingResponse sf::Ftp::getDirectoryListing (const std::string & directory = "")
+
+ +

Get the contents of the given directory.

+

This function retrieves the sub-directories and files contained in the given directory. It is not recursive. The directory parameter is relative to the current working directory.

+
Parameters
+ + +
directoryDirectory to list
+
+
+
Returns
Server response to the request
+
See also
getWorkingDirectory, changeDirectory, parentDirectory
+ +
+
+ +

◆ getWorkingDirectory()

+ +
+
+ + + + + + + +
DirectoryResponse sf::Ftp::getWorkingDirectory ()
+
+ +

Get the current working directory.

+

The working directory is the root path for subsequent operations involving directories and/or filenames.

+
Returns
Server response to the request
+
See also
getDirectoryListing, changeDirectory, parentDirectory
+ +
+
+ +

◆ keepAlive()

+ +
+
+ + + + + + + +
Response sf::Ftp::keepAlive ()
+
+ +

Send a null command to keep the connection alive.

+

This command is useful because the server may close the connection automatically if no command is sent.

+
Returns
Server response to the request
+ +
+
+ +

◆ login() [1/2]

+ +
+
+ + + + + + + +
Response sf::Ftp::login ()
+
+ +

Log in using an anonymous account.

+

Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

+
Returns
Server response to the request
+ +
+
+ +

◆ login() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Response sf::Ftp::login (const std::string & name,
const std::string & password 
)
+
+ +

Log in using a username and a password.

+

Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

+
Parameters
+ + + +
nameUser name
passwordPassword
+
+
+
Returns
Server response to the request
+ +
+
+ +

◆ parentDirectory()

+ +
+
+ + + + + + + +
Response sf::Ftp::parentDirectory ()
+
+ +

Go to the parent directory of the current one.

+
Returns
Server response to the request
+
See also
getWorkingDirectory, getDirectoryListing, changeDirectory
+ +
+
+ +

◆ renameFile()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Response sf::Ftp::renameFile (const std::string & file,
const std::string & newName 
)
+
+ +

Rename an existing file.

+

The filenames must be relative to the current working directory.

+
Parameters
+ + + +
fileFile to rename
newNameNew name of the file
+
+
+
Returns
Server response to the request
+
See also
deleteFile
+ +
+
+ +

◆ sendCommand()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Response sf::Ftp::sendCommand (const std::string & command,
const std::string & parameter = "" 
)
+
+ +

Send a command to the FTP server.

+

While the most often used commands are provided as member functions in the sf::Ftp class, this method can be used to send any FTP command to the server. If the command requires one or more parameters, they can be specified in parameter. If the server returns information, you can extract it from the response using Response::getMessage().

+
Parameters
+ + + +
commandCommand to send
parameterCommand parameter
+
+
+
Returns
Server response to the request
+ +
+
+ +

◆ upload()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Response sf::Ftp::upload (const std::string & localFile,
const std::string & remotePath,
TransferMode mode = Binary,
bool append = false 
)
+
+ +

Upload a file to the server.

+

The name of the local file is relative to the current working directory of your application, and the remote path is relative to the current directory of the FTP server.

+

The append parameter controls whether the remote file is appended to or overwritten if it already exists.

+
Parameters
+ + + + + +
localFilePath of the local file to upload
remotePathThe directory in which to put the file on the server
modeTransfer mode
appendPass true to append to or false to overwrite the remote file if it already exists
+
+
+
Returns
Server response to the request
+
See also
download
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp.png new file mode 100644 index 0000000000000000000000000000000000000000..04916fce1efcad43e65abe386190e4bad78389ea GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(U~LB~llS3D<`gx0$o%~n6UeThxZ4waV< z``>48XVu(4XIu39oypUt9GAYdqqH!lyD#vfh0Xakk?7oeU(Q;qT{_{Z{piH!iqm{A z4{WVGz12ER~#)wG-bp-p1B)BdzC|6%#U)^pbat=W^dtlsUB?^r(ZUh}X0Z7Q+X zrcZL>IOxo<{3}zzMCq4bKRNB3$TmUvR6omurSH2}9B26;erPEgNqe?X{*s62oS#ky`WP4(7(8A5T-G@yGywp0-rs2e literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.html new file mode 100644 index 0000000..8b47986 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.html @@ -0,0 +1,111 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Ftp::DirectoryResponse Member List
+
+
+ +

This is the complete list of members for sf::Ftp::DirectoryResponse, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BadCommandSequence enum valuesf::Ftp::Response
ClosingConnection enum valuesf::Ftp::Response
ClosingDataConnection enum valuesf::Ftp::Response
CommandNotImplemented enum valuesf::Ftp::Response
CommandUnknown enum valuesf::Ftp::Response
ConnectionClosed enum valuesf::Ftp::Response
ConnectionFailed enum valuesf::Ftp::Response
DataConnectionAlreadyOpened enum valuesf::Ftp::Response
DataConnectionOpened enum valuesf::Ftp::Response
DataConnectionUnavailable enum valuesf::Ftp::Response
DirectoryOk enum valuesf::Ftp::Response
DirectoryResponse(const Response &response)sf::Ftp::DirectoryResponse
DirectoryStatus enum valuesf::Ftp::Response
EnteringPassiveMode enum valuesf::Ftp::Response
FileActionAborted enum valuesf::Ftp::Response
FileActionOk enum valuesf::Ftp::Response
FilenameNotAllowed enum valuesf::Ftp::Response
FileStatus enum valuesf::Ftp::Response
FileUnavailable enum valuesf::Ftp::Response
getDirectory() constsf::Ftp::DirectoryResponse
getMessage() constsf::Ftp::Response
getStatus() constsf::Ftp::Response
HelpMessage enum valuesf::Ftp::Response
InsufficientStorageSpace enum valuesf::Ftp::Response
InvalidFile enum valuesf::Ftp::Response
InvalidResponse enum valuesf::Ftp::Response
isOk() constsf::Ftp::Response
LocalError enum valuesf::Ftp::Response
LoggedIn enum valuesf::Ftp::Response
NeedAccountToLogIn enum valuesf::Ftp::Response
NeedAccountToStore enum valuesf::Ftp::Response
NeedInformation enum valuesf::Ftp::Response
NeedPassword enum valuesf::Ftp::Response
NotEnoughMemory enum valuesf::Ftp::Response
NotLoggedIn enum valuesf::Ftp::Response
Ok enum valuesf::Ftp::Response
OpeningDataConnection enum valuesf::Ftp::Response
PageTypeUnknown enum valuesf::Ftp::Response
ParameterNotImplemented enum valuesf::Ftp::Response
ParametersUnknown enum valuesf::Ftp::Response
PointlessCommand enum valuesf::Ftp::Response
Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
RestartMarkerReply enum valuesf::Ftp::Response
ServiceReady enum valuesf::Ftp::Response
ServiceReadySoon enum valuesf::Ftp::Response
ServiceUnavailable enum valuesf::Ftp::Response
Status enum namesf::Ftp::Response
SystemStatus enum valuesf::Ftp::Response
SystemType enum valuesf::Ftp::Response
TransferAborted enum valuesf::Ftp::Response
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html new file mode 100644 index 0000000..6eec68c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.html @@ -0,0 +1,411 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Ftp::DirectoryResponse Class Reference
+
+
+ +

Specialization of FTP response returning a directory. + More...

+ +

#include <Ftp.hpp>

+
+Inheritance diagram for sf::Ftp::DirectoryResponse:
+
+
+ + +sf::Ftp::Response + +
+ + + + + +

+Public Types

enum  Status {
+  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
+  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
+  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
+  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
+  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
+  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
+  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
+  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
+  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
+  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
+  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
+ }
 Status codes possibly returned by a FTP response. More...
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 DirectoryResponse (const Response &response)
 Default constructor. More...
 
const std::string & getDirectory () const
 Get the directory returned in the response. More...
 
bool isOk () const
 Check if the status code means a success. More...
 
Status getStatus () const
 Get the status code of the response. More...
 
const std::string & getMessage () const
 Get the full message contained in the response. More...
 
+

Detailed Description

+

Specialization of FTP response returning a directory.

+ +

Definition at line 188 of file Ftp.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::Ftp::Response::Status
+
+inherited
+
+ +

Status codes possibly returned by a FTP response.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
RestartMarkerReply 

Restart marker reply.

+
ServiceReadySoon 

Service ready in N minutes.

+
DataConnectionAlreadyOpened 

Data connection already opened, transfer starting.

+
OpeningDataConnection 

File status ok, about to open data connection.

+
Ok 

Command ok.

+
PointlessCommand 

Command not implemented.

+
SystemStatus 

System status, or system help reply.

+
DirectoryStatus 

Directory status.

+
FileStatus 

File status.

+
HelpMessage 

Help message.

+
SystemType 

NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

+
ServiceReady 

Service ready for new user.

+
ClosingConnection 

Service closing control connection.

+
DataConnectionOpened 

Data connection open, no transfer in progress.

+
ClosingDataConnection 

Closing data connection, requested file action successful.

+
EnteringPassiveMode 

Entering passive mode.

+
LoggedIn 

User logged in, proceed. Logged out if appropriate.

+
FileActionOk 

Requested file action ok.

+
DirectoryOk 

PATHNAME created.

+
NeedPassword 

User name ok, need password.

+
NeedAccountToLogIn 

Need account for login.

+
NeedInformation 

Requested file action pending further information.

+
ServiceUnavailable 

Service not available, closing control connection.

+
DataConnectionUnavailable 

Can't open data connection.

+
TransferAborted 

Connection closed, transfer aborted.

+
FileActionAborted 

Requested file action not taken.

+
LocalError 

Requested action aborted, local error in processing.

+
InsufficientStorageSpace 

Requested action not taken; insufficient storage space in system, file unavailable.

+
CommandUnknown 

Syntax error, command unrecognized.

+
ParametersUnknown 

Syntax error in parameters or arguments.

+
CommandNotImplemented 

Command not implemented.

+
BadCommandSequence 

Bad sequence of commands.

+
ParameterNotImplemented 

Command not implemented for that parameter.

+
NotLoggedIn 

Not logged in.

+
NeedAccountToStore 

Need account for storing files.

+
FileUnavailable 

Requested action not taken, file unavailable.

+
PageTypeUnknown 

Requested action aborted, page type unknown.

+
NotEnoughMemory 

Requested file action aborted, exceeded storage allocation.

+
FilenameNotAllowed 

Requested action not taken, file name not allowed.

+
InvalidResponse 

Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

+
ConnectionFailed 

Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

+
ConnectionClosed 

Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

+
InvalidFile 

Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

+
+ +

Definition at line 74 of file Ftp.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ DirectoryResponse()

+ +
+
+ + + + + + + + +
sf::Ftp::DirectoryResponse::DirectoryResponse (const Responseresponse)
+
+ +

Default constructor.

+
Parameters
+ + +
responseSource response
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getDirectory()

+ +
+
+ + + + + + + +
const std::string& sf::Ftp::DirectoryResponse::getDirectory () const
+
+ +

Get the directory returned in the response.

+
Returns
Directory name
+ +
+
+ +

◆ getMessage()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string& sf::Ftp::Response::getMessage () const
+
+inherited
+
+ +

Get the full message contained in the response.

+
Returns
The response message
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status sf::Ftp::Response::getStatus () const
+
+inherited
+
+ +

Get the status code of the response.

+
Returns
Status code
+ +
+
+ +

◆ isOk()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Ftp::Response::isOk () const
+
+inherited
+
+ +

Check if the status code means a success.

+

This function is defined for convenience, it is equivalent to testing if the status code is < 400.

+
Returns
True if the status is a success, false if it is a failure
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png new file mode 100644 index 0000000000000000000000000000000000000000..0f475fa8b97ac6a7956c6e572d505243169c9fb8 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0y~yU|7Jwz!1Q}%)r2~vbm3qfq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}Wb5hT7*fIbcJA%GrwTl- z;?|db{`a33@@{rStno~7GO)I80l z7;H9G986igWS1tNSMfBL@-6(&Gp#}M@bR85 zv(NqCCd%}SdIoMTZ|F^z-|%VjlKfv6C36^y51)|K@p->|ht{OkU8j|Hu6?9)bbaVX zmD-D+nVwZ&WK=z=B)vf8?KXZ!R9pfKQ(IVb7Tvi&YoRR z<*+`9VYZCG0VQ^p4JQ~Gb&4Dqx^Z)V{bz9INK6xCcs7-pDdI^3gV@!E?5j_X?zLoy z>^{8qVGn!2>sc%xj6)kKsj&Zs9Tz>D4t-s$CyRT=s zE+&8Qyvdutm%ndV-gz@xN}HkIKr>-mv*G2RKVC-pXeM7dc1*MNtzJ=~>H(vpA8$-~ zcb0D&kFE2aC&m#UC#setX9eG}Z{}}sHT-%~`~H?NW(nVwD?TY{W|hfou-QEIp;cS% z54(h?*R7j%6Y@Ns@7*1EzTy74gv4FGg`q0pqVp3sR~xL~F=fxAMLu_zYn=Zj<((FAnh{>lu+B> + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Ftp::ListingResponse Member List
+
+
+ +

This is the complete list of members for sf::Ftp::ListingResponse, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BadCommandSequence enum valuesf::Ftp::Response
ClosingConnection enum valuesf::Ftp::Response
ClosingDataConnection enum valuesf::Ftp::Response
CommandNotImplemented enum valuesf::Ftp::Response
CommandUnknown enum valuesf::Ftp::Response
ConnectionClosed enum valuesf::Ftp::Response
ConnectionFailed enum valuesf::Ftp::Response
DataConnectionAlreadyOpened enum valuesf::Ftp::Response
DataConnectionOpened enum valuesf::Ftp::Response
DataConnectionUnavailable enum valuesf::Ftp::Response
DirectoryOk enum valuesf::Ftp::Response
DirectoryStatus enum valuesf::Ftp::Response
EnteringPassiveMode enum valuesf::Ftp::Response
FileActionAborted enum valuesf::Ftp::Response
FileActionOk enum valuesf::Ftp::Response
FilenameNotAllowed enum valuesf::Ftp::Response
FileStatus enum valuesf::Ftp::Response
FileUnavailable enum valuesf::Ftp::Response
getListing() constsf::Ftp::ListingResponse
getMessage() constsf::Ftp::Response
getStatus() constsf::Ftp::Response
HelpMessage enum valuesf::Ftp::Response
InsufficientStorageSpace enum valuesf::Ftp::Response
InvalidFile enum valuesf::Ftp::Response
InvalidResponse enum valuesf::Ftp::Response
isOk() constsf::Ftp::Response
ListingResponse(const Response &response, const std::string &data)sf::Ftp::ListingResponse
LocalError enum valuesf::Ftp::Response
LoggedIn enum valuesf::Ftp::Response
NeedAccountToLogIn enum valuesf::Ftp::Response
NeedAccountToStore enum valuesf::Ftp::Response
NeedInformation enum valuesf::Ftp::Response
NeedPassword enum valuesf::Ftp::Response
NotEnoughMemory enum valuesf::Ftp::Response
NotLoggedIn enum valuesf::Ftp::Response
Ok enum valuesf::Ftp::Response
OpeningDataConnection enum valuesf::Ftp::Response
PageTypeUnknown enum valuesf::Ftp::Response
ParameterNotImplemented enum valuesf::Ftp::Response
ParametersUnknown enum valuesf::Ftp::Response
PointlessCommand enum valuesf::Ftp::Response
Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
RestartMarkerReply enum valuesf::Ftp::Response
ServiceReady enum valuesf::Ftp::Response
ServiceReadySoon enum valuesf::Ftp::Response
ServiceUnavailable enum valuesf::Ftp::Response
Status enum namesf::Ftp::Response
SystemStatus enum valuesf::Ftp::Response
SystemType enum valuesf::Ftp::Response
TransferAborted enum valuesf::Ftp::Response
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.html new file mode 100644 index 0000000..c68030c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.html @@ -0,0 +1,422 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Ftp::ListingResponse Class Reference
+
+
+ +

Specialization of FTP response returning a filename listing. + More...

+ +

#include <Ftp.hpp>

+
+Inheritance diagram for sf::Ftp::ListingResponse:
+
+
+ + +sf::Ftp::Response + +
+ + + + + +

+Public Types

enum  Status {
+  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
+  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
+  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
+  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
+  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
+  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
+  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
+  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
+  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
+  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
+  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
+ }
 Status codes possibly returned by a FTP response. More...
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 ListingResponse (const Response &response, const std::string &data)
 Default constructor. More...
 
const std::vector< std::string > & getListing () const
 Return the array of directory/file names. More...
 
bool isOk () const
 Check if the status code means a success. More...
 
Status getStatus () const
 Get the status code of the response. More...
 
const std::string & getMessage () const
 Get the full message contained in the response. More...
 
+

Detailed Description

+

Specialization of FTP response returning a filename listing.

+ +

Definition at line 221 of file Ftp.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::Ftp::Response::Status
+
+inherited
+
+ +

Status codes possibly returned by a FTP response.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
RestartMarkerReply 

Restart marker reply.

+
ServiceReadySoon 

Service ready in N minutes.

+
DataConnectionAlreadyOpened 

Data connection already opened, transfer starting.

+
OpeningDataConnection 

File status ok, about to open data connection.

+
Ok 

Command ok.

+
PointlessCommand 

Command not implemented.

+
SystemStatus 

System status, or system help reply.

+
DirectoryStatus 

Directory status.

+
FileStatus 

File status.

+
HelpMessage 

Help message.

+
SystemType 

NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

+
ServiceReady 

Service ready for new user.

+
ClosingConnection 

Service closing control connection.

+
DataConnectionOpened 

Data connection open, no transfer in progress.

+
ClosingDataConnection 

Closing data connection, requested file action successful.

+
EnteringPassiveMode 

Entering passive mode.

+
LoggedIn 

User logged in, proceed. Logged out if appropriate.

+
FileActionOk 

Requested file action ok.

+
DirectoryOk 

PATHNAME created.

+
NeedPassword 

User name ok, need password.

+
NeedAccountToLogIn 

Need account for login.

+
NeedInformation 

Requested file action pending further information.

+
ServiceUnavailable 

Service not available, closing control connection.

+
DataConnectionUnavailable 

Can't open data connection.

+
TransferAborted 

Connection closed, transfer aborted.

+
FileActionAborted 

Requested file action not taken.

+
LocalError 

Requested action aborted, local error in processing.

+
InsufficientStorageSpace 

Requested action not taken; insufficient storage space in system, file unavailable.

+
CommandUnknown 

Syntax error, command unrecognized.

+
ParametersUnknown 

Syntax error in parameters or arguments.

+
CommandNotImplemented 

Command not implemented.

+
BadCommandSequence 

Bad sequence of commands.

+
ParameterNotImplemented 

Command not implemented for that parameter.

+
NotLoggedIn 

Not logged in.

+
NeedAccountToStore 

Need account for storing files.

+
FileUnavailable 

Requested action not taken, file unavailable.

+
PageTypeUnknown 

Requested action aborted, page type unknown.

+
NotEnoughMemory 

Requested file action aborted, exceeded storage allocation.

+
FilenameNotAllowed 

Requested action not taken, file name not allowed.

+
InvalidResponse 

Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

+
ConnectionFailed 

Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

+
ConnectionClosed 

Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

+
InvalidFile 

Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

+
+ +

Definition at line 74 of file Ftp.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ListingResponse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::Ftp::ListingResponse::ListingResponse (const Responseresponse,
const std::string & data 
)
+
+ +

Default constructor.

+
Parameters
+ + + +
responseSource response
dataData containing the raw listing
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getListing()

+ +
+
+ + + + + + + +
const std::vector<std::string>& sf::Ftp::ListingResponse::getListing () const
+
+ +

Return the array of directory/file names.

+
Returns
Array containing the requested listing
+ +
+
+ +

◆ getMessage()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string& sf::Ftp::Response::getMessage () const
+
+inherited
+
+ +

Get the full message contained in the response.

+
Returns
The response message
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status sf::Ftp::Response::getStatus () const
+
+inherited
+
+ +

Get the status code of the response.

+
Returns
Status code
+ +
+
+ +

◆ isOk()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Ftp::Response::isOk () const
+
+inherited
+
+ +

Check if the status code means a success.

+

This function is defined for convenience, it is equivalent to testing if the status code is < 400.

+
Returns
True if the status is a success, false if it is a failure
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1ListingResponse.png new file mode 100644 index 0000000000000000000000000000000000000000..f8294550d71d479017d833dd6b4e0b05d540f913 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0y~yVCZLHUm21xw$Tn)rc^=xcN$0fD#0Zs4Db{|KpImaDpGwb94%!)6 zf3IHk<~DxsOYcih2j36bp>lKE*Zr&|M>prX{r&PcO}6rX*__v@-}9~?o_IWKeV^y0 zNO2oWlggcs-%0pS%1uu%<@u|3!PH-Ry{-Q*)w2~x^LiI+dRo2Ki+lVhvodSPCt=w+ zAK!l#XWV`6`LbE-D*VnF`ahq%#IOI;^E1in^Pcz{e|=q1`ZMO$>a)*J|1$dcYs)^B zlNbMHetuagVl(N9_P_n!lh!|&s1h&yN$2#YGs+G5FIWvGsy(jU`;2K;&+}em(F-{? zf$z@8$X74(&2hU$sWGydX+;;ct=^N<|Q`2wv{E9qom!sbFGitN_apBuy zsi!Y$_a$G6x)mpzUGd52W>)ity~2|+du#Lm-mTo4CAlv0TCUKcH;3mjuig7tvc|nG zvT~at-<+~nGV2TfS=c=7d>H+$Al0A!dc>_i+kf7fa*A2bW7*gEyX(!Kz2q*LV4p5$ z{qTvuY}E|==Jkb-u0AbZxjy-3k&f)fjP3t3YiF9eePw;{B3-@ndEK^C<(0Q4G5Guz wxB2G4I_sOQT*LmQP|sfr)>=Ac*+u!5<8r6eO!*!#FfcH9y85}Sb4q9e036IbivR!s literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response-members.html new file mode 100644 index 0000000..53b773f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response-members.html @@ -0,0 +1,109 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Ftp::Response Member List
+
+
+ +

This is the complete list of members for sf::Ftp::Response, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BadCommandSequence enum valuesf::Ftp::Response
ClosingConnection enum valuesf::Ftp::Response
ClosingDataConnection enum valuesf::Ftp::Response
CommandNotImplemented enum valuesf::Ftp::Response
CommandUnknown enum valuesf::Ftp::Response
ConnectionClosed enum valuesf::Ftp::Response
ConnectionFailed enum valuesf::Ftp::Response
DataConnectionAlreadyOpened enum valuesf::Ftp::Response
DataConnectionOpened enum valuesf::Ftp::Response
DataConnectionUnavailable enum valuesf::Ftp::Response
DirectoryOk enum valuesf::Ftp::Response
DirectoryStatus enum valuesf::Ftp::Response
EnteringPassiveMode enum valuesf::Ftp::Response
FileActionAborted enum valuesf::Ftp::Response
FileActionOk enum valuesf::Ftp::Response
FilenameNotAllowed enum valuesf::Ftp::Response
FileStatus enum valuesf::Ftp::Response
FileUnavailable enum valuesf::Ftp::Response
getMessage() constsf::Ftp::Response
getStatus() constsf::Ftp::Response
HelpMessage enum valuesf::Ftp::Response
InsufficientStorageSpace enum valuesf::Ftp::Response
InvalidFile enum valuesf::Ftp::Response
InvalidResponse enum valuesf::Ftp::Response
isOk() constsf::Ftp::Response
LocalError enum valuesf::Ftp::Response
LoggedIn enum valuesf::Ftp::Response
NeedAccountToLogIn enum valuesf::Ftp::Response
NeedAccountToStore enum valuesf::Ftp::Response
NeedInformation enum valuesf::Ftp::Response
NeedPassword enum valuesf::Ftp::Response
NotEnoughMemory enum valuesf::Ftp::Response
NotLoggedIn enum valuesf::Ftp::Response
Ok enum valuesf::Ftp::Response
OpeningDataConnection enum valuesf::Ftp::Response
PageTypeUnknown enum valuesf::Ftp::Response
ParameterNotImplemented enum valuesf::Ftp::Response
ParametersUnknown enum valuesf::Ftp::Response
PointlessCommand enum valuesf::Ftp::Response
Response(Status code=InvalidResponse, const std::string &message="")sf::Ftp::Responseexplicit
RestartMarkerReply enum valuesf::Ftp::Response
ServiceReady enum valuesf::Ftp::Response
ServiceReadySoon enum valuesf::Ftp::Response
ServiceUnavailable enum valuesf::Ftp::Response
Status enum namesf::Ftp::Response
SystemStatus enum valuesf::Ftp::Response
SystemType enum valuesf::Ftp::Response
TransferAborted enum valuesf::Ftp::Response
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.html new file mode 100644 index 0000000..26eff82 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.html @@ -0,0 +1,377 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Ftp::Response Class Reference
+
+
+ +

Define a FTP response. + More...

+ +

#include <Ftp.hpp>

+
+Inheritance diagram for sf::Ftp::Response:
+
+
+ + +sf::Ftp::DirectoryResponse +sf::Ftp::ListingResponse + +
+ + + + + +

+Public Types

enum  Status {
+  RestartMarkerReply = 110, +ServiceReadySoon = 120, +DataConnectionAlreadyOpened = 125, +OpeningDataConnection = 150, +
+  Ok = 200, +PointlessCommand = 202, +SystemStatus = 211, +DirectoryStatus = 212, +
+  FileStatus = 213, +HelpMessage = 214, +SystemType = 215, +ServiceReady = 220, +
+  ClosingConnection = 221, +DataConnectionOpened = 225, +ClosingDataConnection = 226, +EnteringPassiveMode = 227, +
+  LoggedIn = 230, +FileActionOk = 250, +DirectoryOk = 257, +NeedPassword = 331, +
+  NeedAccountToLogIn = 332, +NeedInformation = 350, +ServiceUnavailable = 421, +DataConnectionUnavailable = 425, +
+  TransferAborted = 426, +FileActionAborted = 450, +LocalError = 451, +InsufficientStorageSpace = 452, +
+  CommandUnknown = 500, +ParametersUnknown = 501, +CommandNotImplemented = 502, +BadCommandSequence = 503, +
+  ParameterNotImplemented = 504, +NotLoggedIn = 530, +NeedAccountToStore = 532, +FileUnavailable = 550, +
+  PageTypeUnknown = 551, +NotEnoughMemory = 552, +FilenameNotAllowed = 553, +InvalidResponse = 1000, +
+  ConnectionFailed = 1001, +ConnectionClosed = 1002, +InvalidFile = 1003 +
+ }
 Status codes possibly returned by a FTP response. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

 Response (Status code=InvalidResponse, const std::string &message="")
 Default constructor. More...
 
bool isOk () const
 Check if the status code means a success. More...
 
Status getStatus () const
 Get the status code of the response. More...
 
const std::string & getMessage () const
 Get the full message contained in the response. More...
 
+

Detailed Description

+

Define a FTP response.

+ +

Definition at line 66 of file Ftp.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + +
enum sf::Ftp::Response::Status
+
+ +

Status codes possibly returned by a FTP response.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
RestartMarkerReply 

Restart marker reply.

+
ServiceReadySoon 

Service ready in N minutes.

+
DataConnectionAlreadyOpened 

Data connection already opened, transfer starting.

+
OpeningDataConnection 

File status ok, about to open data connection.

+
Ok 

Command ok.

+
PointlessCommand 

Command not implemented.

+
SystemStatus 

System status, or system help reply.

+
DirectoryStatus 

Directory status.

+
FileStatus 

File status.

+
HelpMessage 

Help message.

+
SystemType 

NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.

+
ServiceReady 

Service ready for new user.

+
ClosingConnection 

Service closing control connection.

+
DataConnectionOpened 

Data connection open, no transfer in progress.

+
ClosingDataConnection 

Closing data connection, requested file action successful.

+
EnteringPassiveMode 

Entering passive mode.

+
LoggedIn 

User logged in, proceed. Logged out if appropriate.

+
FileActionOk 

Requested file action ok.

+
DirectoryOk 

PATHNAME created.

+
NeedPassword 

User name ok, need password.

+
NeedAccountToLogIn 

Need account for login.

+
NeedInformation 

Requested file action pending further information.

+
ServiceUnavailable 

Service not available, closing control connection.

+
DataConnectionUnavailable 

Can't open data connection.

+
TransferAborted 

Connection closed, transfer aborted.

+
FileActionAborted 

Requested file action not taken.

+
LocalError 

Requested action aborted, local error in processing.

+
InsufficientStorageSpace 

Requested action not taken; insufficient storage space in system, file unavailable.

+
CommandUnknown 

Syntax error, command unrecognized.

+
ParametersUnknown 

Syntax error in parameters or arguments.

+
CommandNotImplemented 

Command not implemented.

+
BadCommandSequence 

Bad sequence of commands.

+
ParameterNotImplemented 

Command not implemented for that parameter.

+
NotLoggedIn 

Not logged in.

+
NeedAccountToStore 

Need account for storing files.

+
FileUnavailable 

Requested action not taken, file unavailable.

+
PageTypeUnknown 

Requested action aborted, page type unknown.

+
NotEnoughMemory 

Requested file action aborted, exceeded storage allocation.

+
FilenameNotAllowed 

Requested action not taken, file name not allowed.

+
InvalidResponse 

Not part of the FTP standard, generated by SFML when a received response cannot be parsed.

+
ConnectionFailed 

Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails.

+
ConnectionClosed 

Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed.

+
InvalidFile 

Not part of the FTP standard, generated by SFML when a local file cannot be read or written.

+
+ +

Definition at line 74 of file Ftp.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Response()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
sf::Ftp::Response::Response (Status code = InvalidResponse,
const std::string & message = "" 
)
+
+explicit
+
+ +

Default constructor.

+

This constructor is used by the FTP client to build the response.

+
Parameters
+ + + +
codeResponse status code
messageResponse message
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getMessage()

+ +
+
+ + + + + + + +
const std::string& sf::Ftp::Response::getMessage () const
+
+ +

Get the full message contained in the response.

+
Returns
The response message
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + + + +
Status sf::Ftp::Response::getStatus () const
+
+ +

Get the status code of the response.

+
Returns
Status code
+ +
+
+ +

◆ isOk()

+ +
+
+ + + + + + + +
bool sf::Ftp::Response::isOk () const
+
+ +

Check if the status code means a success.

+

This function is defined for convenience, it is equivalent to testing if the status code is < 400.

+
Returns
True if the status is a success, false if it is a failure
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Ftp_1_1Response.png new file mode 100644 index 0000000000000000000000000000000000000000..d56a74ef58442c614498b407ced3a28995a3f677 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0y~yVDw^OU!e7*fIbcJ9k#ukJ)Zah-)OE2Q>AXFa+id=E9X;P)_~v!7 zl;M`6`5So?nxj|B6jd4+-t~PeyX1ONicFyF{SR`CdQRP^Yz`hb-neDr7WcB^QO&_2Pd=qKgh+m;gEceR`^RTM!pAHjTLik!ooQdnvi_4W6G&@uXhPE ze^~s5f$zZb9bOFFzwX5{Nj%VE)Tx+JGM!=mV=cy>f{6@jJG>Z#V^kYB*9je9K{Est z6n~bT+V}olLKw+fv6il6z;u0l{??3*3(xvR2xU!zRleQ$xQ}H~0BXp;Hpg6q@Qt;fQR_nvk?{dhf3Ma|~(`!X+WP@WVTCp;+q`2H3qebU|bc7=_|#~(jd+SlGoXVeSjdwq2NygiQ%voC$i%rH}pU;HM9r|Wc> zyb;@mb)O=RyqXgK^zLrPu+V2OjpoTc-IEmlY+IJ><70EhPRF^+{autD{t+PHe=Xnzpz`kLa*KXd&f|I z`st^yCr%SB+x$kRW5=CIQ}=$0Ylu#NYP4aCvfPEMXSc5}daJSO&$(-xHz_8qjE-SH ze`+ejcA-5MN1j(%thE<^q1m+N+)`1S;Qi4GlmBF{fACgN{bb~m>}=Nc>=C{No~r_H zpPh8&$gd~cQq6^9CS}QVSLA*iziROw>>g`1|Wd>*pX^sCJ7O_Nr}hiH2K@7*5a yb!q-%E!C4O;hLUm@VMchs@PJHBm^e^G2Xx7{8?zuo(~KR3=E#GelF{r5}E*KN5{wj literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource-members.html new file mode 100644 index 0000000..3cc67be --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::GlResource Member List
+
+
+ +

This is the complete list of members for sf::GlResource, including all inherited members.

+ + + + +
GlResource()sf::GlResourceprotected
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprotectedstatic
~GlResource()sf::GlResourceprotected
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.html new file mode 100644 index 0000000..c7e53ad --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.html @@ -0,0 +1,214 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Base class for classes that require an OpenGL context. + More...

+ +

#include <GlResource.hpp>

+
+Inheritance diagram for sf::GlResource:
+
+
+ + +sf::Context +sf::Shader +sf::Texture +sf::VertexBuffer +sf::Window +sf::RenderWindow + +
+ + + + + +

+Classes

class  TransientContextLock
 RAII helper class to temporarily lock an available context for use. More...
 
+ + + + + + + +

+Protected Member Functions

 GlResource ()
 Default constructor. More...
 
 ~GlResource ()
 Destructor. More...
 
+ + + + +

+Static Protected Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+

Detailed Description

+

Base class for classes that require an OpenGL context.

+

This class is for internal use only, it must be the base of every class that requires a valid OpenGL context in order to work.

+ +

Definition at line 46 of file GlResource.hpp.

+

Constructor & Destructor Documentation

+ +

◆ GlResource()

+ +
+
+ + + + + +
+ + + + + + + +
sf::GlResource::GlResource ()
+
+protected
+
+ +

Default constructor.

+ +
+
+ +

◆ ~GlResource()

+ +
+
+ + + + + +
+ + + + + + + +
sf::GlResource::~GlResource ()
+
+protected
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ registerContextDestroyCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sf::GlResource::registerContextDestroyCallback (ContextDestroyCallback callback,
void * arg 
)
+
+staticprotected
+
+ +

Register a function to be called when a context is destroyed.

+

This is used for internal purposes in order to properly clean up OpenGL resources that cannot be shared between contexts.

+
Parameters
+ + + +
callbackFunction to be called when a context is destroyed
argArgument to pass when calling the function
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc40fe75bfc0c617ed6d6af81935cb5966536e9 GIT binary patch literal 1764 zcmeAS@N?(olHy`uVBq!ia0y~yV2Wj6VCdjrW?*1=Ww34y0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`t=QAWF{Fa=?cLX9i+lv! z9v)Z9e)oUUei@co%@-|nH-Gx5me(q#xvIMSYP^Nw^wUp^Gz1>7$n3qfk^7v}n^E{VeNiuSZ1{I4;_Ydhy2}5*cYS#LBL8hiY=PLf@ZFMsZT7P7v#G)>gLuTWp+Eewo4xR(-m7F zR`w>U$8YJY)hb&{v-WM-n*FczO;hmZ+mhjBYfoLtx#_iaYwY#Y2K$r5=d{kfn)mzR zv2|y+-@mRGA+Y;_&YO~Bt@hWGwrT~b8Pb;hC>z!_s}n8{X~N z>#EOjVfGDH#$BKF!oM^z%DW)UUc9 zt5(I^V+ zKFhdEX}6TWsD1iVwlXU|_>A@D8tX4+r%ks%`#yWV?))bk*L;^-VmT}Md|3I0?B#j- z)}P8&?Y_Bn-_?@OuV4IQ2@ieyc}HyZ+`_q!mae)M68iR2Z|v#$ajUZ0Q$J)^SG;kQ z+m`)TA^!jGYgd;(1BD}h$+6>aq=et4U4OS$?DHLw-m-nGSAF~GnSN(u_S8q4V(w)2 z-Y+{Ax+Zl?XjAd?JBIn?LUk7;`L|_%{rx`s`nJZf(6yB}*6qDCe6MJ-G^cj|+?=XMx#_UAv(y;QDN`(^#Atp43|3nf3LZP_V$pYzA$ zb3bOp`f|R$CYgWp>aq&nzt`s$?v;HmxAkS++duEr|C`VKsJQzZQ&{NRPZ{ZR%Fb+M zUUTYOX~LO*)${9bNgl5eGqh)}J1TenSNXAJem#b>M2=thToV%dws^m>U$*tMm6nU& z{_$IV;o3Us$saDCyP>vsQ+E2c|Hsy?T6ONv0^_jIuPO`S$qbyrHXR8KWf$7LYE_&+ zF$vNy`?>+o;fW?E`3@V%cslVPHjv?9;n;9mo9%{P&2CI7dme-4eOrK_L zdY%2IXl>T}_n#jef3d3UZS3|h`eg?rcib{Pby04s^5qwYra%2^zOFmAz%On0w7DN2 z=Lb&PCcn7Jmvi@5!(URnAJ}Y}yK!rFUXSnASz1@t#Jy=^h<4i@#hg}nY~ote(@op+ zmaOi-xc>&LdeXZd^S4o93ro}YBwqiu>*KYJ+~*E0Gd7zS8~u1upjq?wx3_lcl^wh} q!#X+i>T6KhPAH6xc@7t7{AYa5-Rbi$Q5aNvF?hQAxvX + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::GlResource::TransientContextLock Member List
+
+ + + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html new file mode 100644 index 0000000..d676d9f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.html @@ -0,0 +1,131 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::GlResource::TransientContextLock Class Reference
+
+
+ +

RAII helper class to temporarily lock an available context for use. + More...

+ +

#include <GlResource.hpp>

+
+Inheritance diagram for sf::GlResource::TransientContextLock:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + +

+Public Member Functions

 TransientContextLock ()
 Default constructor. More...
 
 ~TransientContextLock ()
 Destructor. More...
 
+

Detailed Description

+

RAII helper class to temporarily lock an available context for use.

+ +

Definition at line 79 of file GlResource.hpp.

+

Constructor & Destructor Documentation

+ +

◆ TransientContextLock()

+ +
+
+ + + + + + + +
sf::GlResource::TransientContextLock::TransientContextLock ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~TransientContextLock()

+ +
+
+ + + + + + + +
sf::GlResource::TransientContextLock::~TransientContextLock ()
+
+ +

Destructor.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1GlResource_1_1TransientContextLock.png new file mode 100644 index 0000000000000000000000000000000000000000..90eea333b23b919b422444980ac827cd947f9b28 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0y~yV7SY`z!1Q}%)r2~%A`S$fq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}G{MuwF{Fa=?cCS1Rx9wh zir?P%-&p=NtB^yrWm(jZ8HL-qRz$v0`Fq;LH+Xx}q$Pf)FH~0g@>+Rj1z*3|x?%nd zf6td3pXaO0&6r)k#b?sIi>W1=3q%+4d`O50vZ|Z#t}i)<)4QO1+QFYy@*Q%&9=^JD z+|B#aPQ3-YHy_oQt~^&iKGV_U82|Nazj!AuF)!hryL}nUx=TCPmptyjDB8I_{rTpS zY)8GB8Eo@kI8G{AmA$Kr_n)g(^fJ~>Du4U+)>_||K7HqQ^)mg9J@1~sI`?(oiOk;% zy!WlKJ@)nU)ldJEZG$J>n{YbB^H;+@|L=}F-e0a2de>bt=}RWq2hDzyZe8&)_q}{& zHN(FE^M<^urgz_7Gmg7nVjOe4qV_W5mo*P%9A-=1W8AXxp)3iE{onLj1a^rsE(qqe zYA`c>!Eh_Y&wRV&ZJ+6)+0m>OvDNRHR;-#4#kT7E6XowG7>XoW_8*8@lka)H;`U?l z{5xe|I)3}^`kgjYcC-4&)Z2gl?PTAib@#n_ovr!j&zV&|Rd1}`)Gzro^R4o&*-hUS za~~Hv7M=Vt_2SOR&vQ%<)ts1}_nbM!-SAD#7h}dZiPzu83*OTEuxwfHE$`#GK7P~R znJs@h`L9~Yx0PArXT06~7fbp3d)W(KoQ^ynb5F*2>!o9-WOkObDy0U;dBegTe~DWM4fKL~jj literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph-members.html new file mode 100644 index 0000000..471651e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Glyph Member List
+
+
+ +

This is the complete list of members for sf::Glyph, including all inherited members.

+ + + + + +
advancesf::Glyph
boundssf::Glyph
Glyph()sf::Glyphinline
textureRectsf::Glyph
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph.html new file mode 100644 index 0000000..d9593bf --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Glyph.html @@ -0,0 +1,185 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Structure describing a glyph. + More...

+ +

#include <Glyph.hpp>

+ + + + + +

+Public Member Functions

 Glyph ()
 Default constructor. More...
 
+ + + + + + + + + + +

+Public Attributes

float advance
 Offset to move horizontally to the next character. More...
 
FloatRect bounds
 Bounding rectangle of the glyph, in coordinates relative to the baseline. More...
 
IntRect textureRect
 Texture coordinates of the glyph inside the font's texture. More...
 
+

Detailed Description

+

Structure describing a glyph.

+

A glyph is the visual representation of a character.

+

The sf::Glyph structure provides the information needed to handle the glyph:

    +
  • its coordinates in the font's texture
  • +
  • its bounding rectangle
  • +
  • the offset to apply to get the starting position of the next glyph
  • +
+
See also
sf::Font
+ +

Definition at line 41 of file Glyph.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Glyph()

+ +
+
+ + + + + +
+ + + + + + + +
sf::Glyph::Glyph ()
+
+inline
+
+ +

Default constructor.

+ +

Definition at line 49 of file Glyph.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ advance

+ +
+
+ + + + +
float sf::Glyph::advance
+
+ +

Offset to move horizontally to the next character.

+ +

Definition at line 54 of file Glyph.hpp.

+ +
+
+ +

◆ bounds

+ +
+
+ + + + +
FloatRect sf::Glyph::bounds
+
+ +

Bounding rectangle of the glyph, in coordinates relative to the baseline.

+ +

Definition at line 55 of file Glyph.hpp.

+ +
+
+ +

◆ textureRect

+ +
+
+ + + + +
IntRect sf::Glyph::textureRect
+
+ +

Texture coordinates of the glyph inside the font's texture.

+ +

Definition at line 56 of file Glyph.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http-members.html new file mode 100644 index 0000000..9b995cb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Http Member List
+
+
+ +

This is the complete list of members for sf::Http, including all inherited members.

+ + + + + + + +
Http()sf::Http
Http(const std::string &host, unsigned short port=0)sf::Http
NonCopyable()sf::NonCopyableinlineprivate
sendRequest(const Request &request, Time timeout=Time::Zero)sf::Http
setHost(const std::string &host, unsigned short port=0)sf::Http
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.html new file mode 100644 index 0000000..52b93ff --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.html @@ -0,0 +1,263 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Http Class Reference
+
+
+ +

A HTTP client. + More...

+ +

#include <Http.hpp>

+
+Inheritance diagram for sf::Http:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + +

+Classes

class  Request
 Define a HTTP request. More...
 
class  Response
 Define a HTTP response. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

 Http ()
 Default constructor. More...
 
 Http (const std::string &host, unsigned short port=0)
 Construct the HTTP client with the target host. More...
 
void setHost (const std::string &host, unsigned short port=0)
 Set the target host. More...
 
Response sendRequest (const Request &request, Time timeout=Time::Zero)
 Send a HTTP request and return the server's response. More...
 
+

Detailed Description

+

A HTTP client.

+

sf::Http is a very simple HTTP client that allows you to communicate with a web server.

+

You can retrieve web pages, send data to an interactive resource, download a remote file, etc. The HTTPS protocol is not supported.

+

The HTTP client is split into 3 classes:

+

sf::Http::Request builds the request that will be sent to the server. A request is made of:

    +
  • a method (what you want to do)
  • +
  • a target URI (usually the name of the web page or file)
  • +
  • one or more header fields (options that you can pass to the server)
  • +
  • an optional body (for POST requests)
  • +
+

sf::Http::Response parse the response from the web server and provides getters to read them. The response contains:

    +
  • a status code
  • +
  • header fields (that may be answers to the ones that you requested)
  • +
  • a body, which contains the contents of the requested resource
  • +
+

sf::Http provides a simple function, SendRequest, to send a sf::Http::Request and return the corresponding sf::Http::Response from the server.

+

Usage example:

// Create a new HTTP client
sf::Http http;
// We'll work on http://www.sfml-dev.org
http.setHost("http://www.sfml-dev.org");
// Prepare a request to get the 'features.php' page
sf::Http::Request request("features.php");
// Send the request
sf::Http::Response response = http.sendRequest(request);
// Check the status code and display the result
if (status == sf::Http::Response::Ok)
{
std::cout << response.getBody() << std::endl;
}
else
{
std::cout << "Error " << status << std::endl;
}
+

Definition at line 46 of file Http.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Http() [1/2]

+ +
+
+ + + + + + + +
sf::Http::Http ()
+
+ +

Default constructor.

+ +
+
+ +

◆ Http() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::Http::Http (const std::string & host,
unsigned short port = 0 
)
+
+ +

Construct the HTTP client with the target host.

+

This is equivalent to calling setHost(host, port). The port has a default value of 0, which means that the HTTP client will use the right port according to the protocol used (80 for HTTP). You should leave it like this unless you really need a port other than the standard one, or use an unknown protocol.

+
Parameters
+ + + +
hostWeb server to connect to
portPort to use for connection
+
+
+ +
+
+

Member Function Documentation

+ +

◆ sendRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Response sf::Http::sendRequest (const Requestrequest,
Time timeout = Time::Zero 
)
+
+ +

Send a HTTP request and return the server's response.

+

You must have a valid host before sending a request (see setHost). Any missing mandatory header field in the request will be added with an appropriate value. Warning: this function waits for the server's response and may not return instantly; use a thread if you don't want to block your application, or use a timeout to limit the time to wait. A value of Time::Zero means that the client will use the system default timeout (which is usually pretty long).

+
Parameters
+ + + +
requestRequest to send
timeoutMaximum time to wait
+
+
+
Returns
Server's response
+ +
+
+ +

◆ setHost()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Http::setHost (const std::string & host,
unsigned short port = 0 
)
+
+ +

Set the target host.

+

This function just stores the host address and port, it doesn't actually connect to it until you send a request. The port has a default value of 0, which means that the HTTP client will use the right port according to the protocol used (80 for HTTP). You should leave it like this unless you really need a port other than the standard one, or use an unknown protocol.

+
Parameters
+ + + +
hostWeb server to connect to
portPort to use for connection
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http.png new file mode 100644 index 0000000000000000000000000000000000000000..6f251bf903c1077b22f6358c20cb381ca2106064 GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(U|~_Tj_F@?63&Df&iuXnO-Iq<_(`WWt@|*$RI55? z?);_SUrjPuk~epioY$F6^H;H$=1zOFeEE;pU*@UE22Az!ymcjVN&kY)9`hX^$2(8r zd+qJ1*z!QJA^tVv110lIj~})cDf=p@Pm$+5;C)~GVh85~`-~$j1@*l%7~ZWH6h83R zG>K`)em9@fiD}Q2cn&x=vlN7ESMj~OdCzAnd-el-Z`D(Gb9)w>d}hBm;Zpjf=?rFD z+NbQ*f9&!7B7eiavPrMr>}^^Z%kUzz{M)wIC2A{I{w-ay?ex0U!RO*`3vPVt_r|uN ruPo2NgTdX@gTei&myz-33;Y^8Mb}<;Oj2fGU|{fc^>bP0l+XkKNzL5L literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request-members.html new file mode 100644 index 0000000..08989d3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Http::Request Member List
+
+
+ +

This is the complete list of members for sf::Http::Request, including all inherited members.

+ + + + + + + + + + + + + + +
Delete enum valuesf::Http::Request
Get enum valuesf::Http::Request
Head enum valuesf::Http::Request
Http (defined in sf::Http::Request)sf::Http::Requestfriend
Method enum namesf::Http::Request
Post enum valuesf::Http::Request
Put enum valuesf::Http::Request
Request(const std::string &uri="/", Method method=Get, const std::string &body="")sf::Http::Request
setBody(const std::string &body)sf::Http::Request
setField(const std::string &field, const std::string &value)sf::Http::Request
setHttpVersion(unsigned int major, unsigned int minor)sf::Http::Request
setMethod(Method method)sf::Http::Request
setUri(const std::string &uri)sf::Http::Request
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request.html new file mode 100644 index 0000000..f6cdcf5 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Request.html @@ -0,0 +1,352 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Http::Request Class Reference
+
+
+ +

Define a HTTP request. + More...

+ +

#include <Http.hpp>

+ + + + + +

+Public Types

enum  Method {
+  Get, +Post, +Head, +Put, +
+  Delete +
+ }
 Enumerate the available HTTP methods for a request. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Request (const std::string &uri="/", Method method=Get, const std::string &body="")
 Default constructor. More...
 
void setField (const std::string &field, const std::string &value)
 Set the value of a field. More...
 
void setMethod (Method method)
 Set the request method. More...
 
void setUri (const std::string &uri)
 Set the requested URI. More...
 
void setHttpVersion (unsigned int major, unsigned int minor)
 Set the HTTP version for the request. More...
 
void setBody (const std::string &body)
 Set the body of the request. More...
 
+ + + +

+Friends

+class Http
 
+

Detailed Description

+

Define a HTTP request.

+ +

Definition at line 54 of file Http.hpp.

+

Member Enumeration Documentation

+ +

◆ Method

+ +
+
+ + + + +
enum sf::Http::Request::Method
+
+ +

Enumerate the available HTTP methods for a request.

+ + + + + + +
Enumerator
Get 

Request in get mode, standard method to retrieve a page.

+
Post 

Request in post mode, usually to send data to a page.

+
Head 

Request a page's header only.

+
Put 

Request in put mode, useful for a REST API.

+
Delete 

Request in delete mode, useful for a REST API.

+
+ +

Definition at line 62 of file Http.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Request()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::Http::Request::Request (const std::string & uri = "/",
Method method = Get,
const std::string & body = "" 
)
+
+ +

Default constructor.

+

This constructor creates a GET request, with the root URI ("/") and an empty body.

+
Parameters
+ + + + +
uriTarget URI
methodMethod to use for the request
bodyContent of the request's body
+
+
+ +
+
+

Member Function Documentation

+ +

◆ setBody()

+ +
+
+ + + + + + + + +
void sf::Http::Request::setBody (const std::string & body)
+
+ +

Set the body of the request.

+

The body of a request is optional and only makes sense for POST requests. It is ignored for all other methods. The body is empty by default.

+
Parameters
+ + +
bodyContent of the body
+
+
+ +
+
+ +

◆ setField()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Http::Request::setField (const std::string & field,
const std::string & value 
)
+
+ +

Set the value of a field.

+

The field is created if it doesn't exist. The name of the field is case-insensitive. By default, a request doesn't contain any field (but the mandatory fields are added later by the HTTP client when sending the request).

+
Parameters
+ + + +
fieldName of the field to set
valueValue of the field
+
+
+ +
+
+ +

◆ setHttpVersion()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Http::Request::setHttpVersion (unsigned int major,
unsigned int minor 
)
+
+ +

Set the HTTP version for the request.

+

The HTTP version is 1.0 by default.

+
Parameters
+ + + +
majorMajor HTTP version number
minorMinor HTTP version number
+
+
+ +
+
+ +

◆ setMethod()

+ +
+
+ + + + + + + + +
void sf::Http::Request::setMethod (Method method)
+
+ +

Set the request method.

+

See the Method enumeration for a complete list of all the availale methods. The method is Http::Request::Get by default.

+
Parameters
+ + +
methodMethod to use for the request
+
+
+ +
+
+ +

◆ setUri()

+ +
+
+ + + + + + + + +
void sf::Http::Request::setUri (const std::string & uri)
+
+ +

Set the requested URI.

+

The URI is the resource (usually a web page or a file) that you want to get or post. The URI is "/" (the root page) by default.

+
Parameters
+ + +
uriURI to request, relative to the host
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response-members.html new file mode 100644 index 0000000..167dcf6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response-members.html @@ -0,0 +1,92 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Http::Response Member List
+
+ + + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response.html new file mode 100644 index 0000000..69a1bb7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Http_1_1Response.html @@ -0,0 +1,345 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Http::Response Class Reference
+
+
+ +

Define a HTTP response. + More...

+ +

#include <Http.hpp>

+ + + + + +

+Public Types

enum  Status {
+  Ok = 200, +Created = 201, +Accepted = 202, +NoContent = 204, +
+  ResetContent = 205, +PartialContent = 206, +MultipleChoices = 300, +MovedPermanently = 301, +
+  MovedTemporarily = 302, +NotModified = 304, +BadRequest = 400, +Unauthorized = 401, +
+  Forbidden = 403, +NotFound = 404, +RangeNotSatisfiable = 407, +InternalServerError = 500, +
+  NotImplemented = 501, +BadGateway = 502, +ServiceNotAvailable = 503, +GatewayTimeout = 504, +
+  VersionNotSupported = 505, +InvalidResponse = 1000, +ConnectionFailed = 1001 +
+ }
 Enumerate all the valid status codes for a response. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Response ()
 Default constructor. More...
 
const std::string & getField (const std::string &field) const
 Get the value of a field. More...
 
Status getStatus () const
 Get the response status code. More...
 
unsigned int getMajorHttpVersion () const
 Get the major HTTP version number of the response. More...
 
unsigned int getMinorHttpVersion () const
 Get the minor HTTP version number of the response. More...
 
const std::string & getBody () const
 Get the body of the response. More...
 
+ + + +

+Friends

+class Http
 
+

Detailed Description

+

Define a HTTP response.

+ +

Definition at line 193 of file Http.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + +
enum sf::Http::Response::Status
+
+ +

Enumerate all the valid status codes for a response.

+ + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Ok 

Most common code returned when operation was successful.

+
Created 

The resource has successfully been created.

+
Accepted 

The request has been accepted, but will be processed later by the server.

+
NoContent 

The server didn't send any data in return.

+
ResetContent 

The server informs the client that it should clear the view (form) that caused the request to be sent.

+
PartialContent 

The server has sent a part of the resource, as a response to a partial GET request.

+
MultipleChoices 

The requested page can be accessed from several locations.

+
MovedPermanently 

The requested page has permanently moved to a new location.

+
MovedTemporarily 

The requested page has temporarily moved to a new location.

+
NotModified 

For conditional requests, means the requested page hasn't changed and doesn't need to be refreshed.

+
BadRequest 

The server couldn't understand the request (syntax error)

+
Unauthorized 

The requested page needs an authentication to be accessed.

+
Forbidden 

The requested page cannot be accessed at all, even with authentication.

+
NotFound 

The requested page doesn't exist.

+
RangeNotSatisfiable 

The server can't satisfy the partial GET request (with a "Range" header field)

+
InternalServerError 

The server encountered an unexpected error.

+
NotImplemented 

The server doesn't implement a requested feature.

+
BadGateway 

The gateway server has received an error from the source server.

+
ServiceNotAvailable 

The server is temporarily unavailable (overloaded, in maintenance, ...)

+
GatewayTimeout 

The gateway server couldn't receive a response from the source server.

+
VersionNotSupported 

The server doesn't support the requested HTTP version.

+
InvalidResponse 

Response is not a valid HTTP one.

+
ConnectionFailed 

Connection with server failed.

+
+ +

Definition at line 201 of file Http.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Response()

+ +
+
+ + + + + + + +
sf::Http::Response::Response ()
+
+ +

Default constructor.

+

Constructs an empty response.

+ +
+
+

Member Function Documentation

+ +

◆ getBody()

+ +
+
+ + + + + + + +
const std::string& sf::Http::Response::getBody () const
+
+ +

Get the body of the response.

+

The body of a response may contain:

    +
  • the requested page (for GET requests)
  • +
  • a response from the server (for POST requests)
  • +
  • nothing (for HEAD requests)
  • +
  • an error message (in case of an error)
  • +
+
Returns
The response body
+ +
+
+ +

◆ getField()

+ +
+
+ + + + + + + + +
const std::string& sf::Http::Response::getField (const std::string & field) const
+
+ +

Get the value of a field.

+

If the field field is not found in the response header, the empty string is returned. This function uses case-insensitive comparisons.

+
Parameters
+ + +
fieldName of the field to get
+
+
+
Returns
Value of the field, or empty string if not found
+ +
+
+ +

◆ getMajorHttpVersion()

+ +
+
+ + + + + + + +
unsigned int sf::Http::Response::getMajorHttpVersion () const
+
+ +

Get the major HTTP version number of the response.

+
Returns
Major HTTP version number
+
See also
getMinorHttpVersion
+ +
+
+ +

◆ getMinorHttpVersion()

+ +
+
+ + + + + + + +
unsigned int sf::Http::Response::getMinorHttpVersion () const
+
+ +

Get the minor HTTP version number of the response.

+
Returns
Minor HTTP version number
+
See also
getMajorHttpVersion
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + + + +
Status sf::Http::Response::getStatus () const
+
+ +

Get the response status code.

+

The status code should be the first thing to be checked after receiving a response, it defines whether it is a success, a failure or anything else (see the Status enumeration).

+
Returns
Status code of the response
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image-members.html new file mode 100644 index 0000000..3bb2d59 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image-members.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Image Member List
+
+
+ +

This is the complete list of members for sf::Image, including all inherited members.

+ + + + + + + + + + + + + + + + + +
copy(const Image &source, unsigned int destX, unsigned int destY, const IntRect &sourceRect=IntRect(0, 0, 0, 0), bool applyAlpha=false)sf::Image
create(unsigned int width, unsigned int height, const Color &color=Color(0, 0, 0))sf::Image
create(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Image
createMaskFromColor(const Color &color, Uint8 alpha=0)sf::Image
flipHorizontally()sf::Image
flipVertically()sf::Image
getPixel(unsigned int x, unsigned int y) constsf::Image
getPixelsPtr() constsf::Image
getSize() constsf::Image
Image()sf::Image
loadFromFile(const std::string &filename)sf::Image
loadFromMemory(const void *data, std::size_t size)sf::Image
loadFromStream(InputStream &stream)sf::Image
saveToFile(const std::string &filename) constsf::Image
setPixel(unsigned int x, unsigned int y, const Color &color)sf::Image
~Image()sf::Image
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image.html new file mode 100644 index 0000000..6f8601a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Image.html @@ -0,0 +1,650 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Image Class Reference
+
+
+ +

Class for loading, manipulating and saving images. + More...

+ +

#include <Image.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Image ()
 Default constructor. More...
 
 ~Image ()
 Destructor. More...
 
void create (unsigned int width, unsigned int height, const Color &color=Color(0, 0, 0))
 Create the image and fill it with a unique color. More...
 
void create (unsigned int width, unsigned int height, const Uint8 *pixels)
 Create the image from an array of pixels. More...
 
bool loadFromFile (const std::string &filename)
 Load the image from a file on disk. More...
 
bool loadFromMemory (const void *data, std::size_t size)
 Load the image from a file in memory. More...
 
bool loadFromStream (InputStream &stream)
 Load the image from a custom stream. More...
 
bool saveToFile (const std::string &filename) const
 Save the image to a file on disk. More...
 
Vector2u getSize () const
 Return the size (width and height) of the image. More...
 
void createMaskFromColor (const Color &color, Uint8 alpha=0)
 Create a transparency mask from a specified color-key. More...
 
void copy (const Image &source, unsigned int destX, unsigned int destY, const IntRect &sourceRect=IntRect(0, 0, 0, 0), bool applyAlpha=false)
 Copy pixels from another image onto this one. More...
 
void setPixel (unsigned int x, unsigned int y, const Color &color)
 Change the color of a pixel. More...
 
Color getPixel (unsigned int x, unsigned int y) const
 Get the color of a pixel. More...
 
const Uint8 * getPixelsPtr () const
 Get a read-only pointer to the array of pixels. More...
 
void flipHorizontally ()
 Flip the image horizontally (left <-> right) More...
 
void flipVertically ()
 Flip the image vertically (top <-> bottom) More...
 
+

Detailed Description

+

Class for loading, manipulating and saving images.

+

sf::Image is an abstraction to manipulate images as bidimensional arrays of pixels.

+

The class provides functions to load, read, write and save pixels, as well as many other useful functions.

+

sf::Image can handle a unique internal representation of pixels, which is RGBA 32 bits. This means that a pixel must be composed of 8 bits red, green, blue and alpha channels – just like a sf::Color. All the functions that return an array of pixels follow this rule, and all parameters that you pass to sf::Image functions (such as loadFromMemory) must use this representation as well.

+

A sf::Image can be copied, but it is a heavy resource and if possible you should always use [const] references to pass or return them to avoid useless copies.

+

Usage example:

// Load an image file from a file
sf::Image background;
if (!background.loadFromFile("background.jpg"))
return -1;
// Create a 20x20 image filled with black color
sf::Image image;
image.create(20, 20, sf::Color::Black);
// Copy image1 on image2 at position (10, 10)
image.copy(background, 10, 10);
// Make the top-left pixel transparent
sf::Color color = image.getPixel(0, 0);
color.a = 0;
image.setPixel(0, 0, color);
// Save the image to a file
if (!image.saveToFile("result.png"))
return -1;
See also
sf::Texture
+ +

Definition at line 46 of file Image.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Image()

+ +
+
+ + + + + + + +
sf::Image::Image ()
+
+ +

Default constructor.

+

Creates an empty image.

+ +
+
+ +

◆ ~Image()

+ +
+
+ + + + + + + +
sf::Image::~Image ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ copy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Image::copy (const Imagesource,
unsigned int destX,
unsigned int destY,
const IntRectsourceRect = IntRect(0, 0, 0, 0),
bool applyAlpha = false 
)
+
+ +

Copy pixels from another image onto this one.

+

This function does a slow pixel copy and should not be used intensively. It can be used to prepare a complex static image from several others, but if you need this kind of feature in real-time you'd better use sf::RenderTexture.

+

If sourceRect is empty, the whole image is copied. If applyAlpha is set to true, the transparency of source pixels is applied. If it is false, the pixels are copied unchanged with their alpha value.

+
Parameters
+ + + + + + +
sourceSource image to copy
destXX coordinate of the destination position
destYY coordinate of the destination position
sourceRectSub-rectangle of the source image to copy
applyAlphaShould the copy take into account the source transparency?
+
+
+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Image::create (unsigned int width,
unsigned int height,
const Colorcolor = Color(0, 0, 0) 
)
+
+ +

Create the image and fill it with a unique color.

+
Parameters
+ + + + +
widthWidth of the image
heightHeight of the image
colorFill color
+
+
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Image::create (unsigned int width,
unsigned int height,
const Uint8 * pixels 
)
+
+ +

Create the image from an array of pixels.

+

The pixel array is assumed to contain 32-bits RGBA pixels, and have the given width and height. If not, this is an undefined behavior. If pixels is null, an empty image is created.

+
Parameters
+ + + + +
widthWidth of the image
heightHeight of the image
pixelsArray of pixels to copy to the image
+
+
+ +
+
+ +

◆ createMaskFromColor()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Image::createMaskFromColor (const Colorcolor,
Uint8 alpha = 0 
)
+
+ +

Create a transparency mask from a specified color-key.

+

This function sets the alpha value of every pixel matching the given color to alpha (0 by default), so that they become transparent.

+
Parameters
+ + + +
colorColor to make transparent
alphaAlpha value to assign to transparent pixels
+
+
+ +
+
+ +

◆ flipHorizontally()

+ +
+
+ + + + + + + +
void sf::Image::flipHorizontally ()
+
+ +

Flip the image horizontally (left <-> right)

+ +
+
+ +

◆ flipVertically()

+ +
+
+ + + + + + + +
void sf::Image::flipVertically ()
+
+ +

Flip the image vertically (top <-> bottom)

+ +
+
+ +

◆ getPixel()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Color sf::Image::getPixel (unsigned int x,
unsigned int y 
) const
+
+ +

Get the color of a pixel.

+

This function doesn't check the validity of the pixel coordinates, using out-of-range values will result in an undefined behavior.

+
Parameters
+ + + +
xX coordinate of pixel to get
yY coordinate of pixel to get
+
+
+
Returns
Color of the pixel at coordinates (x, y)
+
See also
setPixel
+ +
+
+ +

◆ getPixelsPtr()

+ +
+
+ + + + + + + +
const Uint8* sf::Image::getPixelsPtr () const
+
+ +

Get a read-only pointer to the array of pixels.

+

The returned value points to an array of RGBA pixels made of 8 bits integers components. The size of the array is width * height * 4 (getSize().x * getSize().y * 4). Warning: the returned pointer may become invalid if you modify the image, so you should never store it for too long. If the image is empty, a null pointer is returned.

+
Returns
Read-only pointer to the array of pixels
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
Vector2u sf::Image::getSize () const
+
+ +

Return the size (width and height) of the image.

+
Returns
Size of the image, in pixels
+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + + + + +
bool sf::Image::loadFromFile (const std::string & filename)
+
+ +

Load the image from a file on disk.

+

The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

+
Parameters
+ + +
filenamePath of the image file to load
+
+
+
Returns
True if loading was successful
+
See also
loadFromMemory, loadFromStream, saveToFile
+ +
+
+ +

◆ loadFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Image::loadFromMemory (const void * data,
std::size_t size 
)
+
+ +

Load the image from a file in memory.

+

The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

+
Parameters
+ + + +
dataPointer to the file data in memory
sizeSize of the data to load, in bytes
+
+
+
Returns
True if loading was successful
+
See also
loadFromFile, loadFromStream
+ +
+
+ +

◆ loadFromStream()

+ +
+
+ + + + + + + + +
bool sf::Image::loadFromStream (InputStreamstream)
+
+ +

Load the image from a custom stream.

+

The supported image formats are bmp, png, tga, jpg, gif, psd, hdr and pic. Some format options are not supported, like progressive jpeg. If this function fails, the image is left unchanged.

+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
True if loading was successful
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ saveToFile()

+ +
+
+ + + + + + + + +
bool sf::Image::saveToFile (const std::string & filename) const
+
+ +

Save the image to a file on disk.

+

The format of the image is automatically deduced from the extension. The supported image formats are bmp, png, tga and jpg. The destination file is overwritten if it already exists. This function fails if the image is empty.

+
Parameters
+ + +
filenamePath of the file to save
+
+
+
Returns
True if saving was successful
+
See also
create, loadFromFile, loadFromMemory
+ +
+
+ +

◆ setPixel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Image::setPixel (unsigned int x,
unsigned int y,
const Colorcolor 
)
+
+ +

Change the color of a pixel.

+

This function doesn't check the validity of the pixel coordinates, using out-of-range values will result in an undefined behavior.

+
Parameters
+ + + + +
xX coordinate of pixel to change
yY coordinate of pixel to change
colorNew color of the pixel
+
+
+
See also
getPixel
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile-members.html new file mode 100644 index 0000000..fc54f4a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile-members.html @@ -0,0 +1,77 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::InputSoundFile Member List
+
+
+ +

This is the complete list of members for sf::InputSoundFile, including all inherited members.

+ + + + + + + + + + + + + + + + + +
getChannelCount() constsf::InputSoundFile
getDuration() constsf::InputSoundFile
getSampleCount() constsf::InputSoundFile
getSampleOffset() constsf::InputSoundFile
getSampleRate() constsf::InputSoundFile
getTimeOffset() constsf::InputSoundFile
InputSoundFile()sf::InputSoundFile
NonCopyable()sf::NonCopyableinlineprivate
openFromFile(const std::string &filename)sf::InputSoundFile
openFromMemory(const void *data, std::size_t sizeInBytes)sf::InputSoundFile
openFromStream(InputStream &stream)sf::InputSoundFile
read(Int16 *samples, Uint64 maxCount)sf::InputSoundFile
seek(Uint64 sampleOffset)sf::InputSoundFile
seek(Time timeOffset)sf::InputSoundFile
~InputSoundFile()sf::InputSoundFile
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.html new file mode 100644 index 0000000..8ddbfb7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.html @@ -0,0 +1,481 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::InputSoundFile Class Reference
+
+
+ +

Provide read access to sound files. + More...

+ +

#include <InputSoundFile.hpp>

+
+Inheritance diagram for sf::InputSoundFile:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 InputSoundFile ()
 Default constructor. More...
 
 ~InputSoundFile ()
 Destructor. More...
 
bool openFromFile (const std::string &filename)
 Open a sound file from the disk for reading. More...
 
bool openFromMemory (const void *data, std::size_t sizeInBytes)
 Open a sound file in memory for reading. More...
 
bool openFromStream (InputStream &stream)
 Open a sound file from a custom stream for reading. More...
 
Uint64 getSampleCount () const
 Get the total number of audio samples in the file. More...
 
unsigned int getChannelCount () const
 Get the number of channels used by the sound. More...
 
unsigned int getSampleRate () const
 Get the sample rate of the sound. More...
 
Time getDuration () const
 Get the total duration of the sound file. More...
 
Time getTimeOffset () const
 Get the read offset of the file in time. More...
 
Uint64 getSampleOffset () const
 Get the read offset of the file in samples. More...
 
void seek (Uint64 sampleOffset)
 Change the current read position to the given sample offset. More...
 
void seek (Time timeOffset)
 Change the current read position to the given time offset. More...
 
Uint64 read (Int16 *samples, Uint64 maxCount)
 Read audio samples from the open file. More...
 
+

Detailed Description

+

Provide read access to sound files.

+

This class decodes audio samples from a sound file.

+

It is used internally by higher-level classes such as sf::SoundBuffer and sf::Music, but can also be useful if you want to process or analyze audio files without playing them, or if you want to implement your own version of sf::Music with more specific features.

+

Usage example:

// Open a sound file
if (!file.openFromFile("music.ogg"))
/* error */;
// Print the sound attributes
std::cout << "duration: " << file.getDuration().asSeconds() << std::endl;
std::cout << "channels: " << file.getChannelCount() << std::endl;
std::cout << "sample rate: " << file.getSampleRate() << std::endl;
std::cout << "sample count: " << file.getSampleCount() << std::endl;
// Read and process batches of samples until the end of file is reached
sf::Int16 samples[1024];
sf::Uint64 count;
do
{
count = file.read(samples, 1024);
// process, analyze, play, convert, or whatever
// you want to do with the samples...
}
while (count > 0);
See also
sf::SoundFileReader, sf::OutputSoundFile
+ +

Definition at line 47 of file InputSoundFile.hpp.

+

Constructor & Destructor Documentation

+ +

◆ InputSoundFile()

+ +
+
+ + + + + + + +
sf::InputSoundFile::InputSoundFile ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~InputSoundFile()

+ +
+
+ + + + + + + +
sf::InputSoundFile::~InputSoundFile ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getChannelCount()

+ +
+
+ + + + + + + +
unsigned int sf::InputSoundFile::getChannelCount () const
+
+ +

Get the number of channels used by the sound.

+
Returns
Number of channels (1 = mono, 2 = stereo)
+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + + + +
Time sf::InputSoundFile::getDuration () const
+
+ +

Get the total duration of the sound file.

+

This function is provided for convenience, the duration is deduced from the other sound file attributes.

+
Returns
Duration of the sound file
+ +
+
+ +

◆ getSampleCount()

+ +
+
+ + + + + + + +
Uint64 sf::InputSoundFile::getSampleCount () const
+
+ +

Get the total number of audio samples in the file.

+
Returns
Number of samples
+ +
+
+ +

◆ getSampleOffset()

+ +
+
+ + + + + + + +
Uint64 sf::InputSoundFile::getSampleOffset () const
+
+ +

Get the read offset of the file in samples.

+
Returns
Sample position
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + + + +
unsigned int sf::InputSoundFile::getSampleRate () const
+
+ +

Get the sample rate of the sound.

+
Returns
Sample rate, in samples per second
+ +
+
+ +

◆ getTimeOffset()

+ +
+
+ + + + + + + +
Time sf::InputSoundFile::getTimeOffset () const
+
+ +

Get the read offset of the file in time.

+
Returns
Time position
+ +
+
+ +

◆ openFromFile()

+ +
+
+ + + + + + + + +
bool sf::InputSoundFile::openFromFile (const std::string & filename)
+
+ +

Open a sound file from the disk for reading.

+

The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

+
Parameters
+ + +
filenamePath of the sound file to load
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ openFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::InputSoundFile::openFromMemory (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Open a sound file in memory for reading.

+

The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

+
Parameters
+ + + +
dataPointer to the file data in memory
sizeInBytesSize of the data to load, in bytes
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ openFromStream()

+ +
+
+ + + + + + + + +
bool sf::InputSoundFile::openFromStream (InputStreamstream)
+
+ +

Open a sound file from a custom stream for reading.

+

The supported audio formats are: WAV (PCM only), OGG/Vorbis, FLAC. The supported sample sizes for FLAC and WAV are 8, 16, 24 and 32 bit.

+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ read()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Uint64 sf::InputSoundFile::read (Int16 * samples,
Uint64 maxCount 
)
+
+ +

Read audio samples from the open file.

+
Parameters
+ + + +
samplesPointer to the sample array to fill
maxCountMaximum number of samples to read
+
+
+
Returns
Number of samples actually read (may be less than maxCount)
+ +
+
+ +

◆ seek() [1/2]

+ +
+
+ + + + + + + + +
void sf::InputSoundFile::seek (Uint64 sampleOffset)
+
+ +

Change the current read position to the given sample offset.

+

This function takes a sample offset to provide maximum precision. If you need to jump to a given time, use the other overload.

+

The sample offset takes the channels into account. If you have a time offset instead, you can easily find the corresponding sample offset with the following formula: timeInSeconds * sampleRate * channelCount If the given offset exceeds to total number of samples, this function jumps to the end of the sound file.

+
Parameters
+ + +
sampleOffsetIndex of the sample to jump to, relative to the beginning
+
+
+ +
+
+ +

◆ seek() [2/2]

+ +
+
+ + + + + + + + +
void sf::InputSoundFile::seek (Time timeOffset)
+
+ +

Change the current read position to the given time offset.

+

Using a time offset is handy but imprecise. If you need an accurate result, consider using the overload which takes a sample offset.

+

If the given time exceeds to total duration, this function jumps to the end of the sound file.

+
Parameters
+ + +
timeOffsetTime to jump to, relative to the beginning
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputSoundFile.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d5aa9c4113ca2551ab82cb9329ee6af8158402 GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0y~yU?^ZmxO zr&U1A`@>ZUot1BH)qhTj3fg&&@jXj%h4`c9Lr=cVQ!85b^-Eq(EFbrt$Di6CYCZm- z!T9sX*DrB7wa3IF)Gy3W6pyey)xN$l_GnP#c_#U@ys9RXw;q+ceBu6nyQLn?lncu{o$-3ls;pkc;y>TS>f(2YOtK3IP4cw5;_yK8p2Gvnd%wP` zcqV_ + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::InputStream Member List
+
+
+ +

This is the complete list of members for sf::InputStream, including all inherited members.

+ + + + + + +
getSize()=0sf::InputStreampure virtual
read(void *data, Int64 size)=0sf::InputStreampure virtual
seek(Int64 position)=0sf::InputStreampure virtual
tell()=0sf::InputStreampure virtual
~InputStream()sf::InputStreaminlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.html new file mode 100644 index 0000000..115edc4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.html @@ -0,0 +1,281 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::InputStream Class Referenceabstract
+
+
+ +

Abstract class for custom file input streams. + More...

+ +

#include <InputStream.hpp>

+
+Inheritance diagram for sf::InputStream:
+
+
+ + +sf::FileInputStream +sf::MemoryInputStream + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~InputStream ()
 Virtual destructor. More...
 
virtual Int64 read (void *data, Int64 size)=0
 Read data from the stream. More...
 
virtual Int64 seek (Int64 position)=0
 Change the current reading position. More...
 
virtual Int64 tell ()=0
 Get the current reading position in the stream. More...
 
virtual Int64 getSize ()=0
 Return the size of the stream. More...
 
+

Detailed Description

+

Abstract class for custom file input streams.

+

This class allows users to define their own file input sources from which SFML can load resources.

+

SFML resource classes like sf::Texture and sf::SoundBuffer provide loadFromFile and loadFromMemory functions, which read data from conventional sources. However, if you have data coming from a different source (over a network, embedded, encrypted, compressed, etc) you can derive your own class from sf::InputStream and load SFML resources with their loadFromStream function.

+

Usage example:

// custom stream class that reads from inside a zip file
class ZipStream : public sf::InputStream
{
public:
ZipStream(std::string archive);
bool open(std::string filename);
Int64 read(void* data, Int64 size);
Int64 seek(Int64 position);
Int64 tell();
Int64 getSize();
private:
...
};
// now you can load textures...
sf::Texture texture;
ZipStream stream("resources.zip");
stream.open("images/img.png");
texture.loadFromStream(stream);
// musics...
sf::Music music;
ZipStream stream("resources.zip");
stream.open("musics/msc.ogg");
music.openFromStream(stream);
// etc.
+

Definition at line 41 of file InputStream.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~InputStream()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::InputStream::~InputStream ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 49 of file InputStream.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::InputStream::getSize ()
+
+pure virtual
+
+ +

Return the size of the stream.

+
Returns
The total number of bytes available in the stream, or -1 on error
+ +

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Int64 sf::InputStream::read (void * data,
Int64 size 
)
+
+pure virtual
+
+ +

Read data from the stream.

+

After reading, the stream's reading position must be advanced by the amount of bytes read.

+
Parameters
+ + + +
dataBuffer where to copy the read data
sizeDesired number of bytes to read
+
+
+
Returns
The number of bytes actually read, or -1 on error
+ +

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

+ +
+
+ +

◆ seek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Int64 sf::InputStream::seek (Int64 position)
+
+pure virtual
+
+ +

Change the current reading position.

+
Parameters
+ + +
positionThe position to seek to, from the beginning
+
+
+
Returns
The position actually sought to, or -1 on error
+ +

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

+ +
+
+ +

◆ tell()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::InputStream::tell ()
+
+pure virtual
+
+ +

Get the current reading position in the stream.

+
Returns
The current position, or -1 on error.
+ +

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1InputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..86a2283bf6c8cd27eb214385dacc0e314e8f3087 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0y~yU{qpYU;ohD-V|{ch+Q`E4QG7N6r-^&faQTu7ekDbV1u^? zQ^C%yi{5UKwEg=g{``{t^IyyrotiG=dfNXd*9SxM&@Xo+*53^bSu;EJw(_1zt z8{f{Z%$L2rd-&~UZeDR?cdawno^8bcftZ^XPmu~TQ;*cbj24Yo}Gn@ z_O3ngP3P+FkdN|VSI(RXOgUY;w|RyJZ^D7Q*%$pTuCpi=dHYJ@z=YlEQKn~$Hmr56 zu>FyWo>-UMeyC(J^*l zFi;Xvn#DiXqv7sR32;v}fSbDVM&V(Omk)RJ>Qq^OEU?E|r&3ElQq6oUW6e2z9BPR2A`@ z)V(}o*0$Nt_a86K+!;K{%I0@`KfnCMC34QLs*{=zs?IF)>*!mwu6MhLu6?MT>dP4u zm5g7!E(=!kOg_iCaec;3BUQf5Wv`i@*k9Y7>o{*a|F*N+zvSFMrQhfDS|dx@u6=DlZ+ zWnL-OubeCWraNCdYg6^|6`aS4{5l@Hyq+?5kJ7d>{$uMGpX)l?{a*8x%cQ>{iEl(@ zWAE`7hOFD&9{zQi@xHaKUq598WljpYsCzwEW%iVBeatWW_#hdD;H^ zp1hu`K4b-&wk~$Lt^G^sNVCi9soB+wZU!q)KWobABfI6e>t;@ssn1lS)MwxNHN$_) z+yBK*GODvw_IiJ3n7+jSrP?f&T0h~-=8FGTEHYaXpt3S+cgMf&N}g7&!ot3j{FFpI zCwXg3Qkfp0;;FaLV^WM + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::IpAddress Member List
+
+
+ +

This is the complete list of members for sf::IpAddress, including all inherited members.

+ + + + + + + + + + + + + + + +
Anysf::IpAddressstatic
Broadcastsf::IpAddressstatic
getLocalAddress()sf::IpAddressstatic
getPublicAddress(Time timeout=Time::Zero)sf::IpAddressstatic
IpAddress()sf::IpAddress
IpAddress(const std::string &address)sf::IpAddress
IpAddress(const char *address)sf::IpAddress
IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3)sf::IpAddress
IpAddress(Uint32 address)sf::IpAddressexplicit
LocalHostsf::IpAddressstatic
Nonesf::IpAddressstatic
operator<(const IpAddress &left, const IpAddress &right)sf::IpAddressfriend
toInteger() constsf::IpAddress
toString() constsf::IpAddress
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1IpAddress.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1IpAddress.html new file mode 100644 index 0000000..06d1eca --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1IpAddress.html @@ -0,0 +1,561 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Encapsulate an IPv4 network address. + More...

+ +

#include <IpAddress.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IpAddress ()
 Default constructor. More...
 
 IpAddress (const std::string &address)
 Construct the address from a string. More...
 
 IpAddress (const char *address)
 Construct the address from a string. More...
 
 IpAddress (Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3)
 Construct the address from 4 bytes. More...
 
 IpAddress (Uint32 address)
 Construct the address from a 32-bits integer. More...
 
std::string toString () const
 Get a string representation of the address. More...
 
Uint32 toInteger () const
 Get an integer representation of the address. More...
 
+ + + + + + + +

+Static Public Member Functions

static IpAddress getLocalAddress ()
 Get the computer's local address. More...
 
static IpAddress getPublicAddress (Time timeout=Time::Zero)
 Get the computer's public address. More...
 
+ + + + + + + + + + + + + +

+Static Public Attributes

static const IpAddress None
 Value representing an empty/invalid address. More...
 
static const IpAddress Any
 Value representing any address (0.0.0.0) More...
 
static const IpAddress LocalHost
 The "localhost" address (for connecting a computer to itself locally) More...
 
static const IpAddress Broadcast
 The "broadcast" address (for sending UDP messages to everyone on a local network) More...
 
+ + + + +

+Friends

bool operator< (const IpAddress &left, const IpAddress &right)
 Overload of < operator to compare two IP addresses. More...
 
+

Detailed Description

+

Encapsulate an IPv4 network address.

+

sf::IpAddress is a utility class for manipulating network addresses.

+

It provides a set a implicit constructors and conversion functions to easily build or transform an IP address from/to various representations.

+

Usage example:

sf::IpAddress a0; // an invalid address
sf::IpAddress a1 = sf::IpAddress::None; // an invalid address (same as a0)
sf::IpAddress a2("127.0.0.1"); // the local host address
sf::IpAddress a3 = sf::IpAddress::Broadcast; // the broadcast address
sf::IpAddress a4(192, 168, 1, 56); // a local address
sf::IpAddress a5("my_computer"); // a local address created from a network name
sf::IpAddress a6("89.54.1.169"); // a distant address
sf::IpAddress a7("www.google.com"); // a distant address created from a network name
sf::IpAddress a8 = sf::IpAddress::getLocalAddress(); // my address on the local network
sf::IpAddress a9 = sf::IpAddress::getPublicAddress(); // my address on the internet

Note that sf::IpAddress currently doesn't support IPv6 nor other types of network addresses.

+ +

Definition at line 44 of file IpAddress.hpp.

+

Constructor & Destructor Documentation

+ +

◆ IpAddress() [1/5]

+ +
+
+ + + + + + + +
sf::IpAddress::IpAddress ()
+
+ +

Default constructor.

+

This constructor creates an empty (invalid) address

+ +
+
+ +

◆ IpAddress() [2/5]

+ +
+
+ + + + + + + + +
sf::IpAddress::IpAddress (const std::string & address)
+
+ +

Construct the address from a string.

+

Here address can be either a decimal address (ex: "192.168.1.56") or a network name (ex: "localhost").

+
Parameters
+ + +
addressIP address or network name
+
+
+ +
+
+ +

◆ IpAddress() [3/5]

+ +
+
+ + + + + + + + +
sf::IpAddress::IpAddress (const char * address)
+
+ +

Construct the address from a string.

+

Here address can be either a decimal address (ex: "192.168.1.56") or a network name (ex: "localhost"). This is equivalent to the constructor taking a std::string parameter, it is defined for convenience so that the implicit conversions from literal strings to IpAddress work.

+
Parameters
+ + +
addressIP address or network name
+
+
+ +
+
+ +

◆ IpAddress() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::IpAddress::IpAddress (Uint8 byte0,
Uint8 byte1,
Uint8 byte2,
Uint8 byte3 
)
+
+ +

Construct the address from 4 bytes.

+

Calling IpAddress(a, b, c, d) is equivalent to calling IpAddress("a.b.c.d"), but safer as it doesn't have to parse a string to get the address components.

+
Parameters
+ + + + + +
byte0First byte of the address
byte1Second byte of the address
byte2Third byte of the address
byte3Fourth byte of the address
+
+
+ +
+
+ +

◆ IpAddress() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::IpAddress::IpAddress (Uint32 address)
+
+explicit
+
+ +

Construct the address from a 32-bits integer.

+

This constructor uses the internal representation of the address directly. It should be used for optimization purposes, and only if you got that representation from IpAddress::toInteger().

+
Parameters
+ + +
address4 bytes of the address packed into a 32-bits integer
+
+
+
See also
toInteger
+ +
+
+

Member Function Documentation

+ +

◆ getLocalAddress()

+ +
+
+ + + + + +
+ + + + + + + +
static IpAddress sf::IpAddress::getLocalAddress ()
+
+static
+
+ +

Get the computer's local address.

+

The local address is the address of the computer from the LAN point of view, i.e. something like 192.168.1.56. It is meaningful only for communications over the local network. Unlike getPublicAddress, this function is fast and may be used safely anywhere.

+
Returns
Local IP address of the computer
+
See also
getPublicAddress
+ +
+
+ +

◆ getPublicAddress()

+ +
+
+ + + + + +
+ + + + + + + + +
static IpAddress sf::IpAddress::getPublicAddress (Time timeout = Time::Zero)
+
+static
+
+ +

Get the computer's public address.

+

The public address is the address of the computer from the internet point of view, i.e. something like 89.54.1.169. It is necessary for communications over the world wide web. The only way to get a public address is to ask it to a distant website; as a consequence, this function depends on both your network connection and the server, and may be very slow. You should use it as few as possible. Because this function depends on the network connection and on a distant server, you may use a time limit if you don't want your program to be possibly stuck waiting in case there is a problem; this limit is deactivated by default.

+
Parameters
+ + +
timeoutMaximum time to wait
+
+
+
Returns
Public IP address of the computer
+
See also
getLocalAddress
+ +
+
+ +

◆ toInteger()

+ +
+
+ + + + + + + +
Uint32 sf::IpAddress::toInteger () const
+
+ +

Get an integer representation of the address.

+

The returned number is the internal representation of the address, and should be used for optimization purposes only (like sending the address through a socket). The integer produced by this function can then be converted back to a sf::IpAddress with the proper constructor.

+
Returns
32-bits unsigned integer representation of the address
+
See also
toString
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
std::string sf::IpAddress::toString () const
+
+ +

Get a string representation of the address.

+

The returned string is the decimal representation of the IP address (like "192.168.1.56"), even if it was constructed from a host name.

+
Returns
String representation of the address
+
See also
toInteger
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator< (const IpAddressleft,
const IpAddressright 
)
+
+friend
+
+ +

Overload of < operator to compare two IP addresses.

+
Parameters
+ + + +
leftLeft operand (a IP address)
rightRight operand (a IP address)
+
+
+
Returns
True if left is lesser than right
+ +
+
+

Member Data Documentation

+ +

◆ Any

+ +
+
+ + + + + +
+ + + + +
const IpAddress sf::IpAddress::Any
+
+static
+
+ +

Value representing any address (0.0.0.0)

+ +

Definition at line 185 of file IpAddress.hpp.

+ +
+
+ +

◆ Broadcast

+ +
+
+ + + + + +
+ + + + +
const IpAddress sf::IpAddress::Broadcast
+
+static
+
+ +

The "broadcast" address (for sending UDP messages to everyone on a local network)

+ +

Definition at line 187 of file IpAddress.hpp.

+ +
+
+ +

◆ LocalHost

+ +
+
+ + + + + +
+ + + + +
const IpAddress sf::IpAddress::LocalHost
+
+static
+
+ +

The "localhost" address (for connecting a computer to itself locally)

+ +

Definition at line 186 of file IpAddress.hpp.

+ +
+
+ +

◆ None

+ +
+
+ + + + + +
+ + + + +
const IpAddress sf::IpAddress::None
+
+static
+
+ +

Value representing an empty/invalid address.

+ +

Definition at line 184 of file IpAddress.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick-members.html new file mode 100644 index 0000000..a85b0f8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick-members.html @@ -0,0 +1,80 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Joystick Member List
+
+
+ +

This is the complete list of members for sf::Joystick, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
Axis enum namesf::Joystick
AxisCount enum valuesf::Joystick
ButtonCount enum valuesf::Joystick
Count enum valuesf::Joystick
getAxisPosition(unsigned int joystick, Axis axis)sf::Joystickstatic
getButtonCount(unsigned int joystick)sf::Joystickstatic
getIdentification(unsigned int joystick)sf::Joystickstatic
hasAxis(unsigned int joystick, Axis axis)sf::Joystickstatic
isButtonPressed(unsigned int joystick, unsigned int button)sf::Joystickstatic
isConnected(unsigned int joystick)sf::Joystickstatic
PovX enum valuesf::Joystick
PovY enum valuesf::Joystick
R enum valuesf::Joystick
U enum valuesf::Joystick
update()sf::Joystickstatic
V enum valuesf::Joystick
X enum valuesf::Joystick
Y enum valuesf::Joystick
Z enum valuesf::Joystick
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick.html new file mode 100644 index 0000000..f3e035e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Joystick.html @@ -0,0 +1,478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Give access to the real-time state of the joysticks. + More...

+ +

#include <Joystick.hpp>

+ + + + + +

+Classes

struct  Identification
 Structure holding a joystick's identification. More...
 
+ + + + + + + +

+Public Types

enum  { Count = 8, +ButtonCount = 32, +AxisCount = 8 + }
 Constants related to joysticks capabilities. More...
 
enum  Axis {
+  X, +Y, +Z, +R, +
+  U, +V, +PovX, +PovY +
+ }
 Axes supported by SFML joysticks. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool isConnected (unsigned int joystick)
 Check if a joystick is connected. More...
 
static unsigned int getButtonCount (unsigned int joystick)
 Return the number of buttons supported by a joystick. More...
 
static bool hasAxis (unsigned int joystick, Axis axis)
 Check if a joystick supports a given axis. More...
 
static bool isButtonPressed (unsigned int joystick, unsigned int button)
 Check if a joystick button is pressed. More...
 
static float getAxisPosition (unsigned int joystick, Axis axis)
 Get the current position of a joystick axis. More...
 
static Identification getIdentification (unsigned int joystick)
 Get the joystick information. More...
 
static void update ()
 Update the states of all joysticks. More...
 
+

Detailed Description

+

Give access to the real-time state of the joysticks.

+

sf::Joystick provides an interface to the state of the joysticks.

+

It only contains static functions, so it's not meant to be instantiated. Instead, each joystick is identified by an index that is passed to the functions of this class.

+

This class allows users to query the state of joysticks at any time and directly, without having to deal with a window and its events. Compared to the JoystickMoved, JoystickButtonPressed and JoystickButtonReleased events, sf::Joystick can retrieve the state of axes and buttons of joysticks at any time (you don't need to store and update a boolean on your side in order to know if a button is pressed or released), and you always get the real state of joysticks, even if they are moved, pressed or released when your window is out of focus and no event is triggered.

+

SFML supports:

+

Unlike the keyboard or mouse, the state of joysticks is sometimes not directly available (depending on the OS), therefore an update() function must be called in order to update the current state of joysticks. When you have a window with event handling, this is done automatically, you don't need to call anything. But if you have no window, or if you want to check joysticks state before creating one, you must call sf::Joystick::update explicitly.

+

Usage example:

// Is joystick #0 connected?
bool connected = sf::Joystick::isConnected(0);
// How many buttons does joystick #0 support?
unsigned int buttons = sf::Joystick::getButtonCount(0);
// Does joystick #0 define a X axis?
// Is button #2 pressed on joystick #0?
bool pressed = sf::Joystick::isButtonPressed(0, 2);
// What's the current position of the Y axis on joystick #0?
See also
sf::Keyboard, sf::Mouse
+ +

Definition at line 41 of file Joystick.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ +

Constants related to joysticks capabilities.

+ + + + +
Enumerator
Count 

Maximum number of supported joysticks.

+
ButtonCount 

Maximum number of supported buttons.

+
AxisCount 

Maximum number of supported axes.

+
+ +

Definition at line 49 of file Joystick.hpp.

+ +
+
+ +

◆ Axis

+ +
+
+ + + + +
enum sf::Joystick::Axis
+
+ +

Axes supported by SFML joysticks.

+ + + + + + + + + +
Enumerator

The X axis.

+

The Y axis.

+

The Z axis.

+

The R axis.

+

The U axis.

+

The V axis.

+
PovX 

The X axis of the point-of-view hat.

+
PovY 

The Y axis of the point-of-view hat.

+
+ +

Definition at line 60 of file Joystick.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ getAxisPosition()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static float sf::Joystick::getAxisPosition (unsigned int joystick,
Axis axis 
)
+
+static
+
+ +

Get the current position of a joystick axis.

+

If the joystick is not connected, this function returns 0.

+
Parameters
+ + + +
joystickIndex of the joystick
axisAxis to check
+
+
+
Returns
Current position of the axis, in range [-100 .. 100]
+ +
+
+ +

◆ getButtonCount()

+ +
+
+ + + + + +
+ + + + + + + + +
static unsigned int sf::Joystick::getButtonCount (unsigned int joystick)
+
+static
+
+ +

Return the number of buttons supported by a joystick.

+

If the joystick is not connected, this function returns 0.

+
Parameters
+ + +
joystickIndex of the joystick
+
+
+
Returns
Number of buttons supported by the joystick
+ +
+
+ +

◆ getIdentification()

+ +
+
+ + + + + +
+ + + + + + + + +
static Identification sf::Joystick::getIdentification (unsigned int joystick)
+
+static
+
+ +

Get the joystick information.

+
Parameters
+ + +
joystickIndex of the joystick
+
+
+
Returns
Structure containing joystick information.
+ +
+
+ +

◆ hasAxis()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool sf::Joystick::hasAxis (unsigned int joystick,
Axis axis 
)
+
+static
+
+ +

Check if a joystick supports a given axis.

+

If the joystick is not connected, this function returns false.

+
Parameters
+ + + +
joystickIndex of the joystick
axisAxis to check
+
+
+
Returns
True if the joystick supports the axis, false otherwise
+ +
+
+ +

◆ isButtonPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool sf::Joystick::isButtonPressed (unsigned int joystick,
unsigned int button 
)
+
+static
+
+ +

Check if a joystick button is pressed.

+

If the joystick is not connected, this function returns false.

+
Parameters
+ + + +
joystickIndex of the joystick
buttonButton to check
+
+
+
Returns
True if the button is pressed, false otherwise
+ +
+
+ +

◆ isConnected()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Joystick::isConnected (unsigned int joystick)
+
+static
+
+ +

Check if a joystick is connected.

+
Parameters
+ + +
joystickIndex of the joystick to check
+
+
+
Returns
True if the joystick is connected, false otherwise
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
static void sf::Joystick::update ()
+
+static
+
+ +

Update the states of all joysticks.

+

This function is used internally by SFML, so you normally don't have to call it explicitly. However, you may need to call it if you have no window yet (or no window at all): in this case the joystick states are not updated automatically.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard-members.html new file mode 100644 index 0000000..d117297 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard-members.html @@ -0,0 +1,172 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Keyboard Member List
+
+
+ +

This is the complete list of members for sf::Keyboard, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A enum valuesf::Keyboard
Add enum valuesf::Keyboard
B enum valuesf::Keyboard
Backslash enum valuesf::Keyboard
BackSlash enum valuesf::Keyboard
BackSpace enum valuesf::Keyboard
Backspace enum valuesf::Keyboard
C enum valuesf::Keyboard
Comma enum valuesf::Keyboard
D enum valuesf::Keyboard
Dash enum valuesf::Keyboard
Delete enum valuesf::Keyboard
Divide enum valuesf::Keyboard
Down enum valuesf::Keyboard
E enum valuesf::Keyboard
End enum valuesf::Keyboard
Enter enum valuesf::Keyboard
Equal enum valuesf::Keyboard
Escape enum valuesf::Keyboard
F enum valuesf::Keyboard
F1 enum valuesf::Keyboard
F10 enum valuesf::Keyboard
F11 enum valuesf::Keyboard
F12 enum valuesf::Keyboard
F13 enum valuesf::Keyboard
F14 enum valuesf::Keyboard
F15 enum valuesf::Keyboard
F2 enum valuesf::Keyboard
F3 enum valuesf::Keyboard
F4 enum valuesf::Keyboard
F5 enum valuesf::Keyboard
F6 enum valuesf::Keyboard
F7 enum valuesf::Keyboard
F8 enum valuesf::Keyboard
F9 enum valuesf::Keyboard
G enum valuesf::Keyboard
H enum valuesf::Keyboard
Home enum valuesf::Keyboard
Hyphen enum valuesf::Keyboard
I enum valuesf::Keyboard
Insert enum valuesf::Keyboard
isKeyPressed(Key key)sf::Keyboardstatic
J enum valuesf::Keyboard
K enum valuesf::Keyboard
Key enum namesf::Keyboard
KeyCount enum valuesf::Keyboard
L enum valuesf::Keyboard
LAlt enum valuesf::Keyboard
LBracket enum valuesf::Keyboard
LControl enum valuesf::Keyboard
Left enum valuesf::Keyboard
LShift enum valuesf::Keyboard
LSystem enum valuesf::Keyboard
M enum valuesf::Keyboard
Menu enum valuesf::Keyboard
Multiply enum valuesf::Keyboard
N enum valuesf::Keyboard
Num0 enum valuesf::Keyboard
Num1 enum valuesf::Keyboard
Num2 enum valuesf::Keyboard
Num3 enum valuesf::Keyboard
Num4 enum valuesf::Keyboard
Num5 enum valuesf::Keyboard
Num6 enum valuesf::Keyboard
Num7 enum valuesf::Keyboard
Num8 enum valuesf::Keyboard
Num9 enum valuesf::Keyboard
Numpad0 enum valuesf::Keyboard
Numpad1 enum valuesf::Keyboard
Numpad2 enum valuesf::Keyboard
Numpad3 enum valuesf::Keyboard
Numpad4 enum valuesf::Keyboard
Numpad5 enum valuesf::Keyboard
Numpad6 enum valuesf::Keyboard
Numpad7 enum valuesf::Keyboard
Numpad8 enum valuesf::Keyboard
Numpad9 enum valuesf::Keyboard
O enum valuesf::Keyboard
P enum valuesf::Keyboard
PageDown enum valuesf::Keyboard
PageUp enum valuesf::Keyboard
Pause enum valuesf::Keyboard
Period enum valuesf::Keyboard
Q enum valuesf::Keyboard
Quote enum valuesf::Keyboard
R enum valuesf::Keyboard
RAlt enum valuesf::Keyboard
RBracket enum valuesf::Keyboard
RControl enum valuesf::Keyboard
Return enum valuesf::Keyboard
Right enum valuesf::Keyboard
RShift enum valuesf::Keyboard
RSystem enum valuesf::Keyboard
S enum valuesf::Keyboard
SemiColon enum valuesf::Keyboard
Semicolon enum valuesf::Keyboard
setVirtualKeyboardVisible(bool visible)sf::Keyboardstatic
Slash enum valuesf::Keyboard
Space enum valuesf::Keyboard
Subtract enum valuesf::Keyboard
T enum valuesf::Keyboard
Tab enum valuesf::Keyboard
Tilde enum valuesf::Keyboard
U enum valuesf::Keyboard
Unknown enum valuesf::Keyboard
Up enum valuesf::Keyboard
V enum valuesf::Keyboard
W enum valuesf::Keyboard
X enum valuesf::Keyboard
Y enum valuesf::Keyboard
Z enum valuesf::Keyboard
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard.html new file mode 100644 index 0000000..8d69d16 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Keyboard.html @@ -0,0 +1,539 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Give access to the real-time state of the keyboard. + More...

+ +

#include <Keyboard.hpp>

+ + + + + +

+Public Types

enum  Key {
+  Unknown = -1, +A = 0, +B, +C, +
+  D, +E, +F, +G, +
+  H, +I, +J, +K, +
+  L, +M, +N, +O, +
+  P, +Q, +R, +S, +
+  T, +U, +V, +W, +
+  X, +Y, +Z, +Num0, +
+  Num1, +Num2, +Num3, +Num4, +
+  Num5, +Num6, +Num7, +Num8, +
+  Num9, +Escape, +LControl, +LShift, +
+  LAlt, +LSystem, +RControl, +RShift, +
+  RAlt, +RSystem, +Menu, +LBracket, +
+  RBracket, +Semicolon, +Comma, +Period, +
+  Quote, +Slash, +Backslash, +Tilde, +
+  Equal, +Hyphen, +Space, +Enter, +
+  Backspace, +Tab, +PageUp, +PageDown, +
+  End, +Home, +Insert, +Delete, +
+  Add, +Subtract, +Multiply, +Divide, +
+  Left, +Right, +Up, +Down, +
+  Numpad0, +Numpad1, +Numpad2, +Numpad3, +
+  Numpad4, +Numpad5, +Numpad6, +Numpad7, +
+  Numpad8, +Numpad9, +F1, +F2, +
+  F3, +F4, +F5, +F6, +
+  F7, +F8, +F9, +F10, +
+  F11, +F12, +F13, +F14, +
+  F15, +Pause, +KeyCount, +Dash = Hyphen, +
+  BackSpace = Backspace, +BackSlash = Backslash, +SemiColon = Semicolon, +Return = Enter +
+ }
 Key codes. More...
 
+ + + + + + + +

+Static Public Member Functions

static bool isKeyPressed (Key key)
 Check if a key is pressed. More...
 
static void setVirtualKeyboardVisible (bool visible)
 Show or hide the virtual keyboard. More...
 
+

Detailed Description

+

Give access to the real-time state of the keyboard.

+

sf::Keyboard provides an interface to the state of the keyboard.

+

It only contains static functions (a single keyboard is assumed), so it's not meant to be instantiated.

+

This class allows users to query the keyboard state at any time and directly, without having to deal with a window and its events. Compared to the KeyPressed and KeyReleased events, sf::Keyboard can retrieve the state of a key at any time (you don't need to store and update a boolean on your side in order to know if a key is pressed or released), and you always get the real state of the keyboard, even if keys are pressed or released when your window is out of focus and no event is triggered.

+

Usage example:

See also
sf::Joystick, sf::Mouse, sf::Touch
+ +

Definition at line 40 of file Keyboard.hpp.

+

Member Enumeration Documentation

+ +

◆ Key

+ +
+
+ + + + +
enum sf::Keyboard::Key
+
+ +

Key codes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Unknown 

Unhandled key.

+

The A key.

+

The B key.

+

The C key.

+

The D key.

+

The E key.

+

The F key.

+

The G key.

+

The H key.

+

The I key.

+

The J key.

+

The K key.

+

The L key.

+

The M key.

+

The N key.

+

The O key.

+

The P key.

+

The Q key.

+

The R key.

+

The S key.

+

The T key.

+

The U key.

+

The V key.

+

The W key.

+

The X key.

+

The Y key.

+

The Z key.

+
Num0 

The 0 key.

+
Num1 

The 1 key.

+
Num2 

The 2 key.

+
Num3 

The 3 key.

+
Num4 

The 4 key.

+
Num5 

The 5 key.

+
Num6 

The 6 key.

+
Num7 

The 7 key.

+
Num8 

The 8 key.

+
Num9 

The 9 key.

+
Escape 

The Escape key.

+
LControl 

The left Control key.

+
LShift 

The left Shift key.

+
LAlt 

The left Alt key.

+
LSystem 

The left OS specific key: window (Windows and Linux), apple (MacOS X), ...

+
RControl 

The right Control key.

+
RShift 

The right Shift key.

+
RAlt 

The right Alt key.

+
RSystem 

The right OS specific key: window (Windows and Linux), apple (MacOS X), ...

+
Menu 

The Menu key.

+
LBracket 

The [ key.

+
RBracket 

The ] key.

+
Semicolon 

The ; key.

+
Comma 

The , key.

+
Period 

The . key.

+
Quote 

The ' key.

+
Slash 

The / key.

+
Backslash 

The \ key.

+
Tilde 

The ~ key.

+
Equal 

The = key.

+
Hyphen 

The - key (hyphen)

+
Space 

The Space key.

+
Enter 

The Enter/Return keys.

+
Backspace 

The Backspace key.

+
Tab 

The Tabulation key.

+
PageUp 

The Page up key.

+
PageDown 

The Page down key.

+
End 

The End key.

+
Home 

The Home key.

+
Insert 

The Insert key.

+
Delete 

The Delete key.

+
Add 

The + key.

+
Subtract 

The - key (minus, usually from numpad)

+
Multiply 

The * key.

+
Divide 

The / key.

+
Left 

Left arrow.

+
Right 

Right arrow.

+
Up 

Up arrow.

+
Down 

Down arrow.

+
Numpad0 

The numpad 0 key.

+
Numpad1 

The numpad 1 key.

+
Numpad2 

The numpad 2 key.

+
Numpad3 

The numpad 3 key.

+
Numpad4 

The numpad 4 key.

+
Numpad5 

The numpad 5 key.

+
Numpad6 

The numpad 6 key.

+
Numpad7 

The numpad 7 key.

+
Numpad8 

The numpad 8 key.

+
Numpad9 

The numpad 9 key.

+
F1 

The F1 key.

+
F2 

The F2 key.

+
F3 

The F3 key.

+
F4 

The F4 key.

+
F5 

The F5 key.

+
F6 

The F6 key.

+
F7 

The F7 key.

+
F8 

The F8 key.

+
F9 

The F9 key.

+
F10 

The F10 key.

+
F11 

The F11 key.

+
F12 

The F12 key.

+
F13 

The F13 key.

+
F14 

The F14 key.

+
F15 

The F15 key.

+
Pause 

The Pause key.

+
KeyCount 

Keep last – the total number of keyboard keys.

+
Dash 
Deprecated:
Use Hyphen instead
+
BackSpace 
Deprecated:
Use Backspace instead
+
BackSlash 
Deprecated:
Use Backslash instead
+
SemiColon 
Deprecated:
Use Semicolon instead
+
Return 
Deprecated:
Use Enter instead
+
+ +

Definition at line 48 of file Keyboard.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ isKeyPressed()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Keyboard::isKeyPressed (Key key)
+
+static
+
+ +

Check if a key is pressed.

+
Parameters
+ + +
keyKey to check
+
+
+
Returns
True if the key is pressed, false otherwise
+ +
+
+ +

◆ setVirtualKeyboardVisible()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Keyboard::setVirtualKeyboardVisible (bool visible)
+
+static
+
+ +

Show or hide the virtual keyboard.

+

Warning: the virtual keyboard is not supported on all systems. It will typically be implemented on mobile OSes (Android, iOS) but not on desktop OSes (Windows, Linux, ...).

+

If the virtual keyboard is not available, this function does nothing.

+
Parameters
+ + +
visibleTrue to show, false to hide
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener-members.html new file mode 100644 index 0000000..76945d7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Listener Member List
+
+
+ +

This is the complete list of members for sf::Listener, including all inherited members.

+ + + + + + + + + + + + +
getDirection()sf::Listenerstatic
getGlobalVolume()sf::Listenerstatic
getPosition()sf::Listenerstatic
getUpVector()sf::Listenerstatic
setDirection(float x, float y, float z)sf::Listenerstatic
setDirection(const Vector3f &direction)sf::Listenerstatic
setGlobalVolume(float volume)sf::Listenerstatic
setPosition(float x, float y, float z)sf::Listenerstatic
setPosition(const Vector3f &position)sf::Listenerstatic
setUpVector(float x, float y, float z)sf::Listenerstatic
setUpVector(const Vector3f &upVector)sf::Listenerstatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener.html new file mode 100644 index 0000000..efd127d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Listener.html @@ -0,0 +1,537 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Listener Class Reference
+
+
+ +

The audio listener is the point in the scene from where all the sounds are heard. + More...

+ +

#include <Listener.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void setGlobalVolume (float volume)
 Change the global volume of all the sounds and musics. More...
 
static float getGlobalVolume ()
 Get the current value of the global volume. More...
 
static void setPosition (float x, float y, float z)
 Set the position of the listener in the scene. More...
 
static void setPosition (const Vector3f &position)
 Set the position of the listener in the scene. More...
 
static Vector3f getPosition ()
 Get the current position of the listener in the scene. More...
 
static void setDirection (float x, float y, float z)
 Set the forward vector of the listener in the scene. More...
 
static void setDirection (const Vector3f &direction)
 Set the forward vector of the listener in the scene. More...
 
static Vector3f getDirection ()
 Get the current forward vector of the listener in the scene. More...
 
static void setUpVector (float x, float y, float z)
 Set the upward vector of the listener in the scene. More...
 
static void setUpVector (const Vector3f &upVector)
 Set the upward vector of the listener in the scene. More...
 
static Vector3f getUpVector ()
 Get the current upward vector of the listener in the scene. More...
 
+

Detailed Description

+

The audio listener is the point in the scene from where all the sounds are heard.

+

The audio listener defines the global properties of the audio environment, it defines where and how sounds and musics are heard.

+

If sf::View is the eyes of the user, then sf::Listener is his ears (by the way, they are often linked together – same position, orientation, etc.).

+

sf::Listener is a simple interface, which allows to setup the listener in the 3D audio environment (position, direction and up vector), and to adjust the global volume.

+

Because the listener is unique in the scene, sf::Listener only contains static functions and doesn't have to be instantiated.

+

Usage example:

// Move the listener to the position (1, 0, -5)
// Make it face the right axis (1, 0, 0)
// Reduce the global volume
+

Definition at line 42 of file Listener.hpp.

+

Member Function Documentation

+ +

◆ getDirection()

+ +
+
+ + + + + +
+ + + + + + + +
static Vector3f sf::Listener::getDirection ()
+
+static
+
+ +

Get the current forward vector of the listener in the scene.

+
Returns
Listener's forward vector (not normalized)
+
See also
setDirection
+ +
+
+ +

◆ getGlobalVolume()

+ +
+
+ + + + + +
+ + + + + + + +
static float sf::Listener::getGlobalVolume ()
+
+static
+
+ +

Get the current value of the global volume.

+
Returns
Current global volume, in the range [0, 100]
+
See also
setGlobalVolume
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
static Vector3f sf::Listener::getPosition ()
+
+static
+
+ +

Get the current position of the listener in the scene.

+
Returns
Listener's position
+
See also
setPosition
+ +
+
+ +

◆ getUpVector()

+ +
+
+ + + + + +
+ + + + + + + +
static Vector3f sf::Listener::getUpVector ()
+
+static
+
+ +

Get the current upward vector of the listener in the scene.

+
Returns
Listener's upward vector (not normalized)
+
See also
setUpVector
+ +
+
+ +

◆ setDirection() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void sf::Listener::setDirection (float x,
float y,
float z 
)
+
+static
+
+ +

Set the forward vector of the listener in the scene.

+

The direction (also called "at vector") is the vector pointing forward from the listener's perspective. Together with the up vector, it defines the 3D orientation of the listener in the scene. The direction vector doesn't have to be normalized. The default listener's direction is (0, 0, -1).

+
Parameters
+ + + + +
xX coordinate of the listener's direction
yY coordinate of the listener's direction
zZ coordinate of the listener's direction
+
+
+
See also
getDirection, setUpVector, setPosition
+ +
+
+ +

◆ setDirection() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Listener::setDirection (const Vector3fdirection)
+
+static
+
+ +

Set the forward vector of the listener in the scene.

+

The direction (also called "at vector") is the vector pointing forward from the listener's perspective. Together with the up vector, it defines the 3D orientation of the listener in the scene. The direction vector doesn't have to be normalized. The default listener's direction is (0, 0, -1).

+
Parameters
+ + +
directionNew listener's direction
+
+
+
See also
getDirection, setUpVector, setPosition
+ +
+
+ +

◆ setGlobalVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Listener::setGlobalVolume (float volume)
+
+static
+
+ +

Change the global volume of all the sounds and musics.

+

The volume is a number between 0 and 100; it is combined with the individual volume of each sound / music. The default value for the volume is 100 (maximum).

+
Parameters
+ + +
volumeNew global volume, in the range [0, 100]
+
+
+
See also
getGlobalVolume
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void sf::Listener::setPosition (float x,
float y,
float z 
)
+
+static
+
+ +

Set the position of the listener in the scene.

+

The default listener's position is (0, 0, 0).

+
Parameters
+ + + + +
xX coordinate of the listener's position
yY coordinate of the listener's position
zZ coordinate of the listener's position
+
+
+
See also
getPosition, setDirection
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Listener::setPosition (const Vector3fposition)
+
+static
+
+ +

Set the position of the listener in the scene.

+

The default listener's position is (0, 0, 0).

+
Parameters
+ + +
positionNew listener's position
+
+
+
See also
getPosition, setDirection
+ +
+
+ +

◆ setUpVector() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void sf::Listener::setUpVector (float x,
float y,
float z 
)
+
+static
+
+ +

Set the upward vector of the listener in the scene.

+

The up vector is the vector that points upward from the listener's perspective. Together with the direction, it defines the 3D orientation of the listener in the scene. The up vector doesn't have to be normalized. The default listener's up vector is (0, 1, 0). It is usually not necessary to change it, especially in 2D scenarios.

+
Parameters
+ + + + +
xX coordinate of the listener's up vector
yY coordinate of the listener's up vector
zZ coordinate of the listener's up vector
+
+
+
See also
getUpVector, setDirection, setPosition
+ +
+
+ +

◆ setUpVector() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Listener::setUpVector (const Vector3fupVector)
+
+static
+
+ +

Set the upward vector of the listener in the scene.

+

The up vector is the vector that points upward from the listener's perspective. Together with the direction, it defines the 3D orientation of the listener in the scene. The up vector doesn't have to be normalized. The default listener's up vector is (0, 1, 0). It is usually not necessary to change it, especially in 2D scenarios.

+
Parameters
+ + +
upVectorNew listener's up vector
+
+
+
See also
getUpVector, setDirection, setPosition
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock-members.html new file mode 100644 index 0000000..b35829a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Lock Member List
+
+
+ +

This is the complete list of members for sf::Lock, including all inherited members.

+ + + + + +
Lock(Mutex &mutex)sf::Lockexplicit
NonCopyable()sf::NonCopyableinlineprivate
~Lock()sf::Lock
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.html new file mode 100644 index 0000000..4125083 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.html @@ -0,0 +1,154 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Lock Class Reference
+
+
+ +

Automatic wrapper for locking and unlocking mutexes. + More...

+ +

#include <Lock.hpp>

+
+Inheritance diagram for sf::Lock:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + +

+Public Member Functions

 Lock (Mutex &mutex)
 Construct the lock with a target mutex. More...
 
 ~Lock ()
 Destructor. More...
 
+

Detailed Description

+

Automatic wrapper for locking and unlocking mutexes.

+

sf::Lock is a RAII wrapper for sf::Mutex.

+

By unlocking it in its destructor, it ensures that the mutex will always be released when the current scope (most likely a function) ends. This is even more important when an exception or an early return statement can interrupt the execution flow of the function.

+

For maximum robustness, sf::Lock should always be used to lock/unlock a mutex.

+

Usage example:

sf::Mutex mutex;
void function()
{
sf::Lock lock(mutex); // mutex is now locked
functionThatMayThrowAnException(); // mutex is unlocked if this function throws
if (someCondition)
return; // mutex is unlocked
} // mutex is unlocked

Because the mutex is not explicitly unlocked in the code, it may remain locked longer than needed. If the region of the code that needs to be protected by the mutex is not the entire function, a good practice is to create a smaller, inner scope so that the lock is limited to this part of the code.

+
sf::Mutex mutex;
void function()
{
{
sf::Lock lock(mutex);
codeThatRequiresProtection();
} // mutex is unlocked here
codeThatDoesntCareAboutTheMutex();
}

Having a mutex locked longer than required is a bad practice which can lead to bad performances. Don't forget that when a mutex is locked, other threads may be waiting doing nothing until it is released.

+
See also
sf::Mutex
+ +

Definition at line 43 of file Lock.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Lock()

+ +
+
+ + + + + +
+ + + + + + + + +
sf::Lock::Lock (Mutexmutex)
+
+explicit
+
+ +

Construct the lock with a target mutex.

+

The mutex passed to sf::Lock is automatically locked.

+
Parameters
+ + +
mutexMutex to lock
+
+
+ +
+
+ +

◆ ~Lock()

+ +
+
+ + + + + + + +
sf::Lock::~Lock ()
+
+ +

Destructor.

+

The destructor of sf::Lock automatically unlocks its mutex.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Lock.png new file mode 100644 index 0000000000000000000000000000000000000000..5878b109d1658b86136d217a0f69ac5e511b3610 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(UXYdeR~`!vCVgCQpyI+KMd?l$um5GbX6KT=!4*WX|pr`&5@+UgkW> zZ;PG&U9F(19WB|(`wYFk(%Vhi&rQp|Xs9K%{P)=n&%&tNf%cMPD05)1x=FDyDA9Nmvt>=JR)Qxr^Kj=b(LSdH=n&dun^_ zTKem~Mc!JMUfPM;ZZZB`r^OYr_2xVKyGPG^zW2PuD|&UxlI_35R&xImTgfl=UusfG zw7nOXA`3rb%^LBB?mHgqr;DHJHEEm^P^ZG6|2NJ}S-s)Eqq2I#^Xw-qA8LB%Fw9#& zQTV`T)1q5^#>V1_417{54ZEupGGEQjWph}{?YM5zr0el2XK$XdZ`XQ}71ef=^?^(6 zB_Wm8=)aqP6u!{^!S!-QRjQh1YJ+p^ntA*yZ?z_0n!f6~;#E0@wRS7-Ng3{&e*4~Q qR;l;44ZA@`{|cNmb7uQLhF8->7grT6{Kde)z~JfX=d#Wzp$P!_blHLc literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream-members.html new file mode 100644 index 0000000..4db9ae2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream-members.html @@ -0,0 +1,68 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::MemoryInputStream Member List
+
+
+ +

This is the complete list of members for sf::MemoryInputStream, including all inherited members.

+ + + + + + + + +
getSize()sf::MemoryInputStreamvirtual
MemoryInputStream()sf::MemoryInputStream
open(const void *data, std::size_t sizeInBytes)sf::MemoryInputStream
read(void *data, Int64 size)sf::MemoryInputStreamvirtual
seek(Int64 position)sf::MemoryInputStreamvirtual
tell()sf::MemoryInputStreamvirtual
~InputStream()sf::InputStreaminlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.html new file mode 100644 index 0000000..6ee4254 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.html @@ -0,0 +1,313 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::MemoryInputStream Class Reference
+
+
+ +

Implementation of input stream based on a memory chunk. + More...

+ +

#include <MemoryInputStream.hpp>

+
+Inheritance diagram for sf::MemoryInputStream:
+
+
+ + +sf::InputStream + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MemoryInputStream ()
 Default constructor. More...
 
void open (const void *data, std::size_t sizeInBytes)
 Open the stream from its data. More...
 
virtual Int64 read (void *data, Int64 size)
 Read data from the stream. More...
 
virtual Int64 seek (Int64 position)
 Change the current reading position. More...
 
virtual Int64 tell ()
 Get the current reading position in the stream. More...
 
virtual Int64 getSize ()
 Return the size of the stream. More...
 
+

Detailed Description

+

Implementation of input stream based on a memory chunk.

+

This class is a specialization of InputStream that reads from data in memory.

+

It wraps a memory chunk in the common InputStream interface and therefore allows to use generic classes or functions that accept such a stream, with content already loaded in memory.

+

In addition to the virtual functions inherited from InputStream, MemoryInputStream adds a function to specify the pointer and size of the data in memory.

+

SFML resource classes can usually be loaded directly from memory, so this class shouldn't be useful to you unless you create your own algorithms that operate on an InputStream.

+

Usage example:

void process(InputStream& stream);
stream.open(thePtr, theSize);
process(stream);

InputStream, FileInputStream

+ +

Definition at line 43 of file MemoryInputStream.hpp.

+

Constructor & Destructor Documentation

+ +

◆ MemoryInputStream()

+ +
+
+ + + + + + + +
sf::MemoryInputStream::MemoryInputStream ()
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::MemoryInputStream::getSize ()
+
+virtual
+
+ +

Return the size of the stream.

+
Returns
The total number of bytes available in the stream, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ open()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::MemoryInputStream::open (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Open the stream from its data.

+
Parameters
+ + + +
dataPointer to the data in memory
sizeInBytesSize of the data, in bytes
+
+
+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Int64 sf::MemoryInputStream::read (void * data,
Int64 size 
)
+
+virtual
+
+ +

Read data from the stream.

+

After reading, the stream's reading position must be advanced by the amount of bytes read.

+
Parameters
+ + + +
dataBuffer where to copy the read data
sizeDesired number of bytes to read
+
+
+
Returns
The number of bytes actually read, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ seek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Int64 sf::MemoryInputStream::seek (Int64 position)
+
+virtual
+
+ +

Change the current reading position.

+
Parameters
+ + +
positionThe position to seek to, from the beginning
+
+
+
Returns
The position actually sought to, or -1 on error
+ +

Implements sf::InputStream.

+ +
+
+ +

◆ tell()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::MemoryInputStream::tell ()
+
+virtual
+
+ +

Get the current reading position in the stream.

+
Returns
The current position, or -1 on error.
+ +

Implements sf::InputStream.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1MemoryInputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..b51c5d2c00562212e7f780ae77d63eebb3fb27bd GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0y~yVCZ3BU*=4G$$uysaWQU`c$Y^lGwEjOCg%rlC4`a~7(=@V7D+l>^LuzMQa zxZnQ$`J!%>*v~%8j_jY%>HAX8)BaglTKt=hkBnaKWUQ3`cHBJkz(sX_@86~GE7gl# zEYfY)e+%38IK;2N)Vn6QMfK!^MxXi1@+MiCUyT!;)#`C+ihE|2PVoNDuQ9KFX&c4% zaL?S;a62|IV5dsvq0h4HNEGE@$bJA(eDU-iZ7b6)wShEdp>=4 z-p`YfpK5(+Q=6dgg}7zDmo+X+UhkQFW#`Iot1ht0UcPc7W%A?cvmAC>O_ZKl7NYgS zEF=Da@6@YC$E-G0#+p4_tM{NRoMTFMkg@Oc-6p+8OK-;< + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Mouse Member List
+
+
+ +

This is the complete list of members for sf::Mouse, including all inherited members.

+ + + + + + + + + + + + + + + + +
Button enum namesf::Mouse
ButtonCount enum valuesf::Mouse
getPosition()sf::Mousestatic
getPosition(const Window &relativeTo)sf::Mousestatic
HorizontalWheel enum valuesf::Mouse
isButtonPressed(Button button)sf::Mousestatic
Left enum valuesf::Mouse
Middle enum valuesf::Mouse
Right enum valuesf::Mouse
setPosition(const Vector2i &position)sf::Mousestatic
setPosition(const Vector2i &position, const Window &relativeTo)sf::Mousestatic
VerticalWheel enum valuesf::Mouse
Wheel enum namesf::Mouse
XButton1 enum valuesf::Mouse
XButton2 enum valuesf::Mouse
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mouse.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mouse.html new file mode 100644 index 0000000..c6302b7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mouse.html @@ -0,0 +1,357 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Give access to the real-time state of the mouse. + More...

+ +

#include <Mouse.hpp>

+ + + + + + + + +

+Public Types

enum  Button {
+  Left, +Right, +Middle, +XButton1, +
+  XButton2, +ButtonCount +
+ }
 Mouse buttons. More...
 
enum  Wheel { VerticalWheel, +HorizontalWheel + }
 Mouse wheels. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool isButtonPressed (Button button)
 Check if a mouse button is pressed. More...
 
static Vector2i getPosition ()
 Get the current position of the mouse in desktop coordinates. More...
 
static Vector2i getPosition (const Window &relativeTo)
 Get the current position of the mouse in window coordinates. More...
 
static void setPosition (const Vector2i &position)
 Set the current position of the mouse in desktop coordinates. More...
 
static void setPosition (const Vector2i &position, const Window &relativeTo)
 Set the current position of the mouse in window coordinates. More...
 
+

Detailed Description

+

Give access to the real-time state of the mouse.

+

sf::Mouse provides an interface to the state of the mouse.

+

It only contains static functions (a single mouse is assumed), so it's not meant to be instantiated.

+

This class allows users to query the mouse state at any time and directly, without having to deal with a window and its events. Compared to the MouseMoved, MouseButtonPressed and MouseButtonReleased events, sf::Mouse can retrieve the state of the cursor and the buttons at any time (you don't need to store and update a boolean on your side in order to know if a button is pressed or released), and you always get the real state of the mouse, even if it is moved, pressed or released when your window is out of focus and no event is triggered.

+

The setPosition and getPosition functions can be used to change or retrieve the current position of the mouse pointer. There are two versions: one that operates in global coordinates (relative to the desktop) and one that operates in window coordinates (relative to a specific window).

+

Usage example:

{
// left click...
}
// get global mouse position
// set mouse position relative to a window
See also
sf::Joystick, sf::Keyboard, sf::Touch
+ +

Definition at line 43 of file Mouse.hpp.

+

Member Enumeration Documentation

+ +

◆ Button

+ +
+
+ + + + +
enum sf::Mouse::Button
+
+ +

Mouse buttons.

+ + + + + + + +
Enumerator
Left 

The left mouse button.

+
Right 

The right mouse button.

+
Middle 

The middle (wheel) mouse button.

+
XButton1 

The first extra mouse button.

+
XButton2 

The second extra mouse button.

+
ButtonCount 

Keep last – the total number of mouse buttons.

+
+ +

Definition at line 51 of file Mouse.hpp.

+ +
+
+ +

◆ Wheel

+ +
+
+ + + + +
enum sf::Mouse::Wheel
+
+ +

Mouse wheels.

+ + + +
Enumerator
VerticalWheel 

The vertical mouse wheel.

+
HorizontalWheel 

The horizontal mouse wheel.

+
+ +

Definition at line 66 of file Mouse.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ getPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
static Vector2i sf::Mouse::getPosition ()
+
+static
+
+ +

Get the current position of the mouse in desktop coordinates.

+

This function returns the global position of the mouse cursor on the desktop.

+
Returns
Current position of the mouse
+ +
+
+ +

◆ getPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector2i sf::Mouse::getPosition (const WindowrelativeTo)
+
+static
+
+ +

Get the current position of the mouse in window coordinates.

+

This function returns the current position of the mouse cursor, relative to the given window.

+
Parameters
+ + +
relativeToReference window
+
+
+
Returns
Current position of the mouse
+ +
+
+ +

◆ isButtonPressed()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Mouse::isButtonPressed (Button button)
+
+static
+
+ +

Check if a mouse button is pressed.

+
Parameters
+ + +
buttonButton to check
+
+
+
Returns
True if the button is pressed, false otherwise
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Mouse::setPosition (const Vector2iposition)
+
+static
+
+ +

Set the current position of the mouse in desktop coordinates.

+

This function sets the global position of the mouse cursor on the desktop.

+
Parameters
+ + +
positionNew position of the mouse
+
+
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sf::Mouse::setPosition (const Vector2iposition,
const WindowrelativeTo 
)
+
+static
+
+ +

Set the current position of the mouse in window coordinates.

+

This function sets the current position of the mouse cursor, relative to the given window.

+
Parameters
+ + + +
positionNew position of the mouse
relativeToReference window
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music-members.html new file mode 100644 index 0000000..86c036f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music-members.html @@ -0,0 +1,109 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Music Member List
+
+
+ +

This is the complete list of members for sf::Music, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getAttenuation() constsf::SoundSource
getChannelCount() constsf::SoundStream
getDuration() constsf::Music
getLoop() constsf::SoundStream
getLoopPoints() constsf::Music
getMinDistance() constsf::SoundSource
getPitch() constsf::SoundSource
getPlayingOffset() constsf::SoundStream
getPosition() constsf::SoundSource
getSampleRate() constsf::SoundStream
getStatus() constsf::SoundStreamvirtual
getVolume() constsf::SoundSource
sf::SoundStream::initialize(unsigned int channelCount, unsigned int sampleRate)sf::SoundStreamprotected
isRelativeToListener() constsf::SoundSource
m_sourcesf::SoundSourceprotected
Music()sf::Music
NoLoop enum valuesf::SoundStreamprotected
onGetData(Chunk &data)sf::Musicprotectedvirtual
onLoop()sf::Musicprotectedvirtual
onSeek(Time timeOffset)sf::Musicprotectedvirtual
openFromFile(const std::string &filename)sf::Music
openFromMemory(const void *data, std::size_t sizeInBytes)sf::Music
openFromStream(InputStream &stream)sf::Music
operator=(const SoundSource &right)sf::SoundSource
pause()sf::SoundStreamvirtual
Paused enum valuesf::SoundSource
play()sf::SoundStreamvirtual
Playing enum valuesf::SoundSource
setAttenuation(float attenuation)sf::SoundSource
setLoop(bool loop)sf::SoundStream
setLoopPoints(TimeSpan timePoints)sf::Music
setMinDistance(float distance)sf::SoundSource
setPitch(float pitch)sf::SoundSource
setPlayingOffset(Time timeOffset)sf::SoundStream
setPosition(float x, float y, float z)sf::SoundSource
setPosition(const Vector3f &position)sf::SoundSource
setRelativeToListener(bool relative)sf::SoundSource
setVolume(float volume)sf::SoundSource
SoundSource(const SoundSource &copy)sf::SoundSource
SoundSource()sf::SoundSourceprotected
SoundStream()sf::SoundStreamprotected
Status enum namesf::SoundSource
stop()sf::SoundStreamvirtual
Stopped enum valuesf::SoundSource
TimeSpan typedef (defined in sf::Music)sf::Music
~Music()sf::Music
~SoundSource()sf::SoundSourcevirtual
~SoundStream()sf::SoundStreamvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.html new file mode 100644 index 0000000..9d934bd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.html @@ -0,0 +1,1445 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Streamed music played from an audio file. + More...

+ +

#include <Music.hpp>

+
+Inheritance diagram for sf::Music:
+
+
+ + +sf::SoundStream +sf::SoundSource +sf::AlResource + +
+ + + + + +

+Classes

struct  Span
 Structure defining a time range using the template type. More...
 
+ + + + + + +

+Public Types

+typedef Span< TimeTimeSpan
 
enum  Status { Stopped, +Paused, +Playing + }
 Enumeration of the sound source states. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Music ()
 Default constructor. More...
 
 ~Music ()
 Destructor. More...
 
bool openFromFile (const std::string &filename)
 Open a music from an audio file. More...
 
bool openFromMemory (const void *data, std::size_t sizeInBytes)
 Open a music from an audio file in memory. More...
 
bool openFromStream (InputStream &stream)
 Open a music from an audio file in a custom stream. More...
 
Time getDuration () const
 Get the total duration of the music. More...
 
TimeSpan getLoopPoints () const
 Get the positions of the of the sound's looping sequence. More...
 
void setLoopPoints (TimeSpan timePoints)
 Sets the beginning and end of the sound's looping sequence using sf::Time. More...
 
void play ()
 Start or resume playing the audio stream. More...
 
void pause ()
 Pause the audio stream. More...
 
void stop ()
 Stop playing the audio stream. More...
 
unsigned int getChannelCount () const
 Return the number of channels of the stream. More...
 
unsigned int getSampleRate () const
 Get the stream sample rate of the stream. More...
 
Status getStatus () const
 Get the current status of the stream (stopped, paused, playing) More...
 
void setPlayingOffset (Time timeOffset)
 Change the current playing position of the stream. More...
 
Time getPlayingOffset () const
 Get the current playing position of the stream. More...
 
void setLoop (bool loop)
 Set whether or not the stream should loop after reaching the end. More...
 
bool getLoop () const
 Tell whether or not the stream is in loop mode. More...
 
void setPitch (float pitch)
 Set the pitch of the sound. More...
 
void setVolume (float volume)
 Set the volume of the sound. More...
 
void setPosition (float x, float y, float z)
 Set the 3D position of the sound in the audio scene. More...
 
void setPosition (const Vector3f &position)
 Set the 3D position of the sound in the audio scene. More...
 
void setRelativeToListener (bool relative)
 Make the sound's position relative to the listener or absolute. More...
 
void setMinDistance (float distance)
 Set the minimum distance of the sound. More...
 
void setAttenuation (float attenuation)
 Set the attenuation factor of the sound. More...
 
float getPitch () const
 Get the pitch of the sound. More...
 
float getVolume () const
 Get the volume of the sound. More...
 
Vector3f getPosition () const
 Get the 3D position of the sound in the audio scene. More...
 
bool isRelativeToListener () const
 Tell whether the sound's position is relative to the listener or is absolute. More...
 
float getMinDistance () const
 Get the minimum distance of the sound. More...
 
float getAttenuation () const
 Get the attenuation factor of the sound. More...
 
+ + + +

+Protected Types

enum  { NoLoop = -1 + }
 
+ + + + + + + + + + + + + +

+Protected Member Functions

virtual bool onGetData (Chunk &data)
 Request a new chunk of audio samples from the stream source. More...
 
virtual void onSeek (Time timeOffset)
 Change the current playing position in the stream source. More...
 
virtual Int64 onLoop ()
 Change the current playing position in the stream source to the loop offset. More...
 
void initialize (unsigned int channelCount, unsigned int sampleRate)
 Define the audio stream parameters. More...
 
+ + + + +

+Protected Attributes

unsigned int m_source
 OpenAL source identifier. More...
 
+

Detailed Description

+

Streamed music played from an audio file.

+

Musics are sounds that are streamed rather than completely loaded in memory.

+

This is especially useful for compressed musics that usually take hundreds of MB when they are uncompressed: by streaming it instead of loading it entirely, you avoid saturating the memory and have almost no loading delay. This implies that the underlying resource (file, stream or memory buffer) must remain valid for the lifetime of the sf::Music object.

+

Apart from that, a sf::Music has almost the same features as the sf::SoundBuffer / sf::Sound pair: you can play/pause/stop it, request its parameters (channels, sample rate), change the way it is played (pitch, volume, 3D position, ...), etc.

+

As a sound stream, a music is played in its own thread in order not to block the rest of the program. This means that you can leave the music alone after calling play(), it will manage itself very well.

+

Usage example:

// Declare a new music
sf::Music music;
// Open it from an audio file
if (!music.openFromFile("music.ogg"))
{
// error...
}
// Change some parameters
music.setPosition(0, 1, 10); // change its 3D position
music.setPitch(2); // increase the pitch
music.setVolume(50); // reduce the volume
music.setLoop(true); // make it loop
// Play it
music.play();
See also
sf::Sound, sf::SoundStream
+ +

Definition at line 48 of file Music.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + + +
+ + + + +
anonymous enum
+
+protectedinherited
+
+ + +
Enumerator
NoLoop 

"Invalid" endSeeks value, telling us to continue uninterrupted

+
+ +

Definition at line 183 of file SoundStream.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::SoundSource::Status
+
+inherited
+
+ +

Enumeration of the sound source states.

+ + + + +
Enumerator
Stopped 

Sound is not playing.

+
Paused 

Sound is paused.

+
Playing 

Sound is playing.

+
+ +

Definition at line 50 of file SoundSource.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Music()

+ +
+
+ + + + + + + +
sf::Music::Music ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~Music()

+ +
+
+ + + + + + + +
sf::Music::~Music ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getAttenuation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getAttenuation () const
+
+inherited
+
+ +

Get the attenuation factor of the sound.

+
Returns
Attenuation factor of the sound
+
See also
setAttenuation, getMinDistance
+ +
+
+ +

◆ getChannelCount()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int sf::SoundStream::getChannelCount () const
+
+inherited
+
+ +

Return the number of channels of the stream.

+

1 channel means a mono sound, 2 means stereo, etc.

+
Returns
Number of channels
+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + + + +
Time sf::Music::getDuration () const
+
+ +

Get the total duration of the music.

+
Returns
Music duration
+ +
+
+ +

◆ getLoop()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::SoundStream::getLoop () const
+
+inherited
+
+ +

Tell whether or not the stream is in loop mode.

+
Returns
True if the stream is looping, false otherwise
+
See also
setLoop
+ +
+
+ +

◆ getLoopPoints()

+ +
+
+ + + + + + + +
TimeSpan sf::Music::getLoopPoints () const
+
+ +

Get the positions of the of the sound's looping sequence.

+
Returns
Loop Time position class.
+
Warning
Since setLoopPoints() performs some adjustments on the provided values and rounds them to internal samples, a call to getLoopPoints() is not guaranteed to return the same times passed into a previous call to setLoopPoints(). However, it is guaranteed to return times that will map to the valid internal samples of this Music if they are later passed to setLoopPoints().
+
See also
setLoopPoints
+ +
+
+ +

◆ getMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getMinDistance () const
+
+inherited
+
+ +

Get the minimum distance of the sound.

+
Returns
Minimum distance of the sound
+
See also
setMinDistance, getAttenuation
+ +
+
+ +

◆ getPitch()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getPitch () const
+
+inherited
+
+ +

Get the pitch of the sound.

+
Returns
Pitch of the sound
+
See also
setPitch
+ +
+
+ +

◆ getPlayingOffset()

+ +
+
+ + + + + +
+ + + + + + + +
Time sf::SoundStream::getPlayingOffset () const
+
+inherited
+
+ +

Get the current playing position of the stream.

+
Returns
Current playing position, from the beginning of the stream
+
See also
setPlayingOffset
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3f sf::SoundSource::getPosition () const
+
+inherited
+
+ +

Get the 3D position of the sound in the audio scene.

+
Returns
Position of the sound
+
See also
setPosition
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int sf::SoundStream::getSampleRate () const
+
+inherited
+
+ +

Get the stream sample rate of the stream.

+

The sample rate is the number of audio samples played per second. The higher, the better the quality.

+
Returns
Sample rate, in number of samples per second
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status sf::SoundStream::getStatus () const
+
+virtualinherited
+
+ +

Get the current status of the stream (stopped, paused, playing)

+
Returns
Current status
+ +

Reimplemented from sf::SoundSource.

+ +
+
+ +

◆ getVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getVolume () const
+
+inherited
+
+ +

Get the volume of the sound.

+
Returns
Volume of the sound, in the range [0, 100]
+
See also
setVolume
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::SoundStream::initialize (unsigned int channelCount,
unsigned int sampleRate 
)
+
+protectedinherited
+
+ +

Define the audio stream parameters.

+

This function must be called by derived classes as soon as they know the audio settings of the stream to play. Any attempt to manipulate the stream (play(), ...) before calling this function will fail. It can be called multiple times if the settings of the audio stream change, but only when the stream is stopped.

+
Parameters
+ + + +
channelCountNumber of channels of the stream
sampleRateSample rate, in samples per second
+
+
+ +
+
+ +

◆ isRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::SoundSource::isRelativeToListener () const
+
+inherited
+
+ +

Tell whether the sound's position is relative to the listener or is absolute.

+
Returns
True if the position is relative, false if it's absolute
+
See also
setRelativeToListener
+ +
+
+ +

◆ onGetData()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool sf::Music::onGetData (Chunkdata)
+
+protectedvirtual
+
+ +

Request a new chunk of audio samples from the stream source.

+

This function fills the chunk from the next samples to read from the audio file.

+
Parameters
+ + +
dataChunk of data to fill
+
+
+
Returns
True to continue playback, false to stop
+ +

Implements sf::SoundStream.

+ +
+
+ +

◆ onLoop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::Music::onLoop ()
+
+protectedvirtual
+
+ +

Change the current playing position in the stream source to the loop offset.

+

This is called by the underlying SoundStream whenever it needs us to reset the seek position for a loop. We then determine whether we are looping on a loop point or the end-of-file, perform the seek, and return the new position.

+
Returns
The seek position after looping (or -1 if there's no loop)
+ +

Reimplemented from sf::SoundStream.

+ +
+
+ +

◆ onSeek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void sf::Music::onSeek (Time timeOffset)
+
+protectedvirtual
+
+ +

Change the current playing position in the stream source.

+
Parameters
+ + +
timeOffsetNew playing position, from the beginning of the music
+
+
+ +

Implements sf::SoundStream.

+ +
+
+ +

◆ openFromFile()

+ +
+
+ + + + + + + + +
bool sf::Music::openFromFile (const std::string & filename)
+
+ +

Open a music from an audio file.

+

This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

+
Warning
Since the music is not loaded at once but rather streamed continuously, the file must remain accessible until the sf::Music object loads a new music or is destroyed.
+
Parameters
+ + +
filenamePath of the music file to open
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
openFromMemory, openFromStream
+ +
+
+ +

◆ openFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Music::openFromMemory (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Open a music from an audio file in memory.

+

This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

+
Warning
Since the music is not loaded at once but rather streamed continuously, the data buffer must remain accessible until the sf::Music object loads a new music or is destroyed. That is, you can't deallocate the buffer right after calling this function.
+
Parameters
+ + + +
dataPointer to the file data in memory
sizeInBytesSize of the data to load, in bytes
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
openFromFile, openFromStream
+ +
+
+ +

◆ openFromStream()

+ +
+
+ + + + + + + + +
bool sf::Music::openFromStream (InputStreamstream)
+
+ +

Open a music from an audio file in a custom stream.

+

This function doesn't start playing the music (call play() to do so). See the documentation of sf::InputSoundFile for the list of supported formats.

+
Warning
Since the music is not loaded at once but rather streamed continuously, the stream must remain accessible until the sf::Music object loads a new music or is destroyed.
+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
openFromFile, openFromMemory
+ +
+
+ +

◆ pause()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::pause ()
+
+virtualinherited
+
+ +

Pause the audio stream.

+

This function pauses the stream if it was playing, otherwise (stream already paused or stopped) it has no effect.

+
See also
play, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ play()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::play ()
+
+virtualinherited
+
+ +

Start or resume playing the audio stream.

+

This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing. This function uses its own thread so that it doesn't block the rest of the program while the stream is played.

+
See also
pause, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ setAttenuation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setAttenuation (float attenuation)
+
+inherited
+
+ +

Set the attenuation factor of the sound.

+

The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

+
Parameters
+ + +
attenuationNew attenuation factor of the sound
+
+
+
See also
getAttenuation, setMinDistance
+ +
+
+ +

◆ setLoop()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundStream::setLoop (bool loop)
+
+inherited
+
+ +

Set whether or not the stream should loop after reaching the end.

+

If set, the stream will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for streams is false.

+
Parameters
+ + +
loopTrue to play in loop, false to play once
+
+
+
See also
getLoop
+ +
+
+ +

◆ setLoopPoints()

+ +
+
+ + + + + + + + +
void sf::Music::setLoopPoints (TimeSpan timePoints)
+
+ +

Sets the beginning and end of the sound's looping sequence using sf::Time.

+

Loop points allow one to specify a pair of positions such that, when the music is enabled for looping, it will seamlessly seek to the beginning whenever it encounters the end. Valid ranges for timePoints.offset and timePoints.length are [0, Dur) and (0, Dur-offset] respectively, where Dur is the value returned by getDuration(). Note that the EOF "loop point" from the end to the beginning of the stream is still honored, in case the caller seeks to a point after the end of the loop range. This function can be safely called at any point after a stream is opened, and will be applied to a playing sound without affecting the current playing offset.

+
Warning
Setting the loop points while the stream's status is Paused will set its status to Stopped. The playing offset will be unaffected.
+
Parameters
+ + +
timePointsThe definition of the loop. Can be any time points within the sound's length
+
+
+
See also
getLoopPoints
+ +
+
+ +

◆ setMinDistance()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setMinDistance (float distance)
+
+inherited
+
+ +

Set the minimum distance of the sound.

+

The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

+
Parameters
+ + +
distanceNew minimum distance of the sound
+
+
+
See also
getMinDistance, setAttenuation
+ +
+
+ +

◆ setPitch()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPitch (float pitch)
+
+inherited
+
+ +

Set the pitch of the sound.

+

The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

+
Parameters
+ + +
pitchNew pitch to apply to the sound
+
+
+
See also
getPitch
+ +
+
+ +

◆ setPlayingOffset()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundStream::setPlayingOffset (Time timeOffset)
+
+inherited
+
+ +

Change the current playing position of the stream.

+

The playing position can be changed when the stream is either paused or playing. Changing the playing position when the stream is stopped has no effect, since playing the stream would reset its position.

+
Parameters
+ + +
timeOffsetNew playing position, from the beginning of the stream
+
+
+
See also
getPlayingOffset
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::SoundSource::setPosition (float x,
float y,
float z 
)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + + + +
xX coordinate of the position of the sound in the scene
yY coordinate of the position of the sound in the scene
zZ coordinate of the position of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPosition (const Vector3fposition)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + +
positionPosition of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setRelativeToListener (bool relative)
+
+inherited
+
+ +

Make the sound's position relative to the listener or absolute.

+

Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

+
Parameters
+ + +
relativeTrue to set the position relative, false to set it absolute
+
+
+
See also
isRelativeToListener
+ +
+
+ +

◆ setVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setVolume (float volume)
+
+inherited
+
+ +

Set the volume of the sound.

+

The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

+
Parameters
+ + +
volumeVolume of the sound
+
+
+
See also
getVolume
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::stop ()
+
+virtualinherited
+
+ +

Stop playing the audio stream.

+

This function stops the stream if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

+
See also
play, pause
+ +

Implements sf::SoundSource.

+ +
+
+

Member Data Documentation

+ +

◆ m_source

+ +
+
+ + + + + +
+ + + + +
unsigned int sf::SoundSource::m_source
+
+protectedinherited
+
+ +

OpenAL source identifier.

+ +

Definition at line 309 of file SoundSource.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Music.png new file mode 100644 index 0000000000000000000000000000000000000000..d1366905d41479b4b20ec6d416ddc51e83a62db3 GIT binary patch literal 919 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(U^u|R%)r24;J;Uofq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}tmf(B7*fIbcJ9MTj}!#h zX7}sf|36XRkdwz_QPK9z_pU``sv2A{==p!rGF|+{q$dtDR5GW@n=MVbb-X;vev-+_ z6DildZ{N;()vofA*Xr`F*J-brFWc4C+~3VrS~tJ(+7{g%=d-70^r)`muYF@>zLoLX zmiv=M=jWU{x93z`@~YFh9c!TW@ANojF2GYFR%D^ZThA!-doi@@4JGWVBmR4XWgr~8EG({!c} zkG{{L1x&ed#&7-6+Nly z+QD=~@nu%;@9m08ldP69He0*fIC@LEwciH2=p&zMXUHX8Td*l4cH@j~ov8;Wx!>NL zzkJIvL-z@9U-{H(-8#%ucg(Qt=fsugD))4AUtV#2R@T`YT^nZVZ?8?2I{qcyYX5TM z;MxBkzcoB|Yu)B>twk&6MdkipI{(-kX^XYCp1;Blsd#Q~@tl-aX!>-{W_E`BV&;N_ zXG?a&{q$?dUO2-`f?HBx#*=&t&ax{2~`}_aei)PO)YT@6k?s?x0JeaK3y!zK#4A=K0 ztrFb5X$E85)6UG;;=kH9v#wp6duzwH_}SY;zi)ka{@OdMv(^V@EMI0;tvorGVa^Aq zZ&JY*zuf#C9lZU-ft1bc1*cYj580flr_osZ@7X+`)UBGg+x{iKW&EQJ4e3JDrBf!c b*E2*PwqLwj|1_lOCS3j3^P6 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Mutex Member List
+
+
+ +

This is the complete list of members for sf::Mutex, including all inherited members.

+ + + + + + + +
lock()sf::Mutex
Mutex()sf::Mutex
NonCopyable()sf::NonCopyableinlineprivate
unlock()sf::Mutex
~Mutex()sf::Mutex
~NonCopyable()sf::NonCopyableinlineprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.html new file mode 100644 index 0000000..84c5e3d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.html @@ -0,0 +1,186 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Mutex Class Reference
+
+
+ +

Blocks concurrent access to shared resources from multiple threads. + More...

+ +

#include <Mutex.hpp>

+
+Inheritance diagram for sf::Mutex:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 Mutex ()
 Default constructor. More...
 
 ~Mutex ()
 Destructor. More...
 
void lock ()
 Lock the mutex. More...
 
void unlock ()
 Unlock the mutex. More...
 
+

Detailed Description

+

Blocks concurrent access to shared resources from multiple threads.

+

Mutex stands for "MUTual EXclusion".

+

A mutex is a synchronization object, used when multiple threads are involved.

+

When you want to protect a part of the code from being accessed simultaneously by multiple threads, you typically use a mutex. When a thread is locked by a mutex, any other thread trying to lock it will be blocked until the mutex is released by the thread that locked it. This way, you can allow only one thread at a time to access a critical region of your code.

+

Usage example:

Database database; // this is a critical resource that needs some protection
sf::Mutex mutex;
void thread1()
{
mutex.lock(); // this call will block the thread if the mutex is already locked by thread2
database.write(...);
mutex.unlock(); // if thread2 was waiting, it will now be unblocked
}
void thread2()
{
mutex.lock(); // this call will block the thread if the mutex is already locked by thread1
database.write(...);
mutex.unlock(); // if thread1 was waiting, it will now be unblocked
}

Be very careful with mutexes. A bad usage can lead to bad problems, like deadlocks (two threads are waiting for each other and the application is globally stuck).

+

To make the usage of mutexes more robust, particularly in environments where exceptions can be thrown, you should use the helper class sf::Lock to lock/unlock mutexes.

+

SFML mutexes are recursive, which means that you can lock a mutex multiple times in the same thread without creating a deadlock. In this case, the first call to lock() behaves as usual, and the following ones have no effect. However, you must call unlock() exactly as many times as you called lock(). If you don't, the mutex won't be released.

+
See also
sf::Lock
+ +

Definition at line 47 of file Mutex.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Mutex()

+ +
+
+ + + + + + + +
sf::Mutex::Mutex ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~Mutex()

+ +
+
+ + + + + + + +
sf::Mutex::~Mutex ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ lock()

+ +
+
+ + + + + + + +
void sf::Mutex::lock ()
+
+ +

Lock the mutex.

+

If the mutex is already locked in another thread, this call will block the execution until the mutex is released.

+
See also
unlock
+ +
+
+ +

◆ unlock()

+ +
+
+ + + + + + + +
void sf::Mutex::unlock ()
+
+ +

Unlock the mutex.

+
See also
lock
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Mutex.png new file mode 100644 index 0000000000000000000000000000000000000000..6759c64b06430daad72869ad3383e3bac4eaca77 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(Ui&MOTrh5uRmKFBm#hBuJ&Bn!qujG{$ID4e z+V1^c8tHm!cK7bB=jWz+R?19ByZ&s4o&;O#(U-+B9vi2gp1tj6veMZ(UtA19^O8>|vVW+p-0_rMdP!(e65IJn)0o#TEir$>EB=)YW70X>$E4JQxUe8@? z^i?b0*YY#gtPyt*FICRLfhwuvFRq~t*rti~VBq)5K{z3=mgP&4{j5hJgY7Nh` zkFb2G>7DWD>73%&7UmZV9GP~kYM;1lU+1-_ch50ISveckP0v)i?=h?PTzso(<~(11 z_2vziKV4PRl@nWjx`O$Xt2OhDD~c;uow7UmOk}~e&NoxP_DeW(*_-ZH4fVXKmMg&& zVimo7j<0l2;=fJGMc-CU(utl}=KP-V&Qg$FAiPfH`JC4a + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::NonCopyable Member List
+
+
+ +

This is the complete list of members for sf::NonCopyable, including all inherited members.

+ + + +
NonCopyable()sf::NonCopyableinlineprotected
~NonCopyable()sf::NonCopyableinlineprotected
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.html new file mode 100644 index 0000000..85fc6b3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.html @@ -0,0 +1,172 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::NonCopyable Class Reference
+
+
+ +

Utility class that makes any derived class non-copyable. + More...

+ +

#include <NonCopyable.hpp>

+
+Inheritance diagram for sf::NonCopyable:
+
+
+ + +sf::Context +sf::Cursor +sf::FileInputStream +sf::Ftp +sf::GlResource::TransientContextLock +sf::Http +sf::InputSoundFile +sf::Lock +sf::Mutex +sf::OutputSoundFile +sf::RenderTarget +sf::Shader +sf::Socket +sf::Thread +sf::ThreadLocal +sf::Window + +
+ + + + + + + + +

+Protected Member Functions

 NonCopyable ()
 Default constructor. More...
 
 ~NonCopyable ()
 Default destructor. More...
 
+

Detailed Description

+

Utility class that makes any derived class non-copyable.

+

This class makes its instances non-copyable, by explicitly disabling its copy constructor and its assignment operator.

+

To create a non-copyable class, simply inherit from sf::NonCopyable.

+

The type of inheritance (public or private) doesn't matter, the copy constructor and assignment operator are declared private in sf::NonCopyable so they will end up being inaccessible in both cases. Thus you can use a shorter syntax for inheriting from it (see below).

+

Usage example:

class MyNonCopyableClass : sf::NonCopyable
{
...
};

Deciding whether the instances of a class can be copied or not is a very important design choice. You are strongly encouraged to think about it before writing a class, and to use sf::NonCopyable when necessary to prevent many potential future errors when using it. This is also a very important indication to users of your class.

+ +

Definition at line 41 of file NonCopyable.hpp.

+

Constructor & Destructor Documentation

+ +

◆ NonCopyable()

+ +
+
+ + + + + +
+ + + + + + + +
sf::NonCopyable::NonCopyable ()
+
+inlineprotected
+
+ +

Default constructor.

+

Because this class has a copy constructor, the compiler will not automatically generate the default constructor. That's why we must define it explicitly.

+ +

Definition at line 53 of file NonCopyable.hpp.

+ +
+
+ +

◆ ~NonCopyable()

+ +
+
+ + + + + +
+ + + + + + + +
sf::NonCopyable::~NonCopyable ()
+
+inlineprotected
+
+ +

Default destructor.

+

By declaring a protected destructor it's impossible to call delete on a pointer of sf::NonCopyable, thus preventing possible resource leaks.

+ +

Definition at line 63 of file NonCopyable.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1NonCopyable.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c6bddb648e560445e64089e5b4985e98df15b0 GIT binary patch literal 6259 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 literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile-members.html new file mode 100644 index 0000000..932bf5c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::OutputSoundFile Member List
+
+
+ +

This is the complete list of members for sf::OutputSoundFile, including all inherited members.

+ + + + + + + +
NonCopyable()sf::NonCopyableinlineprivate
openFromFile(const std::string &filename, unsigned int sampleRate, unsigned int channelCount)sf::OutputSoundFile
OutputSoundFile()sf::OutputSoundFile
write(const Int16 *samples, Uint64 count)sf::OutputSoundFile
~NonCopyable()sf::NonCopyableinlineprivate
~OutputSoundFile()sf::OutputSoundFile
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.html new file mode 100644 index 0000000..0554f4d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.html @@ -0,0 +1,225 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::OutputSoundFile Class Reference
+
+
+ +

Provide write access to sound files. + More...

+ +

#include <OutputSoundFile.hpp>

+
+Inheritance diagram for sf::OutputSoundFile:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 OutputSoundFile ()
 Default constructor. More...
 
 ~OutputSoundFile ()
 Destructor. More...
 
bool openFromFile (const std::string &filename, unsigned int sampleRate, unsigned int channelCount)
 Open the sound file from the disk for writing. More...
 
void write (const Int16 *samples, Uint64 count)
 Write audio samples to the file. More...
 
+

Detailed Description

+

Provide write access to sound files.

+

This class encodes audio samples to a sound file.

+

It is used internally by higher-level classes such as sf::SoundBuffer, but can also be useful if you want to create audio files from custom data sources, like generated audio samples.

+

Usage example:

// Create a sound file, ogg/vorbis format, 44100 Hz, stereo
if (!file.openFromFile("music.ogg", 44100, 2))
/* error */;
while (...)
{
// Read or generate audio samples from your custom source
std::vector<sf::Int16> samples = ...;
// Write them to the file
file.write(samples.data(), samples.size());
}
See also
sf::SoundFileWriter, sf::InputSoundFile
+ +

Definition at line 44 of file OutputSoundFile.hpp.

+

Constructor & Destructor Documentation

+ +

◆ OutputSoundFile()

+ +
+
+ + + + + + + +
sf::OutputSoundFile::OutputSoundFile ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~OutputSoundFile()

+ +
+
+ + + + + + + +
sf::OutputSoundFile::~OutputSoundFile ()
+
+ +

Destructor.

+

Closes the file if it was still open.

+ +
+
+

Member Function Documentation

+ +

◆ openFromFile()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::OutputSoundFile::openFromFile (const std::string & filename,
unsigned int sampleRate,
unsigned int channelCount 
)
+
+ +

Open the sound file from the disk for writing.

+

The supported audio formats are: WAV, OGG/Vorbis, FLAC.

+
Parameters
+ + + + +
filenamePath of the sound file to write
sampleRateSample rate of the sound
channelCountNumber of channels in the sound
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ write()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::OutputSoundFile::write (const Int16 * samples,
Uint64 count 
)
+
+ +

Write audio samples to the file.

+
Parameters
+ + + +
samplesPointer to the sample array to write
countNumber of samples to write
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1OutputSoundFile.png new file mode 100644 index 0000000000000000000000000000000000000000..19568308ebdaeb76c0328e0e92e4958620026fba GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0y~yV5nkXU z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`@w}&tV@L(#+qt<#hZT5S zq8`%bPaprpO7+{-%Gg+TOjwbJoJvX-l}j@?Si6RQj`~Cja)o z9+$XfKdWb|znJqkW`FH(6&=m~z%S>FSa*I%3*g8*Z#ZF<{^7fK{JN#S@cDVSOniS> zRei~%Qw93l@4U6#rL*d;uXt?Cr*7pJ%jR!f3dD`Skm@I`z*jeRyRH=j&UGmQS4-{O_Acox6;lXZ#8a2G6SX@r&)%|4Z3A z#Qoo?^3vmUoyc zLoz-Kbl5 zsff8E=a0MP+$y}zlvQ$ZlHM*pmkR4d^GQ)fP3N+E7RDP?XBH|?J#h90R<<1h+`I(~pDmhO eoY(b_Vf9hTvnq`9?lCYhFnGH9xvX + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Packet Member List
+
+
+ +

This is the complete list of members for sf::Packet, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
append(const void *data, std::size_t sizeInBytes)sf::Packet
clear()sf::Packet
endOfPacket() constsf::Packet
getData() constsf::Packet
getDataSize() constsf::Packet
onReceive(const void *data, std::size_t size)sf::Packetprotectedvirtual
onSend(std::size_t &size)sf::Packetprotectedvirtual
operator BoolType() constsf::Packet
operator<<(bool data)sf::Packet
operator<<(Int8 data)sf::Packet
operator<<(Uint8 data)sf::Packet
operator<<(Int16 data)sf::Packet
operator<<(Uint16 data)sf::Packet
operator<<(Int32 data)sf::Packet
operator<<(Uint32 data)sf::Packet
operator<<(Int64 data)sf::Packet
operator<<(Uint64 data)sf::Packet
operator<<(float data)sf::Packet
operator<<(double data)sf::Packet
operator<<(const char *data)sf::Packet
operator<<(const std::string &data)sf::Packet
operator<<(const wchar_t *data)sf::Packet
operator<<(const std::wstring &data)sf::Packet
operator<<(const String &data)sf::Packet
operator>>(bool &data)sf::Packet
operator>>(Int8 &data)sf::Packet
operator>>(Uint8 &data)sf::Packet
operator>>(Int16 &data)sf::Packet
operator>>(Uint16 &data)sf::Packet
operator>>(Int32 &data)sf::Packet
operator>>(Uint32 &data)sf::Packet
operator>>(Int64 &data)sf::Packet
operator>>(Uint64 &data)sf::Packet
operator>>(float &data)sf::Packet
operator>>(double &data)sf::Packet
operator>>(char *data)sf::Packet
operator>>(std::string &data)sf::Packet
operator>>(wchar_t *data)sf::Packet
operator>>(std::wstring &data)sf::Packet
operator>>(String &data)sf::Packet
Packet()sf::Packet
TcpSocket (defined in sf::Packet)sf::Packetfriend
UdpSocket (defined in sf::Packet)sf::Packetfriend
~Packet()sf::Packetvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Packet.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Packet.html new file mode 100644 index 0000000..7e5bcb0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Packet.html @@ -0,0 +1,1156 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Utility class to build blocks of data to transfer over the network. + More...

+ +

#include <Packet.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Packet ()
 Default constructor. More...
 
virtual ~Packet ()
 Virtual destructor. More...
 
void append (const void *data, std::size_t sizeInBytes)
 Append data to the end of the packet. More...
 
void clear ()
 Clear the packet. More...
 
const void * getData () const
 Get a pointer to the data contained in the packet. More...
 
std::size_t getDataSize () const
 Get the size of the data contained in the packet. More...
 
bool endOfPacket () const
 Tell if the reading position has reached the end of the packet. More...
 
 operator BoolType () const
 Test the validity of the packet, for reading. More...
 
Packetoperator>> (bool &data)
 Overload of operator >> to read data from the packet. More...
 
Packetoperator>> (Int8 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Uint8 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Int16 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Uint16 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Int32 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Uint32 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Int64 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (Uint64 &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (float &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (double &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (char *data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (std::string &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (wchar_t *data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (std::wstring &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator>> (String &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (bool data)
 Overload of operator << to write data into the packet. More...
 
Packetoperator<< (Int8 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Uint8 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Int16 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Uint16 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Int32 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Uint32 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Int64 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (Uint64 data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (float data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (double data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (const char *data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (const std::string &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (const wchar_t *data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (const std::wstring &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Packetoperator<< (const String &data)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
+ + + + + + + +

+Protected Member Functions

virtual const void * onSend (std::size_t &size)
 Called before the packet is sent over the network. More...
 
virtual void onReceive (const void *data, std::size_t size)
 Called after the packet is received over the network. More...
 
+ + + + + +

+Friends

+class TcpSocket
 
+class UdpSocket
 
+

Detailed Description

+

Utility class to build blocks of data to transfer over the network.

+

Packets provide a safe and easy way to serialize data, in order to send it over the network using sockets (sf::TcpSocket, sf::UdpSocket).

+

Packets solve 2 fundamental problems that arise when transferring data over the network:

    +
  • data is interpreted correctly according to the endianness
  • +
  • the bounds of the packet are preserved (one send == one receive)
  • +
+

The sf::Packet class provides both input and output modes. It is designed to follow the behavior of standard C++ streams, using operators >> and << to extract and insert data.

+

It is recommended to use only fixed-size types (like sf::Int32, etc.), to avoid possible differences between the sender and the receiver. Indeed, the native C++ types may have different sizes on two platforms and your data may be corrupted if that happens.

+

Usage example:

sf::Uint32 x = 24;
std::string s = "hello";
double d = 5.89;
// Group the variables to send into a packet
sf::Packet packet;
packet << x << s << d;
// Send it over the network (socket is a valid sf::TcpSocket)
socket.send(packet);
-----------------------------------------------------------------
// Receive the packet at the other end
sf::Packet packet;
socket.receive(packet);
// Extract the variables contained in the packet
sf::Uint32 x;
std::string s;
double d;
if (packet >> x >> s >> d)
{
// Data extracted successfully...
}

Packets have built-in operator >> and << overloads for standard types:

    +
  • bool
  • +
  • fixed-size integer types (sf::Int8/16/32, sf::Uint8/16/32)
  • +
  • floating point numbers (float, double)
  • +
  • string types (char*, wchar_t*, std::string, std::wstring, sf::String)
  • +
+

Like standard streams, it is also possible to define your own overloads of operators >> and << in order to handle your custom types.

+
struct MyStruct
{
float number;
sf::Int8 integer;
std::string str;
};
sf::Packet& operator <<(sf::Packet& packet, const MyStruct& m)
{
return packet << m.number << m.integer << m.str;
}
sf::Packet& operator >>(sf::Packet& packet, MyStruct& m)
{
return packet >> m.number >> m.integer >> m.str;
}

Packets also provide an extra feature that allows to apply custom transformations to the data before it is sent, and after it is received. This is typically used to handle automatic compression or encryption of the data. This is achieved by inheriting from sf::Packet, and overriding the onSend and onReceive functions.

+

Here is an example:

class ZipPacket : public sf::Packet
{
virtual const void* onSend(std::size_t& size)
{
const void* srcData = getData();
std::size_t srcSize = getDataSize();
return MySuperZipFunction(srcData, srcSize, &size);
}
virtual void onReceive(const void* data, std::size_t size)
{
std::size_t dstSize;
const void* dstData = MySuperUnzipFunction(data, size, &dstSize);
append(dstData, dstSize);
}
};
// Use like regular packets:
ZipPacket packet;
packet << x << s << d;
...
See also
sf::TcpSocket, sf::UdpSocket
+ +

Definition at line 47 of file Packet.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Packet()

+ +
+
+ + + + + + + +
sf::Packet::Packet ()
+
+ +

Default constructor.

+

Creates an empty packet.

+ +
+
+ +

◆ ~Packet()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Packet::~Packet ()
+
+virtual
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ append()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Packet::append (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Append data to the end of the packet.

+
Parameters
+ + + +
dataPointer to the sequence of bytes to append
sizeInBytesNumber of bytes to append
+
+
+
See also
clear
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + +
void sf::Packet::clear ()
+
+ +

Clear the packet.

+

After calling Clear, the packet is empty.

+
See also
append
+ +
+
+ +

◆ endOfPacket()

+ +
+
+ + + + + + + +
bool sf::Packet::endOfPacket () const
+
+ +

Tell if the reading position has reached the end of the packet.

+

This function is useful to know if there is some data left to be read, without actually reading it.

+
Returns
True if all data was read, false otherwise
+
See also
operator bool
+ +
+
+ +

◆ getData()

+ +
+
+ + + + + + + +
const void* sf::Packet::getData () const
+
+ +

Get a pointer to the data contained in the packet.

+

Warning: the returned pointer may become invalid after you append data to the packet, therefore it should never be stored. The return pointer is NULL if the packet is empty.

+
Returns
Pointer to the data
+
See also
getDataSize
+ +
+
+ +

◆ getDataSize()

+ +
+
+ + + + + + + +
std::size_t sf::Packet::getDataSize () const
+
+ +

Get the size of the data contained in the packet.

+

This function returns the number of bytes pointed to by what getData returns.

+
Returns
Data size, in bytes
+
See also
getData
+ +
+
+ +

◆ onReceive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void sf::Packet::onReceive (const void * data,
std::size_t size 
)
+
+protectedvirtual
+
+ +

Called after the packet is received over the network.

+

This function can be defined by derived classes to transform the data after it is received; this can be used for decompression, decryption, etc. The function receives a pointer to the received data, and must fill the packet with the transformed bytes. The default implementation fills the packet directly without transforming the data.

+
Parameters
+ + + +
dataPointer to the received bytes
sizeNumber of bytes
+
+
+
See also
onSend
+ +
+
+ +

◆ onSend()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const void* sf::Packet::onSend (std::size_t & size)
+
+protectedvirtual
+
+ +

Called before the packet is sent over the network.

+

This function can be defined by derived classes to transform the data before it is sent; this can be used for compression, encryption, etc. The function must return a pointer to the modified data, as well as the number of bytes pointed. The default implementation provides the packet's data without transforming it.

+
Parameters
+ + +
sizeVariable to fill with the size of data to send
+
+
+
Returns
Pointer to the array of bytes to send
+
See also
onReceive
+ +
+
+ +

◆ operator BoolType()

+ +
+
+ + + + + + + +
sf::Packet::operator BoolType () const
+
+ +

Test the validity of the packet, for reading.

+

This operator allows to test the packet as a boolean variable, to check if a reading operation was successful.

+

A packet will be in an invalid state if it has no more data to read.

+

This behavior is the same as standard C++ streams.

+

Usage example:

float x;
packet >> x;
if (packet)
{
// ok, x was extracted successfully
}
// -- or --
float x;
if (packet >> x)
{
// ok, x was extracted successfully
}

Don't focus on the return type, it's equivalent to bool but it disallows unwanted implicit conversions to integer or pointer types.

+
Returns
True if last data extraction from packet was successful
+
See also
endOfPacket
+ +
+
+ +

◆ operator<<() [1/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (bool data)
+
+ +

Overload of operator << to write data into the packet.

+ +
+
+ +

◆ operator<<() [2/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Int8 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [3/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Uint8 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [4/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Int16 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [5/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Uint16 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [6/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Int32 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [7/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Uint32 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [8/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Int64 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [9/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (Uint64 data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [10/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (float data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [11/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (double data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [12/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (const char * data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [13/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (const std::string & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [14/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (const wchar_t * data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [15/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (const std::wstring & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator<<() [16/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator<< (const Stringdata)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [1/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (bool & data)
+
+ +

Overload of operator >> to read data from the packet.

+ +
+
+ +

◆ operator>>() [2/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Int8 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [3/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Uint8 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [4/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Int16 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [5/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Uint16 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [6/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Int32 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [7/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Uint32 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [8/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Int64 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [9/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Uint64 & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [10/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (float & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [11/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (double & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [12/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (char * data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [13/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (std::string & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [14/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (wchar_t * data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [15/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (std::wstring & data)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+ +

◆ operator>>() [16/16]

+ +
+
+ + + + + + + + +
Packet& sf::Packet::operator>> (Stringdata)
+
+ +

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect-members.html new file mode 100644 index 0000000..83af0f2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Rect< T > Member List
+
+
+ +

This is the complete list of members for sf::Rect< T >, including all inherited members.

+ + + + + + + + + + + + + + + +
contains(T x, T y) constsf::Rect< T >
contains(const Vector2< T > &point) constsf::Rect< T >
heightsf::Rect< T >
intersects(const Rect< T > &rectangle) constsf::Rect< T >
intersects(const Rect< T > &rectangle, Rect< T > &intersection) constsf::Rect< T >
leftsf::Rect< T >
operator!=(const Rect< T > &left, const Rect< T > &right)sf::Rect< T >related
operator==(const Rect< T > &left, const Rect< T > &right)sf::Rect< T >related
Rect()sf::Rect< T >
Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight)sf::Rect< T >
Rect(const Vector2< T > &position, const Vector2< T > &size)sf::Rect< T >
Rect(const Rect< U > &rectangle)sf::Rect< T >explicit
topsf::Rect< T >
widthsf::Rect< T >
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect.html new file mode 100644 index 0000000..c24cf19 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Rect.html @@ -0,0 +1,630 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Utility class for manipulating 2D axis aligned rectangles. + More...

+ +

#include <Rect.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Rect ()
 Default constructor. More...
 
 Rect (T rectLeft, T rectTop, T rectWidth, T rectHeight)
 Construct the rectangle from its coordinates. More...
 
 Rect (const Vector2< T > &position, const Vector2< T > &size)
 Construct the rectangle from position and size. More...
 
template<typename U >
 Rect (const Rect< U > &rectangle)
 Construct the rectangle from another type of rectangle. More...
 
bool contains (T x, T y) const
 Check if a point is inside the rectangle's area. More...
 
bool contains (const Vector2< T > &point) const
 Check if a point is inside the rectangle's area. More...
 
bool intersects (const Rect< T > &rectangle) const
 Check the intersection between two rectangles. More...
 
bool intersects (const Rect< T > &rectangle, Rect< T > &intersection) const
 Check the intersection between two rectangles. More...
 
+ + + + + + + + + + + + + +

+Public Attributes

left
 Left coordinate of the rectangle. More...
 
top
 Top coordinate of the rectangle. More...
 
width
 Width of the rectangle. More...
 
height
 Height of the rectangle. More...
 
+ + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
template<typename T >
bool operator== (const Rect< T > &left, const Rect< T > &right)
 Overload of binary operator ==. More...
 
template<typename T >
bool operator!= (const Rect< T > &left, const Rect< T > &right)
 Overload of binary operator !=. More...
 
+

Detailed Description

+

template<typename T>
+class sf::Rect< T >

+ +

Utility class for manipulating 2D axis aligned rectangles.

+

A rectangle is defined by its top-left corner and its size.

+

It is a very simple class defined for convenience, so its member variables (left, top, width and height) are public and can be accessed directly, just like the vector classes (Vector2 and Vector3).

+

To keep things simple, sf::Rect doesn't define functions to emulate the properties that are not directly members (such as right, bottom, center, etc.), it rather only provides intersection functions.

+

sf::Rect uses the usual rules for its boundaries:

    +
  • The left and top edges are included in the rectangle's area
  • +
  • The right (left + width) and bottom (top + height) edges are excluded from the rectangle's area
  • +
+

This means that sf::IntRect(0, 0, 1, 1) and sf::IntRect(1, 1, 1, 1) don't intersect.

+

sf::Rect is a template and may be used with any numeric type, but for simplicity the instantiations used by SFML are typedef'd:

    +
  • sf::Rect<int> is sf::IntRect
  • +
  • sf::Rect<float> is sf::FloatRect
  • +
+

So that you don't have to care about the template syntax.

+

Usage example:

// Define a rectangle, located at (0, 0) with a size of 20x5
sf::IntRect r1(0, 0, 20, 5);
// Define another rectangle, located at (4, 2) with a size of 18x10
sf::Vector2i position(4, 2);
sf::Vector2i size(18, 10);
sf::IntRect r2(position, size);
// Test intersections with the point (3, 1)
bool b1 = r1.contains(3, 1); // true
bool b2 = r2.contains(3, 1); // false
// Test the intersection between r1 and r2
sf::IntRect result;
bool b3 = r1.intersects(r2, result); // true
// result == (4, 2, 16, 3)
+

Definition at line 42 of file Rect.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Rect() [1/4]

+ +
+
+
+template<typename T>
+ + + + + + + +
sf::Rect< T >::Rect ()
+
+ +

Default constructor.

+

Creates an empty rectangle (it is equivalent to calling Rect(0, 0, 0, 0)).

+ +
+
+ +

◆ Rect() [2/4]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::Rect< T >::Rect (rectLeft,
rectTop,
rectWidth,
rectHeight 
)
+
+ +

Construct the rectangle from its coordinates.

+

Be careful, the last two parameters are the width and height, not the right and bottom coordinates!

+
Parameters
+ + + + + +
rectLeftLeft coordinate of the rectangle
rectTopTop coordinate of the rectangle
rectWidthWidth of the rectangle
rectHeightHeight of the rectangle
+
+
+ +
+
+ +

◆ Rect() [3/4]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + +
sf::Rect< T >::Rect (const Vector2< T > & position,
const Vector2< T > & size 
)
+
+ +

Construct the rectangle from position and size.

+

Be careful, the last parameter is the size, not the bottom-right corner!

+
Parameters
+ + + +
positionPosition of the top-left corner of the rectangle
sizeSize of the rectangle
+
+
+ +
+
+ +

◆ Rect() [4/4]

+ +
+
+
+template<typename T>
+
+template<typename U >
+ + + + + +
+ + + + + + + + +
sf::Rect< T >::Rect (const Rect< U > & rectangle)
+
+explicit
+
+ +

Construct the rectangle from another type of rectangle.

+

This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

+
Parameters
+ + +
rectangleRectangle to convert
+
+
+ +
+
+

Member Function Documentation

+ +

◆ contains() [1/2]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + +
bool sf::Rect< T >::contains (x,
y 
) const
+
+ +

Check if a point is inside the rectangle's area.

+

This check is non-inclusive. If the point lies on the edge of the rectangle, this function will return false.

+
Parameters
+ + + +
xX coordinate of the point to test
yY coordinate of the point to test
+
+
+
Returns
True if the point is inside, false otherwise
+
See also
intersects
+ +
+
+ +

◆ contains() [2/2]

+ +
+
+
+template<typename T>
+ + + + + + + + +
bool sf::Rect< T >::contains (const Vector2< T > & point) const
+
+ +

Check if a point is inside the rectangle's area.

+

This check is non-inclusive. If the point lies on the edge of the rectangle, this function will return false.

+
Parameters
+ + +
pointPoint to test
+
+
+
Returns
True if the point is inside, false otherwise
+
See also
intersects
+ +
+
+ +

◆ intersects() [1/2]

+ +
+
+
+template<typename T>
+ + + + + + + + +
bool sf::Rect< T >::intersects (const Rect< T > & rectangle) const
+
+ +

Check the intersection between two rectangles.

+
Parameters
+ + +
rectangleRectangle to test
+
+
+
Returns
True if rectangles overlap, false otherwise
+
See also
contains
+ +
+
+ +

◆ intersects() [2/2]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + +
bool sf::Rect< T >::intersects (const Rect< T > & rectangle,
Rect< T > & intersection 
) const
+
+ +

Check the intersection between two rectangles.

+

This overload returns the overlapped rectangle in the intersection parameter.

+
Parameters
+ + + +
rectangleRectangle to test
intersectionRectangle to be filled with the intersection
+
+
+
Returns
True if rectangles overlap, false otherwise
+
See also
contains
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Rect< T > & left,
const Rect< T > & right 
)
+
+related
+
+ +

Overload of binary operator !=.

+

This operator compares strict difference between two rectangles.

+
Parameters
+ + + +
leftLeft operand (a rectangle)
rightRight operand (a rectangle)
+
+
+
Returns
True if left is not equal to right
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Rect< T > & left,
const Rect< T > & right 
)
+
+related
+
+ +

Overload of binary operator ==.

+

This operator compares strict equality between two rectangles.

+
Parameters
+ + + +
leftLeft operand (a rectangle)
rightRight operand (a rectangle)
+
+
+
Returns
True if left is equal to right
+ +
+
+

Member Data Documentation

+ +

◆ height

+ +
+
+
+template<typename T>
+ + + + +
T sf::Rect< T >::height
+
+ +

Height of the rectangle.

+ +

Definition at line 160 of file Rect.hpp.

+ +
+
+ +

◆ left

+ +
+
+
+template<typename T>
+ + + + +
T sf::Rect< T >::left
+
+ +

Left coordinate of the rectangle.

+ +

Definition at line 157 of file Rect.hpp.

+ +
+
+ +

◆ top

+ +
+
+
+template<typename T>
+ + + + +
T sf::Rect< T >::top
+
+ +

Top coordinate of the rectangle.

+ +

Definition at line 158 of file Rect.hpp.

+ +
+
+ +

◆ width

+ +
+
+
+template<typename T>
+ + + + +
T sf::Rect< T >::width
+
+ +

Width of the rectangle.

+ +

Definition at line 159 of file Rect.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape-members.html new file mode 100644 index 0000000..5906488 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape-members.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::RectangleShape Member List
+
+
+ +

This is the complete list of members for sf::RectangleShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getFillColor() constsf::Shape
getGlobalBounds() constsf::Shape
getInverseTransform() constsf::Transformable
getLocalBounds() constsf::Shape
getOrigin() constsf::Transformable
getOutlineColor() constsf::Shape
getOutlineThickness() constsf::Shape
getPoint(std::size_t index) constsf::RectangleShapevirtual
getPointCount() constsf::RectangleShapevirtual
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getSize() constsf::RectangleShape
getTexture() constsf::Shape
getTextureRect() constsf::Shape
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
RectangleShape(const Vector2f &size=Vector2f(0, 0))sf::RectangleShapeexplicit
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setFillColor(const Color &color)sf::Shape
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setOutlineColor(const Color &color)sf::Shape
setOutlineThickness(float thickness)sf::Shape
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setSize(const Vector2f &size)sf::RectangleShape
setTexture(const Texture *texture, bool resetRect=false)sf::Shape
setTextureRect(const IntRect &rect)sf::Shape
Shape()sf::Shapeprotected
Transformable()sf::Transformable
update()sf::Shapeprotected
~Drawable()sf::Drawableinlinevirtual
~Shape()sf::Shapevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.html new file mode 100644 index 0000000..220e332 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.html @@ -0,0 +1,1434 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized shape representing a rectangle. + More...

+ +

#include <RectangleShape.hpp>

+
+Inheritance diagram for sf::RectangleShape:
+
+
+ + +sf::Shape +sf::Drawable +sf::Transformable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RectangleShape (const Vector2f &size=Vector2f(0, 0))
 Default constructor. More...
 
void setSize (const Vector2f &size)
 Set the size of the rectangle. More...
 
const Vector2fgetSize () const
 Get the size of the rectangle. More...
 
virtual std::size_t getPointCount () const
 Get the number of points defining the shape. More...
 
virtual Vector2f getPoint (std::size_t index) const
 Get a point of the rectangle. More...
 
void setTexture (const Texture *texture, bool resetRect=false)
 Change the source texture of the shape. More...
 
void setTextureRect (const IntRect &rect)
 Set the sub-rectangle of the texture that the shape will display. More...
 
void setFillColor (const Color &color)
 Set the fill color of the shape. More...
 
void setOutlineColor (const Color &color)
 Set the outline color of the shape. More...
 
void setOutlineThickness (float thickness)
 Set the thickness of the shape's outline. More...
 
const TexturegetTexture () const
 Get the source texture of the shape. More...
 
const IntRectgetTextureRect () const
 Get the sub-rectangle of the texture displayed by the shape. More...
 
const ColorgetFillColor () const
 Get the fill color of the shape. More...
 
const ColorgetOutlineColor () const
 Get the outline color of the shape. More...
 
float getOutlineThickness () const
 Get the outline thickness of the shape. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global (non-minimal) bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+ + + + +

+Protected Member Functions

void update ()
 Recompute the internal geometry of the shape. More...
 
+

Detailed Description

+

Specialized shape representing a rectangle.

+

This class inherits all the functions of sf::Transformable (position, rotation, scale, bounds, ...) as well as the functions of sf::Shape (outline, color, texture, ...).

+

Usage example:

rectangle.setSize(sf::Vector2f(100, 50));
rectangle.setOutlineThickness(5);
rectangle.setPosition(10, 20);
...
window.draw(rectangle);
See also
sf::Shape, sf::CircleShape, sf::ConvexShape
+ +

Definition at line 41 of file RectangleShape.hpp.

+

Constructor & Destructor Documentation

+ +

◆ RectangleShape()

+ +
+
+ + + + + +
+ + + + + + + + +
sf::RectangleShape::RectangleShape (const Vector2fsize = Vector2f(0, 0))
+
+explicit
+
+ +

Default constructor.

+
Parameters
+ + +
sizeSize of the rectangle
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getFillColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getFillColor () const
+
+inherited
+
+ +

Get the fill color of the shape.

+
Returns
Fill color of the shape
+
See also
setFillColor
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getGlobalBounds () const
+
+inherited
+
+ +

Get the global (non-minimal) bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

+

This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
FloatRect sf::Shape::getLocalBounds () const
+
+inherited
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + +
const Color& sf::Shape::getOutlineColor () const
+
+inherited
+
+ +

Get the outline color of the shape.

+
Returns
Outline color of the shape
+
See also
setOutlineColor
+ +
+
+ +

◆ getOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Shape::getOutlineThickness () const
+
+inherited
+
+ +

Get the outline thickness of the shape.

+
Returns
Outline thickness of the shape
+
See also
setOutlineThickness
+ +
+
+ +

◆ getPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2f sf::RectangleShape::getPoint (std::size_t index) const
+
+virtual
+
+ +

Get a point of the rectangle.

+

The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

+
Parameters
+ + +
indexIndex of the point to get, in range [0 .. 3]
+
+
+
Returns
index-th point of the shape
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::size_t sf::RectangleShape::getPointCount () const
+
+virtual
+
+ +

Get the number of points defining the shape.

+
Returns
Number of points of the shape. For rectangle shapes, this number is always 4.
+ +

Implements sf::Shape.

+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
const Vector2f& sf::RectangleShape::getSize () const
+
+ +

Get the size of the rectangle.

+
Returns
Size of the rectangle
+
See also
setSize
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + +
+ + + + + + + +
const Texture* sf::Shape::getTexture () const
+
+inherited
+
+ +

Get the source texture of the shape.

+

If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

+
Returns
Pointer to the shape's texture
+
See also
setTexture
+ +
+
+ +

◆ getTextureRect()

+ +
+
+ + + + + +
+ + + + + + + +
const IntRect& sf::Shape::getTextureRect () const
+
+inherited
+
+ +

Get the sub-rectangle of the texture displayed by the shape.

+
Returns
Texture rectangle of the shape
+
See also
setTextureRect
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setFillColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setFillColor (const Colorcolor)
+
+inherited
+
+ +

Set the fill color of the shape.

+

This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

+
Parameters
+ + +
colorNew color of the shape
+
+
+
See also
getFillColor, setOutlineColor
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOutlineColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineColor (const Colorcolor)
+
+inherited
+
+ +

Set the outline color of the shape.

+

By default, the shape's outline color is opaque white.

+
Parameters
+ + +
colorNew outline color of the shape
+
+
+
See also
getOutlineColor, setFillColor
+ +
+
+ +

◆ setOutlineThickness()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setOutlineThickness (float thickness)
+
+inherited
+
+ +

Set the thickness of the shape's outline.

+

Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

+
Parameters
+ + +
thicknessNew outline thickness
+
+
+
See also
getOutlineThickness
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setSize()

+ +
+
+ + + + + + + + +
void sf::RectangleShape::setSize (const Vector2fsize)
+
+ +

Set the size of the rectangle.

+
Parameters
+ + +
sizeNew size of the rectangle
+
+
+
See also
getSize
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Shape::setTexture (const Texturetexture,
bool resetRect = false 
)
+
+inherited
+
+ +

Change the source texture of the shape.

+

The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

+
Parameters
+ + + +
textureNew texture
resetRectShould the texture rect be reset to the size of the new texture?
+
+
+
See also
getTexture, setTextureRect
+ +
+
+ +

◆ setTextureRect()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Shape::setTextureRect (const IntRectrect)
+
+inherited
+
+ +

Set the sub-rectangle of the texture that the shape will display.

+

The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

+
Parameters
+ + +
rectRectangle defining the region of the texture to display
+
+
+
See also
getTextureRect, setTexture
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Shape::update ()
+
+protectedinherited
+
+ +

Recompute the internal geometry of the shape.

+

This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RectangleShape.png new file mode 100644 index 0000000000000000000000000000000000000000..59630c6f9ce886064f8366d08fa37b4b49699816 GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0y~yVEDzrz|g_L%)r3#^9I{d1_lO+0G|-o|Ns9pFfhD$ z^R=}9&;$ks1~5Kw-~emq9eD-@29A;-zhH*{5ODQWh!Fz=^JY&M$B+ufw{u@lTdlz3 zW-g!o^Iv~WRDO)t#>+F4vpmzwR(DL|Rs5%VOhPx|{}GABtS+8b^J8KsojZP2^<_-V z-K(lEbK(N{6YY1@s;oSI>*0p@_*&_7xlPtD99`xX^j*Ci`}yL;%kx(}FWGE=X3tL_{A+z@|8worH_u%9T$Y*tdhH40uUThIvTU8M6~C>2zxhkF@G^Nn|JuqE zYGEthzxAx0-|))KGwXxPUb$j<(`??LfAb^s?)|?#_jCc@6?x%(6)qp|h`f7$Wj1Gg zUxcp9$<+^K)czEIUHUKO{MqsYlX~X%yjT5W{57dXXY%Y@;cSfA!mWGw-z< z@{_JSs+_qxuU5kJtnb_prE=d6SLUw2E^6mdb!h(EugYJK#pSQuzx{gm6s@2%{e?f3 zr+?nR;=@{_>HPt!HLE^^9{PURvTnWirTPWGbR(oH%xnq~g-0s!4 zR~?sF%s8{E$54vlgPCxHW}0BnYCGR+??7~&^z|Eeb($Kl?mfgjA`YxAl-wi6AR(;!vL;6M08jYzCB}uN z490Qc{ED(?kN@7O@^^ywO7)9BUwkud`c>OIy;V<5aZTrjrw(;$p0;|6_UU|>_2~0? zCG+zhy8`BT2KB#Qaoz5BTzvHEl@piPg?s(DrM@|4)xCW`^i%(oo{9;)^2zA>pNUJD z^|oK%{p$XX>)mtb8rk^&sIL8gj7#71_@6hr?_V*bfkL2jHOOa^O4QczCAjq%Mllp5 zsx=r&hS$z&E0qubn`XD__kmY&4;hagzRKuE0$%6Ap%}rC&=bhBjxV8YHS-*hMS;gQ zgx@O@trIJ_w(nl~l5d5tUZ&Vpb-a(L-TmI{)%UHZ#HzyMZ$F#=rF8d}t@(?dW-Wi6 z`o2W=z%1 z^S6^T{_RcE-s`HT%N&AjS9iM#J=q&P|GZYQYvHO>q3Jt6%U-&v5&HJ`iM@3TE=0Uz z-+er9{+{dIva>WrMCp$Ojipo9kjjK46JpJ|R>01RCoHSpR zuF3PEXMG5J1$#KV!Qrcn=Z;)uJj0>L!p%^3)ZVPm=hW`!i%v5zFfe$!`njxgN@xNA DUWpZ{ literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates-members.html new file mode 100644 index 0000000..58fe9e8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::RenderStates Member List
+
+
+ +

This is the complete list of members for sf::RenderStates, including all inherited members.

+ + + + + + + + + + + + +
blendModesf::RenderStates
Defaultsf::RenderStatesstatic
RenderStates()sf::RenderStates
RenderStates(const BlendMode &theBlendMode)sf::RenderStates
RenderStates(const Transform &theTransform)sf::RenderStates
RenderStates(const Texture *theTexture)sf::RenderStates
RenderStates(const Shader *theShader)sf::RenderStates
RenderStates(const BlendMode &theBlendMode, const Transform &theTransform, const Texture *theTexture, const Shader *theShader)sf::RenderStates
shadersf::RenderStates
texturesf::RenderStates
transformsf::RenderStates
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates.html new file mode 100644 index 0000000..5afcc42 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderStates.html @@ -0,0 +1,409 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Define the states used for drawing to a RenderTarget. + More...

+ +

#include <RenderStates.hpp>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RenderStates ()
 Default constructor. More...
 
 RenderStates (const BlendMode &theBlendMode)
 Construct a default set of render states with a custom blend mode. More...
 
 RenderStates (const Transform &theTransform)
 Construct a default set of render states with a custom transform. More...
 
 RenderStates (const Texture *theTexture)
 Construct a default set of render states with a custom texture. More...
 
 RenderStates (const Shader *theShader)
 Construct a default set of render states with a custom shader. More...
 
 RenderStates (const BlendMode &theBlendMode, const Transform &theTransform, const Texture *theTexture, const Shader *theShader)
 Construct a set of render states with all its attributes. More...
 
+ + + + + + + + + + + + + +

+Public Attributes

BlendMode blendMode
 Blending mode. More...
 
Transform transform
 Transform. More...
 
const Texturetexture
 Texture. More...
 
const Shadershader
 Shader. More...
 
+ + + + +

+Static Public Attributes

static const RenderStates Default
 Special instance holding the default render states. More...
 
+

Detailed Description

+

Define the states used for drawing to a RenderTarget.

+

There are four global states that can be applied to the drawn objects:

+
    +
  • the blend mode: how pixels of the object are blended with the background
  • +
  • the transform: how the object is positioned/rotated/scaled
  • +
  • the texture: what image is mapped to the object
  • +
  • the shader: what custom effect is applied to the object
  • +
+

High-level objects such as sprites or text force some of these states when they are drawn. For example, a sprite will set its own texture, so that you don't have to care about it when drawing the sprite.

+

The transform is a special case: sprites, texts and shapes (and it's a good idea to do it with your own drawable classes too) combine their transform with the one that is passed in the RenderStates structure. So that you can use a "global" transform on top of each object's transform.

+

Most objects, especially high-level drawables, can be drawn directly without defining render states explicitly – the default set of states is ok in most cases.

window.draw(sprite);

If you want to use a single specific render state, for example a shader, you can pass it directly to the Draw function: sf::RenderStates has an implicit one-argument constructor for each state.

window.draw(sprite, shader);

When you're inside the Draw function of a drawable object (inherited from sf::Drawable), you can either pass the render states unmodified, or change some of them. For example, a transformable object will combine the current transform with its own transform. A sprite will set its texture. Etc.

+
See also
sf::RenderTarget, sf::Drawable
+ +

Definition at line 45 of file RenderStates.hpp.

+

Constructor & Destructor Documentation

+ +

◆ RenderStates() [1/6]

+ +
+
+ + + + + + + +
sf::RenderStates::RenderStates ()
+
+ +

Default constructor.

+

Constructing a default set of render states is equivalent to using sf::RenderStates::Default. The default set defines:

    +
  • the BlendAlpha blend mode
  • +
  • the identity transform
  • +
  • a null texture
  • +
  • a null shader
  • +
+ +
+
+ +

◆ RenderStates() [2/6]

+ +
+
+ + + + + + + + +
sf::RenderStates::RenderStates (const BlendModetheBlendMode)
+
+ +

Construct a default set of render states with a custom blend mode.

+
Parameters
+ + +
theBlendModeBlend mode to use
+
+
+ +
+
+ +

◆ RenderStates() [3/6]

+ +
+
+ + + + + + + + +
sf::RenderStates::RenderStates (const TransformtheTransform)
+
+ +

Construct a default set of render states with a custom transform.

+
Parameters
+ + +
theTransformTransform to use
+
+
+ +
+
+ +

◆ RenderStates() [4/6]

+ +
+
+ + + + + + + + +
sf::RenderStates::RenderStates (const TexturetheTexture)
+
+ +

Construct a default set of render states with a custom texture.

+
Parameters
+ + +
theTextureTexture to use
+
+
+ +
+
+ +

◆ RenderStates() [5/6]

+ +
+
+ + + + + + + + +
sf::RenderStates::RenderStates (const ShadertheShader)
+
+ +

Construct a default set of render states with a custom shader.

+
Parameters
+ + +
theShaderShader to use
+
+
+ +
+
+ +

◆ RenderStates() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::RenderStates::RenderStates (const BlendModetheBlendMode,
const TransformtheTransform,
const TexturetheTexture,
const ShadertheShader 
)
+
+ +

Construct a set of render states with all its attributes.

+
Parameters
+ + + + + +
theBlendModeBlend mode to use
theTransformTransform to use
theTextureTexture to use
theShaderShader to use
+
+
+ +
+
+

Member Data Documentation

+ +

◆ blendMode

+ +
+
+ + + + +
BlendMode sf::RenderStates::blendMode
+
+ +

Blending mode.

+ +

Definition at line 115 of file RenderStates.hpp.

+ +
+
+ +

◆ Default

+ +
+
+ + + + + +
+ + + + +
const RenderStates sf::RenderStates::Default
+
+static
+
+ +

Special instance holding the default render states.

+ +

Definition at line 110 of file RenderStates.hpp.

+ +
+
+ +

◆ shader

+ +
+
+ + + + +
const Shader* sf::RenderStates::shader
+
+ +

Shader.

+ +

Definition at line 118 of file RenderStates.hpp.

+ +
+
+ +

◆ texture

+ +
+
+ + + + +
const Texture* sf::RenderStates::texture
+
+ +

Texture.

+ +

Definition at line 117 of file RenderStates.hpp.

+ +
+
+ +

◆ transform

+ +
+
+ + + + +
Transform sf::RenderStates::transform
+
+ +

Transform.

+ +

Definition at line 116 of file RenderStates.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget-members.html new file mode 100644 index 0000000..2d4dfdb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget-members.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::RenderTarget Member List
+
+
+ +

This is the complete list of members for sf::RenderTarget, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
getDefaultView() constsf::RenderTarget
getSize() const =0sf::RenderTargetpure virtual
getView() constsf::RenderTarget
getViewport(const View &view) constsf::RenderTarget
initialize()sf::RenderTargetprotected
mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
NonCopyable()sf::NonCopyableinlineprivate
popGLStates()sf::RenderTarget
pushGLStates()sf::RenderTarget
RenderTarget()sf::RenderTargetprotected
resetGLStates()sf::RenderTarget
setActive(bool active=true)sf::RenderTargetvirtual
setView(const View &view)sf::RenderTarget
~NonCopyable()sf::NonCopyableinlineprivate
~RenderTarget()sf::RenderTargetvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.html new file mode 100644 index 0000000..867e9cb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.html @@ -0,0 +1,822 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::RenderTarget Class Referenceabstract
+
+
+ +

Base class for all render targets (window, texture, ...) + More...

+ +

#include <RenderTarget.hpp>

+
+Inheritance diagram for sf::RenderTarget:
+
+
+ + +sf::NonCopyable +sf::RenderTexture +sf::RenderWindow + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~RenderTarget ()
 Destructor. More...
 
void clear (const Color &color=Color(0, 0, 0, 255))
 Clear the entire target with a single color. More...
 
void setView (const View &view)
 Change the current active view. More...
 
const ViewgetView () const
 Get the view currently in use in the render target. More...
 
const ViewgetDefaultView () const
 Get the default view of the render target. More...
 
IntRect getViewport (const View &view) const
 Get the viewport of a view, applied to this render target. More...
 
Vector2f mapPixelToCoords (const Vector2i &point) const
 Convert a point from target coordinates to world coordinates, using the current view. More...
 
Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
 Convert a point from target coordinates to world coordinates. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point) const
 Convert a point from world coordinates to target coordinates, using the current view. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
 Convert a point from world coordinates to target coordinates. More...
 
void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
 Draw a drawable object to the render target. More...
 
void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by an array of vertices. More...
 
void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
virtual Vector2u getSize () const =0
 Return the size of the rendering region of the target. More...
 
virtual bool setActive (bool active=true)
 Activate or deactivate the render target for rendering. More...
 
void pushGLStates ()
 Save the current OpenGL render states and matrices. More...
 
void popGLStates ()
 Restore the previously saved OpenGL render states and matrices. More...
 
void resetGLStates ()
 Reset the internal OpenGL states so that the target is ready for drawing. More...
 
+ + + + + + + +

+Protected Member Functions

 RenderTarget ()
 Default constructor. More...
 
void initialize ()
 Performs the common initialization step after creation. More...
 
+

Detailed Description

+

Base class for all render targets (window, texture, ...)

+

sf::RenderTarget defines the common behavior of all the 2D render targets usable in the graphics module.

+

It makes it possible to draw 2D entities like sprites, shapes, text without using any OpenGL command directly.

+

A sf::RenderTarget is also able to use views (sf::View), which are a kind of 2D cameras. With views you can globally scroll, rotate or zoom everything that is drawn, without having to transform every single entity. See the documentation of sf::View for more details and sample pieces of code about this class.

+

On top of that, render targets are still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands. When doing so, make sure that OpenGL states are not messed up by calling the pushGLStates/popGLStates functions.

+
See also
sf::RenderWindow, sf::RenderTexture, sf::View
+ +

Definition at line 52 of file RenderTarget.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~RenderTarget()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::RenderTarget::~RenderTarget ()
+
+virtual
+
+ +

Destructor.

+ +
+
+ +

◆ RenderTarget()

+ +
+
+ + + + + +
+ + + + + + + +
sf::RenderTarget::RenderTarget ()
+
+protected
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + + +
void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
+
+ +

Clear the entire target with a single color.

+

This function is usually called once every frame, to clear the previous contents of the target.

+
Parameters
+ + +
colorFill color to use to clear the render target
+
+
+ +
+
+ +

◆ draw() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Drawabledrawable,
const RenderStatesstates = RenderStates::Default 
)
+
+ +

Draw a drawable object to the render target.

+
Parameters
+ + + +
drawableObject to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Vertexvertices,
std::size_t vertexCount,
PrimitiveType type,
const RenderStatesstates = RenderStates::Default 
)
+
+ +

Draw primitives defined by an array of vertices.

+
Parameters
+ + + + + +
verticesPointer to the vertices
vertexCountNumber of vertices in the array
typeType of primitives to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
const RenderStatesstates = RenderStates::Default 
)
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + +
vertexBufferVertex buffer
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
std::size_t firstVertex,
std::size_t vertexCount,
const RenderStatesstates = RenderStates::Default 
)
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + + + +
vertexBufferVertex buffer
firstVertexIndex of the first vertex to render
vertexCountNumber of vertices to render
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ getDefaultView()

+ +
+
+ + + + + + + +
const View& sf::RenderTarget::getDefaultView () const
+
+ +

Get the default view of the render target.

+

The default view has the initial size of the render target, and never changes after the target has been created.

+
Returns
The default view of the render target
+
See also
setView, getView
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vector2u sf::RenderTarget::getSize () const
+
+pure virtual
+
+ +

Return the size of the rendering region of the target.

+
Returns
Size in pixels
+ +

Implemented in sf::RenderTexture, and sf::RenderWindow.

+ +
+
+ +

◆ getView()

+ +
+
+ + + + + + + +
const View& sf::RenderTarget::getView () const
+
+ +

Get the view currently in use in the render target.

+
Returns
The view object that is currently used
+
See also
setView, getDefaultView
+ +
+
+ +

◆ getViewport()

+ +
+
+ + + + + + + + +
IntRect sf::RenderTarget::getViewport (const Viewview) const
+
+ +

Get the viewport of a view, applied to this render target.

+

The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

+
Parameters
+ + +
viewThe view for which we want to compute the viewport
+
+
+
Returns
Viewport rectangle, expressed in pixels
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::initialize ()
+
+protected
+
+ +

Performs the common initialization step after creation.

+

The derived classes must call this function after the target is created and ready for drawing.

+ +
+
+ +

◆ mapCoordsToPixel() [1/2]

+ +
+
+ + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
+
+ +

Convert a point from world coordinates to target coordinates, using the current view.

+

This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

target.mapCoordsToPixel(point, target.getView());
Parameters
+ + +
pointPoint to convert
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapCoordsToPixel() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
const Viewview 
) const
+
+ +

Convert a point from world coordinates to target coordinates.

+

This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPoint to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapPixelToCoords() [1/2]

+ +
+
+ + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
+
+ +

Convert a point from target coordinates to world coordinates, using the current view.

+

This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

target.mapPixelToCoords(point, target.getView());
Parameters
+ + +
pointPixel to convert
+
+
+
Returns
The converted point, in "world" coordinates
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ mapPixelToCoords() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
const Viewview 
) const
+
+ +

Convert a point from target coordinates to world coordinates.

+

This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

+

For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPixel to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in "world" units
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ popGLStates()

+ +
+
+ + + + + + + +
void sf::RenderTarget::popGLStates ()
+
+ +

Restore the previously saved OpenGL render states and matrices.

+

See the description of pushGLStates to get a detailed description of these functions.

+
See also
pushGLStates
+ +
+
+ +

◆ pushGLStates()

+ +
+
+ + + + + + + +
void sf::RenderTarget::pushGLStates ()
+
+ +

Save the current OpenGL render states and matrices.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

    +
  • SFML's internal states are not messed up by your OpenGL code
  • +
  • your OpenGL states are not modified by a call to a SFML function
  • +
+

More specifically, it must be used around code that calls Draw functions. Example:

// OpenGL code here...
window.pushGLStates();
window.draw(...);
window.draw(...);
window.popGLStates();
// OpenGL code here...

Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

+
See also
popGLStates
+ +
+
+ +

◆ resetGLStates()

+ +
+
+ + + + + + + +
void sf::RenderTarget::resetGLStates ()
+
+ +

Reset the internal OpenGL states so that the target is ready for drawing.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

+

Example:

// OpenGL code here...
glPushAttrib(...);
window.resetGLStates();
window.draw(...);
window.draw(...);
glPopAttrib(...);
// OpenGL code here...
+
+
+ +

◆ setActive()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool sf::RenderTarget::setActive (bool active = true)
+
+virtual
+
+ +

Activate or deactivate the render target for rendering.

+

This function makes the render target's context current for future OpenGL rendering operations (so you shouldn't care about it if you're not doing direct OpenGL stuff). A render target's context is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one context can be current in a thread, so if you want to draw OpenGL geometry to another render target don't forget to activate it again. Activating a render target will automatically deactivate the previously active context (if any).

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True if operation was successful, false otherwise
+ +

Reimplemented in sf::RenderTexture, and sf::RenderWindow.

+ +
+
+ +

◆ setView()

+ +
+
+ + + + + + + + +
void sf::RenderTarget::setView (const Viewview)
+
+ +

Change the current active view.

+

The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

+
Parameters
+ + +
viewNew view to use
+
+
+
See also
getView, getDefaultView
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTarget.png new file mode 100644 index 0000000000000000000000000000000000000000..3f29acb2b6509713d367b6d0292d841e3c1963b8 GIT binary patch literal 1080 zcmeAS@N?(olHy`uVBq!ia0y~yV0gp8z|g_L%)r2KIpcd40|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}``M9TxV@L(#+qoa-JyPId zTQ2|m^I!R&Teb--DBXLnacbK6i+N^K`8aphGxiBPal|tI5OJJj^=K1=Z9$}GR?BIo zFAJv4UH0|R9&fMpFaIff>PP>Rzv@%=Z4}6?OOKZdmfgYX6(V=R|U6%`Z*kyH_92 zyzx+Fg|T^l^X3zFA&;HUuP?E!U(yn>&1TQk+3(NKO!<81>c82WZo2RKcxO}S^mS|h ztb6m>;Cya&(@zWQiw&Ff>NT_bE4DJH+ifm;b**=o-{U_OVw=+KH{T5Dy;XK7ZEh6L zy&3iYbN`jU%hd5?KXEH+Qk+r8o9K1TC-y!6^>)*wFLrv|7nr9{UE;Pw$ARC8W1%*~ z{bT$GLU&AhbN+m5&U%&V^1Xd;m!>f4wOkiXaM`noLHW^CRtdrNItMx`QW@QjXmcAV z#YHvs>S`KP{SHCZ>)r+(^-j@r25(q>cNs+`9`W_PRhF;2Cek^A^= zlH^TJ4TJ6TzMZ+Y>1X1-yvM6n-M@J3XG7Ozi*xgHq|$TeyxSb9KIa(2|H^$_4Q?m1fLkO1Q!H;u;fnO_S?%DUYug@e!Pj{Y(Zqhw;ehT#xY_GZ1uP=@JwgT z=s(S5ayXUo7D)Ps*G&N@i$l6C0(~D&E^SsRJ#xw`$UP=((yWJ@CS94AecCU0&yN2d zL9TLhKc71DRyzLlzptl0ujf8$>>1>%Is4MH)n|9FN|;;f@a@1Ux3Ec-fAxOf@ZG$$ z@ML;URN23O^P2iI{=Bo?@?=e9cGu5)yf+tXKc9N{)amWYC)btV(3bAJ_{KX(bdzy?~efd~$#w4S%RQ`2;bl$JF*<2ecEv}xP$-a4U zq4?#`Gw$7;YO0*RyqAA%P0Y3#S=(lsZQrTkbxQlz4hf0b%&+3Z^mgz25wSh_`I&3p z&#b?$>b-m;%IJRfQCr&6BQ3OrN?WZO0mwt;bVUS4!$>d%oQ{D~Chz%aIdp0#5$_7#5kh?c)hB Sp2NVvz~JfX=d#Wzp$Py<@g2PY literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture-members.html new file mode 100644 index 0000000..e23b3ab --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture-members.html @@ -0,0 +1,94 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::RenderTexture Member List
+
+
+ +

This is the complete list of members for sf::RenderTexture, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
create(unsigned int width, unsigned int height, bool depthBuffer)sf::RenderTexture
create(unsigned int width, unsigned int height, const ContextSettings &settings=ContextSettings())sf::RenderTexture
display()sf::RenderTexture
draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
generateMipmap()sf::RenderTexture
getDefaultView() constsf::RenderTarget
getMaximumAntialiasingLevel()sf::RenderTexturestatic
getSize() constsf::RenderTexturevirtual
getTexture() constsf::RenderTexture
getView() constsf::RenderTarget
getViewport(const View &view) constsf::RenderTarget
initialize()sf::RenderTargetprotected
isRepeated() constsf::RenderTexture
isSmooth() constsf::RenderTexture
mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
popGLStates()sf::RenderTarget
pushGLStates()sf::RenderTarget
RenderTarget()sf::RenderTargetprotected
RenderTexture()sf::RenderTexture
resetGLStates()sf::RenderTarget
setActive(bool active=true)sf::RenderTexturevirtual
setRepeated(bool repeated)sf::RenderTexture
setSmooth(bool smooth)sf::RenderTexture
setView(const View &view)sf::RenderTarget
~RenderTarget()sf::RenderTargetvirtual
~RenderTexture()sf::RenderTexturevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.html new file mode 100644 index 0000000..fda80b0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.html @@ -0,0 +1,1264 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Target for off-screen 2D rendering into a texture. + More...

+ +

#include <RenderTexture.hpp>

+
+Inheritance diagram for sf::RenderTexture:
+
+
+ + +sf::RenderTarget +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RenderTexture ()
 Default constructor. More...
 
virtual ~RenderTexture ()
 Destructor. More...
 
bool create (unsigned int width, unsigned int height, bool depthBuffer)
 Create the render-texture. More...
 
bool create (unsigned int width, unsigned int height, const ContextSettings &settings=ContextSettings())
 Create the render-texture. More...
 
void setSmooth (bool smooth)
 Enable or disable texture smoothing. More...
 
bool isSmooth () const
 Tell whether the smooth filtering is enabled or not. More...
 
void setRepeated (bool repeated)
 Enable or disable texture repeating. More...
 
bool isRepeated () const
 Tell whether the texture is repeated or not. More...
 
bool generateMipmap ()
 Generate a mipmap using the current texture data. More...
 
bool setActive (bool active=true)
 Activate or deactivate the render-texture for rendering. More...
 
void display ()
 Update the contents of the target texture. More...
 
virtual Vector2u getSize () const
 Return the size of the rendering region of the texture. More...
 
const TexturegetTexture () const
 Get a read-only reference to the target texture. More...
 
void clear (const Color &color=Color(0, 0, 0, 255))
 Clear the entire target with a single color. More...
 
void setView (const View &view)
 Change the current active view. More...
 
const ViewgetView () const
 Get the view currently in use in the render target. More...
 
const ViewgetDefaultView () const
 Get the default view of the render target. More...
 
IntRect getViewport (const View &view) const
 Get the viewport of a view, applied to this render target. More...
 
Vector2f mapPixelToCoords (const Vector2i &point) const
 Convert a point from target coordinates to world coordinates, using the current view. More...
 
Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
 Convert a point from target coordinates to world coordinates. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point) const
 Convert a point from world coordinates to target coordinates, using the current view. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
 Convert a point from world coordinates to target coordinates. More...
 
void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
 Draw a drawable object to the render target. More...
 
void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by an array of vertices. More...
 
void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
void pushGLStates ()
 Save the current OpenGL render states and matrices. More...
 
void popGLStates ()
 Restore the previously saved OpenGL render states and matrices. More...
 
void resetGLStates ()
 Reset the internal OpenGL states so that the target is ready for drawing. More...
 
+ + + + +

+Static Public Member Functions

static unsigned int getMaximumAntialiasingLevel ()
 Get the maximum anti-aliasing level supported by the system. More...
 
+ + + + +

+Protected Member Functions

void initialize ()
 Performs the common initialization step after creation. More...
 
+

Detailed Description

+

Target for off-screen 2D rendering into a texture.

+

sf::RenderTexture is the little brother of sf::RenderWindow.

+

It implements the same 2D drawing and OpenGL-related functions (see their base class sf::RenderTarget for more details), the difference is that the result is stored in an off-screen texture rather than being show in a window.

+

Rendering to a texture can be useful in a variety of situations:

    +
  • precomputing a complex static texture (like a level's background from multiple tiles)
  • +
  • applying post-effects to the whole scene with shaders
  • +
  • creating a sprite from a 3D object rendered with OpenGL
  • +
  • etc.
  • +
+

Usage example:

+
// Create a new render-window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// Create a new render-texture
if (!texture.create(500, 500))
return -1;
// The main loop
while (window.isOpen())
{
// Event processing
// ...
// Clear the whole texture with red color
// Draw stuff to the texture
texture.draw(sprite); // sprite is a sf::Sprite
texture.draw(shape); // shape is a sf::Shape
texture.draw(text); // text is a sf::Text
// We're done drawing to the texture
texture.display();
// Now we start rendering to the window, clear it first
window.clear();
// Draw the texture
sf::Sprite sprite(texture.getTexture());
window.draw(sprite);
// End the current frame and display its contents on screen
window.display();
}

Like sf::RenderWindow, sf::RenderTexture is still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands. If you need a depth buffer for 3D rendering, don't forget to request it when calling RenderTexture::create.

+
See also
sf::RenderTarget, sf::RenderWindow, sf::View, sf::Texture
+ +

Definition at line 48 of file RenderTexture.hpp.

+

Constructor & Destructor Documentation

+ +

◆ RenderTexture()

+ +
+
+ + + + + + + +
sf::RenderTexture::RenderTexture ()
+
+ +

Default constructor.

+

Constructs an empty, invalid render-texture. You must call create to have a valid render-texture.

+
See also
create
+ +
+
+ +

◆ ~RenderTexture()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::RenderTexture::~RenderTexture ()
+
+virtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
+
+inherited
+
+ +

Clear the entire target with a single color.

+

This function is usually called once every frame, to clear the previous contents of the target.

+
Parameters
+ + +
colorFill color to use to clear the render target
+
+
+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::RenderTexture::create (unsigned int width,
unsigned int height,
bool depthBuffer 
)
+
+ +

Create the render-texture.

+

Before calling this function, the render-texture is in an invalid state, thus it is mandatory to call it before doing anything with the render-texture. The last parameter, depthBuffer, is useful if you want to use the render-texture for 3D OpenGL rendering that requires a depth buffer. Otherwise it is unnecessary, and you should leave this parameter to false (which is its default value).

+
Parameters
+ + + + +
widthWidth of the render-texture
heightHeight of the render-texture
depthBufferDo you want this render-texture to have a depth buffer?
+
+
+
Returns
True if creation has been successful
+
Deprecated:
Use create(unsigned int, unsigned int, const ContextSettings&) instead.
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::RenderTexture::create (unsigned int width,
unsigned int height,
const ContextSettingssettings = ContextSettings() 
)
+
+ +

Create the render-texture.

+

Before calling this function, the render-texture is in an invalid state, thus it is mandatory to call it before doing anything with the render-texture. The last parameter, settings, is useful if you want to enable multi-sampling or use the render-texture for OpenGL rendering that requires a depth or stencil buffer. Otherwise it is unnecessary, and you should leave this parameter at its default value.

+
Parameters
+ + + + +
widthWidth of the render-texture
heightHeight of the render-texture
settingsAdditional settings for the underlying OpenGL texture and context
+
+
+
Returns
True if creation has been successful
+ +
+
+ +

◆ display()

+ +
+
+ + + + + + + +
void sf::RenderTexture::display ()
+
+ +

Update the contents of the target texture.

+

This function updates the target texture with what has been drawn so far. Like for windows, calling this function is mandatory at the end of rendering. Not calling it may leave the texture in an undefined state.

+ +
+
+ +

◆ draw() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Drawabledrawable,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw a drawable object to the render target.

+
Parameters
+ + + +
drawableObject to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Vertexvertices,
std::size_t vertexCount,
PrimitiveType type,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by an array of vertices.

+
Parameters
+ + + + + +
verticesPointer to the vertices
vertexCountNumber of vertices in the array
typeType of primitives to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + +
vertexBufferVertex buffer
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
std::size_t firstVertex,
std::size_t vertexCount,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + + + +
vertexBufferVertex buffer
firstVertexIndex of the first vertex to render
vertexCountNumber of vertices to render
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ generateMipmap()

+ +
+
+ + + + + + + +
bool sf::RenderTexture::generateMipmap ()
+
+ +

Generate a mipmap using the current texture data.

+

This function is similar to Texture::generateMipmap and operates on the texture used as the target for drawing. Be aware that any draw operation may modify the base level image data. For this reason, calling this function only makes sense after all drawing is completed and display has been called. Not calling display after subsequent drawing will lead to undefined behavior if a mipmap had been previously generated.

+
Returns
True if mipmap generation was successful, false if unsuccessful
+ +
+
+ +

◆ getDefaultView()

+ +
+
+ + + + + +
+ + + + + + + +
const View& sf::RenderTarget::getDefaultView () const
+
+inherited
+
+ +

Get the default view of the render target.

+

The default view has the initial size of the render target, and never changes after the target has been created.

+
Returns
The default view of the render target
+
See also
setView, getView
+ +
+
+ +

◆ getMaximumAntialiasingLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int sf::RenderTexture::getMaximumAntialiasingLevel ()
+
+static
+
+ +

Get the maximum anti-aliasing level supported by the system.

+
Returns
The maximum anti-aliasing level supported by the system
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vector2u sf::RenderTexture::getSize () const
+
+virtual
+
+ +

Return the size of the rendering region of the texture.

+

The returned value is the size that you passed to the create function.

+
Returns
Size in pixels
+ +

Implements sf::RenderTarget.

+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + + + +
const Texture& sf::RenderTexture::getTexture () const
+
+ +

Get a read-only reference to the target texture.

+

After drawing to the render-texture and calling Display, you can retrieve the updated texture using this function, and draw it using a sprite (for example). The internal sf::Texture of a render-texture is always the same instance, so that it is possible to call this function once and keep a reference to the texture even after it is modified.

+
Returns
Const reference to the texture
+ +
+
+ +

◆ getView()

+ +
+
+ + + + + +
+ + + + + + + +
const View& sf::RenderTarget::getView () const
+
+inherited
+
+ +

Get the view currently in use in the render target.

+
Returns
The view object that is currently used
+
See also
setView, getDefaultView
+ +
+
+ +

◆ getViewport()

+ +
+
+ + + + + +
+ + + + + + + + +
IntRect sf::RenderTarget::getViewport (const Viewview) const
+
+inherited
+
+ +

Get the viewport of a view, applied to this render target.

+

The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

+
Parameters
+ + +
viewThe view for which we want to compute the viewport
+
+
+
Returns
Viewport rectangle, expressed in pixels
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::initialize ()
+
+protectedinherited
+
+ +

Performs the common initialization step after creation.

+

The derived classes must call this function after the target is created and ready for drawing.

+ +
+
+ +

◆ isRepeated()

+ +
+
+ + + + + + + +
bool sf::RenderTexture::isRepeated () const
+
+ +

Tell whether the texture is repeated or not.

+
Returns
True if texture is repeated
+
See also
setRepeated
+ +
+
+ +

◆ isSmooth()

+ +
+
+ + + + + + + +
bool sf::RenderTexture::isSmooth () const
+
+ +

Tell whether the smooth filtering is enabled or not.

+
Returns
True if texture smoothing is enabled
+
See also
setSmooth
+ +
+
+ +

◆ mapCoordsToPixel() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
+
+inherited
+
+ +

Convert a point from world coordinates to target coordinates, using the current view.

+

This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

target.mapCoordsToPixel(point, target.getView());
Parameters
+ + +
pointPoint to convert
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapCoordsToPixel() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
const Viewview 
) const
+
+inherited
+
+ +

Convert a point from world coordinates to target coordinates.

+

This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPoint to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapPixelToCoords() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
+
+inherited
+
+ +

Convert a point from target coordinates to world coordinates, using the current view.

+

This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

target.mapPixelToCoords(point, target.getView());
Parameters
+ + +
pointPixel to convert
+
+
+
Returns
The converted point, in "world" coordinates
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ mapPixelToCoords() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
const Viewview 
) const
+
+inherited
+
+ +

Convert a point from target coordinates to world coordinates.

+

This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

+

For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPixel to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in "world" units
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ popGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::popGLStates ()
+
+inherited
+
+ +

Restore the previously saved OpenGL render states and matrices.

+

See the description of pushGLStates to get a detailed description of these functions.

+
See also
pushGLStates
+ +
+
+ +

◆ pushGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::pushGLStates ()
+
+inherited
+
+ +

Save the current OpenGL render states and matrices.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

    +
  • SFML's internal states are not messed up by your OpenGL code
  • +
  • your OpenGL states are not modified by a call to a SFML function
  • +
+

More specifically, it must be used around code that calls Draw functions. Example:

// OpenGL code here...
window.pushGLStates();
window.draw(...);
window.draw(...);
window.popGLStates();
// OpenGL code here...

Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

+
See also
popGLStates
+ +
+
+ +

◆ resetGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::resetGLStates ()
+
+inherited
+
+ +

Reset the internal OpenGL states so that the target is ready for drawing.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

+

Example:

// OpenGL code here...
glPushAttrib(...);
window.resetGLStates();
window.draw(...);
window.draw(...);
glPopAttrib(...);
// OpenGL code here...
+
+
+ +

◆ setActive()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::RenderTexture::setActive (bool active = true)
+
+virtual
+
+ +

Activate or deactivate the render-texture for rendering.

+

This function makes the render-texture's context current for future OpenGL rendering operations (so you shouldn't care about it if you're not doing direct OpenGL stuff). Only one context can be current in a thread, so if you want to draw OpenGL geometry to another render target (like a RenderWindow) don't forget to activate it again.

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True if operation was successful, false otherwise
+ +

Reimplemented from sf::RenderTarget.

+ +
+
+ +

◆ setRepeated()

+ +
+
+ + + + + + + + +
void sf::RenderTexture::setRepeated (bool repeated)
+
+ +

Enable or disable texture repeating.

+

This function is similar to Texture::setRepeated. This parameter is disabled by default.

+
Parameters
+ + +
repeatedTrue to enable repeating, false to disable it
+
+
+
See also
isRepeated
+ +
+
+ +

◆ setSmooth()

+ +
+
+ + + + + + + + +
void sf::RenderTexture::setSmooth (bool smooth)
+
+ +

Enable or disable texture smoothing.

+

This function is similar to Texture::setSmooth. This parameter is disabled by default.

+
Parameters
+ + +
smoothTrue to enable smoothing, false to disable it
+
+
+
See also
isSmooth
+ +
+
+ +

◆ setView()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::RenderTarget::setView (const Viewview)
+
+inherited
+
+ +

Change the current active view.

+

The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

+
Parameters
+ + +
viewNew view to use
+
+
+
See also
getView, getDefaultView
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac1289279224434963a4efdd2621a9acf2b7f38 GIT binary patch literal 814 zcmeAS@N?(olHy`uVBq!ia0y~yV8~}+VCdjrW?*2r7v-A4z`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0~y) z_P8Xx^m}jgX>GmZ%if+7PxE}b<7hR5&x^$J`&*^AKfgTT^OtAq)@!#twauu!TQ}wR z-yoTy5BKhT{;C*eBVQ-&H2t|=>O=3i;B}jql~=kafBz-9c=o!ixHo0>CpW*%YpS?t zZ{41I^xV%cYgbj6|9bvRXY$)KJ12!Mp7D44^1tt&)_7eKfAUJ(^SsG~a(43x<=or< z$$MUM_{$X6V|Y&ZK=>C%gTTp^^76%vlPjh3vvwF$wST(n_uPKJ z>$b_U^bOhfl--0gp2=>TV08c7(H|S0@vc2tHPcr2{YN#%Pjk1XWbg8p{&nHphPmPP z`$d+#_rAHjdZl>eXYG4}tKY}3@)Ug?sQh@|>&VZiF1_2cqkP-E>59^E6GBev)Lz>^ z?YZ>r_34vuzpeUJdGhnj;|I?!U!5MAzW3K>O;6>kzk~j1&zrx8bN_sC`-0d1C#v*b z)_-tR;;{{5jq7{{Vbhu4e_D!L%-sHP8B_Y_x<55~at9oAZVT zx%H7z8Q;(DIc!<^bn4MbYoBjpzt+xnQ0C@RmZuf_=B?CDo&POKe5ZicbUA(NSyjtU z%@io!rYaG9#5-=LhP8gWXzT^G+Wxg&LED#3zU}%yYF_@E%~jJhz2=#}dih-Se0pC0 zZ2w}t&ok5Z7Fd1eG;r)@H}C`D`v + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::RenderWindow Member List
+
+
+ +

This is the complete list of members for sf::RenderWindow, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
capture() constsf::RenderWindow
clear(const Color &color=Color(0, 0, 0, 255))sf::RenderTarget
close()sf::Window
create(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
create(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Window
display()sf::Window
draw(const Drawable &drawable, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)sf::RenderTarget
draw(const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)sf::RenderTarget
getDefaultView() constsf::RenderTarget
getPosition() constsf::Window
getSettings() constsf::Window
getSize() constsf::RenderWindowvirtual
getSystemHandle() constsf::Window
getView() constsf::RenderTarget
getViewport(const View &view) constsf::RenderTarget
hasFocus() constsf::Window
initialize()sf::RenderTargetprotected
isOpen() constsf::Window
mapCoordsToPixel(const Vector2f &point) constsf::RenderTarget
mapCoordsToPixel(const Vector2f &point, const View &view) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point) constsf::RenderTarget
mapPixelToCoords(const Vector2i &point, const View &view) constsf::RenderTarget
NonCopyable()sf::NonCopyableinlineprotected
onCreate()sf::RenderWindowprotectedvirtual
onResize()sf::RenderWindowprotectedvirtual
pollEvent(Event &event)sf::Window
popGLStates()sf::RenderTarget
pushGLStates()sf::RenderTarget
RenderTarget()sf::RenderTargetprotected
RenderWindow()sf::RenderWindow
RenderWindow(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::RenderWindow
RenderWindow(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::RenderWindowexplicit
requestFocus()sf::Window
resetGLStates()sf::RenderTarget
setActive(bool active=true)sf::RenderWindowvirtual
sf::Window::setActive(bool active=true) constsf::Window
setFramerateLimit(unsigned int limit)sf::Window
setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Window
setJoystickThreshold(float threshold)sf::Window
setKeyRepeatEnabled(bool enabled)sf::Window
setMouseCursor(const Cursor &cursor)sf::Window
setMouseCursorGrabbed(bool grabbed)sf::Window
setMouseCursorVisible(bool visible)sf::Window
setPosition(const Vector2i &position)sf::Window
setSize(const Vector2u &size)sf::Window
setTitle(const String &title)sf::Window
setVerticalSyncEnabled(bool enabled)sf::Window
setView(const View &view)sf::RenderTarget
setVisible(bool visible)sf::Window
waitEvent(Event &event)sf::Window
Window()sf::Window
Window(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
Window(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Windowexplicit
~NonCopyable()sf::NonCopyableinlineprotected
~RenderTarget()sf::RenderTargetvirtual
~RenderWindow()sf::RenderWindowvirtual
~Window()sf::Windowvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.html new file mode 100644 index 0000000..4b79f2d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.html @@ -0,0 +1,2116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Window that can serve as a target for 2D drawing. + More...

+ +

#include <RenderWindow.hpp>

+
+Inheritance diagram for sf::RenderWindow:
+
+
+ + +sf::Window +sf::RenderTarget +sf::GlResource +sf::NonCopyable +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RenderWindow ()
 Default constructor. More...
 
 RenderWindow (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
 Construct a new window. More...
 
 RenderWindow (WindowHandle handle, const ContextSettings &settings=ContextSettings())
 Construct the window from an existing control. More...
 
virtual ~RenderWindow ()
 Destructor. More...
 
virtual Vector2u getSize () const
 Get the size of the rendering region of the window. More...
 
bool setActive (bool active=true)
 Activate or deactivate the window as the current target for OpenGL rendering. More...
 
Image capture () const
 Copy the current contents of the window to an image. More...
 
void create (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
 Create (or recreate) the window. More...
 
void create (WindowHandle handle, const ContextSettings &settings=ContextSettings())
 Create (or recreate) the window from an existing control. More...
 
void close ()
 Close the window and destroy all the attached resources. More...
 
bool isOpen () const
 Tell whether or not the window is open. More...
 
const ContextSettingsgetSettings () const
 Get the settings of the OpenGL context of the window. More...
 
bool pollEvent (Event &event)
 Pop the event on top of the event queue, if any, and return it. More...
 
bool waitEvent (Event &event)
 Wait for an event and return it. More...
 
Vector2i getPosition () const
 Get the position of the window. More...
 
void setPosition (const Vector2i &position)
 Change the position of the window on screen. More...
 
void setSize (const Vector2u &size)
 Change the size of the rendering region of the window. More...
 
void setTitle (const String &title)
 Change the title of the window. More...
 
void setIcon (unsigned int width, unsigned int height, const Uint8 *pixels)
 Change the window's icon. More...
 
void setVisible (bool visible)
 Show or hide the window. More...
 
void setVerticalSyncEnabled (bool enabled)
 Enable or disable vertical synchronization. More...
 
void setMouseCursorVisible (bool visible)
 Show or hide the mouse cursor. More...
 
void setMouseCursorGrabbed (bool grabbed)
 Grab or release the mouse cursor. More...
 
void setMouseCursor (const Cursor &cursor)
 Set the displayed cursor to a native system cursor. More...
 
void setKeyRepeatEnabled (bool enabled)
 Enable or disable automatic key-repeat. More...
 
void setFramerateLimit (unsigned int limit)
 Limit the framerate to a maximum fixed frequency. More...
 
void setJoystickThreshold (float threshold)
 Change the joystick threshold. More...
 
bool setActive (bool active=true) const
 Activate or deactivate the window as the current target for OpenGL rendering. More...
 
void requestFocus ()
 Request the current window to be made the active foreground window. More...
 
bool hasFocus () const
 Check whether the window has the input focus. More...
 
void display ()
 Display on screen what has been rendered to the window so far. More...
 
WindowHandle getSystemHandle () const
 Get the OS-specific handle of the window. More...
 
void clear (const Color &color=Color(0, 0, 0, 255))
 Clear the entire target with a single color. More...
 
void setView (const View &view)
 Change the current active view. More...
 
const ViewgetView () const
 Get the view currently in use in the render target. More...
 
const ViewgetDefaultView () const
 Get the default view of the render target. More...
 
IntRect getViewport (const View &view) const
 Get the viewport of a view, applied to this render target. More...
 
Vector2f mapPixelToCoords (const Vector2i &point) const
 Convert a point from target coordinates to world coordinates, using the current view. More...
 
Vector2f mapPixelToCoords (const Vector2i &point, const View &view) const
 Convert a point from target coordinates to world coordinates. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point) const
 Convert a point from world coordinates to target coordinates, using the current view. More...
 
Vector2i mapCoordsToPixel (const Vector2f &point, const View &view) const
 Convert a point from world coordinates to target coordinates. More...
 
void draw (const Drawable &drawable, const RenderStates &states=RenderStates::Default)
 Draw a drawable object to the render target. More...
 
void draw (const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by an array of vertices. More...
 
void draw (const VertexBuffer &vertexBuffer, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
void draw (const VertexBuffer &vertexBuffer, std::size_t firstVertex, std::size_t vertexCount, const RenderStates &states=RenderStates::Default)
 Draw primitives defined by a vertex buffer. More...
 
void pushGLStates ()
 Save the current OpenGL render states and matrices. More...
 
void popGLStates ()
 Restore the previously saved OpenGL render states and matrices. More...
 
void resetGLStates ()
 Reset the internal OpenGL states so that the target is ready for drawing. More...
 
+ + + + + + + + + + +

+Protected Member Functions

virtual void onCreate ()
 Function called after the window has been created. More...
 
virtual void onResize ()
 Function called after the window has been resized. More...
 
void initialize ()
 Performs the common initialization step after creation. More...
 
+

Detailed Description

+

Window that can serve as a target for 2D drawing.

+

sf::RenderWindow is the main class of the Graphics module.

+

It defines an OS window that can be painted using the other classes of the graphics module.

+

sf::RenderWindow is derived from sf::Window, thus it inherits all its features: events, window management, OpenGL rendering, etc. See the documentation of sf::Window for a more complete description of all these features, as well as code examples.

+

On top of that, sf::RenderWindow adds more features related to 2D drawing with the graphics module (see its base class sf::RenderTarget for more details). Here is a typical rendering and event loop with a sf::RenderWindow:

+
// Declare and create a new render-window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// Limit the framerate to 60 frames per second (this step is optional)
window.setFramerateLimit(60);
// The main loop - ends as soon as the window is closed
while (window.isOpen())
{
// Event processing
sf::Event event;
while (window.pollEvent(event))
{
// Request for closing the window
if (event.type == sf::Event::Closed)
window.close();
}
// Clear the whole window before rendering a new frame
window.clear();
// Draw some graphical entities
window.draw(sprite);
window.draw(circle);
window.draw(text);
// End the current frame and display its contents on screen
window.display();
}

Like sf::Window, sf::RenderWindow is still able to render direct OpenGL stuff. It is even possible to mix together OpenGL calls and regular SFML drawing commands.

+
// Create the render window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL");
// Create a sprite and a text to display
sf::Sprite sprite;
sf::Text text;
...
// Perform OpenGL initializations
glMatrixMode(GL_PROJECTION);
...
// Start the rendering loop
while (window.isOpen())
{
// Process events
...
// Draw a background sprite
window.pushGLStates();
window.draw(sprite);
window.popGLStates();
// Draw a 3D object using OpenGL
glBegin(GL_QUADS);
glVertex3f(...);
...
glEnd();
// Draw text on top of the 3D object
window.pushGLStates();
window.draw(text);
window.popGLStates();
// Finally, display the rendered frame on screen
window.display();
}
See also
sf::Window, sf::RenderTarget, sf::RenderTexture, sf::View
+ +

Definition at line 44 of file RenderWindow.hpp.

+

Constructor & Destructor Documentation

+ +

◆ RenderWindow() [1/3]

+ +
+
+ + + + + + + +
sf::RenderWindow::RenderWindow ()
+
+ +

Default constructor.

+

This constructor doesn't actually create the window, use the other constructors or call create() to do so.

+ +
+
+ +

◆ RenderWindow() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::RenderWindow::RenderWindow (VideoMode mode,
const Stringtitle,
Uint32 style = Style::Default,
const ContextSettingssettings = ContextSettings() 
)
+
+ +

Construct a new window.

+

This constructor creates the window with the size and pixel depth defined in mode. An optional style can be passed to customize the look and behavior of the window (borders, title bar, resizable, closable, ...).

+

The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc. You shouldn't care about these parameters for a regular usage of the graphics module.

+
Parameters
+ + + + + +
modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
titleTitle of the window
styleWindow style, a bitwise OR combination of sf::Style enumerators
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ RenderWindow() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
sf::RenderWindow::RenderWindow (WindowHandle handle,
const ContextSettingssettings = ContextSettings() 
)
+
+explicit
+
+ +

Construct the window from an existing control.

+

Use this constructor if you want to create an SFML rendering area into an already existing control.

+

The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc. You shouldn't care about these parameters for a regular usage of the graphics module.

+
Parameters
+ + + +
handlePlatform-specific handle of the control (HWND on Windows, Window on Linux/FreeBSD, NSWindow on OS X)
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ ~RenderWindow()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::RenderWindow::~RenderWindow ()
+
+virtual
+
+ +

Destructor.

+

Closes the window and frees all the resources attached to it.

+ +
+
+

Member Function Documentation

+ +

◆ capture()

+ +
+
+ + + + + + + +
Image sf::RenderWindow::capture () const
+
+ +

Copy the current contents of the window to an image.

+
Deprecated:
Use a sf::Texture and its sf::Texture::update(const Window&) function and copy its contents into an sf::Image instead.
+
sf::Vector2u windowSize = window.getSize();
sf::Texture texture;
texture.create(windowSize.x, windowSize.y);
texture.update(window);
sf::Image screenshot = texture.copyToImage();

This is a slow operation, whose main purpose is to make screenshots of the application. If you want to update an image with the contents of the window and then use it for drawing, you should rather use a sf::Texture and its update(Window&) function. You can also draw things directly to a texture with the sf::RenderTexture class.

+
Returns
Image containing the captured contents
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::RenderTarget::clear (const Colorcolor = Color(0, 0, 0, 255))
+
+inherited
+
+ +

Clear the entire target with a single color.

+

This function is usually called once every frame, to clear the previous contents of the target.

+
Parameters
+ + +
colorFill color to use to clear the render target
+
+
+ +
+
+ +

◆ close()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Window::close ()
+
+inherited
+
+ +

Close the window and destroy all the attached resources.

+

After calling this function, the sf::Window instance remains valid and you can call create() to recreate the window. All other functions such as pollEvent() or display() will still work (i.e. you don't have to test isOpen() every time), and will have no effect on closed windows.

+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Window::create (VideoMode mode,
const Stringtitle,
Uint32 style = Style::Default,
const ContextSettingssettings = ContextSettings() 
)
+
+inherited
+
+ +

Create (or recreate) the window.

+

If the window was already created, it closes it first. If style contains Style::Fullscreen, then mode must be a valid video mode.

+

The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + + + +
modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
titleTitle of the window
styleWindow style, a bitwise OR combination of sf::Style enumerators
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Window::create (WindowHandle handle,
const ContextSettingssettings = ContextSettings() 
)
+
+inherited
+
+ +

Create (or recreate) the window from an existing control.

+

Use this function if you want to create an OpenGL rendering area into an already existing control. If the window was already created, it closes it first.

+

The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + +
handlePlatform-specific handle of the control
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ display()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Window::display ()
+
+inherited
+
+ +

Display on screen what has been rendered to the window so far.

+

This function is typically called after all OpenGL rendering has been done for the current frame, in order to show it on screen.

+ +
+
+ +

◆ draw() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Drawabledrawable,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw a drawable object to the render target.

+
Parameters
+ + + +
drawableObject to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const Vertexvertices,
std::size_t vertexCount,
PrimitiveType type,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by an array of vertices.

+
Parameters
+ + + + + +
verticesPointer to the vertices
vertexCountNumber of vertices in the array
typeType of primitives to draw
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + +
vertexBufferVertex buffer
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ draw() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::RenderTarget::draw (const VertexBuffervertexBuffer,
std::size_t firstVertex,
std::size_t vertexCount,
const RenderStatesstates = RenderStates::Default 
)
+
+inherited
+
+ +

Draw primitives defined by a vertex buffer.

+
Parameters
+ + + + + +
vertexBufferVertex buffer
firstVertexIndex of the first vertex to render
vertexCountNumber of vertices to render
statesRender states to use for drawing
+
+
+ +
+
+ +

◆ getDefaultView()

+ +
+
+ + + + + +
+ + + + + + + +
const View& sf::RenderTarget::getDefaultView () const
+
+inherited
+
+ +

Get the default view of the render target.

+

The default view has the initial size of the render target, and never changes after the target has been created.

+
Returns
The default view of the render target
+
See also
setView, getView
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector2i sf::Window::getPosition () const
+
+inherited
+
+ +

Get the position of the window.

+
Returns
Position of the window, in pixels
+
See also
setPosition
+ +
+
+ +

◆ getSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const ContextSettings& sf::Window::getSettings () const
+
+inherited
+
+ +

Get the settings of the OpenGL context of the window.

+

Note that these settings may be different from what was passed to the constructor or the create() function, if one or more settings were not supported. In this case, SFML chose the closest match.

+
Returns
Structure containing the OpenGL context settings
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vector2u sf::RenderWindow::getSize () const
+
+virtual
+
+ +

Get the size of the rendering region of the window.

+

The size doesn't include the titlebar and borders of the window.

+
Returns
Size in pixels
+ +

Implements sf::RenderTarget.

+ +
+
+ +

◆ getSystemHandle()

+ +
+
+ + + + + +
+ + + + + + + +
WindowHandle sf::Window::getSystemHandle () const
+
+inherited
+
+ +

Get the OS-specific handle of the window.

+

The type of the returned handle is sf::WindowHandle, which is a typedef to the handle type defined by the OS. You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

+
Returns
System handle of the window
+ +
+
+ +

◆ getView()

+ +
+
+ + + + + +
+ + + + + + + +
const View& sf::RenderTarget::getView () const
+
+inherited
+
+ +

Get the view currently in use in the render target.

+
Returns
The view object that is currently used
+
See also
setView, getDefaultView
+ +
+
+ +

◆ getViewport()

+ +
+
+ + + + + +
+ + + + + + + + +
IntRect sf::RenderTarget::getViewport (const Viewview) const
+
+inherited
+
+ +

Get the viewport of a view, applied to this render target.

+

The viewport is defined in the view as a ratio, this function simply applies this ratio to the current dimensions of the render target to calculate the pixels rectangle that the viewport actually covers in the target.

+
Parameters
+ + +
viewThe view for which we want to compute the viewport
+
+
+
Returns
Viewport rectangle, expressed in pixels
+ +
+
+ +

◆ hasFocus()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Window::hasFocus () const
+
+inherited
+
+ +

Check whether the window has the input focus.

+

At any given time, only one window may have the input focus to receive input events such as keystrokes or most mouse events.

+
Returns
True if window has focus, false otherwise
+
See also
requestFocus
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::initialize ()
+
+protectedinherited
+
+ +

Performs the common initialization step after creation.

+

The derived classes must call this function after the target is created and ready for drawing.

+ +
+
+ +

◆ isOpen()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Window::isOpen () const
+
+inherited
+
+ +

Tell whether or not the window is open.

+

This function returns whether or not the window exists. Note that a hidden window (setVisible(false)) is open (therefore this function would return true).

+
Returns
True if the window is open, false if it has been closed
+ +
+
+ +

◆ mapCoordsToPixel() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint) const
+
+inherited
+
+ +

Convert a point from world coordinates to target coordinates, using the current view.

+

This function is an overload of the mapCoordsToPixel function that implicitly uses the current view. It is equivalent to:

target.mapCoordsToPixel(point, target.getView());
Parameters
+ + +
pointPoint to convert
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapCoordsToPixel() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2i sf::RenderTarget::mapCoordsToPixel (const Vector2fpoint,
const Viewview 
) const
+
+inherited
+
+ +

Convert a point from world coordinates to target coordinates.

+

This function finds the pixel of the render target that matches the given 2D point. In other words, it goes through the same process as the graphics card, to compute the final position of a rendered point.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (150, 75) in your 2D world may map to the pixel (10, 50) of your render target – if the view is translated by (140, 25).

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPoint to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in target coordinates (pixels)
+
See also
mapPixelToCoords
+ +
+
+ +

◆ mapPixelToCoords() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint) const
+
+inherited
+
+ +

Convert a point from target coordinates to world coordinates, using the current view.

+

This function is an overload of the mapPixelToCoords function that implicitly uses the current view. It is equivalent to:

target.mapPixelToCoords(point, target.getView());
Parameters
+ + +
pointPixel to convert
+
+
+
Returns
The converted point, in "world" coordinates
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ mapPixelToCoords() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2f sf::RenderTarget::mapPixelToCoords (const Vector2ipoint,
const Viewview 
) const
+
+inherited
+
+ +

Convert a point from target coordinates to world coordinates.

+

This function finds the 2D position that matches the given pixel of the render target. In other words, it does the inverse of what the graphics card does, to find the initial position of a rendered pixel.

+

Initially, both coordinate systems (world units and target pixels) match perfectly. But if you define a custom view or resize your render target, this assertion is not true anymore, i.e. a point located at (10, 50) in your render target may map to the point (150, 75) in your 2D world – if the view is translated by (140, 25).

+

For render-windows, this function is typically used to find which point (or object) is located below the mouse cursor.

+

This version uses a custom view for calculations, see the other overload of the function if you want to use the current view of the render target.

+
Parameters
+ + + +
pointPixel to convert
viewThe view to use for converting the point
+
+
+
Returns
The converted point, in "world" units
+
See also
mapCoordsToPixel
+ +
+
+ +

◆ onCreate()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::RenderWindow::onCreate ()
+
+protectedvirtual
+
+ +

Function called after the window has been created.

+

This function is called so that derived classes can perform their own specific initialization as soon as the window is created.

+ +

Reimplemented from sf::Window.

+ +
+
+ +

◆ onResize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::RenderWindow::onResize ()
+
+protectedvirtual
+
+ +

Function called after the window has been resized.

+

This function is called so that derived classes can perform custom actions when the size of the window changes.

+ +

Reimplemented from sf::Window.

+ +
+
+ +

◆ pollEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::Window::pollEvent (Eventevent)
+
+inherited
+
+ +

Pop the event on top of the event queue, if any, and return it.

+

This function is not blocking: if there's no pending event then it will return false and leave event unmodified. Note that more than one event may be present in the event queue, thus you should always call this function in a loop to make sure that you process every pending event.

sf::Event event;
while (window.pollEvent(event))
{
// process event...
}
Parameters
+ + +
eventEvent to be returned
+
+
+
Returns
True if an event was returned, or false if the event queue was empty
+
See also
waitEvent
+ +
+
+ +

◆ popGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::popGLStates ()
+
+inherited
+
+ +

Restore the previously saved OpenGL render states and matrices.

+

See the description of pushGLStates to get a detailed description of these functions.

+
See also
pushGLStates
+ +
+
+ +

◆ pushGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::pushGLStates ()
+
+inherited
+
+ +

Save the current OpenGL render states and matrices.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering. Combined with popGLStates, it ensures that:

    +
  • SFML's internal states are not messed up by your OpenGL code
  • +
  • your OpenGL states are not modified by a call to a SFML function
  • +
+

More specifically, it must be used around code that calls Draw functions. Example:

// OpenGL code here...
window.pushGLStates();
window.draw(...);
window.draw(...);
window.popGLStates();
// OpenGL code here...

Note that this function is quite expensive: it saves all the possible OpenGL states and matrices, even the ones you don't care about. Therefore it should be used wisely. It is provided for convenience, but the best results will be achieved if you handle OpenGL states yourself (because you know which states have really changed, and need to be saved and restored). Take a look at the resetGLStates function if you do so.

+
See also
popGLStates
+ +
+
+ +

◆ requestFocus()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Window::requestFocus ()
+
+inherited
+
+ +

Request the current window to be made the active foreground window.

+

At any given time, only one window may have the input focus to receive input events such as keystrokes or mouse events. If a window requests focus, it only hints to the operating system, that it would like to be focused. The operating system is free to deny the request. This is not to be confused with setActive().

+
See also
hasFocus
+ +
+
+ +

◆ resetGLStates()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::RenderTarget::resetGLStates ()
+
+inherited
+
+ +

Reset the internal OpenGL states so that the target is ready for drawing.

+

This function can be used when you mix SFML drawing and direct OpenGL rendering, if you choose not to use pushGLStates/popGLStates. It makes sure that all OpenGL states needed by SFML are set, so that subsequent draw() calls will work as expected.

+

Example:

// OpenGL code here...
glPushAttrib(...);
window.resetGLStates();
window.draw(...);
window.draw(...);
glPopAttrib(...);
// OpenGL code here...
+
+
+ +

◆ setActive() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::RenderWindow::setActive (bool active = true)
+
+virtual
+
+ +

Activate or deactivate the window as the current target for OpenGL rendering.

+

A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True if operation was successful, false otherwise
+ +

Reimplemented from sf::RenderTarget.

+ +
+
+ +

◆ setActive() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::Window::setActive (bool active = true) const
+
+inherited
+
+ +

Activate or deactivate the window as the current target for OpenGL rendering.

+

A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True if operation was successful, false otherwise
+ +
+
+ +

◆ setFramerateLimit()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setFramerateLimit (unsigned int limit)
+
+inherited
+
+ +

Limit the framerate to a maximum fixed frequency.

+

If a limit is set, the window will use a small delay after each call to display() to ensure that the current frame lasted long enough to match the framerate limit. SFML will try to match the given limit as much as it can, but since it internally uses sf::sleep, whose precision depends on the underlying OS, the results may be a little unprecise as well (for example, you can get 65 FPS when requesting 60).

+
Parameters
+ + +
limitFramerate limit, in frames per seconds (use 0 to disable limit)
+
+
+ +
+
+ +

◆ setIcon()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Window::setIcon (unsigned int width,
unsigned int height,
const Uint8 * pixels 
)
+
+inherited
+
+ +

Change the window's icon.

+

pixels must be an array of width x height pixels in 32-bits RGBA format.

+

The OS default icon is used by default.

+
Parameters
+ + + + +
widthIcon's width, in pixels
heightIcon's height, in pixels
pixelsPointer to the array of pixels in memory. The pixels are copied, so you need not keep the source alive after calling this function.
+
+
+
See also
setTitle
+ +
+
+ +

◆ setJoystickThreshold()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setJoystickThreshold (float threshold)
+
+inherited
+
+ +

Change the joystick threshold.

+

The joystick threshold is the value below which no JoystickMoved event will be generated.

+

The threshold value is 0.1 by default.

+
Parameters
+ + +
thresholdNew threshold, in the range [0, 100]
+
+
+ +
+
+ +

◆ setKeyRepeatEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setKeyRepeatEnabled (bool enabled)
+
+inherited
+
+ +

Enable or disable automatic key-repeat.

+

If key repeat is enabled, you will receive repeated KeyPressed events while keeping a key pressed. If it is disabled, you will only get a single event when the key is pressed.

+

Key repeat is enabled by default.

+
Parameters
+ + +
enabledTrue to enable, false to disable
+
+
+ +
+
+ +

◆ setMouseCursor()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setMouseCursor (const Cursorcursor)
+
+inherited
+
+ +

Set the displayed cursor to a native system cursor.

+

Upon window creation, the arrow cursor is used by default.

+
Warning
The cursor must not be destroyed while in use by the window.
+
+Features related to Cursor are not supported on iOS and Android.
+
Parameters
+ + +
cursorNative system cursor type to display
+
+
+
See also
sf::Cursor::loadFromSystem
+
+sf::Cursor::loadFromPixels
+ +
+
+ +

◆ setMouseCursorGrabbed()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setMouseCursorGrabbed (bool grabbed)
+
+inherited
+
+ +

Grab or release the mouse cursor.

+

If set, grabs the mouse cursor inside this window's client area so it may no longer be moved outside its bounds. Note that grabbing is only active while the window has focus.

+
Parameters
+ + +
grabbedTrue to enable, false to disable
+
+
+ +
+
+ +

◆ setMouseCursorVisible()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setMouseCursorVisible (bool visible)
+
+inherited
+
+ +

Show or hide the mouse cursor.

+

The mouse cursor is visible by default.

+
Parameters
+ + +
visibleTrue to show the mouse cursor, false to hide it
+
+
+ +
+
+ +

◆ setPosition()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setPosition (const Vector2iposition)
+
+inherited
+
+ +

Change the position of the window on screen.

+

This function only works for top-level windows (i.e. it will be ignored for windows created from the handle of a child window/control).

+
Parameters
+ + +
positionNew position, in pixels
+
+
+
See also
getPosition
+ +
+
+ +

◆ setSize()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setSize (const Vector2usize)
+
+inherited
+
+ +

Change the size of the rendering region of the window.

+
Parameters
+ + +
sizeNew size, in pixels
+
+
+
See also
getSize
+ +
+
+ +

◆ setTitle()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setTitle (const Stringtitle)
+
+inherited
+
+ +

Change the title of the window.

+
Parameters
+ + +
titleNew title
+
+
+
See also
setIcon
+ +
+
+ +

◆ setVerticalSyncEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setVerticalSyncEnabled (bool enabled)
+
+inherited
+
+ +

Enable or disable vertical synchronization.

+

Activating vertical synchronization will limit the number of frames displayed to the refresh rate of the monitor. This can avoid some visual artifacts, and limit the framerate to a good value (but not constant across different computers).

+

Vertical synchronization is disabled by default.

+
Parameters
+ + +
enabledTrue to enable v-sync, false to deactivate it
+
+
+ +
+
+ +

◆ setView()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::RenderTarget::setView (const Viewview)
+
+inherited
+
+ +

Change the current active view.

+

The view is like a 2D camera, it controls which part of the 2D scene is visible, and how it is viewed in the render target. The new view will affect everything that is drawn, until another view is set. The render target keeps its own copy of the view object, so it is not necessary to keep the original one alive after calling this function. To restore the original view of the target, you can pass the result of getDefaultView() to this function.

+
Parameters
+ + +
viewNew view to use
+
+
+
See also
getView, getDefaultView
+ +
+
+ +

◆ setVisible()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Window::setVisible (bool visible)
+
+inherited
+
+ +

Show or hide the window.

+

The window is shown by default.

+
Parameters
+ + +
visibleTrue to show the window, false to hide it
+
+
+ +
+
+ +

◆ waitEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::Window::waitEvent (Eventevent)
+
+inherited
+
+ +

Wait for an event and return it.

+

This function is blocking: if there's no pending event then it will wait until an event is received. After this function returns (and no error occurred), the event object is always valid and filled properly. This function is typically used when you have a thread that is dedicated to events handling: you want to make this thread sleep as long as no new event is received.

sf::Event event;
if (window.waitEvent(event))
{
// process event...
}
Parameters
+ + +
eventEvent to be returned
+
+
+
Returns
False if any error occurred
+
See also
pollEvent
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1RenderWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..80a23b7609b8128f3852c0fb91e24a0d004d8882 GIT binary patch literal 1416 zcmeAS@N?(olHy`uVBq!ia0y~yU`%IVVCdjrW?*38VZIf^z`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0<-J}dFmdJ@p2_={Ot};g5wE$_WQwt~x~G(fWu&LniIofA zMowC^G2OH4_&iljx$0?4D#~pAg9|IHe?F_4a$NQ0a~Z#~y}$o%7Jl8x^X&ch>2sxa zz2CXxQ(48-IsB?Gx6Al$i@9C5!rkb{)aM^A-0t{(=&njY)x7=j|IR`uF6MdbO+M)(BgemZZz;yx;Y4&(Ci==BchsDmT96Qd_er)&K3c zJ@x`s`|ZPfA5Z*u=S}_w9c&QdRr&MfzQW&!0})^(Wr1$m**3 zq))%&`SUH`7AdcvcRsB?e*ONZ1sh(@m)LdLTt&0zZhQEoIZFh3f?!7lOBP>`}yr+FU{U1GjhB%d!P8Xu>D|+ zXL$Z0aN%1?g*ofjUrzfCVZLujKl^R5({1Ah#tMGB%*+3U7c%lVaI8ybVE(|jV;&>V z0qX}o>5PCA0m}?u_%6ArB*iKK_%Q_uA#R=UeLA!nCse6u*;eg0XpWz_ji4=3Af@6?;eZxp-BCvH;e&Q+`1 zu6*8e?dgHP>)*#u{uDiF7fa>3-^cEh_8aBahw$-#tBL<4{^5?=tk;|0q-B>rch&gi z_S*7)$q~C79?_p~f8VpFMdd5UE%wzer$x%Ww|ubi%+jc{+F&nVomYO~u&vED`+QsZ zv|Hb8cG*8azVSx%Ezg{?kHR+FJD>TyD%)^!%M0nBmq-XI&T{v;Ml{@bR_va!^a!O4mRI-1o~~6v2kPcrk~DcN{IUv z$ylNIMp8kpnyusbJjO>G(;F&?;a1GaoV9ErLyf}X=eg*XZQuN~WY<0hGn2*FFVB1y z#t{8xr`1l`(z$P{*}AsdGXI>*{Uhv%^!e`_GuM52|G)Bs)vYVV?{`(H+THoQXr+yo z`?ZUwVru`MEBzKz4T_}s-Pd;ij1XI_@p^CnoxOL>&Hh%_ed^|lTWzM_WXt?#w%6M- zd7U>`{=I5nkZXMQ_$HxmF<0+Q-0|<+w!M4yu8WgyIG=Rc{8jCTTgt1al3=9mOu6{1-oD!M<6VAv} literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor-members.html new file mode 100644 index 0000000..c682e88 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor-members.html @@ -0,0 +1,72 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Sensor Member List
+
+
+ +

This is the complete list of members for sf::Sensor, including all inherited members.

+ + + + + + + + + + + + +
Accelerometer enum valuesf::Sensor
Count enum valuesf::Sensor
getValue(Type sensor)sf::Sensorstatic
Gravity enum valuesf::Sensor
Gyroscope enum valuesf::Sensor
isAvailable(Type sensor)sf::Sensorstatic
Magnetometer enum valuesf::Sensor
Orientation enum valuesf::Sensor
setEnabled(Type sensor, bool enabled)sf::Sensorstatic
Type enum namesf::Sensor
UserAcceleration enum valuesf::Sensor
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor.html new file mode 100644 index 0000000..033c349 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sensor.html @@ -0,0 +1,262 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Give access to the real-time state of the sensors. + More...

+ +

#include <Sensor.hpp>

+ + + + + +

+Public Types

enum  Type {
+  Accelerometer, +Gyroscope, +Magnetometer, +Gravity, +
+  UserAcceleration, +Orientation, +Count +
+ }
 Sensor type. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool isAvailable (Type sensor)
 Check if a sensor is available on the underlying platform. More...
 
static void setEnabled (Type sensor, bool enabled)
 Enable or disable a sensor. More...
 
static Vector3f getValue (Type sensor)
 Get the current sensor value. More...
 
+

Detailed Description

+

Give access to the real-time state of the sensors.

+

sf::Sensor provides an interface to the state of the various sensors that a device provides.

+

It only contains static functions, so it's not meant to be instantiated.

+

This class allows users to query the sensors values at any time and directly, without having to deal with a window and its events. Compared to the SensorChanged event, sf::Sensor can retrieve the state of a sensor at any time (you don't need to store and update its current value on your side).

+

Depending on the OS and hardware of the device (phone, tablet, ...), some sensor types may not be available. You should always check the availability of a sensor before trying to read it, with the sf::Sensor::isAvailable function.

+

You may wonder why some sensor types look so similar, for example Accelerometer and Gravity / UserAcceleration. The first one is the raw measurement of the acceleration, and takes into account both the earth gravity and the user movement. The others are more precise: they provide these components separately, which is usually more useful. In fact they are not direct sensors, they are computed internally based on the raw acceleration and other sensors. This is exactly the same for Gyroscope vs Orientation.

+

Because sensors consume a non-negligible amount of current, they are all disabled by default. You must call sf::Sensor::setEnabled for each sensor in which you are interested.

+

Usage example:

{
// gravity sensor is available
}
// enable the gravity sensor
// get the current value of gravity
+

Definition at line 42 of file Sensor.hpp.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum sf::Sensor::Type
+
+ +

Sensor type.

+ + + + + + + + +
Enumerator
Accelerometer 

Measures the raw acceleration (m/s^2)

+
Gyroscope 

Measures the raw rotation rates (degrees/s)

+
Magnetometer 

Measures the ambient magnetic field (micro-teslas)

+
Gravity 

Measures the direction and intensity of gravity, independent of device acceleration (m/s^2)

+
UserAcceleration 

Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2)

+
Orientation 

Measures the absolute 3D orientation (degrees)

+
Count 

Keep last – the total number of sensor types.

+
+ +

Definition at line 50 of file Sensor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ getValue()

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector3f sf::Sensor::getValue (Type sensor)
+
+static
+
+ +

Get the current sensor value.

+
Parameters
+ + +
sensorSensor to read
+
+
+
Returns
The current sensor value
+ +
+
+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Sensor::isAvailable (Type sensor)
+
+static
+
+ +

Check if a sensor is available on the underlying platform.

+
Parameters
+ + +
sensorSensor to check
+
+
+
Returns
True if the sensor is available, false otherwise
+ +
+
+ +

◆ setEnabled()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sf::Sensor::setEnabled (Type sensor,
bool enabled 
)
+
+static
+
+ +

Enable or disable a sensor.

+

All sensors are disabled by default, to avoid consuming too much battery power. Once a sensor is enabled, it starts sending events of the corresponding type.

+

This function does nothing if the sensor is unavailable.

+
Parameters
+ + + +
sensorSensor to enable
enabledTrue to enable, false to disable
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader-members.html new file mode 100644 index 0000000..4a688b4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader-members.html @@ -0,0 +1,118 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Shader Member List
+
+
+ +

This is the complete list of members for sf::Shader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bind(const Shader *shader)sf::Shaderstatic
CurrentTexturesf::Shaderstatic
Fragment enum valuesf::Shader
Geometry enum valuesf::Shader
getNativeHandle() constsf::Shader
GlResource()sf::GlResourceprivate
isAvailable()sf::Shaderstatic
isGeometryAvailable()sf::Shaderstatic
loadFromFile(const std::string &filename, Type type)sf::Shader
loadFromFile(const std::string &vertexShaderFilename, const std::string &fragmentShaderFilename)sf::Shader
loadFromFile(const std::string &vertexShaderFilename, const std::string &geometryShaderFilename, const std::string &fragmentShaderFilename)sf::Shader
loadFromMemory(const std::string &shader, Type type)sf::Shader
loadFromMemory(const std::string &vertexShader, const std::string &fragmentShader)sf::Shader
loadFromMemory(const std::string &vertexShader, const std::string &geometryShader, const std::string &fragmentShader)sf::Shader
loadFromStream(InputStream &stream, Type type)sf::Shader
loadFromStream(InputStream &vertexShaderStream, InputStream &fragmentShaderStream)sf::Shader
loadFromStream(InputStream &vertexShaderStream, InputStream &geometryShaderStream, InputStream &fragmentShaderStream)sf::Shader
NonCopyable()sf::NonCopyableinlineprivate
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
setParameter(const std::string &name, float x)sf::Shader
setParameter(const std::string &name, float x, float y)sf::Shader
setParameter(const std::string &name, float x, float y, float z)sf::Shader
setParameter(const std::string &name, float x, float y, float z, float w)sf::Shader
setParameter(const std::string &name, const Vector2f &vector)sf::Shader
setParameter(const std::string &name, const Vector3f &vector)sf::Shader
setParameter(const std::string &name, const Color &color)sf::Shader
setParameter(const std::string &name, const Transform &transform)sf::Shader
setParameter(const std::string &name, const Texture &texture)sf::Shader
setParameter(const std::string &name, CurrentTextureType)sf::Shader
setUniform(const std::string &name, float x)sf::Shader
setUniform(const std::string &name, const Glsl::Vec2 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Vec3 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Vec4 &vector)sf::Shader
setUniform(const std::string &name, int x)sf::Shader
setUniform(const std::string &name, const Glsl::Ivec2 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Ivec3 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Ivec4 &vector)sf::Shader
setUniform(const std::string &name, bool x)sf::Shader
setUniform(const std::string &name, const Glsl::Bvec2 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Bvec3 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Bvec4 &vector)sf::Shader
setUniform(const std::string &name, const Glsl::Mat3 &matrix)sf::Shader
setUniform(const std::string &name, const Glsl::Mat4 &matrix)sf::Shader
setUniform(const std::string &name, const Texture &texture)sf::Shader
setUniform(const std::string &name, CurrentTextureType)sf::Shader
setUniformArray(const std::string &name, const float *scalarArray, std::size_t length)sf::Shader
setUniformArray(const std::string &name, const Glsl::Vec2 *vectorArray, std::size_t length)sf::Shader
setUniformArray(const std::string &name, const Glsl::Vec3 *vectorArray, std::size_t length)sf::Shader
setUniformArray(const std::string &name, const Glsl::Vec4 *vectorArray, std::size_t length)sf::Shader
setUniformArray(const std::string &name, const Glsl::Mat3 *matrixArray, std::size_t length)sf::Shader
setUniformArray(const std::string &name, const Glsl::Mat4 *matrixArray, std::size_t length)sf::Shader
Shader()sf::Shader
Type enum namesf::Shader
Vertex enum valuesf::Shader
~GlResource()sf::GlResourceprivate
~NonCopyable()sf::NonCopyableinlineprivate
~Shader()sf::Shader
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.html new file mode 100644 index 0000000..9be161f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.html @@ -0,0 +1,2092 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Shader class (vertex, geometry and fragment) + More...

+ +

#include <Shader.hpp>

+
+Inheritance diagram for sf::Shader:
+
+
+ + +sf::GlResource +sf::NonCopyable + +
+ + + + + +

+Classes

struct  CurrentTextureType
 Special type that can be passed to setUniform(), and that represents the texture of the object being drawn. More...
 
+ + + + +

+Public Types

enum  Type { Vertex, +Geometry, +Fragment + }
 Types of shaders. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Shader ()
 Default constructor. More...
 
 ~Shader ()
 Destructor. More...
 
bool loadFromFile (const std::string &filename, Type type)
 Load the vertex, geometry or fragment shader from a file. More...
 
bool loadFromFile (const std::string &vertexShaderFilename, const std::string &fragmentShaderFilename)
 Load both the vertex and fragment shaders from files. More...
 
bool loadFromFile (const std::string &vertexShaderFilename, const std::string &geometryShaderFilename, const std::string &fragmentShaderFilename)
 Load the vertex, geometry and fragment shaders from files. More...
 
bool loadFromMemory (const std::string &shader, Type type)
 Load the vertex, geometry or fragment shader from a source code in memory. More...
 
bool loadFromMemory (const std::string &vertexShader, const std::string &fragmentShader)
 Load both the vertex and fragment shaders from source codes in memory. More...
 
bool loadFromMemory (const std::string &vertexShader, const std::string &geometryShader, const std::string &fragmentShader)
 Load the vertex, geometry and fragment shaders from source codes in memory. More...
 
bool loadFromStream (InputStream &stream, Type type)
 Load the vertex, geometry or fragment shader from a custom stream. More...
 
bool loadFromStream (InputStream &vertexShaderStream, InputStream &fragmentShaderStream)
 Load both the vertex and fragment shaders from custom streams. More...
 
bool loadFromStream (InputStream &vertexShaderStream, InputStream &geometryShaderStream, InputStream &fragmentShaderStream)
 Load the vertex, geometry and fragment shaders from custom streams. More...
 
void setUniform (const std::string &name, float x)
 Specify value for float uniform. More...
 
void setUniform (const std::string &name, const Glsl::Vec2 &vector)
 Specify value for vec2 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Vec3 &vector)
 Specify value for vec3 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Vec4 &vector)
 Specify value for vec4 uniform. More...
 
void setUniform (const std::string &name, int x)
 Specify value for int uniform. More...
 
void setUniform (const std::string &name, const Glsl::Ivec2 &vector)
 Specify value for ivec2 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Ivec3 &vector)
 Specify value for ivec3 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Ivec4 &vector)
 Specify value for ivec4 uniform. More...
 
void setUniform (const std::string &name, bool x)
 Specify value for bool uniform. More...
 
void setUniform (const std::string &name, const Glsl::Bvec2 &vector)
 Specify value for bvec2 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Bvec3 &vector)
 Specify value for bvec3 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Bvec4 &vector)
 Specify value for bvec4 uniform. More...
 
void setUniform (const std::string &name, const Glsl::Mat3 &matrix)
 Specify value for mat3 matrix. More...
 
void setUniform (const std::string &name, const Glsl::Mat4 &matrix)
 Specify value for mat4 matrix. More...
 
void setUniform (const std::string &name, const Texture &texture)
 Specify a texture as sampler2D uniform. More...
 
void setUniform (const std::string &name, CurrentTextureType)
 Specify current texture as sampler2D uniform. More...
 
void setUniformArray (const std::string &name, const float *scalarArray, std::size_t length)
 Specify values for float[] array uniform. More...
 
void setUniformArray (const std::string &name, const Glsl::Vec2 *vectorArray, std::size_t length)
 Specify values for vec2[] array uniform. More...
 
void setUniformArray (const std::string &name, const Glsl::Vec3 *vectorArray, std::size_t length)
 Specify values for vec3[] array uniform. More...
 
void setUniformArray (const std::string &name, const Glsl::Vec4 *vectorArray, std::size_t length)
 Specify values for vec4[] array uniform. More...
 
void setUniformArray (const std::string &name, const Glsl::Mat3 *matrixArray, std::size_t length)
 Specify values for mat3[] array uniform. More...
 
void setUniformArray (const std::string &name, const Glsl::Mat4 *matrixArray, std::size_t length)
 Specify values for mat4[] array uniform. More...
 
void setParameter (const std::string &name, float x)
 Change a float parameter of the shader. More...
 
void setParameter (const std::string &name, float x, float y)
 Change a 2-components vector parameter of the shader. More...
 
void setParameter (const std::string &name, float x, float y, float z)
 Change a 3-components vector parameter of the shader. More...
 
void setParameter (const std::string &name, float x, float y, float z, float w)
 Change a 4-components vector parameter of the shader. More...
 
void setParameter (const std::string &name, const Vector2f &vector)
 Change a 2-components vector parameter of the shader. More...
 
void setParameter (const std::string &name, const Vector3f &vector)
 Change a 3-components vector parameter of the shader. More...
 
void setParameter (const std::string &name, const Color &color)
 Change a color parameter of the shader. More...
 
void setParameter (const std::string &name, const Transform &transform)
 Change a matrix parameter of the shader. More...
 
void setParameter (const std::string &name, const Texture &texture)
 Change a texture parameter of the shader. More...
 
void setParameter (const std::string &name, CurrentTextureType)
 Change a texture parameter of the shader. More...
 
unsigned int getNativeHandle () const
 Get the underlying OpenGL handle of the shader. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static void bind (const Shader *shader)
 Bind a shader for rendering. More...
 
static bool isAvailable ()
 Tell whether or not the system supports shaders. More...
 
static bool isGeometryAvailable ()
 Tell whether or not the system supports geometry shaders. More...
 
+ + + + +

+Static Public Attributes

static CurrentTextureType CurrentTexture
 Represents the texture of the object being drawn. More...
 
+ + + + +

+Static Private Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+

Detailed Description

+

Shader class (vertex, geometry and fragment)

+

Shaders are programs written using a specific language, executed directly by the graphics card and allowing to apply real-time operations to the rendered entities.

+

There are three kinds of shaders:

    +
  • Vertex shaders, that process vertices
  • +
  • Geometry shaders, that process primitives
  • +
  • Fragment (pixel) shaders, that process pixels
  • +
+

A sf::Shader can be composed of either a vertex shader alone, a geometry shader alone, a fragment shader alone, or any combination of them. (see the variants of the load functions).

+

Shaders are written in GLSL, which is a C-like language dedicated to OpenGL shaders. You'll probably need to learn its basics before writing your own shaders for SFML.

+

Like any C/C++ program, a GLSL shader has its own variables called uniforms that you can set from your C++ application. sf::Shader handles different types of uniforms:

    +
  • scalars: float, int, bool
  • +
  • vectors (2, 3 or 4 components)
  • +
  • matrices (3x3 or 4x4)
  • +
  • samplers (textures)
  • +
+

Some SFML-specific types can be converted:

+

Every uniform variable in a shader can be set through one of the setUniform() or setUniformArray() overloads. For example, if you have a shader with the following uniforms:

uniform float offset;
uniform vec3 point;
uniform vec4 color;
uniform mat4 matrix;
uniform sampler2D overlay;
uniform sampler2D current;

You can set their values from C++ code as follows, using the types defined in the sf::Glsl namespace:

shader.setUniform("offset", 2.f);
shader.setUniform("point", sf::Vector3f(0.5f, 0.8f, 0.3f));
shader.setUniform("color", sf::Glsl::Vec4(color)); // color is a sf::Color
shader.setUniform("matrix", sf::Glsl::Mat4(transform)); // transform is a sf::Transform
shader.setUniform("overlay", texture); // texture is a sf::Texture
shader.setUniform("current", sf::Shader::CurrentTexture);

The old setParameter() overloads are deprecated and will be removed in a future version. You should use their setUniform() equivalents instead.

+

The special Shader::CurrentTexture argument maps the given sampler2D uniform to the current texture of the object being drawn (which cannot be known in advance).

+

To apply a shader to a drawable, you must pass it as an additional parameter to the RenderWindow::draw function:

window.draw(sprite, &shader);

... which is in fact just a shortcut for this:

states.shader = &shader;
window.draw(sprite, states);

In the code above we pass a pointer to the shader, because it may be null (which means "no shader").

+

Shaders can be used on any drawable, but some combinations are not interesting. For example, using a vertex shader on a sf::Sprite is limited because there are only 4 vertices, the sprite would have to be subdivided in order to apply wave effects. Another bad example is a fragment shader with sf::Text: the texture of the text is not the actual text that you see on screen, it is a big texture containing all the characters of the font in an arbitrary order; thus, texture lookups on pixels other than the current one may not give you the expected result.

+

Shaders can also be used to apply global post-effects to the current contents of the target (like the old sf::PostFx class in SFML 1). This can be done in two different ways:

    +
  • draw everything to a sf::RenderTexture, then draw it to the main target using the shader
  • +
  • draw everything directly to the main target, then use sf::Texture::update(Window&) to copy its contents to a texture and draw it to the main target using the shader
  • +
+

The first technique is more optimized because it doesn't involve retrieving the target's pixels to system memory, but the second one doesn't impact the rendering process and can be easily inserted anywhere without impacting all the code.

+

Like sf::Texture that can be used as a raw OpenGL texture, sf::Shader can also be used directly as a raw shader for custom OpenGL geometry.

... render OpenGL geometry ...
sf::Shader::bind(NULL);
See also
sf::Glsl
+ +

Definition at line 52 of file Shader.hpp.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum sf::Shader::Type
+
+ +

Types of shaders.

+ + + + +
Enumerator
Vertex 

Vertex shader

+
Geometry 

Geometry shader.

+
Fragment 

Fragment (pixel) shader.

+
+ +

Definition at line 60 of file Shader.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Shader()

+ +
+
+ + + + + + + +
sf::Shader::Shader ()
+
+ +

Default constructor.

+

This constructor creates an invalid shader.

+ +
+
+ +

◆ ~Shader()

+ +
+
+ + + + + + + +
sf::Shader::~Shader ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ bind()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::Shader::bind (const Shadershader)
+
+static
+
+ +

Bind a shader for rendering.

+

This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::Shader with OpenGL code.

+
sf::Shader s1, s2;
...
sf::Shader::bind(&s1);
// draw OpenGL stuff that use s1...
// draw OpenGL stuff that use s2...
// draw OpenGL stuff that use no shader...
Parameters
+ + +
shaderShader to bind, can be null to use no shader
+
+
+ +
+
+ +

◆ getNativeHandle()

+ +
+
+ + + + + + + +
unsigned int sf::Shader::getNativeHandle () const
+
+ +

Get the underlying OpenGL handle of the shader.

+

You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

+
Returns
OpenGL handle of the shader or 0 if not yet loaded
+ +
+
+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
static bool sf::Shader::isAvailable ()
+
+static
+
+ +

Tell whether or not the system supports shaders.

+

This function should always be called before using the shader features. If it returns false, then any attempt to use sf::Shader will fail.

+
Returns
True if shaders are supported, false otherwise
+ +
+
+ +

◆ isGeometryAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
static bool sf::Shader::isGeometryAvailable ()
+
+static
+
+ +

Tell whether or not the system supports geometry shaders.

+

This function should always be called before using the geometry shader features. If it returns false, then any attempt to use sf::Shader geometry shader features will fail.

+

This function can only return true if isAvailable() would also return true, since shaders in general have to be supported in order for geometry shaders to be supported as well.

+

Note: The first call to this function, whether by your code or SFML will result in a context switch.

+
Returns
True if geometry shaders are supported, false otherwise
+ +
+
+ +

◆ loadFromFile() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromFile (const std::string & filename,
Type type 
)
+
+ +

Load the vertex, geometry or fragment shader from a file.

+

This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source must be a text file containing a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
filenamePath of the vertex, geometry or fragment shader file to load
typeType of shader (vertex, geometry or fragment)
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromMemory, loadFromStream
+ +
+
+ +

◆ loadFromFile() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromFile (const std::string & vertexShaderFilename,
const std::string & fragmentShaderFilename 
)
+
+ +

Load both the vertex and fragment shaders from files.

+

This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be text files containing valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
vertexShaderFilenamePath of the vertex shader file to load
fragmentShaderFilenamePath of the fragment shader file to load
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromMemory, loadFromStream
+ +
+
+ +

◆ loadFromFile() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromFile (const std::string & vertexShaderFilename,
const std::string & geometryShaderFilename,
const std::string & fragmentShaderFilename 
)
+
+ +

Load the vertex, geometry and fragment shaders from files.

+

This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be text files containing valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + + +
vertexShaderFilenamePath of the vertex shader file to load
geometryShaderFilenamePath of the geometry shader file to load
fragmentShaderFilenamePath of the fragment shader file to load
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromMemory, loadFromStream
+ +
+
+ +

◆ loadFromMemory() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromMemory (const std::string & shader,
Type type 
)
+
+ +

Load the vertex, geometry or fragment shader from a source code in memory.

+

This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source code must be a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
shaderString containing the source code of the shader
typeType of shader (vertex, geometry or fragment)
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromStream
+ +
+
+ +

◆ loadFromMemory() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromMemory (const std::string & vertexShader,
const std::string & fragmentShader 
)
+
+ +

Load both the vertex and fragment shaders from source codes in memory.

+

This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
vertexShaderString containing the source code of the vertex shader
fragmentShaderString containing the source code of the fragment shader
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromStream
+ +
+
+ +

◆ loadFromMemory() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromMemory (const std::string & vertexShader,
const std::string & geometryShader,
const std::string & fragmentShader 
)
+
+ +

Load the vertex, geometry and fragment shaders from source codes in memory.

+

This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The sources must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + + +
vertexShaderString containing the source code of the vertex shader
geometryShaderString containing the source code of the geometry shader
fragmentShaderString containing the source code of the fragment shader
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromStream
+ +
+
+ +

◆ loadFromStream() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromStream (InputStreamstream,
Type type 
)
+
+ +

Load the vertex, geometry or fragment shader from a custom stream.

+

This function loads a single shader, vertex, geometry or fragment, identified by the second argument. The source code must be a valid shader in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
streamSource stream to read from
typeType of shader (vertex, geometry or fragment)
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ loadFromStream() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromStream (InputStreamvertexShaderStream,
InputStreamfragmentShaderStream 
)
+
+ +

Load both the vertex and fragment shaders from custom streams.

+

This function loads both the vertex and the fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The source codes must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + +
vertexShaderStreamSource stream to read the vertex shader from
fragmentShaderStreamSource stream to read the fragment shader from
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ loadFromStream() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::Shader::loadFromStream (InputStreamvertexShaderStream,
InputStreamgeometryShaderStream,
InputStreamfragmentShaderStream 
)
+
+ +

Load the vertex, geometry and fragment shaders from custom streams.

+

This function loads the vertex, geometry and fragment shaders. If one of them fails to load, the shader is left empty (the valid shader is unloaded). The source codes must be valid shaders in GLSL language. GLSL is a C-like language dedicated to OpenGL shaders; you'll probably need to read a good documentation for it before writing your own shaders.

+
Parameters
+ + + + +
vertexShaderStreamSource stream to read the vertex shader from
geometryShaderStreamSource stream to read the geometry shader from
fragmentShaderStreamSource stream to read the fragment shader from
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ setParameter() [1/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
float x 
)
+
+ +

Change a float parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, float) instead.
+ +
+
+ +

◆ setParameter() [2/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
float x,
float y 
)
+
+ +

Change a 2-components vector parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec2&) instead.
+ +
+
+ +

◆ setParameter() [3/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
float x,
float y,
float z 
)
+
+ +

Change a 3-components vector parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec3&) instead.
+ +
+
+ +

◆ setParameter() [4/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
float x,
float y,
float z,
float w 
)
+
+ +

Change a 4-components vector parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec4&) instead.
+ +
+
+ +

◆ setParameter() [5/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
const Vector2fvector 
)
+
+ +

Change a 2-components vector parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec2&) instead.
+ +
+
+ +

◆ setParameter() [6/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
const Vector3fvector 
)
+
+ +

Change a 3-components vector parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec3&) instead.
+ +
+
+ +

◆ setParameter() [7/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
const Colorcolor 
)
+
+ +

Change a color parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Vec4&) instead.
+ +
+
+ +

◆ setParameter() [8/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
const Transformtransform 
)
+
+ +

Change a matrix parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Glsl::Mat4&) instead.
+ +
+
+ +

◆ setParameter() [9/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
const Texturetexture 
)
+
+ +

Change a texture parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, const Texture&) instead.
+ +
+
+ +

◆ setParameter() [10/10]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setParameter (const std::string & name,
CurrentTextureType  
)
+
+ +

Change a texture parameter of the shader.

+
Deprecated:
Use setUniform(const std::string&, CurrentTextureType) instead.
+ +
+
+ +

◆ setUniform() [1/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
float x 
)
+
+ +

Specify value for float uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
xValue of the float scalar
+
+
+ +
+
+ +

◆ setUniform() [2/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Vec2vector 
)
+
+ +

Specify value for vec2 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the vec2 vector
+
+
+ +
+
+ +

◆ setUniform() [3/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Vec3vector 
)
+
+ +

Specify value for vec3 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the vec3 vector
+
+
+ +
+
+ +

◆ setUniform() [4/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Vec4vector 
)
+
+ +

Specify value for vec4 uniform.

+

This overload can also be called with sf::Color objects that are converted to sf::Glsl::Vec4.

+

It is important to note that the components of the color are normalized before being passed to the shader. Therefore, they are converted from range [0 .. 255] to range [0 .. 1]. For example, a sf::Color(255, 127, 0, 255) will be transformed to a vec4(1.0, 0.5, 0.0, 1.0) in the shader.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the vec4 vector
+
+
+ +
+
+ +

◆ setUniform() [5/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
int x 
)
+
+ +

Specify value for int uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
xValue of the int scalar
+
+
+ +
+
+ +

◆ setUniform() [6/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Ivec2vector 
)
+
+ +

Specify value for ivec2 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the ivec2 vector
+
+
+ +
+
+ +

◆ setUniform() [7/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Ivec3vector 
)
+
+ +

Specify value for ivec3 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the ivec3 vector
+
+
+ +
+
+ +

◆ setUniform() [8/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Ivec4vector 
)
+
+ +

Specify value for ivec4 uniform.

+

This overload can also be called with sf::Color objects that are converted to sf::Glsl::Ivec4.

+

If color conversions are used, the ivec4 uniform in GLSL will hold the same values as the original sf::Color instance. For example, sf::Color(255, 127, 0, 255) is mapped to ivec4(255, 127, 0, 255).

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the ivec4 vector
+
+
+ +
+
+ +

◆ setUniform() [9/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
bool x 
)
+
+ +

Specify value for bool uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
xValue of the bool scalar
+
+
+ +
+
+ +

◆ setUniform() [10/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Bvec2vector 
)
+
+ +

Specify value for bvec2 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the bvec2 vector
+
+
+ +
+
+ +

◆ setUniform() [11/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Bvec3vector 
)
+
+ +

Specify value for bvec3 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the bvec3 vector
+
+
+ +
+
+ +

◆ setUniform() [12/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Bvec4vector 
)
+
+ +

Specify value for bvec4 uniform.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
vectorValue of the bvec4 vector
+
+
+ +
+
+ +

◆ setUniform() [13/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Mat3matrix 
)
+
+ +

Specify value for mat3 matrix.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
matrixValue of the mat3 matrix
+
+
+ +
+
+ +

◆ setUniform() [14/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Glsl::Mat4matrix 
)
+
+ +

Specify value for mat4 matrix.

+
Parameters
+ + + +
nameName of the uniform variable in GLSL
matrixValue of the mat4 matrix
+
+
+ +
+
+ +

◆ setUniform() [15/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
const Texturetexture 
)
+
+ +

Specify a texture as sampler2D uniform.

+

name is the name of the variable to change in the shader. The corresponding parameter in the shader must be a 2D texture (sampler2D GLSL type).

+

Example:

uniform sampler2D the_texture; // this is the variable in the shader
sf::Texture texture;
...
shader.setUniform("the_texture", texture);

It is important to note that texture must remain alive as long as the shader uses it, no copy is made internally.

+

To use the texture of the object being drawn, which cannot be known in advance, you can pass the special value sf::Shader::CurrentTexture:

shader.setUniform("the_texture", sf::Shader::CurrentTexture).
Parameters
+ + + +
nameName of the texture in the shader
textureTexture to assign
+
+
+ +
+
+ +

◆ setUniform() [16/16]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniform (const std::string & name,
CurrentTextureType  
)
+
+ +

Specify current texture as sampler2D uniform.

+

This overload maps a shader texture variable to the texture of the object being drawn, which cannot be known in advance. The second argument must be sf::Shader::CurrentTexture. The corresponding parameter in the shader must be a 2D texture (sampler2D GLSL type).

+

Example:

uniform sampler2D current; // this is the variable in the shader
shader.setUniform("current", sf::Shader::CurrentTexture);
Parameters
+ + +
nameName of the texture in the shader
+
+
+ +
+
+ +

◆ setUniformArray() [1/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const float * scalarArray,
std::size_t length 
)
+
+ +

Specify values for float[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
scalarArraypointer to array of float values
lengthNumber of elements in the array
+
+
+ +
+
+ +

◆ setUniformArray() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const Glsl::Vec2vectorArray,
std::size_t length 
)
+
+ +

Specify values for vec2[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
vectorArraypointer to array of vec2 values
lengthNumber of elements in the array
+
+
+ +
+
+ +

◆ setUniformArray() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const Glsl::Vec3vectorArray,
std::size_t length 
)
+
+ +

Specify values for vec3[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
vectorArraypointer to array of vec3 values
lengthNumber of elements in the array
+
+
+ +
+
+ +

◆ setUniformArray() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const Glsl::Vec4vectorArray,
std::size_t length 
)
+
+ +

Specify values for vec4[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
vectorArraypointer to array of vec4 values
lengthNumber of elements in the array
+
+
+ +
+
+ +

◆ setUniformArray() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const Glsl::Mat3matrixArray,
std::size_t length 
)
+
+ +

Specify values for mat3[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
matrixArraypointer to array of mat3 values
lengthNumber of elements in the array
+
+
+ +
+
+ +

◆ setUniformArray() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Shader::setUniformArray (const std::string & name,
const Glsl::Mat4matrixArray,
std::size_t length 
)
+
+ +

Specify values for mat4[] array uniform.

+
Parameters
+ + + + +
nameName of the uniform variable in GLSL
matrixArraypointer to array of mat4 values
lengthNumber of elements in the array
+
+
+ +
+
+

Member Data Documentation

+ +

◆ CurrentTexture

+ +
+
+ + + + + +
+ + + + +
CurrentTextureType sf::Shader::CurrentTexture
+
+static
+
+ +

Represents the texture of the object being drawn.

+
See also
setUniform(const std::string&, CurrentTextureType)
+ +

Definition at line 82 of file Shader.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shader.png new file mode 100644 index 0000000000000000000000000000000000000000..52135c6f542c71076203eba2dca243b9cb8478e1 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0y~yV7SA;z!1Q}%)r3l`t7v<0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`soK-UF{Fa=?cCSfRvGZH zEswALpKjMQHBK;~O#EredRs0L>1COR;`e;t$E{O;ulhdg9+gsssgsxR&6uO|x96ni zrOH3`Mdwu8KcAfZQX_8qlH@g~bT{wYCv8~f!uR-RuI|n!eLo9~y4xpx;mt03>9o!H zP3Io>yjk{<%f2LV3Ld*ZUvXpOkKaXGrHewhq|P&VZS-@}!9PWx?^z`4i5E{vSv}#j z+hfle+jo6&T-P`4zuB2-x}|kHOY?HOVOR)?+k z@(5mci~TE?`^iIFrfBazaB7>*^iLgks((KhPkyj!;gZdvMOR-uKjYc;|7=^3>uvq% z(=s+sxt6VWdwO-&x(uD;S$c1~-m0!Xy?Vm!bvv`xpA`+?!zFdM$f~oya7A=j_PnwK zInPCV3wPG{?Oh!0bt!)1FQMs6l&|P(d1e`IxU=l`fuh@a%BMUp+4=ZQsyp^X<)zI# zz2|$s+j>0N^L-yXLwhB|m!lE{K*$a~M{%SGo(4A)4 zAh_`iV^2paUxLfKxjT + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Shape Member List
+
+
+ +

This is the complete list of members for sf::Shape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getFillColor() constsf::Shape
getGlobalBounds() constsf::Shape
getInverseTransform() constsf::Transformable
getLocalBounds() constsf::Shape
getOrigin() constsf::Transformable
getOutlineColor() constsf::Shape
getOutlineThickness() constsf::Shape
getPoint(std::size_t index) const =0sf::Shapepure virtual
getPointCount() const =0sf::Shapepure virtual
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getTexture() constsf::Shape
getTextureRect() constsf::Shape
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setFillColor(const Color &color)sf::Shape
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setOutlineColor(const Color &color)sf::Shape
setOutlineThickness(float thickness)sf::Shape
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setTexture(const Texture *texture, bool resetRect=false)sf::Shape
setTextureRect(const IntRect &rect)sf::Shape
Shape()sf::Shapeprotected
Transformable()sf::Transformable
update()sf::Shapeprotected
~Drawable()sf::Drawableinlinevirtual
~Shape()sf::Shapevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.html new file mode 100644 index 0000000..ea4bec8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.html @@ -0,0 +1,1328 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Base class for textured shapes with outline. + More...

+ +

#include <Shape.hpp>

+
+Inheritance diagram for sf::Shape:
+
+
+ + +sf::Drawable +sf::Transformable +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~Shape ()
 Virtual destructor. More...
 
void setTexture (const Texture *texture, bool resetRect=false)
 Change the source texture of the shape. More...
 
void setTextureRect (const IntRect &rect)
 Set the sub-rectangle of the texture that the shape will display. More...
 
void setFillColor (const Color &color)
 Set the fill color of the shape. More...
 
void setOutlineColor (const Color &color)
 Set the outline color of the shape. More...
 
void setOutlineThickness (float thickness)
 Set the thickness of the shape's outline. More...
 
const TexturegetTexture () const
 Get the source texture of the shape. More...
 
const IntRectgetTextureRect () const
 Get the sub-rectangle of the texture displayed by the shape. More...
 
const ColorgetFillColor () const
 Get the fill color of the shape. More...
 
const ColorgetOutlineColor () const
 Get the outline color of the shape. More...
 
float getOutlineThickness () const
 Get the outline thickness of the shape. More...
 
virtual std::size_t getPointCount () const =0
 Get the total number of points of the shape. More...
 
virtual Vector2f getPoint (std::size_t index) const =0
 Get a point of the shape. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global (non-minimal) bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+ + + + + + + +

+Protected Member Functions

 Shape ()
 Default constructor. More...
 
void update ()
 Recompute the internal geometry of the shape. More...
 
+

Detailed Description

+

Base class for textured shapes with outline.

+

sf::Shape is a drawable class that allows to define and display a custom convex shape on a render target.

+

It's only an abstract base, it needs to be specialized for concrete types of shapes (circle, rectangle, convex polygon, star, ...).

+

In addition to the attributes provided by the specialized shape classes, a shape always has the following attributes:

    +
  • a texture
  • +
  • a texture rectangle
  • +
  • a fill color
  • +
  • an outline color
  • +
  • an outline thickness
  • +
+

Each feature is optional, and can be disabled easily:

    +
  • the texture can be null
  • +
  • the fill/outline colors can be sf::Color::Transparent
  • +
  • the outline thickness can be zero
  • +
+

You can write your own derived shape class, there are only two virtual functions to override:

    +
  • getPointCount must return the number of points of the shape
  • +
  • getPoint must return the points of the shape
  • +
+
See also
sf::RectangleShape, sf::CircleShape, sf::ConvexShape, sf::Transformable
+ +

Definition at line 44 of file Shape.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~Shape()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Shape::~Shape ()
+
+virtual
+
+ +

Virtual destructor.

+ +
+
+ +

◆ Shape()

+ +
+
+ + + + + +
+ + + + + + + +
sf::Shape::Shape ()
+
+protected
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ getFillColor()

+ +
+
+ + + + + + + +
const Color& sf::Shape::getFillColor () const
+
+ +

Get the fill color of the shape.

+
Returns
Fill color of the shape
+
See also
setFillColor
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Shape::getGlobalBounds () const
+
+ +

Get the global (non-minimal) bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the shape in the global 2D world's coordinate system.

+

This function does not necessarily return the minimal bounding rectangle. It merely ensures that the returned rectangle covers all the vertices (but possibly more). This allows for a fast approximation of the bounds as a first check; you may want to use more precise checks on top of that.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Shape::getLocalBounds () const
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getOutlineColor()

+ +
+
+ + + + + + + +
const Color& sf::Shape::getOutlineColor () const
+
+ +

Get the outline color of the shape.

+
Returns
Outline color of the shape
+
See also
setOutlineColor
+ +
+
+ +

◆ getOutlineThickness()

+ +
+
+ + + + + + + +
float sf::Shape::getOutlineThickness () const
+
+ +

Get the outline thickness of the shape.

+
Returns
Outline thickness of the shape
+
See also
setOutlineThickness
+ +
+
+ +

◆ getPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2f sf::Shape::getPoint (std::size_t index) const
+
+pure virtual
+
+ +

Get a point of the shape.

+

The returned point is in local coordinates, that is, the shape's transforms (position, rotation, scale) are not taken into account. The result is undefined if index is out of the valid range.

+
Parameters
+ + +
indexIndex of the point to get, in range [0 .. getPointCount() - 1]
+
+
+
Returns
index-th point of the shape
+
See also
getPointCount
+ +

Implemented in sf::ConvexShape, sf::CircleShape, and sf::RectangleShape.

+ +
+
+ +

◆ getPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::size_t sf::Shape::getPointCount () const
+
+pure virtual
+
+ +

Get the total number of points of the shape.

+
Returns
Number of points of the shape
+
See also
getPoint
+ +

Implemented in sf::CircleShape, sf::RectangleShape, and sf::ConvexShape.

+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + + + +
const Texture* sf::Shape::getTexture () const
+
+ +

Get the source texture of the shape.

+

If the shape has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

+
Returns
Pointer to the shape's texture
+
See also
setTexture
+ +
+
+ +

◆ getTextureRect()

+ +
+
+ + + + + + + +
const IntRect& sf::Shape::getTextureRect () const
+
+ +

Get the sub-rectangle of the texture displayed by the shape.

+
Returns
Texture rectangle of the shape
+
See also
setTextureRect
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setFillColor()

+ +
+
+ + + + + + + + +
void sf::Shape::setFillColor (const Colorcolor)
+
+ +

Set the fill color of the shape.

+

This color is modulated (multiplied) with the shape's texture if any. It can be used to colorize the shape, or change its global opacity. You can use sf::Color::Transparent to make the inside of the shape transparent, and have the outline alone. By default, the shape's fill color is opaque white.

+
Parameters
+ + +
colorNew color of the shape
+
+
+
See also
getFillColor, setOutlineColor
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOutlineColor()

+ +
+
+ + + + + + + + +
void sf::Shape::setOutlineColor (const Colorcolor)
+
+ +

Set the outline color of the shape.

+

By default, the shape's outline color is opaque white.

+
Parameters
+ + +
colorNew outline color of the shape
+
+
+
See also
getOutlineColor, setFillColor
+ +
+
+ +

◆ setOutlineThickness()

+ +
+
+ + + + + + + + +
void sf::Shape::setOutlineThickness (float thickness)
+
+ +

Set the thickness of the shape's outline.

+

Note that negative values are allowed (so that the outline expands towards the center of the shape), and using zero disables the outline. By default, the outline thickness is 0.

+
Parameters
+ + +
thicknessNew outline thickness
+
+
+
See also
getOutlineThickness
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Shape::setTexture (const Texturetexture,
bool resetRect = false 
)
+
+ +

Change the source texture of the shape.

+

The texture argument refers to a texture that must exist as long as the shape uses it. Indeed, the shape doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the shape tries to use it, the behavior is undefined. texture can be NULL to disable texturing. If resetRect is true, the TextureRect property of the shape is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

+
Parameters
+ + + +
textureNew texture
resetRectShould the texture rect be reset to the size of the new texture?
+
+
+
See also
getTexture, setTextureRect
+ +
+
+ +

◆ setTextureRect()

+ +
+
+ + + + + + + + +
void sf::Shape::setTextureRect (const IntRectrect)
+
+ +

Set the sub-rectangle of the texture that the shape will display.

+

The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

+
Parameters
+ + +
rectRectangle defining the region of the texture to display
+
+
+
See also
getTextureRect, setTexture
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Shape::update ()
+
+protected
+
+ +

Recompute the internal geometry of the shape.

+

This function must be called by the derived class everytime the shape's points change (i.e. the result of either getPointCount or getPoint is different).

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Shape.png new file mode 100644 index 0000000000000000000000000000000000000000..83c20e77afaba5c2390de4178f3467b35e326b97 GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0y~yV60(aVCdjrW?*2r?7P63fq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}8tdue7*fIbcJA9rs}%%T zZ#z$Y|Nn$};Nk@xyH1vF+M0gd?~lTn3x__4Kd=q*(rn5<#h}ol;`x2@>FG;;Z>%{z zeaY^PHK*A*j(lQlvXH5|epbET-ZRV4)FS8lwEtbkEjetqCss^6mp@_u6Wckmk$*e> z{JFmTiC56n``Z64S8u8`pJ!vg`}y+^DSM$Vz%Yh`fZZ8 zeY=;Q!NyPSCC8Tv2L zDt`Y%z0DcQ^>Sfh8QP&1vjV7TIA)r}9&TJ=3k`A(n9I($}n&8c(R7nZ%*a{1@4P0F7C z+y8D-_AF2MIZfZQJo)D|eu0js%q)pN85|?*90aEE3%Gb`x_KDef+-6;q?BL#7v7hwst!54`k0pRGj-2BzU3ZzGL#d?^7xRVi>n<`1ASGb>8Q*?C-|zm1!`WR=@Pk z8tJro$N!ecF)V-8_jLaDfSmO|+oJz6SseJJfBnz0n(H+U-Z5I%pWC9Z{CR%$gZ;j# z#-YbQ*=IkDa-Wv}lc5n5ijHDB_dhW*ZLDcf(2-Z*IL*$n==Cl=CI;pY&Q%P|1@_bU z1)T5SwsYW^#xHRA@ZPt~E(t#w5+iKE;g9e(2Dd(?t41lcZt^jpSL!Z$IU5mUjMmUH~!<}hY}ULX2*M;>VLLpHLJe0?j!%^ zy)#@@o1@;OP6^(y^x~zj-d{~+O@Ai42kZajmf0O|Uv)QDZr{A=xhkpd$@ff~@|~va z-!bK=S##E#y9t%oS1YIs-<-HV*7fF(c=N7#T|XmEM+Vhx5&v8F;nnq+W$RM{r|yr- zu59<7&#wP8M`?HJ^Cf?BytQJUa4*@FyLJ0+=byn-XMTNh)-P>ia9P;K%^EZRYYQ)xV3f5biGi7~l$*Zb+h0k>VclFKPr0kg=yx#nHs{16n<9TB8 zXBSvr+p9M1e;wP`U0R;3)BeXBt+*EIskI|~pUT^!*)^W4KJiLM?0f2cX)l<(8}U!U ne(4mZ6K(T?ycmz9f8c+3uz^dOeTpmt0|SGntDnm{r-UW|u + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Socket Member List
+
+
+ +

This is the complete list of members for sf::Socket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
AnyPort enum valuesf::Socket
close()sf::Socketprotected
create()sf::Socketprotected
create(SocketHandle handle)sf::Socketprotected
Disconnected enum valuesf::Socket
Done enum valuesf::Socket
Error enum valuesf::Socket
getHandle() constsf::Socketprotected
isBlocking() constsf::Socket
NonCopyable()sf::NonCopyableinlineprivate
NotReady enum valuesf::Socket
Partial enum valuesf::Socket
setBlocking(bool blocking)sf::Socket
Socket(Type type)sf::Socketprotected
SocketSelector (defined in sf::Socket)sf::Socketfriend
Status enum namesf::Socket
Tcp enum valuesf::Socketprotected
Type enum namesf::Socketprotected
Udp enum valuesf::Socketprotected
~NonCopyable()sf::NonCopyableinlineprivate
~Socket()sf::Socketvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.html new file mode 100644 index 0000000..badd19d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.html @@ -0,0 +1,476 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Base class for all the socket types. + More...

+ +

#include <Socket.hpp>

+
+Inheritance diagram for sf::Socket:
+
+
+ + +sf::NonCopyable +sf::TcpListener +sf::TcpSocket +sf::UdpSocket + +
+ + + + + + + + +

+Public Types

enum  Status {
+  Done, +NotReady, +Partial, +Disconnected, +
+  Error +
+ }
 Status codes that may be returned by socket functions. More...
 
enum  { AnyPort = 0 + }
 Some special values used by sockets. More...
 
+ + + + + + + + + + +

+Public Member Functions

virtual ~Socket ()
 Destructor. More...
 
void setBlocking (bool blocking)
 Set the blocking state of the socket. More...
 
bool isBlocking () const
 Tell whether the socket is in blocking or non-blocking mode. More...
 
+ + + + +

+Protected Types

enum  Type { Tcp, +Udp + }
 Types of protocols that the socket can use. More...
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 Socket (Type type)
 Default constructor. More...
 
SocketHandle getHandle () const
 Return the internal handle of the socket. More...
 
void create ()
 Create the internal representation of the socket. More...
 
void create (SocketHandle handle)
 Create the internal representation of the socket from a socket handle. More...
 
void close ()
 Close the socket gracefully. More...
 
+ + + +

+Friends

+class SocketSelector
 
+

Detailed Description

+

Base class for all the socket types.

+

This class mainly defines internal stuff to be used by derived classes.

+

The only public features that it defines, and which is therefore common to all the socket classes, is the blocking state. All sockets can be set as blocking or non-blocking.

+

In blocking mode, socket functions will hang until the operation completes, which means that the entire program (well, in fact the current thread if you use multiple ones) will be stuck waiting for your socket operation to complete.

+

In non-blocking mode, all the socket functions will return immediately. If the socket is not ready to complete the requested operation, the function simply returns the proper status code (Socket::NotReady).

+

The default mode, which is blocking, is the one that is generally used, in combination with threads or selectors. The non-blocking mode is rather used in real-time applications that run an endless loop that can poll the socket often enough, and cannot afford blocking this loop.

+
See also
sf::TcpListener, sf::TcpSocket, sf::UdpSocket
+ +

Definition at line 45 of file Socket.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ +

Some special values used by sockets.

+ + +
Enumerator
AnyPort 

Special value that tells the system to pick any available port.

+
+ +

Definition at line 66 of file Socket.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + +
enum sf::Socket::Status
+
+ +

Status codes that may be returned by socket functions.

+ + + + + + +
Enumerator
Done 

The socket has sent / received the data.

+
NotReady 

The socket is not ready to send / receive data yet.

+
Partial 

The socket sent a part of the data.

+
Disconnected 

The TCP socket has been disconnected.

+
Error 

An unexpected error happened.

+
+ +

Definition at line 53 of file Socket.hpp.

+ +
+
+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Type
+
+protected
+
+ +

Types of protocols that the socket can use.

+ + + +
Enumerator
Tcp 

TCP protocol.

+
Udp 

UDP protocol.

+
+ +

Definition at line 114 of file Socket.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~Socket()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Socket::~Socket ()
+
+virtual
+
+ +

Destructor.

+ +
+
+ +

◆ Socket()

+ +
+
+ + + + + +
+ + + + + + + + +
sf::Socket::Socket (Type type)
+
+protected
+
+ +

Default constructor.

+

This constructor can only be accessed by derived classes.

+
Parameters
+ + +
typeType of the socket (TCP or UDP)
+
+
+ +
+
+

Member Function Documentation

+ +

◆ close()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::close ()
+
+protected
+
+ +

Close the socket gracefully.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::create ()
+
+protected
+
+ +

Create the internal representation of the socket.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::create (SocketHandle handle)
+
+protected
+
+ +

Create the internal representation of the socket from a socket handle.

+

This function can only be accessed by derived classes.

+
Parameters
+ + +
handleOS-specific handle of the socket to wrap
+
+
+ +
+
+ +

◆ getHandle()

+ +
+
+ + + + + +
+ + + + + + + +
SocketHandle sf::Socket::getHandle () const
+
+protected
+
+ +

Return the internal handle of the socket.

+

The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

+
Returns
The internal (OS-specific) handle of the socket
+ +
+
+ +

◆ isBlocking()

+ +
+
+ + + + + + + +
bool sf::Socket::isBlocking () const
+
+ +

Tell whether the socket is in blocking or non-blocking mode.

+
Returns
True if the socket is blocking, false otherwise
+
See also
setBlocking
+ +
+
+ +

◆ setBlocking()

+ +
+
+ + + + + + + + +
void sf::Socket::setBlocking (bool blocking)
+
+ +

Set the blocking state of the socket.

+

In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

+
Parameters
+ + +
blockingTrue to set the socket as blocking, false for non-blocking
+
+
+
See also
isBlocking
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Socket.png new file mode 100644 index 0000000000000000000000000000000000000000..4143c15ecb1dba4c0d01adf4b5e69abe7271c784 GIT binary patch literal 1245 zcmeAS@N?(olHy`uVBq!ia0y~yVDx8TVCdjrW?*0l=$u)>z`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0uI=}HmD~?|;{A6oIUjk@`PQvF-HD!`6X*Lky1wFF+&8iC zL)~2VWj1TuXBR(Lk2~{x{n?YJE6&V6e%U6`YhTq4)9n?k*FQ%tzaLe2IlXk&{))=^ ztBcN=-hcghy>B=Zkj7dhYx2FY?>RQrGAI;_|0*&%bBiU8R3^ zn(c0_m#*6LpWR=7tbY3Y_mj3XullF@QuUjr=lc^<_g`)C_pCa7`Em8!ZWO2A-xOEY|JgDtZ@xoej^>X0+CiJn zT>kmRT0MTtr|Wjz){$XlX0?m=eEc)vID^!U=Q-=|d1sfOkJ);DUse3Q^~Po2e!d9( zwsY?}uRy;et>;(XyW3y&{rq&h<(lih`@gDv_s}(Y{_o!v{|g`ftGiyF51y^ zK2f4gnZbZTJCA`)fdv#SWt#&UG~Ng+^z8QIX5~0!$EdW?7u6f6W^C|pu=uy-{Oz}8 zyBQeTKeVR&ysU`ZMv!XcAc32eF*(RcGz(FT9d zuETb!ntZ>fEU}nn*RDAKxV`7oiTQf#R5QE3ci-l-=JO76HQlu5ui29?2R`nJxv_7; zYmcXM+SZ8IfmOWb*gfr!z1{Plx$}2Bg-xuBcmL`qCok`O_;IaR;_{bQTmH2CPJRB! zj>FpCw%@Mq#3#;tC%tF>&)zvdR{q|uqinlOEMAMrw%+;WW*af#O>g%d{n~Q2UwitL z`;kAduA6YW!!nNVyS$>fU36=B+LJ@im4e;|U#iLZT_bO%pZ`%?>+_^j$(PeNZxYwO zAzT#t{;%Egm*@Wl#((|&hU<1k`R7N^e#l>`?mvIt*-U%k<@8X!)#caTZ?=9@RrvIl z{VVs-Biqi$D&GG6ylU~goA%$YSEt_yTXVI^{+4~XUH9MO@DpWw!+R4iW^_MVH>>7i z$EiQRmfSNx)K?gN_S?>*Yorq5_nyD|>*tk4``>fj)Ufl++E61t>B{-Cz229&zqSAM z^7uVviPY~YOGMSbYkK~^x!1z;*70zsTgz2kL8SpaFWsqKHsz9_NVm7k + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SocketSelector Member List
+
+
+ +

This is the complete list of members for sf::SocketSelector, including all inherited members.

+ + + + + + + + + + +
add(Socket &socket)sf::SocketSelector
clear()sf::SocketSelector
isReady(Socket &socket) constsf::SocketSelector
operator=(const SocketSelector &right)sf::SocketSelector
remove(Socket &socket)sf::SocketSelector
SocketSelector()sf::SocketSelector
SocketSelector(const SocketSelector &copy)sf::SocketSelector
wait(Time timeout=Time::Zero)sf::SocketSelector
~SocketSelector()sf::SocketSelector
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SocketSelector.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SocketSelector.html new file mode 100644 index 0000000..ae79394 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SocketSelector.html @@ -0,0 +1,346 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::SocketSelector Class Reference
+
+
+ +

Multiplexer that allows to read from multiple sockets. + More...

+ +

#include <SocketSelector.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SocketSelector ()
 Default constructor. More...
 
 SocketSelector (const SocketSelector &copy)
 Copy constructor. More...
 
 ~SocketSelector ()
 Destructor. More...
 
void add (Socket &socket)
 Add a new socket to the selector. More...
 
void remove (Socket &socket)
 Remove a socket from the selector. More...
 
void clear ()
 Remove all the sockets stored in the selector. More...
 
bool wait (Time timeout=Time::Zero)
 Wait until one or more sockets are ready to receive. More...
 
bool isReady (Socket &socket) const
 Test a socket to know if it is ready to receive data. More...
 
SocketSelectoroperator= (const SocketSelector &right)
 Overload of assignment operator. More...
 
+

Detailed Description

+

Multiplexer that allows to read from multiple sockets.

+

Socket selectors provide a way to wait until some data is available on a set of sockets, instead of just one.

+

This is convenient when you have multiple sockets that may possibly receive data, but you don't know which one will be ready first. In particular, it avoids to use a thread for each socket; with selectors, a single thread can handle all the sockets.

+

All types of sockets can be used in a selector:

+

A selector doesn't store its own copies of the sockets (socket classes are not copyable anyway), it simply keeps a reference to the original sockets that you pass to the "add" function. Therefore, you can't use the selector as a socket container, you must store them outside and make sure that they are alive as long as they are used in the selector.

+

Using a selector is simple:

    +
  • populate the selector with all the sockets that you want to observe
  • +
  • make it wait until there is data available on any of the sockets
  • +
  • test each socket to find out which ones are ready
  • +
+

Usage example:

// Create a socket to listen to new connections
sf::TcpListener listener;
listener.listen(55001);
// Create a list to store the future clients
std::list<sf::TcpSocket*> clients;
// Create a selector
// Add the listener to the selector
selector.add(listener);
// Endless loop that waits for new connections
while (running)
{
// Make the selector wait for data on any socket
if (selector.wait())
{
// Test the listener
if (selector.isReady(listener))
{
// The listener is ready: there is a pending connection
if (listener.accept(*client) == sf::Socket::Done)
{
// Add the new client to the clients list
clients.push_back(client);
// Add the new client to the selector so that we will
// be notified when he sends something
selector.add(*client);
}
else
{
// Error, we won't get a new connection, delete the socket
delete client;
}
}
else
{
// The listener socket is not ready, test all other sockets (the clients)
for (std::list<sf::TcpSocket*>::iterator it = clients.begin(); it != clients.end(); ++it)
{
sf::TcpSocket& client = **it;
if (selector.isReady(client))
{
// The client has sent some data, we can receive it
sf::Packet packet;
if (client.receive(packet) == sf::Socket::Done)
{
...
}
}
}
}
}
}
See also
sf::Socket
+ +

Definition at line 43 of file SocketSelector.hpp.

+

Constructor & Destructor Documentation

+ +

◆ SocketSelector() [1/2]

+ +
+
+ + + + + + + +
sf::SocketSelector::SocketSelector ()
+
+ +

Default constructor.

+ +
+
+ +

◆ SocketSelector() [2/2]

+ +
+
+ + + + + + + + +
sf::SocketSelector::SocketSelector (const SocketSelectorcopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+ +

◆ ~SocketSelector()

+ +
+
+ + + + + + + +
sf::SocketSelector::~SocketSelector ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + + + + +
void sf::SocketSelector::add (Socketsocket)
+
+ +

Add a new socket to the selector.

+

This function keeps a weak reference to the socket, so you have to make sure that the socket is not destroyed while it is stored in the selector. This function does nothing if the socket is not valid.

+
Parameters
+ + +
socketReference to the socket to add
+
+
+
See also
remove, clear
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + +
void sf::SocketSelector::clear ()
+
+ +

Remove all the sockets stored in the selector.

+

This function doesn't destroy any instance, it simply removes all the references that the selector has to external sockets.

+
See also
add, remove
+ +
+
+ +

◆ isReady()

+ +
+
+ + + + + + + + +
bool sf::SocketSelector::isReady (Socketsocket) const
+
+ +

Test a socket to know if it is ready to receive data.

+

This function must be used after a call to Wait, to know which sockets are ready to receive data. If a socket is ready, a call to receive will never block because we know that there is data available to read. Note that if this function returns true for a TcpListener, this means that it is ready to accept a new connection.

+
Parameters
+ + +
socketSocket to test
+
+
+
Returns
True if the socket is ready to read, false otherwise
+
See also
isReady
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
SocketSelector& sf::SocketSelector::operator= (const SocketSelectorright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ remove()

+ +
+
+ + + + + + + + +
void sf::SocketSelector::remove (Socketsocket)
+
+ +

Remove a socket from the selector.

+

This function doesn't destroy the socket, it simply removes the reference that the selector has to it.

+
Parameters
+ + +
socketReference to the socket to remove
+
+
+
See also
add, clear
+ +
+
+ +

◆ wait()

+ +
+
+ + + + + + + + +
bool sf::SocketSelector::wait (Time timeout = Time::Zero)
+
+ +

Wait until one or more sockets are ready to receive.

+

This function returns as soon as at least one socket has some data available to be received. To know which sockets are ready, use the isReady function. If you use a timeout and no socket is ready before the timeout is over, the function returns false.

+
Parameters
+ + +
timeoutMaximum time to wait, (use Time::Zero for infinity)
+
+
+
Returns
True if there are sockets ready, false otherwise
+
See also
isReady
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound-members.html new file mode 100644 index 0000000..10dff03 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound-members.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Sound Member List
+
+
+ +

This is the complete list of members for sf::Sound, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getAttenuation() constsf::SoundSource
getBuffer() constsf::Sound
getLoop() constsf::Sound
getMinDistance() constsf::SoundSource
getPitch() constsf::SoundSource
getPlayingOffset() constsf::Sound
getPosition() constsf::SoundSource
getStatus() constsf::Soundvirtual
getVolume() constsf::SoundSource
isRelativeToListener() constsf::SoundSource
m_sourcesf::SoundSourceprotected
operator=(const Sound &right)sf::Sound
sf::SoundSource::operator=(const SoundSource &right)sf::SoundSource
pause()sf::Soundvirtual
Paused enum valuesf::SoundSource
play()sf::Soundvirtual
Playing enum valuesf::SoundSource
resetBuffer()sf::Sound
setAttenuation(float attenuation)sf::SoundSource
setBuffer(const SoundBuffer &buffer)sf::Sound
setLoop(bool loop)sf::Sound
setMinDistance(float distance)sf::SoundSource
setPitch(float pitch)sf::SoundSource
setPlayingOffset(Time timeOffset)sf::Sound
setPosition(float x, float y, float z)sf::SoundSource
setPosition(const Vector3f &position)sf::SoundSource
setRelativeToListener(bool relative)sf::SoundSource
setVolume(float volume)sf::SoundSource
Sound()sf::Sound
Sound(const SoundBuffer &buffer)sf::Soundexplicit
Sound(const Sound &copy)sf::Sound
SoundSource(const SoundSource &copy)sf::SoundSource
SoundSource()sf::SoundSourceprotected
Status enum namesf::SoundSource
stop()sf::Soundvirtual
Stopped enum valuesf::SoundSource
~Sound()sf::Sound
~SoundSource()sf::SoundSourcevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.html new file mode 100644 index 0000000..4c41c07 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.html @@ -0,0 +1,1123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Regular sound that can be played in the audio environment. + More...

+ +

#include <Sound.hpp>

+
+Inheritance diagram for sf::Sound:
+
+
+ + +sf::SoundSource +sf::AlResource + +
+ + + + + +

+Public Types

enum  Status { Stopped, +Paused, +Playing + }
 Enumeration of the sound source states. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Sound ()
 Default constructor. More...
 
 Sound (const SoundBuffer &buffer)
 Construct the sound with a buffer. More...
 
 Sound (const Sound &copy)
 Copy constructor. More...
 
 ~Sound ()
 Destructor. More...
 
void play ()
 Start or resume playing the sound. More...
 
void pause ()
 Pause the sound. More...
 
void stop ()
 stop playing the sound More...
 
void setBuffer (const SoundBuffer &buffer)
 Set the source buffer containing the audio data to play. More...
 
void setLoop (bool loop)
 Set whether or not the sound should loop after reaching the end. More...
 
void setPlayingOffset (Time timeOffset)
 Change the current playing position of the sound. More...
 
const SoundBuffergetBuffer () const
 Get the audio buffer attached to the sound. More...
 
bool getLoop () const
 Tell whether or not the sound is in loop mode. More...
 
Time getPlayingOffset () const
 Get the current playing position of the sound. More...
 
Status getStatus () const
 Get the current status of the sound (stopped, paused, playing) More...
 
Soundoperator= (const Sound &right)
 Overload of assignment operator. More...
 
void resetBuffer ()
 Reset the internal buffer of the sound. More...
 
void setPitch (float pitch)
 Set the pitch of the sound. More...
 
void setVolume (float volume)
 Set the volume of the sound. More...
 
void setPosition (float x, float y, float z)
 Set the 3D position of the sound in the audio scene. More...
 
void setPosition (const Vector3f &position)
 Set the 3D position of the sound in the audio scene. More...
 
void setRelativeToListener (bool relative)
 Make the sound's position relative to the listener or absolute. More...
 
void setMinDistance (float distance)
 Set the minimum distance of the sound. More...
 
void setAttenuation (float attenuation)
 Set the attenuation factor of the sound. More...
 
float getPitch () const
 Get the pitch of the sound. More...
 
float getVolume () const
 Get the volume of the sound. More...
 
Vector3f getPosition () const
 Get the 3D position of the sound in the audio scene. More...
 
bool isRelativeToListener () const
 Tell whether the sound's position is relative to the listener or is absolute. More...
 
float getMinDistance () const
 Get the minimum distance of the sound. More...
 
float getAttenuation () const
 Get the attenuation factor of the sound. More...
 
+ + + + +

+Protected Attributes

unsigned int m_source
 OpenAL source identifier. More...
 
+

Detailed Description

+

Regular sound that can be played in the audio environment.

+

sf::Sound is the class to use to play sounds.

+

It provides:

    +
  • Control (play, pause, stop)
  • +
  • Ability to modify output parameters in real-time (pitch, volume, ...)
  • +
  • 3D spatial features (position, attenuation, ...).
  • +
+

sf::Sound is perfect for playing short sounds that can fit in memory and require no latency, like foot steps or gun shots. For longer sounds, like background musics or long speeches, rather see sf::Music (which is based on streaming).

+

In order to work, a sound must be given a buffer of audio data to play. Audio data (samples) is stored in sf::SoundBuffer, and attached to a sound with the setBuffer() function. The buffer object attached to a sound must remain alive as long as the sound uses it. Note that multiple sounds can use the same sound buffer at the same time.

+

Usage example:

buffer.loadFromFile("sound.wav");
sf::Sound sound;
sound.setBuffer(buffer);
sound.play();
See also
sf::SoundBuffer, sf::Music
+ +

Definition at line 45 of file Sound.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::SoundSource::Status
+
+inherited
+
+ +

Enumeration of the sound source states.

+ + + + +
Enumerator
Stopped 

Sound is not playing.

+
Paused 

Sound is paused.

+
Playing 

Sound is playing.

+
+ +

Definition at line 50 of file SoundSource.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Sound() [1/3]

+ +
+
+ + + + + + + +
sf::Sound::Sound ()
+
+ +

Default constructor.

+ +
+
+ +

◆ Sound() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::Sound::Sound (const SoundBufferbuffer)
+
+explicit
+
+ +

Construct the sound with a buffer.

+
Parameters
+ + +
bufferSound buffer containing the audio data to play with the sound
+
+
+ +
+
+ +

◆ Sound() [3/3]

+ +
+
+ + + + + + + + +
sf::Sound::Sound (const Soundcopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+ +

◆ ~Sound()

+ +
+
+ + + + + + + +
sf::Sound::~Sound ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getAttenuation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getAttenuation () const
+
+inherited
+
+ +

Get the attenuation factor of the sound.

+
Returns
Attenuation factor of the sound
+
See also
setAttenuation, getMinDistance
+ +
+
+ +

◆ getBuffer()

+ +
+
+ + + + + + + +
const SoundBuffer* sf::Sound::getBuffer () const
+
+ +

Get the audio buffer attached to the sound.

+
Returns
Sound buffer attached to the sound (can be NULL)
+ +
+
+ +

◆ getLoop()

+ +
+
+ + + + + + + +
bool sf::Sound::getLoop () const
+
+ +

Tell whether or not the sound is in loop mode.

+
Returns
True if the sound is looping, false otherwise
+
See also
setLoop
+ +
+
+ +

◆ getMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getMinDistance () const
+
+inherited
+
+ +

Get the minimum distance of the sound.

+
Returns
Minimum distance of the sound
+
See also
setMinDistance, getAttenuation
+ +
+
+ +

◆ getPitch()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getPitch () const
+
+inherited
+
+ +

Get the pitch of the sound.

+
Returns
Pitch of the sound
+
See also
setPitch
+ +
+
+ +

◆ getPlayingOffset()

+ +
+
+ + + + + + + +
Time sf::Sound::getPlayingOffset () const
+
+ +

Get the current playing position of the sound.

+
Returns
Current playing position, from the beginning of the sound
+
See also
setPlayingOffset
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3f sf::SoundSource::getPosition () const
+
+inherited
+
+ +

Get the 3D position of the sound in the audio scene.

+
Returns
Position of the sound
+
See also
setPosition
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status sf::Sound::getStatus () const
+
+virtual
+
+ +

Get the current status of the sound (stopped, paused, playing)

+
Returns
Current status of the sound
+ +

Reimplemented from sf::SoundSource.

+ +
+
+ +

◆ getVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getVolume () const
+
+inherited
+
+ +

Get the volume of the sound.

+
Returns
Volume of the sound, in the range [0, 100]
+
See also
setVolume
+ +
+
+ +

◆ isRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::SoundSource::isRelativeToListener () const
+
+inherited
+
+ +

Tell whether the sound's position is relative to the listener or is absolute.

+
Returns
True if the position is relative, false if it's absolute
+
See also
setRelativeToListener
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Sound& sf::Sound::operator= (const Soundright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ pause()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Sound::pause ()
+
+virtual
+
+ +

Pause the sound.

+

This function pauses the sound if it was playing, otherwise (sound already paused or stopped) it has no effect.

+
See also
play, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ play()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Sound::play ()
+
+virtual
+
+ +

Start or resume playing the sound.

+

This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from beginning if it was it already playing. This function uses its own thread so that it doesn't block the rest of the program while the sound is played.

+
See also
pause, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ resetBuffer()

+ +
+
+ + + + + + + +
void sf::Sound::resetBuffer ()
+
+ +

Reset the internal buffer of the sound.

+

This function is for internal use only, you don't have to use it. It is called by the sf::SoundBuffer that this sound uses, when it is destroyed in order to prevent the sound from using a dead buffer.

+ +
+
+ +

◆ setAttenuation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setAttenuation (float attenuation)
+
+inherited
+
+ +

Set the attenuation factor of the sound.

+

The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

+
Parameters
+ + +
attenuationNew attenuation factor of the sound
+
+
+
See also
getAttenuation, setMinDistance
+ +
+
+ +

◆ setBuffer()

+ +
+
+ + + + + + + + +
void sf::Sound::setBuffer (const SoundBufferbuffer)
+
+ +

Set the source buffer containing the audio data to play.

+

It is important to note that the sound buffer is not copied, thus the sf::SoundBuffer instance must remain alive as long as it is attached to the sound.

+
Parameters
+ + +
bufferSound buffer to attach to the sound
+
+
+
See also
getBuffer
+ +
+
+ +

◆ setLoop()

+ +
+
+ + + + + + + + +
void sf::Sound::setLoop (bool loop)
+
+ +

Set whether or not the sound should loop after reaching the end.

+

If set, the sound will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for sound is false.

+
Parameters
+ + +
loopTrue to play in loop, false to play once
+
+
+
See also
getLoop
+ +
+
+ +

◆ setMinDistance()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setMinDistance (float distance)
+
+inherited
+
+ +

Set the minimum distance of the sound.

+

The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

+
Parameters
+ + +
distanceNew minimum distance of the sound
+
+
+
See also
getMinDistance, setAttenuation
+ +
+
+ +

◆ setPitch()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPitch (float pitch)
+
+inherited
+
+ +

Set the pitch of the sound.

+

The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

+
Parameters
+ + +
pitchNew pitch to apply to the sound
+
+
+
See also
getPitch
+ +
+
+ +

◆ setPlayingOffset()

+ +
+
+ + + + + + + + +
void sf::Sound::setPlayingOffset (Time timeOffset)
+
+ +

Change the current playing position of the sound.

+

The playing position can be changed when the sound is either paused or playing. Changing the playing position when the sound is stopped has no effect, since playing the sound will reset its position.

+
Parameters
+ + +
timeOffsetNew playing position, from the beginning of the sound
+
+
+
See also
getPlayingOffset
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::SoundSource::setPosition (float x,
float y,
float z 
)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + + + +
xX coordinate of the position of the sound in the scene
yY coordinate of the position of the sound in the scene
zZ coordinate of the position of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPosition (const Vector3fposition)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + +
positionPosition of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setRelativeToListener (bool relative)
+
+inherited
+
+ +

Make the sound's position relative to the listener or absolute.

+

Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

+
Parameters
+ + +
relativeTrue to set the position relative, false to set it absolute
+
+
+
See also
isRelativeToListener
+ +
+
+ +

◆ setVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setVolume (float volume)
+
+inherited
+
+ +

Set the volume of the sound.

+

The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

+
Parameters
+ + +
volumeVolume of the sound
+
+
+
See also
getVolume
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Sound::stop ()
+
+virtual
+
+ +

stop playing the sound

+

This function stops the sound if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

+
See also
play, pause
+ +

Implements sf::SoundSource.

+ +
+
+

Member Data Documentation

+ +

◆ m_source

+ +
+
+ + + + + +
+ + + + +
unsigned int sf::SoundSource::m_source
+
+protectedinherited
+
+ +

OpenAL source identifier.

+ +

Definition at line 309 of file SoundSource.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sound.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c235e81d4e49996d08ebeeb960bd9e9cd6e675 GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(VCdjrW?*2r>|(0Vz`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<045?szJNI?bYXu&* z>HR+U{!jFulaR-zzHsfV%Yn;gC+KY9xbpvq#9~etPoo3AleV1FpY62b*zfWic9XW8 zI1%!kyMOuFEBhxcF@NE6d)@4{{5~)L{;QpTYRcEYoLiQ;AKJ3c_o75`jC|FcS+j37 z+?w)krI^22=z1ILy~jc>O|MCU~? zQpRSvyH{_ExV|lX!(Usay!*Rf3T$S58lswPW-Ior<)_T+nOo-CNF9IU_%$T`RsSO0 zv=7F8D=+u^q@Mk#=jXHd=B<#bW$!wEJ^7qFf95g6THnvrvu56Ue1CqQ;nuf*z7)Be z+zsBP8~e*dEjQs-^`tM0cX&<;E1aydHYuyi(2bkn-ZQR*rkO9Rwg%0dnWv;Yb?!_5 zZ}Vm|Oe+*Vpq0lIanzS#^$yMiQFF#MkJK7M?`)}e;yB2{)WDd>6!CPk&-QIAe~Ba< zyLnpNNA-c7)p<69XLq)Q222gSK22_WL&%rO|7Tp@{@p}1(e8MaTCRFOLz|89SNBU| z#y=P(KK=Rft6}D&>}7Knz3q5!KDBz*%uBMhKj-yrpCo1Y|H{#trQaF$@j@;3@l|X| bIB35jQ|pWX>&|No3=9mOu6{1-oD!M + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundBuffer Member List
+
+
+ +

This is the complete list of members for sf::SoundBuffer, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AlResource()sf::AlResourceprivate
getChannelCount() constsf::SoundBuffer
getDuration() constsf::SoundBuffer
getSampleCount() constsf::SoundBuffer
getSampleRate() constsf::SoundBuffer
getSamples() constsf::SoundBuffer
loadFromFile(const std::string &filename)sf::SoundBuffer
loadFromMemory(const void *data, std::size_t sizeInBytes)sf::SoundBuffer
loadFromSamples(const Int16 *samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate)sf::SoundBuffer
loadFromStream(InputStream &stream)sf::SoundBuffer
operator=(const SoundBuffer &right)sf::SoundBuffer
saveToFile(const std::string &filename) constsf::SoundBuffer
Sound (defined in sf::SoundBuffer)sf::SoundBufferfriend
SoundBuffer()sf::SoundBuffer
SoundBuffer(const SoundBuffer &copy)sf::SoundBuffer
~AlResource()sf::AlResourceprivate
~SoundBuffer()sf::SoundBuffer
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.html new file mode 100644 index 0000000..4b924fe --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.html @@ -0,0 +1,524 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::SoundBuffer Class Reference
+
+
+ +

Storage for audio samples defining a sound. + More...

+ +

#include <SoundBuffer.hpp>

+
+Inheritance diagram for sf::SoundBuffer:
+
+
+ + +sf::AlResource + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SoundBuffer ()
 Default constructor. More...
 
 SoundBuffer (const SoundBuffer &copy)
 Copy constructor. More...
 
 ~SoundBuffer ()
 Destructor. More...
 
bool loadFromFile (const std::string &filename)
 Load the sound buffer from a file. More...
 
bool loadFromMemory (const void *data, std::size_t sizeInBytes)
 Load the sound buffer from a file in memory. More...
 
bool loadFromStream (InputStream &stream)
 Load the sound buffer from a custom stream. More...
 
bool loadFromSamples (const Int16 *samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate)
 Load the sound buffer from an array of audio samples. More...
 
bool saveToFile (const std::string &filename) const
 Save the sound buffer to an audio file. More...
 
const Int16 * getSamples () const
 Get the array of audio samples stored in the buffer. More...
 
Uint64 getSampleCount () const
 Get the number of samples stored in the buffer. More...
 
unsigned int getSampleRate () const
 Get the sample rate of the sound. More...
 
unsigned int getChannelCount () const
 Get the number of channels used by the sound. More...
 
Time getDuration () const
 Get the total duration of the sound. More...
 
SoundBufferoperator= (const SoundBuffer &right)
 Overload of assignment operator. More...
 
+ + + +

+Friends

+class Sound
 
+

Detailed Description

+

Storage for audio samples defining a sound.

+

A sound buffer holds the data of a sound, which is an array of audio samples.

+

A sample is a 16 bits signed integer that defines the amplitude of the sound at a given time. The sound is then reconstituted by playing these samples at a high rate (for example, 44100 samples per second is the standard rate used for playing CDs). In short, audio samples are like texture pixels, and a sf::SoundBuffer is similar to a sf::Texture.

+

A sound buffer can be loaded from a file (see loadFromFile() for the complete list of supported formats), from memory, from a custom stream (see sf::InputStream) or directly from an array of samples. It can also be saved back to a file.

+

Sound buffers alone are not very useful: they hold the audio data but cannot be played. To do so, you need to use the sf::Sound class, which provides functions to play/pause/stop the sound as well as changing the way it is outputted (volume, pitch, 3D position, ...). This separation allows more flexibility and better performances: indeed a sf::SoundBuffer is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Sound is a lightweight object, which can use the audio data of a sound buffer and change the way it is played without actually modifying that data. Note that it is also possible to bind several sf::Sound instances to the same sf::SoundBuffer.

+

It is important to note that the sf::Sound instance doesn't copy the buffer that it uses, it only keeps a reference to it. Thus, a sf::SoundBuffer must not be destructed while it is used by a sf::Sound (i.e. never write a function that uses a local sf::SoundBuffer instance for loading a sound).

+

Usage example:

// Declare a new sound buffer
// Load it from a file
if (!buffer.loadFromFile("sound.wav"))
{
// error...
}
// Create a sound source and bind it to the buffer
sf::Sound sound1;
sound1.setBuffer(buffer);
// Play the sound
sound1.play();
// Create another sound source bound to the same buffer
sf::Sound sound2;
sound2.setBuffer(buffer);
// Play it with a higher pitch -- the first sound remains unchanged
sound2.setPitch(2);
sound2.play();
See also
sf::Sound, sf::SoundBufferRecorder
+ +

Definition at line 49 of file SoundBuffer.hpp.

+

Constructor & Destructor Documentation

+ +

◆ SoundBuffer() [1/2]

+ +
+
+ + + + + + + +
sf::SoundBuffer::SoundBuffer ()
+
+ +

Default constructor.

+ +
+
+ +

◆ SoundBuffer() [2/2]

+ +
+
+ + + + + + + + +
sf::SoundBuffer::SoundBuffer (const SoundBuffercopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+ +

◆ ~SoundBuffer()

+ +
+
+ + + + + + + +
sf::SoundBuffer::~SoundBuffer ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getChannelCount()

+ +
+
+ + + + + + + +
unsigned int sf::SoundBuffer::getChannelCount () const
+
+ +

Get the number of channels used by the sound.

+

If the sound is mono then the number of channels will be 1, 2 for stereo, etc.

+
Returns
Number of channels
+
See also
getSampleRate, getDuration
+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + + + +
Time sf::SoundBuffer::getDuration () const
+
+ +

Get the total duration of the sound.

+
Returns
Sound duration
+
See also
getSampleRate, getChannelCount
+ +
+
+ +

◆ getSampleCount()

+ +
+
+ + + + + + + +
Uint64 sf::SoundBuffer::getSampleCount () const
+
+ +

Get the number of samples stored in the buffer.

+

The array of samples can be accessed with the getSamples() function.

+
Returns
Number of samples
+
See also
getSamples
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + + + +
unsigned int sf::SoundBuffer::getSampleRate () const
+
+ +

Get the sample rate of the sound.

+

The sample rate is the number of samples played per second. The higher, the better the quality (for example, 44100 samples/s is CD quality).

+
Returns
Sample rate (number of samples per second)
+
See also
getChannelCount, getDuration
+ +
+
+ +

◆ getSamples()

+ +
+
+ + + + + + + +
const Int16* sf::SoundBuffer::getSamples () const
+
+ +

Get the array of audio samples stored in the buffer.

+

The format of the returned samples is 16 bits signed integer (sf::Int16). The total number of samples in this array is given by the getSampleCount() function.

+
Returns
Read-only pointer to the array of sound samples
+
See also
getSampleCount
+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + + + + +
bool sf::SoundBuffer::loadFromFile (const std::string & filename)
+
+ +

Load the sound buffer from a file.

+

See the documentation of sf::InputSoundFile for the list of supported formats.

+
Parameters
+ + +
filenamePath of the sound file to load
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromMemory, loadFromStream, loadFromSamples, saveToFile
+ +
+
+ +

◆ loadFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::SoundBuffer::loadFromMemory (const void * data,
std::size_t sizeInBytes 
)
+
+ +

Load the sound buffer from a file in memory.

+

See the documentation of sf::InputSoundFile for the list of supported formats.

+
Parameters
+ + + +
dataPointer to the file data in memory
sizeInBytesSize of the data to load, in bytes
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromStream, loadFromSamples
+ +
+
+ +

◆ loadFromSamples()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::SoundBuffer::loadFromSamples (const Int16 * samples,
Uint64 sampleCount,
unsigned int channelCount,
unsigned int sampleRate 
)
+
+ +

Load the sound buffer from an array of audio samples.

+

The assumed format of the audio samples is 16 bits signed integer (sf::Int16).

+
Parameters
+ + + + + +
samplesPointer to the array of samples in memory
sampleCountNumber of samples in the array
channelCountNumber of channels (1 = mono, 2 = stereo, ...)
sampleRateSample rate (number of samples to play per second)
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory, saveToFile
+ +
+
+ +

◆ loadFromStream()

+ +
+
+ + + + + + + + +
bool sf::SoundBuffer::loadFromStream (InputStreamstream)
+
+ +

Load the sound buffer from a custom stream.

+

See the documentation of sf::InputSoundFile for the list of supported formats.

+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
True if loading succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory, loadFromSamples
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
SoundBuffer& sf::SoundBuffer::operator= (const SoundBufferright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ saveToFile()

+ +
+
+ + + + + + + + +
bool sf::SoundBuffer::saveToFile (const std::string & filename) const
+
+ +

Save the sound buffer to an audio file.

+

See the documentation of sf::OutputSoundFile for the list of supported formats.

+
Parameters
+ + +
filenamePath of the sound file to write
+
+
+
Returns
True if saving succeeded, false if it failed
+
See also
loadFromFile, loadFromMemory, loadFromSamples
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBuffer.png new file mode 100644 index 0000000000000000000000000000000000000000..056a390a3ceec4d1a927d67557bfb4ff72f9f2c2 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0y~yU`S?QU9VxrEZQ%Ky{8E?)Jk zlaD9b^U>{7E4GJ(R;Nn7_Pkpt-LqwXeZF_3>iwyPJrP=|KT?jLDlC0bxbo-+@g&KU z{M|N|eP?s-Pfeb3=;@lwl}y)o%$4qau5qys`L{0SMWwv{pNexCKLRW77l%)KCb@QJ zRD97z@#3YctXw89Ty<+X*afaV0!|Xz4d1^oNUY(O=s#X@g0+X$P^O5LIbl!T;_jR5 z2j-gmX4ui6CeQHw;v41%cC%_3?zsQo!7n)Rpc6w|mJ!3RFTBT$Skmq>oZFIfY~ja~ zy-T_RBTqk+W~x1)75cv?fU!noK|CdwXh$ z!0(b1n@%m|UYvK;{KBuve=L$s-mlts?((C1{j(A;Y<*rm?eiaDx75tT{l>@MIb7!7 ze6u+G=I7d$Ri0jDx9+#!*C{srAJ4dF@kxdkm-!7{T#misPq`(^!+N8vih+TF!PC{x JWt~$(6989;>~{bF literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder-members.html new file mode 100644 index 0000000..d916d23 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder-members.html @@ -0,0 +1,79 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundBufferRecorder Member List
+
+
+ +

This is the complete list of members for sf::SoundBufferRecorder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
getAvailableDevices()sf::SoundRecorderstatic
getBuffer() constsf::SoundBufferRecorder
getChannelCount() constsf::SoundRecorder
getDefaultDevice()sf::SoundRecorderstatic
getDevice() constsf::SoundRecorder
getSampleRate() constsf::SoundRecorder
isAvailable()sf::SoundRecorderstatic
onProcessSamples(const Int16 *samples, std::size_t sampleCount)sf::SoundBufferRecorderprotectedvirtual
onStart()sf::SoundBufferRecorderprotectedvirtual
onStop()sf::SoundBufferRecorderprotectedvirtual
setChannelCount(unsigned int channelCount)sf::SoundRecorder
setDevice(const std::string &name)sf::SoundRecorder
setProcessingInterval(Time interval)sf::SoundRecorderprotected
SoundRecorder()sf::SoundRecorderprotected
start(unsigned int sampleRate=44100)sf::SoundRecorder
stop()sf::SoundRecorder
~SoundBufferRecorder()sf::SoundBufferRecorder
~SoundRecorder()sf::SoundRecordervirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.html new file mode 100644 index 0000000..2c43e57 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.html @@ -0,0 +1,645 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized SoundRecorder which stores the captured audio data into a sound buffer. + More...

+ +

#include <SoundBufferRecorder.hpp>

+
+Inheritance diagram for sf::SoundBufferRecorder:
+
+
+ + +sf::SoundRecorder +sf::AlResource + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~SoundBufferRecorder ()
 destructor More...
 
const SoundBuffergetBuffer () const
 Get the sound buffer containing the captured audio data. More...
 
bool start (unsigned int sampleRate=44100)
 Start the capture. More...
 
void stop ()
 Stop the capture. More...
 
unsigned int getSampleRate () const
 Get the sample rate. More...
 
bool setDevice (const std::string &name)
 Set the audio capture device. More...
 
const std::string & getDevice () const
 Get the name of the current audio capture device. More...
 
void setChannelCount (unsigned int channelCount)
 Set the channel count of the audio capture device. More...
 
unsigned int getChannelCount () const
 Get the number of channels used by this recorder. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static std::vector< std::string > getAvailableDevices ()
 Get a list of the names of all available audio capture devices. More...
 
static std::string getDefaultDevice ()
 Get the name of the default audio capture device. More...
 
static bool isAvailable ()
 Check if the system supports audio capture. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

virtual bool onStart ()
 Start capturing audio data. More...
 
virtual bool onProcessSamples (const Int16 *samples, std::size_t sampleCount)
 Process a new chunk of recorded samples. More...
 
virtual void onStop ()
 Stop capturing audio data. More...
 
void setProcessingInterval (Time interval)
 Set the processing interval. More...
 
+

Detailed Description

+

Specialized SoundRecorder which stores the captured audio data into a sound buffer.

+

sf::SoundBufferRecorder allows to access a recorded sound through a sf::SoundBuffer, so that it can be played, saved to a file, etc.

+

It has the same simple interface as its base class (start(), stop()) and adds a function to retrieve the recorded sound buffer (getBuffer()).

+

As usual, don't forget to call the isAvailable() function before using this class (see sf::SoundRecorder for more details about this).

+

Usage example:

{
// Record some audio data
recorder.start();
...
recorder.stop();
// Get the buffer containing the captured audio data
const sf::SoundBuffer& buffer = recorder.getBuffer();
// Save it to a file (for example...)
buffer.saveToFile("my_record.ogg");
}
See also
sf::SoundRecorder
+ +

Definition at line 44 of file SoundBufferRecorder.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~SoundBufferRecorder()

+ +
+
+ + + + + + + +
sf::SoundBufferRecorder::~SoundBufferRecorder ()
+
+ +

destructor

+ +
+
+

Member Function Documentation

+ +

◆ getAvailableDevices()

+ +
+
+ + + + + +
+ + + + + + + +
static std::vector<std::string> sf::SoundRecorder::getAvailableDevices ()
+
+staticinherited
+
+ +

Get a list of the names of all available audio capture devices.

+

This function returns a vector of strings, containing the names of all available audio capture devices.

+
Returns
A vector of strings containing the names
+ +
+
+ +

◆ getBuffer()

+ +
+
+ + + + + + + +
const SoundBuffer& sf::SoundBufferRecorder::getBuffer () const
+
+ +

Get the sound buffer containing the captured audio data.

+

The sound buffer is valid only after the capture has ended. This function provides a read-only access to the internal sound buffer, but it can be copied if you need to make any modification to it.

+
Returns
Read-only access to the sound buffer
+ +
+
+ +

◆ getChannelCount()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int sf::SoundRecorder::getChannelCount () const
+
+inherited
+
+ +

Get the number of channels used by this recorder.

+

Currently only mono and stereo are supported, so the value is either 1 (for mono) or 2 (for stereo).

+
Returns
Number of channels
+
See also
setChannelCount
+ +
+
+ +

◆ getDefaultDevice()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string sf::SoundRecorder::getDefaultDevice ()
+
+staticinherited
+
+ +

Get the name of the default audio capture device.

+

This function returns the name of the default audio capture device. If none is available, an empty string is returned.

+
Returns
The name of the default audio capture device
+ +
+
+ +

◆ getDevice()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string& sf::SoundRecorder::getDevice () const
+
+inherited
+
+ +

Get the name of the current audio capture device.

+
Returns
The name of the current audio capture device
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int sf::SoundRecorder::getSampleRate () const
+
+inherited
+
+ +

Get the sample rate.

+

The sample rate defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality).

+
Returns
Sample rate, in samples per second
+ +
+
+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
static bool sf::SoundRecorder::isAvailable ()
+
+staticinherited
+
+ +

Check if the system supports audio capture.

+

This function should always be called before using the audio capture features. If it returns false, then any attempt to use sf::SoundRecorder or one of its derived classes will fail.

+
Returns
True if audio capture is supported, false otherwise
+ +
+
+ +

◆ onProcessSamples()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool sf::SoundBufferRecorder::onProcessSamples (const Int16 * samples,
std::size_t sampleCount 
)
+
+protectedvirtual
+
+ +

Process a new chunk of recorded samples.

+
Parameters
+ + + +
samplesPointer to the new chunk of recorded samples
sampleCountNumber of samples pointed by samples
+
+
+
Returns
True to continue the capture, or false to stop it
+ +

Implements sf::SoundRecorder.

+ +
+
+ +

◆ onStart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool sf::SoundBufferRecorder::onStart ()
+
+protectedvirtual
+
+ +

Start capturing audio data.

+
Returns
True to start the capture, or false to abort it
+ +

Reimplemented from sf::SoundRecorder.

+ +
+
+ +

◆ onStop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::SoundBufferRecorder::onStop ()
+
+protectedvirtual
+
+ +

Stop capturing audio data.

+ +

Reimplemented from sf::SoundRecorder.

+ +
+
+ +

◆ setChannelCount()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundRecorder::setChannelCount (unsigned int channelCount)
+
+inherited
+
+ +

Set the channel count of the audio capture device.

+

This method allows you to specify the number of channels used for recording. Currently only 16-bit mono and 16-bit stereo are supported.

+
Parameters
+ + +
channelCountNumber of channels. Currently only mono (1) and stereo (2) are supported.
+
+
+
See also
getChannelCount
+ +
+
+ +

◆ setDevice()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::SoundRecorder::setDevice (const std::string & name)
+
+inherited
+
+ +

Set the audio capture device.

+

This function sets the audio capture device to the device with the given name. It can be called on the fly (i.e: while recording). If you do so while recording and opening the device fails, it stops the recording.

+
Parameters
+ + +
nameThe name of the audio capture device
+
+
+
Returns
True, if it was able to set the requested device
+
See also
getAvailableDevices, getDefaultDevice
+ +
+
+ +

◆ setProcessingInterval()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundRecorder::setProcessingInterval (Time interval)
+
+protectedinherited
+
+ +

Set the processing interval.

+

The processing interval controls the period between calls to the onProcessSamples function. You may want to use a small interval if you want to process the recorded data in real time, for example.

+

Note: this is only a hint, the actual period may vary. So don't rely on this parameter to implement precise timing.

+

The default processing interval is 100 ms.

+
Parameters
+ + +
intervalProcessing interval
+
+
+ +
+
+ +

◆ start()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sf::SoundRecorder::start (unsigned int sampleRate = 44100)
+
+inherited
+
+ +

Start the capture.

+

The sampleRate parameter defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality). This function uses its own thread so that it doesn't block the rest of the program while the capture runs. Please note that only one capture can happen at the same time. You can select which capture device will be used, by passing the name to the setDevice() method. If none was selected before, the default capture device will be used. You can get a list of the names of all available capture devices by calling getAvailableDevices().

+
Parameters
+ + +
sampleRateDesired capture rate, in number of samples per second
+
+
+
Returns
True, if start of capture was successful
+
See also
stop, getAvailableDevices
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundRecorder::stop ()
+
+inherited
+
+ +

Stop the capture.

+
See also
start
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundBufferRecorder.png new file mode 100644 index 0000000000000000000000000000000000000000..f845c2c05019172fd8b9924118b545abded5273c GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0y~yV3@(cz|g_L%)r2)bLvtD0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`S6|-xPgHpEx}^SVf7jml^;V71toZk1@6_&ybzwR3*Y9jw z62|C!dgG04ev$igR=vIXHg~mjXrAh}my?#v^WJFowsh6KyWgaY_f87xubr}F-t4tG z?tHzs?(AXFKXOLgBj|kU$N9yxAMF>;4pPUy`=DOE<1~ zman$ha-jq69gGzmh7A0QY!4KVFxa$6G_(sae-KDwkaOZW;Ea%b_+P+VbE%{v;~AKa zwKs~S&SbJmY}|9l&);^3#j`fYU_{Q9So9b=~-`;%tc9{7oBc4p9K8MXY zs@I-v@w>YFcASHvHzAALf-lxxpg=| znsMcEKB+4=JkEqT#V3c(G>N$q5xTQHI + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundFileFactory Member List
+
+
+ +

This is the complete list of members for sf::SoundFileFactory, including all inherited members.

+ + + + + + + + + +
createReaderFromFilename(const std::string &filename)sf::SoundFileFactorystatic
createReaderFromMemory(const void *data, std::size_t sizeInBytes)sf::SoundFileFactorystatic
createReaderFromStream(InputStream &stream)sf::SoundFileFactorystatic
createWriterFromFilename(const std::string &filename)sf::SoundFileFactorystatic
registerReader()sf::SoundFileFactorystatic
registerWriter()sf::SoundFileFactorystatic
unregisterReader()sf::SoundFileFactorystatic
unregisterWriter()sf::SoundFileFactorystatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileFactory.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileFactory.html new file mode 100644 index 0000000..4502f17 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileFactory.html @@ -0,0 +1,389 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::SoundFileFactory Class Reference
+
+
+ +

Manages and instantiates sound file readers and writers. + More...

+ +

#include <SoundFileFactory.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename T >
static void registerReader ()
 Register a new reader. More...
 
template<typename T >
static void unregisterReader ()
 Unregister a reader. More...
 
template<typename T >
static void registerWriter ()
 Register a new writer. More...
 
template<typename T >
static void unregisterWriter ()
 Unregister a writer. More...
 
static SoundFileReadercreateReaderFromFilename (const std::string &filename)
 Instantiate the right reader for the given file on disk. More...
 
static SoundFileReadercreateReaderFromMemory (const void *data, std::size_t sizeInBytes)
 Instantiate the right codec for the given file in memory. More...
 
static SoundFileReadercreateReaderFromStream (InputStream &stream)
 Instantiate the right codec for the given file in stream. More...
 
static SoundFileWritercreateWriterFromFilename (const std::string &filename)
 Instantiate the right writer for the given file on disk. More...
 
+

Detailed Description

+

Manages and instantiates sound file readers and writers.

+

This class is where all the sound file readers and writers are registered.

+

You should normally only need to use its registration and unregistration functions; readers/writers creation and manipulation are wrapped into the higher-level classes sf::InputSoundFile and sf::OutputSoundFile.

+

To register a new reader (writer) use the sf::SoundFileFactory::registerReader (registerWriter) static function. You don't have to call the unregisterReader (unregisterWriter) function, unless you want to unregister a format before your application ends (typically, when a plugin is unloaded).

+

Usage example:

sf::SoundFileFactory::registerReader<MySoundFileReader>();
sf::SoundFileFactory::registerWriter<MySoundFileWriter>();
See also
sf::InputSoundFile, sf::OutputSoundFile, sf::SoundFileReader, sf::SoundFileWriter
+ +

Definition at line 46 of file SoundFileFactory.hpp.

+

Member Function Documentation

+ +

◆ createReaderFromFilename()

+ +
+
+ + + + + +
+ + + + + + + + +
static SoundFileReader* sf::SoundFileFactory::createReaderFromFilename (const std::string & filename)
+
+static
+
+ +

Instantiate the right reader for the given file on disk.

+

It's up to the caller to release the returned reader

+
Parameters
+ + +
filenamePath of the sound file
+
+
+
Returns
A new sound file reader that can read the given file, or null if no reader can handle it
+
See also
createReaderFromMemory, createReaderFromStream
+ +
+
+ +

◆ createReaderFromMemory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static SoundFileReader* sf::SoundFileFactory::createReaderFromMemory (const void * data,
std::size_t sizeInBytes 
)
+
+static
+
+ +

Instantiate the right codec for the given file in memory.

+

It's up to the caller to release the returned reader

+
Parameters
+ + + +
dataPointer to the file data in memory
sizeInBytesTotal size of the file data, in bytes
+
+
+
Returns
A new sound file codec that can read the given file, or null if no codec can handle it
+
See also
createReaderFromFilename, createReaderFromStream
+ +
+
+ +

◆ createReaderFromStream()

+ +
+
+ + + + + +
+ + + + + + + + +
static SoundFileReader* sf::SoundFileFactory::createReaderFromStream (InputStreamstream)
+
+static
+
+ +

Instantiate the right codec for the given file in stream.

+

It's up to the caller to release the returned reader

+
Parameters
+ + +
streamSource stream to read from
+
+
+
Returns
A new sound file codec that can read the given file, or null if no codec can handle it
+
See also
createReaderFromFilename, createReaderFromMemory
+ +
+
+ +

◆ createWriterFromFilename()

+ +
+
+ + + + + +
+ + + + + + + + +
static SoundFileWriter* sf::SoundFileFactory::createWriterFromFilename (const std::string & filename)
+
+static
+
+ +

Instantiate the right writer for the given file on disk.

+

It's up to the caller to release the returned writer

+
Parameters
+ + +
filenamePath of the sound file
+
+
+
Returns
A new sound file writer that can write given file, or null if no writer can handle it
+ +
+
+ +

◆ registerReader()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
static void sf::SoundFileFactory::registerReader ()
+
+static
+
+ +

Register a new reader.

+
See also
unregisterReader
+ +
+
+ +

◆ registerWriter()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
static void sf::SoundFileFactory::registerWriter ()
+
+static
+
+ +

Register a new writer.

+
See also
unregisterWriter
+ +
+
+ +

◆ unregisterReader()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
static void sf::SoundFileFactory::unregisterReader ()
+
+static
+
+ +

Unregister a reader.

+
See also
registerReader
+ +
+
+ +

◆ unregisterWriter()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
static void sf::SoundFileFactory::unregisterWriter ()
+
+static
+
+ +

Unregister a writer.

+
See also
registerWriter
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader-members.html new file mode 100644 index 0000000..123d78b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader-members.html @@ -0,0 +1,65 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundFileReader Member List
+
+
+ +

This is the complete list of members for sf::SoundFileReader, including all inherited members.

+ + + + + +
open(InputStream &stream, Info &info)=0sf::SoundFileReaderpure virtual
read(Int16 *samples, Uint64 maxCount)=0sf::SoundFileReaderpure virtual
seek(Uint64 sampleOffset)=0sf::SoundFileReaderpure virtual
~SoundFileReader()sf::SoundFileReaderinlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader.html new file mode 100644 index 0000000..f4960fa --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileReader.html @@ -0,0 +1,259 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::SoundFileReader Class Referenceabstract
+
+
+ +

Abstract base class for sound file decoding. + More...

+ +

#include <SoundFileReader.hpp>

+ + + + + +

+Classes

struct  Info
 Structure holding the audio properties of a sound file. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

virtual ~SoundFileReader ()
 Virtual destructor. More...
 
virtual bool open (InputStream &stream, Info &info)=0
 Open a sound file for reading. More...
 
virtual void seek (Uint64 sampleOffset)=0
 Change the current read position to the given sample offset. More...
 
virtual Uint64 read (Int16 *samples, Uint64 maxCount)=0
 Read audio samples from the open file. More...
 
+

Detailed Description

+

Abstract base class for sound file decoding.

+

This class allows users to read audio file formats not natively supported by SFML, and thus extend the set of supported readable audio formats.

+

A valid sound file reader must override the open, seek and write functions, as well as providing a static check function; the latter is used by SFML to find a suitable writer for a given input file.

+

To register a new reader, use the sf::SoundFileFactory::registerReader template function.

+

Usage example:

class MySoundFileReader : public sf::SoundFileReader
{
public:
static bool check(sf::InputStream& stream)
{
// typically, read the first few header bytes and check fields that identify the format
// return true if the reader can handle the format
}
virtual bool open(sf::InputStream& stream, Info& info)
{
// read the sound file header and fill the sound attributes
// (channel count, sample count and sample rate)
// return true on success
}
virtual void seek(sf::Uint64 sampleOffset)
{
// advance to the sampleOffset-th sample from the beginning of the sound
}
virtual sf::Uint64 read(sf::Int16* samples, sf::Uint64 maxCount)
{
// read up to 'maxCount' samples into the 'samples' array,
// convert them (for example from normalized float) if they are not stored
// as 16-bits signed integers in the file
// return the actual number of samples read
}
};
sf::SoundFileFactory::registerReader<MySoundFileReader>();
See also
sf::InputSoundFile, sf::SoundFileFactory, sf::SoundFileWriter
+ +

Definition at line 43 of file SoundFileReader.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~SoundFileReader()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::SoundFileReader::~SoundFileReader ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 62 of file SoundFileReader.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool sf::SoundFileReader::open (InputStreamstream,
Infoinfo 
)
+
+pure virtual
+
+ +

Open a sound file for reading.

+

The provided stream reference is valid as long as the SoundFileReader is alive, so it is safe to use/store it during the whole lifetime of the reader.

+
Parameters
+ + + +
streamSource stream to read from
infoStructure to fill with the properties of the loaded sound
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Uint64 sf::SoundFileReader::read (Int16 * samples,
Uint64 maxCount 
)
+
+pure virtual
+
+ +

Read audio samples from the open file.

+
Parameters
+ + + +
samplesPointer to the sample array to fill
maxCountMaximum number of samples to read
+
+
+
Returns
Number of samples actually read (may be less than maxCount)
+ +
+
+ +

◆ seek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void sf::SoundFileReader::seek (Uint64 sampleOffset)
+
+pure virtual
+
+ +

Change the current read position to the given sample offset.

+

The sample offset takes the channels into account. If you have a time offset instead, you can easily find the corresponding sample offset with the following formula: timeInSeconds * sampleRate * channelCount If the given offset exceeds to total number of samples, this function must jump to the end of the file.

+
Parameters
+ + +
sampleOffsetIndex of the sample to jump to, relative to the beginning
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter-members.html new file mode 100644 index 0000000..db62de1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundFileWriter Member List
+
+
+ +

This is the complete list of members for sf::SoundFileWriter, including all inherited members.

+ + + + +
open(const std::string &filename, unsigned int sampleRate, unsigned int channelCount)=0sf::SoundFileWriterpure virtual
write(const Int16 *samples, Uint64 count)=0sf::SoundFileWriterpure virtual
~SoundFileWriter()sf::SoundFileWriterinlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter.html new file mode 100644 index 0000000..01fc7a6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundFileWriter.html @@ -0,0 +1,219 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::SoundFileWriter Class Referenceabstract
+
+
+ +

Abstract base class for sound file encoding. + More...

+ +

#include <SoundFileWriter.hpp>

+ + + + + + + + + + + +

+Public Member Functions

virtual ~SoundFileWriter ()
 Virtual destructor. More...
 
virtual bool open (const std::string &filename, unsigned int sampleRate, unsigned int channelCount)=0
 Open a sound file for writing. More...
 
virtual void write (const Int16 *samples, Uint64 count)=0
 Write audio samples to the open file. More...
 
+

Detailed Description

+

Abstract base class for sound file encoding.

+

This class allows users to write audio file formats not natively supported by SFML, and thus extend the set of supported writable audio formats.

+

A valid sound file writer must override the open and write functions, as well as providing a static check function; the latter is used by SFML to find a suitable writer for a given filename.

+

To register a new writer, use the sf::SoundFileFactory::registerWriter template function.

+

Usage example:

class MySoundFileWriter : public sf::SoundFileWriter
{
public:
static bool check(const std::string& filename)
{
// typically, check the extension
// return true if the writer can handle the format
}
virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount)
{
// open the file 'filename' for writing,
// write the given sample rate and channel count to the file header
// return true on success
}
virtual void write(const sf::Int16* samples, sf::Uint64 count)
{
// write 'count' samples stored at address 'samples',
// convert them (for example to normalized float) if the format requires it
}
};
sf::SoundFileFactory::registerWriter<MySoundFileWriter>();
See also
sf::OutputSoundFile, sf::SoundFileFactory, sf::SoundFileReader
+ +

Definition at line 41 of file SoundFileWriter.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~SoundFileWriter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::SoundFileWriter::~SoundFileWriter ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 49 of file SoundFileWriter.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool sf::SoundFileWriter::open (const std::string & filename,
unsigned int sampleRate,
unsigned int channelCount 
)
+
+pure virtual
+
+ +

Open a sound file for writing.

+
Parameters
+ + + + +
filenamePath of the file to open
sampleRateSample rate of the sound
channelCountNumber of channels of the sound
+
+
+
Returns
True if the file was successfully opened
+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void sf::SoundFileWriter::write (const Int16 * samples,
Uint64 count 
)
+
+pure virtual
+
+ +

Write audio samples to the open file.

+
Parameters
+ + + +
samplesPointer to the sample array to write
countNumber of samples to write
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder-members.html new file mode 100644 index 0000000..a4f879a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder-members.html @@ -0,0 +1,79 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundRecorder Member List
+
+
+ +

This is the complete list of members for sf::SoundRecorder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AlResource()sf::AlResourceprivate
getAvailableDevices()sf::SoundRecorderstatic
getChannelCount() constsf::SoundRecorder
getDefaultDevice()sf::SoundRecorderstatic
getDevice() constsf::SoundRecorder
getSampleRate() constsf::SoundRecorder
isAvailable()sf::SoundRecorderstatic
onProcessSamples(const Int16 *samples, std::size_t sampleCount)=0sf::SoundRecorderprotectedpure virtual
onStart()sf::SoundRecorderprotectedvirtual
onStop()sf::SoundRecorderprotectedvirtual
setChannelCount(unsigned int channelCount)sf::SoundRecorder
setDevice(const std::string &name)sf::SoundRecorder
setProcessingInterval(Time interval)sf::SoundRecorderprotected
SoundRecorder()sf::SoundRecorderprotected
start(unsigned int sampleRate=44100)sf::SoundRecorder
stop()sf::SoundRecorder
~AlResource()sf::AlResourceprivate
~SoundRecorder()sf::SoundRecordervirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.html new file mode 100644 index 0000000..0c54a99 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.html @@ -0,0 +1,618 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Abstract base class for capturing sound data. + More...

+ +

#include <SoundRecorder.hpp>

+
+Inheritance diagram for sf::SoundRecorder:
+
+
+ + +sf::AlResource +sf::SoundBufferRecorder + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~SoundRecorder ()
 destructor More...
 
bool start (unsigned int sampleRate=44100)
 Start the capture. More...
 
void stop ()
 Stop the capture. More...
 
unsigned int getSampleRate () const
 Get the sample rate. More...
 
bool setDevice (const std::string &name)
 Set the audio capture device. More...
 
const std::string & getDevice () const
 Get the name of the current audio capture device. More...
 
void setChannelCount (unsigned int channelCount)
 Set the channel count of the audio capture device. More...
 
unsigned int getChannelCount () const
 Get the number of channels used by this recorder. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static std::vector< std::string > getAvailableDevices ()
 Get a list of the names of all available audio capture devices. More...
 
static std::string getDefaultDevice ()
 Get the name of the default audio capture device. More...
 
static bool isAvailable ()
 Check if the system supports audio capture. More...
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 SoundRecorder ()
 Default constructor. More...
 
void setProcessingInterval (Time interval)
 Set the processing interval. More...
 
virtual bool onStart ()
 Start capturing audio data. More...
 
virtual bool onProcessSamples (const Int16 *samples, std::size_t sampleCount)=0
 Process a new chunk of recorded samples. More...
 
virtual void onStop ()
 Stop capturing audio data. More...
 
+

Detailed Description

+

Abstract base class for capturing sound data.

+

sf::SoundBuffer provides a simple interface to access the audio recording capabilities of the computer (the microphone).

+

As an abstract base class, it only cares about capturing sound samples, the task of making something useful with them is left to the derived class. Note that SFML provides a built-in specialization for saving the captured data to a sound buffer (see sf::SoundBufferRecorder).

+

A derived class has only one virtual function to override:

    +
  • onProcessSamples provides the new chunks of audio samples while the capture happens
  • +
+

Moreover, two additional virtual functions can be overridden as well if necessary:

    +
  • onStart is called before the capture happens, to perform custom initializations
  • +
  • onStop is called after the capture ends, to perform custom cleanup
  • +
+

A derived class can also control the frequency of the onProcessSamples calls, with the setProcessingInterval protected function. The default interval is chosen so that recording thread doesn't consume too much CPU, but it can be changed to a smaller value if you need to process the recorded data in real time, for example.

+

The audio capture feature may not be supported or activated on every platform, thus it is recommended to check its availability with the isAvailable() function. If it returns false, then any attempt to use an audio recorder will fail.

+

If you have multiple sound input devices connected to your computer (for example: microphone, external soundcard, webcam mic, ...) you can get a list of all available devices through the getAvailableDevices() function. You can then select a device by calling setDevice() with the appropriate device. Otherwise the default capturing device will be used.

+

By default the recording is in 16-bit mono. Using the setChannelCount method you can change the number of channels used by the audio capture device to record. Note that you have to decide whether you want to record in mono or stereo before starting the recording.

+

It is important to note that the audio capture happens in a separate thread, so that it doesn't block the rest of the program. In particular, the onProcessSamples virtual function (but not onStart and not onStop) will be called from this separate thread. It is important to keep this in mind, because you may have to take care of synchronization issues if you share data between threads. Another thing to bear in mind is that you must call stop() in the destructor of your derived class, so that the recording thread finishes before your object is destroyed.

+

Usage example:

class CustomRecorder : public sf::SoundRecorder
{
~CustomRecorder()
{
// Make sure to stop the recording thread
stop();
}
virtual bool onStart() // optional
{
// Initialize whatever has to be done before the capture starts
...
// Return true to start playing
return true;
}
virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount)
{
// Do something with the new chunk of samples (store them, send them, ...)
...
// Return true to continue playing
return true;
}
virtual void onStop() // optional
{
// Clean up whatever has to be done after the capture ends
...
}
}
// Usage
if (CustomRecorder::isAvailable())
{
CustomRecorder recorder;
if (!recorder.start())
return -1;
...
recorder.stop();
}
See also
sf::SoundBufferRecorder
+ +

Definition at line 45 of file SoundRecorder.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ~SoundRecorder()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::SoundRecorder::~SoundRecorder ()
+
+virtual
+
+ +

destructor

+ +
+
+ +

◆ SoundRecorder()

+ +
+
+ + + + + +
+ + + + + + + +
sf::SoundRecorder::SoundRecorder ()
+
+protected
+
+ +

Default constructor.

+

This constructor is only meant to be called by derived classes.

+ +
+
+

Member Function Documentation

+ +

◆ getAvailableDevices()

+ +
+
+ + + + + +
+ + + + + + + +
static std::vector<std::string> sf::SoundRecorder::getAvailableDevices ()
+
+static
+
+ +

Get a list of the names of all available audio capture devices.

+

This function returns a vector of strings, containing the names of all available audio capture devices.

+
Returns
A vector of strings containing the names
+ +
+
+ +

◆ getChannelCount()

+ +
+
+ + + + + + + +
unsigned int sf::SoundRecorder::getChannelCount () const
+
+ +

Get the number of channels used by this recorder.

+

Currently only mono and stereo are supported, so the value is either 1 (for mono) or 2 (for stereo).

+
Returns
Number of channels
+
See also
setChannelCount
+ +
+
+ +

◆ getDefaultDevice()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string sf::SoundRecorder::getDefaultDevice ()
+
+static
+
+ +

Get the name of the default audio capture device.

+

This function returns the name of the default audio capture device. If none is available, an empty string is returned.

+
Returns
The name of the default audio capture device
+ +
+
+ +

◆ getDevice()

+ +
+
+ + + + + + + +
const std::string& sf::SoundRecorder::getDevice () const
+
+ +

Get the name of the current audio capture device.

+
Returns
The name of the current audio capture device
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + + + +
unsigned int sf::SoundRecorder::getSampleRate () const
+
+ +

Get the sample rate.

+

The sample rate defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality).

+
Returns
Sample rate, in samples per second
+ +
+
+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
static bool sf::SoundRecorder::isAvailable ()
+
+static
+
+ +

Check if the system supports audio capture.

+

This function should always be called before using the audio capture features. If it returns false, then any attempt to use sf::SoundRecorder or one of its derived classes will fail.

+
Returns
True if audio capture is supported, false otherwise
+ +
+
+ +

◆ onProcessSamples()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool sf::SoundRecorder::onProcessSamples (const Int16 * samples,
std::size_t sampleCount 
)
+
+protectedpure virtual
+
+ +

Process a new chunk of recorded samples.

+

This virtual function is called every time a new chunk of recorded data is available. The derived class can then do whatever it wants with it (storing it, playing it, sending it over the network, etc.).

+
Parameters
+ + + +
samplesPointer to the new chunk of recorded samples
sampleCountNumber of samples pointed by samples
+
+
+
Returns
True to continue the capture, or false to stop it
+ +

Implemented in sf::SoundBufferRecorder.

+ +
+
+ +

◆ onStart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool sf::SoundRecorder::onStart ()
+
+protectedvirtual
+
+ +

Start capturing audio data.

+

This virtual function may be overridden by a derived class if something has to be done every time a new capture starts. If not, this function can be ignored; the default implementation does nothing.

+
Returns
True to start the capture, or false to abort it
+ +

Reimplemented in sf::SoundBufferRecorder.

+ +
+
+ +

◆ onStop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::SoundRecorder::onStop ()
+
+protectedvirtual
+
+ +

Stop capturing audio data.

+

This virtual function may be overridden by a derived class if something has to be done every time the capture ends. If not, this function can be ignored; the default implementation does nothing.

+ +

Reimplemented in sf::SoundBufferRecorder.

+ +
+
+ +

◆ setChannelCount()

+ +
+
+ + + + + + + + +
void sf::SoundRecorder::setChannelCount (unsigned int channelCount)
+
+ +

Set the channel count of the audio capture device.

+

This method allows you to specify the number of channels used for recording. Currently only 16-bit mono and 16-bit stereo are supported.

+
Parameters
+ + +
channelCountNumber of channels. Currently only mono (1) and stereo (2) are supported.
+
+
+
See also
getChannelCount
+ +
+
+ +

◆ setDevice()

+ +
+
+ + + + + + + + +
bool sf::SoundRecorder::setDevice (const std::string & name)
+
+ +

Set the audio capture device.

+

This function sets the audio capture device to the device with the given name. It can be called on the fly (i.e: while recording). If you do so while recording and opening the device fails, it stops the recording.

+
Parameters
+ + +
nameThe name of the audio capture device
+
+
+
Returns
True, if it was able to set the requested device
+
See also
getAvailableDevices, getDefaultDevice
+ +
+
+ +

◆ setProcessingInterval()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundRecorder::setProcessingInterval (Time interval)
+
+protected
+
+ +

Set the processing interval.

+

The processing interval controls the period between calls to the onProcessSamples function. You may want to use a small interval if you want to process the recorded data in real time, for example.

+

Note: this is only a hint, the actual period may vary. So don't rely on this parameter to implement precise timing.

+

The default processing interval is 100 ms.

+
Parameters
+ + +
intervalProcessing interval
+
+
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + + +
bool sf::SoundRecorder::start (unsigned int sampleRate = 44100)
+
+ +

Start the capture.

+

The sampleRate parameter defines the number of audio samples captured per second. The higher, the better the quality (for example, 44100 samples/sec is CD quality). This function uses its own thread so that it doesn't block the rest of the program while the capture runs. Please note that only one capture can happen at the same time. You can select which capture device will be used, by passing the name to the setDevice() method. If none was selected before, the default capture device will be used. You can get a list of the names of all available capture devices by calling getAvailableDevices().

+
Parameters
+ + +
sampleRateDesired capture rate, in number of samples per second
+
+
+
Returns
True, if start of capture was successful
+
See also
stop, getAvailableDevices
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
void sf::SoundRecorder::stop ()
+
+ +

Stop the capture.

+
See also
start
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundRecorder.png new file mode 100644 index 0000000000000000000000000000000000000000..43a5f7e080f022e1db75478eb7d15cd6c5e10558 GIT binary patch literal 906 zcmeAS@N?(olHy`uVBq!ia0y~yV3@(cz|g_L%)r2)bLvtD0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`S<=(RF{Fa=?cCRs7Apw2 z@yoB=^Iv(r+ZDD)OVjV@uG*IV%B97v&v)`4)#r2ETXZ}h3noo^qIg8*WV5%9>g725 z%YW28&p#5}e0urQJhAL{m6zY|h|DeyQhnAPAsKIPA1nR)&+MOj)wivQpSCi54a@c& zW?SA*T4J2nef9k2q@~B!JU?iCW9Foiwq$MXjd#<|d%eukiQYIn{b||9{F5vCQ}#{` zeNlK!0lhoy$2*U=)&KkywjvnH1g-NpJQWGVWhL0SE4E&00 z4;}{PSjj#6!6akIt9P99K~MC`9YVL=?bmL85c%fXuKl93@84B9khbnlUC6YKr`74g z+Mj2go^(a)LBY?>6H8Zq-Q;p>UQ&Ma-8FAF9W{$(uw9;%d+T*b?d~a3#(N!JZQRaa zD;|BbPflv<&Yv9fI%b+Pys*^$_xI+qAM20I3SnHCUi-%X$Tul#A>*S(>yNG4RFj~+ z{ZW2jRPYURzo%jmrHmy<{Dm6Y1(-hwBr(W2@feuJQ7=$pTCS8_r& zp3L^yoOtw62-6R!rxcGc*tAF>>vQg4tU!|dBcEjX{Ex`{ImLAxn^bz;VPU;C!mBzv z-#h5EiADR389$fJywc_obbfk=TTcIvE$8Gcy}tzClAPYZQ!F~J+ibZK$V%bpdHdJyf7|(1^V_zoXE({TnFwYth}uQ~0kn*7`E$eAVEethp-mQ}BGO|I>hN6@Q{ zllijVc$^7wicb!mX)@R literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource-members.html new file mode 100644 index 0000000..8fe8daf --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource-members.html @@ -0,0 +1,89 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundSource Member List
+
+
+ +

This is the complete list of members for sf::SoundSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AlResource()sf::AlResourceprivate
getAttenuation() constsf::SoundSource
getMinDistance() constsf::SoundSource
getPitch() constsf::SoundSource
getPosition() constsf::SoundSource
getStatus() constsf::SoundSourcevirtual
getVolume() constsf::SoundSource
isRelativeToListener() constsf::SoundSource
m_sourcesf::SoundSourceprotected
operator=(const SoundSource &right)sf::SoundSource
pause()=0sf::SoundSourcepure virtual
Paused enum valuesf::SoundSource
play()=0sf::SoundSourcepure virtual
Playing enum valuesf::SoundSource
setAttenuation(float attenuation)sf::SoundSource
setMinDistance(float distance)sf::SoundSource
setPitch(float pitch)sf::SoundSource
setPosition(float x, float y, float z)sf::SoundSource
setPosition(const Vector3f &position)sf::SoundSource
setRelativeToListener(bool relative)sf::SoundSource
setVolume(float volume)sf::SoundSource
SoundSource(const SoundSource &copy)sf::SoundSource
SoundSource()sf::SoundSourceprotected
Status enum namesf::SoundSource
stop()=0sf::SoundSourcepure virtual
Stopped enum valuesf::SoundSource
~AlResource()sf::AlResourceprivate
~SoundSource()sf::SoundSourcevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.html new file mode 100644 index 0000000..1bfa183 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.html @@ -0,0 +1,804 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Base class defining a sound's properties. + More...

+ +

#include <SoundSource.hpp>

+
+Inheritance diagram for sf::SoundSource:
+
+
+ + +sf::AlResource +sf::Sound +sf::SoundStream +sf::Music + +
+ + + + + +

+Public Types

enum  Status { Stopped, +Paused, +Playing + }
 Enumeration of the sound source states. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SoundSource (const SoundSource &copy)
 Copy constructor. More...
 
virtual ~SoundSource ()
 Destructor. More...
 
void setPitch (float pitch)
 Set the pitch of the sound. More...
 
void setVolume (float volume)
 Set the volume of the sound. More...
 
void setPosition (float x, float y, float z)
 Set the 3D position of the sound in the audio scene. More...
 
void setPosition (const Vector3f &position)
 Set the 3D position of the sound in the audio scene. More...
 
void setRelativeToListener (bool relative)
 Make the sound's position relative to the listener or absolute. More...
 
void setMinDistance (float distance)
 Set the minimum distance of the sound. More...
 
void setAttenuation (float attenuation)
 Set the attenuation factor of the sound. More...
 
float getPitch () const
 Get the pitch of the sound. More...
 
float getVolume () const
 Get the volume of the sound. More...
 
Vector3f getPosition () const
 Get the 3D position of the sound in the audio scene. More...
 
bool isRelativeToListener () const
 Tell whether the sound's position is relative to the listener or is absolute. More...
 
float getMinDistance () const
 Get the minimum distance of the sound. More...
 
float getAttenuation () const
 Get the attenuation factor of the sound. More...
 
SoundSourceoperator= (const SoundSource &right)
 Overload of assignment operator. More...
 
virtual void play ()=0
 Start or resume playing the sound source. More...
 
virtual void pause ()=0
 Pause the sound source. More...
 
virtual void stop ()=0
 Stop playing the sound source. More...
 
virtual Status getStatus () const
 Get the current status of the sound (stopped, paused, playing) More...
 
+ + + + +

+Protected Member Functions

 SoundSource ()
 Default constructor. More...
 
+ + + + +

+Protected Attributes

unsigned int m_source
 OpenAL source identifier. More...
 
+

Detailed Description

+

Base class defining a sound's properties.

+

sf::SoundSource is not meant to be used directly, it only serves as a common base for all audio objects that can live in the audio environment.

+

It defines several properties for the sound: pitch, volume, position, attenuation, etc. All of them can be changed at any time with no impact on performances.

+
See also
sf::Sound, sf::SoundStream
+ +

Definition at line 42 of file SoundSource.hpp.

+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + +
enum sf::SoundSource::Status
+
+ +

Enumeration of the sound source states.

+ + + + +
Enumerator
Stopped 

Sound is not playing.

+
Paused 

Sound is paused.

+
Playing 

Sound is playing.

+
+ +

Definition at line 50 of file SoundSource.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SoundSource() [1/2]

+ +
+
+ + + + + + + + +
sf::SoundSource::SoundSource (const SoundSourcecopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+ +

◆ ~SoundSource()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::SoundSource::~SoundSource ()
+
+virtual
+
+ +

Destructor.

+ +
+
+ +

◆ SoundSource() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
sf::SoundSource::SoundSource ()
+
+protected
+
+ +

Default constructor.

+

This constructor is meant to be called by derived classes only.

+ +
+
+

Member Function Documentation

+ +

◆ getAttenuation()

+ +
+
+ + + + + + + +
float sf::SoundSource::getAttenuation () const
+
+ +

Get the attenuation factor of the sound.

+
Returns
Attenuation factor of the sound
+
See also
setAttenuation, getMinDistance
+ +
+
+ +

◆ getMinDistance()

+ +
+
+ + + + + + + +
float sf::SoundSource::getMinDistance () const
+
+ +

Get the minimum distance of the sound.

+
Returns
Minimum distance of the sound
+
See also
setMinDistance, getAttenuation
+ +
+
+ +

◆ getPitch()

+ +
+
+ + + + + + + +
float sf::SoundSource::getPitch () const
+
+ +

Get the pitch of the sound.

+
Returns
Pitch of the sound
+
See also
setPitch
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + + + +
Vector3f sf::SoundSource::getPosition () const
+
+ +

Get the 3D position of the sound in the audio scene.

+
Returns
Position of the sound
+
See also
setPosition
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Status sf::SoundSource::getStatus () const
+
+virtual
+
+ +

Get the current status of the sound (stopped, paused, playing)

+
Returns
Current status of the sound
+ +

Reimplemented in sf::Sound, and sf::SoundStream.

+ +
+
+ +

◆ getVolume()

+ +
+
+ + + + + + + +
float sf::SoundSource::getVolume () const
+
+ +

Get the volume of the sound.

+
Returns
Volume of the sound, in the range [0, 100]
+
See also
setVolume
+ +
+
+ +

◆ isRelativeToListener()

+ +
+
+ + + + + + + +
bool sf::SoundSource::isRelativeToListener () const
+
+ +

Tell whether the sound's position is relative to the listener or is absolute.

+
Returns
True if the position is relative, false if it's absolute
+
See also
setRelativeToListener
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
SoundSource& sf::SoundSource::operator= (const SoundSourceright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ pause()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::SoundSource::pause ()
+
+pure virtual
+
+ +

Pause the sound source.

+

This function pauses the source if it was playing, otherwise (source already paused or stopped) it has no effect.

+
See also
play, stop
+ +

Implemented in sf::Sound, and sf::SoundStream.

+ +
+
+ +

◆ play()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::SoundSource::play ()
+
+pure virtual
+
+ +

Start or resume playing the sound source.

+

This function starts the source if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing.

+
See also
pause, stop
+ +

Implemented in sf::Sound, and sf::SoundStream.

+ +
+
+ +

◆ setAttenuation()

+ +
+
+ + + + + + + + +
void sf::SoundSource::setAttenuation (float attenuation)
+
+ +

Set the attenuation factor of the sound.

+

The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

+
Parameters
+ + +
attenuationNew attenuation factor of the sound
+
+
+
See also
getAttenuation, setMinDistance
+ +
+
+ +

◆ setMinDistance()

+ +
+
+ + + + + + + + +
void sf::SoundSource::setMinDistance (float distance)
+
+ +

Set the minimum distance of the sound.

+

The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

+
Parameters
+ + +
distanceNew minimum distance of the sound
+
+
+
See also
getMinDistance, setAttenuation
+ +
+
+ +

◆ setPitch()

+ +
+
+ + + + + + + + +
void sf::SoundSource::setPitch (float pitch)
+
+ +

Set the pitch of the sound.

+

The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

+
Parameters
+ + +
pitchNew pitch to apply to the sound
+
+
+
See also
getPitch
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::SoundSource::setPosition (float x,
float y,
float z 
)
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + + + +
xX coordinate of the position of the sound in the scene
yY coordinate of the position of the sound in the scene
zZ coordinate of the position of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + + + + +
void sf::SoundSource::setPosition (const Vector3fposition)
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + +
positionPosition of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setRelativeToListener()

+ +
+
+ + + + + + + + +
void sf::SoundSource::setRelativeToListener (bool relative)
+
+ +

Make the sound's position relative to the listener or absolute.

+

Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

+
Parameters
+ + +
relativeTrue to set the position relative, false to set it absolute
+
+
+
See also
isRelativeToListener
+ +
+
+ +

◆ setVolume()

+ +
+
+ + + + + + + + +
void sf::SoundSource::setVolume (float volume)
+
+ +

Set the volume of the sound.

+

The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

+
Parameters
+ + +
volumeVolume of the sound
+
+
+
See also
getVolume
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::SoundSource::stop ()
+
+pure virtual
+
+ +

Stop playing the sound source.

+

This function stops the source if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

+
See also
play, pause
+ +

Implemented in sf::Sound, and sf::SoundStream.

+ +
+
+

Member Data Documentation

+ +

◆ m_source

+ +
+
+ + + + + +
+ + + + +
unsigned int sf::SoundSource::m_source
+
+protected
+
+ +

OpenAL source identifier.

+ +

Definition at line 309 of file SoundSource.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundSource.png new file mode 100644 index 0000000000000000000000000000000000000000..b29de1436b35a3b98451b6889d33713dd0ae8d46 GIT binary patch literal 1194 zcmeAS@N?(olHy`uVBq!ia0y~yV7SA;z;J+rnSp^JV#42G1_lO+0G|-o|Ns9pFfhD$ z^R=}9&;$ks1~5Kw-~emq9eD-@29A;-zhH*{5ODQWh!Fz=i>0TFV@L(#+qrM2ZPwy( zGxxvu^l$v9m0y_)wggWNe3&wAx2x~OT&HLH2Mo`g(PMm&I9c(F=kI(K*(ZucE1e|HRqcGL>v`+o-=f;QO)P6q^nPD{{`=CIKYpjq%bzYS zb8P9e)#p^6??`=d-n)O&>FZNY^;YYZ-mTz&sV^TkZDx!~*G)-%U7zVir~iF!X){t+ z&7WEsnYQru%*i7C>~D9TFVe2gyBHxCJ8fl}-u7#{zbD^(w(@S!q<>t~nKe33dtUO4 z;ai}hr|zj`kI2i`x-8B?b{{r5Nf#=6v<)1!Bn`JQGp>3Pn(z|E$Z!SvBg z<`shHWgL1do-t${F=h`?o@d!0_3;ejm5y{iG$kREcM3S|U};#r^VLE<_5h*j%od%e z8Kv;s%pZ9#{?jvvF zFPgq5I4|P$8w2r-s?-|h&l$F9TweNj^}jE6+dO4$&D!HSy>bfT(|;Dn*G`DuJxl87 zwBllC&+?0RbnH&9J)X1VwPbakx88lP%Qw%@2>DQ$YH2=Y&HbbQEWY)eopJG}=Ut%( z{vhA)kU0Pe4fX<1RC#hJ#xObXmN2Znv?=DgY0mXccTTU3-M#GTo@k~kou?VEbRh5@ zkL#s(uQJ3O;^i!`Y`DBb#=$a%?}3RPdjQ{bW{cj_j8hIjW$=4k#PAd(9ip6`wr%>k zGdcR@HkVXhG6h+B?qZledCBD+b5y22uGbfLk~z9jMfYb(adh7OKgnl~?|A?8k;(gu z%Om+uzMWm)WvPFC|Kca9%knF#`u`fb?6LcPN_IwlPo+DL__E#36|epV=5frKZzvv6 zl^XNVX3~<-uqS+H=O5Flv)$A1qpyB)^fk|aUg7&xGN+dARQ|l&@MZF2?;pE#rfc7; zdd0Z&@Mrbqwe_8~Y5jMSUN4)yv*S+VPjN%fYa$~3w$*vBA68zKzh8X+{C>6R>~Hl> zR~}xzR`X^2<8O8`)2yG(KV2ZyYd`bQeqC=*t;65!3q5}c$M{Y1dt5Xrgb(J!#if?U zo3%ZjoH?_OVF8;}Ls(|yy4O5jE!-Cw<}OpW5v$ubUp}`D@zqlV7D2cc~Qpec>xp6IM6pj)I}y z|5~2MM~^; + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::SoundStream Member List
+
+
+ +

This is the complete list of members for sf::SoundStream, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getAttenuation() constsf::SoundSource
getChannelCount() constsf::SoundStream
getLoop() constsf::SoundStream
getMinDistance() constsf::SoundSource
getPitch() constsf::SoundSource
getPlayingOffset() constsf::SoundStream
getPosition() constsf::SoundSource
getSampleRate() constsf::SoundStream
getStatus() constsf::SoundStreamvirtual
getVolume() constsf::SoundSource
initialize(unsigned int channelCount, unsigned int sampleRate)sf::SoundStreamprotected
isRelativeToListener() constsf::SoundSource
m_sourcesf::SoundSourceprotected
NoLoop enum valuesf::SoundStreamprotected
onGetData(Chunk &data)=0sf::SoundStreamprotectedpure virtual
onLoop()sf::SoundStreamprotectedvirtual
onSeek(Time timeOffset)=0sf::SoundStreamprotectedpure virtual
operator=(const SoundSource &right)sf::SoundSource
pause()sf::SoundStreamvirtual
Paused enum valuesf::SoundSource
play()sf::SoundStreamvirtual
Playing enum valuesf::SoundSource
setAttenuation(float attenuation)sf::SoundSource
setLoop(bool loop)sf::SoundStream
setMinDistance(float distance)sf::SoundSource
setPitch(float pitch)sf::SoundSource
setPlayingOffset(Time timeOffset)sf::SoundStream
setPosition(float x, float y, float z)sf::SoundSource
setPosition(const Vector3f &position)sf::SoundSource
setRelativeToListener(bool relative)sf::SoundSource
setVolume(float volume)sf::SoundSource
SoundSource(const SoundSource &copy)sf::SoundSource
SoundSource()sf::SoundSourceprotected
SoundStream()sf::SoundStreamprotected
Status enum namesf::SoundSource
stop()sf::SoundStreamvirtual
Stopped enum valuesf::SoundSource
~SoundSource()sf::SoundSourcevirtual
~SoundStream()sf::SoundStreamvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.html new file mode 100644 index 0000000..6a30687 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.html @@ -0,0 +1,1227 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Abstract base class for streamed audio sources. + More...

+ +

#include <SoundStream.hpp>

+
+Inheritance diagram for sf::SoundStream:
+
+
+ + +sf::SoundSource +sf::AlResource +sf::Music + +
+ + + + + +

+Classes

struct  Chunk
 Structure defining a chunk of audio data to stream. More...
 
+ + + + +

+Public Types

enum  Status { Stopped, +Paused, +Playing + }
 Enumeration of the sound source states. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~SoundStream ()
 Destructor. More...
 
void play ()
 Start or resume playing the audio stream. More...
 
void pause ()
 Pause the audio stream. More...
 
void stop ()
 Stop playing the audio stream. More...
 
unsigned int getChannelCount () const
 Return the number of channels of the stream. More...
 
unsigned int getSampleRate () const
 Get the stream sample rate of the stream. More...
 
Status getStatus () const
 Get the current status of the stream (stopped, paused, playing) More...
 
void setPlayingOffset (Time timeOffset)
 Change the current playing position of the stream. More...
 
Time getPlayingOffset () const
 Get the current playing position of the stream. More...
 
void setLoop (bool loop)
 Set whether or not the stream should loop after reaching the end. More...
 
bool getLoop () const
 Tell whether or not the stream is in loop mode. More...
 
void setPitch (float pitch)
 Set the pitch of the sound. More...
 
void setVolume (float volume)
 Set the volume of the sound. More...
 
void setPosition (float x, float y, float z)
 Set the 3D position of the sound in the audio scene. More...
 
void setPosition (const Vector3f &position)
 Set the 3D position of the sound in the audio scene. More...
 
void setRelativeToListener (bool relative)
 Make the sound's position relative to the listener or absolute. More...
 
void setMinDistance (float distance)
 Set the minimum distance of the sound. More...
 
void setAttenuation (float attenuation)
 Set the attenuation factor of the sound. More...
 
float getPitch () const
 Get the pitch of the sound. More...
 
float getVolume () const
 Get the volume of the sound. More...
 
Vector3f getPosition () const
 Get the 3D position of the sound in the audio scene. More...
 
bool isRelativeToListener () const
 Tell whether the sound's position is relative to the listener or is absolute. More...
 
float getMinDistance () const
 Get the minimum distance of the sound. More...
 
float getAttenuation () const
 Get the attenuation factor of the sound. More...
 
+ + + +

+Protected Types

enum  { NoLoop = -1 + }
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 SoundStream ()
 Default constructor. More...
 
void initialize (unsigned int channelCount, unsigned int sampleRate)
 Define the audio stream parameters. More...
 
virtual bool onGetData (Chunk &data)=0
 Request a new chunk of audio samples from the stream source. More...
 
virtual void onSeek (Time timeOffset)=0
 Change the current playing position in the stream source. More...
 
virtual Int64 onLoop ()
 Change the current playing position in the stream source to the beginning of the loop. More...
 
+ + + + +

+Protected Attributes

unsigned int m_source
 OpenAL source identifier. More...
 
+

Detailed Description

+

Abstract base class for streamed audio sources.

+

Unlike audio buffers (see sf::SoundBuffer), audio streams are never completely loaded in memory.

+

Instead, the audio data is acquired continuously while the stream is playing. This behavior allows to play a sound with no loading delay, and keeps the memory consumption very low.

+

Sound sources that need to be streamed are usually big files (compressed audio musics that would eat hundreds of MB in memory) or files that would take a lot of time to be received (sounds played over the network).

+

sf::SoundStream is a base class that doesn't care about the stream source, which is left to the derived class. SFML provides a built-in specialization for big files (see sf::Music). No network stream source is provided, but you can write your own by combining this class with the network module.

+

A derived class has to override two virtual functions:

    +
  • onGetData fills a new chunk of audio data to be played
  • +
  • onSeek changes the current playing position in the source
  • +
+

It is important to note that each SoundStream is played in its own separate thread, so that the streaming loop doesn't block the rest of the program. In particular, the OnGetData and OnSeek virtual functions may sometimes be called from this separate thread. It is important to keep this in mind, because you may have to take care of synchronization issues if you share data between threads.

+

Usage example:

class CustomStream : public sf::SoundStream
{
public:
bool open(const std::string& location)
{
// Open the source and get audio settings
...
unsigned int channelCount = ...;
unsigned int sampleRate = ...;
// Initialize the stream -- important!
initialize(channelCount, sampleRate);
}
private:
virtual bool onGetData(Chunk& data)
{
// Fill the chunk with audio data from the stream source
// (note: must not be empty if you want to continue playing)
data.samples = ...;
data.sampleCount = ...;
// Return true to continue playing
return true;
}
virtual void onSeek(Uint32 timeOffset)
{
// Change the current position in the stream source
...
}
}
// Usage
CustomStream stream;
stream.open("path/to/stream");
stream.play();
See also
sf::Music
+ +

Definition at line 45 of file SoundStream.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + + +
+ + + + +
anonymous enum
+
+protected
+
+ + +
Enumerator
NoLoop 

"Invalid" endSeeks value, telling us to continue uninterrupted

+
+ +

Definition at line 183 of file SoundStream.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::SoundSource::Status
+
+inherited
+
+ +

Enumeration of the sound source states.

+ + + + +
Enumerator
Stopped 

Sound is not playing.

+
Paused 

Sound is paused.

+
Playing 

Sound is playing.

+
+ +

Definition at line 50 of file SoundSource.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~SoundStream()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::SoundStream::~SoundStream ()
+
+virtual
+
+ +

Destructor.

+ +
+
+ +

◆ SoundStream()

+ +
+
+ + + + + +
+ + + + + + + +
sf::SoundStream::SoundStream ()
+
+protected
+
+ +

Default constructor.

+

This constructor is only meant to be called by derived classes.

+ +
+
+

Member Function Documentation

+ +

◆ getAttenuation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getAttenuation () const
+
+inherited
+
+ +

Get the attenuation factor of the sound.

+
Returns
Attenuation factor of the sound
+
See also
setAttenuation, getMinDistance
+ +
+
+ +

◆ getChannelCount()

+ +
+
+ + + + + + + +
unsigned int sf::SoundStream::getChannelCount () const
+
+ +

Return the number of channels of the stream.

+

1 channel means a mono sound, 2 means stereo, etc.

+
Returns
Number of channels
+ +
+
+ +

◆ getLoop()

+ +
+
+ + + + + + + +
bool sf::SoundStream::getLoop () const
+
+ +

Tell whether or not the stream is in loop mode.

+
Returns
True if the stream is looping, false otherwise
+
See also
setLoop
+ +
+
+ +

◆ getMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getMinDistance () const
+
+inherited
+
+ +

Get the minimum distance of the sound.

+
Returns
Minimum distance of the sound
+
See also
setMinDistance, getAttenuation
+ +
+
+ +

◆ getPitch()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getPitch () const
+
+inherited
+
+ +

Get the pitch of the sound.

+
Returns
Pitch of the sound
+
See also
setPitch
+ +
+
+ +

◆ getPlayingOffset()

+ +
+
+ + + + + + + +
Time sf::SoundStream::getPlayingOffset () const
+
+ +

Get the current playing position of the stream.

+
Returns
Current playing position, from the beginning of the stream
+
See also
setPlayingOffset
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3f sf::SoundSource::getPosition () const
+
+inherited
+
+ +

Get the 3D position of the sound in the audio scene.

+
Returns
Position of the sound
+
See also
setPosition
+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + + + +
unsigned int sf::SoundStream::getSampleRate () const
+
+ +

Get the stream sample rate of the stream.

+

The sample rate is the number of audio samples played per second. The higher, the better the quality.

+
Returns
Sample rate, in number of samples per second
+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status sf::SoundStream::getStatus () const
+
+virtual
+
+ +

Get the current status of the stream (stopped, paused, playing)

+
Returns
Current status
+ +

Reimplemented from sf::SoundSource.

+ +
+
+ +

◆ getVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::SoundSource::getVolume () const
+
+inherited
+
+ +

Get the volume of the sound.

+
Returns
Volume of the sound, in the range [0, 100]
+
See also
setVolume
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::SoundStream::initialize (unsigned int channelCount,
unsigned int sampleRate 
)
+
+protected
+
+ +

Define the audio stream parameters.

+

This function must be called by derived classes as soon as they know the audio settings of the stream to play. Any attempt to manipulate the stream (play(), ...) before calling this function will fail. It can be called multiple times if the settings of the audio stream change, but only when the stream is stopped.

+
Parameters
+ + + +
channelCountNumber of channels of the stream
sampleRateSample rate, in samples per second
+
+
+ +
+
+ +

◆ isRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::SoundSource::isRelativeToListener () const
+
+inherited
+
+ +

Tell whether the sound's position is relative to the listener or is absolute.

+
Returns
True if the position is relative, false if it's absolute
+
See also
setRelativeToListener
+ +
+
+ +

◆ onGetData()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool sf::SoundStream::onGetData (Chunkdata)
+
+protectedpure virtual
+
+ +

Request a new chunk of audio samples from the stream source.

+

This function must be overridden by derived classes to provide the audio samples to play. It is called continuously by the streaming loop, in a separate thread. The source can choose to stop the streaming loop at any time, by returning false to the caller. If you return true (i.e. continue streaming) it is important that the returned array of samples is not empty; this would stop the stream due to an internal limitation.

+
Parameters
+ + +
dataChunk of data to fill
+
+
+
Returns
True to continue playback, false to stop
+ +

Implemented in sf::Music.

+ +
+
+ +

◆ onLoop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Int64 sf::SoundStream::onLoop ()
+
+protectedvirtual
+
+ +

Change the current playing position in the stream source to the beginning of the loop.

+

This function can be overridden by derived classes to allow implementation of custom loop points. Otherwise, it just calls onSeek(Time::Zero) and returns 0.

+
Returns
The seek position after looping (or -1 if there's no loop)
+ +

Reimplemented in sf::Music.

+ +
+
+ +

◆ onSeek()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void sf::SoundStream::onSeek (Time timeOffset)
+
+protectedpure virtual
+
+ +

Change the current playing position in the stream source.

+

This function must be overridden by derived classes to allow random seeking into the stream source.

+
Parameters
+ + +
timeOffsetNew playing position, relative to the beginning of the stream
+
+
+ +

Implemented in sf::Music.

+ +
+
+ +

◆ pause()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::pause ()
+
+virtual
+
+ +

Pause the audio stream.

+

This function pauses the stream if it was playing, otherwise (stream already paused or stopped) it has no effect.

+
See also
play, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ play()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::play ()
+
+virtual
+
+ +

Start or resume playing the audio stream.

+

This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing. This function uses its own thread so that it doesn't block the rest of the program while the stream is played.

+
See also
pause, stop
+ +

Implements sf::SoundSource.

+ +
+
+ +

◆ setAttenuation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setAttenuation (float attenuation)
+
+inherited
+
+ +

Set the attenuation factor of the sound.

+

The attenuation is a multiplicative factor which makes the sound more or less loud according to its distance from the listener. An attenuation of 0 will produce a non-attenuated sound, i.e. its volume will always be the same whether it is heard from near or from far. On the other hand, an attenuation value such as 100 will make the sound fade out very quickly as it gets further from the listener. The default value of the attenuation is 1.

+
Parameters
+ + +
attenuationNew attenuation factor of the sound
+
+
+
See also
getAttenuation, setMinDistance
+ +
+
+ +

◆ setLoop()

+ +
+
+ + + + + + + + +
void sf::SoundStream::setLoop (bool loop)
+
+ +

Set whether or not the stream should loop after reaching the end.

+

If set, the stream will restart from beginning after reaching the end and so on, until it is stopped or setLoop(false) is called. The default looping state for streams is false.

+
Parameters
+ + +
loopTrue to play in loop, false to play once
+
+
+
See also
getLoop
+ +
+
+ +

◆ setMinDistance()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setMinDistance (float distance)
+
+inherited
+
+ +

Set the minimum distance of the sound.

+

The "minimum distance" of a sound is the maximum distance at which it is heard at its maximum volume. Further than the minimum distance, it will start to fade out according to its attenuation factor. A value of 0 ("inside the head +of the listener") is an invalid value and is forbidden. The default value of the minimum distance is 1.

+
Parameters
+ + +
distanceNew minimum distance of the sound
+
+
+
See also
getMinDistance, setAttenuation
+ +
+
+ +

◆ setPitch()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPitch (float pitch)
+
+inherited
+
+ +

Set the pitch of the sound.

+

The pitch represents the perceived fundamental frequency of a sound; thus you can make a sound more acute or grave by changing its pitch. A side effect of changing the pitch is to modify the playing speed of the sound as well. The default value for the pitch is 1.

+
Parameters
+ + +
pitchNew pitch to apply to the sound
+
+
+
See also
getPitch
+ +
+
+ +

◆ setPlayingOffset()

+ +
+
+ + + + + + + + +
void sf::SoundStream::setPlayingOffset (Time timeOffset)
+
+ +

Change the current playing position of the stream.

+

The playing position can be changed when the stream is either paused or playing. Changing the playing position when the stream is stopped has no effect, since playing the stream would reset its position.

+
Parameters
+ + +
timeOffsetNew playing position, from the beginning of the stream
+
+
+
See also
getPlayingOffset
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::SoundSource::setPosition (float x,
float y,
float z 
)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + + + +
xX coordinate of the position of the sound in the scene
yY coordinate of the position of the sound in the scene
zZ coordinate of the position of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setPosition (const Vector3fposition)
+
+inherited
+
+ +

Set the 3D position of the sound in the audio scene.

+

Only sounds with one channel (mono sounds) can be spatialized. The default position of a sound is (0, 0, 0).

+
Parameters
+ + +
positionPosition of the sound in the scene
+
+
+
See also
getPosition
+ +
+
+ +

◆ setRelativeToListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setRelativeToListener (bool relative)
+
+inherited
+
+ +

Make the sound's position relative to the listener or absolute.

+

Making a sound relative to the listener will ensure that it will always be played the same way regardless of the position of the listener. This can be useful for non-spatialized sounds, sounds that are produced by the listener, or sounds attached to it. The default value is false (position is absolute).

+
Parameters
+ + +
relativeTrue to set the position relative, false to set it absolute
+
+
+
See also
isRelativeToListener
+ +
+
+ +

◆ setVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::SoundSource::setVolume (float volume)
+
+inherited
+
+ +

Set the volume of the sound.

+

The volume is a value between 0 (mute) and 100 (full volume). The default value for the volume is 100.

+
Parameters
+ + +
volumeVolume of the sound
+
+
+
See also
getVolume
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::SoundStream::stop ()
+
+virtual
+
+ +

Stop playing the audio stream.

+

This function stops the stream if it was playing or paused, and does nothing if it was already stopped. It also resets the playing position (unlike pause()).

+
See also
play, pause
+ +

Implements sf::SoundSource.

+ +
+
+

Member Data Documentation

+ +

◆ m_source

+ +
+
+ + + + + +
+ + + + +
unsigned int sf::SoundSource::m_source
+
+protectedinherited
+
+ +

OpenAL source identifier.

+ +

Definition at line 309 of file SoundSource.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1SoundStream.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8bc2474c4170e50b28ccb5fa903c1edf9c39d8 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(U^u|R%)r24;J;Uofq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}tn2CG7*fIbc5ZI*V+9_z z>Fs|1{`>Fy!OL>c?@;X37=Eo1e)9#bh zBxmOA+j3WT*}sV@dmYoG!tUzSCfu4YfB$vJ!hQF{7ntU9e*b<;q<7x#WYJU0p^y#P0mWW%f z{NuwA_h+B%(RmF2*pvJj=KH_leDJx`ma)ceqk6-6^=~CLMdxm^Zc?!nQ1hJi^tq4b z)j(PAp!1(TM4o9~xo>;lx=VNF+xAM%o_2Mn>aD%9))DJ;AN{MHA(u35!K77bI?LW3 zowVV~#dB{?Yc4K4Bbc(>DmcEY%(!`eVUMr9(baOf^N$Xh%-Xu_mhm>_oTsNV<7XZ- z{5$X5`Il#|O#8p1x@Y6I*RQ7bW$apBcDwGya>L(De%1by_DwbLyrh#jX-Q;^ujTVM zj0bMtVTdU(zMB`PWqvvK$&ydTe^1@x7CvB-$TUOMhhcLIXTmfC#xp`{4Uvaf47_Lb z`Fm;ZbYLn_@L|~eXTi&R%F8qv&qc_+GhDxBoB7q}tL38gkhzT4;!4}j$Lq|uI$po3Et@EPvgCH% zzi;nXM!eQ`|FNNp;lA4phBQv$13K%LO$qwM@E|vjL2t**Jahf2vtQ~J1^t{^m-@by zGhr68mmnIz{ynb#e9rx+(~8f%cbcZcen`c0bIlCRrO6lmPGj(_I;6d9R(iPDW|h6C zgfCArzIx=?mY%Rz4{p`x-ZFZ(^IEoa`Q&GDlaAS#ZoMi!^NqtKzlw!by(=?*z52U$ zrMHp6%~zh6G}q4yUc1b4fy&L-`R7iSghg+9d(r-lt>>?B)TH*0A&1?eX6E(l_Zb)% O7(8A5T-G@yGywn?c+nsL literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite-members.html new file mode 100644 index 0000000..650884a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite-members.html @@ -0,0 +1,93 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Sprite Member List
+
+
+ +

This is the complete list of members for sf::Sprite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getColor() constsf::Sprite
getGlobalBounds() constsf::Sprite
getInverseTransform() constsf::Transformable
getLocalBounds() constsf::Sprite
getOrigin() constsf::Transformable
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getTexture() constsf::Sprite
getTextureRect() constsf::Sprite
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setColor(const Color &color)sf::Sprite
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setTexture(const Texture &texture, bool resetRect=false)sf::Sprite
setTextureRect(const IntRect &rectangle)sf::Sprite
Sprite()sf::Sprite
Sprite(const Texture &texture)sf::Spriteexplicit
Sprite(const Texture &texture, const IntRect &rectangle)sf::Sprite
Transformable()sf::Transformable
~Drawable()sf::Drawableinlinevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.html new file mode 100644 index 0000000..2d36b48 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.html @@ -0,0 +1,1133 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Sprite Class Reference
+
+
+ +

Drawable representation of a texture, with its own transformations, color, etc. + More...

+ +

#include <Sprite.hpp>

+
+Inheritance diagram for sf::Sprite:
+
+
+ + +sf::Drawable +sf::Transformable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Sprite ()
 Default constructor. More...
 
 Sprite (const Texture &texture)
 Construct the sprite from a source texture. More...
 
 Sprite (const Texture &texture, const IntRect &rectangle)
 Construct the sprite from a sub-rectangle of a source texture. More...
 
void setTexture (const Texture &texture, bool resetRect=false)
 Change the source texture of the sprite. More...
 
void setTextureRect (const IntRect &rectangle)
 Set the sub-rectangle of the texture that the sprite will display. More...
 
void setColor (const Color &color)
 Set the global color of the sprite. More...
 
const TexturegetTexture () const
 Get the source texture of the sprite. More...
 
const IntRectgetTextureRect () const
 Get the sub-rectangle of the texture displayed by the sprite. More...
 
const ColorgetColor () const
 Get the global color of the sprite. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+

Detailed Description

+

Drawable representation of a texture, with its own transformations, color, etc.

+

sf::Sprite is a drawable class that allows to easily display a texture (or a part of it) on a render target.

+

It inherits all the functions from sf::Transformable: position, rotation, scale, origin. It also adds sprite-specific properties such as the texture to use, the part of it to display, and some convenience functions to change the overall color of the sprite, or to get its bounding rectangle.

+

sf::Sprite works in combination with the sf::Texture class, which loads and provides the pixel data of a given texture.

+

The separation of sf::Sprite and sf::Texture allows more flexibility and better performances: indeed a sf::Texture is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Sprite is a lightweight object which can use the pixel data of a sf::Texture and draw it with its own transformation/color/blending attributes.

+

It is important to note that the sf::Sprite instance doesn't copy the texture that it uses, it only keeps a reference to it. Thus, a sf::Texture must not be destroyed while it is used by a sf::Sprite (i.e. never write a function that uses a local sf::Texture instance for creating a sprite).

+

See also the note on coordinates and undistorted rendering in sf::Transformable.

+

Usage example:

// Declare and load a texture
sf::Texture texture;
texture.loadFromFile("texture.png");
// Create a sprite
sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setTextureRect(sf::IntRect(10, 10, 50, 30));
sprite.setColor(sf::Color(255, 255, 255, 200));
sprite.setPosition(100, 25);
// Draw it
window.draw(sprite);
See also
sf::Texture, sf::Transformable
+ +

Definition at line 47 of file Sprite.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Sprite() [1/3]

+ +
+
+ + + + + + + +
sf::Sprite::Sprite ()
+
+ +

Default constructor.

+

Creates an empty sprite with no source texture.

+ +
+
+ +

◆ Sprite() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::Sprite::Sprite (const Texturetexture)
+
+explicit
+
+ +

Construct the sprite from a source texture.

+
Parameters
+ + +
textureSource texture
+
+
+
See also
setTexture
+ +
+
+ +

◆ Sprite() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::Sprite::Sprite (const Texturetexture,
const IntRectrectangle 
)
+
+ +

Construct the sprite from a sub-rectangle of a source texture.

+
Parameters
+ + + +
textureSource texture
rectangleSub-rectangle of the texture to assign to the sprite
+
+
+
See also
setTexture, setTextureRect
+ +
+
+

Member Function Documentation

+ +

◆ getColor()

+ +
+
+ + + + + + + +
const Color& sf::Sprite::getColor () const
+
+ +

Get the global color of the sprite.

+
Returns
Global color of the sprite
+
See also
setColor
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Sprite::getGlobalBounds () const
+
+ +

Get the global bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the sprite in the global 2D world's coordinate system.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Sprite::getLocalBounds () const
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getTexture()

+ +
+
+ + + + + + + +
const Texture* sf::Sprite::getTexture () const
+
+ +

Get the source texture of the sprite.

+

If the sprite has no source texture, a NULL pointer is returned. The returned pointer is const, which means that you can't modify the texture when you retrieve it with this function.

+
Returns
Pointer to the sprite's texture
+
See also
setTexture
+ +
+
+ +

◆ getTextureRect()

+ +
+
+ + + + + + + +
const IntRect& sf::Sprite::getTextureRect () const
+
+ +

Get the sub-rectangle of the texture displayed by the sprite.

+
Returns
Texture rectangle of the sprite
+
See also
setTextureRect
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setColor()

+ +
+
+ + + + + + + + +
void sf::Sprite::setColor (const Colorcolor)
+
+ +

Set the global color of the sprite.

+

This color is modulated (multiplied) with the sprite's texture. It can be used to colorize the sprite, or change its global opacity. By default, the sprite's color is opaque white.

+
Parameters
+ + +
colorNew color of the sprite
+
+
+
See also
getColor
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Sprite::setTexture (const Texturetexture,
bool resetRect = false 
)
+
+ +

Change the source texture of the sprite.

+

The texture argument refers to a texture that must exist as long as the sprite uses it. Indeed, the sprite doesn't store its own copy of the texture, but rather keeps a pointer to the one that you passed to this function. If the source texture is destroyed and the sprite tries to use it, the behavior is undefined. If resetRect is true, the TextureRect property of the sprite is automatically adjusted to the size of the new texture. If it is false, the texture rect is left unchanged.

+
Parameters
+ + + +
textureNew texture
resetRectShould the texture rect be reset to the size of the new texture?
+
+
+
See also
getTexture, setTextureRect
+ +
+
+ +

◆ setTextureRect()

+ +
+
+ + + + + + + + +
void sf::Sprite::setTextureRect (const IntRectrectangle)
+
+ +

Set the sub-rectangle of the texture that the sprite will display.

+

The texture rect is useful when you don't want to display the whole texture, but rather a part of it. By default, the texture rect covers the entire texture.

+
Parameters
+ + +
rectangleRectangle defining the region of the texture to display
+
+
+
See also
getTextureRect, setTexture
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..c4407dabfd1239e3561a6de662796cee0d71aea4 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0y~yV0gm7z!1Q}%)r24cS-XO0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`Dc94*F{Fa=?cBH5Rw)R$ zne%5?{-0hG6lBNp`U}@o-_>(dm=9ko{MG&a9)I)Or+dF2KHz;xA;{BHs>Rdm(#jc2 zRK6ZmnR}aU`*aoALVk;`Y_D~z^*i~3ZEv`j3cF7-ERwX{^rtz+>bWMT=c-TklRkg- zT9+YlW`5qkm^#k;Vop!qE`J;IxGG$w+s80`XP!`H|NLa9J9{~zX0PyW>s;-mwsUU( zq}f@9fs=~9O-fy+8(wtH^QE;=-JJVhACwCFo~+%OR(<|jS9Fc*rl@t5^By@px4C!3 zapyKw=X{TAUa!qXLiff=KfN{S%r)Ov8?-7nbf!J-yq>PUQ+JAu(9~DcmNaEO)>L~_ zbaZvVwCu>hwZ1l0YNy}5QZfDU*!ZW%rcXZCROZ*KZN79O@9(t}mr@UXzrH(r?Z+jr z#hyy-&JJ9+)>r1Qzt^RmTmGr5u2fdj^jw}aY0?$;$y1gD8+v-aI=tSa>iu60AkUHn0S<7DXGSo1~Zw_n-H}q`KPME|Hen5qBU4ti64C7>$9ZYJR1*|?o4>lK^ z+nLC)r+H$huh0TMhHO>p&&xMX3i^!a`{k{J>rVo7cykwfEU93Ad-TT~k-JO-M z58Tav_jX6mXN?A~`C5`*g?v%`iHDLz`wiI^9A)>O=GdKfu-w~iY3*`N6>VKkkNfg> zDmFdaX*TcITo#K5pXZ-+G7{hGwKH$-v%0jm>n{Gx-mUG>JAK(q6$gDEp$9HL2zPKl hpCiq7VD%qn@89}yMoUuo7#J8BJYD@<);T3K0RSVNPo)3= literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String-members.html new file mode 100644 index 0000000..1972de8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String-members.html @@ -0,0 +1,112 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::String Member List
+
+
+ +

This is the complete list of members for sf::String, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()sf::String
begin() constsf::String
clear()sf::String
ConstIterator typedefsf::String
end()sf::String
end() constsf::String
erase(std::size_t position, std::size_t count=1)sf::String
find(const String &str, std::size_t start=0) constsf::String
fromUtf16(T begin, T end)sf::Stringstatic
fromUtf32(T begin, T end)sf::Stringstatic
fromUtf8(T begin, T end)sf::Stringstatic
getData() constsf::String
getSize() constsf::String
insert(std::size_t position, const String &str)sf::String
InvalidPossf::Stringstatic
isEmpty() constsf::String
Iterator typedefsf::String
operator std::string() constsf::String
operator std::wstring() constsf::String
operator!=(const String &left, const String &right)sf::Stringrelated
operator+(const String &left, const String &right)sf::Stringrelated
operator+=(const String &right)sf::String
operator< (defined in sf::String)sf::Stringfriend
operator<(const String &left, const String &right)sf::Stringrelated
operator<=(const String &left, const String &right)sf::Stringrelated
operator=(const String &right)sf::String
operator== (defined in sf::String)sf::Stringfriend
operator==(const String &left, const String &right)sf::Stringrelated
operator>(const String &left, const String &right)sf::Stringrelated
operator>=(const String &left, const String &right)sf::Stringrelated
operator[](std::size_t index) constsf::String
operator[](std::size_t index)sf::String
replace(std::size_t position, std::size_t length, const String &replaceWith)sf::String
replace(const String &searchFor, const String &replaceWith)sf::String
String()sf::String
String(char ansiChar, const std::locale &locale=std::locale())sf::String
String(wchar_t wideChar)sf::String
String(Uint32 utf32Char)sf::String
String(const char *ansiString, const std::locale &locale=std::locale())sf::String
String(const std::string &ansiString, const std::locale &locale=std::locale())sf::String
String(const wchar_t *wideString)sf::String
String(const std::wstring &wideString)sf::String
String(const Uint32 *utf32String)sf::String
String(const std::basic_string< Uint32 > &utf32String)sf::String
String(const String &copy)sf::String
substring(std::size_t position, std::size_t length=InvalidPos) constsf::String
toAnsiString(const std::locale &locale=std::locale()) constsf::String
toUtf16() constsf::String
toUtf32() constsf::String
toUtf8() constsf::String
toWideString() constsf::String
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String.html new file mode 100644 index 0000000..56ce262 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1String.html @@ -0,0 +1,1789 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Utility string class that automatically handles conversions between types and encodings. + More...

+ +

#include <String.hpp>

+ + + + + + + + +

+Public Types

typedef std::basic_string< Uint32 >::iterator Iterator
 Iterator type. More...
 
typedef std::basic_string< Uint32 >::const_iterator ConstIterator
 Read-only iterator type. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 String ()
 Default constructor. More...
 
 String (char ansiChar, const std::locale &locale=std::locale())
 Construct from a single ANSI character and a locale. More...
 
 String (wchar_t wideChar)
 Construct from single wide character. More...
 
 String (Uint32 utf32Char)
 Construct from single UTF-32 character. More...
 
 String (const char *ansiString, const std::locale &locale=std::locale())
 Construct from a null-terminated C-style ANSI string and a locale. More...
 
 String (const std::string &ansiString, const std::locale &locale=std::locale())
 Construct from an ANSI string and a locale. More...
 
 String (const wchar_t *wideString)
 Construct from null-terminated C-style wide string. More...
 
 String (const std::wstring &wideString)
 Construct from a wide string. More...
 
 String (const Uint32 *utf32String)
 Construct from a null-terminated C-style UTF-32 string. More...
 
 String (const std::basic_string< Uint32 > &utf32String)
 Construct from an UTF-32 string. More...
 
 String (const String &copy)
 Copy constructor. More...
 
 operator std::string () const
 Implicit conversion operator to std::string (ANSI string) More...
 
 operator std::wstring () const
 Implicit conversion operator to std::wstring (wide string) More...
 
std::string toAnsiString (const std::locale &locale=std::locale()) const
 Convert the Unicode string to an ANSI string. More...
 
std::wstring toWideString () const
 Convert the Unicode string to a wide string. More...
 
std::basic_string< Uint8 > toUtf8 () const
 Convert the Unicode string to a UTF-8 string. More...
 
std::basic_string< Uint16 > toUtf16 () const
 Convert the Unicode string to a UTF-16 string. More...
 
std::basic_string< Uint32 > toUtf32 () const
 Convert the Unicode string to a UTF-32 string. More...
 
Stringoperator= (const String &right)
 Overload of assignment operator. More...
 
Stringoperator+= (const String &right)
 Overload of += operator to append an UTF-32 string. More...
 
Uint32 operator[] (std::size_t index) const
 Overload of [] operator to access a character by its position. More...
 
Uint32 & operator[] (std::size_t index)
 Overload of [] operator to access a character by its position. More...
 
void clear ()
 Clear the string. More...
 
std::size_t getSize () const
 Get the size of the string. More...
 
bool isEmpty () const
 Check whether the string is empty or not. More...
 
void erase (std::size_t position, std::size_t count=1)
 Erase one or more characters from the string. More...
 
void insert (std::size_t position, const String &str)
 Insert one or more characters into the string. More...
 
std::size_t find (const String &str, std::size_t start=0) const
 Find a sequence of one or more characters in the string. More...
 
void replace (std::size_t position, std::size_t length, const String &replaceWith)
 Replace a substring with another string. More...
 
void replace (const String &searchFor, const String &replaceWith)
 Replace all occurrences of a substring with a replacement string. More...
 
String substring (std::size_t position, std::size_t length=InvalidPos) const
 Return a part of the string. More...
 
const Uint32 * getData () const
 Get a pointer to the C-style array of characters. More...
 
Iterator begin ()
 Return an iterator to the beginning of the string. More...
 
ConstIterator begin () const
 Return an iterator to the beginning of the string. More...
 
Iterator end ()
 Return an iterator to the end of the string. More...
 
ConstIterator end () const
 Return an iterator to the end of the string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

template<typename T >
static String fromUtf8 (T begin, T end)
 Create a new sf::String from a UTF-8 encoded string. More...
 
template<typename T >
static String fromUtf16 (T begin, T end)
 Create a new sf::String from a UTF-16 encoded string. More...
 
template<typename T >
static String fromUtf32 (T begin, T end)
 Create a new sf::String from a UTF-32 encoded string. More...
 
+ + + + +

+Static Public Attributes

static const std::size_t InvalidPos
 Represents an invalid position in the string. More...
 
+ + + + + +

+Friends

+bool operator== (const String &left, const String &right)
 
+bool operator< (const String &left, const String &right)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
bool operator== (const String &left, const String &right)
 Overload of == operator to compare two UTF-32 strings. More...
 
bool operator!= (const String &left, const String &right)
 Overload of != operator to compare two UTF-32 strings. More...
 
bool operator< (const String &left, const String &right)
 Overload of < operator to compare two UTF-32 strings. More...
 
bool operator> (const String &left, const String &right)
 Overload of > operator to compare two UTF-32 strings. More...
 
bool operator<= (const String &left, const String &right)
 Overload of <= operator to compare two UTF-32 strings. More...
 
bool operator>= (const String &left, const String &right)
 Overload of >= operator to compare two UTF-32 strings. More...
 
String operator+ (const String &left, const String &right)
 Overload of binary + operator to concatenate two strings. More...
 
+

Detailed Description

+

Utility string class that automatically handles conversions between types and encodings.

+

sf::String is a utility string class defined mainly for convenience.

+

It is a Unicode string (implemented using UTF-32), thus it can store any character in the world (European, Chinese, Arabic, Hebrew, etc.).

+

It automatically handles conversions from/to ANSI and wide strings, so that you can work with standard string classes and still be compatible with functions taking a sf::String.

+
std::string s1 = s; // automatically converted to ANSI string
std::wstring s2 = s; // automatically converted to wide string
s = "hello"; // automatically converted from ANSI string
s = L"hello"; // automatically converted from wide string
s += 'a'; // automatically converted from ANSI string
s += L'a'; // automatically converted from wide string

Conversions involving ANSI strings use the default user locale. However it is possible to use a custom locale if necessary:

std::locale locale;
...
std::string s1 = s.toAnsiString(locale);
s = sf::String("hello", locale);

sf::String defines the most important functions of the standard std::string class: removing, random access, iterating, appending, comparing, etc. However it is a simple class provided for convenience, and you may have to consider using a more optimized class if your program requires complex string handling. The automatic conversion functions will then take care of converting your string to sf::String whenever SFML requires it.

+

Please note that SFML also defines a low-level, generic interface for Unicode handling, see the sf::Utf classes.

+ +

Definition at line 45 of file String.hpp.

+

Member Typedef Documentation

+ +

◆ ConstIterator

+ +
+
+ + + + +
typedef std::basic_string<Uint32>::const_iterator sf::String::ConstIterator
+
+ +

Read-only iterator type.

+ +

Definition at line 53 of file String.hpp.

+ +
+
+ +

◆ Iterator

+ +
+
+ + + + +
typedef std::basic_string<Uint32>::iterator sf::String::Iterator
+
+ +

Iterator type.

+ +

Definition at line 52 of file String.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ String() [1/11]

+ +
+
+ + + + + + + +
sf::String::String ()
+
+ +

Default constructor.

+

This constructor creates an empty string.

+ +
+
+ +

◆ String() [2/11]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::String::String (char ansiChar,
const std::locale & locale = std::locale() 
)
+
+ +

Construct from a single ANSI character and a locale.

+

The source character is converted to UTF-32 according to the given locale.

+
Parameters
+ + + +
ansiCharANSI character to convert
localeLocale to use for conversion
+
+
+ +
+
+ +

◆ String() [3/11]

+ +
+
+ + + + + + + + +
sf::String::String (wchar_t wideChar)
+
+ +

Construct from single wide character.

+
Parameters
+ + +
wideCharWide character to convert
+
+
+ +
+
+ +

◆ String() [4/11]

+ +
+
+ + + + + + + + +
sf::String::String (Uint32 utf32Char)
+
+ +

Construct from single UTF-32 character.

+
Parameters
+ + +
utf32CharUTF-32 character to convert
+
+
+ +
+
+ +

◆ String() [5/11]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::String::String (const char * ansiString,
const std::locale & locale = std::locale() 
)
+
+ +

Construct from a null-terminated C-style ANSI string and a locale.

+

The source string is converted to UTF-32 according to the given locale.

+
Parameters
+ + + +
ansiStringANSI string to convert
localeLocale to use for conversion
+
+
+ +
+
+ +

◆ String() [6/11]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::String::String (const std::string & ansiString,
const std::locale & locale = std::locale() 
)
+
+ +

Construct from an ANSI string and a locale.

+

The source string is converted to UTF-32 according to the given locale.

+
Parameters
+ + + +
ansiStringANSI string to convert
localeLocale to use for conversion
+
+
+ +
+
+ +

◆ String() [7/11]

+ +
+
+ + + + + + + + +
sf::String::String (const wchar_t * wideString)
+
+ +

Construct from null-terminated C-style wide string.

+
Parameters
+ + +
wideStringWide string to convert
+
+
+ +
+
+ +

◆ String() [8/11]

+ +
+
+ + + + + + + + +
sf::String::String (const std::wstring & wideString)
+
+ +

Construct from a wide string.

+
Parameters
+ + +
wideStringWide string to convert
+
+
+ +
+
+ +

◆ String() [9/11]

+ +
+
+ + + + + + + + +
sf::String::String (const Uint32 * utf32String)
+
+ +

Construct from a null-terminated C-style UTF-32 string.

+
Parameters
+ + +
utf32StringUTF-32 string to assign
+
+
+ +
+
+ +

◆ String() [10/11]

+ +
+
+ + + + + + + + +
sf::String::String (const std::basic_string< Uint32 > & utf32String)
+
+ +

Construct from an UTF-32 string.

+
Parameters
+ + +
utf32StringUTF-32 string to assign
+
+
+ +
+
+ +

◆ String() [11/11]

+ +
+
+ + + + + + + + +
sf::String::String (const Stringcopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyInstance to copy
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+ + + + + + + +
Iterator sf::String::begin ()
+
+ +

Return an iterator to the beginning of the string.

+
Returns
Read-write iterator to the beginning of the string characters
+
See also
end
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ + + + + + + +
ConstIterator sf::String::begin () const
+
+ +

Return an iterator to the beginning of the string.

+
Returns
Read-only iterator to the beginning of the string characters
+
See also
end
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + +
void sf::String::clear ()
+
+ +

Clear the string.

+

This function removes all the characters from the string.

+
See also
isEmpty, erase
+ +
+
+ +

◆ end() [1/2]

+ +
+
+ + + + + + + +
Iterator sf::String::end ()
+
+ +

Return an iterator to the end of the string.

+

The end iterator refers to 1 position past the last character; thus it represents an invalid character and should never be accessed.

+
Returns
Read-write iterator to the end of the string characters
+
See also
begin
+ +
+
+ +

◆ end() [2/2]

+ +
+
+ + + + + + + +
ConstIterator sf::String::end () const
+
+ +

Return an iterator to the end of the string.

+

The end iterator refers to 1 position past the last character; thus it represents an invalid character and should never be accessed.

+
Returns
Read-only iterator to the end of the string characters
+
See also
begin
+ +
+
+ +

◆ erase()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::String::erase (std::size_t position,
std::size_t count = 1 
)
+
+ +

Erase one or more characters from the string.

+

This function removes a sequence of count characters starting from position.

+
Parameters
+ + + +
positionPosition of the first character to erase
countNumber of characters to erase
+
+
+ +
+
+ +

◆ find()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::size_t sf::String::find (const Stringstr,
std::size_t start = 0 
) const
+
+ +

Find a sequence of one or more characters in the string.

+

This function searches for the characters of str in the string, starting from start.

+
Parameters
+ + + +
strCharacters to find
startWhere to begin searching
+
+
+
Returns
Position of str in the string, or String::InvalidPos if not found
+ +
+
+ +

◆ fromUtf16()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static String sf::String::fromUtf16 (begin,
end 
)
+
+static
+
+ +

Create a new sf::String from a UTF-16 encoded string.

+
Parameters
+ + + +
beginForward iterator to the beginning of the UTF-16 sequence
endForward iterator to the end of the UTF-16 sequence
+
+
+
Returns
A sf::String containing the source string
+
See also
fromUtf8, fromUtf32
+ +
+
+ +

◆ fromUtf32()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static String sf::String::fromUtf32 (begin,
end 
)
+
+static
+
+ +

Create a new sf::String from a UTF-32 encoded string.

+

This function is provided for consistency, it is equivalent to using the constructors that takes a const sf::Uint32* or a std::basic_string<sf::Uint32>.

+
Parameters
+ + + +
beginForward iterator to the beginning of the UTF-32 sequence
endForward iterator to the end of the UTF-32 sequence
+
+
+
Returns
A sf::String containing the source string
+
See also
fromUtf8, fromUtf16
+ +
+
+ +

◆ fromUtf8()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static String sf::String::fromUtf8 (begin,
end 
)
+
+static
+
+ +

Create a new sf::String from a UTF-8 encoded string.

+
Parameters
+ + + +
beginForward iterator to the beginning of the UTF-8 sequence
endForward iterator to the end of the UTF-8 sequence
+
+
+
Returns
A sf::String containing the source string
+
See also
fromUtf16, fromUtf32
+ +
+
+ +

◆ getData()

+ +
+
+ + + + + + + +
const Uint32* sf::String::getData () const
+
+ +

Get a pointer to the C-style array of characters.

+

This functions provides a read-only access to a null-terminated C-style representation of the string. The returned pointer is temporary and is meant only for immediate use, thus it is not recommended to store it.

+
Returns
Read-only pointer to the array of characters
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
std::size_t sf::String::getSize () const
+
+ +

Get the size of the string.

+
Returns
Number of characters in the string
+
See also
isEmpty
+ +
+
+ +

◆ insert()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::String::insert (std::size_t position,
const Stringstr 
)
+
+ +

Insert one or more characters into the string.

+

This function inserts the characters of str into the string, starting from position.

+
Parameters
+ + + +
positionPosition of insertion
strCharacters to insert
+
+
+ +
+
+ +

◆ isEmpty()

+ +
+
+ + + + + + + +
bool sf::String::isEmpty () const
+
+ +

Check whether the string is empty or not.

+
Returns
True if the string is empty (i.e. contains no character)
+
See also
clear, getSize
+ +
+
+ +

◆ operator std::string()

+ +
+
+ + + + + + + +
sf::String::operator std::string () const
+
+ +

Implicit conversion operator to std::string (ANSI string)

+

The current global locale is used for conversion. If you want to explicitly specify a locale, see toAnsiString. Characters that do not fit in the target encoding are discarded from the returned string. This operator is defined for convenience, and is equivalent to calling toAnsiString().

+
Returns
Converted ANSI string
+
See also
toAnsiString, operator std::wstring
+ +
+
+ +

◆ operator std::wstring()

+ +
+
+ + + + + + + +
sf::String::operator std::wstring () const
+
+ +

Implicit conversion operator to std::wstring (wide string)

+

Characters that do not fit in the target encoding are discarded from the returned string. This operator is defined for convenience, and is equivalent to calling toWideString().

+
Returns
Converted wide string
+
See also
toWideString, operator std::string
+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
String& sf::String::operator+= (const Stringright)
+
+ +

Overload of += operator to append an UTF-32 string.

+
Parameters
+ + +
rightString to append
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
String& sf::String::operator= (const Stringright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
Uint32 sf::String::operator[] (std::size_t index) const
+
+ +

Overload of [] operator to access a character by its position.

+

This function provides read-only access to characters. Note: the behavior is undefined if index is out of range.

+
Parameters
+ + +
indexIndex of the character to get
+
+
+
Returns
Character at position index
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
Uint32& sf::String::operator[] (std::size_t index)
+
+ +

Overload of [] operator to access a character by its position.

+

This function provides read and write access to characters. Note: the behavior is undefined if index is out of range.

+
Parameters
+ + +
indexIndex of the character to get
+
+
+
Returns
Reference to the character at position index
+ +
+
+ +

◆ replace() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::String::replace (std::size_t position,
std::size_t length,
const StringreplaceWith 
)
+
+ +

Replace a substring with another string.

+

This function replaces the substring that starts at index position and spans length characters with the string replaceWith.

+
Parameters
+ + + + +
positionIndex of the first character to be replaced
lengthNumber of characters to replace. You can pass InvalidPos to replace all characters until the end of the string.
replaceWithString that replaces the given substring.
+
+
+ +
+
+ +

◆ replace() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::String::replace (const StringsearchFor,
const StringreplaceWith 
)
+
+ +

Replace all occurrences of a substring with a replacement string.

+

This function replaces all occurrences of searchFor in this string with the string replaceWith.

+
Parameters
+ + + +
searchForThe value being searched for
replaceWithThe value that replaces found searchFor values
+
+
+ +
+
+ +

◆ substring()

+ +
+
+ + + + + + + + + + + + + + + + + + +
String sf::String::substring (std::size_t position,
std::size_t length = InvalidPos 
) const
+
+ +

Return a part of the string.

+

This function returns the substring that starts at index position and spans length characters.

+
Parameters
+ + + +
positionIndex of the first character
lengthNumber of characters to include in the substring (if the string is shorter, as many characters as possible are included). InvalidPos can be used to include all characters until the end of the string.
+
+
+
Returns
String object containing a substring of this object
+ +
+
+ +

◆ toAnsiString()

+ +
+
+ + + + + + + + +
std::string sf::String::toAnsiString (const std::locale & locale = std::locale()) const
+
+ +

Convert the Unicode string to an ANSI string.

+

The UTF-32 string is converted to an ANSI string in the encoding defined by locale. Characters that do not fit in the target encoding are discarded from the returned string.

+
Parameters
+ + +
localeLocale to use for conversion
+
+
+
Returns
Converted ANSI string
+
See also
toWideString, operator std::string
+ +
+
+ +

◆ toUtf16()

+ +
+
+ + + + + + + +
std::basic_string<Uint16> sf::String::toUtf16 () const
+
+ +

Convert the Unicode string to a UTF-16 string.

+
Returns
Converted UTF-16 string
+
See also
toUtf8, toUtf32
+ +
+
+ +

◆ toUtf32()

+ +
+
+ + + + + + + +
std::basic_string<Uint32> sf::String::toUtf32 () const
+
+ +

Convert the Unicode string to a UTF-32 string.

+

This function doesn't perform any conversion, since the string is already stored as UTF-32 internally.

+
Returns
Converted UTF-32 string
+
See also
toUtf8, toUtf16
+ +
+
+ +

◆ toUtf8()

+ +
+
+ + + + + + + +
std::basic_string<Uint8> sf::String::toUtf8 () const
+
+ +

Convert the Unicode string to a UTF-8 string.

+
Returns
Converted UTF-8 string
+
See also
toUtf16, toUtf32
+ +
+
+ +

◆ toWideString()

+ +
+
+ + + + + + + +
std::wstring sf::String::toWideString () const
+
+ +

Convert the Unicode string to a wide string.

+

Characters that do not fit in the target encoding are discarded from the returned string.

+
Returns
Converted wide string
+
See also
toAnsiString, operator std::wstring
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of != operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if both strings are different
+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
String operator+ (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of binary + operator to concatenate two strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
Concatenated string
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator< (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of < operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if left is lexicographically before right
+ +
+
+ +

◆ operator<=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator<= (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of <= operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if left is lexicographically before or equivalent to right
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of == operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if both strings are equal
+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator> (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of > operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if left is lexicographically after right
+ +
+
+ +

◆ operator>=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator>= (const Stringleft,
const Stringright 
)
+
+related
+
+ +

Overload of >= operator to compare two UTF-32 strings.

+
Parameters
+ + + +
leftLeft operand (a string)
rightRight operand (a string)
+
+
+
Returns
True if left is lexicographically after or equivalent to right
+ +
+
+

Member Data Documentation

+ +

◆ InvalidPos

+ +
+
+ + + + + +
+ + + + +
const std::size_t sf::String::InvalidPos
+
+static
+
+ +

Represents an invalid position in the string.

+ +

Definition at line 58 of file String.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener-members.html new file mode 100644 index 0000000..4b7fad0 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener-members.html @@ -0,0 +1,83 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::TcpListener Member List
+
+
+ +

This is the complete list of members for sf::TcpListener, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
accept(TcpSocket &socket)sf::TcpListener
AnyPort enum valuesf::Socket
close()sf::TcpListener
create()sf::Socketprotected
create(SocketHandle handle)sf::Socketprotected
Disconnected enum valuesf::Socket
Done enum valuesf::Socket
Error enum valuesf::Socket
getHandle() constsf::Socketprotected
getLocalPort() constsf::TcpListener
isBlocking() constsf::Socket
listen(unsigned short port, const IpAddress &address=IpAddress::Any)sf::TcpListener
NotReady enum valuesf::Socket
Partial enum valuesf::Socket
setBlocking(bool blocking)sf::Socket
Socket(Type type)sf::Socketprotected
Status enum namesf::Socket
Tcp enum valuesf::Socketprotected
TcpListener()sf::TcpListener
Type enum namesf::Socketprotected
Udp enum valuesf::Socketprotected
~Socket()sf::Socketvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.html new file mode 100644 index 0000000..8dadc4e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.html @@ -0,0 +1,547 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Socket that listens to new TCP connections. + More...

+ +

#include <TcpListener.hpp>

+
+Inheritance diagram for sf::TcpListener:
+
+
+ + +sf::Socket +sf::NonCopyable + +
+ + + + + + + + +

+Public Types

enum  Status {
+  Done, +NotReady, +Partial, +Disconnected, +
+  Error +
+ }
 Status codes that may be returned by socket functions. More...
 
enum  { AnyPort = 0 + }
 Some special values used by sockets. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TcpListener ()
 Default constructor. More...
 
unsigned short getLocalPort () const
 Get the port to which the socket is bound locally. More...
 
Status listen (unsigned short port, const IpAddress &address=IpAddress::Any)
 Start listening for incoming connection attempts. More...
 
void close ()
 Stop listening and close the socket. More...
 
Status accept (TcpSocket &socket)
 Accept a new connection. More...
 
void setBlocking (bool blocking)
 Set the blocking state of the socket. More...
 
bool isBlocking () const
 Tell whether the socket is in blocking or non-blocking mode. More...
 
+ + + + +

+Protected Types

enum  Type { Tcp, +Udp + }
 Types of protocols that the socket can use. More...
 
+ + + + + + + + + + +

+Protected Member Functions

SocketHandle getHandle () const
 Return the internal handle of the socket. More...
 
void create ()
 Create the internal representation of the socket. More...
 
void create (SocketHandle handle)
 Create the internal representation of the socket from a socket handle. More...
 
+

Detailed Description

+

Socket that listens to new TCP connections.

+

A listener socket is a special type of socket that listens to a given port and waits for connections on that port.

+

This is all it can do.

+

When a new connection is received, you must call accept and the listener returns a new instance of sf::TcpSocket that is properly initialized and can be used to communicate with the new client.

+

Listener sockets are specific to the TCP protocol, UDP sockets are connectionless and can therefore communicate directly. As a consequence, a listener socket will always return the new connections as sf::TcpSocket instances.

+

A listener is automatically closed on destruction, like all other types of socket. However if you want to stop listening before the socket is destroyed, you can call its close() function.

+

Usage example:

// Create a listener socket and make it wait for new
// connections on port 55001
sf::TcpListener listener;
listener.listen(55001);
// Endless loop that waits for new connections
while (running)
{
sf::TcpSocket client;
if (listener.accept(client) == sf::Socket::Done)
{
// A new client just connected!
std::cout << "New connection received from " << client.getRemoteAddress() << std::endl;
doSomethingWith(client);
}
}
See also
sf::TcpSocket, sf::Socket
+ +

Definition at line 44 of file TcpListener.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + + +
+ + + + +
anonymous enum
+
+inherited
+
+ +

Some special values used by sockets.

+ + +
Enumerator
AnyPort 

Special value that tells the system to pick any available port.

+
+ +

Definition at line 66 of file Socket.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Status
+
+inherited
+
+ +

Status codes that may be returned by socket functions.

+ + + + + + +
Enumerator
Done 

The socket has sent / received the data.

+
NotReady 

The socket is not ready to send / receive data yet.

+
Partial 

The socket sent a part of the data.

+
Disconnected 

The TCP socket has been disconnected.

+
Error 

An unexpected error happened.

+
+ +

Definition at line 53 of file Socket.hpp.

+ +
+
+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Type
+
+protectedinherited
+
+ +

Types of protocols that the socket can use.

+ + + +
Enumerator
Tcp 

TCP protocol.

+
Udp 

UDP protocol.

+
+ +

Definition at line 114 of file Socket.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ TcpListener()

+ +
+
+ + + + + + + +
sf::TcpListener::TcpListener ()
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ accept()

+ +
+
+ + + + + + + + +
Status sf::TcpListener::accept (TcpSocketsocket)
+
+ +

Accept a new connection.

+

If the socket is in blocking mode, this function will not return until a connection is actually received.

+
Parameters
+ + +
socketSocket that will hold the new connection
+
+
+
Returns
Status code
+
See also
listen
+ +
+
+ +

◆ close()

+ +
+
+ + + + + + + +
void sf::TcpListener::close ()
+
+ +

Stop listening and close the socket.

+

This function gracefully stops the listener. If the socket is not listening, this function has no effect.

+
See also
listen
+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::create ()
+
+protectedinherited
+
+ +

Create the internal representation of the socket.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::create (SocketHandle handle)
+
+protectedinherited
+
+ +

Create the internal representation of the socket from a socket handle.

+

This function can only be accessed by derived classes.

+
Parameters
+ + +
handleOS-specific handle of the socket to wrap
+
+
+ +
+
+ +

◆ getHandle()

+ +
+
+ + + + + +
+ + + + + + + +
SocketHandle sf::Socket::getHandle () const
+
+protectedinherited
+
+ +

Return the internal handle of the socket.

+

The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

+
Returns
The internal (OS-specific) handle of the socket
+ +
+
+ +

◆ getLocalPort()

+ +
+
+ + + + + + + +
unsigned short sf::TcpListener::getLocalPort () const
+
+ +

Get the port to which the socket is bound locally.

+

If the socket is not listening to a port, this function returns 0.

+
Returns
Port to which the socket is bound
+
See also
listen
+ +
+
+ +

◆ isBlocking()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Socket::isBlocking () const
+
+inherited
+
+ +

Tell whether the socket is in blocking or non-blocking mode.

+
Returns
True if the socket is blocking, false otherwise
+
See also
setBlocking
+ +
+
+ +

◆ listen()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Status sf::TcpListener::listen (unsigned short port,
const IpAddressaddress = IpAddress::Any 
)
+
+ +

Start listening for incoming connection attempts.

+

This function makes the socket start listening on the specified port, waiting for incoming connection attempts.

+

If the socket is already listening on a port when this function is called, it will stop listening on the old port before starting to listen on the new port.

+
Parameters
+ + + +
portPort to listen on for incoming connection attempts
addressAddress of the interface to listen on
+
+
+
Returns
Status code
+
See also
accept, close
+ +
+
+ +

◆ setBlocking()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::setBlocking (bool blocking)
+
+inherited
+
+ +

Set the blocking state of the socket.

+

In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

+
Parameters
+ + +
blockingTrue to set the socket as blocking, false for non-blocking
+
+
+
See also
isBlocking
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpListener.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae34e9a41272af450ed3638226647bbc26e8d3b GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(VCdjrW?*2r>|(0Vz`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0(~@iNCg`m@TX;EZM^T?@A7qRT9>Z{PhSu_GxT@rwmQEo|4A~hHfegAf7QAadttT5cgN51 z&Xex^3J5x9>CW*WvzD<%qvy+4(N->H-31CEGMoxt^TjXra6Zt_IL7kf-z-DMJ^Ryq z7~Zd!6h81f`&h_4WN$`K49Z$;mUr7+eUi^^|1ACWiw|D+_L$D$BVo4fT5Qg#CmPS( zJ!bcxi&nkW`+C6|&r6N(CbYfjiCh2iZ^xBCe2sle)<*piy|_1qZ@==@H$Sx(-M#D^ zWLg>eEvk0rqU^2P-{lL(zxBNI8XTr7o|D2CE}2u@Cvf2MFE)-qiI=~vxkTNf92{3z zTynp5Pla)ZsV766uTVqyWR?e4RTwMa+>m)wg17`Z6&yek`je+wZA|675oT6i++Zv_ z@y)4=mJGLRmUuJ7irg-Uj>_4-?p?^|a|#*sjG>@O>-D=yH3#&h+tY6&``*vnXDQkw; x!DWX&N`KrOKl%S$mIv2W7%N1*yfl|`{ACs{(zdTj5eFqn22WQ%mvv4FO#lGWQM~{F literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket-members.html new file mode 100644 index 0000000..c819034 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket-members.html @@ -0,0 +1,91 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::TcpSocket Member List
+
+
+ +

This is the complete list of members for sf::TcpSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AnyPort enum valuesf::Socket
close()sf::Socketprotected
connect(const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)sf::TcpSocket
create()sf::Socketprotected
create(SocketHandle handle)sf::Socketprotected
disconnect()sf::TcpSocket
Disconnected enum valuesf::Socket
Done enum valuesf::Socket
Error enum valuesf::Socket
getHandle() constsf::Socketprotected
getLocalPort() constsf::TcpSocket
getRemoteAddress() constsf::TcpSocket
getRemotePort() constsf::TcpSocket
isBlocking() constsf::Socket
NotReady enum valuesf::Socket
Partial enum valuesf::Socket
receive(void *data, std::size_t size, std::size_t &received)sf::TcpSocket
receive(Packet &packet)sf::TcpSocket
send(const void *data, std::size_t size)sf::TcpSocket
send(const void *data, std::size_t size, std::size_t &sent)sf::TcpSocket
send(Packet &packet)sf::TcpSocket
setBlocking(bool blocking)sf::Socket
Socket(Type type)sf::Socketprotected
Status enum namesf::Socket
Tcp enum valuesf::Socketprotected
TcpListener (defined in sf::TcpSocket)sf::TcpSocketfriend
TcpSocket()sf::TcpSocket
Type enum namesf::Socketprotected
Udp enum valuesf::Socketprotected
~Socket()sf::Socketvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.html new file mode 100644 index 0000000..f463ff5 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.html @@ -0,0 +1,819 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized socket using the TCP protocol. + More...

+ +

#include <TcpSocket.hpp>

+
+Inheritance diagram for sf::TcpSocket:
+
+
+ + +sf::Socket +sf::NonCopyable + +
+ + + + + + + + +

+Public Types

enum  Status {
+  Done, +NotReady, +Partial, +Disconnected, +
+  Error +
+ }
 Status codes that may be returned by socket functions. More...
 
enum  { AnyPort = 0 + }
 Some special values used by sockets. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TcpSocket ()
 Default constructor. More...
 
unsigned short getLocalPort () const
 Get the port to which the socket is bound locally. More...
 
IpAddress getRemoteAddress () const
 Get the address of the connected peer. More...
 
unsigned short getRemotePort () const
 Get the port of the connected peer to which the socket is connected. More...
 
Status connect (const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)
 Connect the socket to a remote peer. More...
 
void disconnect ()
 Disconnect the socket from its remote peer. More...
 
Status send (const void *data, std::size_t size)
 Send raw data to the remote peer. More...
 
Status send (const void *data, std::size_t size, std::size_t &sent)
 Send raw data to the remote peer. More...
 
Status receive (void *data, std::size_t size, std::size_t &received)
 Receive raw data from the remote peer. More...
 
Status send (Packet &packet)
 Send a formatted packet of data to the remote peer. More...
 
Status receive (Packet &packet)
 Receive a formatted packet of data from the remote peer. More...
 
void setBlocking (bool blocking)
 Set the blocking state of the socket. More...
 
bool isBlocking () const
 Tell whether the socket is in blocking or non-blocking mode. More...
 
+ + + + +

+Protected Types

enum  Type { Tcp, +Udp + }
 Types of protocols that the socket can use. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

SocketHandle getHandle () const
 Return the internal handle of the socket. More...
 
void create ()
 Create the internal representation of the socket. More...
 
void create (SocketHandle handle)
 Create the internal representation of the socket from a socket handle. More...
 
void close ()
 Close the socket gracefully. More...
 
+ + + +

+Friends

+class TcpListener
 
+

Detailed Description

+

Specialized socket using the TCP protocol.

+

TCP is a connected protocol, which means that a TCP socket can only communicate with the host it is connected to.

+

It can't send or receive anything if it is not connected.

+

The TCP protocol is reliable but adds a slight overhead. It ensures that your data will always be received in order and without errors (no data corrupted, lost or duplicated).

+

When a socket is connected to a remote host, you can retrieve informations about this host with the getRemoteAddress and getRemotePort functions. You can also get the local port to which the socket is bound (which is automatically chosen when the socket is connected), with the getLocalPort function.

+

Sending and receiving data can use either the low-level or the high-level functions. The low-level functions process a raw sequence of bytes, and cannot ensure that one call to Send will exactly match one call to Receive at the other end of the socket.

+

The high-level interface uses packets (see sf::Packet), which are easier to use and provide more safety regarding the data that is exchanged. You can look at the sf::Packet class to get more details about how they work.

+

The socket is automatically disconnected when it is destroyed, but if you want to explicitly close the connection while the socket instance is still alive, you can call disconnect.

+

Usage example:

// ----- The client -----
// Create a socket and connect it to 192.168.1.50 on port 55001
socket.connect("192.168.1.50", 55001);
// Send a message to the connected host
std::string message = "Hi, I am a client";
socket.send(message.c_str(), message.size() + 1);
// Receive an answer from the server
char buffer[1024];
std::size_t received = 0;
socket.receive(buffer, sizeof(buffer), received);
std::cout << "The server said: " << buffer << std::endl;
// ----- The server -----
// Create a listener to wait for incoming connections on port 55001
sf::TcpListener listener;
listener.listen(55001);
// Wait for a connection
listener.accept(socket);
std::cout << "New client connected: " << socket.getRemoteAddress() << std::endl;
// Receive a message from the client
char buffer[1024];
std::size_t received = 0;
socket.receive(buffer, sizeof(buffer), received);
std::cout << "The client said: " << buffer << std::endl;
// Send an answer
std::string message = "Welcome, client";
socket.send(message.c_str(), message.size() + 1);
See also
sf::Socket, sf::UdpSocket, sf::Packet
+ +

Definition at line 46 of file TcpSocket.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + + +
+ + + + +
anonymous enum
+
+inherited
+
+ +

Some special values used by sockets.

+ + +
Enumerator
AnyPort 

Special value that tells the system to pick any available port.

+
+ +

Definition at line 66 of file Socket.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Status
+
+inherited
+
+ +

Status codes that may be returned by socket functions.

+ + + + + + +
Enumerator
Done 

The socket has sent / received the data.

+
NotReady 

The socket is not ready to send / receive data yet.

+
Partial 

The socket sent a part of the data.

+
Disconnected 

The TCP socket has been disconnected.

+
Error 

An unexpected error happened.

+
+ +

Definition at line 53 of file Socket.hpp.

+ +
+
+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Type
+
+protectedinherited
+
+ +

Types of protocols that the socket can use.

+ + + +
Enumerator
Tcp 

TCP protocol.

+
Udp 

UDP protocol.

+
+ +

Definition at line 114 of file Socket.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ TcpSocket()

+ +
+
+ + + + + + + +
sf::TcpSocket::TcpSocket ()
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ close()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::close ()
+
+protectedinherited
+
+ +

Close the socket gracefully.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ connect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::TcpSocket::connect (const IpAddressremoteAddress,
unsigned short remotePort,
Time timeout = Time::Zero 
)
+
+ +

Connect the socket to a remote peer.

+

In blocking mode, this function may take a while, especially if the remote peer is not reachable. The last parameter allows you to stop trying to connect after a given timeout. If the socket is already connected, the connection is forcibly disconnected before attempting to connect again.

+
Parameters
+ + + + +
remoteAddressAddress of the remote peer
remotePortPort of the remote peer
timeoutOptional maximum time to wait
+
+
+
Returns
Status code
+
See also
disconnect
+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::create ()
+
+protectedinherited
+
+ +

Create the internal representation of the socket.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::create (SocketHandle handle)
+
+protectedinherited
+
+ +

Create the internal representation of the socket from a socket handle.

+

This function can only be accessed by derived classes.

+
Parameters
+ + +
handleOS-specific handle of the socket to wrap
+
+
+ +
+
+ +

◆ disconnect()

+ +
+
+ + + + + + + +
void sf::TcpSocket::disconnect ()
+
+ +

Disconnect the socket from its remote peer.

+

This function gracefully closes the connection. If the socket is not connected, this function has no effect.

+
See also
connect
+ +
+
+ +

◆ getHandle()

+ +
+
+ + + + + +
+ + + + + + + +
SocketHandle sf::Socket::getHandle () const
+
+protectedinherited
+
+ +

Return the internal handle of the socket.

+

The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

+
Returns
The internal (OS-specific) handle of the socket
+ +
+
+ +

◆ getLocalPort()

+ +
+
+ + + + + + + +
unsigned short sf::TcpSocket::getLocalPort () const
+
+ +

Get the port to which the socket is bound locally.

+

If the socket is not connected, this function returns 0.

+
Returns
Port to which the socket is bound
+
See also
connect, getRemotePort
+ +
+
+ +

◆ getRemoteAddress()

+ +
+
+ + + + + + + +
IpAddress sf::TcpSocket::getRemoteAddress () const
+
+ +

Get the address of the connected peer.

+

It the socket is not connected, this function returns sf::IpAddress::None.

+
Returns
Address of the remote peer
+
See also
getRemotePort
+ +
+
+ +

◆ getRemotePort()

+ +
+
+ + + + + + + +
unsigned short sf::TcpSocket::getRemotePort () const
+
+ +

Get the port of the connected peer to which the socket is connected.

+

If the socket is not connected, this function returns 0.

+
Returns
Remote port to which the socket is connected
+
See also
getRemoteAddress
+ +
+
+ +

◆ isBlocking()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Socket::isBlocking () const
+
+inherited
+
+ +

Tell whether the socket is in blocking or non-blocking mode.

+
Returns
True if the socket is blocking, false otherwise
+
See also
setBlocking
+ +
+
+ +

◆ receive() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::TcpSocket::receive (void * data,
std::size_t size,
std::size_t & received 
)
+
+ +

Receive raw data from the remote peer.

+

In blocking mode, this function will wait until some bytes are actually received. This function will fail if the socket is not connected.

+
Parameters
+ + + + +
dataPointer to the array to fill with the received bytes
sizeMaximum number of bytes that can be received
receivedThis variable is filled with the actual number of bytes received
+
+
+
Returns
Status code
+
See also
send
+ +
+
+ +

◆ receive() [2/2]

+ +
+
+ + + + + + + + +
Status sf::TcpSocket::receive (Packetpacket)
+
+ +

Receive a formatted packet of data from the remote peer.

+

In blocking mode, this function will wait until the whole packet has been received. This function will fail if the socket is not connected.

+
Parameters
+ + +
packetPacket to fill with the received data
+
+
+
Returns
Status code
+
See also
send
+ +
+
+ +

◆ send() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Status sf::TcpSocket::send (const void * data,
std::size_t size 
)
+
+ +

Send raw data to the remote peer.

+

To be able to handle partial sends over non-blocking sockets, use the send(const void*, std::size_t, std::size_t&) overload instead. This function will fail if the socket is not connected.

+
Parameters
+ + + +
dataPointer to the sequence of bytes to send
sizeNumber of bytes to send
+
+
+
Returns
Status code
+
See also
receive
+ +
+
+ +

◆ send() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::TcpSocket::send (const void * data,
std::size_t size,
std::size_t & sent 
)
+
+ +

Send raw data to the remote peer.

+

This function will fail if the socket is not connected.

+
Parameters
+ + + + +
dataPointer to the sequence of bytes to send
sizeNumber of bytes to send
sentThe number of bytes sent will be written here
+
+
+
Returns
Status code
+
See also
receive
+ +
+
+ +

◆ send() [3/3]

+ +
+
+ + + + + + + + +
Status sf::TcpSocket::send (Packetpacket)
+
+ +

Send a formatted packet of data to the remote peer.

+

In non-blocking mode, if this function returns sf::Socket::Partial, you must retry sending the same unmodified packet before sending anything else in order to guarantee the packet arrives at the remote peer uncorrupted. This function will fail if the socket is not connected.

+
Parameters
+ + +
packetPacket to send
+
+
+
Returns
Status code
+
See also
receive
+ +
+
+ +

◆ setBlocking()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::setBlocking (bool blocking)
+
+inherited
+
+ +

Set the blocking state of the socket.

+

In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

+
Parameters
+ + +
blockingTrue to set the socket as blocking, false for non-blocking
+
+
+
See also
isBlocking
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1TcpSocket.png new file mode 100644 index 0000000000000000000000000000000000000000..ed81a9a8cb6a6595a5dc39af72ae86e46d1ab0ab GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(VCdjrW?*2r>|(0Vz`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0+ zpA`3E=e@REkJ3Wl>(6awObb~rd`Wrh%{-4r&&;CAbHYovl~tKuhAu?x%A5ytDGY9u;4*&T?n-`$^ZBeeN1fzG{C>(ClKnO7$Aqe;?+o zIsWTk%KNSEn-urjEI;Pln)&yNNk;N!q5U>X>-G1jdopM3()4WqCH7L}i|!@MjDPDD zJrDm14C*ng;&_mJmm%hf+pfEN0`iuyK56-+%vkaAyVfjI#y|YCOc`V1H>)+g&c4P{ zPv;Bb&rjZ! zCHZ#*zs}+FRDBYCclAG`WvlObzkYpq#&?yM)w5JQrLL-YURn|3X?W~~Vncr^d%;BM zmv!Hrc1{$VAbhI-%jA2rRT>g~g$}Gx<4g#d%wn+0lS$&L3S&>!BnCHA&!56h9C}I& z78#Qm+)5cQJrd3KU9j`pvs)pzpDIt9d$-dg*!G|ErR2?L`>sE<+InRD_NdvhKHM)C zuHLD>_TjUmzorU3$w?J9vwE+zzsl{_>o_~J;NEU)58_a)c)@>v Xjkbx-9fe{B1_lOCS3j3^P6 + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Text Member List
+
+
+ +

This is the complete list of members for sf::Text, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Bold enum valuesf::Text
findCharacterPos(std::size_t index) constsf::Text
getCharacterSize() constsf::Text
getColor() constsf::Text
getFillColor() constsf::Text
getFont() constsf::Text
getGlobalBounds() constsf::Text
getInverseTransform() constsf::Transformable
getLetterSpacing() constsf::Text
getLineSpacing() constsf::Text
getLocalBounds() constsf::Text
getOrigin() constsf::Transformable
getOutlineColor() constsf::Text
getOutlineThickness() constsf::Text
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getString() constsf::Text
getStyle() constsf::Text
getTransform() constsf::Transformable
Italic enum valuesf::Text
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
Regular enum valuesf::Text
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setCharacterSize(unsigned int size)sf::Text
setColor(const Color &color)sf::Text
setFillColor(const Color &color)sf::Text
setFont(const Font &font)sf::Text
setLetterSpacing(float spacingFactor)sf::Text
setLineSpacing(float spacingFactor)sf::Text
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setOutlineColor(const Color &color)sf::Text
setOutlineThickness(float thickness)sf::Text
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
setString(const String &string)sf::Text
setStyle(Uint32 style)sf::Text
StrikeThrough enum valuesf::Text
Style enum namesf::Text
Text()sf::Text
Text(const String &string, const Font &font, unsigned int characterSize=30)sf::Text
Transformable()sf::Transformable
Underlined enum valuesf::Text
~Drawable()sf::Drawableinlinevirtual
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.html new file mode 100644 index 0000000..18f766d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.html @@ -0,0 +1,1557 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Graphical text that can be drawn to a render target. + More...

+ +

#include <Text.hpp>

+
+Inheritance diagram for sf::Text:
+
+
+ + +sf::Drawable +sf::Transformable + +
+ + + + + +

+Public Types

enum  Style {
+  Regular = 0, +Bold = 1 << 0, +Italic = 1 << 1, +Underlined = 1 << 2, +
+  StrikeThrough = 1 << 3 +
+ }
 Enumeration of the string drawing styles. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Text ()
 Default constructor. More...
 
 Text (const String &string, const Font &font, unsigned int characterSize=30)
 Construct the text from a string, font and size. More...
 
void setString (const String &string)
 Set the text's string. More...
 
void setFont (const Font &font)
 Set the text's font. More...
 
void setCharacterSize (unsigned int size)
 Set the character size. More...
 
void setLineSpacing (float spacingFactor)
 Set the line spacing factor. More...
 
void setLetterSpacing (float spacingFactor)
 Set the letter spacing factor. More...
 
void setStyle (Uint32 style)
 Set the text's style. More...
 
void setColor (const Color &color)
 Set the fill color of the text. More...
 
void setFillColor (const Color &color)
 Set the fill color of the text. More...
 
void setOutlineColor (const Color &color)
 Set the outline color of the text. More...
 
void setOutlineThickness (float thickness)
 Set the thickness of the text's outline. More...
 
const StringgetString () const
 Get the text's string. More...
 
const FontgetFont () const
 Get the text's font. More...
 
unsigned int getCharacterSize () const
 Get the character size. More...
 
float getLetterSpacing () const
 Get the size of the letter spacing factor. More...
 
float getLineSpacing () const
 Get the size of the line spacing factor. More...
 
Uint32 getStyle () const
 Get the text's style. More...
 
const ColorgetColor () const
 Get the fill color of the text. More...
 
const ColorgetFillColor () const
 Get the fill color of the text. More...
 
const ColorgetOutlineColor () const
 Get the outline color of the text. More...
 
float getOutlineThickness () const
 Get the outline thickness of the text. More...
 
Vector2f findCharacterPos (std::size_t index) const
 Return the position of the index-th character. More...
 
FloatRect getLocalBounds () const
 Get the local bounding rectangle of the entity. More...
 
FloatRect getGlobalBounds () const
 Get the global bounding rectangle of the entity. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+

Detailed Description

+

Graphical text that can be drawn to a render target.

+

sf::Text is a drawable class that allows to easily display some text with custom style and color on a render target.

+

It inherits all the functions from sf::Transformable: position, rotation, scale, origin. It also adds text-specific properties such as the font to use, the character size, the font style (bold, italic, underlined and strike through), the text color, the outline thickness, the outline color, the character spacing, the line spacing and the text to display of course. It also provides convenience functions to calculate the graphical size of the text, or to get the global position of a given character.

+

sf::Text works in combination with the sf::Font class, which loads and provides the glyphs (visual characters) of a given font.

+

The separation of sf::Font and sf::Text allows more flexibility and better performances: indeed a sf::Font is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a sf::Text is a lightweight object which can combine the glyphs data and metrics of a sf::Font to display any text on a render target.

+

It is important to note that the sf::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a sf::Font must not be destructed while it is used by a sf::Text (i.e. never write a function that uses a local sf::Font instance for creating a text).

+

See also the note on coordinates and undistorted rendering in sf::Transformable.

+

Usage example:

// Declare and load a font
sf::Font font;
font.loadFromFile("arial.ttf");
// Create a text
sf::Text text("hello", font);
// Draw it
window.draw(text);
See also
sf::Font, sf::Transformable
+ +

Definition at line 48 of file Text.hpp.

+

Member Enumeration Documentation

+ +

◆ Style

+ +
+
+ + + + +
enum sf::Text::Style
+
+ +

Enumeration of the string drawing styles.

+ + + + + + +
Enumerator
Regular 

Regular characters, no style.

+
Bold 

Bold characters.

+
Italic 

Italic characters.

+
Underlined 

Underlined characters.

+
StrikeThrough 

Strike through characters.

+
+ +

Definition at line 56 of file Text.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Text() [1/2]

+ +
+
+ + + + + + + +
sf::Text::Text ()
+
+ +

Default constructor.

+

Creates an empty text.

+ +
+
+ +

◆ Text() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::Text::Text (const Stringstring,
const Fontfont,
unsigned int characterSize = 30 
)
+
+ +

Construct the text from a string, font and size.

+

Note that if the used font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when setting the character size. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

+
Parameters
+ + + + +
stringText assigned to the string
fontFont used to draw the string
characterSizeBase size of characters, in pixels
+
+
+ +
+
+

Member Function Documentation

+ +

◆ findCharacterPos()

+ +
+
+ + + + + + + + +
Vector2f sf::Text::findCharacterPos (std::size_t index) const
+
+ +

Return the position of the index-th character.

+

This function computes the visual position of a character from its index in the string. The returned position is in global coordinates (translation, rotation, scale and origin are applied). If index is out of range, the position of the end of the string is returned.

+
Parameters
+ + +
indexIndex of the character
+
+
+
Returns
Position of the character
+ +
+
+ +

◆ getCharacterSize()

+ +
+
+ + + + + + + +
unsigned int sf::Text::getCharacterSize () const
+
+ +

Get the character size.

+
Returns
Size of the characters, in pixels
+
See also
setCharacterSize
+ +
+
+ +

◆ getColor()

+ +
+
+ + + + + + + +
const Color& sf::Text::getColor () const
+
+ +

Get the fill color of the text.

+
Returns
Fill color of the text
+
See also
setFillColor
+
Deprecated:
There is now fill and outline colors instead of a single global color. Use getFillColor() or getOutlineColor() instead.
+ +
+
+ +

◆ getFillColor()

+ +
+
+ + + + + + + +
const Color& sf::Text::getFillColor () const
+
+ +

Get the fill color of the text.

+
Returns
Fill color of the text
+
See also
setFillColor
+ +
+
+ +

◆ getFont()

+ +
+
+ + + + + + + +
const Font* sf::Text::getFont () const
+
+ +

Get the text's font.

+

If the text has no font attached, a NULL pointer is returned. The returned pointer is const, which means that you cannot modify the font when you get it from this function.

+
Returns
Pointer to the text's font
+
See also
setFont
+ +
+
+ +

◆ getGlobalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Text::getGlobalBounds () const
+
+ +

Get the global bounding rectangle of the entity.

+

The returned rectangle is in global coordinates, which means that it takes into account the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the text in the global 2D world's coordinate system.

+
Returns
Global bounding rectangle of the entity
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+inherited
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getLetterSpacing()

+ +
+
+ + + + + + + +
float sf::Text::getLetterSpacing () const
+
+ +

Get the size of the letter spacing factor.

+
Returns
Size of the letter spacing factor
+
See also
setLetterSpacing
+ +
+
+ +

◆ getLineSpacing()

+ +
+
+ + + + + + + +
float sf::Text::getLineSpacing () const
+
+ +

Get the size of the line spacing factor.

+
Returns
Size of the line spacing factor
+
See also
setLineSpacing
+ +
+
+ +

◆ getLocalBounds()

+ +
+
+ + + + + + + +
FloatRect sf::Text::getLocalBounds () const
+
+ +

Get the local bounding rectangle of the entity.

+

The returned rectangle is in local coordinates, which means that it ignores the transformations (translation, rotation, scale, ...) that are applied to the entity. In other words, this function returns the bounds of the entity in the entity's coordinate system.

+
Returns
Local bounding rectangle of the entity
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+inherited
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getOutlineColor()

+ +
+
+ + + + + + + +
const Color& sf::Text::getOutlineColor () const
+
+ +

Get the outline color of the text.

+
Returns
Outline color of the text
+
See also
setOutlineColor
+ +
+
+ +

◆ getOutlineThickness()

+ +
+
+ + + + + + + +
float sf::Text::getOutlineThickness () const
+
+ +

Get the outline thickness of the text.

+
Returns
Outline thickness of the text, in pixels
+
See also
setOutlineThickness
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+inherited
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+inherited
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + +
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+inherited
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getString()

+ +
+
+ + + + + + + +
const String& sf::Text::getString () const
+
+ +

Get the text's string.

+

The returned string is a sf::String, which can automatically be converted to standard string types. So, the following lines of code are all valid:

sf::String s1 = text.getString();
std::string s2 = text.getString();
std::wstring s3 = text.getString();
Returns
Text's string
+
See also
setString
+ +
+
+ +

◆ getStyle()

+ +
+
+ + + + + + + +
Uint32 sf::Text::getStyle () const
+
+ +

Get the text's style.

+
Returns
Text's style
+
See also
setStyle
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+inherited
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+inherited
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+inherited
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+inherited
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setCharacterSize()

+ +
+
+ + + + + + + + +
void sf::Text::setCharacterSize (unsigned int size)
+
+ +

Set the character size.

+

The default size is 30.

+

Note that if the used font is a bitmap font, it is not scalable, thus not all requested sizes will be available to use. This needs to be taken into consideration when setting the character size. If you need to display text of a certain size, make sure the corresponding bitmap font that supports that size is used.

+
Parameters
+ + +
sizeNew character size, in pixels
+
+
+
See also
getCharacterSize
+ +
+
+ +

◆ setColor()

+ +
+
+ + + + + + + + +
void sf::Text::setColor (const Colorcolor)
+
+ +

Set the fill color of the text.

+

By default, the text's fill color is opaque white. Setting the fill color to a transparent color with an outline will cause the outline to be displayed in the fill area of the text.

+
Parameters
+ + +
colorNew fill color of the text
+
+
+
See also
getFillColor
+
Deprecated:
There is now fill and outline colors instead of a single global color. Use setFillColor() or setOutlineColor() instead.
+ +
+
+ +

◆ setFillColor()

+ +
+
+ + + + + + + + +
void sf::Text::setFillColor (const Colorcolor)
+
+ +

Set the fill color of the text.

+

By default, the text's fill color is opaque white. Setting the fill color to a transparent color with an outline will cause the outline to be displayed in the fill area of the text.

+
Parameters
+ + +
colorNew fill color of the text
+
+
+
See also
getFillColor
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + + + + +
void sf::Text::setFont (const Fontfont)
+
+ +

Set the text's font.

+

The font argument refers to a font that must exist as long as the text uses it. Indeed, the text doesn't store its own copy of the font, but rather keeps a pointer to the one that you passed to this function. If the font is destroyed and the text tries to use it, the behavior is undefined.

+
Parameters
+ + +
fontNew font
+
+
+
See also
getFont
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + + + + +
void sf::Text::setLetterSpacing (float spacingFactor)
+
+ +

Set the letter spacing factor.

+

The default spacing between letters is defined by the font. This factor doesn't directly apply to the existing spacing between each character, it rather adds a fixed space between them which is calculated from the font metrics and the character size. Note that factors below 1 (including negative numbers) bring characters closer to each other. By default the letter spacing factor is 1.

+
Parameters
+ + +
spacingFactorNew letter spacing factor
+
+
+
See also
getLetterSpacing
+ +
+
+ +

◆ setLineSpacing()

+ +
+
+ + + + + + + + +
void sf::Text::setLineSpacing (float spacingFactor)
+
+ +

Set the line spacing factor.

+

The default spacing between lines is defined by the font. This method enables you to set a factor for the spacing between lines. By default the line spacing factor is 1.

+
Parameters
+ + +
spacingFactorNew line spacing factor
+
+
+
See also
getLineSpacing
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+inherited
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOutlineColor()

+ +
+
+ + + + + + + + +
void sf::Text::setOutlineColor (const Colorcolor)
+
+ +

Set the outline color of the text.

+

By default, the text's outline color is opaque black.

+
Parameters
+ + +
colorNew outline color of the text
+
+
+
See also
getOutlineColor
+ +
+
+ +

◆ setOutlineThickness()

+ +
+
+ + + + + + + + +
void sf::Text::setOutlineThickness (float thickness)
+
+ +

Set the thickness of the text's outline.

+

By default, the outline thickness is 0.

+

Be aware that using a negative value for the outline thickness will cause distorted rendering.

+
Parameters
+ + +
thicknessNew outline thickness, in pixels
+
+
+
See also
getOutlineThickness
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+inherited
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+inherited
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+inherited
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setString()

+ +
+
+ + + + + + + + +
void sf::Text::setString (const Stringstring)
+
+ +

Set the text's string.

+

The string argument is a sf::String, which can automatically be constructed from standard string types. So, the following calls are all valid:

text.setString("hello");
text.setString(L"hello");
text.setString(std::string("hello"));
text.setString(std::wstring(L"hello"));

A text's string is empty by default.

+
Parameters
+ + +
stringNew string
+
+
+
See also
getString
+ +
+
+ +

◆ setStyle()

+ +
+
+ + + + + + + + +
void sf::Text::setStyle (Uint32 style)
+
+ +

Set the text's style.

+

You can pass a combination of one or more styles, for example sf::Text::Bold | sf::Text::Italic. The default style is sf::Text::Regular.

+
Parameters
+ + +
styleNew style
+
+
+
See also
getStyle
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Text.png new file mode 100644 index 0000000000000000000000000000000000000000..582905f3f8afb8f01075488dd664cb1f77b9d662 GIT binary patch literal 710 zcmeAS@N?(olHy`uVBq!ia0y~yV0gm7z!1Q}%)r24cS-XO0|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`Db&-&F{Fa=?cCT&%?bi+ zv-`E)*FT9pD(_%$)8#~#+EhP5*R-hikD~AQzGr)Vy!!p_#_3D^j!c?#g>&+hCBcTC zo>|SFR@?dN>?f5Rv3Zyg7g`iq%T*%r%2Dp9N}tO1nU`Nod@4QZqp82AN6^Im9(~`n zcP&md__yn0xs~ug-Q8KvBfpGp_c{QRfTZ-%+Jqi*M>lpO_u9xB%# z&wjFMR;-4nX7x#%OH$faua^ASE$G*G|I-uI&Q(wL#Z104dFwWj_=!5xvZd5_U)1cM zY@u;|SIP_Ci&2Gt+ZJhE&t4jnJ?Z4GKv^+W{z)s$=Dq#*M&)|zBHh3hd7h^<%;vpm zie2+o@5$3y;UT)6?$t)`*ZBptnty+yeDcsd9Z$Rc>XR>d$o;)_;!*0M|JQeCul#uA zb=uQirPtTQWP8f&Rabo(ll9)yGpobX>(a^@OH{TVR8f5y;uAFK)(725_p0xAdt9o1 zU(NV|iP@q4SKD8y?$ zUNz1Ft^10WJcmCpGORn0D#ThLI+_Nlpj!G{3m|S z@;YyW{{`a>o=jT~sWAE-QDKbw*nYsfTxZ*<^lLjCQf!LruYOfMeteqEZi6{|zK5U3 zHT{n=TG3-1zVd0hZRt;SOZ)AAPUuK}du4lStAeHYOJ9|8)}2@1%ssVL?d7zGy{Akw zZ3@d{;}V25UQo%o&C8O1oX-)@{g%9Tx-({$nDley@@AxIh2b5wNJYD@<);T3K F0RUNSMXUe- literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture-members.html new file mode 100644 index 0000000..c35fed3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture-members.html @@ -0,0 +1,100 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Texture Member List
+
+
+ +

This is the complete list of members for sf::Texture, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bind(const Texture *texture, CoordinateType coordinateType=Normalized)sf::Texturestatic
CoordinateType enum namesf::Texture
copyToImage() constsf::Texture
create(unsigned int width, unsigned int height)sf::Texture
generateMipmap()sf::Texture
getMaximumSize()sf::Texturestatic
getNativeHandle() constsf::Texture
getSize() constsf::Texture
GlResource()sf::GlResourceprivate
isRepeated() constsf::Texture
isSmooth() constsf::Texture
isSrgb() constsf::Texture
loadFromFile(const std::string &filename, const IntRect &area=IntRect())sf::Texture
loadFromImage(const Image &image, const IntRect &area=IntRect())sf::Texture
loadFromMemory(const void *data, std::size_t size, const IntRect &area=IntRect())sf::Texture
loadFromStream(InputStream &stream, const IntRect &area=IntRect())sf::Texture
Normalized enum valuesf::Texture
operator=(const Texture &right)sf::Texture
Pixels enum valuesf::Texture
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
RenderTarget (defined in sf::Texture)sf::Texturefriend
RenderTexture (defined in sf::Texture)sf::Texturefriend
setRepeated(bool repeated)sf::Texture
setSmooth(bool smooth)sf::Texture
setSrgb(bool sRgb)sf::Texture
swap(Texture &right)sf::Texture
Text (defined in sf::Texture)sf::Texturefriend
Texture()sf::Texture
Texture(const Texture &copy)sf::Texture
update(const Uint8 *pixels)sf::Texture
update(const Uint8 *pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y)sf::Texture
update(const Texture &texture)sf::Texture
update(const Texture &texture, unsigned int x, unsigned int y)sf::Texture
update(const Image &image)sf::Texture
update(const Image &image, unsigned int x, unsigned int y)sf::Texture
update(const Window &window)sf::Texture
update(const Window &window, unsigned int x, unsigned int y)sf::Texture
~GlResource()sf::GlResourceprivate
~Texture()sf::Texture
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.html new file mode 100644 index 0000000..a9928c6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.html @@ -0,0 +1,1201 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Image living on the graphics card that can be used for drawing. + More...

+ +

#include <Texture.hpp>

+
+Inheritance diagram for sf::Texture:
+
+
+ + +sf::GlResource + +
+ + + + + +

+Public Types

enum  CoordinateType { Normalized, +Pixels + }
 Types of texture coordinates that can be used for rendering. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Texture ()
 Default constructor. More...
 
 Texture (const Texture &copy)
 Copy constructor. More...
 
 ~Texture ()
 Destructor. More...
 
bool create (unsigned int width, unsigned int height)
 Create the texture. More...
 
bool loadFromFile (const std::string &filename, const IntRect &area=IntRect())
 Load the texture from a file on disk. More...
 
bool loadFromMemory (const void *data, std::size_t size, const IntRect &area=IntRect())
 Load the texture from a file in memory. More...
 
bool loadFromStream (InputStream &stream, const IntRect &area=IntRect())
 Load the texture from a custom stream. More...
 
bool loadFromImage (const Image &image, const IntRect &area=IntRect())
 Load the texture from an image. More...
 
Vector2u getSize () const
 Return the size of the texture. More...
 
Image copyToImage () const
 Copy the texture pixels to an image. More...
 
void update (const Uint8 *pixels)
 Update the whole texture from an array of pixels. More...
 
void update (const Uint8 *pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y)
 Update a part of the texture from an array of pixels. More...
 
void update (const Texture &texture)
 Update a part of this texture from another texture. More...
 
void update (const Texture &texture, unsigned int x, unsigned int y)
 Update a part of this texture from another texture. More...
 
void update (const Image &image)
 Update the texture from an image. More...
 
void update (const Image &image, unsigned int x, unsigned int y)
 Update a part of the texture from an image. More...
 
void update (const Window &window)
 Update the texture from the contents of a window. More...
 
void update (const Window &window, unsigned int x, unsigned int y)
 Update a part of the texture from the contents of a window. More...
 
void setSmooth (bool smooth)
 Enable or disable the smooth filter. More...
 
bool isSmooth () const
 Tell whether the smooth filter is enabled or not. More...
 
void setSrgb (bool sRgb)
 Enable or disable conversion from sRGB. More...
 
bool isSrgb () const
 Tell whether the texture source is converted from sRGB or not. More...
 
void setRepeated (bool repeated)
 Enable or disable repeating. More...
 
bool isRepeated () const
 Tell whether the texture is repeated or not. More...
 
bool generateMipmap ()
 Generate a mipmap using the current texture data. More...
 
Textureoperator= (const Texture &right)
 Overload of assignment operator. More...
 
void swap (Texture &right)
 Swap the contents of this texture with those of another. More...
 
unsigned int getNativeHandle () const
 Get the underlying OpenGL handle of the texture. More...
 
+ + + + + + + +

+Static Public Member Functions

static void bind (const Texture *texture, CoordinateType coordinateType=Normalized)
 Bind a texture for rendering. More...
 
static unsigned int getMaximumSize ()
 Get the maximum texture size allowed. More...
 
+ + + + +

+Static Private Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+ + + + + + + +

+Friends

+class Text
 
+class RenderTexture
 
+class RenderTarget
 
+

Detailed Description

+

Image living on the graphics card that can be used for drawing.

+

sf::Texture stores pixels that can be drawn, with a sprite for example.

+

A texture lives in the graphics card memory, therefore it is very fast to draw a texture to a render target, or copy a render target to a texture (the graphics card can access both directly).

+

Being stored in the graphics card memory has some drawbacks. A texture cannot be manipulated as freely as a sf::Image, you need to prepare the pixels first and then upload them to the texture in a single operation (see Texture::update).

+

sf::Texture makes it easy to convert from/to sf::Image, but keep in mind that these calls require transfers between the graphics card and the central memory, therefore they are slow operations.

+

A texture can be loaded from an image, but also directly from a file/memory/stream. The necessary shortcuts are defined so that you don't need an image first for the most common cases. However, if you want to perform some modifications on the pixels before creating the final texture, you can load your file to a sf::Image, do whatever you need with the pixels, and then call Texture::loadFromImage.

+

Since they live in the graphics card memory, the pixels of a texture cannot be accessed without a slow copy first. And they cannot be accessed individually. Therefore, if you need to read the texture's pixels (like for pixel-perfect collisions), it is recommended to store the collision information separately, for example in an array of booleans.

+

Like sf::Image, sf::Texture can handle a unique internal representation of pixels, which is RGBA 32 bits. This means that a pixel must be composed of 8 bits red, green, blue and alpha channels – just like a sf::Color.

+

Usage example:

// This example shows the most common use of sf::Texture:
// drawing a sprite
// Load a texture from a file
sf::Texture texture;
if (!texture.loadFromFile("texture.png"))
return -1;
// Assign it to a sprite
sf::Sprite sprite;
sprite.setTexture(texture);
// Draw the textured sprite
window.draw(sprite);
// This example shows another common use of sf::Texture:
// streaming real-time data, like video frames
// Create an empty texture
sf::Texture texture;
if (!texture.create(640, 480))
return -1;
// Create a sprite that will display the texture
sf::Sprite sprite(texture);
while (...) // the main loop
{
...
// update the texture
sf::Uint8* pixels = ...; // get a fresh chunk of pixels (the next frame of a movie, for example)
texture.update(pixels);
// draw it
window.draw(sprite);
...
}

Like sf::Shader that can be used as a raw OpenGL shader, sf::Texture can also be used directly as a raw texture for custom OpenGL geometry.

... render OpenGL geometry ...
sf::Texture::bind(NULL);
See also
sf::Sprite, sf::Image, sf::RenderTexture
+ +

Definition at line 48 of file Texture.hpp.

+

Member Enumeration Documentation

+ +

◆ CoordinateType

+ +
+
+ + + + +
enum sf::Texture::CoordinateType
+
+ +

Types of texture coordinates that can be used for rendering.

+ + + +
Enumerator
Normalized 

Texture coordinates in range [0 .. 1].

+
Pixels 

Texture coordinates in range [0 .. size].

+
+ +

Definition at line 56 of file Texture.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Texture() [1/2]

+ +
+
+ + + + + + + +
sf::Texture::Texture ()
+
+ +

Default constructor.

+

Creates an empty texture.

+ +
+
+ +

◆ Texture() [2/2]

+ +
+
+ + + + + + + + +
sf::Texture::Texture (const Texturecopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyinstance to copy
+
+
+ +
+
+ +

◆ ~Texture()

+ +
+
+ + + + + + + +
sf::Texture::~Texture ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ bind()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sf::Texture::bind (const Texturetexture,
CoordinateType coordinateType = Normalized 
)
+
+static
+
+ +

Bind a texture for rendering.

+

This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::Texture with OpenGL code.

+
sf::Texture t1, t2;
...
sf::Texture::bind(&t1);
// draw OpenGL stuff that use t1...
// draw OpenGL stuff that use t2...
// draw OpenGL stuff that use no texture...

The coordinateType argument controls how texture coordinates will be interpreted. If Normalized (the default), they must be in range [0 .. 1], which is the default way of handling texture coordinates with OpenGL. If Pixels, they must be given in pixels (range [0 .. size]). This mode is used internally by the graphics classes of SFML, it makes the definition of texture coordinates more intuitive for the high-level API, users don't need to compute normalized values.

+
Parameters
+ + + +
texturePointer to the texture to bind, can be null to use no texture
coordinateTypeType of texture coordinates to use
+
+
+ +
+
+ +

◆ copyToImage()

+ +
+
+ + + + + + + +
Image sf::Texture::copyToImage () const
+
+ +

Copy the texture pixels to an image.

+

This function performs a slow operation that downloads the texture's pixels from the graphics card and copies them to a new image, potentially applying transformations to pixels if necessary (texture may be padded or flipped).

+
Returns
Image containing the texture's pixels
+
See also
loadFromImage
+ +
+
+ +

◆ create()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Texture::create (unsigned int width,
unsigned int height 
)
+
+ +

Create the texture.

+

If this function fails, the texture is left unchanged.

+
Parameters
+ + + +
widthWidth of the texture
heightHeight of the texture
+
+
+
Returns
True if creation was successful
+ +
+
+ +

◆ generateMipmap()

+ +
+
+ + + + + + + +
bool sf::Texture::generateMipmap ()
+
+ +

Generate a mipmap using the current texture data.

+

Mipmaps are pre-computed chains of optimized textures. Each level of texture in a mipmap is generated by halving each of the previous level's dimensions. This is done until the final level has the size of 1x1. The textures generated in this process may make use of more advanced filters which might improve the visual quality of textures when they are applied to objects much smaller than they are. This is known as minification. Because fewer texels (texture elements) have to be sampled from when heavily minified, usage of mipmaps can also improve rendering performance in certain scenarios.

+

Mipmap generation relies on the necessary OpenGL extension being available. If it is unavailable or generation fails due to another reason, this function will return false. Mipmap data is only valid from the time it is generated until the next time the base level image is modified, at which point this function will have to be called again to regenerate it.

+
Returns
True if mipmap generation was successful, false if unsuccessful
+ +
+
+ +

◆ getMaximumSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int sf::Texture::getMaximumSize ()
+
+static
+
+ +

Get the maximum texture size allowed.

+

This maximum size is defined by the graphics driver. You can expect a value of 512 pixels for low-end graphics card, and up to 8192 pixels or more for newer hardware.

+
Returns
Maximum size allowed for textures, in pixels
+ +
+
+ +

◆ getNativeHandle()

+ +
+
+ + + + + + + +
unsigned int sf::Texture::getNativeHandle () const
+
+ +

Get the underlying OpenGL handle of the texture.

+

You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

+
Returns
OpenGL handle of the texture or 0 if not yet created
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
Vector2u sf::Texture::getSize () const
+
+ +

Return the size of the texture.

+
Returns
Size in pixels
+ +
+
+ +

◆ isRepeated()

+ +
+
+ + + + + + + +
bool sf::Texture::isRepeated () const
+
+ +

Tell whether the texture is repeated or not.

+
Returns
True if repeat mode is enabled, false if it is disabled
+
See also
setRepeated
+ +
+
+ +

◆ isSmooth()

+ +
+
+ + + + + + + +
bool sf::Texture::isSmooth () const
+
+ +

Tell whether the smooth filter is enabled or not.

+
Returns
True if smoothing is enabled, false if it is disabled
+
See also
setSmooth
+ +
+
+ +

◆ isSrgb()

+ +
+
+ + + + + + + +
bool sf::Texture::isSrgb () const
+
+ +

Tell whether the texture source is converted from sRGB or not.

+
Returns
True if the texture source is converted from sRGB, false if not
+
See also
setSrgb
+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Texture::loadFromFile (const std::string & filename,
const IntRectarea = IntRect() 
)
+
+ +

Load the texture from a file on disk.

+

This function is a shortcut for the following code:

sf::Image image;
image.loadFromFile(filename);
texture.loadFromImage(image, area);

The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

+

The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

+

If this function fails, the texture is left unchanged.

+
Parameters
+ + + +
filenamePath of the image file to load
areaArea of the image to load
+
+
+
Returns
True if loading was successful
+
See also
loadFromMemory, loadFromStream, loadFromImage
+ +
+
+ +

◆ loadFromImage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Texture::loadFromImage (const Imageimage,
const IntRectarea = IntRect() 
)
+
+ +

Load the texture from an image.

+

The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

+

The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

+

If this function fails, the texture is left unchanged.

+
Parameters
+ + + +
imageImage to load into the texture
areaArea of the image to load
+
+
+
Returns
True if loading was successful
+
See also
loadFromFile, loadFromMemory
+ +
+
+ +

◆ loadFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::Texture::loadFromMemory (const void * data,
std::size_t size,
const IntRectarea = IntRect() 
)
+
+ +

Load the texture from a file in memory.

+

This function is a shortcut for the following code:

sf::Image image;
image.loadFromMemory(data, size);
texture.loadFromImage(image, area);

The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

+

The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

+

If this function fails, the texture is left unchanged.

+
Parameters
+ + + + +
dataPointer to the file data in memory
sizeSize of the data to load, in bytes
areaArea of the image to load
+
+
+
Returns
True if loading was successful
+
See also
loadFromFile, loadFromStream, loadFromImage
+ +
+
+ +

◆ loadFromStream()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool sf::Texture::loadFromStream (InputStreamstream,
const IntRectarea = IntRect() 
)
+
+ +

Load the texture from a custom stream.

+

This function is a shortcut for the following code:

sf::Image image;
image.loadFromStream(stream);
texture.loadFromImage(image, area);

The area argument can be used to load only a sub-rectangle of the whole image. If you want the entire image then leave the default value (which is an empty IntRect). If the area rectangle crosses the bounds of the image, it is adjusted to fit the image size.

+

The maximum size for a texture depends on the graphics driver and can be retrieved with the getMaximumSize function.

+

If this function fails, the texture is left unchanged.

+
Parameters
+ + + +
streamSource stream to read from
areaArea of the image to load
+
+
+
Returns
True if loading was successful
+
See also
loadFromFile, loadFromMemory, loadFromImage
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Texture& sf::Texture::operator= (const Textureright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ setRepeated()

+ +
+
+ + + + + + + + +
void sf::Texture::setRepeated (bool repeated)
+
+ +

Enable or disable repeating.

+

Repeating is involved when using texture coordinates outside the texture rectangle [0, 0, width, height]. In this case, if repeat mode is enabled, the whole texture will be repeated as many times as needed to reach the coordinate (for example, if the X texture coordinate is 3 * width, the texture will be repeated 3 times). If repeat mode is disabled, the "extra space" will instead be filled with border pixels. Warning: on very old graphics cards, white pixels may appear when the texture is repeated. With such cards, repeat mode can be used reliably only if the texture has power-of-two dimensions (such as 256x128). Repeating is disabled by default.

+
Parameters
+ + +
repeatedTrue to repeat the texture, false to disable repeating
+
+
+
See also
isRepeated
+ +
+
+ +

◆ setSmooth()

+ +
+
+ + + + + + + + +
void sf::Texture::setSmooth (bool smooth)
+
+ +

Enable or disable the smooth filter.

+

When the filter is activated, the texture appears smoother so that pixels are less noticeable. However if you want the texture to look exactly the same as its source file, you should leave it disabled. The smooth filter is disabled by default.

+
Parameters
+ + +
smoothTrue to enable smoothing, false to disable it
+
+
+
See also
isSmooth
+ +
+
+ +

◆ setSrgb()

+ +
+
+ + + + + + + + +
void sf::Texture::setSrgb (bool sRgb)
+
+ +

Enable or disable conversion from sRGB.

+

When providing texture data from an image file or memory, it can either be stored in a linear color space or an sRGB color space. Most digital images account for gamma correction already, so they would need to be "uncorrected" back to linear color space before being processed by the hardware. The hardware can automatically convert it from the sRGB color space to a linear color space when it gets sampled. When the rendered image gets output to the final framebuffer, it gets converted back to sRGB.

+

After enabling or disabling sRGB conversion, make sure to reload the texture data in order for the setting to take effect.

+

This option is only useful in conjunction with an sRGB capable framebuffer. This can be requested during window creation.

+
Parameters
+ + +
sRgbTrue to enable sRGB conversion, false to disable it
+
+
+
See also
isSrgb
+ +
+
+ +

◆ swap()

+ +
+
+ + + + + + + + +
void sf::Texture::swap (Textureright)
+
+ +

Swap the contents of this texture with those of another.

+
Parameters
+ + +
rightInstance to swap with
+
+
+ +
+
+ +

◆ update() [1/8]

+ +
+
+ + + + + + + + +
void sf::Texture::update (const Uint8 * pixels)
+
+ +

Update the whole texture from an array of pixels.

+

The pixel array is assumed to have the same size as the area rectangle, and to contain 32-bits RGBA pixels.

+

No additional check is performed on the size of the pixel array, passing invalid arguments will lead to an undefined behavior.

+

This function does nothing if pixels is null or if the texture was not previously created.

+
Parameters
+ + +
pixelsArray of pixels to copy to the texture
+
+
+ +
+
+ +

◆ update() [2/8]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Texture::update (const Uint8 * pixels,
unsigned int width,
unsigned int height,
unsigned int x,
unsigned int y 
)
+
+ +

Update a part of the texture from an array of pixels.

+

The size of the pixel array must match the width and height arguments, and it must contain 32-bits RGBA pixels.

+

No additional check is performed on the size of the pixel array or the bounds of the area to update, passing invalid arguments will lead to an undefined behavior.

+

This function does nothing if pixels is null or if the texture was not previously created.

+
Parameters
+ + + + + + +
pixelsArray of pixels to copy to the texture
widthWidth of the pixel region contained in pixels
heightHeight of the pixel region contained in pixels
xX offset in the texture where to copy the source pixels
yY offset in the texture where to copy the source pixels
+
+
+ +
+
+ +

◆ update() [3/8]

+ +
+
+ + + + + + + + +
void sf::Texture::update (const Texturetexture)
+
+ +

Update a part of this texture from another texture.

+

Although the source texture can be smaller than this texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of this texture.

+

No additional check is performed on the size of the passed texture, passing a texture bigger than this texture will lead to an undefined behavior.

+

This function does nothing if either texture was not previously created.

+
Parameters
+ + +
textureSource texture to copy to this texture
+
+
+ +
+
+ +

◆ update() [4/8]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Texture::update (const Texturetexture,
unsigned int x,
unsigned int y 
)
+
+ +

Update a part of this texture from another texture.

+

No additional check is performed on the size of the texture, passing an invalid combination of texture size and offset will lead to an undefined behavior.

+

This function does nothing if either texture was not previously created.

+
Parameters
+ + + + +
textureSource texture to copy to this texture
xX offset in this texture where to copy the source texture
yY offset in this texture where to copy the source texture
+
+
+ +
+
+ +

◆ update() [5/8]

+ +
+
+ + + + + + + + +
void sf::Texture::update (const Imageimage)
+
+ +

Update the texture from an image.

+

Although the source image can be smaller than the texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of the texture.

+

No additional check is performed on the size of the image, passing an image bigger than the texture will lead to an undefined behavior.

+

This function does nothing if the texture was not previously created.

+
Parameters
+ + +
imageImage to copy to the texture
+
+
+ +
+
+ +

◆ update() [6/8]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Texture::update (const Imageimage,
unsigned int x,
unsigned int y 
)
+
+ +

Update a part of the texture from an image.

+

No additional check is performed on the size of the image, passing an invalid combination of image size and offset will lead to an undefined behavior.

+

This function does nothing if the texture was not previously created.

+
Parameters
+ + + + +
imageImage to copy to the texture
xX offset in the texture where to copy the source image
yY offset in the texture where to copy the source image
+
+
+ +
+
+ +

◆ update() [7/8]

+ +
+
+ + + + + + + + +
void sf::Texture::update (const Windowwindow)
+
+ +

Update the texture from the contents of a window.

+

Although the source window can be smaller than the texture, this function is usually used for updating the whole texture. The other overload, which has (x, y) additional arguments, is more convenient for updating a sub-area of the texture.

+

No additional check is performed on the size of the window, passing a window bigger than the texture will lead to an undefined behavior.

+

This function does nothing if either the texture or the window was not previously created.

+
Parameters
+ + +
windowWindow to copy to the texture
+
+
+ +
+
+ +

◆ update() [8/8]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Texture::update (const Windowwindow,
unsigned int x,
unsigned int y 
)
+
+ +

Update a part of the texture from the contents of a window.

+

No additional check is performed on the size of the window, passing an invalid combination of window size and offset will lead to an undefined behavior.

+

This function does nothing if either the texture or the window was not previously created.

+
Parameters
+ + + + +
windowWindow to copy to the texture
xX offset in the texture where to copy the source window
yY offset in the texture where to copy the source window
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Texture.png new file mode 100644 index 0000000000000000000000000000000000000000..91a912f4d87dd105c6ca4007a1c30b754838f4ad GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0y~yV2ER2U;z`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0yoYLpGW6sY;ird{Ofh&zcE3U@dlFdHB!fU_eJUIzdXHrC0o4egtN2W zoc(CKZ;sue{Q8*3(uk4e*K#QS=wx`Xw2}SA3&%e-@3(DdFkZLQ>fr6x zzsvkTbYDI7K5SiZ_RQ$2;N5>^_B&pB$@{&EWkd4hm5kO^KNc70tUDylSoYkg zc1Pap|9_JezjDjF*)`|p#Gm-5FehZ0?fll@*tKuxT!~?=UR=zuZ*e30i;M@1R-cZy e3pCBHWB8CRytT+<<68y>1_n=8KbLh*2~7Y9)Z;$@ literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread-members.html new file mode 100644 index 0000000..3537f32 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread-members.html @@ -0,0 +1,70 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Thread Member List
+
+
+ +

This is the complete list of members for sf::Thread, including all inherited members.

+ + + + + + + + + + +
launch()sf::Thread
NonCopyable()sf::NonCopyableinlineprivate
terminate()sf::Thread
Thread(F function)sf::Thread
Thread(F function, A argument)sf::Thread
Thread(void(C::*function)(), C *object)sf::Thread
wait()sf::Thread
~NonCopyable()sf::NonCopyableinlineprivate
~Thread()sf::Thread
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.html new file mode 100644 index 0000000..a6146dd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.html @@ -0,0 +1,316 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Thread Class Reference
+
+
+ +

Utility class to manipulate threads. + More...

+ +

#include <Thread.hpp>

+
+Inheritance diagram for sf::Thread:
+
+
+ + +sf::NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<typename F >
 Thread (F function)
 Construct the thread from a functor with no argument. More...
 
template<typename F , typename A >
 Thread (F function, A argument)
 Construct the thread from a functor with an argument. More...
 
template<typename C >
 Thread (void(C::*function)(), C *object)
 Construct the thread from a member function and an object. More...
 
 ~Thread ()
 Destructor. More...
 
void launch ()
 Run the thread. More...
 
void wait ()
 Wait until the thread finishes. More...
 
void terminate ()
 Terminate the thread. More...
 
+

Detailed Description

+

Utility class to manipulate threads.

+

Threads provide a way to run multiple parts of the code in parallel.

+

When you launch a new thread, the execution is split and both the new thread and the caller run in parallel.

+

To use a sf::Thread, you construct it directly with the function to execute as the entry point of the thread. sf::Thread has multiple template constructors, which means that you can use several types of entry points:

    +
  • non-member functions with no argument
  • +
  • non-member functions with one argument of any type
  • +
  • functors with no argument (this one is particularly useful for compatibility with boost/std::bind)
  • +
  • functors with one argument of any type
  • +
  • member functions from any class with no argument
  • +
+

The function argument, if any, is copied in the sf::Thread instance, as well as the functor (if the corresponding constructor is used). Class instances, however, are passed by pointer so you must make sure that the object won't be destroyed while the thread is still using it.

+

The thread ends when its function is terminated. If the owner sf::Thread instance is destroyed before the thread is finished, the destructor will wait (see wait())

+

Usage examples:

// example 1: non member function with one argument
void threadFunc(int argument)
{
...
}
sf::Thread thread(&threadFunc, 5);
thread.launch(); // start the thread (internally calls threadFunc(5))
// example 2: member function
class Task
{
public:
void run()
{
...
}
};
Task task;
sf::Thread thread(&Task::run, &task);
thread.launch(); // start the thread (internally calls task.run())
// example 3: functor
struct Task
{
void operator()()
{
...
}
};
sf::Thread thread(Task());
thread.launch(); // start the thread (internally calls operator() on the Task instance)

Creating parallel threads of execution can be dangerous: all threads inside the same process share the same memory space, which means that you may end up accessing the same variable from multiple threads at the same time. To prevent this kind of situations, you can use mutexes (see sf::Mutex).

+
See also
sf::Mutex
+ +

Definition at line 48 of file Thread.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Thread() [1/3]

+ +
+
+
+template<typename F >
+ + + + + + + + +
sf::Thread::Thread (function)
+
+ +

Construct the thread from a functor with no argument.

+

This constructor works for function objects, as well as free functions.

+

Use this constructor for this kind of function:

void function();
// --- or ----
struct Functor
{
void operator()();
};

Note: this does not run the thread, use launch().

+
Parameters
+ + +
functionFunctor or free function to use as the entry point of the thread
+
+
+ +
+
+ +

◆ Thread() [2/3]

+ +
+
+
+template<typename F , typename A >
+ + + + + + + + + + + + + + + + + + +
sf::Thread::Thread (function,
argument 
)
+
+ +

Construct the thread from a functor with an argument.

+

This constructor works for function objects, as well as free functions. It is a template, which means that the argument can have any type (int, std::string, void*, Toto, ...).

+

Use this constructor for this kind of function:

void function(int arg);
// --- or ----
struct Functor
{
void operator()(std::string arg);
};

Note: this does not run the thread, use launch().

+
Parameters
+ + + +
functionFunctor or free function to use as the entry point of the thread
argumentargument to forward to the function
+
+
+ +
+
+ +

◆ Thread() [3/3]

+ +
+
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + +
sf::Thread::Thread (void(C::*)() function,
C * object 
)
+
+ +

Construct the thread from a member function and an object.

+

This constructor is a template, which means that you can use it with any class. Use this constructor for this kind of function:

class MyClass
{
public:
void function();
};

Note: this does not run the thread, use launch().

+
Parameters
+ + + +
functionEntry point of the thread
objectPointer to the object to use
+
+
+ +
+
+ +

◆ ~Thread()

+ +
+
+ + + + + + + +
sf::Thread::~Thread ()
+
+ +

Destructor.

+

This destructor calls wait(), so that the internal thread cannot survive after its sf::Thread instance is destroyed.

+ +
+
+

Member Function Documentation

+ +

◆ launch()

+ +
+
+ + + + + + + +
void sf::Thread::launch ()
+
+ +

Run the thread.

+

This function starts the entry point passed to the thread's constructor, and returns immediately. After this function returns, the thread's function is running in parallel to the calling code.

+ +
+
+ +

◆ terminate()

+ +
+
+ + + + + + + +
void sf::Thread::terminate ()
+
+ +

Terminate the thread.

+

This function immediately stops the thread, without waiting for its function to finish. Terminating a thread with this function is not safe, and can lead to local variables not being destroyed on some operating systems. You should rather try to make the thread function terminate by itself.

+ +
+
+ +

◆ wait()

+ +
+
+ + + + + + + +
void sf::Thread::wait ()
+
+ +

Wait until the thread finishes.

+

This function will block the execution until the thread's function ends. Warning: if the thread function never ends, the calling thread will block forever. If this function is called from its owner thread, it returns without doing anything.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Thread.png new file mode 100644 index 0000000000000000000000000000000000000000..598a56137f314a99325b9729c1071934433ba59f GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(U#7?)jAKvil^x zE$go5SqDYN9Fk3*H$!#mYR6g5v){HonK7m3^5?V@JFh-lzE3qt?d+UCZo5v|@E%pn z-(hC|*>v{iB~_>0e*_1aP7&AlXn&L=`bRI*@<51gvd-UR>qBh66i>>%W~{IB+jhL~ z>&>e5c9UdZewwpN?v&4M|Io&=+-ZN8FaNUlg{|kSfKXpgtE;;`d@t_s(H>w|=7Vfxo6jOgr|w z`7wOIej@XCi$GI12Lqp!N<-Y;P7~AKw-?*~|IC`4GX3%&bB|)PVzKH=NnZKuPFKEA zKHE6$#p@0C%#!!+sQNzX+^X&2tSl9a!oEr^xuSgf2iM9eZ?%>iy;Yl9oE7^1YO&VU z)z*ieC0FG?-1DKDsiK>Wb3u4B%LVQ5AP&Wf7u**)L{InLo3@RCfq}u()z4*}Q$iB} Dc&O#R literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal-members.html new file mode 100644 index 0000000..f8e3dcb --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal-members.html @@ -0,0 +1,67 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::ThreadLocal Member List
+
+
+ +

This is the complete list of members for sf::ThreadLocal, including all inherited members.

+ + + + + + + +
getValue() constsf::ThreadLocal
NonCopyable()sf::NonCopyableinlineprivate
setValue(void *value)sf::ThreadLocal
ThreadLocal(void *value=NULL)sf::ThreadLocal
~NonCopyable()sf::NonCopyableinlineprivate
~ThreadLocal()sf::ThreadLocal
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.html new file mode 100644 index 0000000..7fbd76e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.html @@ -0,0 +1,194 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::ThreadLocal Class Reference
+
+
+ +

Defines variables with thread-local storage. + More...

+ +

#include <ThreadLocal.hpp>

+
+Inheritance diagram for sf::ThreadLocal:
+
+
+ + +sf::NonCopyable +sf::ThreadLocalPtr< T > + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 ThreadLocal (void *value=NULL)
 Default constructor. More...
 
 ~ThreadLocal ()
 Destructor. More...
 
void setValue (void *value)
 Set the thread-specific value of the variable. More...
 
void * getValue () const
 Retrieve the thread-specific value of the variable. More...
 
+

Detailed Description

+

Defines variables with thread-local storage.

+

This class manipulates void* parameters and thus is not appropriate for strongly-typed variables.

+

You should rather use the sf::ThreadLocalPtr template class.

+ +

Definition at line 47 of file ThreadLocal.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ThreadLocal()

+ +
+
+ + + + + + + + +
sf::ThreadLocal::ThreadLocal (void * value = NULL)
+
+ +

Default constructor.

+
Parameters
+ + +
valueOptional value to initialize the variable
+
+
+ +
+
+ +

◆ ~ThreadLocal()

+ +
+
+ + + + + + + +
sf::ThreadLocal::~ThreadLocal ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getValue()

+ +
+
+ + + + + + + +
void* sf::ThreadLocal::getValue () const
+
+ +

Retrieve the thread-specific value of the variable.

+
Returns
Value of the variable for the current thread
+ +
+
+ +

◆ setValue()

+ +
+
+ + + + + + + + +
void sf::ThreadLocal::setValue (void * value)
+
+ +

Set the thread-specific value of the variable.

+
Parameters
+ + +
valueValue of the variable for the current thread
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocal.png new file mode 100644 index 0000000000000000000000000000000000000000..02924d20b2fe006f6b45a825fb51ced4b28d4f07 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yV3@?fz|g_L%)r24{ldwSfq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}^w-nHF{Fa=?cBFzuN8P$ z+Ew5GKeP3tctX<7mA6+{_X*`6R5)CrdTIZYIh*w-s-B$8ph}n{4XO?Z+_qNYIdUM@vkD6&ICwKIMwBvTCnRrTiNzo4-?lUzEr)$ zvqe94-QxIJ$_d*S$jTkvmapi!R%gkz7UQP^D>M7p=Q~(EP4&JPyJYDJuSKgI9~(qG zjeY;acge0Vesd;$aWl_eX&3qYN{;$E-PwFEXGUfDo#P9izevse?!#M;m+$^m`{;=0 zCH5>KP0#z6^Ob7dzRdQJ7y7&Yf0^n_eo>D}DJRu~&ROmjI$&JI_+yg&lIy2sC)+RS zJRv>VS%smTtDixq)th13Ayo$Nhe8cY3pfu1?O;jJjA7a!qQ@A)H62y@d5o8)YP=F- zMUVnx1eXefxB0|n$pP~Ij~8Zs(>ieDqg;?|@UQw*?ORN@rsqZO~G?THNkamx)DmGVAt8VS(>frZR&#%4q zrh7_Ve?jjSn|pd&8liqSSW=W(d;ite)%Py0op?`m-Sy1xVk=KZ#d`m??t7iGJ5xAa zA@}t9%pDH5oWC`$y`?G}UcUX#wWoJOA6{6R*yraF`^c_jW$Z((!u#u&zMJ~)+NFs* zw(YrXerGo83cYEUJ74oXc~K*2&ot?YQ=^LKG+65W)H$X2+`2EUk7BGE%dTbdFfcGM Nc)I$ztaD0e0szi+m^%Of literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr-members.html new file mode 100644 index 0000000..579d1b6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr-members.html @@ -0,0 +1,71 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::ThreadLocalPtr< T > Member List
+
+
+ +

This is the complete list of members for sf::ThreadLocalPtr< T >, including all inherited members.

+ + + + + + + + + + + +
getValue() constsf::ThreadLocalprivate
operator T*() constsf::ThreadLocalPtr< T >
operator*() constsf::ThreadLocalPtr< T >
operator->() constsf::ThreadLocalPtr< T >
operator=(T *value)sf::ThreadLocalPtr< T >
operator=(const ThreadLocalPtr< T > &right)sf::ThreadLocalPtr< T >
setValue(void *value)sf::ThreadLocalprivate
ThreadLocal(void *value=NULL)sf::ThreadLocalprivate
ThreadLocalPtr(T *value=NULL)sf::ThreadLocalPtr< T >
~ThreadLocal()sf::ThreadLocalprivate
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.html new file mode 100644 index 0000000..cd8d998 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.html @@ -0,0 +1,277 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::ThreadLocalPtr< T > Class Template Reference
+
+
+ +

Pointer to a thread-local variable. + More...

+ +

#include <ThreadLocalPtr.hpp>

+
+Inheritance diagram for sf::ThreadLocalPtr< T >:
+
+
+ + +sf::ThreadLocal + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ThreadLocalPtr (T *value=NULL)
 Default constructor. More...
 
T & operator* () const
 Overload of unary operator *. More...
 
T * operator-> () const
 Overload of operator -> More...
 
 operator T* () const
 Conversion operator to implicitly convert the pointer to its raw pointer type (T*) More...
 
ThreadLocalPtr< T > & operator= (T *value)
 Assignment operator for a raw pointer parameter. More...
 
ThreadLocalPtr< T > & operator= (const ThreadLocalPtr< T > &right)
 Assignment operator for a ThreadLocalPtr parameter. More...
 
+ + + + + + + +

+Private Member Functions

void setValue (void *value)
 Set the thread-specific value of the variable. More...
 
void * getValue () const
 Retrieve the thread-specific value of the variable. More...
 
+

Detailed Description

+

template<typename T>
+class sf::ThreadLocalPtr< T >

+ +

Pointer to a thread-local variable.

+

sf::ThreadLocalPtr is a type-safe wrapper for storing pointers to thread-local variables.

+

A thread-local variable holds a different value for each different thread, unlike normal variables that are shared.

+

Its usage is completely transparent, so that it is similar to manipulating the raw pointer directly (like any smart pointer).

+

Usage example:

MyClass object1;
MyClass object2;
void thread1()
{
objectPtr = &object1; // doesn't impact thread2
...
}
void thread2()
{
objectPtr = &object2; // doesn't impact thread1
...
}
int main()
{
// Create and launch the two threads
sf::Thread t1(&thread1);
sf::Thread t2(&thread2);
t1.launch();
t2.launch();
return 0;
}

ThreadLocalPtr is designed for internal use; however you can use it if you feel like it fits well your implementation.

+ +

Definition at line 41 of file ThreadLocalPtr.hpp.

+

Constructor & Destructor Documentation

+ +

◆ ThreadLocalPtr()

+ +
+
+
+template<typename T>
+ + + + + + + + +
sf::ThreadLocalPtr< T >::ThreadLocalPtr (T * value = NULL)
+
+ +

Default constructor.

+
Parameters
+ + +
valueOptional value to initialize the variable
+
+
+ +
+
+

Member Function Documentation

+ +

◆ operator T*()

+ +
+
+
+template<typename T>
+ + + + + + + +
sf::ThreadLocalPtr< T >::operator T* () const
+
+ +

Conversion operator to implicitly convert the pointer to its raw pointer type (T*)

+
Returns
Pointer to the actual object
+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename T>
+ + + + + + + +
T& sf::ThreadLocalPtr< T >::operator* () const
+
+ +

Overload of unary operator *.

+

Like raw pointers, applying the * operator returns a reference to the pointed-to object.

+
Returns
Reference to the thread-local variable
+ +
+
+ +

◆ operator->()

+ +
+
+
+template<typename T>
+ + + + + + + +
T* sf::ThreadLocalPtr< T >::operator-> () const
+
+ +

Overload of operator ->

+

Similarly to raw pointers, applying the -> operator returns the pointed-to object.

+
Returns
Pointer to the thread-local variable
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename T>
+ + + + + + + + +
ThreadLocalPtr<T>& sf::ThreadLocalPtr< T >::operator= (T * value)
+
+ +

Assignment operator for a raw pointer parameter.

+
Parameters
+ + +
valuePointer to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename T>
+ + + + + + + + +
ThreadLocalPtr<T>& sf::ThreadLocalPtr< T >::operator= (const ThreadLocalPtr< T > & right)
+
+ +

Assignment operator for a ThreadLocalPtr parameter.

+
Parameters
+ + +
rightThreadLocalPtr to assign
+
+
+
Returns
Reference to self
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1ThreadLocalPtr.png new file mode 100644 index 0000000000000000000000000000000000000000..1796db78d3a8670a5d4e419c99ba84320482b416 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0y~yV3@?fz!1Q}%)r2KwDk^%k_hk#asB`QKLZ29i#K0O z`wvZEU|;~_0|ySUcHWU^U|`@V3GxeO_zwYBPlXsUFfcyxba4!+V0=6G;Jc`x3&>W>hgKzm8QPhdLc1@ZR^Fh+>L7e zK`Jl3_$REBx}II~M)Fbdl1mG!m)LwzweoQ9Qi*+Wu%g_xO^>&_#OYVm<9P~yi>CD* z+xj?H*68|5hN;mzNGF^!Q4a24E_&=8kQGu9thsS@<20&>4S(KV+GfA2AfuIhIxlnQKVm1>n)vf zDMpF$%n}Et4WZaL&`NsL}|^03I`pxXG)x1OEUn>9FVdQ&MBb@0I7cx5dZ)H literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time-members.html new file mode 100644 index 0000000..b76fae1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time-members.html @@ -0,0 +1,96 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Time Member List
+
+
+ +

This is the complete list of members for sf::Time, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
asMicroseconds() constsf::Time
asMilliseconds() constsf::Time
asSeconds() constsf::Time
microseconds (defined in sf::Time)sf::Timefriend
microseconds(Int64 amount)sf::Timerelated
milliseconds (defined in sf::Time)sf::Timefriend
milliseconds(Int32 amount)sf::Timerelated
operator!=(Time left, Time right)sf::Timerelated
operator%(Time left, Time right)sf::Timerelated
operator%=(Time &left, Time right)sf::Timerelated
operator*(Time left, float right)sf::Timerelated
operator*(Time left, Int64 right)sf::Timerelated
operator*(float left, Time right)sf::Timerelated
operator*(Int64 left, Time right)sf::Timerelated
operator*=(Time &left, float right)sf::Timerelated
operator*=(Time &left, Int64 right)sf::Timerelated
operator+(Time left, Time right)sf::Timerelated
operator+=(Time &left, Time right)sf::Timerelated
operator-(Time right)sf::Timerelated
operator-(Time left, Time right)sf::Timerelated
operator-=(Time &left, Time right)sf::Timerelated
operator/(Time left, float right)sf::Timerelated
operator/(Time left, Int64 right)sf::Timerelated
operator/(Time left, Time right)sf::Timerelated
operator/=(Time &left, float right)sf::Timerelated
operator/=(Time &left, Int64 right)sf::Timerelated
operator<(Time left, Time right)sf::Timerelated
operator<=(Time left, Time right)sf::Timerelated
operator==(Time left, Time right)sf::Timerelated
operator>(Time left, Time right)sf::Timerelated
operator>=(Time left, Time right)sf::Timerelated
seconds (defined in sf::Time)sf::Timefriend
seconds(float amount)sf::Timerelated
Time()sf::Time
Zerosf::Timestatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time.html new file mode 100644 index 0000000..3485dcd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Time.html @@ -0,0 +1,1516 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Represents a time value. + More...

+ +

#include <Time.hpp>

+ + + + + + + + + + + + + + +

+Public Member Functions

 Time ()
 Default constructor. More...
 
float asSeconds () const
 Return the time value as a number of seconds. More...
 
Int32 asMilliseconds () const
 Return the time value as a number of milliseconds. More...
 
Int64 asMicroseconds () const
 Return the time value as a number of microseconds. More...
 
+ + + + +

+Static Public Attributes

static const Time Zero
 Predefined "zero" time value. More...
 
+ + + + + + + +

+Friends

+Time seconds (float)
 
+Time milliseconds (Int32)
 
+Time microseconds (Int64)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
Time seconds (float amount)
 Construct a time value from a number of seconds. More...
 
Time milliseconds (Int32 amount)
 Construct a time value from a number of milliseconds. More...
 
Time microseconds (Int64 amount)
 Construct a time value from a number of microseconds. More...
 
bool operator== (Time left, Time right)
 Overload of == operator to compare two time values. More...
 
bool operator!= (Time left, Time right)
 Overload of != operator to compare two time values. More...
 
bool operator< (Time left, Time right)
 Overload of < operator to compare two time values. More...
 
bool operator> (Time left, Time right)
 Overload of > operator to compare two time values. More...
 
bool operator<= (Time left, Time right)
 Overload of <= operator to compare two time values. More...
 
bool operator>= (Time left, Time right)
 Overload of >= operator to compare two time values. More...
 
Time operator- (Time right)
 Overload of unary - operator to negate a time value. More...
 
Time operator+ (Time left, Time right)
 Overload of binary + operator to add two time values. More...
 
Timeoperator+= (Time &left, Time right)
 Overload of binary += operator to add/assign two time values. More...
 
Time operator- (Time left, Time right)
 Overload of binary - operator to subtract two time values. More...
 
Timeoperator-= (Time &left, Time right)
 Overload of binary -= operator to subtract/assign two time values. More...
 
Time operator* (Time left, float right)
 Overload of binary * operator to scale a time value. More...
 
Time operator* (Time left, Int64 right)
 Overload of binary * operator to scale a time value. More...
 
Time operator* (float left, Time right)
 Overload of binary * operator to scale a time value. More...
 
Time operator* (Int64 left, Time right)
 Overload of binary * operator to scale a time value. More...
 
Timeoperator*= (Time &left, float right)
 Overload of binary *= operator to scale/assign a time value. More...
 
Timeoperator*= (Time &left, Int64 right)
 Overload of binary *= operator to scale/assign a time value. More...
 
Time operator/ (Time left, float right)
 Overload of binary / operator to scale a time value. More...
 
Time operator/ (Time left, Int64 right)
 Overload of binary / operator to scale a time value. More...
 
Timeoperator/= (Time &left, float right)
 Overload of binary /= operator to scale/assign a time value. More...
 
Timeoperator/= (Time &left, Int64 right)
 Overload of binary /= operator to scale/assign a time value. More...
 
float operator/ (Time left, Time right)
 Overload of binary / operator to compute the ratio of two time values. More...
 
Time operator% (Time left, Time right)
 Overload of binary % operator to compute remainder of a time value. More...
 
Timeoperator%= (Time &left, Time right)
 Overload of binary %= operator to compute/assign remainder of a time value. More...
 
+

Detailed Description

+

Represents a time value.

+

sf::Time encapsulates a time value in a flexible way.

+

It allows to define a time value either as a number of seconds, milliseconds or microseconds. It also works the other way round: you can read a time value as either a number of seconds, milliseconds or microseconds.

+

By using such a flexible interface, the API doesn't impose any fixed type or resolution for time values, and let the user choose its own favorite representation.

+

Time values support the usual mathematical operations: you can add or subtract two times, multiply or divide a time by a number, compare two times, etc.

+

Since they represent a time span and not an absolute time value, times can also be negative.

+

Usage example:

sf::Time t1 = sf::seconds(0.1f);
Int32 milli = t1.asMilliseconds(); // 100
sf::Time t2 = sf::milliseconds(30);
Int64 micro = t2.asMicroseconds(); // 30000
sf::Time t3 = sf::microseconds(-800000);
float sec = t3.asSeconds(); // -0.8
void update(sf::Time elapsed)
{
position += speed * elapsed.asSeconds();
}
update(sf::milliseconds(100));
See also
sf::Clock
+ +

Definition at line 40 of file Time.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Time()

+ +
+
+ + + + + + + +
sf::Time::Time ()
+
+ +

Default constructor.

+

Sets the time value to zero.

+ +
+
+

Member Function Documentation

+ +

◆ asMicroseconds()

+ +
+
+ + + + + + + +
Int64 sf::Time::asMicroseconds () const
+
+ +

Return the time value as a number of microseconds.

+
Returns
Time in microseconds
+
See also
asSeconds, asMilliseconds
+ +
+
+ +

◆ asMilliseconds()

+ +
+
+ + + + + + + +
Int32 sf::Time::asMilliseconds () const
+
+ +

Return the time value as a number of milliseconds.

+
Returns
Time in milliseconds
+
See also
asSeconds, asMicroseconds
+ +
+
+ +

◆ asSeconds()

+ +
+
+ + + + + + + +
float sf::Time::asSeconds () const
+
+ +

Return the time value as a number of seconds.

+
Returns
Time in seconds
+
See also
asMilliseconds, asMicroseconds
+ +
+
+

Friends And Related Function Documentation

+ +

◆ microseconds()

+ +
+
+ + + + + +
+ + + + + + + + +
Time microseconds (Int64 amount)
+
+related
+
+ +

Construct a time value from a number of microseconds.

+
Parameters
+ + +
amountNumber of microseconds
+
+
+
Returns
Time value constructed from the amount of microseconds
+
See also
seconds, milliseconds
+ +
+
+ +

◆ milliseconds()

+ +
+
+ + + + + +
+ + + + + + + + +
Time milliseconds (Int32 amount)
+
+related
+
+ +

Construct a time value from a number of milliseconds.

+
Parameters
+ + +
amountNumber of milliseconds
+
+
+
Returns
Time value constructed from the amount of milliseconds
+
See also
seconds, microseconds
+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (Time left,
Time right 
)
+
+related
+
+ +

Overload of != operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if both time values are different
+ +
+
+ +

◆ operator%()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator% (Time left,
Time right 
)
+
+related
+
+ +

Overload of binary % operator to compute remainder of a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
left modulo right
+ +
+
+ +

◆ operator%=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator%= (Timeleft,
Time right 
)
+
+related
+
+ +

Overload of binary %= operator to compute/assign remainder of a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
left modulo right
+ +
+
+ +

◆ operator*() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator* (Time left,
float right 
)
+
+related
+
+ +

Overload of binary * operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator*() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator* (Time left,
Int64 right 
)
+
+related
+
+ +

Overload of binary * operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator*() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator* (float left,
Time right 
)
+
+related
+
+ +

Overload of binary * operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a number)
rightRight operand (a time)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator*() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator* (Int64 left,
Time right 
)
+
+related
+
+ +

Overload of binary * operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a number)
rightRight operand (a time)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator*= (Timeleft,
float right 
)
+
+related
+
+ +

Overload of binary *= operator to scale/assign a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator*= (Timeleft,
Int64 right 
)
+
+related
+
+ +

Overload of binary *= operator to scale/assign a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left multiplied by right
+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator+ (Time left,
Time right 
)
+
+related
+
+ +

Overload of binary + operator to add two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
Sum of the two times values
+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator+= (Timeleft,
Time right 
)
+
+related
+
+ +

Overload of binary += operator to add/assign two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
Sum of the two times values
+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Time operator- (Time right)
+
+related
+
+ +

Overload of unary - operator to negate a time value.

+
Parameters
+ + +
rightRight operand (a time)
+
+
+
Returns
Opposite of the time value
+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator- (Time left,
Time right 
)
+
+related
+
+ +

Overload of binary - operator to subtract two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
Difference of the two times values
+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator-= (Timeleft,
Time right 
)
+
+related
+
+ +

Overload of binary -= operator to subtract/assign two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
Difference of the two times values
+ +
+
+ +

◆ operator/() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator/ (Time left,
float right 
)
+
+related
+
+ +

Overload of binary / operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left divided by right
+ +
+
+ +

◆ operator/() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time operator/ (Time left,
Int64 right 
)
+
+related
+
+ +

Overload of binary / operator to scale a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left divided by right
+ +
+
+ +

◆ operator/() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float operator/ (Time left,
Time right 
)
+
+related
+
+ +

Overload of binary / operator to compute the ratio of two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
left divided by right
+ +
+
+ +

◆ operator/=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator/= (Timeleft,
float right 
)
+
+related
+
+ +

Overload of binary /= operator to scale/assign a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left divided by right
+ +
+
+ +

◆ operator/=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Time & operator/= (Timeleft,
Int64 right 
)
+
+related
+
+ +

Overload of binary /= operator to scale/assign a time value.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a number)
+
+
+
Returns
left divided by right
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator< (Time left,
Time right 
)
+
+related
+
+ +

Overload of < operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if left is lesser than right
+ +
+
+ +

◆ operator<=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator<= (Time left,
Time right 
)
+
+related
+
+ +

Overload of <= operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if left is lesser or equal than right
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (Time left,
Time right 
)
+
+related
+
+ +

Overload of == operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if both time values are equal
+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator> (Time left,
Time right 
)
+
+related
+
+ +

Overload of > operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if left is greater than right
+ +
+
+ +

◆ operator>=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator>= (Time left,
Time right 
)
+
+related
+
+ +

Overload of >= operator to compare two time values.

+
Parameters
+ + + +
leftLeft operand (a time)
rightRight operand (a time)
+
+
+
Returns
True if left is greater or equal than right
+ +
+
+ +

◆ seconds()

+ +
+
+ + + + + +
+ + + + + + + + +
Time seconds (float amount)
+
+related
+
+ +

Construct a time value from a number of seconds.

+
Parameters
+ + +
amountNumber of seconds
+
+
+
Returns
Time value constructed from the amount of seconds
+
See also
milliseconds, microseconds
+ +
+
+

Member Data Documentation

+ +

◆ Zero

+ +
+
+ + + + + +
+ + + + +
const Time sf::Time::Zero
+
+static
+
+ +

Predefined "zero" time value.

+ +

Definition at line 85 of file Time.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch-members.html new file mode 100644 index 0000000..c42353d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch-members.html @@ -0,0 +1,64 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Touch Member List
+
+
+ +

This is the complete list of members for sf::Touch, including all inherited members.

+ + + + +
getPosition(unsigned int finger)sf::Touchstatic
getPosition(unsigned int finger, const Window &relativeTo)sf::Touchstatic
isDown(unsigned int finger)sf::Touchstatic
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch.html new file mode 100644 index 0000000..a359018 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Touch.html @@ -0,0 +1,211 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Give access to the real-time state of the touches. + More...

+ +

#include <Touch.hpp>

+ + + + + + + + + + + +

+Static Public Member Functions

static bool isDown (unsigned int finger)
 Check if a touch event is currently down. More...
 
static Vector2i getPosition (unsigned int finger)
 Get the current position of a touch in desktop coordinates. More...
 
static Vector2i getPosition (unsigned int finger, const Window &relativeTo)
 Get the current position of a touch in window coordinates. More...
 
+

Detailed Description

+

Give access to the real-time state of the touches.

+

sf::Touch provides an interface to the state of the touches.

+

It only contains static functions, so it's not meant to be instantiated.

+

This class allows users to query the touches state at any time and directly, without having to deal with a window and its events. Compared to the TouchBegan, TouchMoved and TouchEnded events, sf::Touch can retrieve the state of the touches at any time (you don't need to store and update a boolean on your side in order to know if a touch is down), and you always get the real state of the touches, even if they happen when your window is out of focus and no event is triggered.

+

The getPosition function can be used to retrieve the current position of a touch. There are two versions: one that operates in global coordinates (relative to the desktop) and one that operates in window coordinates (relative to a specific window).

+

Touches are identified by an index (the "finger"), so that in multi-touch events, individual touches can be tracked correctly. As long as a finger touches the screen, it will keep the same index even if other fingers start or stop touching the screen in the meantime. As a consequence, active touch indices may not always be sequential (i.e. touch number 0 may be released while touch number 1 is still down).

+

Usage example:

{
// touch 0 is down
}
// get global position of touch 1
// get position of touch 1 relative to a window
sf::Vector2i relativePos = sf::Touch::getPosition(1, window);
See also
sf::Joystick, sf::Keyboard, sf::Mouse
+ +

Definition at line 43 of file Touch.hpp.

+

Member Function Documentation

+ +

◆ getPosition() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector2i sf::Touch::getPosition (unsigned int finger)
+
+static
+
+ +

Get the current position of a touch in desktop coordinates.

+

This function returns the current touch position in global (desktop) coordinates.

+
Parameters
+ + +
fingerFinger index
+
+
+
Returns
Current position of finger, or undefined if it's not down
+ +
+
+ +

◆ getPosition() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Vector2i sf::Touch::getPosition (unsigned int finger,
const WindowrelativeTo 
)
+
+static
+
+ +

Get the current position of a touch in window coordinates.

+

This function returns the current touch position relative to the given window.

+
Parameters
+ + + +
fingerFinger index
relativeToReference window
+
+
+
Returns
Current position of finger, or undefined if it's not down
+ +
+
+ +

◆ isDown()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool sf::Touch::isDown (unsigned int finger)
+
+static
+
+ +

Check if a touch event is currently down.

+
Parameters
+ + +
fingerFinger index
+
+
+
Returns
True if finger is currently touching the screen, false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform-members.html new file mode 100644 index 0000000..97d5714 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform-members.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Transform Member List
+
+
+ +

This is the complete list of members for sf::Transform, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
combine(const Transform &transform)sf::Transform
getInverse() constsf::Transform
getMatrix() constsf::Transform
Identitysf::Transformstatic
operator!=(const Transform &left, const Transform &right)sf::Transformrelated
operator*(const Transform &left, const Transform &right)sf::Transformrelated
operator*(const Transform &left, const Vector2f &right)sf::Transformrelated
operator*=(Transform &left, const Transform &right)sf::Transformrelated
operator==(const Transform &left, const Transform &right)sf::Transformrelated
rotate(float angle)sf::Transform
rotate(float angle, float centerX, float centerY)sf::Transform
rotate(float angle, const Vector2f &center)sf::Transform
scale(float scaleX, float scaleY)sf::Transform
scale(float scaleX, float scaleY, float centerX, float centerY)sf::Transform
scale(const Vector2f &factors)sf::Transform
scale(const Vector2f &factors, const Vector2f &center)sf::Transform
Transform()sf::Transform
Transform(float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)sf::Transform
transformPoint(float x, float y) constsf::Transform
transformPoint(const Vector2f &point) constsf::Transform
transformRect(const FloatRect &rectangle) constsf::Transform
translate(float x, float y)sf::Transform
translate(const Vector2f &offset)sf::Transform
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform.html new file mode 100644 index 0000000..543f64d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transform.html @@ -0,0 +1,1038 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Define a 3x3 transform matrix. + More...

+ +

#include <Transform.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Transform ()
 Default constructor. More...
 
 Transform (float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)
 Construct a transform from a 3x3 matrix. More...
 
const float * getMatrix () const
 Return the transform as a 4x4 matrix. More...
 
Transform getInverse () const
 Return the inverse of the transform. More...
 
Vector2f transformPoint (float x, float y) const
 Transform a 2D point. More...
 
Vector2f transformPoint (const Vector2f &point) const
 Transform a 2D point. More...
 
FloatRect transformRect (const FloatRect &rectangle) const
 Transform a rectangle. More...
 
Transformcombine (const Transform &transform)
 Combine the current transform with another one. More...
 
Transformtranslate (float x, float y)
 Combine the current transform with a translation. More...
 
Transformtranslate (const Vector2f &offset)
 Combine the current transform with a translation. More...
 
Transformrotate (float angle)
 Combine the current transform with a rotation. More...
 
Transformrotate (float angle, float centerX, float centerY)
 Combine the current transform with a rotation. More...
 
Transformrotate (float angle, const Vector2f &center)
 Combine the current transform with a rotation. More...
 
Transformscale (float scaleX, float scaleY)
 Combine the current transform with a scaling. More...
 
Transformscale (float scaleX, float scaleY, float centerX, float centerY)
 Combine the current transform with a scaling. More...
 
Transformscale (const Vector2f &factors)
 Combine the current transform with a scaling. More...
 
Transformscale (const Vector2f &factors, const Vector2f &center)
 Combine the current transform with a scaling. More...
 
+ + + + +

+Static Public Attributes

static const Transform Identity
 The identity transform (does nothing) More...
 
+ + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
Transform operator* (const Transform &left, const Transform &right)
 Overload of binary operator * to combine two transforms. More...
 
Transformoperator*= (Transform &left, const Transform &right)
 Overload of binary operator *= to combine two transforms. More...
 
Vector2f operator* (const Transform &left, const Vector2f &right)
 Overload of binary operator * to transform a point. More...
 
bool operator== (const Transform &left, const Transform &right)
 Overload of binary operator == to compare two transforms. More...
 
bool operator!= (const Transform &left, const Transform &right)
 Overload of binary operator != to compare two transforms. More...
 
+

Detailed Description

+

Define a 3x3 transform matrix.

+

A sf::Transform specifies how to translate, rotate, scale, shear, project, whatever things.

+

In mathematical terms, it defines how to transform a coordinate system into another.

+

For example, if you apply a rotation transform to a sprite, the result will be a rotated sprite. And anything that is transformed by this rotation transform will be rotated the same way, according to its initial position.

+

Transforms are typically used for drawing. But they can also be used for any computation that requires to transform points between the local and global coordinate systems of an entity (like collision detection).

+

Example:

// define a translation transform
sf::Transform translation;
translation.translate(20, 50);
// define a rotation transform
sf::Transform rotation;
rotation.rotate(45);
// combine them
sf::Transform transform = translation * rotation;
// use the result to transform stuff...
sf::Vector2f point = transform.transformPoint(10, 20);
sf::FloatRect rect = transform.transformRect(sf::FloatRect(0, 0, 10, 100));
See also
sf::Transformable, sf::RenderStates
+ +

Definition at line 42 of file Transform.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Transform() [1/2]

+ +
+
+ + + + + + + +
sf::Transform::Transform ()
+
+ +

Default constructor.

+

Creates an identity transform (a transform that does nothing).

+ +
+
+ +

◆ Transform() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::Transform::Transform (float a00,
float a01,
float a02,
float a10,
float a11,
float a12,
float a20,
float a21,
float a22 
)
+
+ +

Construct a transform from a 3x3 matrix.

+
Parameters
+ + + + + + + + + + +
a00Element (0, 0) of the matrix
a01Element (0, 1) of the matrix
a02Element (0, 2) of the matrix
a10Element (1, 0) of the matrix
a11Element (1, 1) of the matrix
a12Element (1, 2) of the matrix
a20Element (2, 0) of the matrix
a21Element (2, 1) of the matrix
a22Element (2, 2) of the matrix
+
+
+ +
+
+

Member Function Documentation

+ +

◆ combine()

+ +
+
+ + + + + + + + +
Transform& sf::Transform::combine (const Transformtransform)
+
+ +

Combine the current transform with another one.

+

The result is a transform that is equivalent to applying *this followed by transform. Mathematically, it is equivalent to a matrix multiplication.

+
Parameters
+ + +
transformTransform to combine with this transform
+
+
+
Returns
Reference to *this
+ +
+
+ +

◆ getInverse()

+ +
+
+ + + + + + + +
Transform sf::Transform::getInverse () const
+
+ +

Return the inverse of the transform.

+

If the inverse cannot be computed, an identity transform is returned.

+
Returns
A new transform which is the inverse of self
+ +
+
+ +

◆ getMatrix()

+ +
+
+ + + + + + + +
const float* sf::Transform::getMatrix () const
+
+ +

Return the transform as a 4x4 matrix.

+

This function returns a pointer to an array of 16 floats containing the transform elements as a 4x4 matrix, which is directly compatible with OpenGL functions.

+
sf::Transform transform = ...;
glLoadMatrixf(transform.getMatrix());
Returns
Pointer to a 4x4 matrix
+ +
+
+ +

◆ rotate() [1/3]

+ +
+
+ + + + + + + + +
Transform& sf::Transform::rotate (float angle)
+
+ +

Combine the current transform with a rotation.

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.rotate(90).translate(50, 20);
Parameters
+ + +
angleRotation angle, in degrees
+
+
+
Returns
Reference to *this
+
See also
translate, scale
+ +
+
+ +

◆ rotate() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::rotate (float angle,
float centerX,
float centerY 
)
+
+ +

Combine the current transform with a rotation.

+

The center of rotation is provided for convenience as a second argument, so that you can build rotations around arbitrary points more easily (and efficiently) than the usual translate(-center).rotate(angle).translate(center).

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.rotate(90, 8, 3).translate(50, 20);
Parameters
+ + + + +
angleRotation angle, in degrees
centerXX coordinate of the center of rotation
centerYY coordinate of the center of rotation
+
+
+
Returns
Reference to *this
+
See also
translate, scale
+ +
+
+ +

◆ rotate() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::rotate (float angle,
const Vector2fcenter 
)
+
+ +

Combine the current transform with a rotation.

+

The center of rotation is provided for convenience as a second argument, so that you can build rotations around arbitrary points more easily (and efficiently) than the usual translate(-center).rotate(angle).translate(center).

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.rotate(90, sf::Vector2f(8, 3)).translate(sf::Vector2f(50, 20));
Parameters
+ + + +
angleRotation angle, in degrees
centerCenter of rotation
+
+
+
Returns
Reference to *this
+
See also
translate, scale
+ +
+
+ +

◆ scale() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::scale (float scaleX,
float scaleY 
)
+
+ +

Combine the current transform with a scaling.

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.scale(2, 1).rotate(45);
Parameters
+ + + +
scaleXScaling factor on the X axis
scaleYScaling factor on the Y axis
+
+
+
Returns
Reference to *this
+
See also
translate, rotate
+ +
+
+ +

◆ scale() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::scale (float scaleX,
float scaleY,
float centerX,
float centerY 
)
+
+ +

Combine the current transform with a scaling.

+

The center of scaling is provided for convenience as a second argument, so that you can build scaling around arbitrary points more easily (and efficiently) than the usual translate(-center).scale(factors).translate(center).

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.scale(2, 1, 8, 3).rotate(45);
Parameters
+ + + + + +
scaleXScaling factor on X axis
scaleYScaling factor on Y axis
centerXX coordinate of the center of scaling
centerYY coordinate of the center of scaling
+
+
+
Returns
Reference to *this
+
See also
translate, rotate
+ +
+
+ +

◆ scale() [3/4]

+ +
+
+ + + + + + + + +
Transform& sf::Transform::scale (const Vector2ffactors)
+
+ +

Combine the current transform with a scaling.

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.scale(sf::Vector2f(2, 1)).rotate(45);
Parameters
+ + +
factorsScaling factors
+
+
+
Returns
Reference to *this
+
See also
translate, rotate
+ +
+
+ +

◆ scale() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::scale (const Vector2ffactors,
const Vector2fcenter 
)
+
+ +

Combine the current transform with a scaling.

+

The center of scaling is provided for convenience as a second argument, so that you can build scaling around arbitrary points more easily (and efficiently) than the usual translate(-center).scale(factors).translate(center).

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.scale(sf::Vector2f(2, 1), sf::Vector2f(8, 3)).rotate(45);
Parameters
+ + + +
factorsScaling factors
centerCenter of scaling
+
+
+
Returns
Reference to *this
+
See also
translate, rotate
+ +
+
+ +

◆ transformPoint() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vector2f sf::Transform::transformPoint (float x,
float y 
) const
+
+ +

Transform a 2D point.

+
Parameters
+ + + +
xX coordinate of the point to transform
yY coordinate of the point to transform
+
+
+
Returns
Transformed point
+ +
+
+ +

◆ transformPoint() [2/2]

+ +
+
+ + + + + + + + +
Vector2f sf::Transform::transformPoint (const Vector2fpoint) const
+
+ +

Transform a 2D point.

+
Parameters
+ + +
pointPoint to transform
+
+
+
Returns
Transformed point
+ +
+
+ +

◆ transformRect()

+ +
+
+ + + + + + + + +
FloatRect sf::Transform::transformRect (const FloatRectrectangle) const
+
+ +

Transform a rectangle.

+

Since SFML doesn't provide support for oriented rectangles, the result of this function is always an axis-aligned rectangle. Which means that if the transform contains a rotation, the bounding rectangle of the transformed rectangle is returned.

+
Parameters
+ + +
rectangleRectangle to transform
+
+
+
Returns
Transformed rectangle
+ +
+
+ +

◆ translate() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform& sf::Transform::translate (float x,
float y 
)
+
+ +

Combine the current transform with a translation.

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.translate(100, 200).rotate(45);
Parameters
+ + + +
xOffset to apply on X axis
yOffset to apply on Y axis
+
+
+
Returns
Reference to *this
+
See also
rotate, scale
+ +
+
+ +

◆ translate() [2/2]

+ +
+
+ + + + + + + + +
Transform& sf::Transform::translate (const Vector2foffset)
+
+ +

Combine the current transform with a translation.

+

This function returns a reference to *this, so that calls can be chained.

sf::Transform transform;
transform.translate(sf::Vector2f(100, 200)).rotate(45);
Parameters
+ + +
offsetTranslation offset to apply
+
+
+
Returns
Reference to *this
+
See also
rotate, scale
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Transformleft,
const Transformright 
)
+
+related
+
+ +

Overload of binary operator != to compare two transforms.

+

This call is equivalent to !(left == right).

+
Parameters
+ + + +
leftLeft operand (the first transform)
rightRight operand (the second transform)
+
+
+
Returns
true if the transforms are not equal, false otherwise
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Transform operator* (const Transformleft,
const Transformright 
)
+
+related
+
+ +

Overload of binary operator * to combine two transforms.

+

This call is equivalent to calling Transform(left).combine(right).

+
Parameters
+ + + +
leftLeft operand (the first transform)
rightRight operand (the second transform)
+
+
+
Returns
New combined transform
+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2f operator* (const Transformleft,
const Vector2fright 
)
+
+related
+
+ +

Overload of binary operator * to transform a point.

+

This call is equivalent to calling left.transformPoint(right).

+
Parameters
+ + + +
leftLeft operand (the transform)
rightRight operand (the point to transform)
+
+
+
Returns
New transformed point
+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Transform & operator*= (Transformleft,
const Transformright 
)
+
+related
+
+ +

Overload of binary operator *= to combine two transforms.

+

This call is equivalent to calling left.combine(right).

+
Parameters
+ + + +
leftLeft operand (the first transform)
rightRight operand (the second transform)
+
+
+
Returns
The combined transform
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Transformleft,
const Transformright 
)
+
+related
+
+ +

Overload of binary operator == to compare two transforms.

+

Performs an element-wise comparison of the elements of the left transform with the elements of the right transform.

+
Parameters
+ + + +
leftLeft operand (the first transform)
rightRight operand (the second transform)
+
+
+
Returns
true if the transforms are equal, false otherwise
+ +
+
+

Member Data Documentation

+ +

◆ Identity

+ +
+
+ + + + + +
+ + + + +
const Transform sf::Transform::Identity
+
+static
+
+ +

The identity transform (does nothing)

+ +

Definition at line 354 of file Transform.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable-members.html new file mode 100644 index 0000000..95b1988 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable-members.html @@ -0,0 +1,81 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Transformable Member List
+
+
+ +

This is the complete list of members for sf::Transformable, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
getInverseTransform() constsf::Transformable
getOrigin() constsf::Transformable
getPosition() constsf::Transformable
getRotation() constsf::Transformable
getScale() constsf::Transformable
getTransform() constsf::Transformable
move(float offsetX, float offsetY)sf::Transformable
move(const Vector2f &offset)sf::Transformable
rotate(float angle)sf::Transformable
scale(float factorX, float factorY)sf::Transformable
scale(const Vector2f &factor)sf::Transformable
setOrigin(float x, float y)sf::Transformable
setOrigin(const Vector2f &origin)sf::Transformable
setPosition(float x, float y)sf::Transformable
setPosition(const Vector2f &position)sf::Transformable
setRotation(float angle)sf::Transformable
setScale(float factorX, float factorY)sf::Transformable
setScale(const Vector2f &factors)sf::Transformable
Transformable()sf::Transformable
~Transformable()sf::Transformablevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.html new file mode 100644 index 0000000..8aa8492 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.html @@ -0,0 +1,723 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Transformable Class Reference
+
+
+ +

Decomposed transform defined by a position, a rotation and a scale. + More...

+ +

#include <Transformable.hpp>

+
+Inheritance diagram for sf::Transformable:
+
+
+ + +sf::Shape +sf::Sprite +sf::Text +sf::CircleShape +sf::ConvexShape +sf::RectangleShape + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Transformable ()
 Default constructor. More...
 
virtual ~Transformable ()
 Virtual destructor. More...
 
void setPosition (float x, float y)
 set the position of the object More...
 
void setPosition (const Vector2f &position)
 set the position of the object More...
 
void setRotation (float angle)
 set the orientation of the object More...
 
void setScale (float factorX, float factorY)
 set the scale factors of the object More...
 
void setScale (const Vector2f &factors)
 set the scale factors of the object More...
 
void setOrigin (float x, float y)
 set the local origin of the object More...
 
void setOrigin (const Vector2f &origin)
 set the local origin of the object More...
 
const Vector2fgetPosition () const
 get the position of the object More...
 
float getRotation () const
 get the orientation of the object More...
 
const Vector2fgetScale () const
 get the current scale of the object More...
 
const Vector2fgetOrigin () const
 get the local origin of the object More...
 
void move (float offsetX, float offsetY)
 Move the object by a given offset. More...
 
void move (const Vector2f &offset)
 Move the object by a given offset. More...
 
void rotate (float angle)
 Rotate the object. More...
 
void scale (float factorX, float factorY)
 Scale the object. More...
 
void scale (const Vector2f &factor)
 Scale the object. More...
 
const TransformgetTransform () const
 get the combined transform of the object More...
 
const TransformgetInverseTransform () const
 get the inverse of the combined transform of the object More...
 
+

Detailed Description

+

Decomposed transform defined by a position, a rotation and a scale.

+

This class is provided for convenience, on top of sf::Transform.

+

sf::Transform, as a low-level class, offers a great level of flexibility but it is not always convenient to manage. Indeed, one can easily combine any kind of operation, such as a translation followed by a rotation followed by a scaling, but once the result transform is built, there's no way to go backward and, let's say, change only the rotation without modifying the translation and scaling. The entire transform must be recomputed, which means that you need to retrieve the initial translation and scale factors as well, and combine them the same way you did before updating the rotation. This is a tedious operation, and it requires to store all the individual components of the final transform.

+

That's exactly what sf::Transformable was written for: it hides these variables and the composed transform behind an easy to use interface. You can set or get any of the individual components without worrying about the others. It also provides the composed transform (as a sf::Transform), and keeps it up-to-date.

+

In addition to the position, rotation and scale, sf::Transformable provides an "origin" component, which represents the local origin of the three other components. Let's take an example with a 10x10 pixels sprite. By default, the sprite is positioned/rotated/scaled relatively to its top-left corner, because it is the local point (0, 0). But if we change the origin to be (5, 5), the sprite will be positioned/rotated/scaled around its center instead. And if we set the origin to (10, 10), it will be transformed around its bottom-right corner.

+

To keep the sf::Transformable class simple, there's only one origin for all the components. You cannot position the sprite relatively to its top-left corner while rotating it around its center, for example. To do such things, use sf::Transform directly.

+

sf::Transformable can be used as a base class. It is often combined with sf::Drawable – that's what SFML's sprites, texts and shapes do.

class MyEntity : public sf::Transformable, public sf::Drawable
{
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
states.transform *= getTransform();
target.draw(..., states);
}
};
MyEntity entity;
entity.setPosition(10, 20);
entity.setRotation(45);
window.draw(entity);

It can also be used as a member, if you don't want to use its API directly (because you don't need all its functions, or you have different naming conventions for example).

class MyEntity
{
public:
void SetPosition(const MyVector& v)
{
myTransform.setPosition(v.x(), v.y());
}
void Draw(sf::RenderTarget& target) const
{
target.draw(..., myTransform.getTransform());
}
private:
sf::Transformable myTransform;
};

A note on coordinates and undistorted rendering:
+By default, SFML (or more exactly, OpenGL) may interpolate drawable objects such as sprites or texts when rendering. While this allows transitions like slow movements or rotations to appear smoothly, it can lead to unwanted results in some cases, for example blurred or distorted objects. In order to render a sf::Drawable object pixel-perfectly, make sure the involved coordinates allow a 1:1 mapping of pixels in the window to texels (pixels in the texture). More specifically, this means:

    +
  • The object's position, origin and scale have no fractional part
  • +
  • The object's and the view's rotation are a multiple of 90 degrees
  • +
  • The view's center and size have no fractional part
  • +
+
See also
sf::Transform
+ +

Definition at line 41 of file Transformable.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Transformable()

+ +
+
+ + + + + + + +
sf::Transformable::Transformable ()
+
+ +

Default constructor.

+ +
+
+ +

◆ ~Transformable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Transformable::~Transformable ()
+
+virtual
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getInverseTransform()

+ +
+
+ + + + + + + +
const Transform& sf::Transformable::getInverseTransform () const
+
+ +

get the inverse of the combined transform of the object

+
Returns
Inverse of the combined transformations applied to the object
+
See also
getTransform
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + + + +
const Vector2f& sf::Transformable::getOrigin () const
+
+ +

get the local origin of the object

+
Returns
Current origin
+
See also
setOrigin
+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + + + +
const Vector2f& sf::Transformable::getPosition () const
+
+ +

get the position of the object

+
Returns
Current position
+
See also
setPosition
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + + + +
float sf::Transformable::getRotation () const
+
+ +

get the orientation of the object

+

The rotation is always in the range [0, 360].

+
Returns
Current rotation, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getScale()

+ +
+
+ + + + + + + +
const Vector2f& sf::Transformable::getScale () const
+
+ +

get the current scale of the object

+
Returns
Current scale factors
+
See also
setScale
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + + + +
const Transform& sf::Transformable::getTransform () const
+
+ +

get the combined transform of the object

+
Returns
Transform combining the position/rotation/scale/origin of the object
+
See also
getInverseTransform
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::move (float offsetX,
float offsetY 
)
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f pos = object.getPosition();
object.setPosition(pos.x + offsetX, pos.y + offsetY);
Parameters
+ + + +
offsetXX offset
offsetYY offset
+
+
+
See also
setPosition
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + + + + +
void sf::Transformable::move (const Vector2foffset)
+
+ +

Move the object by a given offset.

+

This function adds to the current position of the object, unlike setPosition which overwrites it. Thus, it is equivalent to the following code:

object.setPosition(object.getPosition() + offset);
Parameters
+ + +
offsetOffset
+
+
+
See also
setPosition
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + + + + +
void sf::Transformable::rotate (float angle)
+
+ +

Rotate the object.

+

This function adds to the current rotation of the object, unlike setRotation which overwrites it. Thus, it is equivalent to the following code:

object.setRotation(object.getRotation() + angle);
Parameters
+ + +
angleAngle of rotation, in degrees
+
+
+ +
+
+ +

◆ scale() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::scale (float factorX,
float factorY 
)
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factorX, scale.y * factorY);
Parameters
+ + + +
factorXHorizontal scale factor
factorYVertical scale factor
+
+
+
See also
setScale
+ +
+
+ +

◆ scale() [2/2]

+ +
+
+ + + + + + + + +
void sf::Transformable::scale (const Vector2ffactor)
+
+ +

Scale the object.

+

This function multiplies the current scale of the object, unlike setScale which overwrites it. Thus, it is equivalent to the following code:

sf::Vector2f scale = object.getScale();
object.setScale(scale.x * factor.x, scale.y * factor.y);
Parameters
+ + +
factorScale factors
+
+
+
See also
setScale
+ +
+
+ +

◆ setOrigin() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setOrigin (float x,
float y 
)
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new origin
yY coordinate of the new origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setOrigin() [2/2]

+ +
+
+ + + + + + + + +
void sf::Transformable::setOrigin (const Vector2forigin)
+
+ +

set the local origin of the object

+

The origin of an object defines the center point for all transformations (position, scale, rotation). The coordinates of this point must be relative to the top-left corner of the object, and ignore all transformations (position, scale, rotation). The default origin of a transformable object is (0, 0).

+
Parameters
+ + +
originNew origin
+
+
+
See also
getOrigin
+ +
+
+ +

◆ setPosition() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setPosition (float x,
float y 
)
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + + +
xX coordinate of the new position
yY coordinate of the new position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setPosition() [2/2]

+ +
+
+ + + + + + + + +
void sf::Transformable::setPosition (const Vector2fposition)
+
+ +

set the position of the object

+

This function completely overwrites the previous position. See the move function to apply an offset based on the previous position instead. The default position of a transformable object is (0, 0).

+
Parameters
+ + +
positionNew position
+
+
+
See also
move, getPosition
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + + + + +
void sf::Transformable::setRotation (float angle)
+
+ +

set the orientation of the object

+

This function completely overwrites the previous rotation. See the rotate function to add an angle based on the previous rotation instead. The default rotation of a transformable object is 0.

+
Parameters
+ + +
angleNew rotation, in degrees
+
+
+
See also
rotate, getRotation
+ +
+
+ +

◆ setScale() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Transformable::setScale (float factorX,
float factorY 
)
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + + +
factorXNew horizontal scale factor
factorYNew vertical scale factor
+
+
+
See also
scale, getScale
+ +
+
+ +

◆ setScale() [2/2]

+ +
+
+ + + + + + + + +
void sf::Transformable::setScale (const Vector2ffactors)
+
+ +

set the scale factors of the object

+

This function completely overwrites the previous scale. See the scale function to add a factor based on the previous scale instead. The default scale of a transformable object is (1, 1).

+
Parameters
+ + +
factorsNew scale factors
+
+
+
See also
scale, getScale
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Transformable.png new file mode 100644 index 0000000000000000000000000000000000000000..6865caa03bc82626135ca4887bd2613ebce5a432 GIT binary patch literal 1671 zcmeAS@N?(olHy`uVBq!ia0y~yVEo6xz|g_L%)r24xVN&Nfq_9Hz$e7@|Ns9C3=A*c zd@b!iG=YJE0gMkEIKbL@N1lO!fukhIFPPy!1YA88V#L6}Cg$nl7*fIbc5d{v#a03= z%}->$?SGOvdpgUb)bBeAwBHNl_LK&$V)EM0aP_i@uP|c+BZumV=C900lK(PXO+vy! zA1?4*pY_kafw!!F&bwHtl)nrg*Vrxz_j}2zk@S~gyV~au6|*;g-)o;MH~;U~`Inz> zt$bqe&v2Q%xk+DTfzhd7jCn^M#mfKjm3qEBX~!*xsxx2g?fO1FINHpXz~B_Q{nuOV z?(}B1X+Ha(Hm{X`(6(mQ|7ri`f1A7S18+cr%p|^d-#hpGj<$EO;pYE*d-sL;d%j&h z$`-NVmi?x_gue{si}rk%f2sfGuj=1>zZu{8?EKm9?|AP|y9DG z`@b0T944^8X74!ui*eOa9C&HwEHx$u<_}v-7}yrLt&v|4w(HzKMy;d27_*)p-}jgK zO6OPRke;W^A>CgIVwQ`gvEjB1r9%5l)EPJq9o=5nU@(V4fkXWMFUCU!ObrS#HLuw@ z4s$Xz6?|MPufT&}(Y*z^x4(t%+Ln7;ys*iH(Sc*FO6|NYKPG*t%$v%fz#@MCm+H&S z5&OSdGdgJK?fdF|NzvDMzU}$t?d)*Sv4*B@}uWp$+U8#n(lwcndjL&ee7wxhb>v(W54Gmx$y3Kk%j-aOQ?Fz z-t&z?PyL1e?@sewlT<{13jO_isjck)9|`ffe<##VUSg{!_Fuut=;zDWm!f}HOMITM z)1V^z+4k3T)4AXN6^fs^>v75M`q%evCs_W3|6TgbUe&_(=XKNnPd82S`p%o5#kBm^ zeeJXL`iIv1&-q=u^QZV1{^Eauf4i5N*?s)^d)_t|&s)!{K7LoyxmV|D^+fgWYRzY| z5A@Cd8~?K3{9Rw^N&kW8-~Ks$miPN#@LB$}^_N{cf7(yKYks$Q@As$A_V*b0%(CHq zUiE+W+4>r;UptrG&F50_bg%LMJbelCIs32qTjD%#7Ul+de*Wmqsq)fw&HZ1DOdIQ7 zPhWDrX!WD${VKIWueaB!GjJR|y1mZxm(I0%;lH`Jw=r5c&SH4*`UL}zLvMt=!`hO$ zf0;wNzA|4q)nEIYeTDFA_7xJR*;k0YCWtu}z23F1is6+?-Ag|PftK$4zYK{Mj1B^N z`@S-_JY->T-0|ZYzd)NX1Ixol(e@4!_!aGOyuI!1>XO{s+w>o?WHL1fM0x(Q$^5AL z^79=nMh6aXDoNj1_qv>^At0va_4FmGzLV$J?LQ;_YxT<;ml!;6JzDVN^-0y24cVGz z!akR6-)-M_^V-|>(;uJvb@}R)@VOFF|NhMS_xPl0=E0*P(VW*#Pnsfg{MUK5oh$zx zUp(99`%TZ!G1tEoJn#Q`zW?u~_SG-VJzsA8{cft-`TSXD?Wg=s>T+tjbmy~H`^jgH zpVzwIynd?C|L@zopr0QtCNt^fc4 literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket-members.html new file mode 100644 index 0000000..81a967b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket-members.html @@ -0,0 +1,88 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::UdpSocket Member List
+
+
+ +

This is the complete list of members for sf::UdpSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AnyPort enum valuesf::Socket
bind(unsigned short port, const IpAddress &address=IpAddress::Any)sf::UdpSocket
close()sf::Socketprotected
create()sf::Socketprotected
create(SocketHandle handle)sf::Socketprotected
Disconnected enum valuesf::Socket
Done enum valuesf::Socket
Error enum valuesf::Socket
getHandle() constsf::Socketprotected
getLocalPort() constsf::UdpSocket
isBlocking() constsf::Socket
MaxDatagramSize enum valuesf::UdpSocket
NotReady enum valuesf::Socket
Partial enum valuesf::Socket
receive(void *data, std::size_t size, std::size_t &received, IpAddress &remoteAddress, unsigned short &remotePort)sf::UdpSocket
receive(Packet &packet, IpAddress &remoteAddress, unsigned short &remotePort)sf::UdpSocket
send(const void *data, std::size_t size, const IpAddress &remoteAddress, unsigned short remotePort)sf::UdpSocket
send(Packet &packet, const IpAddress &remoteAddress, unsigned short remotePort)sf::UdpSocket
setBlocking(bool blocking)sf::Socket
Socket(Type type)sf::Socketprotected
Status enum namesf::Socket
Tcp enum valuesf::Socketprotected
Type enum namesf::Socketprotected
Udp enum valuesf::Socketprotected
UdpSocket()sf::UdpSocket
unbind()sf::UdpSocket
~Socket()sf::Socketvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.html new file mode 100644 index 0000000..aa24847 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.html @@ -0,0 +1,793 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Specialized socket using the UDP protocol. + More...

+ +

#include <UdpSocket.hpp>

+
+Inheritance diagram for sf::UdpSocket:
+
+
+ + +sf::Socket +sf::NonCopyable + +
+ + + + + + + + + + +

+Public Types

enum  { MaxDatagramSize = 65507 + }
 
enum  Status {
+  Done, +NotReady, +Partial, +Disconnected, +
+  Error +
+ }
 Status codes that may be returned by socket functions. More...
 
enum  { AnyPort = 0 + }
 Some special values used by sockets. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UdpSocket ()
 Default constructor. More...
 
unsigned short getLocalPort () const
 Get the port to which the socket is bound locally. More...
 
Status bind (unsigned short port, const IpAddress &address=IpAddress::Any)
 Bind the socket to a specific port. More...
 
void unbind ()
 Unbind the socket from the local port to which it is bound. More...
 
Status send (const void *data, std::size_t size, const IpAddress &remoteAddress, unsigned short remotePort)
 Send raw data to a remote peer. More...
 
Status receive (void *data, std::size_t size, std::size_t &received, IpAddress &remoteAddress, unsigned short &remotePort)
 Receive raw data from a remote peer. More...
 
Status send (Packet &packet, const IpAddress &remoteAddress, unsigned short remotePort)
 Send a formatted packet of data to a remote peer. More...
 
Status receive (Packet &packet, IpAddress &remoteAddress, unsigned short &remotePort)
 Receive a formatted packet of data from a remote peer. More...
 
void setBlocking (bool blocking)
 Set the blocking state of the socket. More...
 
bool isBlocking () const
 Tell whether the socket is in blocking or non-blocking mode. More...
 
+ + + + +

+Protected Types

enum  Type { Tcp, +Udp + }
 Types of protocols that the socket can use. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

SocketHandle getHandle () const
 Return the internal handle of the socket. More...
 
void create ()
 Create the internal representation of the socket. More...
 
void create (SocketHandle handle)
 Create the internal representation of the socket from a socket handle. More...
 
void close ()
 Close the socket gracefully. More...
 
+

Detailed Description

+

Specialized socket using the UDP protocol.

+

A UDP socket is a connectionless socket.

+

Instead of connecting once to a remote host, like TCP sockets, it can send to and receive from any host at any time.

+

It is a datagram protocol: bounded blocks of data (datagrams) are transfered over the network rather than a continuous stream of data (TCP). Therefore, one call to send will always match one call to receive (if the datagram is not lost), with the same data that was sent.

+

The UDP protocol is lightweight but unreliable. Unreliable means that datagrams may be duplicated, be lost or arrive reordered. However, if a datagram arrives, its data is guaranteed to be valid.

+

UDP is generally used for real-time communication (audio or video streaming, real-time games, etc.) where speed is crucial and lost data doesn't matter much.

+

Sending and receiving data can use either the low-level or the high-level functions. The low-level functions process a raw sequence of bytes, whereas the high-level interface uses packets (see sf::Packet), which are easier to use and provide more safety regarding the data that is exchanged. You can look at the sf::Packet class to get more details about how they work.

+

It is important to note that UdpSocket is unable to send datagrams bigger than MaxDatagramSize. In this case, it returns an error and doesn't send anything. This applies to both raw data and packets. Indeed, even packets are unable to split and recompose data, due to the unreliability of the protocol (dropped, mixed or duplicated datagrams may lead to a big mess when trying to recompose a packet).

+

If the socket is bound to a port, it is automatically unbound from it when the socket is destroyed. However, you can unbind the socket explicitly with the Unbind function if necessary, to stop receiving messages or make the port available for other sockets.

+

Usage example:

// ----- The client -----
// Create a socket and bind it to the port 55001
socket.bind(55001);
// Send a message to 192.168.1.50 on port 55002
std::string message = "Hi, I am " + sf::IpAddress::getLocalAddress().toString();
socket.send(message.c_str(), message.size() + 1, "192.168.1.50", 55002);
// Receive an answer (most likely from 192.168.1.50, but could be anyone else)
char buffer[1024];
std::size_t received = 0;
unsigned short port;
socket.receive(buffer, sizeof(buffer), received, sender, port);
std::cout << sender.ToString() << " said: " << buffer << std::endl;
// ----- The server -----
// Create a socket and bind it to the port 55002
socket.bind(55002);
// Receive a message from anyone
char buffer[1024];
std::size_t received = 0;
unsigned short port;
socket.receive(buffer, sizeof(buffer), received, sender, port);
std::cout << sender.ToString() << " said: " << buffer << std::endl;
// Send an answer
std::string message = "Welcome " + sender.toString();
socket.send(message.c_str(), message.size() + 1, sender, port);
See also
sf::Socket, sf::TcpSocket, sf::Packet
+ +

Definition at line 45 of file UdpSocket.hpp.

+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + + +
+ + + + +
anonymous enum
+
+inherited
+
+ +

Some special values used by sockets.

+ + +
Enumerator
AnyPort 

Special value that tells the system to pick any available port.

+
+ +

Definition at line 66 of file Socket.hpp.

+ +
+
+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ + +
Enumerator
MaxDatagramSize 

The maximum number of bytes that can be sent in a single UDP datagram.

+
+ +

Definition at line 52 of file UdpSocket.hpp.

+ +
+
+ +

◆ Status

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Status
+
+inherited
+
+ +

Status codes that may be returned by socket functions.

+ + + + + + +
Enumerator
Done 

The socket has sent / received the data.

+
NotReady 

The socket is not ready to send / receive data yet.

+
Partial 

The socket sent a part of the data.

+
Disconnected 

The TCP socket has been disconnected.

+
Error 

An unexpected error happened.

+
+ +

Definition at line 53 of file Socket.hpp.

+ +
+
+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum sf::Socket::Type
+
+protectedinherited
+
+ +

Types of protocols that the socket can use.

+ + + +
Enumerator
Tcp 

TCP protocol.

+
Udp 

UDP protocol.

+
+ +

Definition at line 114 of file Socket.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ UdpSocket()

+ +
+
+ + + + + + + +
sf::UdpSocket::UdpSocket ()
+
+ +

Default constructor.

+ +
+
+

Member Function Documentation

+ +

◆ bind()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Status sf::UdpSocket::bind (unsigned short port,
const IpAddressaddress = IpAddress::Any 
)
+
+ +

Bind the socket to a specific port.

+

Binding the socket to a port is necessary for being able to receive data on that port. You can use the special value Socket::AnyPort to tell the system to automatically pick an available port, and then call getLocalPort to retrieve the chosen port.

+

Since the socket can only be bound to a single port at any given moment, if it is already bound when this function is called, it will be unbound from the previous port before being bound to the new one.

+
Parameters
+ + + +
portPort to bind the socket to
addressAddress of the interface to bind to
+
+
+
Returns
Status code
+
See also
unbind, getLocalPort
+ +
+
+ +

◆ close()

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::close ()
+
+protectedinherited
+
+ +

Close the socket gracefully.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void sf::Socket::create ()
+
+protectedinherited
+
+ +

Create the internal representation of the socket.

+

This function can only be accessed by derived classes.

+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::create (SocketHandle handle)
+
+protectedinherited
+
+ +

Create the internal representation of the socket from a socket handle.

+

This function can only be accessed by derived classes.

+
Parameters
+ + +
handleOS-specific handle of the socket to wrap
+
+
+ +
+
+ +

◆ getHandle()

+ +
+
+ + + + + +
+ + + + + + + +
SocketHandle sf::Socket::getHandle () const
+
+protectedinherited
+
+ +

Return the internal handle of the socket.

+

The returned handle may be invalid if the socket was not created yet (or already destroyed). This function can only be accessed by derived classes.

+
Returns
The internal (OS-specific) handle of the socket
+ +
+
+ +

◆ getLocalPort()

+ +
+
+ + + + + + + +
unsigned short sf::UdpSocket::getLocalPort () const
+
+ +

Get the port to which the socket is bound locally.

+

If the socket is not bound to a port, this function returns 0.

+
Returns
Port to which the socket is bound
+
See also
bind
+ +
+
+ +

◆ isBlocking()

+ +
+
+ + + + + +
+ + + + + + + +
bool sf::Socket::isBlocking () const
+
+inherited
+
+ +

Tell whether the socket is in blocking or non-blocking mode.

+
Returns
True if the socket is blocking, false otherwise
+
See also
setBlocking
+ +
+
+ +

◆ receive() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::UdpSocket::receive (void * data,
std::size_t size,
std::size_t & received,
IpAddressremoteAddress,
unsigned short & remotePort 
)
+
+ +

Receive raw data from a remote peer.

+

In blocking mode, this function will wait until some bytes are actually received. Be careful to use a buffer which is large enough for the data that you intend to receive, if it is too small then an error will be returned and all the data will be lost.

+
Parameters
+ + + + + + +
dataPointer to the array to fill with the received bytes
sizeMaximum number of bytes that can be received
receivedThis variable is filled with the actual number of bytes received
remoteAddressAddress of the peer that sent the data
remotePortPort of the peer that sent the data
+
+
+
Returns
Status code
+
See also
send
+ +
+
+ +

◆ receive() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::UdpSocket::receive (Packetpacket,
IpAddressremoteAddress,
unsigned short & remotePort 
)
+
+ +

Receive a formatted packet of data from a remote peer.

+

In blocking mode, this function will wait until the whole packet has been received.

+
Parameters
+ + + + +
packetPacket to fill with the received data
remoteAddressAddress of the peer that sent the data
remotePortPort of the peer that sent the data
+
+
+
Returns
Status code
+
See also
send
+ +
+
+ +

◆ send() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::UdpSocket::send (const void * data,
std::size_t size,
const IpAddressremoteAddress,
unsigned short remotePort 
)
+
+ +

Send raw data to a remote peer.

+

Make sure that size is not greater than UdpSocket::MaxDatagramSize, otherwise this function will fail and no data will be sent.

+
Parameters
+ + + + + +
dataPointer to the sequence of bytes to send
sizeNumber of bytes to send
remoteAddressAddress of the receiver
remotePortPort of the receiver to send the data to
+
+
+
Returns
Status code
+
See also
receive
+ +
+
+ +

◆ send() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Status sf::UdpSocket::send (Packetpacket,
const IpAddressremoteAddress,
unsigned short remotePort 
)
+
+ +

Send a formatted packet of data to a remote peer.

+

Make sure that the packet size is not greater than UdpSocket::MaxDatagramSize, otherwise this function will fail and no data will be sent.

+
Parameters
+ + + + +
packetPacket to send
remoteAddressAddress of the receiver
remotePortPort of the receiver to send the data to
+
+
+
Returns
Status code
+
See also
receive
+ +
+
+ +

◆ setBlocking()

+ +
+
+ + + + + +
+ + + + + + + + +
void sf::Socket::setBlocking (bool blocking)
+
+inherited
+
+ +

Set the blocking state of the socket.

+

In blocking mode, calls will not return until they have completed their task. For example, a call to Receive in blocking mode won't return until some data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

+
Parameters
+ + +
blockingTrue to set the socket as blocking, false for non-blocking
+
+
+
See also
isBlocking
+ +
+
+ +

◆ unbind()

+ +
+
+ + + + + + + +
void sf::UdpSocket::unbind ()
+
+ +

Unbind the socket from the local port to which it is bound.

+

The port that the socket was previously bound to is immediately made available to the operating system after this function is called. This means that a subsequent call to bind() will be able to re-bind the port if no other process has done so in the mean time. If the socket is not bound to a port, this function has no effect.

+
See also
bind
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1UdpSocket.png new file mode 100644 index 0000000000000000000000000000000000000000..1d089ed5a7de2e8401055c36491c83b826ee8fed GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0y~yV8~=(VCdjrW?*2r>|(0Vz`!68;1lBd|Nnmm28I`J zzLxeMn!v!o0LBLn9ANFdBhSFVz)=$97tHV<0H+2kG)V@q+*#dNhLGnf1ij`ox%M{uSBQy ztJq#NyRUb9;;SdK)}5~unijI2`;zk3n|U7GlY9#vnm&T?n-`bpQAeeN0^d?o*yWA+Q*Nw(Mc>Z|;& zCD+z(`hH9K=EQmPf*&tDw52XfYRl%x$o)N+_N(8UyoAy8?vy3LwOu8gzeHY2nf$*# zVM*d&4b5W`wk#jEvto)(rJ+?J|>>Fvm{V_3lgL_Fw5u?(bn*;j`&t;-%#EX@^yx|6<=*v$S#L+IyG&n7zn) z=kfa0uQ;`()6K8GyYf W9o8n8MKdrkFnGH9xvX + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Utf< N > Class Template Reference
+
+
+ +

Utility class providing generic functions for UTF conversions. + More...

+ +

#include <Utf.hpp>

+

Detailed Description

+

template<unsigned int N>
+class sf::Utf< N >

+ +

Utility class providing generic functions for UTF conversions.

+

sf::Utf is a low-level, generic interface for counting, iterating, encoding and decoding Unicode characters and strings. It is able to handle ANSI, wide, latin-1, UTF-8, UTF-16 and UTF-32 encodings.

+

sf::Utf<X> functions are all static, these classes are not meant to be instantiated. All the functions are template, so that you can use any character / string type for a given encoding.

+

It has 3 specializations:

+ +

Definition at line 41 of file Utf.hpp.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4-members.html new file mode 100644 index 0000000..fcbd952 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Utf< 16 > Member List
+
+
+ +

This is the complete list of members for sf::Utf< 16 >, including all inherited members.

+ + + + + + + + + + + + + + +
count(In begin, In end)sf::Utf< 16 >static
decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 16 >static
encode(Uint32 input, Out output, Uint16 replacement=0)sf::Utf< 16 >static
fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 16 >static
fromLatin1(In begin, In end, Out output)sf::Utf< 16 >static
fromWide(In begin, In end, Out output)sf::Utf< 16 >static
next(In begin, In end)sf::Utf< 16 >static
toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 16 >static
toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 16 >static
toUtf16(In begin, In end, Out output)sf::Utf< 16 >static
toUtf32(In begin, In end, Out output)sf::Utf< 16 >static
toUtf8(In begin, In end, Out output)sf::Utf< 16 >static
toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 16 >static
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4.html new file mode 100644 index 0000000..07bffa8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0116_01_4.html @@ -0,0 +1,883 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Utf< 16 > Class Template Reference
+
+
+ +

Specialization of the Utf template for UTF-16. + More...

+ +

#include <Utf.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename In >
static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
 Decode a single UTF-16 character. More...
 
template<typename Out >
static Out encode (Uint32 input, Out output, Uint16 replacement=0)
 Encode a single UTF-16 character. More...
 
template<typename In >
static In next (In begin, In end)
 Advance to the next UTF-16 character. More...
 
template<typename In >
static std::size_t count (In begin, In end)
 Count the number of characters of a UTF-16 sequence. More...
 
template<typename In , typename Out >
static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
 Convert an ANSI characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out fromWide (In begin, In end, Out output)
 Convert a wide characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out fromLatin1 (In begin, In end, Out output)
 Convert a latin-1 (ISO-5589-1) characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
 Convert an UTF-16 characters range to ANSI characters. More...
 
template<typename In , typename Out >
static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
 Convert an UTF-16 characters range to wide characters. More...
 
template<typename In , typename Out >
static Out toLatin1 (In begin, In end, Out output, char replacement=0)
 Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters. More...
 
template<typename In , typename Out >
static Out toUtf8 (In begin, In end, Out output)
 Convert a UTF-16 characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out toUtf16 (In begin, In end, Out output)
 Convert a UTF-16 characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out toUtf32 (In begin, In end, Out output)
 Convert a UTF-16 characters range to UTF-32. More...
 
+

Detailed Description

+

template<>
+class sf::Utf< 16 >

+ +

Specialization of the Utf template for UTF-16.

+ +

Definition at line 255 of file Utf.hpp.

+

Member Function Documentation

+ +

◆ count()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::size_t sf::Utf< 16 >::count (In begin,
In end 
)
+
+static
+
+ +

Count the number of characters of a UTF-16 sequence.

+

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element, thus the total size can be different from (begin - end).

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ decode()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static In sf::Utf< 16 >::decode (In begin,
In end,
Uint32 & output,
Uint32 replacement = 0 
)
+
+static
+
+ +

Decode a single UTF-16 character.

+

Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputCodepoint of the decoded UTF-16 character
replacementReplacement character to use in case the UTF-8 sequence is invalid
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ encode()

+ +
+
+
+template<typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::encode (Uint32 input,
Out output,
Uint16 replacement = 0 
)
+
+static
+
+ +

Encode a single UTF-16 character.

+

Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-16.

+
Parameters
+ + + + +
inputCodepoint to encode as UTF-16
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to UTF-16 (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::fromAnsi (In begin,
In end,
Out output,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an ANSI characters range to UTF-16.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::fromLatin1 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a latin-1 (ISO-5589-1) characters range to UTF-16.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::fromWide (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a wide characters range to UTF-16.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ next()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static In sf::Utf< 16 >::next (In begin,
In end 
)
+
+static
+
+ +

Advance to the next UTF-16 character.

+

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element.

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ toAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toAnsi (In begin,
In end,
Out output,
char replacement = 0,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an UTF-16 characters range to ANSI characters.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toLatin1 (In begin,
In end,
Out output,
char replacement = 0 
)
+
+static
+
+ +

Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf16()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toUtf16 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-16 characters range to UTF-16.

+

This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf32()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toUtf32 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-16 characters range to UTF-32.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf8()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toUtf8 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-16 characters range to UTF-8.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 16 >::toWide (In begin,
In end,
Out output,
wchar_t replacement = 0 
)
+
+static
+
+ +

Convert an UTF-16 characters range to wide characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4-members.html new file mode 100644 index 0000000..fd8e1b8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4-members.html @@ -0,0 +1,78 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Utf< 32 > Member List
+
+
+ +

This is the complete list of members for sf::Utf< 32 >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
count(In begin, In end)sf::Utf< 32 >static
decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 32 >static
decodeAnsi(In input, const std::locale &locale=std::locale())sf::Utf< 32 >static
decodeWide(In input)sf::Utf< 32 >static
encode(Uint32 input, Out output, Uint32 replacement=0)sf::Utf< 32 >static
encodeAnsi(Uint32 codepoint, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 32 >static
encodeWide(Uint32 codepoint, Out output, wchar_t replacement=0)sf::Utf< 32 >static
fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 32 >static
fromLatin1(In begin, In end, Out output)sf::Utf< 32 >static
fromWide(In begin, In end, Out output)sf::Utf< 32 >static
next(In begin, In end)sf::Utf< 32 >static
toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 32 >static
toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 32 >static
toUtf16(In begin, In end, Out output)sf::Utf< 32 >static
toUtf32(In begin, In end, Out output)sf::Utf< 32 >static
toUtf8(In begin, In end, Out output)sf::Utf< 32 >static
toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 32 >static
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4.html new file mode 100644 index 0000000..22a9df1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_0132_01_4.html @@ -0,0 +1,1105 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Utf< 32 > Class Template Reference
+
+
+ +

Specialization of the Utf template for UTF-32. + More...

+ +

#include <Utf.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename In >
static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
 Decode a single UTF-32 character. More...
 
template<typename Out >
static Out encode (Uint32 input, Out output, Uint32 replacement=0)
 Encode a single UTF-32 character. More...
 
template<typename In >
static In next (In begin, In end)
 Advance to the next UTF-32 character. More...
 
template<typename In >
static std::size_t count (In begin, In end)
 Count the number of characters of a UTF-32 sequence. More...
 
template<typename In , typename Out >
static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
 Convert an ANSI characters range to UTF-32. More...
 
template<typename In , typename Out >
static Out fromWide (In begin, In end, Out output)
 Convert a wide characters range to UTF-32. More...
 
template<typename In , typename Out >
static Out fromLatin1 (In begin, In end, Out output)
 Convert a latin-1 (ISO-5589-1) characters range to UTF-32. More...
 
template<typename In , typename Out >
static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
 Convert an UTF-32 characters range to ANSI characters. More...
 
template<typename In , typename Out >
static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
 Convert an UTF-32 characters range to wide characters. More...
 
template<typename In , typename Out >
static Out toLatin1 (In begin, In end, Out output, char replacement=0)
 Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters. More...
 
template<typename In , typename Out >
static Out toUtf8 (In begin, In end, Out output)
 Convert a UTF-32 characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out toUtf16 (In begin, In end, Out output)
 Convert a UTF-32 characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out toUtf32 (In begin, In end, Out output)
 Convert a UTF-32 characters range to UTF-32. More...
 
template<typename In >
static Uint32 decodeAnsi (In input, const std::locale &locale=std::locale())
 Decode a single ANSI character to UTF-32. More...
 
template<typename In >
static Uint32 decodeWide (In input)
 Decode a single wide character to UTF-32. More...
 
template<typename Out >
static Out encodeAnsi (Uint32 codepoint, Out output, char replacement=0, const std::locale &locale=std::locale())
 Encode a single UTF-32 character to ANSI. More...
 
template<typename Out >
static Out encodeWide (Uint32 codepoint, Out output, wchar_t replacement=0)
 Encode a single UTF-32 character to wide. More...
 
+

Detailed Description

+

template<>
+class sf::Utf< 32 >

+ +

Specialization of the Utf template for UTF-32.

+ +

Definition at line 462 of file Utf.hpp.

+

Member Function Documentation

+ +

◆ count()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::size_t sf::Utf< 32 >::count (In begin,
In end 
)
+
+static
+
+ +

Count the number of characters of a UTF-32 sequence.

+

This function is trivial for UTF-32, which can store every character in a single storage element.

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ decode()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static In sf::Utf< 32 >::decode (In begin,
In end,
Uint32 & output,
Uint32 replacement = 0 
)
+
+static
+
+ +

Decode a single UTF-32 character.

+

Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard. For UTF-32, the character value is the same as the codepoint.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputCodepoint of the decoded UTF-32 character
replacementReplacement character to use in case the UTF-8 sequence is invalid
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ decodeAnsi()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Uint32 sf::Utf< 32 >::decodeAnsi (In input,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Decode a single ANSI character to UTF-32.

+

This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

+
Parameters
+ + + +
inputInput ANSI character
localeLocale to use for conversion
+
+
+
Returns
Converted character
+ +
+
+ +

◆ decodeWide()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + +
static Uint32 sf::Utf< 32 >::decodeWide (In input)
+
+static
+
+ +

Decode a single wide character to UTF-32.

+

This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

+
Parameters
+ + +
inputInput wide character
+
+
+
Returns
Converted character
+ +
+
+ +

◆ encode()

+ +
+
+
+template<typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::encode (Uint32 input,
Out output,
Uint32 replacement = 0 
)
+
+static
+
+ +

Encode a single UTF-32 character.

+

Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-32. For UTF-32, the codepoint is the same as the character value.

+
Parameters
+ + + + +
inputCodepoint to encode as UTF-32
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to UTF-32 (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ encodeAnsi()

+ +
+
+
+template<typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::encodeAnsi (Uint32 codepoint,
Out output,
char replacement = 0,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Encode a single UTF-32 character to ANSI.

+

This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

+
Parameters
+ + + + + +
codepointIterator pointing to the beginning of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement if the input character is not convertible to ANSI (use 0 to skip it)
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ encodeWide()

+ +
+
+
+template<typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::encodeWide (Uint32 codepoint,
Out output,
wchar_t replacement = 0 
)
+
+static
+
+ +

Encode a single UTF-32 character to wide.

+

This function does not exist in other specializations of sf::Utf<>, it is defined for convenience (it is used by several other conversion functions).

+
Parameters
+ + + + +
codepointIterator pointing to the beginning of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement if the input character is not convertible to wide (use 0 to skip it)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::fromAnsi (In begin,
In end,
Out output,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an ANSI characters range to UTF-32.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::fromLatin1 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a latin-1 (ISO-5589-1) characters range to UTF-32.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::fromWide (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a wide characters range to UTF-32.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ next()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static In sf::Utf< 32 >::next (In begin,
In end 
)
+
+static
+
+ +

Advance to the next UTF-32 character.

+

This function is trivial for UTF-32, which can store every character in a single storage element.

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ toAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toAnsi (In begin,
In end,
Out output,
char replacement = 0,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an UTF-32 characters range to ANSI characters.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toLatin1 (In begin,
In end,
Out output,
char replacement = 0 
)
+
+static
+
+ +

Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf16()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toUtf16 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-32 characters range to UTF-16.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf32()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toUtf32 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-32 characters range to UTF-32.

+

This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf8()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toUtf8 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-32 characters range to UTF-8.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 32 >::toWide (In begin,
In end,
Out output,
wchar_t replacement = 0 
)
+
+static
+
+ +

Convert an UTF-32 characters range to wide characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4-members.html new file mode 100644 index 0000000..c974de7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4-members.html @@ -0,0 +1,74 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Utf< 8 > Member List
+
+
+ +

This is the complete list of members for sf::Utf< 8 >, including all inherited members.

+ + + + + + + + + + + + + + +
count(In begin, In end)sf::Utf< 8 >static
decode(In begin, In end, Uint32 &output, Uint32 replacement=0)sf::Utf< 8 >static
encode(Uint32 input, Out output, Uint8 replacement=0)sf::Utf< 8 >static
fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())sf::Utf< 8 >static
fromLatin1(In begin, In end, Out output)sf::Utf< 8 >static
fromWide(In begin, In end, Out output)sf::Utf< 8 >static
next(In begin, In end)sf::Utf< 8 >static
toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())sf::Utf< 8 >static
toLatin1(In begin, In end, Out output, char replacement=0)sf::Utf< 8 >static
toUtf16(In begin, In end, Out output)sf::Utf< 8 >static
toUtf32(In begin, In end, Out output)sf::Utf< 8 >static
toUtf8(In begin, In end, Out output)sf::Utf< 8 >static
toWide(In begin, In end, Out output, wchar_t replacement=0)sf::Utf< 8 >static
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4.html new file mode 100644 index 0000000..1e751d4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Utf_3_018_01_4.html @@ -0,0 +1,883 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Utf< 8 > Class Template Reference
+
+
+ +

Specialization of the Utf template for UTF-8. + More...

+ +

#include <Utf.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename In >
static In decode (In begin, In end, Uint32 &output, Uint32 replacement=0)
 Decode a single UTF-8 character. More...
 
template<typename Out >
static Out encode (Uint32 input, Out output, Uint8 replacement=0)
 Encode a single UTF-8 character. More...
 
template<typename In >
static In next (In begin, In end)
 Advance to the next UTF-8 character. More...
 
template<typename In >
static std::size_t count (In begin, In end)
 Count the number of characters of a UTF-8 sequence. More...
 
template<typename In , typename Out >
static Out fromAnsi (In begin, In end, Out output, const std::locale &locale=std::locale())
 Convert an ANSI characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out fromWide (In begin, In end, Out output)
 Convert a wide characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out fromLatin1 (In begin, In end, Out output)
 Convert a latin-1 (ISO-5589-1) characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out toAnsi (In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
 Convert an UTF-8 characters range to ANSI characters. More...
 
template<typename In , typename Out >
static Out toWide (In begin, In end, Out output, wchar_t replacement=0)
 Convert an UTF-8 characters range to wide characters. More...
 
template<typename In , typename Out >
static Out toLatin1 (In begin, In end, Out output, char replacement=0)
 Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters. More...
 
template<typename In , typename Out >
static Out toUtf8 (In begin, In end, Out output)
 Convert a UTF-8 characters range to UTF-8. More...
 
template<typename In , typename Out >
static Out toUtf16 (In begin, In end, Out output)
 Convert a UTF-8 characters range to UTF-16. More...
 
template<typename In , typename Out >
static Out toUtf32 (In begin, In end, Out output)
 Convert a UTF-8 characters range to UTF-32. More...
 
+

Detailed Description

+

template<>
+class sf::Utf< 8 >

+ +

Specialization of the Utf template for UTF-8.

+ +

Definition at line 48 of file Utf.hpp.

+

Member Function Documentation

+ +

◆ count()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::size_t sf::Utf< 8 >::count (In begin,
In end 
)
+
+static
+
+ +

Count the number of characters of a UTF-8 sequence.

+

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element, thus the total size can be different from (begin - end).

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ decode()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static In sf::Utf< 8 >::decode (In begin,
In end,
Uint32 & output,
Uint32 replacement = 0 
)
+
+static
+
+ +

Decode a single UTF-8 character.

+

Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputCodepoint of the decoded UTF-8 character
replacementReplacement character to use in case the UTF-8 sequence is invalid
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ encode()

+ +
+
+
+template<typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::encode (Uint32 input,
Out output,
Uint8 replacement = 0 
)
+
+static
+
+ +

Encode a single UTF-8 character.

+

Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-8.

+
Parameters
+ + + + +
inputCodepoint to encode as UTF-8
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to UTF-8 (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::fromAnsi (In begin,
In end,
Out output,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an ANSI characters range to UTF-8.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::fromLatin1 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a latin-1 (ISO-5589-1) characters range to UTF-8.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ fromWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::fromWide (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a wide characters range to UTF-8.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ next()

+ +
+
+
+template<typename In >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static In sf::Utf< 8 >::next (In begin,
In end 
)
+
+static
+
+ +

Advance to the next UTF-8 character.

+

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element.

+
Parameters
+ + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
+
+
+
Returns
Iterator pointing to one past the last read element of the input sequence
+ +
+
+ +

◆ toAnsi()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toAnsi (In begin,
In end,
Out output,
char replacement = 0,
const std::locale & locale = std::locale() 
)
+
+static
+
+ +

Convert an UTF-8 characters range to ANSI characters.

+

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

+
Parameters
+ + + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to ANSI (use 0 to skip them)
localeLocale to use for conversion
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toLatin1()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toLatin1 (In begin,
In end,
Out output,
char replacement = 0 
)
+
+static
+
+ +

Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf16()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toUtf16 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-8 characters range to UTF-16.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf32()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toUtf32 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-8 characters range to UTF-32.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toUtf8()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toUtf8 (In begin,
In end,
Out output 
)
+
+static
+
+ +

Convert a UTF-8 characters range to UTF-8.

+

This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the sf::Utf<> template, and allow generic code to be written on top of it.

+
Parameters
+ + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+ +

◆ toWide()

+ +
+
+
+template<typename In , typename Out >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Out sf::Utf< 8 >::toWide (In begin,
In end,
Out output,
wchar_t replacement = 0 
)
+
+static
+
+ +

Convert an UTF-8 characters range to wide characters.

+
Parameters
+ + + + + +
beginIterator pointing to the beginning of the input sequence
endIterator pointing to the end of the input sequence
outputIterator pointing to the beginning of the output sequence
replacementReplacement for characters not convertible to wide (use 0 to skip them)
+
+
+
Returns
Iterator to the end of the output sequence which has been written
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2-members.html new file mode 100644 index 0000000..d2b9a73 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2-members.html @@ -0,0 +1,78 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Vector2< T > Member List
+
+
+ +

This is the complete list of members for sf::Vector2< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
operator!=(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
operator*(const Vector2< T > &left, T right)sf::Vector2< T >related
operator*(T left, const Vector2< T > &right)sf::Vector2< T >related
operator*=(Vector2< T > &left, T right)sf::Vector2< T >related
operator+(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
operator+=(Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
operator-(const Vector2< T > &right)sf::Vector2< T >related
operator-(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
operator-=(Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
operator/(const Vector2< T > &left, T right)sf::Vector2< T >related
operator/=(Vector2< T > &left, T right)sf::Vector2< T >related
operator==(const Vector2< T > &left, const Vector2< T > &right)sf::Vector2< T >related
Vector2()sf::Vector2< T >
Vector2(T X, T Y)sf::Vector2< T >
Vector2(const Vector2< U > &vector)sf::Vector2< T >explicit
xsf::Vector2< T >
ysf::Vector2< T >
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2.html new file mode 100644 index 0000000..c866b31 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector2.html @@ -0,0 +1,878 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Vector2< T > Class Template Reference
+
+
+ +

Utility template class for manipulating 2-dimensional vectors. + More...

+ +

#include <Vector2.hpp>

+ + + + + + + + + + + + +

+Public Member Functions

 Vector2 ()
 Default constructor. More...
 
 Vector2 (T X, T Y)
 Construct the vector from its coordinates. More...
 
template<typename U >
 Vector2 (const Vector2< U > &vector)
 Construct the vector from another type of vector. More...
 
+ + + + + + + +

+Public Attributes

x
 X coordinate of the vector. More...
 
y
 Y coordinate of the vector. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
template<typename T >
Vector2< T > operator- (const Vector2< T > &right)
 Overload of unary operator -. More...
 
template<typename T >
Vector2< T > & operator+= (Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator +=. More...
 
template<typename T >
Vector2< T > & operator-= (Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator -=. More...
 
template<typename T >
Vector2< T > operator+ (const Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator +. More...
 
template<typename T >
Vector2< T > operator- (const Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator -. More...
 
template<typename T >
Vector2< T > operator* (const Vector2< T > &left, T right)
 Overload of binary operator *. More...
 
template<typename T >
Vector2< T > operator* (T left, const Vector2< T > &right)
 Overload of binary operator *. More...
 
template<typename T >
Vector2< T > & operator*= (Vector2< T > &left, T right)
 Overload of binary operator *=. More...
 
template<typename T >
Vector2< T > operator/ (const Vector2< T > &left, T right)
 Overload of binary operator /. More...
 
template<typename T >
Vector2< T > & operator/= (Vector2< T > &left, T right)
 Overload of binary operator /=. More...
 
template<typename T >
bool operator== (const Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator ==. More...
 
template<typename T >
bool operator!= (const Vector2< T > &left, const Vector2< T > &right)
 Overload of binary operator !=. More...
 
+

Detailed Description

+

template<typename T>
+class sf::Vector2< T >

+ +

Utility template class for manipulating 2-dimensional vectors.

+

sf::Vector2 is a simple class that defines a mathematical vector with two coordinates (x and y).

+

It can be used to represent anything that has two dimensions: a size, a point, a velocity, etc.

+

The template parameter T is the type of the coordinates. It can be any type that supports arithmetic operations (+, -, /, *) and comparisons (==, !=), for example int or float.

+

You generally don't have to care about the templated form (sf::Vector2<T>), the most common specializations have special typedefs:

    +
  • sf::Vector2<float> is sf::Vector2f
  • +
  • sf::Vector2<int> is sf::Vector2i
  • +
  • sf::Vector2<unsigned int> is sf::Vector2u
  • +
+

The sf::Vector2 class has a small and simple interface, its x and y members can be accessed directly (there are no accessors like setX(), getX()) and it contains no mathematical function like dot product, cross product, length, etc.

+

Usage example:

sf::Vector2f v1(16.5f, 24.f);
v1.x = 18.2f;
float y = v1.y;
sf::Vector2f v2 = v1 * 5.f;
v3 = v1 + v2;
bool different = (v2 != v3);

Note: for 3-dimensional vectors, see sf::Vector3.

+ +

Definition at line 37 of file Vector2.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Vector2() [1/3]

+ +
+
+
+template<typename T>
+ + + + + + + +
sf::Vector2< T >::Vector2 ()
+
+ +

Default constructor.

+

Creates a Vector2(0, 0).

+ +
+
+ +

◆ Vector2() [2/3]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + +
sf::Vector2< T >::Vector2 (X,
Y 
)
+
+ +

Construct the vector from its coordinates.

+
Parameters
+ + + +
XX coordinate
YY coordinate
+
+
+ +
+
+ +

◆ Vector2() [3/3]

+ +
+
+
+template<typename T>
+
+template<typename U >
+ + + + + +
+ + + + + + + + +
sf::Vector2< T >::Vector2 (const Vector2< U > & vector)
+
+explicit
+
+ +

Construct the vector from another type of vector.

+

This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

+
Parameters
+ + +
vectorVector to convert
+
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator !=.

+

This operator compares strict difference between two vectors.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
True if left is not equal to right
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > operator* (const Vector2< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator *.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Memberwise multiplication by right
+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > operator* (left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator *.

+
Parameters
+ + + +
leftLeft operand (a scalar value)
rightRight operand (a vector)
+
+
+
Returns
Memberwise multiplication by left
+ +
+
+ +

◆ operator*=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > & operator*= (Vector2< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator *=.

+

This operator performs a memberwise multiplication by right, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > operator+ (const Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator +.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Memberwise addition of both vectors
+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > & operator+= (Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator +=.

+

This operator performs a memberwise addition of both vectors, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Vector2< T > operator- (const Vector2< T > & right)
+
+related
+
+ +

Overload of unary operator -.

+
Parameters
+ + +
rightVector to negate
+
+
+
Returns
Memberwise opposite of the vector
+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > operator- (const Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator -.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Memberwise subtraction of both vectors
+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > & operator-= (Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator -=.

+

This operator performs a memberwise subtraction of both vectors, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator/()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > operator/ (const Vector2< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator /.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Memberwise division by right
+ +
+
+ +

◆ operator/=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector2< T > & operator/= (Vector2< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator /=.

+

This operator performs a memberwise division by right, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Vector2< T > & left,
const Vector2< T > & right 
)
+
+related
+
+ +

Overload of binary operator ==.

+

This operator compares strict equality between two vectors.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
True if left is equal to right
+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+
+template<typename T>
+ + + + +
T sf::Vector2< T >::x
+
+ +

X coordinate of the vector.

+ +

Definition at line 75 of file Vector2.hpp.

+ +
+
+ +

◆ y

+ +
+
+
+template<typename T>
+ + + + +
T sf::Vector2< T >::y
+
+ +

Y coordinate of the vector.

+ +

Definition at line 76 of file Vector2.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3-members.html new file mode 100644 index 0000000..3b25ece --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3-members.html @@ -0,0 +1,79 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Vector3< T > Member List
+
+
+ +

This is the complete list of members for sf::Vector3< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
operator!=(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
operator*(const Vector3< T > &left, T right)sf::Vector3< T >related
operator*(T left, const Vector3< T > &right)sf::Vector3< T >related
operator*=(Vector3< T > &left, T right)sf::Vector3< T >related
operator+(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
operator+=(Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
operator-(const Vector3< T > &left)sf::Vector3< T >related
operator-(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
operator-=(Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
operator/(const Vector3< T > &left, T right)sf::Vector3< T >related
operator/=(Vector3< T > &left, T right)sf::Vector3< T >related
operator==(const Vector3< T > &left, const Vector3< T > &right)sf::Vector3< T >related
Vector3()sf::Vector3< T >
Vector3(T X, T Y, T Z)sf::Vector3< T >
Vector3(const Vector3< U > &vector)sf::Vector3< T >explicit
xsf::Vector3< T >
ysf::Vector3< T >
zsf::Vector3< T >
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3.html new file mode 100644 index 0000000..151ebee --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vector3.html @@ -0,0 +1,907 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::Vector3< T > Class Template Reference
+
+
+ +

Utility template class for manipulating 3-dimensional vectors. + More...

+ +

#include <Vector3.hpp>

+ + + + + + + + + + + + +

+Public Member Functions

 Vector3 ()
 Default constructor. More...
 
 Vector3 (T X, T Y, T Z)
 Construct the vector from its coordinates. More...
 
template<typename U >
 Vector3 (const Vector3< U > &vector)
 Construct the vector from another type of vector. More...
 
+ + + + + + + + + + +

+Public Attributes

x
 X coordinate of the vector. More...
 
y
 Y coordinate of the vector. More...
 
z
 Z coordinate of the vector. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
template<typename T >
Vector3< T > operator- (const Vector3< T > &left)
 Overload of unary operator -. More...
 
template<typename T >
Vector3< T > & operator+= (Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator +=. More...
 
template<typename T >
Vector3< T > & operator-= (Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator -=. More...
 
template<typename T >
Vector3< T > operator+ (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator +. More...
 
template<typename T >
Vector3< T > operator- (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator -. More...
 
template<typename T >
Vector3< T > operator* (const Vector3< T > &left, T right)
 Overload of binary operator *. More...
 
template<typename T >
Vector3< T > operator* (T left, const Vector3< T > &right)
 Overload of binary operator *. More...
 
template<typename T >
Vector3< T > & operator*= (Vector3< T > &left, T right)
 Overload of binary operator *=. More...
 
template<typename T >
Vector3< T > operator/ (const Vector3< T > &left, T right)
 Overload of binary operator /. More...
 
template<typename T >
Vector3< T > & operator/= (Vector3< T > &left, T right)
 Overload of binary operator /=. More...
 
template<typename T >
bool operator== (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator ==. More...
 
template<typename T >
bool operator!= (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator !=. More...
 
+

Detailed Description

+

template<typename T>
+class sf::Vector3< T >

+ +

Utility template class for manipulating 3-dimensional vectors.

+

sf::Vector3 is a simple class that defines a mathematical vector with three coordinates (x, y and z).

+

It can be used to represent anything that has three dimensions: a size, a point, a velocity, etc.

+

The template parameter T is the type of the coordinates. It can be any type that supports arithmetic operations (+, -, /, *) and comparisons (==, !=), for example int or float.

+

You generally don't have to care about the templated form (sf::Vector3<T>), the most common specializations have special typedefs:

    +
  • sf::Vector3<float> is sf::Vector3f
  • +
  • sf::Vector3<int> is sf::Vector3i
  • +
+

The sf::Vector3 class has a small and simple interface, its x and y members can be accessed directly (there are no accessors like setX(), getX()) and it contains no mathematical function like dot product, cross product, length, etc.

+

Usage example:

sf::Vector3f v1(16.5f, 24.f, -8.2f);
v1.x = 18.2f;
float y = v1.y;
float z = v1.z;
sf::Vector3f v2 = v1 * 5.f;
v3 = v1 + v2;
bool different = (v2 != v3);

Note: for 2-dimensional vectors, see sf::Vector2.

+ +

Definition at line 37 of file Vector3.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Vector3() [1/3]

+ +
+
+
+template<typename T>
+ + + + + + + +
sf::Vector3< T >::Vector3 ()
+
+ +

Default constructor.

+

Creates a Vector3(0, 0, 0).

+ +
+
+ +

◆ Vector3() [2/3]

+ +
+
+
+template<typename T>
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::Vector3< T >::Vector3 (X,
Y,
Z 
)
+
+ +

Construct the vector from its coordinates.

+
Parameters
+ + + + +
XX coordinate
YY coordinate
ZZ coordinate
+
+
+ +
+
+ +

◆ Vector3() [3/3]

+ +
+
+
+template<typename T>
+
+template<typename U >
+ + + + + +
+ + + + + + + + +
sf::Vector3< T >::Vector3 (const Vector3< U > & vector)
+
+explicit
+
+ +

Construct the vector from another type of vector.

+

This constructor doesn't replace the copy constructor, it's called only when U != T. A call to this constructor will fail to compile if U is not convertible to T.

+
Parameters
+ + +
vectorVector to convert
+
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator !=.

+

This operator compares strict difference between two vectors.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
True if left is not equal to right
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > operator* (const Vector3< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator *.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Memberwise multiplication by right
+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > operator* (left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator *.

+
Parameters
+ + + +
leftLeft operand (a scalar value)
rightRight operand (a vector)
+
+
+
Returns
Memberwise multiplication by left
+ +
+
+ +

◆ operator*=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > & operator*= (Vector3< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator *=.

+

This operator performs a memberwise multiplication by right, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > operator+ (const Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator +.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Memberwise addition of both vectors
+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > & operator+= (Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator +=.

+

This operator performs a memberwise addition of both vectors, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Vector3< T > operator- (const Vector3< T > & left)
+
+related
+
+ +

Overload of unary operator -.

+
Parameters
+ + +
leftVector to negate
+
+
+
Returns
Memberwise opposite of the vector
+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > operator- (const Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator -.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Memberwise subtraction of both vectors
+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > & operator-= (Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator -=.

+

This operator performs a memberwise subtraction of both vectors, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator/()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > operator/ (const Vector3< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator /.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Memberwise division by right
+ +
+
+ +

◆ operator/=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector3< T > & operator/= (Vector3< T > & left,
right 
)
+
+related
+
+ +

Overload of binary operator /=.

+

This operator performs a memberwise division by right, and assigns the result to left.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a scalar value)
+
+
+
Returns
Reference to left
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const Vector3< T > & left,
const Vector3< T > & right 
)
+
+related
+
+ +

Overload of binary operator ==.

+

This operator compares strict equality between two vectors.

+
Parameters
+ + + +
leftLeft operand (a vector)
rightRight operand (a vector)
+
+
+
Returns
True if left is equal to right
+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+
+template<typename T>
+ + + + +
T sf::Vector3< T >::x
+
+ +

X coordinate of the vector.

+ +

Definition at line 76 of file Vector3.hpp.

+ +
+
+ +

◆ y

+ +
+
+
+template<typename T>
+ + + + +
T sf::Vector3< T >::y
+
+ +

Y coordinate of the vector.

+ +

Definition at line 77 of file Vector3.hpp.

+ +
+
+ +

◆ z

+ +
+
+
+template<typename T>
+ + + + +
T sf::Vector3< T >::z
+
+ +

Z coordinate of the vector.

+ +

Definition at line 78 of file Vector3.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex-members.html new file mode 100644 index 0000000..1ad4a05 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex-members.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Vertex Member List
+
+
+ +

This is the complete list of members for sf::Vertex, including all inherited members.

+ + + + + + + + + +
colorsf::Vertex
positionsf::Vertex
texCoordssf::Vertex
Vertex()sf::Vertex
Vertex(const Vector2f &thePosition)sf::Vertex
Vertex(const Vector2f &thePosition, const Color &theColor)sf::Vertex
Vertex(const Vector2f &thePosition, const Vector2f &theTexCoords)sf::Vertex
Vertex(const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)sf::Vertex
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex.html new file mode 100644 index 0000000..86dd767 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Vertex.html @@ -0,0 +1,333 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Define a point with color and texture coordinates. + More...

+ +

#include <Vertex.hpp>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 Vertex ()
 Default constructor. More...
 
 Vertex (const Vector2f &thePosition)
 Construct the vertex from its position. More...
 
 Vertex (const Vector2f &thePosition, const Color &theColor)
 Construct the vertex from its position and color. More...
 
 Vertex (const Vector2f &thePosition, const Vector2f &theTexCoords)
 Construct the vertex from its position and texture coordinates. More...
 
 Vertex (const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)
 Construct the vertex from its position, color and texture coordinates. More...
 
+ + + + + + + + + + +

+Public Attributes

Vector2f position
 2D position of the vertex More...
 
Color color
 Color of the vertex. More...
 
Vector2f texCoords
 Coordinates of the texture's pixel to map to the vertex. More...
 
+

Detailed Description

+

Define a point with color and texture coordinates.

+

A vertex is an improved point.

+

It has a position and other extra attributes that will be used for drawing: in SFML, vertices also have a color and a pair of texture coordinates.

+

The vertex is the building block of drawing. Everything which is visible on screen is made of vertices. They are grouped as 2D primitives (triangles, quads, ...), and these primitives are grouped to create even more complex 2D entities such as sprites, texts, etc.

+

If you use the graphical entities of SFML (sprite, text, shape) you won't have to deal with vertices directly. But if you want to define your own 2D entities, such as tiled maps or particle systems, using vertices will allow you to get maximum performances.

+

Example:

// define a 100x100 square, red, with a 10x10 texture mapped on it
sf::Vertex vertices[] =
{
};
// draw it
window.draw(vertices, 4, sf::Quads);

Note: although texture coordinates are supposed to be an integer amount of pixels, their type is float because of some buggy graphics drivers that are not able to process integer coordinates correctly.

+
See also
sf::VertexArray
+ +

Definition at line 42 of file Vertex.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Vertex() [1/5]

+ +
+
+ + + + + + + +
sf::Vertex::Vertex ()
+
+ +

Default constructor.

+ +
+
+ +

◆ Vertex() [2/5]

+ +
+
+ + + + + + + + +
sf::Vertex::Vertex (const Vector2fthePosition)
+
+ +

Construct the vertex from its position.

+

The vertex color is white and texture coordinates are (0, 0).

+
Parameters
+ + +
thePositionVertex position
+
+
+ +
+
+ +

◆ Vertex() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::Vertex::Vertex (const Vector2fthePosition,
const ColortheColor 
)
+
+ +

Construct the vertex from its position and color.

+

The texture coordinates are (0, 0).

+
Parameters
+ + + +
thePositionVertex position
theColorVertex color
+
+
+ +
+
+ +

◆ Vertex() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::Vertex::Vertex (const Vector2fthePosition,
const Vector2ftheTexCoords 
)
+
+ +

Construct the vertex from its position and texture coordinates.

+

The vertex color is white.

+
Parameters
+ + + +
thePositionVertex position
theTexCoordsVertex texture coordinates
+
+
+ +
+
+ +

◆ Vertex() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::Vertex::Vertex (const Vector2fthePosition,
const ColortheColor,
const Vector2ftheTexCoords 
)
+
+ +

Construct the vertex from its position, color and texture coordinates.

+
Parameters
+ + + + +
thePositionVertex position
theColorVertex color
theTexCoordsVertex texture coordinates
+
+
+ +
+
+

Member Data Documentation

+ +

◆ color

+ +
+
+ + + + +
Color sf::Vertex::color
+
+ +

Color of the vertex.

+ +

Definition at line 98 of file Vertex.hpp.

+ +
+
+ +

◆ position

+ +
+
+ + + + +
Vector2f sf::Vertex::position
+
+ +

2D position of the vertex

+ +

Definition at line 97 of file Vertex.hpp.

+ +
+
+ +

◆ texCoords

+ +
+
+ + + + +
Vector2f sf::Vertex::texCoords
+
+ +

Coordinates of the texture's pixel to map to the vertex.

+ +

Definition at line 99 of file Vertex.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray-members.html new file mode 100644 index 0000000..312898c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray-members.html @@ -0,0 +1,73 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::VertexArray Member List
+
+
+ +

This is the complete list of members for sf::VertexArray, including all inherited members.

+ + + + + + + + + + + + + +
append(const Vertex &vertex)sf::VertexArray
clear()sf::VertexArray
getBounds() constsf::VertexArray
getPrimitiveType() constsf::VertexArray
getVertexCount() constsf::VertexArray
operator[](std::size_t index)sf::VertexArray
operator[](std::size_t index) constsf::VertexArray
resize(std::size_t vertexCount)sf::VertexArray
setPrimitiveType(PrimitiveType type)sf::VertexArray
VertexArray()sf::VertexArray
VertexArray(PrimitiveType type, std::size_t vertexCount=0)sf::VertexArrayexplicit
~Drawable()sf::Drawableinlinevirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.html new file mode 100644 index 0000000..03111a2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.html @@ -0,0 +1,413 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::VertexArray Class Reference
+
+
+ +

Define a set of one or more 2D primitives. + More...

+ +

#include <VertexArray.hpp>

+
+Inheritance diagram for sf::VertexArray:
+
+
+ + +sf::Drawable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VertexArray ()
 Default constructor. More...
 
 VertexArray (PrimitiveType type, std::size_t vertexCount=0)
 Construct the vertex array with a type and an initial number of vertices. More...
 
std::size_t getVertexCount () const
 Return the vertex count. More...
 
Vertexoperator[] (std::size_t index)
 Get a read-write access to a vertex by its index. More...
 
const Vertexoperator[] (std::size_t index) const
 Get a read-only access to a vertex by its index. More...
 
void clear ()
 Clear the vertex array. More...
 
void resize (std::size_t vertexCount)
 Resize the vertex array. More...
 
void append (const Vertex &vertex)
 Add a vertex to the array. More...
 
void setPrimitiveType (PrimitiveType type)
 Set the type of primitives to draw. More...
 
PrimitiveType getPrimitiveType () const
 Get the type of primitives drawn by the vertex array. More...
 
FloatRect getBounds () const
 Compute the bounding rectangle of the vertex array. More...
 
+

Detailed Description

+

Define a set of one or more 2D primitives.

+

sf::VertexArray is a very simple wrapper around a dynamic array of vertices and a primitives type.

+

It inherits sf::Drawable, but unlike other drawables it is not transformable.

+

Example:

lines[0].position = sf::Vector2f(10, 0);
lines[1].position = sf::Vector2f(20, 0);
lines[2].position = sf::Vector2f(30, 5);
lines[3].position = sf::Vector2f(40, 2);
window.draw(lines);
See also
sf::Vertex
+ +

Definition at line 45 of file VertexArray.hpp.

+

Constructor & Destructor Documentation

+ +

◆ VertexArray() [1/2]

+ +
+
+ + + + + + + +
sf::VertexArray::VertexArray ()
+
+ +

Default constructor.

+

Creates an empty vertex array.

+ +
+
+ +

◆ VertexArray() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
sf::VertexArray::VertexArray (PrimitiveType type,
std::size_t vertexCount = 0 
)
+
+explicit
+
+ +

Construct the vertex array with a type and an initial number of vertices.

+
Parameters
+ + + +
typeType of primitives
vertexCountInitial number of vertices in the array
+
+
+ +
+
+

Member Function Documentation

+ +

◆ append()

+ +
+
+ + + + + + + + +
void sf::VertexArray::append (const Vertexvertex)
+
+ +

Add a vertex to the array.

+
Parameters
+ + +
vertexVertex to add
+
+
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + +
void sf::VertexArray::clear ()
+
+ +

Clear the vertex array.

+

This function removes all the vertices from the array. It doesn't deallocate the corresponding memory, so that adding new vertices after clearing doesn't involve reallocating all the memory.

+ +
+
+ +

◆ getBounds()

+ +
+
+ + + + + + + +
FloatRect sf::VertexArray::getBounds () const
+
+ +

Compute the bounding rectangle of the vertex array.

+

This function returns the minimal axis-aligned rectangle that contains all the vertices of the array.

+
Returns
Bounding rectangle of the vertex array
+ +
+
+ +

◆ getPrimitiveType()

+ +
+
+ + + + + + + +
PrimitiveType sf::VertexArray::getPrimitiveType () const
+
+ +

Get the type of primitives drawn by the vertex array.

+
Returns
Primitive type
+ +
+
+ +

◆ getVertexCount()

+ +
+
+ + + + + + + +
std::size_t sf::VertexArray::getVertexCount () const
+
+ +

Return the vertex count.

+
Returns
Number of vertices in the array
+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
Vertex& sf::VertexArray::operator[] (std::size_t index)
+
+ +

Get a read-write access to a vertex by its index.

+

This function doesn't check index, it must be in range [0, getVertexCount() - 1]. The behavior is undefined otherwise.

+
Parameters
+ + +
indexIndex of the vertex to get
+
+
+
Returns
Reference to the index-th vertex
+
See also
getVertexCount
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
const Vertex& sf::VertexArray::operator[] (std::size_t index) const
+
+ +

Get a read-only access to a vertex by its index.

+

This function doesn't check index, it must be in range [0, getVertexCount() - 1]. The behavior is undefined otherwise.

+
Parameters
+ + +
indexIndex of the vertex to get
+
+
+
Returns
Const reference to the index-th vertex
+
See also
getVertexCount
+ +
+
+ +

◆ resize()

+ +
+
+ + + + + + + + +
void sf::VertexArray::resize (std::size_t vertexCount)
+
+ +

Resize the vertex array.

+

If vertexCount is greater than the current size, the previous vertices are kept and new (default-constructed) vertices are added. If vertexCount is less than the current size, existing vertices are removed from the array.

+
Parameters
+ + +
vertexCountNew size of the array (number of vertices)
+
+
+ +
+
+ +

◆ setPrimitiveType()

+ +
+
+ + + + + + + + +
void sf::VertexArray::setPrimitiveType (PrimitiveType type)
+
+ +

Set the type of primitives to draw.

+

This function defines how the vertices must be interpreted when it's time to draw them:

    +
  • As points
  • +
  • As lines
  • +
  • As triangles
  • +
  • As quads The default primitive type is sf::Points.
  • +
+
Parameters
+ + +
typeType of primitive
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexArray.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa8145e08770a16fc0871ef2bfbeaa7a4c903aa GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0y~yU`S$MU z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`vES3hF{Fa=?cBF{hZT5S z`+Ki^uYaPd$S6JO=tMW|(vn>r{EwN%_4j*fF5RfKa#i0ImldnnzBsmcywtG|y?TEO z`<&yk3Rxen?M}9FS(9$Yetz!Osax-ceaZ;#i>#5}(e}1UVE!C60ZdLm2&esOnMNdxEt8L#O`9b$qmr&^53!AqaY`u8r zkHM+bQ;*X{m#+G?eHKUP)dn@EP}2q96@t7nS1`7Lp)wuf^C9=J@) z5G?!7nq=?(KJg!0$PvSm?rFsqk&Wm68n^5ZeV$!Bbrs*klfC701Kk;IoI)1gd70xn zbJcFQoY&_*7yiHdSnyltafO(#=ld-Wtlh_^sALpkZ?jM|L1n5~B?AKkgQu&X%Q~lo FCIE6+;rsvq literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer-members.html new file mode 100644 index 0000000..72b8d91 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer-members.html @@ -0,0 +1,89 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::VertexBuffer Member List
+
+
+ +

This is the complete list of members for sf::VertexBuffer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bind(const VertexBuffer *vertexBuffer)sf::VertexBufferstatic
create(std::size_t vertexCount)sf::VertexBuffer
Dynamic enum valuesf::VertexBuffer
getNativeHandle() constsf::VertexBuffer
getPrimitiveType() constsf::VertexBuffer
getUsage() constsf::VertexBuffer
getVertexCount() constsf::VertexBuffer
GlResource()sf::GlResourceprivate
isAvailable()sf::VertexBufferstatic
operator=(const VertexBuffer &right)sf::VertexBuffer
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
setPrimitiveType(PrimitiveType type)sf::VertexBuffer
setUsage(Usage usage)sf::VertexBuffer
Static enum valuesf::VertexBuffer
Stream enum valuesf::VertexBuffer
swap(VertexBuffer &right)sf::VertexBuffer
update(const Vertex *vertices)sf::VertexBuffer
update(const Vertex *vertices, std::size_t vertexCount, unsigned int offset)sf::VertexBuffer
update(const VertexBuffer &vertexBuffer)sf::VertexBuffer
Usage enum namesf::VertexBuffer
VertexBuffer()sf::VertexBuffer
VertexBuffer(PrimitiveType type)sf::VertexBufferexplicit
VertexBuffer(Usage usage)sf::VertexBufferexplicit
VertexBuffer(PrimitiveType type, Usage usage)sf::VertexBuffer
VertexBuffer(const VertexBuffer &copy)sf::VertexBuffer
~Drawable()sf::Drawableinlinevirtual
~GlResource()sf::GlResourceprivate
~VertexBuffer()sf::VertexBuffer
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.html new file mode 100644 index 0000000..fc4cdc1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.html @@ -0,0 +1,772 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Vertex buffer storage for one or more 2D primitives. + More...

+ +

#include <VertexBuffer.hpp>

+
+Inheritance diagram for sf::VertexBuffer:
+
+
+ + +sf::Drawable +sf::GlResource + +
+ + + + + +

+Public Types

enum  Usage { Stream, +Dynamic, +Static + }
 Usage specifiers. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VertexBuffer ()
 Default constructor. More...
 
 VertexBuffer (PrimitiveType type)
 Construct a VertexBuffer with a specific PrimitiveType. More...
 
 VertexBuffer (Usage usage)
 Construct a VertexBuffer with a specific usage specifier. More...
 
 VertexBuffer (PrimitiveType type, Usage usage)
 Construct a VertexBuffer with a specific PrimitiveType and usage specifier. More...
 
 VertexBuffer (const VertexBuffer &copy)
 Copy constructor. More...
 
 ~VertexBuffer ()
 Destructor. More...
 
bool create (std::size_t vertexCount)
 Create the vertex buffer. More...
 
std::size_t getVertexCount () const
 Return the vertex count. More...
 
bool update (const Vertex *vertices)
 Update the whole buffer from an array of vertices. More...
 
bool update (const Vertex *vertices, std::size_t vertexCount, unsigned int offset)
 Update a part of the buffer from an array of vertices. More...
 
bool update (const VertexBuffer &vertexBuffer)
 Copy the contents of another buffer into this buffer. More...
 
VertexBufferoperator= (const VertexBuffer &right)
 Overload of assignment operator. More...
 
void swap (VertexBuffer &right)
 Swap the contents of this vertex buffer with those of another. More...
 
unsigned int getNativeHandle () const
 Get the underlying OpenGL handle of the vertex buffer. More...
 
void setPrimitiveType (PrimitiveType type)
 Set the type of primitives to draw. More...
 
PrimitiveType getPrimitiveType () const
 Get the type of primitives drawn by the vertex buffer. More...
 
void setUsage (Usage usage)
 Set the usage specifier of this vertex buffer. More...
 
Usage getUsage () const
 Get the usage specifier of this vertex buffer. More...
 
+ + + + + + + +

+Static Public Member Functions

static void bind (const VertexBuffer *vertexBuffer)
 Bind a vertex buffer for rendering. More...
 
static bool isAvailable ()
 Tell whether or not the system supports vertex buffers. More...
 
+ + + + +

+Static Private Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+

Detailed Description

+

Vertex buffer storage for one or more 2D primitives.

+

sf::VertexBuffer is a simple wrapper around a dynamic buffer of vertices and a primitives type.

+

Unlike sf::VertexArray, the vertex data is stored in graphics memory.

+

In situations where a large amount of vertex data would have to be transferred from system memory to graphics memory every frame, using sf::VertexBuffer can help. By using a sf::VertexBuffer, data that has not been changed between frames does not have to be re-transferred from system to graphics memory as would be the case with sf::VertexArray. If data transfer is a bottleneck, this can lead to performance gains.

+

Using sf::VertexBuffer, the user also has the ability to only modify a portion of the buffer in graphics memory. This way, a large buffer can be allocated at the start of the application and only the applicable portions of it need to be updated during the course of the application. This allows the user to take full control of data transfers between system and graphics memory if they need to.

+

In special cases, the user can make use of multiple threads to update vertex data in multiple distinct regions of the buffer simultaneously. This might make sense when e.g. the position of multiple objects has to be recalculated very frequently. The computation load can be spread across multiple threads as long as there are no other data dependencies.

+

Simultaneous updates to the vertex buffer are not guaranteed to be carried out by the driver in any specific order. Updating the same region of the buffer from multiple threads will not cause undefined behaviour, however the final state of the buffer will be unpredictable.

+

Simultaneous updates of distinct non-overlapping regions of the buffer are also not guaranteed to complete in a specific order. However, in this case the user can make sure to synchronize the writer threads at well-defined points in their code. The driver will make sure that all pending data transfers complete before the vertex buffer is sourced by the rendering pipeline.

+

It inherits sf::Drawable, but unlike other drawables it is not transformable.

+

Example:

sf::Vertex vertices[15];
...
sf::VertexBuffer triangles(sf::Triangles);
triangles.create(15);
triangles.update(vertices);
...
window.draw(triangles);
See also
sf::Vertex, sf::VertexArray
+ +

Definition at line 46 of file VertexBuffer.hpp.

+

Member Enumeration Documentation

+ +

◆ Usage

+ +
+
+ + + + +
enum sf::VertexBuffer::Usage
+
+ +

Usage specifiers.

+

If data is going to be updated once or more every frame, set the usage to Stream. If data is going to be set once and used for a long time without being modified, set the usage to Static. For everything else Dynamic should be a good compromise.

+ + + + +
Enumerator
Stream 

Constantly changing data.

+
Dynamic 

Occasionally changing data.

+
Static 

Rarely changing data.

+
+ +

Definition at line 60 of file VertexBuffer.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ VertexBuffer() [1/5]

+ +
+
+ + + + + + + +
sf::VertexBuffer::VertexBuffer ()
+
+ +

Default constructor.

+

Creates an empty vertex buffer.

+ +
+
+ +

◆ VertexBuffer() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::VertexBuffer::VertexBuffer (PrimitiveType type)
+
+explicit
+
+ +

Construct a VertexBuffer with a specific PrimitiveType.

+

Creates an empty vertex buffer and sets its primitive type to type.

+
Parameters
+ + +
typeType of primitive
+
+
+ +
+
+ +

◆ VertexBuffer() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::VertexBuffer::VertexBuffer (Usage usage)
+
+explicit
+
+ +

Construct a VertexBuffer with a specific usage specifier.

+

Creates an empty vertex buffer and sets its usage to usage.

+
Parameters
+ + +
usageUsage specifier
+
+
+ +
+
+ +

◆ VertexBuffer() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::VertexBuffer::VertexBuffer (PrimitiveType type,
Usage usage 
)
+
+ +

Construct a VertexBuffer with a specific PrimitiveType and usage specifier.

+

Creates an empty vertex buffer and sets its primitive type to type and usage to usage.

+
Parameters
+ + + +
typeType of primitive
usageUsage specifier
+
+
+ +
+
+ +

◆ VertexBuffer() [5/5]

+ +
+
+ + + + + + + + +
sf::VertexBuffer::VertexBuffer (const VertexBuffercopy)
+
+ +

Copy constructor.

+
Parameters
+ + +
copyinstance to copy
+
+
+ +
+
+ +

◆ ~VertexBuffer()

+ +
+
+ + + + + + + +
sf::VertexBuffer::~VertexBuffer ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ bind()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sf::VertexBuffer::bind (const VertexBuffervertexBuffer)
+
+static
+
+ +

Bind a vertex buffer for rendering.

+

This function is not part of the graphics API, it mustn't be used when drawing SFML entities. It must be used only if you mix sf::VertexBuffer with OpenGL code.

+
...
sf::VertexBuffer::bind(&vb1);
// draw OpenGL stuff that use vb1...
// draw OpenGL stuff that use vb2...
// draw OpenGL stuff that use no vertex buffer...
Parameters
+ + +
vertexBufferPointer to the vertex buffer to bind, can be null to use no vertex buffer
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + + + + +
bool sf::VertexBuffer::create (std::size_t vertexCount)
+
+ +

Create the vertex buffer.

+

Creates the vertex buffer and allocates enough graphics memory to hold vertexCount vertices. Any previously allocated memory is freed in the process.

+

In order to deallocate previously allocated memory pass 0 as vertexCount. Don't forget to recreate with a non-zero value when graphics memory should be allocated again.

+
Parameters
+ + +
vertexCountNumber of vertices worth of memory to allocate
+
+
+
Returns
True if creation was successful
+ +
+
+ +

◆ getNativeHandle()

+ +
+
+ + + + + + + +
unsigned int sf::VertexBuffer::getNativeHandle () const
+
+ +

Get the underlying OpenGL handle of the vertex buffer.

+

You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

+
Returns
OpenGL handle of the vertex buffer or 0 if not yet created
+ +
+
+ +

◆ getPrimitiveType()

+ +
+
+ + + + + + + +
PrimitiveType sf::VertexBuffer::getPrimitiveType () const
+
+ +

Get the type of primitives drawn by the vertex buffer.

+
Returns
Primitive type
+ +
+
+ +

◆ getUsage()

+ +
+
+ + + + + + + +
Usage sf::VertexBuffer::getUsage () const
+
+ +

Get the usage specifier of this vertex buffer.

+
Returns
Usage specifier
+ +
+
+ +

◆ getVertexCount()

+ +
+
+ + + + + + + +
std::size_t sf::VertexBuffer::getVertexCount () const
+
+ +

Return the vertex count.

+
Returns
Number of vertices in the vertex buffer
+ +
+
+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
static bool sf::VertexBuffer::isAvailable ()
+
+static
+
+ +

Tell whether or not the system supports vertex buffers.

+

This function should always be called before using the vertex buffer features. If it returns false, then any attempt to use sf::VertexBuffer will fail.

+
Returns
True if vertex buffers are supported, false otherwise
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
VertexBuffer& sf::VertexBuffer::operator= (const VertexBufferright)
+
+ +

Overload of assignment operator.

+
Parameters
+ + +
rightInstance to assign
+
+
+
Returns
Reference to self
+ +
+
+ +

◆ setPrimitiveType()

+ +
+
+ + + + + + + + +
void sf::VertexBuffer::setPrimitiveType (PrimitiveType type)
+
+ +

Set the type of primitives to draw.

+

This function defines how the vertices must be interpreted when it's time to draw them.

+

The default primitive type is sf::Points.

+
Parameters
+ + +
typeType of primitive
+
+
+ +
+
+ +

◆ setUsage()

+ +
+
+ + + + + + + + +
void sf::VertexBuffer::setUsage (Usage usage)
+
+ +

Set the usage specifier of this vertex buffer.

+

This function provides a hint about how this vertex buffer is going to be used in terms of data update frequency.

+

After changing the usage specifier, the vertex buffer has to be updated with new data for the usage specifier to take effect.

+

The default primitive type is sf::VertexBuffer::Stream.

+
Parameters
+ + +
usageUsage specifier
+
+
+ +
+
+ +

◆ swap()

+ +
+
+ + + + + + + + +
void sf::VertexBuffer::swap (VertexBufferright)
+
+ +

Swap the contents of this vertex buffer with those of another.

+
Parameters
+ + +
rightInstance to swap with
+
+
+ +
+
+ +

◆ update() [1/3]

+ +
+
+ + + + + + + + +
bool sf::VertexBuffer::update (const Vertexvertices)
+
+ +

Update the whole buffer from an array of vertices.

+

The vertex array is assumed to have the same size as the created buffer.

+

No additional check is performed on the size of the vertex array, passing invalid arguments will lead to undefined behavior.

+

This function does nothing if vertices is null or if the buffer was not previously created.

+
Parameters
+ + +
verticesArray of vertices to copy to the buffer
+
+
+
Returns
True if the update was successful
+ +
+
+ +

◆ update() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sf::VertexBuffer::update (const Vertexvertices,
std::size_t vertexCount,
unsigned int offset 
)
+
+ +

Update a part of the buffer from an array of vertices.

+

offset is specified as the number of vertices to skip from the beginning of the buffer.

+

If offset is 0 and vertexCount is equal to the size of the currently created buffer, its whole contents are replaced.

+

If offset is 0 and vertexCount is greater than the size of the currently created buffer, a new buffer is created containing the vertex data.

+

If offset is 0 and vertexCount is less than the size of the currently created buffer, only the corresponding region is updated.

+

If offset is not 0 and offset + vertexCount is greater than the size of the currently created buffer, the update fails.

+

No additional check is performed on the size of the vertex array, passing invalid arguments will lead to undefined behavior.

+
Parameters
+ + + + +
verticesArray of vertices to copy to the buffer
vertexCountNumber of vertices to copy
offsetOffset in the buffer to copy to
+
+
+
Returns
True if the update was successful
+ +
+
+ +

◆ update() [3/3]

+ +
+
+ + + + + + + + +
bool sf::VertexBuffer::update (const VertexBuffervertexBuffer)
+
+ +

Copy the contents of another buffer into this buffer.

+
Parameters
+ + +
vertexBufferVertex buffer whose contents to copy into this vertex buffer
+
+
+
Returns
True if the copy was successful
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VertexBuffer.png new file mode 100644 index 0000000000000000000000000000000000000000..aa60eb62909a2fa51849a716679ccc0fd01f2af8 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0y~yV7SD z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`sln65F{Fa=?cBFzn-v7u z+S_H`|DSY!Nzi5-$KYhCQ``!c9mHI0useC;;MdhW% zG8IqtAM>ZoiN0qOKWU5mj>O0NY?r3I6?k#d-B5Mq(P=?K8S2+Rd!6i&$oN+)A3Q0_ zWJ=uc$vKz)q}|(Bp_=o|s4h0jZuR%=Yp?Wdj!5l3y5IAT%50^ywOif=Z%R)5o3imw z?2ain_Jw90KRI>N>emZSEbF)#vWi=O_Egr)BmW{+b_shc*m--N+8Px1zS=9B({$>y z1kYcYs(CgyZ?|6WnmpGfK>Lr^Qk}HTwo6h2G<08|vv-}7^XT`t3w^;Naf^kbmVddq zIi$=+J+nFZd{9{Bd>e1q*%kp6sj9kXRbx}-{%?Dn>VJCIm$>8AyqjLUx1Oi+*RVQ% z>!dH+XG~I&Jw8R{CCf4u&*O%wo>m9TwJP7&rVFXQ-}|2DfTLQ&=?aD~&wfu?_R?$l z@yATd-v?Jo#lHAr^6LGUR<#ZCgxMuztyLQ?ZVYCEFn%5jp0zA<7hi+p#wu0` zS&%RmJon+$ImPSD8N`bmZGxFBS~VGEj!t3ln|M5W*X2L^J(itWo0GoYaq<4UtG4jj z1+RL(<r>K;0OFIG#Gu;(;C_kG{GGv@1q--XN)=9c4Iq47TAtl9Fl*~~F+ zVrHE08rULteT=+yvvW7MKDXTKRUX!S*AL~qSQq>*mw)3VuBCsjtg^bRv8PDuKA5B*|zmdwAE}4Lei_eUQYSFKa26743aAoy%^jLRU3jWp2y@f c)E%^67^Z#VDLcC<0|Nttr>mdKI;Vst0Mvq6-2eap literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode-members.html new file mode 100644 index 0000000..f8b993e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode-members.html @@ -0,0 +1,75 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::VideoMode Member List
+
+
+ +

This is the complete list of members for sf::VideoMode, including all inherited members.

+ + + + + + + + + + + + + + + +
bitsPerPixelsf::VideoMode
getDesktopMode()sf::VideoModestatic
getFullscreenModes()sf::VideoModestatic
heightsf::VideoMode
isValid() constsf::VideoMode
operator!=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
operator<(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
operator<=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
operator==(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
operator>(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
operator>=(const VideoMode &left, const VideoMode &right)sf::VideoModerelated
VideoMode()sf::VideoMode
VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel=32)sf::VideoMode
widthsf::VideoMode
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode.html new file mode 100644 index 0000000..0ccfdd8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1VideoMode.html @@ -0,0 +1,615 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

VideoMode defines a video mode (width, height, bpp) + More...

+ +

#include <VideoMode.hpp>

+ + + + + + + + + + + +

+Public Member Functions

 VideoMode ()
 Default constructor. More...
 
 VideoMode (unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel=32)
 Construct the video mode with its attributes. More...
 
bool isValid () const
 Tell whether or not the video mode is valid. More...
 
+ + + + + + + +

+Static Public Member Functions

static VideoMode getDesktopMode ()
 Get the current desktop video mode. More...
 
static const std::vector< VideoMode > & getFullscreenModes ()
 Retrieve all the video modes supported in fullscreen mode. More...
 
+ + + + + + + + + + +

+Public Attributes

unsigned int width
 Video mode width, in pixels. More...
 
unsigned int height
 Video mode height, in pixels. More...
 
unsigned int bitsPerPixel
 Video mode pixel depth, in bits per pixels. More...
 
+ + + + + + + + + + + + + + + + + + + + +

+Related Functions

(Note that these are not member functions.)

+
bool operator== (const VideoMode &left, const VideoMode &right)
 Overload of == operator to compare two video modes. More...
 
bool operator!= (const VideoMode &left, const VideoMode &right)
 Overload of != operator to compare two video modes. More...
 
bool operator< (const VideoMode &left, const VideoMode &right)
 Overload of < operator to compare video modes. More...
 
bool operator> (const VideoMode &left, const VideoMode &right)
 Overload of > operator to compare video modes. More...
 
bool operator<= (const VideoMode &left, const VideoMode &right)
 Overload of <= operator to compare video modes. More...
 
bool operator>= (const VideoMode &left, const VideoMode &right)
 Overload of >= operator to compare video modes. More...
 
+

Detailed Description

+

VideoMode defines a video mode (width, height, bpp)

+

A video mode is defined by a width and a height (in pixels) and a depth (in bits per pixel).

+

Video modes are used to setup windows (sf::Window) at creation time.

+

The main usage of video modes is for fullscreen mode: indeed you must use one of the valid video modes allowed by the OS (which are defined by what the monitor and the graphics card support), otherwise your window creation will just fail.

+

sf::VideoMode provides a static function for retrieving the list of all the video modes supported by the system: getFullscreenModes().

+

A custom video mode can also be checked directly for fullscreen compatibility with its isValid() function.

+

Additionally, sf::VideoMode provides a static function to get the mode currently used by the desktop: getDesktopMode(). This allows to build windows with the same size or pixel depth as the current resolution.

+

Usage example:

// Display the list of all the video modes available for fullscreen
std::vector<sf::VideoMode> modes = sf::VideoMode::getFullscreenModes();
for (std::size_t i = 0; i < modes.size(); ++i)
{
sf::VideoMode mode = modes[i];
std::cout << "Mode #" << i << ": "
<< mode.width << "x" << mode.height << " - "
<< mode.bitsPerPixel << " bpp" << std::endl;
}
// Create a window with the same pixel depth as the desktop
window.create(sf::VideoMode(1024, 768, desktop.bitsPerPixel), "SFML window");
+

Definition at line 41 of file VideoMode.hpp.

+

Constructor & Destructor Documentation

+ +

◆ VideoMode() [1/2]

+ +
+
+ + + + + + + +
sf::VideoMode::VideoMode ()
+
+ +

Default constructor.

+

This constructors initializes all members to 0.

+ +
+
+ +

◆ VideoMode() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
sf::VideoMode::VideoMode (unsigned int modeWidth,
unsigned int modeHeight,
unsigned int modeBitsPerPixel = 32 
)
+
+ +

Construct the video mode with its attributes.

+
Parameters
+ + + + +
modeWidthWidth in pixels
modeHeightHeight in pixels
modeBitsPerPixelPixel depths in bits per pixel
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getDesktopMode()

+ +
+
+ + + + + +
+ + + + + + + +
static VideoMode sf::VideoMode::getDesktopMode ()
+
+static
+
+ +

Get the current desktop video mode.

+
Returns
Current desktop video mode
+ +
+
+ +

◆ getFullscreenModes()

+ +
+
+ + + + + +
+ + + + + + + +
static const std::vector<VideoMode>& sf::VideoMode::getFullscreenModes ()
+
+static
+
+ +

Retrieve all the video modes supported in fullscreen mode.

+

When creating a fullscreen window, the video mode is restricted to be compatible with what the graphics driver and monitor support. This function returns the complete list of all video modes that can be used in fullscreen mode. The returned array is sorted from best to worst, so that the first element will always give the best mode (higher width, height and bits-per-pixel).

+
Returns
Array containing all the supported fullscreen modes
+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + + + +
bool sf::VideoMode::isValid () const
+
+ +

Tell whether or not the video mode is valid.

+

The validity of video modes is only relevant when using fullscreen windows; otherwise any video mode can be used with no restriction.

+
Returns
True if the video mode is valid for fullscreen mode
+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator!= (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of != operator to compare two video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if modes are different
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator< (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of < operator to compare video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if left is lesser than right
+ +
+
+ +

◆ operator<=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator<= (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of <= operator to compare video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if left is lesser or equal than right
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator== (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of == operator to compare two video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if modes are equal
+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator> (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of > operator to compare video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if left is greater than right
+ +
+
+ +

◆ operator>=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool operator>= (const VideoModeleft,
const VideoModeright 
)
+
+related
+
+ +

Overload of >= operator to compare video modes.

+
Parameters
+ + + +
leftLeft operand (a video mode)
rightRight operand (a video mode)
+
+
+
Returns
True if left is greater or equal than right
+ +
+
+

Member Data Documentation

+ +

◆ bitsPerPixel

+ +
+
+ + + + +
unsigned int sf::VideoMode::bitsPerPixel
+
+ +

Video mode pixel depth, in bits per pixels.

+ +

Definition at line 104 of file VideoMode.hpp.

+ +
+
+ +

◆ height

+ +
+
+ + + + +
unsigned int sf::VideoMode::height
+
+ +

Video mode height, in pixels.

+ +

Definition at line 103 of file VideoMode.hpp.

+ +
+
+ +

◆ width

+ +
+
+ + + + +
unsigned int sf::VideoMode::width
+
+ +

Video mode width, in pixels.

+ +

Definition at line 102 of file VideoMode.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View-members.html new file mode 100644 index 0000000..e74af51 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View-members.html @@ -0,0 +1,81 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::View Member List
+
+
+ +

This is the complete list of members for sf::View, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
getCenter() constsf::View
getInverseTransform() constsf::View
getRotation() constsf::View
getSize() constsf::View
getTransform() constsf::View
getViewport() constsf::View
move(float offsetX, float offsetY)sf::View
move(const Vector2f &offset)sf::View
reset(const FloatRect &rectangle)sf::View
rotate(float angle)sf::View
setCenter(float x, float y)sf::View
setCenter(const Vector2f &center)sf::View
setRotation(float angle)sf::View
setSize(float width, float height)sf::View
setSize(const Vector2f &size)sf::View
setViewport(const FloatRect &viewport)sf::View
View()sf::View
View(const FloatRect &rectangle)sf::Viewexplicit
View(const Vector2f &center, const Vector2f &size)sf::View
zoom(float factor)sf::View
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View.html new file mode 100644 index 0000000..0f7ea9b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1View.html @@ -0,0 +1,703 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
sf::View Class Reference
+
+
+ +

2D camera that defines what region is shown on screen + More...

+ +

#include <View.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 View ()
 Default constructor. More...
 
 View (const FloatRect &rectangle)
 Construct the view from a rectangle. More...
 
 View (const Vector2f &center, const Vector2f &size)
 Construct the view from its center and size. More...
 
void setCenter (float x, float y)
 Set the center of the view. More...
 
void setCenter (const Vector2f &center)
 Set the center of the view. More...
 
void setSize (float width, float height)
 Set the size of the view. More...
 
void setSize (const Vector2f &size)
 Set the size of the view. More...
 
void setRotation (float angle)
 Set the orientation of the view. More...
 
void setViewport (const FloatRect &viewport)
 Set the target viewport. More...
 
void reset (const FloatRect &rectangle)
 Reset the view to the given rectangle. More...
 
const Vector2fgetCenter () const
 Get the center of the view. More...
 
const Vector2fgetSize () const
 Get the size of the view. More...
 
float getRotation () const
 Get the current orientation of the view. More...
 
const FloatRectgetViewport () const
 Get the target viewport rectangle of the view. More...
 
void move (float offsetX, float offsetY)
 Move the view relatively to its current position. More...
 
void move (const Vector2f &offset)
 Move the view relatively to its current position. More...
 
void rotate (float angle)
 Rotate the view relatively to its current orientation. More...
 
void zoom (float factor)
 Resize the view rectangle relatively to its current size. More...
 
const TransformgetTransform () const
 Get the projection transform of the view. More...
 
const TransformgetInverseTransform () const
 Get the inverse projection transform of the view. More...
 
+

Detailed Description

+

2D camera that defines what region is shown on screen

+

sf::View defines a camera in the 2D scene.

+

This is a very powerful concept: you can scroll, rotate or zoom the entire scene without altering the way that your drawable objects are drawn.

+

A view is composed of a source rectangle, which defines what part of the 2D scene is shown, and a target viewport, which defines where the contents of the source rectangle will be displayed on the render target (window or texture).

+

The viewport allows to map the scene to a custom part of the render target, and can be used for split-screen or for displaying a minimap, for example. If the source rectangle doesn't have the same size as the viewport, its contents will be stretched to fit in.

+

To apply a view, you have to assign it to the render target. Then, objects drawn in this render target will be affected by the view until you use another view.

+

Usage example:

sf::View view;
// Initialize the view to a rectangle located at (100, 100) and with a size of 400x200
view.reset(sf::FloatRect(100, 100, 400, 200));
// Rotate it by 45 degrees
view.rotate(45);
// Set its target viewport to be half of the window
view.setViewport(sf::FloatRect(0.f, 0.f, 0.5f, 1.f));
// Apply it
window.setView(view);
// Render stuff
window.draw(someSprite);
// Set the default view back
window.setView(window.getDefaultView());
// Render stuff not affected by the view
window.draw(someText);

See also the note on coordinates and undistorted rendering in sf::Transformable.

+
See also
sf::RenderWindow, sf::RenderTexture
+ +

Definition at line 43 of file View.hpp.

+

Constructor & Destructor Documentation

+ +

◆ View() [1/3]

+ +
+
+ + + + + + + +
sf::View::View ()
+
+ +

Default constructor.

+

This constructor creates a default view of (0, 0, 1000, 1000)

+ +
+
+ +

◆ View() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
sf::View::View (const FloatRectrectangle)
+
+explicit
+
+ +

Construct the view from a rectangle.

+
Parameters
+ + +
rectangleRectangle defining the zone to display
+
+
+ +
+
+ +

◆ View() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
sf::View::View (const Vector2fcenter,
const Vector2fsize 
)
+
+ +

Construct the view from its center and size.

+
Parameters
+ + + +
centerCenter of the zone to display
sizeSize of zone to display
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getCenter()

+ +
+
+ + + + + + + +
const Vector2f& sf::View::getCenter () const
+
+ +

Get the center of the view.

+
Returns
Center of the view
+
See also
getSize, setCenter
+ +
+
+ +

◆ getInverseTransform()

+ +
+
+ + + + + + + +
const Transform& sf::View::getInverseTransform () const
+
+ +

Get the inverse projection transform of the view.

+

This function is meant for internal use only.

+
Returns
Inverse of the projection transform defining the view
+
See also
getTransform
+ +
+
+ +

◆ getRotation()

+ +
+
+ + + + + + + +
float sf::View::getRotation () const
+
+ +

Get the current orientation of the view.

+
Returns
Rotation angle of the view, in degrees
+
See also
setRotation
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
const Vector2f& sf::View::getSize () const
+
+ +

Get the size of the view.

+
Returns
Size of the view
+
See also
getCenter, setSize
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + + + +
const Transform& sf::View::getTransform () const
+
+ +

Get the projection transform of the view.

+

This function is meant for internal use only.

+
Returns
Projection transform defining the view
+
See also
getInverseTransform
+ +
+
+ +

◆ getViewport()

+ +
+
+ + + + + + + +
const FloatRect& sf::View::getViewport () const
+
+ +

Get the target viewport rectangle of the view.

+
Returns
Viewport rectangle, expressed as a factor of the target size
+
See also
setViewport
+ +
+
+ +

◆ move() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::View::move (float offsetX,
float offsetY 
)
+
+ +

Move the view relatively to its current position.

+
Parameters
+ + + +
offsetXX coordinate of the move offset
offsetYY coordinate of the move offset
+
+
+
See also
setCenter, rotate, zoom
+ +
+
+ +

◆ move() [2/2]

+ +
+
+ + + + + + + + +
void sf::View::move (const Vector2foffset)
+
+ +

Move the view relatively to its current position.

+
Parameters
+ + +
offsetMove offset
+
+
+
See also
setCenter, rotate, zoom
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + + + + +
void sf::View::reset (const FloatRectrectangle)
+
+ +

Reset the view to the given rectangle.

+

Note that this function resets the rotation angle to 0.

+
Parameters
+ + +
rectangleRectangle defining the zone to display
+
+
+
See also
setCenter, setSize, setRotation
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + + + + +
void sf::View::rotate (float angle)
+
+ +

Rotate the view relatively to its current orientation.

+
Parameters
+ + +
angleAngle to rotate, in degrees
+
+
+
See also
setRotation, move, zoom
+ +
+
+ +

◆ setCenter() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::View::setCenter (float x,
float y 
)
+
+ +

Set the center of the view.

+
Parameters
+ + + +
xX coordinate of the new center
yY coordinate of the new center
+
+
+
See also
setSize, getCenter
+ +
+
+ +

◆ setCenter() [2/2]

+ +
+
+ + + + + + + + +
void sf::View::setCenter (const Vector2fcenter)
+
+ +

Set the center of the view.

+
Parameters
+ + +
centerNew center
+
+
+
See also
setSize, getCenter
+ +
+
+ +

◆ setRotation()

+ +
+
+ + + + + + + + +
void sf::View::setRotation (float angle)
+
+ +

Set the orientation of the view.

+

The default rotation of a view is 0 degree.

+
Parameters
+ + +
angleNew angle, in degrees
+
+
+
See also
getRotation
+ +
+
+ +

◆ setSize() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::View::setSize (float width,
float height 
)
+
+ +

Set the size of the view.

+
Parameters
+ + + +
widthNew width of the view
heightNew height of the view
+
+
+
See also
setCenter, getCenter
+ +
+
+ +

◆ setSize() [2/2]

+ +
+
+ + + + + + + + +
void sf::View::setSize (const Vector2fsize)
+
+ +

Set the size of the view.

+
Parameters
+ + +
sizeNew size
+
+
+
See also
setCenter, getCenter
+ +
+
+ +

◆ setViewport()

+ +
+
+ + + + + + + + +
void sf::View::setViewport (const FloatRectviewport)
+
+ +

Set the target viewport.

+

The viewport is the rectangle into which the contents of the view are displayed, expressed as a factor (between 0 and 1) of the size of the RenderTarget to which the view is applied. For example, a view which takes the left side of the target would be defined with View.setViewport(sf::FloatRect(0, 0, 0.5, 1)). By default, a view has a viewport which covers the entire target.

+
Parameters
+ + +
viewportNew viewport rectangle
+
+
+
See also
getViewport
+ +
+
+ +

◆ zoom()

+ +
+
+ + + + + + + + +
void sf::View::zoom (float factor)
+
+ +

Resize the view rectangle relatively to its current size.

+

Resizing the view simulates a zoom, as the zone displayed on screen grows or shrinks. factor is a multiplier:

    +
  • 1 keeps the size unchanged
  • +
  • > 1 makes the view bigger (objects appear smaller)
  • +
  • < 1 makes the view smaller (objects appear bigger)
  • +
+
Parameters
+ + +
factorZoom factor to apply
+
+
+
See also
setSize, move, rotate
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window-members.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window-members.html new file mode 100644 index 0000000..07401b2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window-members.html @@ -0,0 +1,98 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
sf::Window Member List
+
+
+ +

This is the complete list of members for sf::Window, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
close()sf::Window
create(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
create(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Window
display()sf::Window
getPosition() constsf::Window
getSettings() constsf::Window
getSize() constsf::Window
getSystemHandle() constsf::Window
GlResource()sf::GlResourceprivate
hasFocus() constsf::Window
isOpen() constsf::Window
NonCopyable()sf::NonCopyableinlineprivate
onCreate()sf::Windowprotectedvirtual
onResize()sf::Windowprotectedvirtual
pollEvent(Event &event)sf::Window
registerContextDestroyCallback(ContextDestroyCallback callback, void *arg)sf::GlResourceprivatestatic
requestFocus()sf::Window
setActive(bool active=true) constsf::Window
setFramerateLimit(unsigned int limit)sf::Window
setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)sf::Window
setJoystickThreshold(float threshold)sf::Window
setKeyRepeatEnabled(bool enabled)sf::Window
setMouseCursor(const Cursor &cursor)sf::Window
setMouseCursorGrabbed(bool grabbed)sf::Window
setMouseCursorVisible(bool visible)sf::Window
setPosition(const Vector2i &position)sf::Window
setSize(const Vector2u &size)sf::Window
setTitle(const String &title)sf::Window
setVerticalSyncEnabled(bool enabled)sf::Window
setVisible(bool visible)sf::Window
waitEvent(Event &event)sf::Window
Window()sf::Window
Window(VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())sf::Window
Window(WindowHandle handle, const ContextSettings &settings=ContextSettings())sf::Windowexplicit
~GlResource()sf::GlResourceprivate
~NonCopyable()sf::NonCopyableinlineprivate
~Window()sf::Windowvirtual
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.html b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.html new file mode 100644 index 0000000..7e03d80 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.html @@ -0,0 +1,1130 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + + +
+ +

Window that serves as a target for OpenGL rendering. + More...

+ +

#include <Window.hpp>

+
+Inheritance diagram for sf::Window:
+
+
+ + +sf::GlResource +sf::NonCopyable +sf::RenderWindow + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Window ()
 Default constructor. More...
 
 Window (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
 Construct a new window. More...
 
 Window (WindowHandle handle, const ContextSettings &settings=ContextSettings())
 Construct the window from an existing control. More...
 
virtual ~Window ()
 Destructor. More...
 
void create (VideoMode mode, const String &title, Uint32 style=Style::Default, const ContextSettings &settings=ContextSettings())
 Create (or recreate) the window. More...
 
void create (WindowHandle handle, const ContextSettings &settings=ContextSettings())
 Create (or recreate) the window from an existing control. More...
 
void close ()
 Close the window and destroy all the attached resources. More...
 
bool isOpen () const
 Tell whether or not the window is open. More...
 
const ContextSettingsgetSettings () const
 Get the settings of the OpenGL context of the window. More...
 
bool pollEvent (Event &event)
 Pop the event on top of the event queue, if any, and return it. More...
 
bool waitEvent (Event &event)
 Wait for an event and return it. More...
 
Vector2i getPosition () const
 Get the position of the window. More...
 
void setPosition (const Vector2i &position)
 Change the position of the window on screen. More...
 
Vector2u getSize () const
 Get the size of the rendering region of the window. More...
 
void setSize (const Vector2u &size)
 Change the size of the rendering region of the window. More...
 
void setTitle (const String &title)
 Change the title of the window. More...
 
void setIcon (unsigned int width, unsigned int height, const Uint8 *pixels)
 Change the window's icon. More...
 
void setVisible (bool visible)
 Show or hide the window. More...
 
void setVerticalSyncEnabled (bool enabled)
 Enable or disable vertical synchronization. More...
 
void setMouseCursorVisible (bool visible)
 Show or hide the mouse cursor. More...
 
void setMouseCursorGrabbed (bool grabbed)
 Grab or release the mouse cursor. More...
 
void setMouseCursor (const Cursor &cursor)
 Set the displayed cursor to a native system cursor. More...
 
void setKeyRepeatEnabled (bool enabled)
 Enable or disable automatic key-repeat. More...
 
void setFramerateLimit (unsigned int limit)
 Limit the framerate to a maximum fixed frequency. More...
 
void setJoystickThreshold (float threshold)
 Change the joystick threshold. More...
 
bool setActive (bool active=true) const
 Activate or deactivate the window as the current target for OpenGL rendering. More...
 
void requestFocus ()
 Request the current window to be made the active foreground window. More...
 
bool hasFocus () const
 Check whether the window has the input focus. More...
 
void display ()
 Display on screen what has been rendered to the window so far. More...
 
WindowHandle getSystemHandle () const
 Get the OS-specific handle of the window. More...
 
+ + + + + + + +

+Protected Member Functions

virtual void onCreate ()
 Function called after the window has been created. More...
 
virtual void onResize ()
 Function called after the window has been resized. More...
 
+ + + + +

+Static Private Member Functions

static void registerContextDestroyCallback (ContextDestroyCallback callback, void *arg)
 Register a function to be called when a context is destroyed. More...
 
+

Detailed Description

+

Window that serves as a target for OpenGL rendering.

+

sf::Window is the main class of the Window module.

+

It defines an OS window that is able to receive an OpenGL rendering.

+

A sf::Window can create its own new window, or be embedded into an already existing control using the create(handle) function. This can be useful for embedding an OpenGL rendering area into a view which is part of a bigger GUI with existing windows, controls, etc. It can also serve as embedding an OpenGL rendering area into a window created by another (probably richer) GUI library like Qt or wxWidgets.

+

The sf::Window class provides a simple interface for manipulating the window: move, resize, show/hide, control mouse cursor, etc. It also provides event handling through its pollEvent() and waitEvent() functions.

+

Note that OpenGL experts can pass their own parameters (antialiasing level, bits for the depth and stencil buffers, etc.) to the OpenGL context attached to the window, with the sf::ContextSettings structure which is passed as an optional argument when creating the window.

+

On dual-graphics systems consisting of a low-power integrated GPU and a powerful discrete GPU, the driver picks which GPU will run an SFML application. In order to inform the driver that an SFML application can benefit from being run on the more powerful discrete GPU, SFML_DEFINE_DISCRETE_GPU_PREFERENCE can be placed in a source file that is compiled and linked into the final application. The macro should be placed outside of any scopes in the global namespace.

+

Usage example:

// Declare and create a new window
sf::Window window(sf::VideoMode(800, 600), "SFML window");
// Limit the framerate to 60 frames per second (this step is optional)
window.setFramerateLimit(60);
// The main loop - ends as soon as the window is closed
while (window.isOpen())
{
// Event processing
sf::Event event;
while (window.pollEvent(event))
{
// Request for closing the window
if (event.type == sf::Event::Closed)
window.close();
}
// Activate the window for OpenGL rendering
window.setActive();
// OpenGL drawing commands go here...
// End the current frame and display its contents on screen
window.display();
}
+

Definition at line 58 of file Window/Window.hpp.

+

Constructor & Destructor Documentation

+ +

◆ Window() [1/3]

+ +
+
+ + + + + + + +
sf::Window::Window ()
+
+ +

Default constructor.

+

This constructor doesn't actually create the window, use the other constructors or call create() to do so.

+ +
+
+ +

◆ Window() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
sf::Window::Window (VideoMode mode,
const Stringtitle,
Uint32 style = Style::Default,
const ContextSettingssettings = ContextSettings() 
)
+
+ +

Construct a new window.

+

This constructor creates the window with the size and pixel depth defined in mode. An optional style can be passed to customize the look and behavior of the window (borders, title bar, resizable, closable, ...). If style contains Style::Fullscreen, then mode must be a valid video mode.

+

The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + + + +
modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
titleTitle of the window
styleWindow style, a bitwise OR combination of sf::Style enumerators
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ Window() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
sf::Window::Window (WindowHandle handle,
const ContextSettingssettings = ContextSettings() 
)
+
+explicit
+
+ +

Construct the window from an existing control.

+

Use this constructor if you want to create an OpenGL rendering area into an already existing control.

+

The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + +
handlePlatform-specific handle of the control
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ ~Window()

+ +
+
+ + + + + +
+ + + + + + + +
virtual sf::Window::~Window ()
+
+virtual
+
+ +

Destructor.

+

Closes the window and frees all the resources attached to it.

+ +
+
+

Member Function Documentation

+ +

◆ close()

+ +
+
+ + + + + + + +
void sf::Window::close ()
+
+ +

Close the window and destroy all the attached resources.

+

After calling this function, the sf::Window instance remains valid and you can call create() to recreate the window. All other functions such as pollEvent() or display() will still work (i.e. you don't have to test isOpen() every time), and will have no effect on closed windows.

+ +
+
+ +

◆ create() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Window::create (VideoMode mode,
const Stringtitle,
Uint32 style = Style::Default,
const ContextSettingssettings = ContextSettings() 
)
+
+ +

Create (or recreate) the window.

+

If the window was already created, it closes it first. If style contains Style::Fullscreen, then mode must be a valid video mode.

+

The fourth parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + + + +
modeVideo mode to use (defines the width, height and depth of the rendering area of the window)
titleTitle of the window
styleWindow style, a bitwise OR combination of sf::Style enumerators
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sf::Window::create (WindowHandle handle,
const ContextSettingssettings = ContextSettings() 
)
+
+ +

Create (or recreate) the window from an existing control.

+

Use this function if you want to create an OpenGL rendering area into an already existing control. If the window was already created, it closes it first.

+

The second parameter is an optional structure specifying advanced OpenGL context settings such as antialiasing, depth-buffer bits, etc.

+
Parameters
+ + + +
handlePlatform-specific handle of the control
settingsAdditional settings for the underlying OpenGL context
+
+
+ +
+
+ +

◆ display()

+ +
+
+ + + + + + + +
void sf::Window::display ()
+
+ +

Display on screen what has been rendered to the window so far.

+

This function is typically called after all OpenGL rendering has been done for the current frame, in order to show it on screen.

+ +
+
+ +

◆ getPosition()

+ +
+
+ + + + + + + +
Vector2i sf::Window::getPosition () const
+
+ +

Get the position of the window.

+
Returns
Position of the window, in pixels
+
See also
setPosition
+ +
+
+ +

◆ getSettings()

+ +
+
+ + + + + + + +
const ContextSettings& sf::Window::getSettings () const
+
+ +

Get the settings of the OpenGL context of the window.

+

Note that these settings may be different from what was passed to the constructor or the create() function, if one or more settings were not supported. In this case, SFML chose the closest match.

+
Returns
Structure containing the OpenGL context settings
+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
Vector2u sf::Window::getSize () const
+
+ +

Get the size of the rendering region of the window.

+

The size doesn't include the titlebar and borders of the window.

+
Returns
Size in pixels
+
See also
setSize
+ +
+
+ +

◆ getSystemHandle()

+ +
+
+ + + + + + + +
WindowHandle sf::Window::getSystemHandle () const
+
+ +

Get the OS-specific handle of the window.

+

The type of the returned handle is sf::WindowHandle, which is a typedef to the handle type defined by the OS. You shouldn't need to use this function, unless you have very specific stuff to implement that SFML doesn't support, or implement a temporary workaround until a bug is fixed.

+
Returns
System handle of the window
+ +
+
+ +

◆ hasFocus()

+ +
+
+ + + + + + + +
bool sf::Window::hasFocus () const
+
+ +

Check whether the window has the input focus.

+

At any given time, only one window may have the input focus to receive input events such as keystrokes or most mouse events.

+
Returns
True if window has focus, false otherwise
+
See also
requestFocus
+ +
+
+ +

◆ isOpen()

+ +
+
+ + + + + + + +
bool sf::Window::isOpen () const
+
+ +

Tell whether or not the window is open.

+

This function returns whether or not the window exists. Note that a hidden window (setVisible(false)) is open (therefore this function would return true).

+
Returns
True if the window is open, false if it has been closed
+ +
+
+ +

◆ onCreate()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::Window::onCreate ()
+
+protectedvirtual
+
+ +

Function called after the window has been created.

+

This function is called so that derived classes can perform their own specific initialization as soon as the window is created.

+ +

Reimplemented in sf::RenderWindow.

+ +
+
+ +

◆ onResize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void sf::Window::onResize ()
+
+protectedvirtual
+
+ +

Function called after the window has been resized.

+

This function is called so that derived classes can perform custom actions when the size of the window changes.

+ +

Reimplemented in sf::RenderWindow.

+ +
+
+ +

◆ pollEvent()

+ +
+
+ + + + + + + + +
bool sf::Window::pollEvent (Eventevent)
+
+ +

Pop the event on top of the event queue, if any, and return it.

+

This function is not blocking: if there's no pending event then it will return false and leave event unmodified. Note that more than one event may be present in the event queue, thus you should always call this function in a loop to make sure that you process every pending event.

sf::Event event;
while (window.pollEvent(event))
{
// process event...
}
Parameters
+ + +
eventEvent to be returned
+
+
+
Returns
True if an event was returned, or false if the event queue was empty
+
See also
waitEvent
+ +
+
+ +

◆ requestFocus()

+ +
+
+ + + + + + + +
void sf::Window::requestFocus ()
+
+ +

Request the current window to be made the active foreground window.

+

At any given time, only one window may have the input focus to receive input events such as keystrokes or mouse events. If a window requests focus, it only hints to the operating system, that it would like to be focused. The operating system is free to deny the request. This is not to be confused with setActive().

+
See also
hasFocus
+ +
+
+ +

◆ setActive()

+ +
+
+ + + + + + + + +
bool sf::Window::setActive (bool active = true) const
+
+ +

Activate or deactivate the window as the current target for OpenGL rendering.

+

A window is active only on the current thread, if you want to make it active on another thread you have to deactivate it on the previous thread first if it was active. Only one window can be active on a thread at a time, thus the window previously active (if any) automatically gets deactivated. This is not to be confused with requestFocus().

+
Parameters
+ + +
activeTrue to activate, false to deactivate
+
+
+
Returns
True if operation was successful, false otherwise
+ +
+
+ +

◆ setFramerateLimit()

+ +
+
+ + + + + + + + +
void sf::Window::setFramerateLimit (unsigned int limit)
+
+ +

Limit the framerate to a maximum fixed frequency.

+

If a limit is set, the window will use a small delay after each call to display() to ensure that the current frame lasted long enough to match the framerate limit. SFML will try to match the given limit as much as it can, but since it internally uses sf::sleep, whose precision depends on the underlying OS, the results may be a little unprecise as well (for example, you can get 65 FPS when requesting 60).

+
Parameters
+ + +
limitFramerate limit, in frames per seconds (use 0 to disable limit)
+
+
+ +
+
+ +

◆ setIcon()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sf::Window::setIcon (unsigned int width,
unsigned int height,
const Uint8 * pixels 
)
+
+ +

Change the window's icon.

+

pixels must be an array of width x height pixels in 32-bits RGBA format.

+

The OS default icon is used by default.

+
Parameters
+ + + + +
widthIcon's width, in pixels
heightIcon's height, in pixels
pixelsPointer to the array of pixels in memory. The pixels are copied, so you need not keep the source alive after calling this function.
+
+
+
See also
setTitle
+ +
+
+ +

◆ setJoystickThreshold()

+ +
+
+ + + + + + + + +
void sf::Window::setJoystickThreshold (float threshold)
+
+ +

Change the joystick threshold.

+

The joystick threshold is the value below which no JoystickMoved event will be generated.

+

The threshold value is 0.1 by default.

+
Parameters
+ + +
thresholdNew threshold, in the range [0, 100]
+
+
+ +
+
+ +

◆ setKeyRepeatEnabled()

+ +
+
+ + + + + + + + +
void sf::Window::setKeyRepeatEnabled (bool enabled)
+
+ +

Enable or disable automatic key-repeat.

+

If key repeat is enabled, you will receive repeated KeyPressed events while keeping a key pressed. If it is disabled, you will only get a single event when the key is pressed.

+

Key repeat is enabled by default.

+
Parameters
+ + +
enabledTrue to enable, false to disable
+
+
+ +
+
+ +

◆ setMouseCursor()

+ +
+
+ + + + + + + + +
void sf::Window::setMouseCursor (const Cursorcursor)
+
+ +

Set the displayed cursor to a native system cursor.

+

Upon window creation, the arrow cursor is used by default.

+
Warning
The cursor must not be destroyed while in use by the window.
+
+Features related to Cursor are not supported on iOS and Android.
+
Parameters
+ + +
cursorNative system cursor type to display
+
+
+
See also
sf::Cursor::loadFromSystem
+
+sf::Cursor::loadFromPixels
+ +
+
+ +

◆ setMouseCursorGrabbed()

+ +
+
+ + + + + + + + +
void sf::Window::setMouseCursorGrabbed (bool grabbed)
+
+ +

Grab or release the mouse cursor.

+

If set, grabs the mouse cursor inside this window's client area so it may no longer be moved outside its bounds. Note that grabbing is only active while the window has focus.

+
Parameters
+ + +
grabbedTrue to enable, false to disable
+
+
+ +
+
+ +

◆ setMouseCursorVisible()

+ +
+
+ + + + + + + + +
void sf::Window::setMouseCursorVisible (bool visible)
+
+ +

Show or hide the mouse cursor.

+

The mouse cursor is visible by default.

+
Parameters
+ + +
visibleTrue to show the mouse cursor, false to hide it
+
+
+ +
+
+ +

◆ setPosition()

+ +
+
+ + + + + + + + +
void sf::Window::setPosition (const Vector2iposition)
+
+ +

Change the position of the window on screen.

+

This function only works for top-level windows (i.e. it will be ignored for windows created from the handle of a child window/control).

+
Parameters
+ + +
positionNew position, in pixels
+
+
+
See also
getPosition
+ +
+
+ +

◆ setSize()

+ +
+
+ + + + + + + + +
void sf::Window::setSize (const Vector2usize)
+
+ +

Change the size of the rendering region of the window.

+
Parameters
+ + +
sizeNew size, in pixels
+
+
+
See also
getSize
+ +
+
+ +

◆ setTitle()

+ +
+
+ + + + + + + + +
void sf::Window::setTitle (const Stringtitle)
+
+ +

Change the title of the window.

+
Parameters
+ + +
titleNew title
+
+
+
See also
setIcon
+ +
+
+ +

◆ setVerticalSyncEnabled()

+ +
+
+ + + + + + + + +
void sf::Window::setVerticalSyncEnabled (bool enabled)
+
+ +

Enable or disable vertical synchronization.

+

Activating vertical synchronization will limit the number of frames displayed to the refresh rate of the monitor. This can avoid some visual artifacts, and limit the framerate to a good value (but not constant across different computers).

+

Vertical synchronization is disabled by default.

+
Parameters
+ + +
enabledTrue to enable v-sync, false to deactivate it
+
+
+ +
+
+ +

◆ setVisible()

+ +
+
+ + + + + + + + +
void sf::Window::setVisible (bool visible)
+
+ +

Show or hide the window.

+

The window is shown by default.

+
Parameters
+ + +
visibleTrue to show the window, false to hide it
+
+
+ +
+
+ +

◆ waitEvent()

+ +
+
+ + + + + + + + +
bool sf::Window::waitEvent (Eventevent)
+
+ +

Wait for an event and return it.

+

This function is blocking: if there's no pending event then it will wait until an event is received. After this function returns (and no error occurred), the event object is always valid and filled properly. This function is typically used when you have a thread that is dedicated to events handling: you want to make this thread sleep as long as no new event is received.

sf::Event event;
if (window.waitEvent(event))
{
// process event...
}
Parameters
+ + +
eventEvent to be returned
+
+
+
Returns
False if any error occurred
+
See also
pollEvent
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.png b/SQCSim2021/external/sfml251-32/doc/html/classsf_1_1Window.png new file mode 100644 index 0000000000000000000000000000000000000000..75c9ab37d890015916fcc63b3c35ca461995a338 GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0y~yV0gp8z|g_L%)r2KIpcd40|SFZfKQ0)|Ns9P7#Lo> z`C8h4XaWNR0~jATaDcV*jywYc14l`aUogXe2)KGG#E5}`xzp3dF{Fa=?cBH9HYo_W zZ9l)|+~4?5vt?cPy@_}|m1o&iKNlu5=Ew18&dhT9F=M7F>*OVEM>b8mA~1dGlFJ2= zo>ubH=h|Nu5tTPDe|9NM-*f%v5VJ4;s@L|ECa|6Uyy@n=oGYIK=lE`4q_X$4@y&|H z*Uqvt4{C4vY;p0^(N=>ipKAWbGVR~+cfVMx?9HSr7w%uGmQZoASi5eUuX@0#Jj0$v zGf%4dZ=b#N|01tT-`1Xj;LFRR9gYgla#e7-bi*TlZl&lZQ- z7Trt=?RK!8s{74*=cm~vY4c8B+jMer?i~G(+M8Z)^whr086q5VCtESvrdBS})9Z$B zz|j@QQy(kG**4YBznLO0Z@D>gQPul1$0E1yoAUJInUwzdH9+RGE8n^Y=9>dtH7uO<7`VHPQCTt`}{3yEe(=+L<+~4Ecr3KX~4@%Xxk)`#mG~_d@qcd-;E8-u~vyugYy8 z;Jmkrq3xhD_XTCS$OgHOCz!sRh?uzd?t@^48s55B3{^*vr8?Zj7P#ANVz7NQk@dyI z^*wJ)e1n4->|9?Tj1^nJs>fX*q{n@sX+JwZXURUjCI72jAKcm$-RvROu`l+-Im6z2 zJ((%XRiAvn@BVc0$9qLF@nus_>1Au)$(?mycedG#+@_27mRekN__FtlnVj3U8I=?6 zPmi6>yx`c^^KXi8+L+pY-TBWfZm#wwPqTk%kq!TQPcv;fkjm(HD3vkl!6pXvhnpC5 zXDrLi;ySSXBeMaQ^2vXHcv7qDJFO#oD0%-&<3*bJ}@b{rT>+SJ%GqX>%V- zuo|EEcg@%P%=`V(Ph)1gZo8%z+oyeEU2(5>q3;UcW%IY)&n)-6St6~UZf4bYG&Odj z#)0bTZ(ZWkq|?*OZgvFfIRDu;^@rC@o%zRZ?~r;>V*O;d-R?D~3wIhvpIT<9733Fd zmcPBMc5Ut)wG|V3oxQv^eeBCwdUt7x>Pl8U?h8!Qr!JXX5ZNFGN)|1kz&f)=li~em a{yzpTOFw<-InBVpz~JfX=d#Wzp$P!xQTDn3 literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/closed.png b/SQCSim2021/external/sfml251-32/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?yggkULn;{G-p%E8P~>R4 z=$<|EB$N38-2}DbmnFr_%O)K7`0vvPK}LtC*|iL-j2e1dIRjJ=#-IMT-)|GIo|S=1 k_R{V{v-v8NIIqptTqq(?amn;60|Nttr>mdKI;Vst0N5uiMgRZ+ literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/deprecated.html b/SQCSim2021/external/sfml251-32/doc/html/deprecated.html new file mode 100644 index 0000000..1868eae --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/deprecated.html @@ -0,0 +1,94 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Deprecated List
+
+
+
+
Class sf::Event::MouseWheelEvent
+
This event is deprecated and potentially inaccurate. Use MouseWheelScrollEvent instead.
+
Member sf::Keyboard::BackSlash
+
Use Backslash instead
+
Member sf::Keyboard::BackSpace
+
Use Backspace instead
+
Member sf::Keyboard::Dash
+
Use Hyphen instead
+
Member sf::Keyboard::Return
+
Use Enter instead
+
Member sf::Keyboard::SemiColon
+
Use Semicolon instead
+
Member sf::LinesStrip
+
Use LineStrip instead
+
Member sf::RenderTexture::create (unsigned int width, unsigned int height, bool depthBuffer)
+
Use create(unsigned int, unsigned int, const ContextSettings&) instead.
+
Member sf::RenderWindow::capture () const
+
Use a sf::Texture and its sf::Texture::update(const Window&) function and copy its contents into an sf::Image instead.
+
Member sf::Shader::setParameter (const std::string &name, const Color &color)
+
Use setUniform(const std::string&, const Glsl::Vec4&) instead.
+
Member sf::Shader::setParameter (const std::string &name, CurrentTextureType)
+
Use setUniform(const std::string&, CurrentTextureType) instead.
+
Member sf::Shader::setParameter (const std::string &name, const Vector2f &vector)
+
Use setUniform(const std::string&, const Glsl::Vec2&) instead.
+
Member sf::Shader::setParameter (const std::string &name, const Transform &transform)
+
Use setUniform(const std::string&, const Glsl::Mat4&) instead.
+
Member sf::Shader::setParameter (const std::string &name, float x, float y, float z)
+
Use setUniform(const std::string&, const Glsl::Vec3&) instead.
+
Member sf::Shader::setParameter (const std::string &name, float x)
+
Use setUniform(const std::string&, float) instead.
+
Member sf::Shader::setParameter (const std::string &name, float x, float y)
+
Use setUniform(const std::string&, const Glsl::Vec2&) instead.
+
Member sf::Shader::setParameter (const std::string &name, const Texture &texture)
+
Use setUniform(const std::string&, const Texture&) instead.
+
Member sf::Shader::setParameter (const std::string &name, const Vector3f &vector)
+
Use setUniform(const std::string&, const Glsl::Vec3&) instead.
+
Member sf::Shader::setParameter (const std::string &name, float x, float y, float z, float w)
+
Use setUniform(const std::string&, const Glsl::Vec4&) instead.
+
Member sf::Text::getColor () const
+
There is now fill and outline colors instead of a single global color. Use getFillColor() or getOutlineColor() instead.
+
Member sf::Text::setColor (const Color &color)
+
There is now fill and outline colors instead of a single global color. Use setFillColor() or setOutlineColor() instead.
+
Member sf::TrianglesFan
+
Use TriangleFan instead
+
Member sf::TrianglesStrip
+
Use TriangleStrip instead
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html b/SQCSim2021/external/sfml251-32/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html new file mode 100644 index 0000000..50ac228 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_5cf786e58cbf7297a26339ae6e44357c.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Window Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html b/SQCSim2021/external/sfml251-32/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html new file mode 100644 index 0000000..6c34f0e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_83d50c0b1f1eceb6f182949162e90861.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
System Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_89e9fb32471ae291b179a889144513db.html b/SQCSim2021/external/sfml251-32/doc/html/dir_89e9fb32471ae291b179a889144513db.html new file mode 100644 index 0000000..1cfadfe --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_89e9fb32471ae291b179a889144513db.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Network Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html b/SQCSim2021/external/sfml251-32/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html new file mode 100644 index 0000000..60f4465 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SFML Directory Reference
+
+
+ + +

+Directories

+ + + + +

+Files

file  GpuPreference.hpp [code]
 Headers.
 
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/SQCSim2021/external/sfml251-32/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..3eed7dd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,60 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
include Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html b/SQCSim2021/external/sfml251-32/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html new file mode 100644 index 0000000..172140c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_dd49ddb3ba8035e4a328f8c5f31cda7e.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Audio Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_e68e8157741866f444e17edd764ebbae.html b/SQCSim2021/external/sfml251-32/doc/html/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..66ad8e9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
doc Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html b/SQCSim2021/external/sfml251-32/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html new file mode 100644 index 0000000..96ea9a1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dir_e71ec51a9abd604c65f6abb639f6ea75.html @@ -0,0 +1,56 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Graphics Directory Reference
+
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/doc.png b/SQCSim2021/external/sfml251-32/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 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 literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/dynsections.js b/SQCSim2021/external/sfml251-32/doc/html/dynsections.js new file mode 100644 index 0000000..537e3e4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 AlResource.hpp
 Audio.hpp
 BlendMode.hpp
 CircleShape.hpp
 Clipboard.hpp
 Clock.hpp
 Color.hpp
 Config.hpp
 Context.hpp
 ContextSettings.hpp
 ConvexShape.hpp
 Cursor.hpp
 Drawable.hpp
 Err.hpp
 Event.hpp
 Audio/Export.hpp
 Graphics/Export.hpp
 Network/Export.hpp
 System/Export.hpp
 Window/Export.hpp
 FileInputStream.hpp
 Font.hpp
 Ftp.hpp
 GlResource.hpp
 Glsl.hpp
 Glyph.hpp
 GpuPreference.hppHeaders
 Graphics.hpp
 Http.hpp
 Image.hpp
 InputSoundFile.hpp
 InputStream.hpp
 IpAddress.hpp
 Joystick.hpp
 Keyboard.hpp
 Listener.hpp
 Lock.hpp
 Main.hpp
 mainpage.hpp
 MemoryInputStream.hpp
 Mouse.hpp
 Music.hpp
 Mutex.hpp
 NativeActivity.hpp
 Network.hpp
 NonCopyable.hpp
 OpenGL.hpp
 OutputSoundFile.hpp
 Packet.hpp
 PrimitiveType.hpp
 Rect.hpp
 RectangleShape.hpp
 RenderStates.hpp
 RenderTarget.hpp
 RenderTexture.hpp
 RenderWindow.hpp
 Sensor.hpp
 Shader.hpp
 Shape.hpp
 Sleep.hpp
 Socket.hpp
 SocketHandle.hpp
 SocketSelector.hpp
 Sound.hpp
 SoundBuffer.hpp
 SoundBufferRecorder.hpp
 SoundFileFactory.hpp
 SoundFileReader.hpp
 SoundFileWriter.hpp
 SoundRecorder.hpp
 SoundSource.hpp
 SoundStream.hpp
 Sprite.hpp
 String.hpp
 System.hpp
 TcpListener.hpp
 TcpSocket.hpp
 Text.hpp
 Texture.hpp
 Thread.hpp
 ThreadLocal.hpp
 ThreadLocalPtr.hpp
 Time.hpp
 Touch.hpp
 Transform.hpp
 Transformable.hpp
 UdpSocket.hpp
 Utf.hpp
 Vector2.hpp
 Vector3.hpp
 Vertex.hpp
 VertexArray.hpp
 VertexBuffer.hpp
 VideoMode.hpp
 View.hpp
 Window/Window.hpp
 Window.hpp
 WindowHandle.hpp
 WindowStyle.hpp
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/folderclosed.png b/SQCSim2021/external/sfml251-32/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`&&M>Eakt!T2`T*Z+!x zMBS}lr8g$z6vTdG-mg6SXly{_1Xt&d7|Wl`dnzy9Pq=pE|AWT=2ToRee#E%QSwT&} zw(!CcfnN5-jMK}ap3g1YW}MqN;YM?N**u@$e$Q*~eXqSYcW;!V0E0u`21W({Cw>K7 z43jE8|MTAP@uPG@#ht7v8!U=1GBr$AnA|X@KVDjHPxPU;&z8S;VPH^inkrIRnX3I` z&u?yXWu_v(`8n_ZaAa%o>@&EqCO&0#yvBo%ho^0P@TJO@;bXpYv#0mbC`7D>Bj;!>6saJ1(pm;Cd_1Xbv?Ic z#ko@xl@^pPotwwrpc15HU%gYzW`sHkOzmi8Pog(+QZT$66JI>~%l+tpe1-+|W z3a1oqiCMGy(oB}bX$(CRS33T0;8(h`b-~P6^Irrku4R-^c70GKQ~g`dB2(dA!RA*Q zjxOac%h+96Y+kKNc3mc>!t0T8>WCQ6lwLinn>_A)y37m-Jw8o;_o*-HJYuuNS;lkK zUhA93L!wePX4YEUz4&s!sp`75_x0r#C1MObOZvD9Wu}N(m6rW4n|gQlnoT#$Tp#6C zxA<;%i%8#dCM`qI%S6a=^nig63;?8SjV}a-AgBgB=|M>s^ eVv+g}?khiKem3!}T*$z{z~JfX=d#Wzp$P!>ZX#j; literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/folderopen.png b/SQCSim2021/external/sfml251-32/doc/html/folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c7f676a3b3ef8c2c307d319dff3c6a604eb227 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`!Kq>Eakt!T2`TKL2un zz<x}AR=$zQt$$#L0c|y{QD>v87z44Pz$Ky??`WF?k30jRI zTVtC-7P`m<+&W@be!jL-)_S3{wL;?l%X9C~|9$uUyLo%E90eE-to3AL$P4~g+hEDy zG5KuOxvwv_QeX{r{3_4-KHC&iIZo;fX=zyIHn>5GeRiZbq% z+IzF7jpyWQ@!2a6L>@0>P*8L~zF(&7O#9A@H`dMK-q6!@#cd};ZK2%KB)-`1O#J3= zw=)=M-b$Ih@Batg7rSZ$(w;277FlgF^Wq_g+F#GUd^EcK=gM@kkH4P!^>{WNJl>rA z{NOIt#cM*lHh6B%l}_IHg>}Z$Jy(v+{d2ojwzB=@_J0=Us`WK=%bBL< zBFgiwcT9c%yGYg{M}^@>!2co-hQvh4*1LSp)K zN>*hF7;(tDIabKCm+7+k%$F><-XmMU6>`K=pDSi*ahmwsz1BQgVVNP#FMch_k4r8% z`e)B?>EFB0C&f-V)UarY4S!qWzpHaLO}>Abc}C^r#eB;x`>lH3{nS3tzge!~;{zR6 z?s;jO&0hL3bo3r^UF;oNdnZoFT6)`!yr@N`_eIu*2AfRhy}0Ie(%X4{+w^W_FT0Ty za^%}CRk^LJ9&ygiTpxDi)ZI_ZXY!o*Db27$^XGqe=7yP{*mrqxID{;yn8Luoz~JfX K=d#Wzp$PzT5g5Y& literal 0 HcmV?d00001 diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions.html b/SQCSim2021/external/sfml251-32/doc/html/functions.html new file mode 100644 index 0000000..67e806f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions.html @@ -0,0 +1,182 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_0x7e.html b/SQCSim2021/external/sfml251-32/doc/html/functions_0x7e.html new file mode 100644 index 0000000..21e55da --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_0x7e.html @@ -0,0 +1,213 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_b.html b/SQCSim2021/external/sfml251-32/doc/html/functions_b.html new file mode 100644 index 0000000..4c73db3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_b.html @@ -0,0 +1,170 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_c.html b/SQCSim2021/external/sfml251-32/doc/html/functions_c.html new file mode 100644 index 0000000..647306b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_c.html @@ -0,0 +1,257 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_d.html b/SQCSim2021/external/sfml251-32/doc/html/functions_d.html new file mode 100644 index 0000000..dd3d631 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_d.html @@ -0,0 +1,191 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_e.html b/SQCSim2021/external/sfml251-32/doc/html/functions_e.html new file mode 100644 index 0000000..d7a71ba --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_e.html @@ -0,0 +1,146 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_enum.html b/SQCSim2021/external/sfml251-32/doc/html/functions_enum.html new file mode 100644 index 0000000..22edf4b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_enum.html @@ -0,0 +1,114 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval.html new file mode 100644 index 0000000..a815e0d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval.html @@ -0,0 +1,123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- a -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_b.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_b.html new file mode 100644 index 0000000..fef9168 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_b.html @@ -0,0 +1,129 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- b -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_c.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_c.html new file mode 100644 index 0000000..dc6e999 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_c.html @@ -0,0 +1,137 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- c -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_d.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_d.html new file mode 100644 index 0000000..94f7fce --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_d.html @@ -0,0 +1,147 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- d -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_e.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_e.html new file mode 100644 index 0000000..c44f684 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_e.html @@ -0,0 +1,119 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- e -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_f.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_f.html new file mode 100644 index 0000000..507a279 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_f.html @@ -0,0 +1,164 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- f -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_g.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_g.html new file mode 100644 index 0000000..1b6380f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_g.html @@ -0,0 +1,116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- g -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_h.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_h.html new file mode 100644 index 0000000..eae17b4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_h.html @@ -0,0 +1,119 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- h -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_i.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_i.html new file mode 100644 index 0000000..cc86bf1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_i.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- i -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_j.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_j.html new file mode 100644 index 0000000..9fa37e1 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_j.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- j -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_k.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_k.html new file mode 100644 index 0000000..b9eb212 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_k.html @@ -0,0 +1,107 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- k -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_l.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_l.html new file mode 100644 index 0000000..55ae08a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_l.html @@ -0,0 +1,126 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- l -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_m.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_m.html new file mode 100644 index 0000000..d787774 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_m.html @@ -0,0 +1,143 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- m -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_n.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_n.html new file mode 100644 index 0000000..87f5dbf --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_n.html @@ -0,0 +1,200 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- n -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_o.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_o.html new file mode 100644 index 0000000..8d6beaa --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_o.html @@ -0,0 +1,123 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- o -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_p.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_p.html new file mode 100644 index 0000000..99cd250 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_p.html @@ -0,0 +1,149 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- p -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_q.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_q.html new file mode 100644 index 0000000..4bd990c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_q.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- q -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_r.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_r.html new file mode 100644 index 0000000..27a19bd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_r.html @@ -0,0 +1,139 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- r -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_s.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_s.html new file mode 100644 index 0000000..579fe64 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_s.html @@ -0,0 +1,168 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- s -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_t.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_t.html new file mode 100644 index 0000000..64ec020 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_t.html @@ -0,0 +1,125 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- t -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_u.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_u.html new file mode 100644 index 0000000..59bcddc --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_u.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- u -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_v.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_v.html new file mode 100644 index 0000000..77ab118 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_v.html @@ -0,0 +1,108 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- v -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_w.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_w.html new file mode 100644 index 0000000..44a3f60 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_w.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- w -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_x.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_x.html new file mode 100644 index 0000000..02f29e2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_x.html @@ -0,0 +1,105 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- x -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_y.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_y.html new file mode 100644 index 0000000..2abcc58 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_y.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- y -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_eval_z.html b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_z.html new file mode 100644 index 0000000..7ba4b00 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_eval_z.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- z -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_f.html b/SQCSim2021/external/sfml251-32/doc/html/functions_f.html new file mode 100644 index 0000000..41be73d --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_f.html @@ -0,0 +1,216 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func.html new file mode 100644 index 0000000..34aaa8b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func.html @@ -0,0 +1,114 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- a -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_0x7e.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_0x7e.html new file mode 100644 index 0000000..3b77cf4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_0x7e.html @@ -0,0 +1,209 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- ~ -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_b.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_b.html new file mode 100644 index 0000000..8ec5dd3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_b.html @@ -0,0 +1,104 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- b -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_c.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_c.html new file mode 100644 index 0000000..74d503b --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_c.html @@ -0,0 +1,178 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- c -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_d.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_d.html new file mode 100644 index 0000000..1aade81 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_d.html @@ -0,0 +1,127 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- d -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_e.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_e.html new file mode 100644 index 0000000..b08d9a4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_e.html @@ -0,0 +1,112 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- e -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_f.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_f.html new file mode 100644 index 0000000..abaf7b3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_f.html @@ -0,0 +1,134 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- f -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_g.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_g.html new file mode 100644 index 0000000..7cf2909 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_g.html @@ -0,0 +1,452 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- g -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_h.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_h.html new file mode 100644 index 0000000..6f3b1b7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_h.html @@ -0,0 +1,101 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- h -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_i.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_i.html new file mode 100644 index 0000000..bb4de4e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_i.html @@ -0,0 +1,168 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- i -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_k.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_k.html new file mode 100644 index 0000000..3113bdc --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_k.html @@ -0,0 +1,95 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- k -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_l.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_l.html new file mode 100644 index 0000000..7aacf68 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_l.html @@ -0,0 +1,143 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- l -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_m.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_m.html new file mode 100644 index 0000000..8a60ce5 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_m.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- m -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_n.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_n.html new file mode 100644 index 0000000..bc737b8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_n.html @@ -0,0 +1,100 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- n -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_o.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_o.html new file mode 100644 index 0000000..903c8a3 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_o.html @@ -0,0 +1,287 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- o -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_p.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_p.html new file mode 100644 index 0000000..59a1566 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_p.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- p -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_r.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_r.html new file mode 100644 index 0000000..f10e87f --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_r.html @@ -0,0 +1,169 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- r -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_s.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_s.html new file mode 100644 index 0000000..89822b2 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_s.html @@ -0,0 +1,400 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- s -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_t.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_t.html new file mode 100644 index 0000000..f682936 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_t.html @@ -0,0 +1,188 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- t -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_u.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_u.html new file mode 100644 index 0000000..1fdfdb8 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_u.html @@ -0,0 +1,116 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- u -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_v.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_v.html new file mode 100644 index 0000000..41f05aa --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_v.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- v -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_w.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_w.html new file mode 100644 index 0000000..8812921 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_w.html @@ -0,0 +1,106 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- w -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_func_z.html b/SQCSim2021/external/sfml251-32/doc/html/functions_func_z.html new file mode 100644 index 0000000..b0632ba --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_func_z.html @@ -0,0 +1,95 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- z -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_g.html b/SQCSim2021/external/sfml251-32/doc/html/functions_g.html new file mode 100644 index 0000000..98a7783 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_g.html @@ -0,0 +1,483 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_h.html b/SQCSim2021/external/sfml251-32/doc/html/functions_h.html new file mode 100644 index 0000000..edde965 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_h.html @@ -0,0 +1,134 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_i.html b/SQCSim2021/external/sfml251-32/doc/html/functions_i.html new file mode 100644 index 0000000..f568b72 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_i.html @@ -0,0 +1,203 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_j.html b/SQCSim2021/external/sfml251-32/doc/html/functions_j.html new file mode 100644 index 0000000..2e425b4 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_j.html @@ -0,0 +1,128 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_k.html b/SQCSim2021/external/sfml251-32/doc/html/functions_k.html new file mode 100644 index 0000000..9bfcb2e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_k.html @@ -0,0 +1,117 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- k -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_l.html b/SQCSim2021/external/sfml251-32/doc/html/functions_l.html new file mode 100644 index 0000000..77c7028 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_l.html @@ -0,0 +1,187 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_m.html b/SQCSim2021/external/sfml251-32/doc/html/functions_m.html new file mode 100644 index 0000000..425b9be --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_m.html @@ -0,0 +1,196 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_n.html b/SQCSim2021/external/sfml251-32/doc/html/functions_n.html new file mode 100644 index 0000000..6ba2d65 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_n.html @@ -0,0 +1,215 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_o.html b/SQCSim2021/external/sfml251-32/doc/html/functions_o.html new file mode 100644 index 0000000..24e30e6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_o.html @@ -0,0 +1,323 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_p.html b/SQCSim2021/external/sfml251-32/doc/html/functions_p.html new file mode 100644 index 0000000..3bcd329 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_p.html @@ -0,0 +1,182 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_q.html b/SQCSim2021/external/sfml251-32/doc/html/functions_q.html new file mode 100644 index 0000000..421e3d7 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_q.html @@ -0,0 +1,102 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_r.html b/SQCSim2021/external/sfml251-32/doc/html/functions_r.html new file mode 100644 index 0000000..cca972a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_r.html @@ -0,0 +1,223 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_rela.html b/SQCSim2021/external/sfml251-32/doc/html/functions_rela.html new file mode 100644 index 0000000..3009017 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_rela.html @@ -0,0 +1,66 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_s.html b/SQCSim2021/external/sfml251-32/doc/html/functions_s.html new file mode 100644 index 0000000..497428a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_s.html @@ -0,0 +1,517 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_t.html b/SQCSim2021/external/sfml251-32/doc/html/functions_t.html new file mode 100644 index 0000000..7822258 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_t.html @@ -0,0 +1,261 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_type.html b/SQCSim2021/external/sfml251-32/doc/html/functions_type.html new file mode 100644 index 0000000..f333fca --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_type.html @@ -0,0 +1,69 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_u.html b/SQCSim2021/external/sfml251-32/doc/html/functions_u.html new file mode 100644 index 0000000..7c1f19a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_u.html @@ -0,0 +1,148 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_v.html b/SQCSim2021/external/sfml251-32/doc/html/functions_v.html new file mode 100644 index 0000000..0c5502c --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_v.html @@ -0,0 +1,131 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_vars.html b/SQCSim2021/external/sfml251-32/doc/html/functions_vars.html new file mode 100644 index 0000000..2ced6b9 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_vars.html @@ -0,0 +1,478 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+ + +

- z -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_w.html b/SQCSim2021/external/sfml251-32/doc/html/functions_w.html new file mode 100644 index 0000000..2a4baba --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_w.html @@ -0,0 +1,130 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_x.html b/SQCSim2021/external/sfml251-32/doc/html/functions_x.html new file mode 100644 index 0000000..3d553a6 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_x.html @@ -0,0 +1,118 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- x -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_y.html b/SQCSim2021/external/sfml251-32/doc/html/functions_y.html new file mode 100644 index 0000000..f0fa768 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_y.html @@ -0,0 +1,115 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- y -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/functions_z.html b/SQCSim2021/external/sfml251-32/doc/html/functions_z.html new file mode 100644 index 0000000..1876d3e --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/functions_z.html @@ -0,0 +1,113 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- z -

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/globals.html b/SQCSim2021/external/sfml251-32/doc/html/globals.html new file mode 100644 index 0000000..72fd44a --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/globals.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + +
+
+
Here is a list of all documented file members with links to the documentation:
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/globals_defs.html b/SQCSim2021/external/sfml251-32/doc/html/globals_defs.html new file mode 100644 index 0000000..4ba7280 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/globals_defs.html @@ -0,0 +1,59 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + +
+ + + + +
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/group__audio.html b/SQCSim2021/external/sfml251-32/doc/html/group__audio.html new file mode 100644 index 0000000..c624894 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/group__audio.html @@ -0,0 +1,99 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
Audio module
+
+
+ +

Sounds, streaming (musics or custom sources), recording, spatialization. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  sf::AlResource
 Base class for classes that require an OpenAL context. More...
 
class  sf::InputSoundFile
 Provide read access to sound files. More...
 
class  sf::Listener
 The audio listener is the point in the scene from where all the sounds are heard. More...
 
class  sf::Music
 Streamed music played from an audio file. More...
 
class  sf::OutputSoundFile
 Provide write access to sound files. More...
 
class  sf::Sound
 Regular sound that can be played in the audio environment. More...
 
class  sf::SoundBuffer
 Storage for audio samples defining a sound. More...
 
class  sf::SoundBufferRecorder
 Specialized SoundRecorder which stores the captured audio data into a sound buffer. More...
 
class  sf::SoundFileFactory
 Manages and instantiates sound file readers and writers. More...
 
class  sf::SoundFileReader
 Abstract base class for sound file decoding. More...
 
class  sf::SoundFileWriter
 Abstract base class for sound file encoding. More...
 
class  sf::SoundRecorder
 Abstract base class for capturing sound data. More...
 
class  sf::SoundSource
 Base class defining a sound's properties. More...
 
class  sf::SoundStream
 Abstract base class for streamed audio sources. More...
 
+

Detailed Description

+

Sounds, streaming (musics or custom sources), recording, spatialization.

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/group__graphics.html b/SQCSim2021/external/sfml251-32/doc/html/group__graphics.html new file mode 100644 index 0000000..2b0fdb5 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/group__graphics.html @@ -0,0 +1,202 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
Graphics module
+
+
+ +

2D graphics module: sprites, text, shapes, ... +More...

+ + + + + +

+Namespaces

 sf::Glsl
 Namespace with GLSL types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  sf::BlendMode
 Blending modes for drawing. More...
 
class  sf::CircleShape
 Specialized shape representing a circle. More...
 
class  sf::Color
 Utility class for manipulating RGBA colors. More...
 
class  sf::ConvexShape
 Specialized shape representing a convex polygon. More...
 
class  sf::Drawable
 Abstract base class for objects that can be drawn to a render target. More...
 
class  sf::Font
 Class for loading and manipulating character fonts. More...
 
class  sf::Glyph
 Structure describing a glyph. More...
 
class  sf::Image
 Class for loading, manipulating and saving images. More...
 
class  sf::Rect< T >
 Utility class for manipulating 2D axis aligned rectangles. More...
 
class  sf::RectangleShape
 Specialized shape representing a rectangle. More...
 
class  sf::RenderStates
 Define the states used for drawing to a RenderTarget. More...
 
class  sf::RenderTarget
 Base class for all render targets (window, texture, ...) More...
 
class  sf::RenderTexture
 Target for off-screen 2D rendering into a texture. More...
 
class  sf::RenderWindow
 Window that can serve as a target for 2D drawing. More...
 
class  sf::Shader
 Shader class (vertex, geometry and fragment) More...
 
class  sf::Shape
 Base class for textured shapes with outline. More...
 
class  sf::Sprite
 Drawable representation of a texture, with its own transformations, color, etc. More...
 
class  sf::Text
 Graphical text that can be drawn to a render target. More...
 
class  sf::Texture
 Image living on the graphics card that can be used for drawing. More...
 
class  sf::Transform
 Define a 3x3 transform matrix. More...
 
class  sf::Transformable
 Decomposed transform defined by a position, a rotation and a scale. More...
 
class  sf::Vertex
 Define a point with color and texture coordinates. More...
 
class  sf::VertexArray
 Define a set of one or more 2D primitives. More...
 
class  sf::VertexBuffer
 Vertex buffer storage for one or more 2D primitives. More...
 
class  sf::View
 2D camera that defines what region is shown on screen More...
 
+ + + + +

+Enumerations

enum  sf::PrimitiveType {
+  sf::Points, +sf::Lines, +sf::LineStrip, +sf::Triangles, +
+  sf::TriangleStrip, +sf::TriangleFan, +sf::Quads, +sf::LinesStrip = LineStrip, +
+  sf::TrianglesStrip = TriangleStrip, +sf::TrianglesFan = TriangleFan +
+ }
 Types of primitives that a sf::VertexArray can render. More...
 
+

Detailed Description

+

2D graphics module: sprites, text, shapes, ...

+

Enumeration Type Documentation

+ +

◆ PrimitiveType

+ +
+
+ + + + +
enum sf::PrimitiveType
+
+ +

Types of primitives that a sf::VertexArray can render.

+

Points and lines have no area, therefore their thickness will always be 1 pixel, regardless the current transform and view.

+ + + + + + + + + + + +
Enumerator
Points 

List of individual points.

+
Lines 

List of individual lines.

+
LineStrip 

List of connected lines, a point uses the previous point to form a line.

+
Triangles 

List of individual triangles.

+
TriangleStrip 

List of connected triangles, a point uses the two previous points to form a triangle.

+
TriangleFan 

List of connected triangles, a point uses the common center and the previous point to form a triangle.

+
Quads 

List of individual quads (deprecated, don't work with OpenGL ES)

+
LinesStrip 
Deprecated:
Use LineStrip instead
+
TrianglesStrip 
Deprecated:
Use TriangleStrip instead
+
TrianglesFan 
Deprecated:
Use TriangleFan instead
+
+ +

Definition at line 39 of file PrimitiveType.hpp.

+ +
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/group__network.html b/SQCSim2021/external/sfml251-32/doc/html/group__network.html new file mode 100644 index 0000000..4e48001 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/group__network.html @@ -0,0 +1,84 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
Network module
+
+
+ +

Socket-based communication, utilities and higher-level network protocols (HTTP, FTP). +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  sf::Ftp
 A FTP client. More...
 
class  sf::Http
 A HTTP client. More...
 
class  sf::IpAddress
 Encapsulate an IPv4 network address. More...
 
class  sf::Packet
 Utility class to build blocks of data to transfer over the network. More...
 
class  sf::Socket
 Base class for all the socket types. More...
 
class  sf::SocketSelector
 Multiplexer that allows to read from multiple sockets. More...
 
class  sf::TcpListener
 Socket that listens to new TCP connections. More...
 
class  sf::TcpSocket
 Specialized socket using the TCP protocol. More...
 
class  sf::UdpSocket
 Specialized socket using the UDP protocol. More...
 
+

Detailed Description

+

Socket-based communication, utilities and higher-level network protocols (HTTP, FTP).

+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/group__system.html b/SQCSim2021/external/sfml251-32/doc/html/group__system.html new file mode 100644 index 0000000..1d3a9bd --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/group__system.html @@ -0,0 +1,192 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
System module
+
+
+ +

Base module of SFML, defining various utilities. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  sf::Clock
 Utility class that measures the elapsed time. More...
 
class  sf::FileInputStream
 Implementation of input stream based on a file. More...
 
class  sf::InputStream
 Abstract class for custom file input streams. More...
 
class  sf::Lock
 Automatic wrapper for locking and unlocking mutexes. More...
 
class  sf::MemoryInputStream
 Implementation of input stream based on a memory chunk. More...
 
class  sf::Mutex
 Blocks concurrent access to shared resources from multiple threads. More...
 
class  sf::NonCopyable
 Utility class that makes any derived class non-copyable. More...
 
class  sf::String
 Utility string class that automatically handles conversions between types and encodings. More...
 
class  sf::Thread
 Utility class to manipulate threads. More...
 
class  sf::ThreadLocal
 Defines variables with thread-local storage. More...
 
class  sf::ThreadLocalPtr< T >
 Pointer to a thread-local variable. More...
 
class  sf::Time
 Represents a time value. More...
 
class  sf::Utf< N >
 Utility class providing generic functions for UTF conversions. More...
 
class  sf::Vector2< T >
 Utility template class for manipulating 2-dimensional vectors. More...
 
class  sf::Vector3< T >
 Utility template class for manipulating 3-dimensional vectors. More...
 
+ + + + + + + + + + +

+Functions

ANativeActivity * sf::getNativeActivity ()
 Return a pointer to the Android native activity. More...
 
void sf::sleep (Time duration)
 Make the current thread sleep for a given duration. More...
 
std::ostream & sf::err ()
 Standard stream used by SFML to output warnings and errors. More...
 
+

Detailed Description

+

Base module of SFML, defining various utilities.

+

It provides vector classes, Unicode strings and conversion functions, threads and mutexes, timing classes.

+

Function Documentation

+ +

◆ err()

+ +
+
+ + + + + + + +
sf::err ()
+
+ +

Standard stream used by SFML to output warnings and errors.

+

By default, sf::err() outputs to the same location as std::cerr, (-> the stderr descriptor) which is the console if there's one available.

+

It is a standard std::ostream instance, so it supports all the insertion operations defined by the STL (operator <<, manipulators, etc.).

+

sf::err() can be redirected to write to another output, independently of std::cerr, by using the rdbuf() function provided by the std::ostream class.

+

Example:

// Redirect to a file
std::ofstream file("sfml-log.txt");
std::streambuf* previous = sf::err().rdbuf(file.rdbuf());
// Redirect to nothing
sf::err().rdbuf(NULL);
// Restore the original output
sf::err().rdbuf(previous);
Returns
Reference to std::ostream representing the SFML error stream
+ +
+
+ +

◆ getNativeActivity()

+ +
+
+ + + + + + + +
ANativeActivity* sf::getNativeActivity ()
+
+ +

Return a pointer to the Android native activity.

+

You shouldn't have to use this function, unless you want to implement very specific details, that SFML doesn't support, or to use a workaround for a known issue.

+
Returns
Pointer to Android native activity structure
+
+
Platform Limitation
+
This is only available on Android and to use it, you'll have to specifically include SFML/System/NativeActivity.hpp in your code.
+
+ +
+
+ +

◆ sleep()

+ +
+
+ + + + + + + + +
void sf::sleep (Time duration)
+
+ +

Make the current thread sleep for a given duration.

+

sf::sleep is the best way to block a program or one of its threads, as it doesn't consume any CPU power.

+
Parameters
+ + +
durationTime to sleep
+
+
+ +
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/group__window.html b/SQCSim2021/external/sfml251-32/doc/html/group__window.html new file mode 100644 index 0000000..bf60387 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/group__window.html @@ -0,0 +1,187 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+ +
+
Window module
+
+
+ +

Provides OpenGL-based windows, and abstractions for events and input handling. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  sf::Clipboard
 Give access to the system clipboard. More...
 
class  sf::Context
 Class holding a valid drawing context. More...
 
class  sf::ContextSettings
 Structure defining the settings of the OpenGL context attached to a window. More...
 
class  sf::Cursor
 Cursor defines the appearance of a system cursor. More...
 
class  sf::Event
 Defines a system event and its parameters. More...
 
class  sf::GlResource
 Base class for classes that require an OpenGL context. More...
 
class  sf::Joystick
 Give access to the real-time state of the joysticks. More...
 
class  sf::Keyboard
 Give access to the real-time state of the keyboard. More...
 
class  sf::Mouse
 Give access to the real-time state of the mouse. More...
 
class  sf::Sensor
 Give access to the real-time state of the sensors. More...
 
class  sf::Touch
 Give access to the real-time state of the touches. More...
 
class  sf::VideoMode
 VideoMode defines a video mode (width, height, bpp) More...
 
class  sf::Window
 Window that serves as a target for OpenGL rendering. More...
 
+ + + + +

+Typedefs

typedef platform specific sf::WindowHandle
 Define a low-level window handle type, specific to each platform. More...
 
+ + + + +

+Enumerations

enum  {
+  sf::Style::None = 0, +sf::Style::Titlebar = 1 << 0, +sf::Style::Resize = 1 << 1, +sf::Style::Close = 1 << 2, +
+  sf::Style::Fullscreen = 1 << 3, +sf::Style::Default = Titlebar | Resize | Close +
+ }
 Enumeration of the window styles. More...
 
+

Detailed Description

+

Provides OpenGL-based windows, and abstractions for events and input handling.

+

Typedef Documentation

+ +

◆ WindowHandle

+ +
+
+ + + + +
sf::WindowHandle
+
+ +

Define a low-level window handle type, specific to each platform.

+ + + + + + + + + + + + + +
Platform Type -------------—
Windows HWND
Linux/FreeBSD Window
Mac OS X either NSWindow* or NSView*, disguised as void*
iOS UIWindow*
Android ANativeWindow*
+
Mac OS X Specification
+

On Mac OS X, a sf::Window can be created either from an existing NSWindow* or an NSView*. When the window is created from a window, SFML will use its content view as the OpenGL area. sf::Window::getSystemHandle() will return the handle that was used to create the window, which is a NSWindow* by default.

+ +

Definition at line 68 of file WindowHandle.hpp.

+ +
+
+

Enumeration Type Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ +

Enumeration of the window styles.

+ + + + + + + +
Enumerator
None 

No border / title bar (this flag and all others are mutually exclusive)

+
Titlebar 

Title bar + fixed border.

+
Resize 

Title bar + resizable border + maximize button.

+
Close 

Title bar + close button.

+
Fullscreen 

Fullscreen mode (this flag and all others are mutually exclusive)

+
Default 

Default window style.

+
+ +

Definition at line 38 of file WindowStyle.hpp.

+ +
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/hierarchy.html b/SQCSim2021/external/sfml251-32/doc/html/hierarchy.html new file mode 100644 index 0000000..f1b8133 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/hierarchy.html @@ -0,0 +1,175 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Csf::AlResourceBase class for classes that require an OpenAL context
 Csf::BlendModeBlending modes for drawing
 Csf::SoundStream::ChunkStructure defining a chunk of audio data to stream
 Csf::ClipboardGive access to the system clipboard
 Csf::ClockUtility class that measures the elapsed time
 Csf::ColorUtility class for manipulating RGBA colors
 Csf::ContextSettingsStructure defining the settings of the OpenGL context attached to a window
 Csf::Shader::CurrentTextureTypeSpecial type that can be passed to setUniform(), and that represents the texture of the object being drawn
 Csf::DrawableAbstract base class for objects that can be drawn to a render target
 Csf::EventDefines a system event and its parameters
 Csf::FontClass for loading and manipulating character fonts
 Csf::GlResourceBase class for classes that require an OpenGL context
 Csf::GlyphStructure describing a glyph
 Csf::Joystick::IdentificationStructure holding a joystick's identification
 Csf::ImageClass for loading, manipulating and saving images
 Csf::SoundFileReader::InfoStructure holding the audio properties of a sound file
 Csf::Font::InfoHolds various information about a font
 Csf::InputStreamAbstract class for custom file input streams
 Csf::IpAddressEncapsulate an IPv4 network address
 Csf::JoystickGive access to the real-time state of the joysticks
 Csf::Event::JoystickButtonEventJoystick buttons events parameters (JoystickButtonPressed, JoystickButtonReleased)
 Csf::Event::JoystickConnectEventJoystick connection events parameters (JoystickConnected, JoystickDisconnected)
 Csf::Event::JoystickMoveEventJoystick axis move event parameters (JoystickMoved)
 Csf::KeyboardGive access to the real-time state of the keyboard
 Csf::Event::KeyEventKeyboard event parameters (KeyPressed, KeyReleased)
 Csf::ListenerThe audio listener is the point in the scene from where all the sounds are heard
 Csf::MouseGive access to the real-time state of the mouse
 Csf::Event::MouseButtonEventMouse buttons events parameters (MouseButtonPressed, MouseButtonReleased)
 Csf::Event::MouseMoveEventMouse move event parameters (MouseMoved)
 Csf::Event::MouseWheelEventMouse wheel events parameters (MouseWheelMoved)
 Csf::Event::MouseWheelScrollEventMouse wheel events parameters (MouseWheelScrolled)
 Csf::NonCopyableUtility class that makes any derived class non-copyable
 Csf::PacketUtility class to build blocks of data to transfer over the network
 Csf::Rect< T >Utility class for manipulating 2D axis aligned rectangles
 Csf::Rect< float >
 Csf::Rect< int >
 Csf::RenderStatesDefine the states used for drawing to a RenderTarget
 Csf::Http::RequestDefine a HTTP request
 Csf::Ftp::ResponseDefine a FTP response
 Csf::Http::ResponseDefine a HTTP response
 Csf::SensorGive access to the real-time state of the sensors
 Csf::Event::SensorEventSensor event parameters (SensorChanged)
 Csf::Event::SizeEventSize events parameters (Resized)
 Csf::SocketSelectorMultiplexer that allows to read from multiple sockets
 Csf::SoundFileFactoryManages and instantiates sound file readers and writers
 Csf::SoundFileReaderAbstract base class for sound file decoding
 Csf::SoundFileWriterAbstract base class for sound file encoding
 Csf::Music::Span< T >Structure defining a time range using the template type
 Csf::Music::Span< Uint64 >
 Csf::StringUtility string class that automatically handles conversions between types and encodings
 Csf::Event::TextEventText event parameters (TextEntered)
 Csf::TimeRepresents a time value
 Csf::TouchGive access to the real-time state of the touches
 Csf::Event::TouchEventTouch events parameters (TouchBegan, TouchMoved, TouchEnded)
 Csf::TransformDefine a 3x3 transform matrix
 Csf::TransformableDecomposed transform defined by a position, a rotation and a scale
 Csf::Utf< N >Utility class providing generic functions for UTF conversions
 Csf::Utf< 16 >Specialization of the Utf template for UTF-16
 Csf::Utf< 32 >Specialization of the Utf template for UTF-32
 Csf::Utf< 8 >Specialization of the Utf template for UTF-8
 Csf::Vector2< T >Utility template class for manipulating 2-dimensional vectors
 Csf::Vector2< float >
 Csf::Vector2< unsigned int >
 Csf::Vector3< T >Utility template class for manipulating 3-dimensional vectors
 Csf::VertexDefine a point with color and texture coordinates
 Csf::VideoModeVideoMode defines a video mode (width, height, bpp)
 Csf::View2D camera that defines what region is shown on screen
+
+
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/index.html b/SQCSim2021/external/sfml251-32/doc/html/index.html new file mode 100644 index 0000000..d331308 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/index.html @@ -0,0 +1,53 @@ + + + + SFML - Simple and Fast Multimedia Library + + + + + + + + + + +
+
+
SFML Documentation
+
+
+

+Welcome

+

Welcome to the official SFML documentation. Here you will find a detailed view of all the SFML classes and functions.
+ If you are looking for tutorials, you can visit the official website at www.sfml-dev.org.

+

+Short example

+

Here is a short example, to show you how simple it is to use SFML:

+
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
int main()
{
// Create the main window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// Load a sprite to display
sf::Texture texture;
if (!texture.loadFromFile("cute_image.jpg"))
return EXIT_FAILURE;
sf::Sprite sprite(texture);
// Create a graphical text to display
sf::Font font;
if (!font.loadFromFile("arial.ttf"))
return EXIT_FAILURE;
sf::Text text("Hello SFML", font, 50);
// Load a music to play
sf::Music music;
if (!music.openFromFile("nice_music.ogg"))
return EXIT_FAILURE;
// Play the music
music.play();
// Start the game loop
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window: exit
if (event.type == sf::Event::Closed)
window.close();
}
// Clear screen
window.clear();
// Draw the sprite
window.draw(sprite);
// Draw the string
window.draw(text);
// Update the window
window.display();
}
return EXIT_SUCCESS;
}
+ + + + diff --git a/SQCSim2021/external/sfml251-32/doc/html/jquery.js b/SQCSim2021/external/sfml251-32/doc/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/SQCSim2021/external/sfml251-32/doc/html/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('