PageRenderTime 61ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/src/FreeImage/Source/LibMNG/libmng_prop_xs.c

https://bitbucket.org/cabalistic/ogredeps/
C | 2175 lines | 1445 code | 487 blank | 243 comment | 80 complexity | 2ca65cac1d74d51d03ddfefac8f89f64 MD5 | raw file
Possible License(s): LGPL-3.0, BSD-3-Clause, CPL-1.0, Unlicense, GPL-2.0, GPL-3.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, BSD-2-Clause, LGPL-2.1
  1. /* ************************************************************************** */
  2. /* * For conditions of distribution and use, * */
  3. /* * see copyright notice in libmng.h * */
  4. /* ************************************************************************** */
  5. /* * * */
  6. /* * project : libmng * */
  7. /* * file : libmng_prop_xs.c copyright (c) 2000-2006 G.Juyn * */
  8. /* * version : 1.0.10 * */
  9. /* * * */
  10. /* * purpose : property get/set interface (implementation) * */
  11. /* * * */
  12. /* * author : G.Juyn * */
  13. /* * * */
  14. /* * comment : implementation of the property get/set functions * */
  15. /* * * */
  16. /* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
  17. /* * - fixed calling convention * */
  18. /* * - changed strict-ANSI stuff * */
  19. /* * 0.5.1 - 05/11/2000 - G.Juyn * */
  20. /* * - added set_outputprofile2 & set_srgbprofile2 * */
  21. /* * 0.5.1 - 05/12/2000 - G.Juyn * */
  22. /* * - changed trace to macro for callback error-reporting * */
  23. /* * * */
  24. /* * 0.5.2 - 05/23/2000 - G.Juyn * */
  25. /* * - changed inclusion of cms-routines * */
  26. /* * 0.5.2 - 05/24/2000 - G.Juyn * */
  27. /* * - added support for get/set default zlib/IJG parms * */
  28. /* * 0.5.2 - 05/31/2000 - G.Juyn * */
  29. /* * - fixed up punctuation (contribution by Tim Rowley) * */
  30. /* * 0.5.2 - 06/05/2000 - G.Juyn * */
  31. /* * - added support for RGB8_A8 canvasstyle * */
  32. /* * * */
  33. /* * 0.5.3 - 06/21/2000 - G.Juyn * */
  34. /* * - added get/set for speedtype to facilitate testing * */
  35. /* * - added get for imagelevel during processtext callback * */
  36. /* * 0.5.3 - 06/26/2000 - G.Juyn * */
  37. /* * - changed userdata variable to mng_ptr * */
  38. /* * 0.5.3 - 06/29/2000 - G.Juyn * */
  39. /* * - fixed incompatible return-types * */
  40. /* * * */
  41. /* * 0.9.1 - 07/08/2000 - G.Juyn * */
  42. /* * - added get routines for internal display variables * */
  43. /* * - added get/set routines for suspensionmode variable * */
  44. /* * 0.9.1 - 07/15/2000 - G.Juyn * */
  45. /* * - added get/set routines for sectionbreak variable * */
  46. /* * * */
  47. /* * 0.9.2 - 07/31/2000 - G.Juyn * */
  48. /* * - added status_xxxx functions * */
  49. /* * 0.9.2 - 08/05/2000 - G.Juyn * */
  50. /* * - changed file-prefixes * */
  51. /* * * */
  52. /* * 0.9.3 - 10/10/2000 - G.Juyn * */
  53. /* * - added support for alpha-depth prediction * */
  54. /* * 0.9.3 - 10/16/2000 - G.Juyn * */
  55. /* * - added functions to retrieve PNG/JNG specific header-info * */
  56. /* * 0.9.3 - 10/20/2000 - G.Juyn * */
  57. /* * - added get/set for bKGD preference setting * */
  58. /* * 0.9.3 - 10/21/2000 - G.Juyn * */
  59. /* * - added get function for interlace/progressive display * */
  60. /* * * */
  61. /* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
  62. /* * - added BGRA8 canvas with premultiplied alpha * */
  63. /* * 1.0.1 - 05/02/2001 - G.Juyn * */
  64. /* * - added "default" sRGB generation (Thanks Marti!) * */
  65. /* * * */
  66. /* * 1.0.2 - 06/23/2001 - G.Juyn * */
  67. /* * - added optimization option for MNG-video playback * */
  68. /* * 1.0.2 - 06/25/2001 - G.Juyn * */
  69. /* * - added option to turn off progressive refresh * */
  70. /* * * */
  71. /* * 1.0.3 - 08/06/2001 - G.Juyn * */
  72. /* * - added get function for last processed BACK chunk * */
  73. /* * * */
  74. /* * 1.0.4 - 06/22/2002 - G.Juyn * */
  75. /* * - B495442 - invalid returnvalue in mng_get_suspensionmode * */
  76. /* * * */
  77. /* * 1.0.5 - 09/14/2002 - G.Juyn * */
  78. /* * - added event handling for dynamic MNG * */
  79. /* * 1.0.5 - 09/22/2002 - G.Juyn * */
  80. /* * - added bgrx8 canvas (filler byte) * */
  81. /* * 1.0.5 - 11/07/2002 - G.Juyn * */
  82. /* * - added support to get totals after mng_read() * */
  83. /* * * */
  84. /* * 1.0.6 - 05/11/2003 - G. Juyn * */
  85. /* * - added conditionals around canvas update routines * */
  86. /* * 1.0.6 - 07/07/2003 - G.R-P * */
  87. /* * - added conditionals around some JNG-supporting code * */
  88. /* * 1.0.6 - 07/11/2003 - G.R-P * */
  89. /* * - added conditionals zlib and jpeg property accessors * */
  90. /* * 1.0.6 - 07/14/2003 - G.R-P * */
  91. /* * - added conditionals around various unused functions * */
  92. /* * * */
  93. /* * 1.0.7 - 11/27/2003 - R.A * */
  94. /* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
  95. /* * 1.0.7 - 12/06/2003 - R.A * */
  96. /* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
  97. /* * 1.0.7 - 01/25/2004 - J.S * */
  98. /* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
  99. /* * 1.0.7 - 03/07/2004 - G.R-P. * */
  100. /* * - put gamma, cms-related functions inside #ifdef * */
  101. /* * * */
  102. /* * 1.0.8 - 04/02/2004 - G.Juyn * */
  103. /* * - added CRC existence & checking flags * */
  104. /* * * */
  105. /* * 1.0.9 - 09/18/2004 - G.R-P. * */
  106. /* * - added some MNG_SUPPORT_WRITE conditionals * */
  107. /* * 1.0.9 - 10/03/2004 - G.Juyn * */
  108. /* * - added function to retrieve current FRAM delay * */
  109. /* * 1.0.9 - 10/14/2004 - G.Juyn * */
  110. /* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
  111. /* * 1.0.9 - 12/20/2004 - G.Juyn * */
  112. /* * - cleaned up macro-invocations (thanks to D. Airlie) * */
  113. /* * * */
  114. /* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
  115. /* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
  116. /* * * */
  117. /* ************************************************************************** */
  118. #include "libmng.h"
  119. #include "libmng_data.h"
  120. #include "libmng_error.h"
  121. #include "libmng_trace.h"
  122. #ifdef __BORLANDC__
  123. #pragma hdrstop
  124. #endif
  125. #include "libmng_objects.h"
  126. #include "libmng_memory.h"
  127. #include "libmng_cms.h"
  128. #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
  129. #pragma option -A /* force ANSI-C */
  130. #endif
  131. /* ************************************************************************** */
  132. /* * * */
  133. /* * Property set functions * */
  134. /* * * */
  135. /* ************************************************************************** */
  136. mng_retcode MNG_DECL mng_set_userdata (mng_handle hHandle,
  137. mng_ptr pUserdata)
  138. {
  139. #ifdef MNG_SUPPORT_TRACE
  140. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_START);
  141. #endif
  142. MNG_VALIDHANDLE (hHandle)
  143. ((mng_datap)hHandle)->pUserdata = pUserdata;
  144. #ifdef MNG_SUPPORT_TRACE
  145. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_END);
  146. #endif
  147. return MNG_NOERROR;
  148. }
  149. /* ************************************************************************** */
  150. mng_retcode MNG_DECL mng_set_canvasstyle (mng_handle hHandle,
  151. mng_uint32 iStyle)
  152. {
  153. #ifdef MNG_SUPPORT_TRACE
  154. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_START);
  155. #endif
  156. MNG_VALIDHANDLE (hHandle)
  157. switch (iStyle)
  158. {
  159. #ifndef MNG_SKIPCANVAS_RGB8
  160. case MNG_CANVAS_RGB8 : break;
  161. #endif
  162. #ifndef MNG_SKIPCANVAS_RGBA8
  163. case MNG_CANVAS_RGBA8 : break;
  164. #endif
  165. #ifndef MNG_SKIPCANVAS_RGBA8_PM
  166. case MNG_CANVAS_RGBA8_PM: break;
  167. #endif
  168. #ifndef MNG_SKIPCANVAS_ARGB8
  169. case MNG_CANVAS_ARGB8 : break;
  170. #endif
  171. #ifndef MNG_SKIPCANVAS_ARGB8_PM
  172. case MNG_CANVAS_ARGB8_PM: break;
  173. #endif
  174. #ifndef MNG_SKIPCANVAS_RGB8_A8
  175. case MNG_CANVAS_RGB8_A8 : break;
  176. #endif
  177. #ifndef MNG_SKIPCANVAS_BGR8
  178. case MNG_CANVAS_BGR8 : break;
  179. #endif
  180. #ifndef MNG_SKIPCANVAS_BGRX8
  181. case MNG_CANVAS_BGRX8 : break;
  182. #endif
  183. #ifndef MNG_SKIPCANVAS_BGRA8
  184. case MNG_CANVAS_BGRA8 : break;
  185. #endif
  186. #ifndef MNG_SKIPCANVAS_BGRA8_PM
  187. case MNG_CANVAS_BGRA8_PM: break;
  188. #endif
  189. #ifndef MNG_SKIPCANVAS_ABGR8
  190. case MNG_CANVAS_ABGR8 : break;
  191. #endif
  192. #ifndef MNG_SKIPCANVAS_ABGR8_PM
  193. case MNG_CANVAS_ABGR8_PM: break;
  194. #endif
  195. #ifndef MNG_SKIPCANVAS_RGB565
  196. case MNG_CANVAS_RGB565 : break;
  197. #endif
  198. #ifndef MNG_SKIPCANVAS_RGBA565
  199. case MNG_CANVAS_RGBA565 : break;
  200. #endif
  201. #ifndef MNG_SKIPCANVAS_BGR565
  202. case MNG_CANVAS_BGR565 : break;
  203. #endif
  204. #ifndef MNG_SKIPCANVAS_BGRA565
  205. case MNG_CANVAS_BGRA565 : break;
  206. #endif
  207. #ifndef MNG_SKIPCANVAS_BGR565_A8
  208. case MNG_CANVAS_BGR565_A8 : break;
  209. #endif
  210. #ifndef MNG_SKIPCANVAS_RGB555
  211. case MNG_CANVAS_RGB555 : break;
  212. #endif
  213. #ifndef MNG_SKIPCANVAS_BGR555
  214. case MNG_CANVAS_BGR555 : break;
  215. #endif
  216. /* case MNG_CANVAS_RGB16 : break; */
  217. /* case MNG_CANVAS_RGBA16 : break; */
  218. /* case MNG_CANVAS_ARGB16 : break; */
  219. /* case MNG_CANVAS_BGR16 : break; */
  220. /* case MNG_CANVAS_BGRA16 : break; */
  221. /* case MNG_CANVAS_ABGR16 : break; */
  222. /* case MNG_CANVAS_INDEX8 : break; */
  223. /* case MNG_CANVAS_INDEXA8 : break; */
  224. /* case MNG_CANVAS_AINDEX8 : break; */
  225. /* case MNG_CANVAS_GRAY8 : break; */
  226. /* case MNG_CANVAS_GRAY16 : break; */
  227. /* case MNG_CANVAS_GRAYA8 : break; */
  228. /* case MNG_CANVAS_GRAYA16 : break; */
  229. /* case MNG_CANVAS_AGRAY8 : break; */
  230. /* case MNG_CANVAS_AGRAY16 : break; */
  231. /* case MNG_CANVAS_DX15 : break; */
  232. /* case MNG_CANVAS_DX16 : break; */
  233. default : { MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE) };
  234. }
  235. ((mng_datap)hHandle)->iCanvasstyle = iStyle;
  236. #ifdef MNG_SUPPORT_TRACE
  237. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_END);
  238. #endif
  239. return MNG_NOERROR;
  240. }
  241. /* ************************************************************************** */
  242. mng_retcode MNG_DECL mng_set_bkgdstyle (mng_handle hHandle,
  243. mng_uint32 iStyle)
  244. {
  245. #ifdef MNG_SUPPORT_TRACE
  246. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_START);
  247. #endif
  248. MNG_VALIDHANDLE (hHandle)
  249. switch (iStyle) /* alpha-modes not supported */
  250. {
  251. #ifndef MNG_SKIPCANVAS_RGB8
  252. case MNG_CANVAS_RGB8 : break;
  253. #endif
  254. #ifndef MNG_SKIPCANVAS_BGR8
  255. case MNG_CANVAS_BGR8 : break;
  256. #endif
  257. #ifndef MNG_SKIPCANVAS_BGRX8
  258. case MNG_CANVAS_BGRX8 : break;
  259. #endif
  260. #ifndef MNG_SKIPCANVAS_RGB565
  261. case MNG_CANVAS_RGB565 : break;
  262. #endif
  263. #ifndef MNG_SKIPCANVAS_BGR565
  264. case MNG_CANVAS_BGR565 : break;
  265. #endif
  266. /* case MNG_CANVAS_RGB16 : break; */
  267. /* case MNG_CANVAS_BGR16 : break; */
  268. /* case MNG_CANVAS_INDEX8 : break; */
  269. /* case MNG_CANVAS_GRAY8 : break; */
  270. /* case MNG_CANVAS_GRAY16 : break; */
  271. /* case MNG_CANVAS_DX15 : break; */
  272. /* case MNG_CANVAS_DX16 : break; */
  273. default : MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE);
  274. }
  275. ((mng_datap)hHandle)->iBkgdstyle = iStyle;
  276. #ifdef MNG_SUPPORT_TRACE
  277. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_END);
  278. #endif
  279. return MNG_NOERROR;
  280. }
  281. /* ************************************************************************** */
  282. mng_retcode MNG_DECL mng_set_bgcolor (mng_handle hHandle,
  283. mng_uint16 iRed,
  284. mng_uint16 iGreen,
  285. mng_uint16 iBlue)
  286. {
  287. #ifdef MNG_SUPPORT_TRACE
  288. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_START);
  289. #endif
  290. MNG_VALIDHANDLE (hHandle)
  291. ((mng_datap)hHandle)->iBGred = iRed;
  292. ((mng_datap)hHandle)->iBGgreen = iGreen;
  293. ((mng_datap)hHandle)->iBGblue = iBlue;
  294. ((mng_datap)hHandle)->bUseBKGD = MNG_FALSE;
  295. #ifdef MNG_SUPPORT_TRACE
  296. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_END);
  297. #endif
  298. return MNG_NOERROR;
  299. }
  300. /* ************************************************************************** */
  301. mng_retcode MNG_DECL mng_set_usebkgd (mng_handle hHandle,
  302. mng_bool bUseBKGD)
  303. {
  304. #ifdef MNG_SUPPORT_TRACE
  305. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_START);
  306. #endif
  307. MNG_VALIDHANDLE (hHandle)
  308. ((mng_datap)hHandle)->bUseBKGD = bUseBKGD;
  309. #ifdef MNG_SUPPORT_TRACE
  310. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_END);
  311. #endif
  312. return MNG_NOERROR;
  313. }
  314. /* ************************************************************************** */
  315. mng_retcode MNG_DECL mng_set_storechunks (mng_handle hHandle,
  316. mng_bool bStorechunks)
  317. {
  318. #ifdef MNG_SUPPORT_TRACE
  319. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_START);
  320. #endif
  321. MNG_VALIDHANDLE (hHandle)
  322. ((mng_datap)hHandle)->bStorechunks = bStorechunks;
  323. #ifdef MNG_SUPPORT_TRACE
  324. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_END);
  325. #endif
  326. return MNG_NOERROR;
  327. }
  328. /* ************************************************************************** */
  329. mng_retcode MNG_DECL mng_set_sectionbreaks (mng_handle hHandle,
  330. mng_bool bSectionbreaks)
  331. {
  332. #ifdef MNG_SUPPORT_TRACE
  333. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_START);
  334. #endif
  335. MNG_VALIDHANDLE (hHandle)
  336. ((mng_datap)hHandle)->bSectionbreaks = bSectionbreaks;
  337. #ifdef MNG_SUPPORT_TRACE
  338. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_END);
  339. #endif
  340. return MNG_NOERROR;
  341. }
  342. /* ************************************************************************** */
  343. mng_retcode MNG_DECL mng_set_cacheplayback (mng_handle hHandle,
  344. mng_bool bCacheplayback)
  345. {
  346. #ifdef MNG_SUPPORT_TRACE
  347. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_START);
  348. #endif
  349. MNG_VALIDHANDLE (hHandle)
  350. if (((mng_datap)hHandle)->bHasheader)
  351. MNG_ERROR (((mng_datap)hHandle), MNG_FUNCTIONINVALID);
  352. ((mng_datap)hHandle)->bCacheplayback = bCacheplayback;
  353. #ifdef MNG_SUPPORT_TRACE
  354. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_END);
  355. #endif
  356. return MNG_NOERROR;
  357. }
  358. /* ************************************************************************** */
  359. mng_retcode MNG_DECL mng_set_doprogressive (mng_handle hHandle,
  360. mng_bool bDoProgressive)
  361. {
  362. #ifdef MNG_SUPPORT_TRACE
  363. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_START);
  364. #endif
  365. MNG_VALIDHANDLE (hHandle)
  366. ((mng_datap)hHandle)->bDoProgressive = bDoProgressive;
  367. #ifdef MNG_SUPPORT_TRACE
  368. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_END);
  369. #endif
  370. return MNG_NOERROR;
  371. }
  372. /* ************************************************************************** */
  373. mng_retcode MNG_DECL mng_set_crcmode (mng_handle hHandle,
  374. mng_uint32 iCrcmode)
  375. {
  376. #ifdef MNG_SUPPORT_TRACE
  377. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CRCMODE, MNG_LC_START);
  378. #endif
  379. MNG_VALIDHANDLE (hHandle)
  380. ((mng_datap)hHandle)->iCrcmode = iCrcmode;
  381. #ifdef MNG_SUPPORT_TRACE
  382. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CRCMODE, MNG_LC_END);
  383. #endif
  384. return MNG_NOERROR;
  385. }
  386. /* ************************************************************************** */
  387. #ifdef MNG_SUPPORT_DISPLAY
  388. mng_retcode MNG_DECL mng_set_srgb (mng_handle hHandle,
  389. mng_bool bIssRGB)
  390. {
  391. #ifdef MNG_SUPPORT_TRACE
  392. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_START);
  393. #endif
  394. MNG_VALIDHANDLE (hHandle)
  395. ((mng_datap)hHandle)->bIssRGB = bIssRGB;
  396. #ifdef MNG_SUPPORT_TRACE
  397. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_END);
  398. #endif
  399. return MNG_NOERROR;
  400. }
  401. #endif /* MNG_SUPPORT_DISPLAY */
  402. /* ************************************************************************** */
  403. #ifdef MNG_SUPPORT_DISPLAY
  404. #ifndef MNG_SKIPCHUNK_iCCP
  405. mng_retcode MNG_DECL mng_set_outputprofile (mng_handle hHandle,
  406. mng_pchar zFilename)
  407. {
  408. #ifdef MNG_INCLUDE_LCMS
  409. mng_datap pData;
  410. #endif
  411. #ifdef MNG_SUPPORT_TRACE
  412. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_START);
  413. #endif
  414. #ifdef MNG_INCLUDE_LCMS
  415. MNG_VALIDHANDLE (hHandle)
  416. pData = (mng_datap)hHandle; /* address the structure */
  417. if (pData->hProf2) /* previously defined ? */
  418. mnglcms_freeprofile (pData->hProf2);
  419. /* allocate new CMS profile handle */
  420. pData->hProf2 = mnglcms_createfileprofile (zFilename);
  421. if (!pData->hProf2) /* handle error ? */
  422. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  423. #endif /* MNG_INCLUDE_LCMS */
  424. #ifdef MNG_SUPPORT_TRACE
  425. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_END);
  426. #endif
  427. return MNG_NOERROR;
  428. }
  429. #endif
  430. #endif /* MNG_SUPPORT_DISPLAY */
  431. /* ************************************************************************** */
  432. #ifdef MNG_SUPPORT_DISPLAY
  433. #ifndef MNG_SKIPCHUNK_iCCP
  434. mng_retcode MNG_DECL mng_set_outputprofile2 (mng_handle hHandle,
  435. mng_uint32 iProfilesize,
  436. mng_ptr pProfile)
  437. {
  438. #ifdef MNG_INCLUDE_LCMS
  439. mng_datap pData;
  440. #endif
  441. #ifdef MNG_SUPPORT_TRACE
  442. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_START);
  443. #endif
  444. #ifdef MNG_INCLUDE_LCMS
  445. MNG_VALIDHANDLE (hHandle)
  446. pData = (mng_datap)hHandle; /* address the structure */
  447. if (pData->hProf2) /* previously defined ? */
  448. mnglcms_freeprofile (pData->hProf2);
  449. /* allocate new CMS profile handle */
  450. pData->hProf2 = mnglcms_creatememprofile (iProfilesize, pProfile);
  451. if (!pData->hProf2) /* handle error ? */
  452. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  453. #endif /* MNG_INCLUDE_LCMS */
  454. #ifdef MNG_SUPPORT_TRACE
  455. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_END);
  456. #endif
  457. return MNG_NOERROR;
  458. }
  459. #endif
  460. #endif /* MNG_SUPPORT_DISPLAY */
  461. /* ************************************************************************** */
  462. mng_retcode MNG_DECL mng_set_outputsrgb (mng_handle hHandle)
  463. {
  464. #ifdef MNG_INCLUDE_LCMS
  465. mng_datap pData;
  466. #endif
  467. #ifdef MNG_SUPPORT_TRACE
  468. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_START);
  469. #endif
  470. #ifdef MNG_INCLUDE_LCMS
  471. MNG_VALIDHANDLE (hHandle)
  472. pData = (mng_datap)hHandle; /* address the structure */
  473. if (pData->hProf2) /* previously defined ? */
  474. mnglcms_freeprofile (pData->hProf2);
  475. /* allocate new CMS profile handle */
  476. pData->hProf2 = mnglcms_createsrgbprofile ();
  477. if (!pData->hProf2) /* handle error ? */
  478. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  479. #endif /* MNG_INCLUDE_LCMS */
  480. #ifdef MNG_SUPPORT_TRACE
  481. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_END);
  482. #endif
  483. return MNG_NOERROR;
  484. }
  485. /* ************************************************************************** */
  486. #ifdef MNG_SUPPORT_DISPLAY
  487. mng_retcode MNG_DECL mng_set_srgbprofile (mng_handle hHandle,
  488. mng_pchar zFilename)
  489. {
  490. #ifdef MNG_INCLUDE_LCMS
  491. mng_datap pData;
  492. #endif
  493. #ifdef MNG_SUPPORT_TRACE
  494. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE2, MNG_LC_START);
  495. #endif
  496. #ifdef MNG_INCLUDE_LCMS
  497. MNG_VALIDHANDLE (hHandle)
  498. pData = (mng_datap)hHandle; /* address the structure */
  499. if (pData->hProf3) /* previously defined ? */
  500. mnglcms_freeprofile (pData->hProf3);
  501. /* allocate new CMS profile handle */
  502. pData->hProf3 = mnglcms_createfileprofile (zFilename);
  503. if (!pData->hProf3) /* handle error ? */
  504. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  505. #endif /* MNG_INCLUDE_LCMS */
  506. #ifdef MNG_SUPPORT_TRACE
  507. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE2, MNG_LC_END);
  508. #endif
  509. return MNG_NOERROR;
  510. }
  511. #endif /* MNG_SUPPORT_DISPLAY */
  512. /* ************************************************************************** */
  513. #ifdef MNG_SUPPORT_DISPLAY
  514. mng_retcode MNG_DECL mng_set_srgbprofile2 (mng_handle hHandle,
  515. mng_uint32 iProfilesize,
  516. mng_ptr pProfile)
  517. {
  518. #ifdef MNG_INCLUDE_LCMS
  519. mng_datap pData;
  520. #endif
  521. #ifdef MNG_SUPPORT_TRACE
  522. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE, MNG_LC_START);
  523. #endif
  524. #ifdef MNG_INCLUDE_LCMS
  525. MNG_VALIDHANDLE (hHandle)
  526. pData = (mng_datap)hHandle; /* address the structure */
  527. if (pData->hProf3) /* previously defined ? */
  528. mnglcms_freeprofile (pData->hProf3);
  529. /* allocate new CMS profile handle */
  530. pData->hProf3 = mnglcms_creatememprofile (iProfilesize, pProfile);
  531. if (!pData->hProf3) /* handle error ? */
  532. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  533. #endif /* MNG_INCLUDE_LCMS */
  534. #ifdef MNG_SUPPORT_TRACE
  535. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE, MNG_LC_END);
  536. #endif
  537. return MNG_NOERROR;
  538. }
  539. #endif /* MNG_SUPPORT_DISPLAY */
  540. /* ************************************************************************** */
  541. mng_retcode MNG_DECL mng_set_srgbimplicit (mng_handle hHandle)
  542. {
  543. #ifdef MNG_INCLUDE_LCMS
  544. mng_datap pData;
  545. #endif
  546. #ifdef MNG_SUPPORT_TRACE
  547. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBIMPLICIT, MNG_LC_START);
  548. #endif
  549. #ifdef MNG_INCLUDE_LCMS
  550. MNG_VALIDHANDLE (hHandle)
  551. pData = (mng_datap)hHandle; /* address the structure */
  552. if (pData->hProf3) /* previously defined ? */
  553. mnglcms_freeprofile (pData->hProf3);
  554. /* allocate new CMS profile handle */
  555. pData->hProf3 = mnglcms_createsrgbprofile ();
  556. if (!pData->hProf3) /* handle error ? */
  557. MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
  558. #endif /* MNG_INCLUDE_LCMS */
  559. #ifdef MNG_SUPPORT_TRACE
  560. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBIMPLICIT, MNG_LC_END);
  561. #endif
  562. return MNG_NOERROR;
  563. }
  564. /* ************************************************************************** */
  565. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  566. mng_retcode MNG_DECL mng_set_viewgamma (mng_handle hHandle,
  567. mng_float dGamma)
  568. {
  569. #ifdef MNG_SUPPORT_TRACE
  570. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_START);
  571. #endif
  572. MNG_VALIDHANDLE (hHandle)
  573. ((mng_datap)hHandle)->dViewgamma = dGamma;
  574. #ifdef MNG_SUPPORT_TRACE
  575. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_END);
  576. #endif
  577. return MNG_NOERROR;
  578. }
  579. #endif
  580. /* ************************************************************************** */
  581. mng_retcode MNG_DECL mng_set_displaygamma (mng_handle hHandle,
  582. mng_float dGamma)
  583. {
  584. #ifdef MNG_SUPPORT_TRACE
  585. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_START);
  586. #endif
  587. MNG_VALIDHANDLE (hHandle)
  588. ((mng_datap)hHandle)->dDisplaygamma = dGamma;
  589. #ifdef MNG_SUPPORT_TRACE
  590. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_END);
  591. #endif
  592. return MNG_NOERROR;
  593. }
  594. /* ************************************************************************** */
  595. mng_retcode MNG_DECL mng_set_dfltimggamma (mng_handle hHandle,
  596. mng_float dGamma)
  597. {
  598. #ifdef MNG_SUPPORT_TRACE
  599. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_START);
  600. #endif
  601. MNG_VALIDHANDLE (hHandle)
  602. ((mng_datap)hHandle)->dDfltimggamma = dGamma;
  603. #ifdef MNG_SUPPORT_TRACE
  604. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_END);
  605. #endif
  606. return MNG_NOERROR;
  607. }
  608. /* ************************************************************************** */
  609. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  610. mng_retcode MNG_DECL mng_set_viewgammaint (mng_handle hHandle,
  611. mng_uint32 iGamma)
  612. {
  613. #ifdef MNG_SUPPORT_TRACE
  614. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_START);
  615. #endif
  616. MNG_VALIDHANDLE (hHandle)
  617. ((mng_datap)hHandle)->dViewgamma = (mng_float)iGamma / 100000;
  618. #ifdef MNG_SUPPORT_TRACE
  619. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_END);
  620. #endif
  621. return MNG_NOERROR;
  622. }
  623. #endif
  624. /* ************************************************************************** */
  625. mng_retcode MNG_DECL mng_set_displaygammaint (mng_handle hHandle,
  626. mng_uint32 iGamma)
  627. {
  628. #ifdef MNG_SUPPORT_TRACE
  629. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_START);
  630. #endif
  631. MNG_VALIDHANDLE (hHandle)
  632. ((mng_datap)hHandle)->dDisplaygamma = (mng_float)iGamma / 100000;
  633. #ifdef MNG_SUPPORT_TRACE
  634. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_END);
  635. #endif
  636. return MNG_NOERROR;
  637. }
  638. /* ************************************************************************** */
  639. #ifndef MNG_NO_DFLT_INFO
  640. mng_retcode MNG_DECL mng_set_dfltimggammaint (mng_handle hHandle,
  641. mng_uint32 iGamma)
  642. {
  643. #ifdef MNG_SUPPORT_TRACE
  644. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_START);
  645. #endif
  646. MNG_VALIDHANDLE (hHandle)
  647. ((mng_datap)hHandle)->dDfltimggamma = (mng_float)iGamma / 100000;
  648. #ifdef MNG_SUPPORT_TRACE
  649. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_END);
  650. #endif
  651. return MNG_NOERROR;
  652. }
  653. #endif
  654. /* ************************************************************************** */
  655. #ifndef MNG_SKIP_MAXCANVAS
  656. mng_retcode MNG_DECL mng_set_maxcanvaswidth (mng_handle hHandle,
  657. mng_uint32 iMaxwidth)
  658. {
  659. #ifdef MNG_SUPPORT_TRACE
  660. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASWIDTH, MNG_LC_START);
  661. #endif
  662. MNG_VALIDHANDLE (hHandle)
  663. ((mng_datap)hHandle)->iMaxwidth = iMaxwidth;
  664. #ifdef MNG_SUPPORT_TRACE
  665. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASWIDTH, MNG_LC_END);
  666. #endif
  667. return MNG_NOERROR;
  668. }
  669. /* ************************************************************************** */
  670. mng_retcode MNG_DECL mng_set_maxcanvasheight (mng_handle hHandle,
  671. mng_uint32 iMaxheight)
  672. {
  673. #ifdef MNG_SUPPORT_TRACE
  674. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASHEIGHT, MNG_LC_START);
  675. #endif
  676. MNG_VALIDHANDLE (hHandle)
  677. ((mng_datap)hHandle)->iMaxheight = iMaxheight;
  678. #ifdef MNG_SUPPORT_TRACE
  679. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASHEIGHT, MNG_LC_END);
  680. #endif
  681. return MNG_NOERROR;
  682. }
  683. /* ************************************************************************** */
  684. mng_retcode MNG_DECL mng_set_maxcanvassize (mng_handle hHandle,
  685. mng_uint32 iMaxwidth,
  686. mng_uint32 iMaxheight)
  687. {
  688. #ifdef MNG_SUPPORT_TRACE
  689. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASSIZE, MNG_LC_START);
  690. #endif
  691. MNG_VALIDHANDLE (hHandle)
  692. ((mng_datap)hHandle)->iMaxwidth = iMaxwidth;
  693. ((mng_datap)hHandle)->iMaxheight = iMaxheight;
  694. #ifdef MNG_SUPPORT_TRACE
  695. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASSIZE, MNG_LC_END);
  696. #endif
  697. return MNG_NOERROR;
  698. }
  699. #endif
  700. /* ************************************************************************** */
  701. #ifdef MNG_INCLUDE_ZLIB
  702. #ifdef MNG_ACCESS_ZLIB
  703. #ifdef MNG_SUPPORT_WRITE
  704. mng_retcode MNG_DECL mng_set_zlib_level (mng_handle hHandle,
  705. mng_int32 iZlevel)
  706. {
  707. #ifdef MNG_SUPPORT_TRACE
  708. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_LEVEL, MNG_LC_START);
  709. #endif
  710. MNG_VALIDHANDLE (hHandle)
  711. ((mng_datap)hHandle)->iZlevel = iZlevel;
  712. #ifdef MNG_SUPPORT_TRACE
  713. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_LEVEL, MNG_LC_END);
  714. #endif
  715. return MNG_NOERROR;
  716. }
  717. #endif /* MNG_SUPPORT_WRITE */
  718. #endif /* MNG_ACCESS_ZLIB */
  719. #endif /* MNG_INCLUDE_ZLIB */
  720. /* ************************************************************************** */
  721. #ifdef MNG_INCLUDE_ZLIB
  722. #ifdef MNG_ACCESS_ZLIB
  723. #ifdef MNG_SUPPORT_WRITE
  724. mng_retcode MNG_DECL mng_set_zlib_method (mng_handle hHandle,
  725. mng_int32 iZmethod)
  726. {
  727. #ifdef MNG_SUPPORT_TRACE
  728. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_METHOD, MNG_LC_START);
  729. #endif
  730. MNG_VALIDHANDLE (hHandle)
  731. ((mng_datap)hHandle)->iZmethod = iZmethod;
  732. #ifdef MNG_SUPPORT_TRACE
  733. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_METHOD, MNG_LC_END);
  734. #endif
  735. return MNG_NOERROR;
  736. }
  737. #endif /* MNG_SUPPORT_WRITE */
  738. #endif /* MNG_ACCESS_ZLIB */
  739. #endif /* MNG_INCLUDE_ZLIB */
  740. /* ************************************************************************** */
  741. #ifdef MNG_INCLUDE_ZLIB
  742. #ifdef MNG_ACCESS_ZLIB
  743. #ifdef MNG_SUPPORT_WRITE
  744. mng_retcode MNG_DECL mng_set_zlib_windowbits (mng_handle hHandle,
  745. mng_int32 iZwindowbits)
  746. {
  747. #ifdef MNG_SUPPORT_TRACE
  748. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_WINDOWBITS, MNG_LC_START);
  749. #endif
  750. MNG_VALIDHANDLE (hHandle)
  751. ((mng_datap)hHandle)->iZwindowbits = iZwindowbits;
  752. #ifdef MNG_SUPPORT_TRACE
  753. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_WINDOWBITS, MNG_LC_END);
  754. #endif
  755. return MNG_NOERROR;
  756. }
  757. #endif /* MNG_SUPPORT_WRITE */
  758. #endif /* MNG_ACCESS_ZLIB */
  759. #endif /* MNG_INCLUDE_ZLIB */
  760. /* ************************************************************************** */
  761. #ifdef MNG_INCLUDE_ZLIB
  762. #ifdef MNG_ACCESS_ZLIB
  763. #ifdef MNG_SUPPORT_WRITE
  764. mng_retcode MNG_DECL mng_set_zlib_memlevel (mng_handle hHandle,
  765. mng_int32 iZmemlevel)
  766. {
  767. #ifdef MNG_SUPPORT_TRACE
  768. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MEMLEVEL, MNG_LC_START);
  769. #endif
  770. MNG_VALIDHANDLE (hHandle)
  771. ((mng_datap)hHandle)->iZmemlevel = iZmemlevel;
  772. #ifdef MNG_SUPPORT_TRACE
  773. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MEMLEVEL, MNG_LC_END);
  774. #endif
  775. return MNG_NOERROR;
  776. }
  777. #endif /* MNG_SUPPORT_WRITE */
  778. #endif /* MNG_ACCESS_ZLIB */
  779. #endif /* MNG_INCLUDE_ZLIB */
  780. /* ************************************************************************** */
  781. #ifdef MNG_INCLUDE_ZLIB
  782. #ifdef MNG_ACCESS_ZLIB
  783. #ifdef MNG_SUPPORT_WRITE
  784. mng_retcode MNG_DECL mng_set_zlib_strategy (mng_handle hHandle,
  785. mng_int32 iZstrategy)
  786. {
  787. #ifdef MNG_SUPPORT_TRACE
  788. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_STRATEGY, MNG_LC_START);
  789. #endif
  790. MNG_VALIDHANDLE (hHandle)
  791. ((mng_datap)hHandle)->iZstrategy = iZstrategy;
  792. #ifdef MNG_SUPPORT_TRACE
  793. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_STRATEGY, MNG_LC_END);
  794. #endif
  795. return MNG_NOERROR;
  796. }
  797. #endif /* MNG_SUPPORT_WRITE */
  798. #endif /* MNG_ACCESS_ZLIB */
  799. #endif /* MNG_INCLUDE_ZLIB */
  800. /* ************************************************************************** */
  801. #ifdef MNG_INCLUDE_ZLIB
  802. #ifdef MNG_ACCESS_ZLIB
  803. #ifdef MNG_SUPPORT_WRITE
  804. mng_retcode MNG_DECL mng_set_zlib_maxidat (mng_handle hHandle,
  805. mng_uint32 iMaxIDAT)
  806. {
  807. #ifdef MNG_SUPPORT_TRACE
  808. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MAXIDAT, MNG_LC_START);
  809. #endif
  810. MNG_VALIDHANDLE (hHandle)
  811. ((mng_datap)hHandle)->iMaxIDAT = iMaxIDAT;
  812. #ifdef MNG_SUPPORT_TRACE
  813. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MAXIDAT, MNG_LC_END);
  814. #endif
  815. return MNG_NOERROR;
  816. }
  817. #endif /* MNG_SUPPORT_WRITE */
  818. #endif /* MNG_ACCESS_ZLIB */
  819. #endif /* MNG_INCLUDE_ZLIB */
  820. /* ************************************************************************** */
  821. #ifdef MNG_INCLUDE_JNG
  822. #ifdef MNG_ACCESS_JPEG
  823. #ifdef MNG_SUPPORT_WRITE
  824. mng_retcode MNG_DECL mng_set_jpeg_dctmethod (mng_handle hHandle,
  825. mngjpeg_dctmethod eJPEGdctmethod)
  826. {
  827. #ifdef MNG_SUPPORT_TRACE
  828. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_DCTMETHOD, MNG_LC_START);
  829. #endif
  830. MNG_VALIDHANDLE (hHandle)
  831. ((mng_datap)hHandle)->eJPEGdctmethod = eJPEGdctmethod;
  832. #ifdef MNG_SUPPORT_TRACE
  833. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_DCTMETHOD, MNG_LC_END);
  834. #endif
  835. return MNG_NOERROR;
  836. }
  837. #endif MNG_SUPPORT_WRITE
  838. #endif /* MNG_ACCESS_JPEG */
  839. #endif /* MNG_INCLUDE_JNG */
  840. /* ************************************************************************** */
  841. #ifdef MNG_INCLUDE_JNG
  842. #ifdef MNG_ACCESS_JPEG
  843. #ifdef MNG_SUPPORT_WRITE
  844. mng_retcode MNG_DECL mng_set_jpeg_quality (mng_handle hHandle,
  845. mng_int32 iJPEGquality)
  846. {
  847. #ifdef MNG_SUPPORT_TRACE
  848. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_QUALITY, MNG_LC_START);
  849. #endif
  850. MNG_VALIDHANDLE (hHandle)
  851. ((mng_datap)hHandle)->iJPEGquality = iJPEGquality;
  852. #ifdef MNG_SUPPORT_TRACE
  853. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_QUALITY, MNG_LC_END);
  854. #endif
  855. return MNG_NOERROR;
  856. }
  857. #endif /* MNG_SUPPORT_WRITE */
  858. #endif /* MNG_ACCESS_JPEG */
  859. #endif /* MNG_INCLUDE_JNG */
  860. /* ************************************************************************** */
  861. #ifdef MNG_INCLUDE_JNG
  862. #ifdef MNG_ACCESS_JPEG
  863. #ifdef MNG_SUPPORT_WRITE
  864. mng_retcode MNG_DECL mng_set_jpeg_smoothing (mng_handle hHandle,
  865. mng_int32 iJPEGsmoothing)
  866. {
  867. #ifdef MNG_SUPPORT_TRACE
  868. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_SMOOTHING, MNG_LC_START);
  869. #endif
  870. MNG_VALIDHANDLE (hHandle)
  871. ((mng_datap)hHandle)->iJPEGsmoothing = iJPEGsmoothing;
  872. #ifdef MNG_SUPPORT_TRACE
  873. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_SMOOTHING, MNG_LC_END);
  874. #endif
  875. return MNG_NOERROR;
  876. }
  877. #endif /* MNG_SUPPORT_WRITE */
  878. #endif /* MNG_ACCESS_JPEG */
  879. #endif /* MNG_INCLUDE_JNG */
  880. /* ************************************************************************** */
  881. #ifdef MNG_INCLUDE_JNG
  882. #ifdef MNG_ACCESS_JPEG
  883. #ifdef MNG_SUPPORT_WRITE
  884. mng_retcode MNG_DECL mng_set_jpeg_progressive (mng_handle hHandle,
  885. mng_bool bJPEGprogressive)
  886. {
  887. #ifdef MNG_SUPPORT_TRACE
  888. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_PROGRESSIVE, MNG_LC_START);
  889. #endif
  890. MNG_VALIDHANDLE (hHandle)
  891. ((mng_datap)hHandle)->bJPEGcompressprogr = bJPEGprogressive;
  892. #ifdef MNG_SUPPORT_TRACE
  893. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_PROGRESSIVE, MNG_LC_END);
  894. #endif
  895. return MNG_NOERROR;
  896. }
  897. #endif /* MNG_SUPPORT_WRITE */
  898. #endif /* MNG_ACCESS_JPEG */
  899. #endif /* MNG_INCLUDE_JNG */
  900. /* ************************************************************************** */
  901. #ifdef MNG_INCLUDE_JNG
  902. #ifdef MNG_ACCESS_JPEG
  903. #ifdef MNG_SUPPORT_WRITE
  904. mng_retcode MNG_DECL mng_set_jpeg_optimized (mng_handle hHandle,
  905. mng_bool bJPEGoptimized)
  906. {
  907. #ifdef MNG_SUPPORT_TRACE
  908. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_OPTIMIZED, MNG_LC_START);
  909. #endif
  910. MNG_VALIDHANDLE (hHandle)
  911. ((mng_datap)hHandle)->bJPEGcompressopt = bJPEGoptimized;
  912. #ifdef MNG_SUPPORT_TRACE
  913. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_OPTIMIZED, MNG_LC_END);
  914. #endif
  915. return MNG_NOERROR;
  916. }
  917. #endif /* MNG_SUPPORT_WRITE */
  918. #endif /* MNG_ACCESS_JPEG */
  919. #endif /* MNG_INCLUDE_JNG */
  920. /* ************************************************************************** */
  921. #ifdef MNG_INCLUDE_JNG
  922. #ifdef MNG_ACCESS_JPEG
  923. #ifdef MNG_SUPPORT_WRITE
  924. mng_retcode MNG_DECL mng_set_jpeg_maxjdat (mng_handle hHandle,
  925. mng_uint32 iMaxJDAT)
  926. {
  927. #ifdef MNG_SUPPORT_TRACE
  928. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_MAXJDAT, MNG_LC_START);
  929. #endif
  930. MNG_VALIDHANDLE (hHandle)
  931. ((mng_datap)hHandle)->iMaxJDAT = iMaxJDAT;
  932. #ifdef MNG_SUPPORT_TRACE
  933. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_MAXJDAT, MNG_LC_END);
  934. #endif
  935. return MNG_NOERROR;
  936. }
  937. #endif /* MNG_SUPPORT_WRITE */
  938. #endif /* MNG_ACCESS_JPEG */
  939. #endif /* MNG_INCLUDE_JNG */
  940. /* ************************************************************************** */
  941. #ifdef MNG_SUPPORT_READ
  942. mng_retcode MNG_DECL mng_set_suspensionmode (mng_handle hHandle,
  943. mng_bool bSuspensionmode)
  944. {
  945. #ifdef MNG_SUPPORT_TRACE
  946. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SUSPENSIONMODE, MNG_LC_START);
  947. #endif
  948. MNG_VALIDHANDLE (hHandle)
  949. if (((mng_datap)hHandle)->bReading) /* we must NOT be reading !!! */
  950. MNG_ERROR ((mng_datap)hHandle, MNG_FUNCTIONINVALID);
  951. ((mng_datap)hHandle)->bSuspensionmode = bSuspensionmode;
  952. #ifdef MNG_SUPPORT_TRACE
  953. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SUSPENSIONMODE, MNG_LC_END);
  954. #endif
  955. return MNG_NOERROR;
  956. }
  957. #endif /* MNG_SUPPORT_READ */
  958. /* ************************************************************************** */
  959. #ifdef MNG_SUPPORT_DISPLAY
  960. mng_retcode MNG_DECL mng_set_speed (mng_handle hHandle,
  961. mng_speedtype iSpeed)
  962. {
  963. #ifdef MNG_SUPPORT_TRACE
  964. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SPEED, MNG_LC_START);
  965. #endif
  966. MNG_VALIDHANDLE (hHandle)
  967. ((mng_datap)hHandle)->iSpeed = iSpeed;
  968. #ifdef MNG_SUPPORT_TRACE
  969. MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SPEED, MNG_LC_END);
  970. #endif
  971. return MNG_NOERROR;
  972. }
  973. #endif /* MNG_SUPPORT_DISPLAY */
  974. /* ************************************************************************** */
  975. /* * * */
  976. /* * Property get functions * */
  977. /* * * */
  978. /* ************************************************************************** */
  979. mng_ptr MNG_DECL mng_get_userdata (mng_handle hHandle)
  980. { /* no tracing in here to prevent recursive calls */
  981. MNG_VALIDHANDLEX (hHandle)
  982. return ((mng_datap)hHandle)->pUserdata;
  983. }
  984. /* ************************************************************************** */
  985. mng_imgtype MNG_DECL mng_get_sigtype (mng_handle hHandle)
  986. {
  987. #ifdef MNG_SUPPORT_TRACE
  988. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIGTYPE, MNG_LC_START);
  989. #endif
  990. if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
  991. return mng_it_unknown;
  992. #ifdef MNG_SUPPORT_TRACE
  993. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIGTYPE, MNG_LC_END);
  994. #endif
  995. return ((mng_datap)hHandle)->eSigtype;
  996. }
  997. /* ************************************************************************** */
  998. mng_imgtype MNG_DECL mng_get_imagetype (mng_handle hHandle)
  999. {
  1000. #ifdef MNG_SUPPORT_TRACE
  1001. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGETYPE, MNG_LC_START);
  1002. #endif
  1003. if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
  1004. return mng_it_unknown;
  1005. #ifdef MNG_SUPPORT_TRACE
  1006. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGETYPE, MNG_LC_END);
  1007. #endif
  1008. return ((mng_datap)hHandle)->eImagetype;
  1009. }
  1010. /* ************************************************************************** */
  1011. mng_uint32 MNG_DECL mng_get_imagewidth (mng_handle hHandle)
  1012. {
  1013. #ifdef MNG_SUPPORT_TRACE
  1014. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_START);
  1015. #endif
  1016. MNG_VALIDHANDLEX (hHandle)
  1017. #ifdef MNG_SUPPORT_TRACE
  1018. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_END);
  1019. #endif
  1020. return ((mng_datap)hHandle)->iWidth;
  1021. }
  1022. /* ************************************************************************** */
  1023. mng_uint32 MNG_DECL mng_get_imageheight (mng_handle hHandle)
  1024. {
  1025. #ifdef MNG_SUPPORT_TRACE
  1026. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_START);
  1027. #endif
  1028. MNG_VALIDHANDLEX (hHandle)
  1029. #ifdef MNG_SUPPORT_TRACE
  1030. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEHEIGHT, MNG_LC_END);
  1031. #endif
  1032. return ((mng_datap)hHandle)->iHeight;
  1033. }
  1034. /* ************************************************************************** */
  1035. mng_uint32 MNG_DECL mng_get_ticks (mng_handle hHandle)
  1036. {
  1037. #ifdef MNG_SUPPORT_TRACE
  1038. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TICKS, MNG_LC_START);
  1039. #endif
  1040. MNG_VALIDHANDLEX (hHandle)
  1041. #ifdef MNG_SUPPORT_TRACE
  1042. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TICKS, MNG_LC_END);
  1043. #endif
  1044. return ((mng_datap)hHandle)->iTicks;
  1045. }
  1046. /* ************************************************************************** */
  1047. mng_uint32 MNG_DECL mng_get_framecount (mng_handle hHandle)
  1048. {
  1049. #ifdef MNG_SUPPORT_TRACE
  1050. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FRAMECOUNT, MNG_LC_START);
  1051. #endif
  1052. MNG_VALIDHANDLEX (hHandle)
  1053. #ifdef MNG_SUPPORT_TRACE
  1054. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FRAMECOUNT, MNG_LC_END);
  1055. #endif
  1056. return ((mng_datap)hHandle)->iFramecount;
  1057. }
  1058. /* ************************************************************************** */
  1059. mng_uint32 MNG_DECL mng_get_layercount (mng_handle hHandle)
  1060. {
  1061. #ifdef MNG_SUPPORT_TRACE
  1062. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LAYERCOUNT, MNG_LC_START);
  1063. #endif
  1064. MNG_VALIDHANDLEX (hHandle)
  1065. #ifdef MNG_SUPPORT_TRACE
  1066. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LAYERCOUNT, MNG_LC_END);
  1067. #endif
  1068. return ((mng_datap)hHandle)->iLayercount;
  1069. }
  1070. /* ************************************************************************** */
  1071. mng_uint32 MNG_DECL mng_get_playtime (mng_handle hHandle)
  1072. {
  1073. #ifdef MNG_SUPPORT_TRACE
  1074. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_PLAYTIME, MNG_LC_START);
  1075. #endif
  1076. MNG_VALIDHANDLEX (hHandle)
  1077. #ifdef MNG_SUPPORT_TRACE
  1078. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_PLAYTIME, MNG_LC_END);
  1079. #endif
  1080. return ((mng_datap)hHandle)->iPlaytime;
  1081. }
  1082. /* ************************************************************************** */
  1083. mng_uint32 MNG_DECL mng_get_simplicity (mng_handle hHandle)
  1084. {
  1085. #ifdef MNG_SUPPORT_TRACE
  1086. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIMPLICITY, MNG_LC_START);
  1087. #endif
  1088. MNG_VALIDHANDLEX (hHandle)
  1089. #ifdef MNG_SUPPORT_TRACE
  1090. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIMPLICITY, MNG_LC_END);
  1091. #endif
  1092. return ((mng_datap)hHandle)->iSimplicity;
  1093. }
  1094. /* ************************************************************************** */
  1095. mng_uint8 MNG_DECL mng_get_bitdepth (mng_handle hHandle)
  1096. {
  1097. mng_uint8 iRslt;
  1098. #ifdef MNG_SUPPORT_TRACE
  1099. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BITDEPTH, MNG_LC_START);
  1100. #endif
  1101. MNG_VALIDHANDLEX (hHandle)
  1102. if (((mng_datap)hHandle)->eImagetype == mng_it_png)
  1103. iRslt = ((mng_datap)hHandle)->iBitdepth;
  1104. else
  1105. #ifdef MNG_INCLUDE_JNG
  1106. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1107. iRslt = ((mng_datap)hHandle)->iJHDRimgbitdepth;
  1108. else
  1109. #endif
  1110. iRslt = 0;
  1111. #ifdef MNG_SUPPORT_TRACE
  1112. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BITDEPTH, MNG_LC_END);
  1113. #endif
  1114. return iRslt;
  1115. }
  1116. /* ************************************************************************** */
  1117. mng_uint8 MNG_DECL mng_get_colortype (mng_handle hHandle)
  1118. {
  1119. mng_uint8 iRslt;
  1120. #ifdef MNG_SUPPORT_TRACE
  1121. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COLORTYPE, MNG_LC_START);
  1122. #endif
  1123. MNG_VALIDHANDLEX (hHandle)
  1124. if (((mng_datap)hHandle)->eImagetype == mng_it_png)
  1125. iRslt = ((mng_datap)hHandle)->iColortype;
  1126. else
  1127. #ifdef MNG_INCLUDE_JNG
  1128. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1129. iRslt = ((mng_datap)hHandle)->iJHDRcolortype;
  1130. else
  1131. #endif
  1132. iRslt = 0;
  1133. #ifdef MNG_SUPPORT_TRACE
  1134. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COLORTYPE, MNG_LC_END);
  1135. #endif
  1136. return iRslt;
  1137. }
  1138. /* ************************************************************************** */
  1139. mng_uint8 MNG_DECL mng_get_compression (mng_handle hHandle)
  1140. {
  1141. mng_uint8 iRslt;
  1142. #ifdef MNG_SUPPORT_TRACE
  1143. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COMPRESSION, MNG_LC_START);
  1144. #endif
  1145. MNG_VALIDHANDLEX (hHandle)
  1146. if (((mng_datap)hHandle)->eImagetype == mng_it_png)
  1147. iRslt = ((mng_datap)hHandle)->iCompression;
  1148. else
  1149. #ifdef MNG_INCLUDE_JNG
  1150. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1151. iRslt = ((mng_datap)hHandle)->iJHDRimgcompression;
  1152. else
  1153. #endif
  1154. iRslt = 0;
  1155. #ifdef MNG_SUPPORT_TRACE
  1156. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COMPRESSION, MNG_LC_END);
  1157. #endif
  1158. return iRslt;
  1159. }
  1160. /* ************************************************************************** */
  1161. mng_uint8 MNG_DECL mng_get_filter (mng_handle hHandle)
  1162. {
  1163. mng_uint8 iRslt;
  1164. #ifdef MNG_SUPPORT_TRACE
  1165. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FILTER, MNG_LC_START);
  1166. #endif
  1167. MNG_VALIDHANDLEX (hHandle)
  1168. if (((mng_datap)hHandle)->eImagetype == mng_it_png)
  1169. iRslt = ((mng_datap)hHandle)->iFilter;
  1170. else
  1171. iRslt = 0;
  1172. #ifdef MNG_SUPPORT_TRACE
  1173. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FILTER, MNG_LC_END);
  1174. #endif
  1175. return iRslt;
  1176. }
  1177. /* ************************************************************************** */
  1178. mng_uint8 MNG_DECL mng_get_interlace (mng_handle hHandle)
  1179. {
  1180. mng_uint8 iRslt;
  1181. #ifdef MNG_SUPPORT_TRACE
  1182. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_INTERLACE, MNG_LC_START);
  1183. #endif
  1184. MNG_VALIDHANDLEX (hHandle)
  1185. if (((mng_datap)hHandle)->eImagetype == mng_it_png)
  1186. iRslt = ((mng_datap)hHandle)->iInterlace;
  1187. else
  1188. #ifdef MNG_INCLUDE_JNG
  1189. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1190. iRslt = ((mng_datap)hHandle)->iJHDRimginterlace;
  1191. else
  1192. #endif
  1193. iRslt = 0;
  1194. #ifdef MNG_SUPPORT_TRACE
  1195. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_INTERLACE, MNG_LC_END);
  1196. #endif
  1197. return iRslt;
  1198. }
  1199. /* ************************************************************************** */
  1200. mng_uint8 MNG_DECL mng_get_alphabitdepth (mng_handle hHandle)
  1201. {
  1202. mng_uint8 iRslt;
  1203. #ifdef MNG_SUPPORT_TRACE
  1204. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHABITDEPTH, MNG_LC_START);
  1205. #endif
  1206. MNG_VALIDHANDLEX (hHandle)
  1207. #ifdef MNG_INCLUDE_JNG
  1208. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1209. iRslt = ((mng_datap)hHandle)->iJHDRalphabitdepth;
  1210. else
  1211. #endif
  1212. iRslt = 0;
  1213. #ifdef MNG_SUPPORT_TRACE
  1214. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHABITDEPTH, MNG_LC_END);
  1215. #endif
  1216. return iRslt;
  1217. }
  1218. /* ************************************************************************** */
  1219. #ifdef MNG_SUPPORT_DISPLAY
  1220. mng_uint8 MNG_DECL mng_get_refreshpass (mng_handle hHandle)
  1221. {
  1222. mng_uint8 iRslt;
  1223. mng_datap pData;
  1224. #ifdef MNG_SUPPORT_TRACE
  1225. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_REFRESHPASS, MNG_LC_START);
  1226. #endif
  1227. MNG_VALIDHANDLEX (hHandle)
  1228. pData = (mng_datap)hHandle;
  1229. /* for PNG we know the exact pass */
  1230. if ((pData->eImagetype == mng_it_png) && (pData->iPass >= 0))
  1231. iRslt = pData->iPass;
  1232. #ifdef MNG_INCLUDE_JNG
  1233. else /* for JNG we'll fake it... */
  1234. if ((pData->eImagetype == mng_it_jng) &&
  1235. (pData->bJPEGhasheader) && (pData->bJPEGdecostarted) &&
  1236. (pData->bJPEGprogressive))
  1237. {
  1238. if (pData->pJPEGdinfo->input_scan_number <= 1)
  1239. iRslt = 0; /* first pass (I think...) */
  1240. else
  1241. if (jpeg_input_complete (pData->pJPEGdinfo))
  1242. iRslt = 7; /* input complete; aka final pass */
  1243. else
  1244. iRslt = 3; /* anything between 0 and 7 will do */
  1245. }
  1246. #endif
  1247. else
  1248. iRslt = 0;
  1249. #ifdef MNG_SUPPORT_TRACE
  1250. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_REFRESHPASS, MNG_LC_END);
  1251. #endif
  1252. return iRslt;
  1253. }
  1254. #endif /* MNG_SUPPORT_DISPLAY */
  1255. /* ************************************************************************** */
  1256. mng_uint8 MNG_DECL mng_get_alphacompression (mng_handle hHandle)
  1257. {
  1258. mng_uint8 iRslt;
  1259. #ifdef MNG_SUPPORT_TRACE
  1260. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHACOMPRESSION, MNG_LC_START);
  1261. #endif
  1262. MNG_VALIDHANDLEX (hHandle)
  1263. #ifdef MNG_INCLUDE_JNG
  1264. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1265. iRslt = ((mng_datap)hHandle)->iJHDRalphacompression;
  1266. else
  1267. #endif
  1268. iRslt = 0;
  1269. #ifdef MNG_SUPPORT_TRACE
  1270. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHACOMPRESSION, MNG_LC_END);
  1271. #endif
  1272. return iRslt;
  1273. }
  1274. /* ************************************************************************** */
  1275. mng_uint8 MNG_DECL mng_get_alphafilter (mng_handle hHandle)
  1276. {
  1277. mng_uint8 iRslt;
  1278. #ifdef MNG_SUPPORT_TRACE
  1279. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAFILTER, MNG_LC_START);
  1280. #endif
  1281. MNG_VALIDHANDLEX (hHandle)
  1282. #ifdef MNG_INCLUDE_JNG
  1283. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1284. iRslt = ((mng_datap)hHandle)->iJHDRalphafilter;
  1285. else
  1286. #endif
  1287. iRslt = 0;
  1288. #ifdef MNG_SUPPORT_TRACE
  1289. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAFILTER, MNG_LC_END);
  1290. #endif
  1291. return iRslt;
  1292. }
  1293. /* ************************************************************************** */
  1294. mng_uint8 MNG_DECL mng_get_alphainterlace (mng_handle hHandle)
  1295. {
  1296. mng_uint8 iRslt;
  1297. #ifdef MNG_SUPPORT_TRACE
  1298. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAINTERLACE, MNG_LC_START);
  1299. #endif
  1300. MNG_VALIDHANDLEX (hHandle)
  1301. #ifdef MNG_INCLUDE_JNG
  1302. if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
  1303. iRslt = ((mng_datap)hHandle)->iJHDRalphainterlace;
  1304. else
  1305. #endif
  1306. iRslt = 0;
  1307. #ifdef MNG_SUPPORT_TRACE
  1308. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAINTERLACE, MNG_LC_END);
  1309. #endif
  1310. return iRslt;
  1311. }
  1312. /* ************************************************************************** */
  1313. mng_uint8 MNG_DECL mng_get_alphadepth (mng_handle hHandle)
  1314. {
  1315. #ifdef MNG_SUPPORT_TRACE
  1316. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHADEPTH, MNG_LC_START);
  1317. #endif
  1318. MNG_VALIDHANDLEX (hHandle)
  1319. #ifdef MNG_SUPPORT_TRACE
  1320. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHADEPTH, MNG_LC_END);
  1321. #endif
  1322. return ((mng_datap)hHandle)->iAlphadepth;
  1323. }
  1324. /* ************************************************************************** */
  1325. mng_uint32 MNG_DECL mng_get_canvasstyle (mng_handle hHandle)
  1326. {
  1327. #ifdef MNG_SUPPORT_TRACE
  1328. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CANVASSTYLE, MNG_LC_START);
  1329. #endif
  1330. MNG_VALIDHANDLEX (hHandle)
  1331. #ifdef MNG_SUPPORT_TRACE
  1332. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CANVASSTYLE, MNG_LC_END);
  1333. #endif
  1334. return ((mng_datap)hHandle)->iCanvasstyle;
  1335. }
  1336. /* ************************************************************************** */
  1337. mng_uint32 MNG_DECL mng_get_bkgdstyle (mng_handle hHandle)
  1338. {
  1339. #ifdef MNG_SUPPORT_TRACE
  1340. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BKGDSTYLE, MNG_LC_START);
  1341. #endif
  1342. MNG_VALIDHANDLEX (hHandle)
  1343. #ifdef MNG_SUPPORT_TRACE
  1344. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BKGDSTYLE, MNG_LC_END);
  1345. #endif
  1346. return ((mng_datap)hHandle)->iBkgdstyle;
  1347. }
  1348. /* ************************************************************************** */
  1349. mng_retcode MNG_DECL mng_get_bgcolor (mng_handle hHandle,
  1350. mng_uint16* iRed,
  1351. mng_uint16* iGreen,
  1352. mng_uint16* iBlue)
  1353. {
  1354. #ifdef MNG_SUPPORT_TRACE
  1355. MNG_TRACE (((mng_datap)hHandle), MNG_FN_GET_BGCOLOR, MNG_LC_START);
  1356. #endif
  1357. MNG_VALIDHANDLE (hHandle)
  1358. *iRed = ((mng_datap)hHandle)->iBGred;
  1359. *iGreen = ((mng_datap)hHandle)->iBGgreen;
  1360. *iBlue = ((mng_datap)hHandle)->iBGblue;
  1361. #ifdef MNG_SUPPORT_TRACE
  1362. MNG_TRACE (((mng_datap)hHandle), MNG_FN_GET_BGCOLOR, MNG_LC_END);
  1363. #endif
  1364. return MNG_NOERROR;
  1365. }
  1366. /* ************************************************************************** */
  1367. mng_bool MNG_DECL mng_get_usebkgd (mng_handle hHandle)
  1368. {
  1369. #ifdef MNG_SUPPORT_TRACE
  1370. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_USEBKGD, MNG_LC_START);
  1371. #endif
  1372. MNG_VALIDHANDLEX (hHandle)
  1373. #ifdef MNG_SUPPORT_TRACE
  1374. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_USEBKGD, MNG_LC_END);
  1375. #endif
  1376. return ((mng_datap)hHandle)->bUseBKGD;
  1377. }
  1378. /* ************************************************************************** */
  1379. mng_bool MNG_DECL mng_get_storechunks (mng_handle hHandle)
  1380. {
  1381. #ifdef MNG_SUPPORT_TRACE
  1382. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_STORECHUNKS, MNG_LC_START);
  1383. #endif
  1384. MNG_VALIDHANDLEX (hHandle)
  1385. #ifdef MNG_SUPPORT_TRACE
  1386. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_STORECHUNKS, MNG_LC_END);
  1387. #endif
  1388. return ((mng_datap)hHandle)->bStorechunks;
  1389. }
  1390. /* ************************************************************************** */
  1391. mng_bool MNG_DECL mng_get_sectionbreaks (mng_handle hHandle)
  1392. {
  1393. #ifdef MNG_SUPPORT_TRACE
  1394. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SECTIONBREAKS, MNG_LC_START);
  1395. #endif
  1396. MNG_VALIDHANDLEX (hHandle)
  1397. #ifdef MNG_SUPPORT_TRACE
  1398. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SECTIONBREAKS, MNG_LC_END);
  1399. #endif
  1400. return ((mng_datap)hHandle)->bSectionbreaks;
  1401. }
  1402. /* ************************************************************************** */
  1403. mng_bool MNG_DECL mng_get_cacheplayback (mng_handle hHandle)
  1404. {
  1405. #ifdef MNG_SUPPORT_TRACE
  1406. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CACHEPLAYBACK, MNG_LC_START);
  1407. #endif
  1408. MNG_VALIDHANDLEX (hHandle)
  1409. #ifdef MNG_SUPPORT_TRACE
  1410. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CACHEPLAYBACK, MNG_LC_END);
  1411. #endif
  1412. return ((mng_datap)hHandle)->bCacheplayback;
  1413. }
  1414. /* ************************************************************************** */
  1415. mng_bool MNG_DECL mng_get_doprogressive (mng_handle hHandle)
  1416. {
  1417. #ifdef MNG_SUPPORT_TRACE
  1418. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_DOPROGRESSIVE, MNG_LC_START);
  1419. #endif
  1420. MNG_VALIDHANDLEX (hHandle)
  1421. #ifdef MNG_SUPPORT_TRACE
  1422. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_DOPROGRESSIVE, MNG_LC_END);
  1423. #endif
  1424. return ((mng_datap)hHandle)->bDoProgressive;
  1425. }
  1426. /* ************************************************************************** */
  1427. mng_uint32 MNG_DECL mng_get_crcmode (mng_handle hHandle)
  1428. {
  1429. #ifdef MNG_SUPPORT_TRACE
  1430. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CRCMODE, MNG_LC_START);
  1431. #endif
  1432. MNG_VALIDHANDLEX (hHandle)
  1433. #ifdef MNG_SUPPORT_TRACE
  1434. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CRCMODE, MNG_LC_END);
  1435. #endif
  1436. return ((mng_datap)hHandle)->iCrcmode;
  1437. }
  1438. /* ************************************************************************** */
  1439. #ifdef MNG_SUPPORT_DISPLAY
  1440. mng_bool MNG_DECL mng_get_srgb (mng_handle hHandle)
  1441. {
  1442. #ifdef MNG_SUPPORT_TRACE
  1443. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SRGB, MNG_LC_START);
  1444. #endif
  1445. MNG_VALIDHANDLEX (hHandle)
  1446. #ifdef MNG_SUPPORT_TRACE
  1447. MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SRGB, MNG_LC_END);
  1448. #endif
  1449. return ((mng_datap)hHandle)->bIssRGB;
  1450. }
  1451. #endif /* MNG_SUPPORT_DISPLAY */
  1452. /* ************************************************************************** */
  1453. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1454. mng_float MNG_DECL mng_get_viewgamma (mng_handle hHandle)
  1455. {
  1456. #ifdef MNG_SUPPORT_TRACE
  1457. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_START);
  1458. #endif
  1459. MNG_VALIDHANDLEX (hHandle)
  1460. #ifdef MNG_SUPPORT_TRACE
  1461. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_END);
  1462. #endif
  1463. return ((mng_datap)hHandle)->dViewgamma;
  1464. }
  1465. #endif
  1466. /* ************************************************************************** */
  1467. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1468. mng_float MNG_DECL mng_get_displaygamma (mng_handle hHandle)
  1469. {
  1470. #ifdef MNG_SUPPORT_TRACE
  1471. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_START);
  1472. #endif
  1473. MNG_VALIDHANDLEX (hHandle)
  1474. #ifdef MNG_SUPPORT_TRACE
  1475. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_END);
  1476. #endif
  1477. return ((mng_datap)hHandle)->dDisplaygamma;
  1478. }
  1479. #endif
  1480. /* ************************************************************************** */
  1481. #ifndef MNG_NO_DFLT_INFO
  1482. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1483. mng_float MNG_DECL mng_get_dfltimggamma (mng_handle hHandle)
  1484. {
  1485. #ifdef MNG_SUPPORT_TRACE
  1486. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_START);
  1487. #endif
  1488. MNG_VALIDHANDLEX (hHandle)
  1489. #ifdef MNG_SUPPORT_TRACE
  1490. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_END);
  1491. #endif
  1492. return ((mng_datap)hHandle)->dDfltimggamma;
  1493. }
  1494. #endif
  1495. #endif
  1496. /* ************************************************************************** */
  1497. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1498. mng_uint32 MNG_DECL mng_get_viewgammaint (mng_handle hHandle)
  1499. {
  1500. #ifdef MNG_SUPPORT_TRACE
  1501. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_START);
  1502. #endif
  1503. MNG_VALIDHANDLEX (hHandle)
  1504. #ifdef MNG_SUPPORT_TRACE
  1505. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_END);
  1506. #endif
  1507. return (mng_uint32)(((mng_datap)hHandle)->dViewgamma * 100000);
  1508. }
  1509. #endif
  1510. /* ************************************************************************** */
  1511. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1512. mng_uint32 MNG_DECL mng_get_displaygammaint (mng_handle hHandle)
  1513. {
  1514. #ifdef MNG_SUPPORT_TRACE
  1515. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_START);
  1516. #endif
  1517. MNG_VALIDHANDLEX (hHandle)
  1518. #ifdef MNG_SUPPORT_TRACE
  1519. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_END);
  1520. #endif
  1521. return (mng_uint32)(((mng_datap)hHandle)->dDisplaygamma * 100000);
  1522. }
  1523. #endif
  1524. /* ************************************************************************** */
  1525. #ifndef MNG_NO_DFLT_INFO
  1526. #if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
  1527. mng_uint32 MNG_DECL mng_get_dfltimggammaint (mng_handle hHandle)
  1528. {
  1529. #ifdef MNG_SUPPORT_TRACE
  1530. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_START);
  1531. #endif
  1532. MNG_VALIDHANDLEX (hHandle)
  1533. #ifdef MNG_SUPPORT_TRACE
  1534. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_END);
  1535. #endif
  1536. return (mng_uint32)(((mng_datap)hHandle)->dDfltimggamma * 100000);
  1537. }
  1538. #endif
  1539. #endif
  1540. /* ************************************************************************** */
  1541. #ifndef MNG_SKIP_MAXCANVAS
  1542. mng_uint32 MNG_DECL mng_get_maxcanvaswidth (mng_handle hHandle)
  1543. {
  1544. #ifdef MNG_SUPPORT_TRACE
  1545. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASWIDTH, MNG_LC_START);
  1546. #endif
  1547. MNG_VALIDHANDLEX (hHandle)
  1548. #ifdef MNG_SUPPORT_TRACE
  1549. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASWIDTH, MNG_LC_END);
  1550. #endif
  1551. return ((mng_datap)hHandle)->iMaxwidth;
  1552. }
  1553. /* ************************************************************************** */
  1554. mng_uint32 MNG_DECL mng_get_maxcanvasheight (mng_handle hHandle)
  1555. {
  1556. #ifdef MNG_SUPPORT_TRACE
  1557. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASHEIGHT, MNG_LC_START);
  1558. #endif
  1559. MNG_VALIDHANDLEX (hHandle)
  1560. #ifdef MNG_SUPPORT_TRACE
  1561. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASHEIGHT, MNG_LC_END);
  1562. #endif
  1563. return ((mng_datap)hHandle)->iMaxheight;
  1564. }
  1565. #endif
  1566. /* ************************************************************************** */
  1567. #ifdef MNG_INCLUDE_ZLIB
  1568. #ifdef MNG_ACCESS_ZLIB
  1569. mng_int32 MNG_DECL mng_get_zlib_level (mng_handle hHandle)
  1570. {
  1571. #ifdef MNG_SUPPORT_TRACE
  1572. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_LEVEL, MNG_LC_START);
  1573. #endif
  1574. MNG_VALIDHANDLEX (hHandle)
  1575. #ifdef MNG_SUPPORT_TRACE
  1576. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_LEVEL, MNG_LC_END);
  1577. #endif
  1578. return ((mng_datap)hHandle)->iZlevel;
  1579. }
  1580. #endif /* MNG_ACCESS_ZLIB */
  1581. #endif /* MNG_INCLUDE_ZLIB */
  1582. /* ************************************************************************** */
  1583. #ifdef MNG_INCLUDE_ZLIB
  1584. #ifdef MNG_ACCESS_ZLIB
  1585. mng_int32 MNG_DECL mng_get_zlib_method (mng_handle hHandle)
  1586. {
  1587. #ifdef MNG_SUPPORT_TRACE
  1588. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_METHOD, MNG_LC_START);
  1589. #endif
  1590. MNG_VALIDHANDLEX (hHandle)
  1591. #ifdef MNG_SUPPORT_TRACE
  1592. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_METHOD, MNG_LC_END);
  1593. #endif
  1594. return ((mng_datap)hHandle)->iZmethod;
  1595. }
  1596. #endif /* MNG_ACCESS_ZLIB */
  1597. #endif /* MNG_INCLUDE_ZLIB */
  1598. /* ************************************************************************** */
  1599. #ifdef MNG_INCLUDE_ZLIB
  1600. #ifdef MNG_ACCESS_ZLIB
  1601. mng_int32 MNG_DECL mng_get_zlib_windowbits (mng_handle hHandle)
  1602. {
  1603. #ifdef MNG_SUPPORT_TRACE
  1604. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_WINDOWBITS, MNG_LC_START);
  1605. #endif
  1606. MNG_VALIDHANDLEX (hHandle)
  1607. #ifdef MNG_SUPPORT_TRACE
  1608. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_WINDOWBITS, MNG_LC_END);
  1609. #endif
  1610. return ((mng_datap)hHandle)->iZwindowbits;
  1611. }
  1612. #endif /* MNG_ACCESS_ZLIB */
  1613. #endif /* MNG_INCLUDE_ZLIB */
  1614. /* ************************************************************************** */
  1615. #ifdef MNG_INCLUDE_ZLIB
  1616. #ifdef MNG_ACCESS_ZLIB
  1617. mng_int32 MNG_DECL mng_get_zlib_memlevel (mng_handle hHandle)
  1618. {
  1619. #ifdef MNG_SUPPORT_TRACE
  1620. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MEMLEVEL, MNG_LC_START);
  1621. #endif
  1622. MNG_VALIDHANDLEX (hHandle)
  1623. #ifdef MNG_SUPPORT_TRACE
  1624. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MEMLEVEL, MNG_LC_END);
  1625. #endif
  1626. return ((mng_datap)hHandle)->iZmemlevel;
  1627. }
  1628. #endif /* MNG_ACCESS_ZLIB */
  1629. #endif /* MNG_INCLUDE_ZLIB */
  1630. /* ************************************************************************** */
  1631. #ifdef MNG_INCLUDE_ZLIB
  1632. #ifdef MNG_ACCESS_ZLIB
  1633. mng_int32 MNG_DECL mng_get_zlib_strategy (mng_handle hHandle)
  1634. {
  1635. #ifdef MNG_SUPPORT_TRACE
  1636. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_STRATEGY, MNG_LC_START);
  1637. #endif
  1638. MNG_VALIDHANDLEX (hHandle)
  1639. #ifdef MNG_SUPPORT_TRACE
  1640. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_STRATEGY, MNG_LC_END);
  1641. #endif
  1642. return ((mng_datap)hHandle)->iZstrategy;
  1643. }
  1644. #endif /* MNG_ACCESS_ZLIB */
  1645. #endif /* MNG_INCLUDE_ZLIB */
  1646. /* ************************************************************************** */
  1647. #ifdef MNG_INCLUDE_ZLIB
  1648. #ifdef MNG_ACCESS_ZLIB
  1649. mng_uint32 MNG_DECL mng_get_zlib_maxidat (mng_handle hHandle)
  1650. {
  1651. #ifdef MNG_SUPPORT_TRACE
  1652. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MAXIDAT, MNG_LC_START);
  1653. #endif
  1654. MNG_VALIDHANDLEX (hHandle)
  1655. #ifdef MNG_SUPPORT_TRACE
  1656. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MAXIDAT, MNG_LC_END);
  1657. #endif
  1658. return ((mng_datap)hHandle)->iMaxIDAT;
  1659. }
  1660. #endif /* MNG_ACCESS_ZLIB */
  1661. #endif /* MNG_INCLUDE_ZLIB */
  1662. /* ************************************************************************** */
  1663. #ifdef MNG_INCLUDE_JNG
  1664. #ifdef MNG_ACCESS_JPEG
  1665. mngjpeg_dctmethod MNG_DECL mng_get_jpeg_dctmethod (mng_handle hHandle)
  1666. {
  1667. #ifdef MNG_SUPPORT_TRACE
  1668. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_DCTMETHOD, MNG_LC_START);
  1669. #endif
  1670. if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
  1671. return JDCT_ISLOW;
  1672. #ifdef MNG_SUPPORT_TRACE
  1673. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_DCTMETHOD, MNG_LC_END);
  1674. #endif
  1675. return ((mng_datap)hHandle)->eJPEGdctmethod;
  1676. }
  1677. #endif /* MNG_ACCESS_JPEG */
  1678. #endif /* MNG_INCLUDE_JNG */
  1679. /* ************************************************************************** */
  1680. #ifdef MNG_INCLUDE_JNG
  1681. #ifdef MNG_ACCESS_JPEG
  1682. mng_int32 MNG_DECL mng_get_jpeg_quality (mng_handle hHandle)
  1683. {
  1684. #ifdef MNG_SUPPORT_TRACE
  1685. MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_QUALITY, MNG_LC_START);
  1686. #endif
  1687. MNG_VALIDHANDLEX (hHandle)
  1688. #i