22 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
25 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
33 # ifdef PNG_USER_MEM_SUPPORTED
34 return (png_create_struct_2(type,
NULL,
NULL));
39 png_create_struct_2,(
int type, png_malloc_ptr malloc_fn,
png_voidp mem_ptr),
55 # ifdef PNG_USER_MEM_SUPPORTED
56 if (malloc_fn !=
NULL)
59 memset(&dummy_struct, 0,
sizeof dummy_struct);
60 dummy_struct.mem_ptr=mem_ptr;
67 if (struct_ptr !=
NULL)
77 # ifdef PNG_USER_MEM_SUPPORTED
87 if (struct_ptr !=
NULL)
89 # ifdef PNG_USER_MEM_SUPPORTED
93 memset(&dummy_struct, 0,
sizeof dummy_struct);
94 dummy_struct.mem_ptr=mem_ptr;
95 (*(free_fn))(&dummy_struct, struct_ptr);
100 farfree (struct_ptr);
128 ret = (png_malloc(png_ptr, size));
141 if (png_ptr ==
NULL || size == 0)
144 # ifdef PNG_USER_MEM_SUPPORTED
145 if (png_ptr->malloc_fn !=
NULL)
146 ret = ((
png_voidp)(*(png_ptr->malloc_fn))(png_ptr, size));
149 ret = (png_malloc_default(png_ptr, size));
163 if (png_ptr ==
NULL || size == 0)
166 # ifdef PNG_MAX_MALLOC_64K
176 if (size != (
size_t)size)
181 if (png_ptr->offset_table ==
NULL)
184 ret = farmalloc(size);
190 int i, mem_level, window_bits;
201 png_ptr->zlib_window_bits >= png_ptr->zlib_text_window_bits ?
202 png_ptr->zlib_window_bits : png_ptr->zlib_text_window_bits;
204 if (window_bits > 14)
205 num_blocks = (
int)(1 << (window_bits - 14));
211 png_ptr->zlib_mem_level >= png_ptr->zlib_text_mem_level ?
212 png_ptr->zlib_mem_level : png_ptr->zlib_text_mem_level;
215 num_blocks += (
int)(1 << (mem_level - 7));
222 table = farmalloc(total_size);
226 # ifndef PNG_USER_MEM_SUPPORTED
238 # ifndef PNG_USER_MEM_SUPPORTED
241 "Farmalloc didn't return normalized pointer");
245 "Farmalloc didn't return normalized pointer");
250 png_ptr->offset_table =
table;
251 png_ptr->offset_table_ptr = farmalloc(num_blocks *
254 if (png_ptr->offset_table_ptr ==
NULL)
256 # ifndef PNG_USER_MEM_SUPPORTED
273 for (i = 0; i < num_blocks; i++)
275 png_ptr->offset_table_ptr[
i] = (
png_bytep)hptr;
279 png_ptr->offset_table_number = num_blocks;
280 png_ptr->offset_table_count = 0;
281 png_ptr->offset_table_count_free = 0;
285 if (png_ptr->offset_table_count >= png_ptr->offset_table_number)
287 # ifndef PNG_USER_MEM_SUPPORTED
297 ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++];
301 ret = farmalloc(size);
303 # ifndef PNG_USER_MEM_SUPPORTED
327 # ifdef PNG_USER_MEM_SUPPORTED
328 if (png_ptr->free_fn !=
NULL)
330 (*(png_ptr->free_fn))(png_ptr, ptr);
346 if (png_ptr->offset_table !=
NULL)
350 for (i = 0; i < png_ptr->offset_table_count; i++)
352 if (ptr == png_ptr->offset_table_ptr[i])
355 png_ptr->offset_table_count_free++;
359 if (png_ptr->offset_table_count_free == png_ptr->offset_table_count)
361 farfree(png_ptr->offset_table);
362 farfree(png_ptr->offset_table_ptr);
363 png_ptr->offset_table =
NULL;
364 png_ptr->offset_table_ptr =
NULL;
380 # ifdef PNG_USER_MEM_SUPPORTED
381 return (png_create_struct_2(type,
NULL,
NULL));
388 png_create_struct_2,(
int type, png_malloc_ptr malloc_fn,
png_voidp mem_ptr),
404 # ifdef PNG_USER_MEM_SUPPORTED
405 if (malloc_fn !=
NULL)
409 png_ptr->mem_ptr=mem_ptr;
410 struct_ptr = (*(malloc_fn))(png_ptr,
size);
412 if (struct_ptr !=
NULL)
419 # if defined(__TURBOC__) && !defined(__FLAT__)
422 # if defined(_MSC_VER) && defined(MAXSEG_64K)
429 if (struct_ptr !=
NULL)
440 # ifdef PNG_USER_MEM_SUPPORTED
450 if (struct_ptr !=
NULL)
452 # ifdef PNG_USER_MEM_SUPPORTED
457 png_ptr->mem_ptr=mem_ptr;
458 (*(free_fn))(png_ptr, struct_ptr);
462 # if defined(__TURBOC__) && !defined(__FLAT__)
466 # if defined(_MSC_VER) && defined(MAXSEG_64K)
489 ret = (png_malloc(png_ptr, size));
502 # ifdef PNG_USER_MEM_SUPPORTED
503 if (png_ptr ==
NULL || size == 0)
506 if (png_ptr->malloc_fn !=
NULL)
510 ret = (png_malloc_default(png_ptr, size));
524 if (png_ptr ==
NULL || size == 0)
527 # ifdef PNG_MAX_MALLOC_64K
530 # ifndef PNG_USER_MEM_SUPPORTED
532 png_error(png_ptr,
"Cannot Allocate > 64K");
541 # if defined(__TURBOC__) && !defined(__FLAT__)
543 if (size != (
unsigned long)size)
547 ret = farmalloc(size);
550 # if defined(_MSC_VER) && defined(MAXSEG_64K)
551 if (size != (
unsigned long)size)
555 ret = halloc(size, 1);
558 if (size != (
size_t)size)
562 ret =
malloc((
size_t)size);
566 # ifndef PNG_USER_MEM_SUPPORTED
583 # ifdef PNG_USER_MEM_SUPPORTED
584 if (png_ptr->free_fn !=
NULL)
586 (*(png_ptr->free_fn))(png_ptr, ptr);
602 # if defined(__TURBOC__) && !defined(__FLAT__)
606 # if defined(_MSC_VER) && defined(MAXSEG_64K)
630 save_flags = png_ptr->flags;
633 png_ptr->flags=save_flags;
638 #ifdef PNG_USER_MEM_SUPPORTED
644 malloc_fn, png_free_ptr free_fn)
648 png_ptr->mem_ptr = mem_ptr;
649 png_ptr->malloc_fn = malloc_fn;
650 png_ptr->free_fn = free_fn;
GLenum GLsizei GLenum GLenum const GLvoid * table
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
PNG_CONST png_struct FAR * png_const_structp
void PNGAPI png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)
#define PNG_FLAG_MALLOC_NULL_MEM_OK
png_error(png_ptr,"Missing IHDR before iCCP")
png_size_t png_alloc_size_t
png_struct FAR * png_structp
void png_destroy_struct(png_voidp struct_ptr)
void PNGAPI png_warning(png_structp png_ptr, png_const_charp warning_message)
png_voidp PNGAPI png_get_mem_ptr(png_const_structp png_ptr)
void PNGAPI png_free_default(png_structp png_ptr, png_voidp ptr)
png_const_charp PNGAPI png_get_copyright(png_const_structp png_ptr)
void png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn, png_voidp mem_ptr)
#define PNG_FUNCTION(type, name, args, attributes)
void PNGAPI png_free(png_structp png_ptr, png_voidp ptr)