From 397984d23d0dd1c89c0a744ba70543c137c69eb6 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 7 Apr 2015 18:12:06 +1000 Subject: [PATCH] + bitmap_unpack() --- src/bitmap.c | 22 ++++++++++++++++++++++ src/bitmap.h | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/bitmap.c b/src/bitmap.c index 3e62db9..46d339a 100644 --- a/src/bitmap.c +++ b/src/bitmap.c @@ -67,3 +67,25 @@ bitmap_diffmap(unsigned char *diff, return i; } + +size_t +bitmap_unpack(const unsigned char *map, + unsigned char ** const buf) { + size_t buf_size = BITMAP_BITS; + uint16_t *p, row, mask; + unsigned char *q = NULL; + + CALLOC(*buf, buf_size, sizeof(char)); + + p = (uint16_t *) map; + q = *buf; + for (size_t i = 0; i < BITMAP_SIDE; i++, p++) { + row = *p; mask = 0x1; + for (size_t j = 0; j < 16; j++, q++) { + *q = (row & mask) ? 0xFF : 0x00; + mask <<= 1; + } + } + + return buf_size; +} diff --git a/src/bitmap.h b/src/bitmap.h index dbe65bf..b5a3457 100644 --- a/src/bitmap.h +++ b/src/bitmap.h @@ -15,4 +15,8 @@ int bitmap_diffmap(unsigned char *diff, const unsigned char *a, const unsigned char *b); + +size_t +bitmap_unpack(const unsigned char *map, + unsigned char ** const buf); #endif