Lines Matching refs:chunk

2465 unsigned lodepng_chunk_length(const unsigned char* chunk) {  in lodepng_chunk_length()  argument
2466 return lodepng_read32bitInt(&chunk[0]); in lodepng_chunk_length()
2469 void lodepng_chunk_type(char type[5], const unsigned char* chunk) { in lodepng_chunk_type() argument
2471 for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i]; in lodepng_chunk_type()
2475 unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) { in lodepng_chunk_type_equals() argument
2477 return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]); in lodepng_chunk_type_equals()
2480 unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) { in lodepng_chunk_ancillary() argument
2481 return((chunk[4] & 32) != 0); in lodepng_chunk_ancillary()
2484 unsigned char lodepng_chunk_private(const unsigned char* chunk) { in lodepng_chunk_private() argument
2485 return((chunk[6] & 32) != 0); in lodepng_chunk_private()
2488 unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) { in lodepng_chunk_safetocopy() argument
2489 return((chunk[7] & 32) != 0); in lodepng_chunk_safetocopy()
2492 unsigned char* lodepng_chunk_data(unsigned char* chunk) { in lodepng_chunk_data() argument
2493 return &chunk[8]; in lodepng_chunk_data()
2496 const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) { in lodepng_chunk_data_const() argument
2497 return &chunk[8]; in lodepng_chunk_data_const()
2500 unsigned lodepng_chunk_check_crc(const unsigned char* chunk) { in lodepng_chunk_check_crc() argument
2501 unsigned length = lodepng_chunk_length(chunk); in lodepng_chunk_check_crc()
2502 unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); in lodepng_chunk_check_crc()
2504 unsigned checksum = lodepng_crc32(&chunk[4], length + 4); in lodepng_chunk_check_crc()
2509 void lodepng_chunk_generate_crc(unsigned char* chunk) { in lodepng_chunk_generate_crc() argument
2510 unsigned length = lodepng_chunk_length(chunk); in lodepng_chunk_generate_crc()
2511 unsigned CRC = lodepng_crc32(&chunk[4], length + 4); in lodepng_chunk_generate_crc()
2512 lodepng_set32bitInt(chunk + 8 + length, CRC); in lodepng_chunk_generate_crc()
2515 unsigned char* lodepng_chunk_next(unsigned char* chunk, unsigned char* end) { in lodepng_chunk_next() argument
2516 if(chunk >= end || end - chunk < 12) return end; /*too small to contain a chunk*/ in lodepng_chunk_next()
2517 if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 in lodepng_chunk_next()
2518 && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { in lodepng_chunk_next()
2520 return chunk + 8; in lodepng_chunk_next()
2524 if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; in lodepng_chunk_next()
2525 result = chunk + total_chunk_length; in lodepng_chunk_next()
2526 if(result < chunk) return end; /*pointer overflow*/ in lodepng_chunk_next()
2531 const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk, const unsigned char* end)… in lodepng_chunk_next_const() argument
2532 if(chunk >= end || end - chunk < 12) return end; /*too small to contain a chunk*/ in lodepng_chunk_next_const()
2533 if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 in lodepng_chunk_next_const()
2534 && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { in lodepng_chunk_next_const()
2536 return chunk + 8; in lodepng_chunk_next_const()
2540 if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; in lodepng_chunk_next_const()
2541 result = chunk + total_chunk_length; in lodepng_chunk_next_const()
2542 if(result < chunk) return end; /*pointer overflow*/ in lodepng_chunk_next_const()
2547 unsigned char* lodepng_chunk_find(unsigned char* chunk, unsigned char* end, const char type[5]) { in lodepng_chunk_find() argument
2549 if(chunk >= end || end - chunk < 12) return 0; /* past file end: chunk + 12 > end */ in lodepng_chunk_find()
2550 if(lodepng_chunk_type_equals(chunk, type)) return chunk; in lodepng_chunk_find()
2551 chunk = lodepng_chunk_next(chunk, end); in lodepng_chunk_find()
2557 const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end,… in lodepng_chunk_find_const() argument
2559 if(chunk >= end || end - chunk < 12) return 0; /* past file end: chunk + 12 > end */ in lodepng_chunk_find_const()
2560 if(lodepng_chunk_type_equals(chunk, type)) return chunk; in lodepng_chunk_find_const()
2561 chunk = lodepng_chunk_next_const(chunk, end); in lodepng_chunk_find_const()
2567 unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk) { in lodepng_chunk_append() argument
2572 if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return 77; in lodepng_chunk_append()
2581 for(i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i]; in lodepng_chunk_append()
2590 static unsigned lodepng_chunk_init(unsigned char** chunk, in lodepng_chunk_init() argument
2597 *chunk = out->data + new_length - length - 12u; in lodepng_chunk_init()
2600 lodepng_set32bitInt(*chunk, length); in lodepng_chunk_init()
2603 lodepng_memcpy(*chunk + 4, type, 4); in lodepng_chunk_init()
2611 unsigned char* chunk; in lodepng_chunk_createv() local
2612 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, length, type)); in lodepng_chunk_createv()
2615 lodepng_memcpy(chunk + 8, data, length); in lodepng_chunk_createv()
2618 lodepng_chunk_generate_crc(chunk); in lodepng_chunk_createv()
4709 const unsigned char* chunk = in + pos; in lodepng_inspect_chunk() local
4716 chunkLength = lodepng_chunk_length(chunk); in lodepng_inspect_chunk()
4718 data = lodepng_chunk_data_const(chunk); in lodepng_inspect_chunk()
4721 if(lodepng_chunk_type_equals(chunk, "PLTE")) { in lodepng_inspect_chunk()
4723 } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { in lodepng_inspect_chunk()
4726 } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { in lodepng_inspect_chunk()
4728 } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { in lodepng_inspect_chunk()
4730 } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { in lodepng_inspect_chunk()
4732 } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { in lodepng_inspect_chunk()
4734 } else if(lodepng_chunk_type_equals(chunk, "tIME")) { in lodepng_inspect_chunk()
4736 } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { in lodepng_inspect_chunk()
4738 } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { in lodepng_inspect_chunk()
4740 } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { in lodepng_inspect_chunk()
4742 } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { in lodepng_inspect_chunk()
4744 } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { in lodepng_inspect_chunk()
4753 if(lodepng_chunk_check_crc(chunk)) return 57; /*invalid CRC*/ in lodepng_inspect_chunk()
4764 const unsigned char* chunk; in decodeGeneric() local
4793 chunk = &in[33]; /*first byte of the first chunk after the header*/ in decodeGeneric()
4802 if((size_t)((chunk - in) + 12) > insize || chunk < in) { in decodeGeneric()
4808 chunkLength = lodepng_chunk_length(chunk); in decodeGeneric()
4815 if((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in) { in decodeGeneric()
4819 data = lodepng_chunk_data_const(chunk); in decodeGeneric()
4824 if(lodepng_chunk_type_equals(chunk, "IDAT")) { in decodeGeneric()
4833 } else if(lodepng_chunk_type_equals(chunk, "IEND")) { in decodeGeneric()
4836 } else if(lodepng_chunk_type_equals(chunk, "PLTE")) { in decodeGeneric()
4843 } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { in decodeGeneric()
4851 } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { in decodeGeneric()
4854 } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { in decodeGeneric()
4860 } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { in decodeGeneric()
4866 } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { in decodeGeneric()
4872 } else if(lodepng_chunk_type_equals(chunk, "tIME")) { in decodeGeneric()
4875 } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { in decodeGeneric()
4878 } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { in decodeGeneric()
4881 } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { in decodeGeneric()
4884 } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { in decodeGeneric()
4887 } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { in decodeGeneric()
4893 if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) { in decodeGeneric()
4901 … &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); in decodeGeneric()
4908 if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/ in decodeGeneric()
4911 if(!IEND) chunk = lodepng_chunk_next_const(chunk, in + insize); in decodeGeneric()
5104 unsigned char *chunk, *data; in addChunk_IHDR() local
5105 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 13, "IHDR")); in addChunk_IHDR()
5106 data = chunk + 8; in addChunk_IHDR()
5116 lodepng_chunk_generate_crc(chunk); in addChunk_IHDR()
5122 unsigned char* chunk; in addChunk_PLTE() local
5125 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, info->palettesize * 3, "PLTE")); in addChunk_PLTE()
5129 chunk[j++] = info->palette[i * 4 + 0]; in addChunk_PLTE()
5130 chunk[j++] = info->palette[i * 4 + 1]; in addChunk_PLTE()
5131 chunk[j++] = info->palette[i * 4 + 2]; in addChunk_PLTE()
5134 lodepng_chunk_generate_crc(chunk); in addChunk_PLTE()
5139 unsigned char* chunk = 0; in addChunk_tRNS() local
5149 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, amount, "tRNS")); in addChunk_tRNS()
5151 for(i = 0; i != amount; ++i) chunk[8 + i] = info->palette[4 * i + 3]; in addChunk_tRNS()
5155 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "tRNS")); in addChunk_tRNS()
5156 chunk[8] = (unsigned char)(info->key_r >> 8); in addChunk_tRNS()
5157 chunk[9] = (unsigned char)(info->key_r & 255); in addChunk_tRNS()
5161 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "tRNS")); in addChunk_tRNS()
5162 chunk[8] = (unsigned char)(info->key_r >> 8); in addChunk_tRNS()
5163 chunk[9] = (unsigned char)(info->key_r & 255); in addChunk_tRNS()
5164 chunk[10] = (unsigned char)(info->key_g >> 8); in addChunk_tRNS()
5165 chunk[11] = (unsigned char)(info->key_g & 255); in addChunk_tRNS()
5166 chunk[12] = (unsigned char)(info->key_b >> 8); in addChunk_tRNS()
5167 chunk[13] = (unsigned char)(info->key_b & 255); in addChunk_tRNS()
5171 if(chunk) lodepng_chunk_generate_crc(chunk); in addChunk_tRNS()
5196 unsigned char* chunk = 0; in addChunk_tEXt() local
5200 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, size, "tEXt")); in addChunk_tEXt()
5201 lodepng_memcpy(chunk + 8, keyword, keysize); in addChunk_tEXt()
5202 chunk[8 + keysize] = 0; /*null termination char*/ in addChunk_tEXt()
5203 lodepng_memcpy(chunk + 9 + keysize, textstring, textsize); in addChunk_tEXt()
5204 lodepng_chunk_generate_crc(chunk); in addChunk_tEXt()
5211 unsigned char* chunk = 0; in addChunk_zTXt() local
5222 error = lodepng_chunk_init(&chunk, out, size, "zTXt"); in addChunk_zTXt()
5225 lodepng_memcpy(chunk + 8, keyword, keysize); in addChunk_zTXt()
5226 chunk[8 + keysize] = 0; /*null termination char*/ in addChunk_zTXt()
5227 chunk[9 + keysize] = 0; /*compression method: 0*/ in addChunk_zTXt()
5228 lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); in addChunk_zTXt()
5229 lodepng_chunk_generate_crc(chunk); in addChunk_zTXt()
5239 unsigned char* chunk = 0; in addChunk_iTXt() local
5253 error = lodepng_chunk_init(&chunk, out, size, "iTXt"); in addChunk_iTXt()
5257 lodepng_memcpy(chunk + pos, keyword, keysize); in addChunk_iTXt()
5259 chunk[pos++] = 0; /*null termination char*/ in addChunk_iTXt()
5260 chunk[pos++] = (compress ? 1 : 0); /*compression flag*/ in addChunk_iTXt()
5261 chunk[pos++] = 0; /*compression method: 0*/ in addChunk_iTXt()
5262 lodepng_memcpy(chunk + pos, langtag, langsize); in addChunk_iTXt()
5264 chunk[pos++] = 0; /*null termination char*/ in addChunk_iTXt()
5265 lodepng_memcpy(chunk + pos, transkey, transsize); in addChunk_iTXt()
5267 chunk[pos++] = 0; /*null termination char*/ in addChunk_iTXt()
5269 lodepng_memcpy(chunk + pos, compressed, compressedsize); in addChunk_iTXt()
5271 lodepng_memcpy(chunk + pos, textstring, textsize); in addChunk_iTXt()
5273 lodepng_chunk_generate_crc(chunk); in addChunk_iTXt()
5281 unsigned char* chunk = 0; in addChunk_bKGD() local
5283 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "bKGD")); in addChunk_bKGD()
5284 chunk[8] = (unsigned char)(info->background_r >> 8); in addChunk_bKGD()
5285 chunk[9] = (unsigned char)(info->background_r & 255); in addChunk_bKGD()
5287 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "bKGD")); in addChunk_bKGD()
5288 chunk[8] = (unsigned char)(info->background_r >> 8); in addChunk_bKGD()
5289 chunk[9] = (unsigned char)(info->background_r & 255); in addChunk_bKGD()
5290 chunk[10] = (unsigned char)(info->background_g >> 8); in addChunk_bKGD()
5291 chunk[11] = (unsigned char)(info->background_g & 255); in addChunk_bKGD()
5292 chunk[12] = (unsigned char)(info->background_b >> 8); in addChunk_bKGD()
5293 chunk[13] = (unsigned char)(info->background_b & 255); in addChunk_bKGD()
5295 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 1, "bKGD")); in addChunk_bKGD()
5296 chunk[8] = (unsigned char)(info->background_r & 255); /*palette index*/ in addChunk_bKGD()
5298 if(chunk) lodepng_chunk_generate_crc(chunk); in addChunk_bKGD()
5303 unsigned char* chunk; in addChunk_tIME() local
5304 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 7, "tIME")); in addChunk_tIME()
5305 chunk[8] = (unsigned char)(time->year >> 8); in addChunk_tIME()
5306 chunk[9] = (unsigned char)(time->year & 255); in addChunk_tIME()
5307 chunk[10] = (unsigned char)time->month; in addChunk_tIME()
5308 chunk[11] = (unsigned char)time->day; in addChunk_tIME()
5309 chunk[12] = (unsigned char)time->hour; in addChunk_tIME()
5310 chunk[13] = (unsigned char)time->minute; in addChunk_tIME()
5311 chunk[14] = (unsigned char)time->second; in addChunk_tIME()
5312 lodepng_chunk_generate_crc(chunk); in addChunk_tIME()
5317 unsigned char* chunk; in addChunk_pHYs() local
5318 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 9, "pHYs")); in addChunk_pHYs()
5319 lodepng_set32bitInt(chunk + 8, info->phys_x); in addChunk_pHYs()
5320 lodepng_set32bitInt(chunk + 12, info->phys_y); in addChunk_pHYs()
5321 chunk[16] = info->phys_unit; in addChunk_pHYs()
5322 lodepng_chunk_generate_crc(chunk); in addChunk_pHYs()
5327 unsigned char* chunk; in addChunk_gAMA() local
5328 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 4, "gAMA")); in addChunk_gAMA()
5329 lodepng_set32bitInt(chunk + 8, info->gama_gamma); in addChunk_gAMA()
5330 lodepng_chunk_generate_crc(chunk); in addChunk_gAMA()
5335 unsigned char* chunk; in addChunk_cHRM() local
5336 CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 32, "cHRM")); in addChunk_cHRM()
5337 lodepng_set32bitInt(chunk + 8, info->chrm_white_x); in addChunk_cHRM()
5338 lodepng_set32bitInt(chunk + 12, info->chrm_white_y); in addChunk_cHRM()
5339 lodepng_set32bitInt(chunk + 16, info->chrm_red_x); in addChunk_cHRM()
5340 lodepng_set32bitInt(chunk + 20, info->chrm_red_y); in addChunk_cHRM()
5341 lodepng_set32bitInt(chunk + 24, info->chrm_green_x); in addChunk_cHRM()
5342 lodepng_set32bitInt(chunk + 28, info->chrm_green_y); in addChunk_cHRM()
5343 lodepng_set32bitInt(chunk + 32, info->chrm_blue_x); in addChunk_cHRM()
5344 lodepng_set32bitInt(chunk + 36, info->chrm_blue_y); in addChunk_cHRM()
5345 lodepng_chunk_generate_crc(chunk); in addChunk_cHRM()
5356 unsigned char* chunk = 0; in addChunk_iCCP() local
5366 error = lodepng_chunk_init(&chunk, out, size, "iCCP"); in addChunk_iCCP()
5369 lodepng_memcpy(chunk + 8, info->iccp_name, keysize); in addChunk_iCCP()
5370 chunk[8 + keysize] = 0; /*null termination char*/ in addChunk_iCCP()
5371 chunk[9 + keysize] = 0; /*compression method: 0*/ in addChunk_iCCP()
5372 lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); in addChunk_iCCP()
5373 lodepng_chunk_generate_crc(chunk); in addChunk_iCCP()