Lines Matching +full:data +full:- +full:width
2 * pnglite.c - pnglite library
24 #define abs(x) ((x) < 0? -(x):(x))
44 result = lseek(png->fd, offset, SEEK_CUR); in file_read()
46 result = read(png->fd, out, size * numel); in file_read()
76 switch (png->color_type) { in png_get_bpp()
91 bpp *= png->depth / 8; in png_get_bpp()
123 png->width = get_ul(ihdr+4); in png_read_ihdr()
124 png->height = get_ul(ihdr+8); in png_read_ihdr()
125 png->depth = ihdr[12]; in png_read_ihdr()
126 png->color_type = ihdr[13]; in png_read_ihdr()
127 png->compression_method = ihdr[14]; in png_read_ihdr()
128 png->filter_method = ihdr[15]; in png_read_ihdr()
129 png->interlace_method = ihdr[16]; in png_read_ihdr()
131 if (png->color_type == PNG_INDEXED) in png_read_ihdr()
134 if (png->depth != 8 && png->depth != 16) in png_read_ihdr()
137 if (png->interlace_method) in png_read_ihdr()
147 printf("\twidth:\t\t%d\n", png->width); in png_print_info()
148 printf("\theight:\t\t%d\n", png->height); in png_print_info()
149 printf("\tdepth:\t\t%d\n", png->depth); in png_print_info()
152 switch (png->color_type) { in png_print_info()
168 png->compression_method? in png_print_info()
171 png->filter_method? "unknown, this is not good":"adaptive"); in png_print_info()
173 png->interlace_method? "interlace":"no interlace"); in png_print_info()
182 png->image = NULL; in png_open()
183 png->fd = open(filename, O_RDONLY); in png_open()
184 if (png->fd == -1) in png_open()
201 png->bpp = (uint8_t)result; in png_open()
208 uint64_t size = png->width * png->height * png->bpp; in png_open()
211 png->image = malloc(size); in png_open()
212 if (png->image == NULL) in png_open()
217 result = png_get_data(png, png->image); in png_open()
220 free(png->image); in png_open()
221 (void) close(png->fd); in png_open()
222 png->fd = -1; in png_open()
232 (void) close(png->fd); in png_close()
233 png->fd = -1; in png_close()
234 free(png->image); in png_close()
235 png->image = NULL; in png_close()
244 png->zs = calloc(1, sizeof (z_stream)); in png_init_inflate()
246 stream = png->zs; in png_init_inflate()
252 free(png->zs); in png_init_inflate()
253 png->zs = NULL; in png_init_inflate()
257 stream->next_out = png->png_data; in png_init_inflate()
258 stream->avail_out = png->png_datalen; in png_init_inflate()
266 z_stream *stream = png->zs; in png_end_inflate()
273 printf("ZLIB says: %s\n", stream->msg); in png_end_inflate()
277 free(png->zs); in png_end_inflate()
278 png->zs = NULL; in png_end_inflate()
284 png_inflate(png_t *png, uint8_t *data, int len) in png_inflate() argument
287 z_stream *stream = png->zs; in png_inflate()
292 stream->next_in = data; in png_inflate()
293 stream->avail_in = len; in png_inflate()
298 printf("%s\n", stream->msg); in png_inflate()
302 if (stream->avail_in != 0) in png_inflate()
315 if (!png->readbuf || png->readbuflen < length) { in png_read_idat()
316 png->readbuf = realloc(png->readbuf, length); in png_read_idat()
317 png->readbuflen = length; in png_read_idat()
320 if (!png->readbuf) in png_read_idat()
323 if (file_read(png, png->readbuf, 1, length) != len) in png_read_idat()
328 calc_crc = crc32(calc_crc, (uint8_t *)png->readbuf, length); in png_read_idat()
336 return (png_inflate(png, png->readbuf, length)); in png_read_idat()
357 if (!png->png_data) { /* first IDAT */ in png_process_chunk()
358 png->png_datalen = png->width * png->height * in png_process_chunk()
359 png->bpp + png->height; in png_process_chunk()
360 png->png_data = malloc(png->png_datalen); in png_process_chunk()
363 if (!png->png_data) in png_process_chunk()
366 if (!png->zs) { in png_process_chunk()
389 a = out[i - stride]; in png_filter_sub()
422 a = out[i - stride]; in png_filter_average()
434 int p = (int)a + b - c; in png_paeth()
435 int pa = abs(p - a); in png_paeth()
436 int pb = abs(p - b); in png_paeth()
437 int pc = abs(p - c); in png_paeth()
462 a = out[i - stride]; in png_filter_paeth()
464 c = prev_line[i - stride]; in png_filter_paeth()
472 a = out[i - stride]; in png_filter_paeth()
484 png_unfilter(png_t *png, uint8_t *data) in png_unfilter() argument
489 uint8_t *filtered = png->png_data; in png_unfilter()
490 unsigned stride = png->bpp; in png_unfilter()
492 while (pos < png->png_datalen) { in png_unfilter()
497 if (png->depth == 16) { in png_unfilter()
498 for (i = 0; i < png->width * stride; i += 2) { in png_unfilter()
506 memcpy(data+outpos, filtered+pos, png->width * stride); in png_unfilter()
509 png_filter_sub(stride, filtered+pos, data+outpos, in png_unfilter()
510 png->width * stride); in png_unfilter()
514 png_filter_up(stride, filtered+pos, data+outpos, in png_unfilter()
515 data + outpos - (png->width*stride), in png_unfilter()
516 png->width*stride); in png_unfilter()
518 png_filter_up(stride, filtered+pos, data+outpos, in png_unfilter()
519 0, png->width*stride); in png_unfilter()
525 data+outpos, in png_unfilter()
526 data + outpos - (png->width*stride), in png_unfilter()
527 png->width*stride); in png_unfilter()
530 data+outpos, 0, png->width*stride); in png_unfilter()
536 data+outpos, in png_unfilter()
537 data + outpos - (png->width*stride), in png_unfilter()
538 png->width*stride); in png_unfilter()
541 data+outpos, 0, png->width*stride); in png_unfilter()
548 outpos += png->width * stride; in png_unfilter()
549 pos += png->width * stride; in png_unfilter()
556 png_get_data(png_t *png, uint8_t *data) in png_get_data() argument
560 png->zs = NULL; in png_get_data()
561 png->png_datalen = 0; in png_get_data()
562 png->png_data = NULL; in png_get_data()
563 png->readbuf = NULL; in png_get_data()
564 png->readbuflen = 0; in png_get_data()
569 if (png->readbuf) { in png_get_data()
570 free(png->readbuf); in png_get_data()
571 png->readbuflen = 0; in png_get_data()
573 if (png->zs) in png_get_data()
577 free(png->png_data); in png_get_data()
581 result = png_unfilter(png, data); in png_get_data()
583 free(png->png_data); in png_get_data()