jzpngdecode.cpp

来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C++ 代码 · 共 109 行

CPP
109
字号
/********************** BEGIN LICENSE BLOCK ************************************
 *
 * JZ4740  mobile_tv  Project  V1.0.0
 * INGENIC CONFIDENTIAL--NOT FOR DISTRIBUTION IN SOURCE CODE FORM
 * Copyright (c) Ingenic Semiconductor Co. Ltd 2005. All rights reserved.
 * 
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * http://www.ingenic.cn 
 *
 ********************** END LICENSE BLOCK **************************************
 *
 *  Author: <dsqiu@ingenic.cn> <hlyu@ingenic.cn>
 *
 *  Create:   2008-03-04, by dsqiu
 *  Maintain: 2008-06-23, by hlyu
 *            
 *******************************************************************************
 */

#if JZ4740_PMP16
#include "JzImage.h"
#include "xiofile.h"
#include "JzImagePng.h"
#include "JzImageInfo.h"
extern "C"{
	//result: 0 -- error
	//result: 1 -- finish
	 
       //void ShowGIF( CJzImage * );
#include "excpt.h"


       static IVSETIMAGEINFO ivSetImageInfo = NULL;

       void ivSetImageBuf( IVSETIMAGEINFO func)
       {
           ivSetImageInfo = func;
       }
static unsigned int saveregister[2];
	BOOL C_DecodeImage(char *filename, void *p);
	BOOL DecodeImage(char *filename, void *p)
	{
		 #if EXCEPTION_XIMAGE
		SAVE_PROCESS_REGISTER(saveregister);
		#endif
		C_DecodeImage(filename,p);
	}
	 #if EXCEPTION_XIMAGE
	static void image_excpt()
	{
		  iv_memory_deinit( 0 );
			excpt_exit(FALSE,saveregister);	
	}
	#endif
	BOOL C_DecodeImage(char *filename, void *p)
	{ 
                int excptid;
                iv_memory_init( 0 );
                 #if EXCEPTION_XIMAGE
                excptid = AddExcept(image_excpt,saveregister);
                #endif
		PSCRINFO pscr = (PSCRINFO)p;
		char *ext;
		BOOL decodeOk = FALSE;
		CJzImagePng *image;
   	CxIOFile *file;
    printf("    ^^^^^^^^^ filename decode: %s \n", filename );
		image = new CJzImagePng(pscr);
		if(image)
		{
			file = new CxIOFile(NULL);
			if(file->Open(filename,"rb"))
			{	
				decodeOk = image->Decode((CxFile *)file);
				file->Close();
				delete image;
				image = 0;
	    }
		   delete file;
		   file = 0;
		}
		if(image)
			delete image;
		if(file)
			delete file;
                iv_memory_deinit( 0 );
         #if EXCEPTION_XIMAGE
		DecExcept(excptid,saveregister);
		excpt_exit(decodeOk,saveregister);
		#endif
		return decodeOk;
	}

IVSETIMAGEINFO ivGetImageInfoCallback( void )
{
    return ivSetImageInfo;
}

}//end extern "C"


#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?