mirror of
https://github.com/borgesdan/xn65
synced 2024-12-29 21:54:47 +01:00
Remove DecompressStream
This commit is contained in:
parent
676df7e150
commit
dfa592ef5e
@ -39,7 +39,7 @@ add_executable (xna WIN32
|
|||||||
"content/manager.cpp"
|
"content/manager.cpp"
|
||||||
"content/reader.cpp"
|
"content/reader.cpp"
|
||||||
"csharp/binary.cpp"
|
"csharp/binary.cpp"
|
||||||
"content/decstream.cpp" "content/lzx/decoder.cpp" "content/lzx/decoderstream.cpp" "content/typereadermanager.cpp" "csharp/object.cpp" "csharp/type.cpp" "platform/init-dx.cpp" "game/servicecontainer.cpp" "common/color.cpp")
|
"content/lzx/decoder.cpp" "content/lzx/decoderstream.cpp" "content/typereadermanager.cpp" "csharp/object.cpp" "csharp/type.cpp" "platform/init-dx.cpp" "game/servicecontainer.cpp" "common/color.cpp")
|
||||||
|
|
||||||
if (CMAKE_VERSION VERSION_GREATER 3.12)
|
if (CMAKE_VERSION VERSION_GREATER 3.12)
|
||||||
set_property(TARGET xna PROPERTY CXX_STANDARD 20)
|
set_property(TARGET xna PROPERTY CXX_STANDARD 20)
|
||||||
|
@ -1,111 +0,0 @@
|
|||||||
#include "decstream.hpp"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
namespace xna {
|
|
||||||
void DecompressStream::Decompress()
|
|
||||||
{
|
|
||||||
String filename = "C:\\Users\\Danilo Borges\\Documents\\xna\\projeto-final\\Game9\\bin\\Debug\\netcoreapp3.1\\Content\\Sprites\\MonsterA\\idle.xnb";
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Int DecompressStream::Length()
|
|
||||||
{
|
|
||||||
return Int();
|
|
||||||
}
|
|
||||||
|
|
||||||
Long DecompressStream::Position()
|
|
||||||
{
|
|
||||||
return Long();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::Close()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Long DecompressStream::Seek(Long offset, SeekOrigin const& origin, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
return Long();
|
|
||||||
}
|
|
||||||
|
|
||||||
Int DecompressStream::Read(Byte* buffer, Int bufferLength, Int offset, Int count, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
return Int();
|
|
||||||
}
|
|
||||||
|
|
||||||
Int DecompressStream::Read(std::vector<Byte>& buffer, Int offset, Int count, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
return Int();
|
|
||||||
}
|
|
||||||
|
|
||||||
Int DecompressStream::ReadByte(xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
return Int();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::Write(Byte const* buffer, Int bufferLength, Int offset, Int count, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::Write(std::vector<Byte> const& buffer, Int offset, Int count, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::WriteByte(Byte value, xna_error_ptr_arg)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DecompressStream::DecompressNextBuffer()
|
|
||||||
{
|
|
||||||
if (decompressedTodo <= 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
do {
|
|
||||||
if (compressedPosition >= compressedSize)
|
|
||||||
ReadNextBufferFromDisk();
|
|
||||||
|
|
||||||
auto sourceSize = compressedSize - compressedPosition;
|
|
||||||
auto outputSize = 65536;
|
|
||||||
|
|
||||||
//TODO
|
|
||||||
|
|
||||||
if (outputSize == 0 && sourceSize == 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
compressedPosition += sourceSize;
|
|
||||||
decompressedTodo -= outputSize;
|
|
||||||
decompressedSize = outputSize;
|
|
||||||
decompressedPosition = 0;
|
|
||||||
|
|
||||||
} while (decompressedSize == 0);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::ReadNextBufferFromDisk()
|
|
||||||
{
|
|
||||||
if (compressedTodo <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ReadBufferFromDisk(compressedBuffer, compressedTodo, compressedSize);
|
|
||||||
compressedPosition = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecompressStream::ReadBufferFromDisk(std::vector<Byte>& buffer, Int& bufferTodo, Int& bufferSize)
|
|
||||||
{
|
|
||||||
Int num1 = 65536;
|
|
||||||
if (num1 > bufferTodo)
|
|
||||||
num1 = bufferTodo;
|
|
||||||
|
|
||||||
Int num2 = 0;
|
|
||||||
for (int offset = 0; offset < num1; offset += num2) {
|
|
||||||
num2 = baseStream->Read(buffer, offset, num1 - offset);
|
|
||||||
|
|
||||||
if (num2 == 0) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bufferTodo -= num1;
|
|
||||||
bufferSize = num1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
#ifndef XNA_CONTENT_DECOMPRESS_STREAM_HPP
|
|
||||||
#define XNA_CONTENT_DECOMPRESS_STREAM_HPP
|
|
||||||
|
|
||||||
#include "../default.hpp"
|
|
||||||
#include "../csharp/stream.hpp"
|
|
||||||
#include <mspack.h>
|
|
||||||
|
|
||||||
namespace xna {
|
|
||||||
class DecompressStream : public Stream {
|
|
||||||
public:
|
|
||||||
DecompressStream(sptr<Stream> const& baseStream, Int compressedTodo, Int decompressedTodo):
|
|
||||||
baseStream(baseStream), compressedTodo(compressedTodo), decompressedTodo(decompressedTodo){
|
|
||||||
compressedBuffer = std::vector<Byte>(CompressedBufferSize);
|
|
||||||
decompressedBuffer = std::vector<Byte>(DecompressedBufferSize);
|
|
||||||
decompressionContext = mspack_create_cab_decompressor(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~DecompressStream() {
|
|
||||||
if (decompressionContext) {
|
|
||||||
mspack_destroy_cab_decompressor(decompressionContext);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Decompress();
|
|
||||||
|
|
||||||
public:
|
|
||||||
// Inherited via Stream
|
|
||||||
Int Length() override;
|
|
||||||
Long Position() override;
|
|
||||||
void Close() override;
|
|
||||||
Long Seek(Long offset, SeekOrigin const& origin, xna_error_nullarg) override;
|
|
||||||
Int Read(Byte* buffer, Int bufferLength, Int offset, Int count, xna_error_nullarg) override;
|
|
||||||
Int Read(std::vector<Byte>& buffer, Int offset, Int count, xna_error_nullarg) override;
|
|
||||||
Int ReadByte(xna_error_nullarg) override;
|
|
||||||
void Write(Byte const* buffer, Int bufferLength, Int offset, Int count, xna_error_nullarg) override;
|
|
||||||
void Write(std::vector<Byte> const& buffer, Int offset, Int count, xna_error_nullarg) override;
|
|
||||||
void WriteByte(Byte value, xna_error_nullarg) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
static constexpr int CompressedBufferSize = 65536;
|
|
||||||
static constexpr int DecompressedBufferSize = 65536;
|
|
||||||
sptr<Stream> baseStream = nullptr;
|
|
||||||
Int compressedTodo{ 0 };
|
|
||||||
Int compressedSize{ 0 };
|
|
||||||
Int compressedPosition{ 0 };
|
|
||||||
std::vector<Byte> compressedBuffer;
|
|
||||||
Int decompressedTodo{ 0 };
|
|
||||||
Int decompressedSize{ 0 };
|
|
||||||
Int decompressedPosition{ 0 };
|
|
||||||
std::vector<Byte> decompressedBuffer;
|
|
||||||
mscab_decompressor* decompressionContext = nullptr;
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool DecompressNextBuffer();
|
|
||||||
void ReadNextBufferFromDisk();
|
|
||||||
void ReadBufferFromDisk(std::vector<Byte>& buffer, Int& bufferTodo, Int& bufferSize);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -24,7 +24,6 @@
|
|||||||
#include "Windows.h"
|
#include "Windows.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "content/manager.hpp"
|
#include "content/manager.hpp"
|
||||||
#include "content/decstream.hpp"
|
|
||||||
#include "platform/init-dx.hpp"
|
#include "platform/init-dx.hpp"
|
||||||
#include "csharp/type.hpp"
|
#include "csharp/type.hpp"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user