?? libmng_prop_xs.c
字號(hào):
/* ************************************************************************** *//* * For conditions of distribution and use, * *//* * see copyright notice in libmng.h * *//* ************************************************************************** *//* * * *//* * project : libmng * *//* * file : libmng_prop_xs.c copyright (c) 2000 G.Juyn * *//* * version : 1.0.4 * *//* * * *//* * purpose : property get/set interface (implementation) * *//* * * *//* * author : G.Juyn * *//* * web : http://www.3-t.com * *//* * email : mailto:info@3-t.com * *//* * * *//* * comment : implementation of the property get/set functions * *//* * * *//* * changes : 0.5.1 - 05/08/2000 - G.Juyn * *//* * - fixed calling convention * *//* * - changed strict-ANSI stuff * *//* * 0.5.1 - 05/11/2000 - G.Juyn * *//* * - added set_outputprofile2 & set_srgbprofile2 * *//* * 0.5.1 - 05/12/2000 - G.Juyn * *//* * - changed trace to macro for callback error-reporting * *//* * * *//* * 0.5.2 - 05/23/2000 - G.Juyn * *//* * - changed inclusion of cms-routines * *//* * 0.5.2 - 05/24/2000 - G.Juyn * *//* * - added support for get/set default zlib/IJG parms * *//* * 0.5.2 - 05/31/2000 - G.Juyn * *//* * - fixed up punctuation (contribution by Tim Rowley) * *//* * 0.5.2 - 06/05/2000 - G.Juyn * *//* * - added support for RGB8_A8 canvasstyle * *//* * * *//* * 0.5.3 - 06/21/2000 - G.Juyn * *//* * - added get/set for speedtype to facilitate testing * *//* * - added get for imagelevel during processtext callback * *//* * 0.5.3 - 06/26/2000 - G.Juyn * *//* * - changed userdata variable to mng_ptr * *//* * 0.5.3 - 06/29/2000 - G.Juyn * *//* * - fixed incompatible return-types * *//* * * *//* * 0.9.1 - 07/08/2000 - G.Juyn * *//* * - added get routines for internal display variables * *//* * - added get/set routines for suspensionmode variable * *//* * 0.9.1 - 07/15/2000 - G.Juyn * *//* * - added get/set routines for sectionbreak variable * *//* * * *//* * 0.9.2 - 07/31/2000 - G.Juyn * *//* * - added status_xxxx functions * *//* * 0.9.2 - 08/05/2000 - G.Juyn * *//* * - changed file-prefixes * *//* * * *//* * 0.9.3 - 10/10/2000 - G.Juyn * *//* * - added support for alpha-depth prediction * *//* * 0.9.3 - 10/16/2000 - G.Juyn * *//* * - added functions to retrieve PNG/JNG specific header-info * *//* * 0.9.3 - 10/20/2000 - G.Juyn * *//* * - added get/set for bKGD preference setting * *//* * 0.9.3 - 10/21/2000 - G.Juyn * *//* * - added get function for interlace/progressive display * *//* * * *//* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * *//* * - added BGRA8 canvas with premultiplied alpha * *//* * 1.0.1 - 05/02/2001 - G.Juyn * *//* * - added "default" sRGB generation (Thanks Marti!) * *//* * * *//* * 1.0.2 - 06/23/2001 - G.Juyn * *//* * - added optimization option for MNG-video playback * *//* * 1.0.2 - 06/25/2001 - G.Juyn * *//* * - added option to turn off progressive refresh * *//* * * *//* * 1.0.3 - 08/06/2001 - G.Juyn * *//* * - added get function for last processed BACK chunk * *//* * * *//* * 1.0.4 - 06/22/2002 - G.Juyn * *//* * - B495442 - invalid returnvalue in mng_get_suspensionmode * *//* * * *//* ************************************************************************** */#include "libmng.h"#include "libmng_data.h"#include "libmng_error.h"#include "libmng_trace.h"#ifdef __BORLANDC__#pragma hdrstop#endif#include "libmng_cms.h"#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)#pragma option -A /* force ANSI-C */#endif/* ************************************************************************** *//* * * *//* * Property set functions * *//* * * *//* ************************************************************************** */mng_retcode MNG_DECL mng_set_userdata (mng_handle hHandle, mng_ptr pUserdata){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->pUserdata = pUserdata;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_canvasstyle (mng_handle hHandle, mng_uint32 iStyle){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) switch (iStyle) { case MNG_CANVAS_RGB8 : break; case MNG_CANVAS_RGBA8 : break; case MNG_CANVAS_ARGB8 : break; case MNG_CANVAS_RGB8_A8 : break; case MNG_CANVAS_BGR8 : break; case MNG_CANVAS_BGRA8 : break; case MNG_CANVAS_BGRA8PM : break; case MNG_CANVAS_ABGR8 : break;/* case MNG_CANVAS_RGB16 : break; *//* case MNG_CANVAS_RGBA16 : break; *//* case MNG_CANVAS_ARGB16 : break; *//* case MNG_CANVAS_BGR16 : break; *//* case MNG_CANVAS_BGRA16 : break; *//* case MNG_CANVAS_ABGR16 : break; *//* case MNG_CANVAS_INDEX8 : break; *//* case MNG_CANVAS_INDEXA8 : break; *//* case MNG_CANVAS_AINDEX8 : break; *//* case MNG_CANVAS_GRAY8 : break; *//* case MNG_CANVAS_GRAY16 : break; *//* case MNG_CANVAS_GRAYA8 : break; *//* case MNG_CANVAS_GRAYA16 : break; *//* case MNG_CANVAS_AGRAY8 : break; *//* case MNG_CANVAS_AGRAY16 : break; *//* case MNG_CANVAS_DX15 : break; *//* case MNG_CANVAS_DX16 : break; */ default : { MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE) } } ((mng_datap)hHandle)->iCanvasstyle = iStyle;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_bkgdstyle (mng_handle hHandle, mng_uint32 iStyle){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) switch (iStyle) /* alpha-modes not supported */ { case MNG_CANVAS_RGB8 : break; case MNG_CANVAS_BGR8 : break;/* case MNG_CANVAS_RGB16 : break; *//* case MNG_CANVAS_BGR16 : break; *//* case MNG_CANVAS_INDEX8 : break; *//* case MNG_CANVAS_GRAY8 : break; *//* case MNG_CANVAS_GRAY16 : break; *//* case MNG_CANVAS_DX15 : break; *//* case MNG_CANVAS_DX16 : break; */ default : MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE) } ((mng_datap)hHandle)->iBkgdstyle = iStyle;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_bgcolor (mng_handle hHandle, mng_uint16 iRed, mng_uint16 iGreen, mng_uint16 iBlue){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->iBGred = iRed; ((mng_datap)hHandle)->iBGgreen = iGreen; ((mng_datap)hHandle)->iBGblue = iBlue; ((mng_datap)hHandle)->bUseBKGD = MNG_FALSE;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_usebkgd (mng_handle hHandle, mng_bool bUseBKGD){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->bUseBKGD = bUseBKGD;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_storechunks (mng_handle hHandle, mng_bool bStorechunks){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->bStorechunks = bStorechunks;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_sectionbreaks (mng_handle hHandle, mng_bool bSectionbreaks){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->bSectionbreaks = bSectionbreaks;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_cacheplayback (mng_handle hHandle, mng_bool bCacheplayback){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) if (((mng_datap)hHandle)->bHasheader) MNG_ERROR (((mng_datap)hHandle), MNG_FUNCTIONINVALID) ((mng_datap)hHandle)->bCacheplayback = bCacheplayback;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_set_doprogressive (mng_handle hHandle, mng_bool bDoProgressive){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->bDoProgressive = bDoProgressive;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */#ifdef MNG_SUPPORT_DISPLAYmng_retcode MNG_DECL mng_set_srgb (mng_handle hHandle, mng_bool bIssRGB){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_START)#endif MNG_VALIDHANDLE (hHandle) ((mng_datap)hHandle)->bIssRGB = bIssRGB;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_END)#endif return MNG_NOERROR;}#endif /* MNG_SUPPORT_DISPLAY *//* ************************************************************************** */#ifdef MNG_SUPPORT_DISPLAYmng_retcode MNG_DECL mng_set_outputprofile (mng_handle hHandle, mng_pchar zFilename){#ifdef MNG_INCLUDE_LCMS mng_datap pData;#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_START)#endif#ifdef MNG_INCLUDE_LCMS MNG_VALIDHANDLE (hHandle) pData = (mng_datap)hHandle; /* address the structure */ if (pData->hProf2) /* previously defined ? */ mnglcms_freeprofile (pData->hProf2); /* allocate new CMS profile handle */ pData->hProf2 = mnglcms_createfileprofile (zFilename); if (!pData->hProf2) /* handle error ? */ MNG_ERRORL (pData, MNG_LCMS_NOHANDLE)#endif /* MNG_INCLUDE_LCMS */#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_END)#endif return MNG_NOERROR;}#endif /* MNG_SUPPORT_DISPLAY *//* ************************************************************************** */#ifdef MNG_SUPPORT_DISPLAYmng_retcode MNG_DECL mng_set_outputprofile2 (mng_handle hHandle, mng_uint32 iProfilesize, mng_ptr pProfile){#ifdef MNG_INCLUDE_LCMS mng_datap pData;#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_START)#endif#ifdef MNG_INCLUDE_LCMS MNG_VALIDHANDLE (hHandle) pData = (mng_datap)hHandle; /* address the structure */ if (pData->hProf2) /* previously defined ? */ mnglcms_freeprofile (pData->hProf2); /* allocate new CMS profile handle */ pData->hProf2 = mnglcms_creatememprofile (iProfilesize, pProfile); if (!pData->hProf2) /* handle error ? */ MNG_ERRORL (pData, MNG_LCMS_NOHANDLE)#endif /* MNG_INCLUDE_LCMS */#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_END)#endif return MNG_NOERROR;}#endif /* MNG_SUPPORT_DISPLAY *//* ************************************************************************** */mng_retcode MNG_DECL mng_set_outputsrgb (mng_handle hHandle){#ifdef MNG_INCLUDE_LCMS mng_datap pData;#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_START)#endif#ifdef MNG_INCLUDE_LCMS MNG_VALIDHANDLE (hHandle) pData = (mng_datap)hHandle; /* address the structure */ if (pData->hProf2) /* previously defined ? */ mnglcms_freeprofile (pData->hProf2); /* allocate new CMS profile handle */ pData->hProf2 = mnglcms_createsrgbprofile (); if (!pData->hProf2) /* handle error ? */ MNG_ERRORL (pData, MNG_LCMS_NOHANDLE)#endif /* MNG_INCLUDE_LCMS */#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_END)#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -