Mercurial > hg > dmlib
view src/dmgrowbuf.h @ 2208:90ec1ec89c56
Revamp the palette handling in lib64gfx somewhat, add helper functions to
lib64util for handling external palette file options and add support for
specifying one of the "internal" palettes or external (.act) palette file to
gfxconv and 64vw.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 14 Jun 2019 05:01:12 +0300 |
parents | 3d4bb20f6739 |
children | 732fa926a5ef |
line wrap: on
line source
/* * DMLib * -- Growable buffer implementation * Programmed and designed by Matti 'ccr' Hamalainen * (C) Copyright 2018 Tecnic Software productions (TNSP) */ #ifndef DMGROWBUF_H #define DMGROWBUF_H #include "dmlib.h" #ifdef __cplusplus extern "C" { #endif typedef struct { Uint8 *data; // Actually allocated data pointer size_t offs, // Current offset size, // Actual allocated size len, // Size requested mingrow; // Minimum amount of bytes the allocation size grows by BOOL backwards, // TRUE if the buffer grows backwards (e.g. "offs" moves backwards) literal, // TRUE if dmGrowBufPut*() functions stores data "literally" in backwards mode is_const; // TRUE will cause any reallocs etc. modifications to fail } DMGrowBuf; int dmGrowBufInit(DMGrowBuf *buf); int dmGrowBufAlloc(DMGrowBuf *buf, const size_t initial, const size_t mingrow); void dmGrowBufFree(DMGrowBuf *buf); DMGrowBuf * dmGrowBufCopy(DMGrowBuf *dst, const DMGrowBuf *src, const size_t enlarge); DMGrowBuf * dmGrowBufCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t enlarge); DMGrowBuf * dmGrowBufConstCopy(DMGrowBuf *dst, const DMGrowBuf *src); DMGrowBuf * dmGrowBufConstCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs); DMGrowBuf * dmGrowBufConstCreateFrom(DMGrowBuf *buf, Uint8 *data, size_t len); BOOL dmGrowBufGrow(DMGrowBuf *buf, const size_t amount); BOOL dmGrowBufCheckGrow(DMGrowBuf *buf, const size_t nsize); BOOL dmGrowBufPut(DMGrowBuf *buf, const Uint8 *data, const size_t len); BOOL dmGrowBufPutU8(DMGrowBuf *buf, const Uint8 value); BOOL dmGrowBufPutU16BE(DMGrowBuf *buf, const Uint16 val); BOOL dmGrowBufPutU16LE(DMGrowBuf *buf, const Uint16 val); BOOL dmGrowBufPutU32BE(DMGrowBuf *buf, const Uint32 val); BOOL dmGrowBufPutU32LE(DMGrowBuf *buf, const Uint32 val); BOOL dmGrowBufGetU8(DMGrowBuf *buf, Uint8 *value); #ifdef __cplusplus } #endif #endif // DMGROWBUF_H