commit db362f5b03be6a846abcd0a556511d5bee178cb9
parent 15f9bf9a7e30b67f7fb91f2c470f3fcccd14e880
Author: Andrew Laack <andrew@laack.co>
Date: Thu, 10 Jul 2025 23:51:19 -0500
Verified encoder portion of the system
Diffstat:
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/chunk.cpp b/src/chunk.cpp
@@ -142,6 +142,7 @@ void Chunk::writeVideo(std::string filename){
+// HEADER:
// - chunk number 4 bytes
// - characters 4 bytes
// - fnamelen 4 bytes
@@ -154,15 +155,18 @@ void Chunk::writeImage(std::string filename, uint chunkNumber, std::string origi
std::vector<char> data = chunk.getChunk();
+ // todo:
+ // update to take into account header information
if (x * y < data.size() * 8){
throw std::invalid_argument("x and y dimensions are too small for the chunk.");
}
- std::string header = "P1\n";
+ std::string firstLine = "P1\n";
std::string comment = "# Encoded with Andrew's awesome .tga encoder.\n";
std::string chunkNumberEncoded = std::bitset<8*4>(chunkNumber).to_string();
std::string charactersEncoded = std::bitset<8*4>(data.size()).to_string();
+ std::cout << data.size() << std::endl;
std::string dims = std::to_string(x);
@@ -176,14 +180,25 @@ void Chunk::writeImage(std::string filename, uint chunkNumber, std::string origi
{
filenameEncoded += std::bitset<8>(filename.c_str()[i]).to_string();
}
+
std::cout << filenameEncoded << std::endl;
dims += " ";
dims += std::to_string(y);
dims += ("\n");
+ std::string filenameLengthEncoded = std::bitset<8*4>(filenameEncoded.size()).to_string();
+
+
+ std::string image = firstLine + comment + dims;
+
+ std::string header = chunkNumberEncoded + charactersEncoded + filenameLengthEncoded + filenameEncoded;
- std::string image = header + comment + dims;
+ std::cout << chunkNumberEncoded.size() << " - " << chunkNumberEncoded << std::endl;
+ std::cout << charactersEncoded.size() << " - " << charactersEncoded << std::endl;
+ std::cout << filenameLengthEncoded.size() << " - " << filenameLengthEncoded << std::endl;
+ std::cout << filenameEncoded.size() << " - " << filenameEncoded << std::endl;
+ std::cout << "HEADER: " << header << std::endl;
int target = x * y;