From e2e9be992b948595086db6ac62cfb5b822c622d6 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 18 Mar 2026 16:32:29 +1300 Subject: feat: Started on webp implementation Currently very basic, can only read simple things such as width and height --- src/WEBPImage.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/WEBPImage.h (limited to 'src/WEBPImage.h') diff --git a/src/WEBPImage.h b/src/WEBPImage.h new file mode 100644 index 0000000..8a87b08 --- /dev/null +++ b/src/WEBPImage.h @@ -0,0 +1,38 @@ +#pragma once + +#include "image.h" +#include "reader.h" + +#define BIT_BUFFER_SIZE 1024 + +namespace TehImage +{ + typedef enum { + PREDICTOR_TRANSFORM = 0, + COLOR_TRANSFORM = 1, + SUBTRACT_GREEN_TRANSFORM = 2, + COLOR_INDEXING_TRANSFORM = 3, + } TransformType; + + class WEBPImage : public Image + { + public: + WEBPImage() = default; + ~WEBPImage() = default; + + WEBPImage(const Image& other) : Image(other) {} + + int readFromFile(std::string filename) override; + int writeToFile(std::string filename) override; + + private: + std::unique_ptr reader; + uint8_t bitBuffer; + size_t bitBufferPos = 0; + + bool readBit(); + uint32_t readBits(size_t count); + void readFourCC(char* dest); + void refreshBitBuffer(); + }; +} -- cgit v1.2.3