aboutsummaryrefslogtreecommitdiff
path: root/src/WEBPImage.h
diff options
context:
space:
mode:
authorDylan <boss@tehbox.org>2026-03-18 16:32:29 +1300
committerDylan <boss@tehbox.org>2026-03-18 16:32:29 +1300
commite2e9be992b948595086db6ac62cfb5b822c622d6 (patch)
tree83246401b9bbb4a6a9f302cf58f3ef6bd39b9c63 /src/WEBPImage.h
parent93a78ac64327b53f53952b625c7ce8a11bcc8651 (diff)
downloadtehimage-webp.tar.gz
tehimage-webp.zip
feat: Started on webp implementationwebp
Currently very basic, can only read simple things such as width and height
Diffstat (limited to 'src/WEBPImage.h')
-rw-r--r--src/WEBPImage.h38
1 files changed, 38 insertions, 0 deletions
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> reader;
+ uint8_t bitBuffer;
+ size_t bitBufferPos = 0;
+
+ bool readBit();
+ uint32_t readBits(size_t count);
+ void readFourCC(char* dest);
+ void refreshBitBuffer();
+ };
+}