Program Listing for File libcacaoimage.hpp
↰ Return to documentation for file (libs/image/include/libcacaoimage.hpp
)
#pragma once
#include <vector>
#include <istream>
#include <ostream>
#include <cstdint>
namespace libcacaoimage {
struct Image {
unsigned int w;
unsigned int h;
enum class Layout : uint8_t {
Grayscale = 1,
RGB = 3,
RGBA = 4
} layout;
uint8_t bitsPerChannel;
std::vector<unsigned char> data;
enum class Format {
PNG,
JPEG,
WebP,
TGA,
TIFF,
} format;
int quality;
bool lossy;
};
namespace decode {
Image DecodeGeneric(std::istream& input);
Image DecodePNG(std::istream& input);
Image DecodeJPEG(std::istream& input);
Image DecodeWebP(std::istream& input);
Image DecodeTGA(std::istream& input);
Image DecodeTIFF(std::istream& input);
}
namespace encode {
std::size_t Reencode(const Image& src, std::ostream& out);
std::size_t EncodePNG(const Image& src, std::ostream& out);
std::size_t EncodeJPEG(const Image& src, std::ostream& out);
std::size_t EncodeWebP(const Image& src, std::ostream& out);
std::size_t EncodeTGA(const Image& src, std::ostream& out);
std::size_t EncodeTIFF(const Image& src, std::ostream& out);
}
Image Convert16To8BitColor(const Image& src);
Image Flip(const Image& src);
Image ChangeChannelLayout(const Image& src, Image::Layout layout);
}