Пример #1
0
int main (int argc, char **argv)
{
	psd_context * context = NULL;
	psd_status status;
	
	if(argc <= 1)
		return -1;

	// parse the psd file to psd_context
	status = psd_image_load(&context, argv[1]);

	// use it...
	//
	
	// free if it's done
	psd_image_free(context);

	return (status == psd_status_done ? 0 : -1);
}
Пример #2
0
Document * PsdParser::parse()
{
  psd_status status = psd_image_load(&context_, (psd_char *)filename_);

  if (status != psd_status_done) {
    // Failed to load the file
    return NULL;
  }

  Document *doc = new Document(filename_, context_->width, context_->height);

  reset_layer_index();
  parse_psd(doc);

  psd_image_free(context_);
  context_ = NULL;

  return doc;
}
Пример #3
0
Файл: psd.c Проект: Sumxx/XUI
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;
}
Пример #4
0
	/**
	 * デストラクタ
	 */
	~PSD() {
		if (context) {
			psd_image_free(context);
		}
	};