psd_status psd_image_free(psd_context * context) { if(context == NULL) return psd_status_invalid_context; psd_color_mode_data_free(context); psd_image_resource_free(context); psd_layer_and_mask_free(context); psd_image_data_free(context); psd_image_blend_free(context); psd_stream_free(context); psd_free(context); return psd_status_done; }
psd_status psd_image_free(psd_context * context) { if(context == NULL) return psd_status_invalid_context; psd_color_mode_data_free(context); psd_image_resource_free(context); psd_layer_and_mask_free(context); psd_image_data_free(context); psd_image_blend_free(context); psd_stream_free(context); //psd_free(context); //[DP] the application is responsible for this return psd_status_done; }
static psd_status psd_image_load_tag(psd_context ** dst_context, psd_char * file_name, psd_load_tag load_tag) { psd_context * context; psd_status status; if(dst_context == NULL) return psd_status_invalid_context; if(file_name == NULL) return psd_status_invalid_file; context = (psd_context *)psd_malloc(sizeof(psd_context)); if(context == NULL) return psd_status_malloc_failed; memset(context, 0, sizeof(psd_context)); context->ops_ = &psd_std_fileops; context->file_name = file_name; context->file = psd_fopen(file_name); if (context->file == NULL) { psd_free(context); return psd_status_invalid_file; } context->state = PSD_FILE_HEADER; context->stream.file_length = psd_fsize(context->file); context->load_tag = load_tag; status = psd_main_loop(context); if(status != psd_status_done) { psd_image_free(context); context = NULL; } else { psd_stream_free(context); } *dst_context = context; return status; }