From 9f64a8229b5299c6815bef7b9f4180f9232ed52e Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Wed, 29 Jan 2014 00:54:53 -0500 Subject: [PATCH] liblbx: Kill the old LBX image API. Now that both users have been ported we can get rid of this cruft. --- src/image.c | 184 +--------------------------------------------------- src/image.h | 3 - 2 files changed, 3 insertions(+), 184 deletions(-) diff --git a/src/image.c b/src/image.c index 0caca96..786e17a 100644 --- a/src/image.c +++ b/src/image.c @@ -64,10 +64,6 @@ struct lbx_image_priv { unsigned currentx, currenty, currentn; int read_state; - int currentframe; - unsigned char **framedata; - unsigned char **mask; - unsigned long offsets[]; }; @@ -91,8 +87,6 @@ static struct lbx_image_priv *lbx_img_init(unsigned char hdr[static HDR_LEN]) .pub.leadin = hdr[8], .pub.chunk = hdr[9], .flags = unpack_16_le(hdr+10), - - .currentframe = -1, }; if (img->flags & FLAG_OVERWRITE) @@ -213,64 +207,6 @@ struct lbx_image *lbx_img_fopen(const char *file) return lbx_img_open(p, &lbx_pipe_fops, pipe_close); } -static int _lbx_drawrow(struct lbx_image_priv *img) -{ - unsigned char *pos; - unsigned x, y; - long rc; - - assert(img->framedata); - assert(img->mask); - - rc = lbx_img_read_row_header(&img->pub, &x, &y); - if (rc == 0) - return 1; - else if (rc < 0) - return -1; - - pos = &img->framedata[y][x]; - rc = lbx_img_read_row_data(&img->pub, pos); - if (rc < 0) - return -1; - memset(&img->mask[y][x], 1, rc); - - return 0; -} - -static unsigned char **allocframebuffer(size_t width, size_t height) -{ - unsigned char **new, *tmp; - size_t i; - - if (height > SIZE_MAX / sizeof *new) { - lbx_error_raise(LBX_ENOMEM); - return NULL; - } - - /* Ensure that there is at least one row in the framebuffer. */ - if (height == 0 || width == 0) - width = height = 1; - - tmp = calloc(height, width); - if (!tmp) { - lbx_error_raise(LBX_ENOMEM); - return NULL; - } - - new = malloc(height * sizeof *new); - if (!new) { - lbx_error_raise(LBX_ENOMEM); - free(tmp); - return NULL; - } - - for (i = 0; i < height; i++) { - new[i] = tmp + i * width; - } - - return new; -} - int lbx_img_seek(struct lbx_image *pub, unsigned frame) { struct lbx_image_priv *img = (struct lbx_image_priv *)pub; @@ -409,100 +345,6 @@ long lbx_img_read_row_data(struct lbx_image *pub, void *buf) return img->currentn; } -static unsigned char **read_raw_frame(struct lbx_image_priv *img, int frame) -{ - unsigned long size = img->pub.width * img->pub.height; - int rc; - - assert(img->flags & FLAG_RAW); - - rc = lbx_img_seek(&img->pub, frame); - if (rc < 0) - return NULL; - - if (img->fops->read(img->framedata[0], size, img->f) != size) { - if (img->fops->eof(img->f)) - lbx_error_raise(LBX_EEOF); - return NULL; - } - memset(img->mask[0], 1, size); - - if (img->fops->tell(img->f) > img->offsets[frame+1]) { - lbx_error_raise(LBX_EFORMAT); - return NULL; - } - - return img->framedata; -} - -unsigned char **lbx_img_getframe(struct lbx_image *pub, int frame) -{ - struct lbx_image_priv *img = (struct lbx_image_priv *)pub; - unsigned char buf[4]; - - if (frame >= pub->frames || frame < 0) { - lbx_error_raise(LBX_EINVAL); - return NULL; - } - - if (!img->framedata) { - img->framedata = allocframebuffer(pub->width, pub->height); - if (!img->framedata) - return NULL; - } - - if (!img->mask) { - img->mask = allocframebuffer(pub->width, pub->height); - if (!img->mask) - return NULL; - } - - if (img->flags & FLAG_RAW) - return read_raw_frame(img, frame); - - if ((img->flags & FLAG_OVERWRITE) - || (pub->chunk && !(frame % pub->chunk))) { - /* Clear the slate. */ - img->currentframe = -1; - memset(img->framedata[0], 0, pub->width * pub->height); - memset(img->mask[0], 0, pub->width * pub->height); - } else { - /* Start over if we are backtracking. */ - if (img->currentframe > frame) { - memset(img->mask[0], 0, pub->width * pub->height); - img->currentframe = -1; - } - - /* We must have previous frame decoded to continue. */ - if (frame > img->currentframe + 1) { - if (!lbx_img_getframe(pub, frame-1)) - return NULL; - } - } - - if (img->currentframe != frame) { - int rc; - - rc = lbx_img_seek(pub, frame); - if (rc < 0) - return NULL; - - do { - rc = _lbx_drawrow(img); - if (rc == -1) - return NULL; - - if (img->fops->tell(img->f) > img->offsets[frame+1]) { - lbx_error_raise(LBX_EFORMAT); - return NULL; - } - } while (!rc); - } - - img->currentframe = frame; - return img->framedata; -} - int lbx_img_loadpalette(void *f, const struct lbx_file_ops *fops, struct lbx_colour palette[static 256]) @@ -593,35 +435,15 @@ void lbx_img_getinfo(struct lbx_image *pub, struct lbx_imginfo *info) } } -unsigned char **lbx_img_getmask(struct lbx_image *pub) -{ - struct lbx_image_priv *img = (struct lbx_image_priv *)pub; - - return img->mask; -} - int lbx_img_close(struct lbx_image *pub) { struct lbx_image_priv *img = (struct lbx_image_priv *)pub; int rc = 0; - if (img) { - if (img->framedata) { - free(img->framedata[0]); - free(img->framedata); - } - - if (img->mask) { - free(img->mask[0]); - free(img->mask); - } - - if (img && img->dtor) { - rc = img->dtor(img->f); - } - - free(img); + if (img && img->dtor) { + rc = img->dtor(img->f); } + free(img); return rc; } diff --git a/src/image.h b/src/image.h index 880f7de..10bd718 100644 --- a/src/image.h +++ b/src/image.h @@ -28,9 +28,6 @@ int lbx_img_seek(struct lbx_image *img, unsigned frame); long lbx_img_read_row_header(struct lbx_image *img, unsigned *x, unsigned *y); long lbx_img_read_row_data(struct lbx_image *img, void *buf); -unsigned char **lbx_img_getframe(struct lbx_image *img, int frame); -unsigned char **lbx_img_getmask(struct lbx_image *img); - int lbx_img_loadpalette(void *f, const struct lbx_file_ops *fops, struct lbx_colour palette[static 256]); int lbx_img_getpalette(struct lbx_image *img, -- 2.43.0