#include <stdint.h>
#include <stddef.h>
namespace ETCPAK_NS {
void CompressEtc1Rgb(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressEtc1RgbDither(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressEtc2Rgb(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width, bool useHeuristics);
void CompressEtc2Rgba(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width, bool useHeuristics);
void CompressEacR(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressEacRg(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressBc1(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressBc1Dither(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressBc3(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressBc4(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void CompressBc5(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width);
void DecodeRGB(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeRGBA(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeR(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height, bool isSigned);
void DecodeRG(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height, bool isSigned);
void DecodeBc1(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeBc3(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeBc4(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeBc5(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
void DecodeBc7(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height);
}
#define ETCPAK_CONCAT2(a, b) a##b
#define ETCPAK_CONCAT(a, b) ETCPAK_CONCAT2(a, b)
#define ETCPAK_FN(name) ETCPAK_CONCAT(ETCPAK_PREFIX, name)
extern "C" {
void ETCPAK_FN(CompressEtc1Rgb)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressEtc1Rgb(src, dst, blocks, width);
}
void ETCPAK_FN(CompressEtc1RgbDither)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressEtc1RgbDither(src, dst, blocks, width);
}
void ETCPAK_FN(CompressEtc2Rgb)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width, bool useHeuristics) {
ETCPAK_NS::CompressEtc2Rgb(src, dst, blocks, width, useHeuristics);
}
void ETCPAK_FN(CompressEtc2Rgba)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width, bool useHeuristics) {
ETCPAK_NS::CompressEtc2Rgba(src, dst, blocks, width, useHeuristics);
}
void ETCPAK_FN(CompressEacR)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressEacR(src, dst, blocks, width);
}
void ETCPAK_FN(CompressEacRg)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressEacRg(src, dst, blocks, width);
}
void ETCPAK_FN(CompressBc1)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressBc1(src, dst, blocks, width);
}
void ETCPAK_FN(CompressBc1Dither)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressBc1Dither(src, dst, blocks, width);
}
void ETCPAK_FN(CompressBc3)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressBc3(src, dst, blocks, width);
}
void ETCPAK_FN(CompressBc4)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressBc4(src, dst, blocks, width);
}
void ETCPAK_FN(CompressBc5)(const uint32_t* src, uint64_t* dst, uint32_t blocks, size_t width) {
ETCPAK_NS::CompressBc5(src, dst, blocks, width);
}
void ETCPAK_FN(DecodeRGB)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeRGB(src, dst, width, height);
}
void ETCPAK_FN(DecodeRGBA)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeRGBA(src, dst, width, height);
}
void ETCPAK_FN(DecodeR)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height, bool isSigned) {
ETCPAK_NS::DecodeR(src, dst, width, height, isSigned);
}
void ETCPAK_FN(DecodeRG)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height, bool isSigned) {
ETCPAK_NS::DecodeRG(src, dst, width, height, isSigned);
}
void ETCPAK_FN(DecodeBc1)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeBc1(src, dst, width, height);
}
void ETCPAK_FN(DecodeBc3)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeBc3(src, dst, width, height);
}
void ETCPAK_FN(DecodeBc4)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeBc4(src, dst, width, height);
}
void ETCPAK_FN(DecodeBc5)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeBc5(src, dst, width, height);
}
void ETCPAK_FN(DecodeBc7)(const uint64_t* src, uint32_t* dst, int32_t width, int32_t height) {
ETCPAK_NS::DecodeBc7(src, dst, width, height);
}
}