diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp index a2e8b28540..1b0bc7f4ff 100644 --- a/src/openrct2/FileClassifier.cpp +++ b/src/openrct2/FileClassifier.cpp @@ -22,6 +22,7 @@ #include "scenario/Scenario.h" using namespace OpenRCT2; +using namespace OpenRCT2::SawyerCoding; static bool TryClassifyAsPark(OpenRCT2::IStream* stream, ClassifiedFileInfo* result); static bool TryClassifyAsS6(OpenRCT2::IStream* stream, ClassifiedFileInfo* result); diff --git a/src/openrct2/object/ObjectFactory.cpp b/src/openrct2/object/ObjectFactory.cpp index e5eabdcdfa..be91661350 100644 --- a/src/openrct2/object/ObjectFactory.cpp +++ b/src/openrct2/object/ObjectFactory.cpp @@ -54,6 +54,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::SawyerCoding; struct IFileDataRetriever { diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 3c999ae21e..94832290fa 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -91,6 +91,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::SawyerCoding; static constexpr ObjectEntryIndex ObjectEntryIndexIgnore = 254; diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index a4a2d3790f..522163bbf4 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -25,6 +25,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::SawyerCoding; using OpenRCT2::RCT12::TD46MazeElement; using OpenRCT2::RCT12::TD46Version; diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index a7ae4e5819..7e3977ff2f 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -90,6 +90,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::SawyerCoding; namespace OpenRCT2::RCT2 { diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index b67b07517d..ce3300a710 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -30,6 +30,7 @@ #include using OpenRCT2::RCT12::TD46MazeElementType; +using OpenRCT2::SawyerCoding::SawyerChunkWriter; namespace OpenRCT2::RCT2 { diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 404f638dc5..07119ae81b 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -29,6 +29,7 @@ using namespace OpenRCT2; using OpenRCT2::RCT12::TD46MazeElement; using OpenRCT2::RCT12::TD46Version; +using namespace OpenRCT2::SawyerCoding; namespace OpenRCT2::RCT2 { diff --git a/src/openrct2/sawyer_coding/SawyerChunk.cpp b/src/openrct2/sawyer_coding/SawyerChunk.cpp index cb3a047ab1..c0a04dd764 100644 --- a/src/openrct2/sawyer_coding/SawyerChunk.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunk.cpp @@ -11,11 +11,13 @@ #include "SawyerChunkReader.h" -namespace OpenRCT2 +#include + +namespace OpenRCT2::SawyerCoding { - SawyerChunk::SawyerChunk(SawyerCoding::ChunkEncoding encoding, MemoryStream&& data) + SawyerChunk::SawyerChunk(ChunkEncoding encoding, MemoryStream&& data) : _data(std::move(data)) , _encoding(encoding) { } -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerChunk.h b/src/openrct2/sawyer_coding/SawyerChunk.h index dfd5be8dc8..f5a8e124d2 100644 --- a/src/openrct2/sawyer_coding/SawyerChunk.h +++ b/src/openrct2/sawyer_coding/SawyerChunk.h @@ -13,29 +13,26 @@ #include -namespace OpenRCT2 +namespace OpenRCT2::SawyerCoding { - namespace SawyerCoding + /** + * The type of encoding / compression for a sawyer encoded chunk. + */ + enum class ChunkEncoding : uint8_t { - /** - * The type of encoding / compression for a sawyer encoded chunk. - */ - enum class ChunkEncoding : uint8_t - { - none, - rle, - rleCompressed, - rotate, - }; + none, + rle, + rleCompressed, + rotate, + }; #pragma pack(push, 1) - struct ChunkHeader - { - ChunkEncoding encoding; - uint32_t length; - }; - static_assert(sizeof(ChunkHeader) == 5); + struct ChunkHeader + { + ChunkEncoding encoding; + uint32_t length; + }; + static_assert(sizeof(ChunkHeader) == 5); #pragma pack(pop) - } // namespace SawyerCoding /** * Represents a sawyer encoded chunk. @@ -44,7 +41,7 @@ namespace OpenRCT2 { private: OpenRCT2::MemoryStream _data; - SawyerCoding::ChunkEncoding _encoding = SawyerCoding::ChunkEncoding::none; + ChunkEncoding _encoding = ChunkEncoding::none; public: const void* GetData() const @@ -55,11 +52,11 @@ namespace OpenRCT2 { return _data.GetLength(); } - SawyerCoding::ChunkEncoding GetEncoding() const + ChunkEncoding GetEncoding() const { return _encoding; } - SawyerChunk(SawyerCoding::ChunkEncoding encoding, OpenRCT2::MemoryStream&& data); + SawyerChunk(ChunkEncoding encoding, OpenRCT2::MemoryStream&& data); }; -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerChunkReader.cpp b/src/openrct2/sawyer_coding/SawyerChunkReader.cpp index 78ac13296c..12c53bfa4a 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkReader.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunkReader.cpp @@ -13,9 +13,7 @@ #include "../core/MemoryStream.h" #include "../core/Numerics.hpp" -using namespace OpenRCT2::SawyerCoding; - -namespace OpenRCT2 +namespace OpenRCT2::SawyerCoding { // Allow chunks to be uncompressed to a maximum of 16 MiB constexpr size_t kMaxUncompressedChunkSize = 16 * 1024 * 1024; @@ -289,4 +287,4 @@ namespace OpenRCT2 return buf; } -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerChunkReader.h b/src/openrct2/sawyer_coding/SawyerChunkReader.h index 08cc7bffde..ed20fe151a 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkReader.h +++ b/src/openrct2/sawyer_coding/SawyerChunkReader.h @@ -20,7 +20,10 @@ namespace OpenRCT2 { struct IStream; +} +namespace OpenRCT2::SawyerCoding +{ class SawyerChunkException : public IOException { public: @@ -86,4 +89,4 @@ namespace OpenRCT2 return result; } }; -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp b/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp index 0cb5b01bda..f777438c96 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp @@ -13,9 +13,7 @@ #include "../core/Numerics.hpp" #include "../sawyer_coding/SawyerCoding.h" -using namespace OpenRCT2::SawyerCoding; - -namespace OpenRCT2 +namespace OpenRCT2::SawyerCoding { // Maximum buffer size to store compressed data, maximum of 16 MiB constexpr size_t MAX_COMPRESSED_CHUNK_SIZE = 16 * 1024 * 1024; @@ -32,12 +30,12 @@ namespace OpenRCT2 void SawyerChunkWriter::WriteChunk(const void* src, size_t length, ChunkEncoding encoding) { - SawyerCoding::ChunkHeader header; + ChunkHeader header; header.encoding = encoding; header.length = static_cast(length); auto data = std::make_unique(MAX_COMPRESSED_CHUNK_SIZE); - size_t dataLength = SawyerCoding::WriteChunkBuffer(data.get(), static_cast(src), header); + size_t dataLength = WriteChunkBuffer(data.get(), static_cast(src), header); _stream->Write(data.get(), dataLength); } @@ -111,4 +109,4 @@ namespace OpenRCT2 _stream->Write(data.get(), dataLength); _stream->WriteValue(checksum); } -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerChunkWriter.h b/src/openrct2/sawyer_coding/SawyerChunkWriter.h index 94d159de52..3b87b3d39f 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkWriter.h +++ b/src/openrct2/sawyer_coding/SawyerChunkWriter.h @@ -16,7 +16,10 @@ namespace OpenRCT2 { struct IStream; +} +namespace OpenRCT2::SawyerCoding +{ /** * Writes sawyer encoding chunks to a data stream. This can be used to write * SC6 and SV6 files. @@ -39,7 +42,7 @@ namespace OpenRCT2 * @param src The source buffer. * @param length The size of the source buffer. */ - void WriteChunk(const void* src, size_t length, SawyerCoding::ChunkEncoding encoding); + void WriteChunk(const void* src, size_t length, ChunkEncoding encoding); /** * Writes a track chunk to the stream containing the given buffer. @@ -52,9 +55,9 @@ namespace OpenRCT2 * Writes a chunk to the stream containing the given type. */ template - void WriteChunk(const T* src, SawyerCoding::ChunkEncoding encoding) + void WriteChunk(const T* src, ChunkEncoding encoding) { WriteChunk(src, sizeof(T), encoding); } }; -} // namespace OpenRCT2 +} // namespace OpenRCT2::SawyerCoding diff --git a/src/openrct2/sawyer_coding/SawyerCoding.h b/src/openrct2/sawyer_coding/SawyerCoding.h index 416a1f3aa7..90b4a02e71 100644 --- a/src/openrct2/sawyer_coding/SawyerCoding.h +++ b/src/openrct2/sawyer_coding/SawyerCoding.h @@ -14,7 +14,7 @@ #include #include -namespace OpenRCT2 +namespace OpenRCT2::SawyerCoding { // TODO: make enum class in SawyerCoding namespace enum @@ -29,10 +29,7 @@ namespace OpenRCT2 FILE_TYPE_SV4 = (1 << 2), FILE_TYPE_SC4 = (2 << 2) }; -} // namespace OpenRCT2 -namespace OpenRCT2::SawyerCoding -{ uint32_t CalculateChecksum(const uint8_t* buffer, size_t length); size_t WriteChunkBuffer(uint8_t* dst_file, const uint8_t* src_buffer, ChunkHeader chunkHeader); size_t DecodeSV4(const uint8_t* src, uint8_t* dst, size_t length, size_t bufferLength);