Circle buffer and png cleaning.

This commit is contained in:
James Grogan 2022-11-24 09:05:39 +00:00
parent 59cc910d58
commit 5400a232dd
13 changed files with 353 additions and 122 deletions

51
src/image/png/PngWriter.h Normal file
View file

@ -0,0 +1,51 @@
#pragma once
#include "PngHeader.h"
#include "Image.h"
#include <memory>
#include <string>
#include <filesystem>
using Path = std::filesystem::path;
class BitStream;
class BufferBitStream;
class File;
class PngWriter
{
public:
PngWriter();
~PngWriter();
static std::unique_ptr<PngWriter> Create();
void setPath(const Path& path);
void setPngInfo(const PngInfo& info);
void write(const std::unique_ptr<Image<unsigned char> >& image);
private:
void writeSignature();
void writeHeader();
void writeDataChunks(const BufferBitStream& buffer);
void writeEndChunk();
//void writeIDatChunk();
Path mPath;
Image<unsigned char>* mWorkingImage{nullptr};
std::unique_ptr<BitStream> mInStream;
std::unique_ptr<BitStream> mOutStream;
std::unique_ptr<File> mWorkingFile;
unsigned mPngInfoUserSet{false};
PngInfo mPngInfo;
PngHeader mPngHeader;
};
using PngWriterPtr = std::unique_ptr<PngWriter>;