Mercurial > hg > dmlib
comparison tools/lib64gfx.c @ 1713:0a9110b4d036
Add few RLE helper functions.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 06 Jun 2018 14:31:04 +0300 |
parents | 1f0fac3af8e3 |
children | c0c6fd8b288a |
comparison
equal
deleted
inserted
replaced
1712:1f4ed247763d | 1713:0a9110b4d036 |
---|---|
325 | 325 |
326 dmFree(stats); | 326 dmFree(stats); |
327 } | 327 } |
328 | 328 |
329 | 329 |
330 static void dmSetupRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg) | 330 void dmSetupRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg) |
331 { | 331 { |
332 if (cfg->flags & DM_RLE_BACKWARDS_INPUT) | 332 if (cfg->flags & DM_RLE_BACKWARDS_INPUT) |
333 { | 333 { |
334 src->offs = src->len - 1; | 334 src->offs = src->len - 1; |
335 src->backwards = TRUE; | 335 src->backwards = TRUE; |
338 if (cfg->flags & DM_RLE_BACKWARDS_OUTPUT) | 338 if (cfg->flags & DM_RLE_BACKWARDS_OUTPUT) |
339 { | 339 { |
340 dst->backwards = TRUE; | 340 dst->backwards = TRUE; |
341 dst->offs = dst->size - 1; | 341 dst->offs = dst->size - 1; |
342 } | 342 } |
343 void dmFinishRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg) | |
344 { | |
345 if (cfg->flags & DM_RLE_BACKWARDS_OUTPUT) | |
346 { | |
347 memmove(dst->data, dst->data + dst->offs, dst->len); | |
348 dst->offs = 0; | |
349 } | |
350 } | |
351 | |
352 | |
353 int dmGenericRLEOutputRun(DMGrowBuf *dst, const DMCompParams *cfg, const Uint8 data, const unsigned int count) | |
354 { | |
355 unsigned int scount; | |
356 for (scount = count; scount; scount--) | |
357 { | |
358 if (!dmGrowBufPutU8(dst, data)) | |
359 { | |
360 return dmError(DMERR_MALLOC, | |
361 "%s: RLE: Could not output RLE run %d x 0x%02x @ " | |
362 "offs=0x%" DM_PRIx_SIZE_T ", size=0x%" DM_PRIx_SIZE_T ".\n", | |
363 cfg->func, count, data, dst->offs, dst->size); | |
364 } | |
365 } | |
366 return DMERR_OK; | |
343 } | 367 } |
344 | 368 |
345 | 369 |
346 int dmDecodeGenericRLE(DMGrowBuf *dst, const DMGrowBuf *psrc, const DMCompParams *cfg) | 370 int dmDecodeGenericRLE(DMGrowBuf *dst, const DMGrowBuf *psrc, const DMCompParams *cfg) |
347 { | 371 { |