зеркало из https://github.com/mozilla/pjs.git
Bug 66989 - update libmng, flush animation frames, quiet warnings.
r=pavlov, sr=brendan
This commit is contained in:
Родитель
8b1d0eec24
Коммит
603c006f78
|
@ -1,26 +1,74 @@
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
|
||||||
0.9.4 (xxxx nnth 2000)
|
0.9.5 (... ..th 2001)
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
in short:
|
in short:
|
||||||
|
|
||||||
intermediate for now
|
intermediate
|
||||||
|
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
bugfixes:
|
bugfixes:
|
||||||
|
B129681 - fixed compiler warnings SGI/Irix (thanks Dimitri)
|
||||||
|
|
||||||
|
core:
|
||||||
|
- fixed compiler-warnings Mozilla (thanks Tim)
|
||||||
|
- fixed timing-problem with switching framing_modes
|
||||||
|
- fixed some small compiler warnings (thanks Nikki)
|
||||||
|
|
||||||
|
samples:
|
||||||
|
|
||||||
|
contrib:
|
||||||
|
|
||||||
|
doc:
|
||||||
|
|
||||||
|
makefiles:
|
||||||
|
|
||||||
|
autoconf:
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
0.9.4 (Jan 19th 2001)
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
in short:
|
||||||
|
|
||||||
|
Now that the MNG spec is at 1.0, this should be the last beta. There's a few
|
||||||
|
small changes to make it inline with the spec, and a couple of bug-fixes.
|
||||||
|
This is a serious release-candidate for libmng-1.0!!
|
||||||
|
Please... test test test test!!
|
||||||
|
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
bugfixes:
|
||||||
|
B123314 - fixed number of TERM related problems
|
||||||
|
B123322 - fixed unwanted repetition in mng_readdisplay()
|
||||||
|
B123443 - fixed by Ralph
|
||||||
|
B124910 - fixed definition for WIN32_LEAN_AND_MEAN (thanks Chad)
|
||||||
|
B125750 - fixed by Ralph
|
||||||
|
B125756 - fixed mixup of data- & function-pointers (thanks Dimitri)
|
||||||
|
B127517 - changed inclusion of the lcms header file for non-windows platforms
|
||||||
|
|
||||||
core:
|
core:
|
||||||
- version numbers
|
- version numbers
|
||||||
- fixed possible loop in display_resume() (Thanks Vova!)
|
- fixed possible loop in display_resume() (Thanks Vova!)
|
||||||
- fixed unwanted repetition in mng_readdisplay()
|
- fixed unwanted repetition in mng_readdisplay()
|
||||||
- changed inclusion of the lcms header file for non-windows platforms
|
- changed inclusion of the lcms header file for non-windows platforms
|
||||||
- changed IHDR filter_method check for PNGs
|
- changed IHDR filter_method check for PNGs
|
||||||
- moved restore of object 0 to libmng_display
|
- moved restore of object 0 to libmng_display
|
||||||
- added restore of object 0 to TERM processing !!!
|
- added restore of object 0 to TERM processing (B123314)
|
||||||
- fixed TERM delay processing
|
- fixed TERM delay processing (B123314)
|
||||||
- fixed TERM end processing (count = 0)
|
- fixed TERM end processing when count = 0 (B123314)
|
||||||
|
- changed callback convention for MSVC (Thanks Chad)
|
||||||
|
- fixed mixup of data- & function-pointers (thanks Dimitri)
|
||||||
|
- added support for "nEED MNG-1.0"
|
||||||
|
- added errorcode for MAGN methods
|
||||||
|
- added errorchecking for MAGN methods
|
||||||
|
- removed "old" MAGN methods 3 & 4
|
||||||
|
- added "new" MAGN methods 3, 4 & 5
|
||||||
|
- removed test filter-methods 1 & 65
|
||||||
|
- set default level-set for filtertype=64 to all zeroes
|
||||||
|
|
||||||
samples:
|
samples:
|
||||||
|
|
||||||
|
@ -30,6 +78,7 @@ contrib:
|
||||||
- updated Jason Summer's mngplg to version 0.9.2
|
- updated Jason Summer's mngplg to version 0.9.2
|
||||||
(that's mngplg-0.9.2 based on libmng-0.9.3 !!!)
|
(that's mngplg-0.9.2 based on libmng-0.9.3 !!!)
|
||||||
- rearranged contrib directory slightly
|
- rearranged contrib directory slightly
|
||||||
|
- added MSVC project to build libmng.dll by Chad Austin
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
- added README.dll
|
- added README.dll
|
||||||
|
@ -76,8 +125,8 @@ suggestions and testing this little baby. This would get nowhere without YOU!!!
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
bugfixes:
|
bugfixes:
|
||||||
- B111300 - fixup for improved portability
|
B111300 - fixup for improved portability
|
||||||
- B117103 - fixed compilation errors on *nix with lcms (thanks Ralph!)
|
B117103 - fixed compilation errors on *nix with lcms (thanks Ralph!)
|
||||||
|
|
||||||
core:
|
core:
|
||||||
- fixed compiler-warnings from Mozilla
|
- fixed compiler-warnings from Mozilla
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng.h copyright (c) 2000 G.Juyn * */
|
/* * file : libmng.h copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.5 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : main application interface * */
|
/* * purpose : main application interface * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -205,6 +205,10 @@
|
||||||
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
||||||
/* * - added get function for interlace/progressive display * */
|
/* * - added get function for interlace/progressive display * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added errorcode for MAGN methods * */
|
||||||
|
/* * - removed test filter-methods 1 & 65 * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
||||||
|
@ -343,12 +347,12 @@ extern "C" {
|
||||||
/* * * */
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#define MNG_VERSION_TEXT "0.9.4"
|
#define MNG_VERSION_TEXT "0.9.5"
|
||||||
#define MNG_VERSION_SO 0 /* eg. libmng.so.0 (while in test/beta) */
|
#define MNG_VERSION_SO 0 /* eg. libmng.so.0 (while in test/beta) */
|
||||||
#define MNG_VERSION_DLL 0 /* eg. libmng.dll (nb. same for version 1) */
|
#define MNG_VERSION_DLL 0 /* eg. libmng.dll (nb. same for version 1) */
|
||||||
#define MNG_VERSION_MAJOR 0
|
#define MNG_VERSION_MAJOR 0
|
||||||
#define MNG_VERSION_MINOR 9
|
#define MNG_VERSION_MINOR 9
|
||||||
#define MNG_VERSION_RELEASE 4
|
#define MNG_VERSION_RELEASE 5
|
||||||
|
|
||||||
MNG_EXT mng_pchar MNG_DECL mng_version_text (void);
|
MNG_EXT mng_pchar MNG_DECL mng_version_text (void);
|
||||||
MNG_EXT mng_uint8 MNG_DECL mng_version_so (void);
|
MNG_EXT mng_uint8 MNG_DECL mng_version_so (void);
|
||||||
|
@ -367,10 +371,10 @@ MNG_EXT mng_uint8 MNG_DECL mng_version_release (void);
|
||||||
#define MNG_PNG_VERSION_MAJ 1
|
#define MNG_PNG_VERSION_MAJ 1
|
||||||
#define MNG_PNG_VERSION_MIN 2
|
#define MNG_PNG_VERSION_MIN 2
|
||||||
|
|
||||||
#define MNG_MNG_VERSION "0.98a"
|
#define MNG_MNG_VERSION "1.0"
|
||||||
#define MNG_MNG_VERSION_MAJ 0
|
#define MNG_MNG_VERSION_MAJ 1
|
||||||
#define MNG_MNG_VERSION_MIN 98
|
#define MNG_MNG_VERSION_MIN 0
|
||||||
#define MNG_MNG_DRAFT 81
|
#define MNG_MNG_DRAFT 99
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -2026,6 +2030,7 @@ MNG_EXT mng_retcode MNG_DECL mng_updatemngsimplicity (mng_handle hHandle,
|
||||||
#define MNG_UNKNOWNCRITICAL (mng_retcode)1061 /* unknown critical chunk found*/
|
#define MNG_UNKNOWNCRITICAL (mng_retcode)1061 /* unknown critical chunk found*/
|
||||||
#define MNG_UNSUPPORTEDNEED (mng_retcode)1062 /* nEED requirement unsupported*/
|
#define MNG_UNSUPPORTEDNEED (mng_retcode)1062 /* nEED requirement unsupported*/
|
||||||
#define MNG_INVALIDDELTA (mng_retcode)1063 /* Delta operation illegal */
|
#define MNG_INVALIDDELTA (mng_retcode)1063 /* Delta operation illegal */
|
||||||
|
#define MNG_INVALIDMETHOD (mng_retcode)1064 /* invalid MAGN method */
|
||||||
|
|
||||||
#define MNG_INVALIDCNVSTYLE (mng_retcode)2049 /* can't make anything of this */
|
#define MNG_INVALIDCNVSTYLE (mng_retcode)2049 /* can't make anything of this */
|
||||||
#define MNG_WRONGCHUNK (mng_retcode)2050 /* accessing the wrong chunk */
|
#define MNG_WRONGCHUNK (mng_retcode)2050 /* accessing the wrong chunk */
|
||||||
|
@ -2184,10 +2189,10 @@ MNG_EXT mng_retcode MNG_DECL mng_updatemngsimplicity (mng_handle hHandle,
|
||||||
BASI, JHDR */
|
BASI, JHDR */
|
||||||
|
|
||||||
#define MNG_FILTER_ADAPTIVE 0 /* IHDR, BASI, JHDR */
|
#define MNG_FILTER_ADAPTIVE 0 /* IHDR, BASI, JHDR */
|
||||||
#define MNG_FILTER_NO_ADAPTIVE 1
|
/* #define MNG_FILTER_NO_ADAPTIVE 1 */
|
||||||
#define MNG_FILTER_NO_DIFFERING 0
|
#define MNG_FILTER_NO_DIFFERING 0
|
||||||
#define MNG_FILTER_DIFFERING 0x40
|
#define MNG_FILTER_DIFFERING 0x40
|
||||||
#define MNG_FILTER_MASK (MNG_FILTER_NO_ADAPTIVE | MNG_FILTER_DIFFERING)
|
/* #define MNG_FILTER_MASK (MNG_FILTER_NO_ADAPTIVE | MNG_FILTER_DIFFERING) */
|
||||||
|
|
||||||
#define MNG_INTERLACE_NONE 0 /* IHDR, BASI, JHDR */
|
#define MNG_INTERLACE_NONE 0 /* IHDR, BASI, JHDR */
|
||||||
#define MNG_INTERLACE_ADAM7 1
|
#define MNG_INTERLACE_ADAM7 1
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_chunk_io.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_chunk_io.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.5 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Chunk I/O routines (implementation) * */
|
/* * purpose : Chunk I/O routines (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -135,6 +135,12 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * 0.9.4 - 11/20/2000 - G.Juyn * */
|
/* * 0.9.4 - 11/20/2000 - G.Juyn * */
|
||||||
/* * - changed IHDR filter_method check for PNGs * */
|
/* * - changed IHDR filter_method check for PNGs * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added errorchecking for MAGN methods * */
|
||||||
|
/* * - removed test filter-methods 1 & 65 * */
|
||||||
|
/* * * */
|
||||||
|
/* * 0.9.5 - 1/25/2001 - G.Juyn * */
|
||||||
|
/* * - fixed some small compiler warnings (thanks Nikki) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -600,7 +606,7 @@ READ_CHUNK (read_ihdr)
|
||||||
if ((pData->eSigtype == mng_it_png) && (pData->iFilter))
|
if ((pData->eSigtype == mng_it_png) && (pData->iFilter))
|
||||||
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
||||||
else
|
else
|
||||||
if (pData->iFilter & (~MNG_FILTER_MASK))
|
if (pData->iFilter & (~MNG_FILTER_DIFFERING))
|
||||||
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
||||||
|
|
||||||
if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
|
if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
|
||||||
|
@ -3450,7 +3456,7 @@ READ_CHUNK (read_basi)
|
||||||
if (pData->iCompression != MNG_COMPRESSION_DEFLATE)
|
if (pData->iCompression != MNG_COMPRESSION_DEFLATE)
|
||||||
MNG_ERROR (pData, MNG_INVALIDCOMPRESS)
|
MNG_ERROR (pData, MNG_INVALIDCOMPRESS)
|
||||||
|
|
||||||
if (pData->iFilter != MNG_FILTER_ADAPTIVE)
|
if (pData->iFilter & (~MNG_FILTER_DIFFERING))
|
||||||
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
||||||
|
|
||||||
if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
|
if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
|
||||||
|
@ -4977,6 +4983,14 @@ mng_bool CheckKeyword (mng_datap pData,
|
||||||
iDraft = (*(pKeyword+6) - '0') * 10 + (*(pKeyword+7) - '0');
|
iDraft = (*(pKeyword+6) - '0') * 10 + (*(pKeyword+7) - '0');
|
||||||
bOke = (mng_bool)(iDraft <= MNG_MNG_DRAFT);
|
bOke = (mng_bool)(iDraft <= MNG_MNG_DRAFT);
|
||||||
}
|
}
|
||||||
|
/* test MNG 1.0 ? */
|
||||||
|
if ((!bOke) && (pNull - pKeyword == 7) &&
|
||||||
|
(*pKeyword == 'M') && (*(pKeyword+1) == 'N') &&
|
||||||
|
(*(pKeyword+2) == 'G') && (*(pKeyword+3) == '-') &&
|
||||||
|
(*(pKeyword+4) == '1') && (*(pKeyword+5) == '.') &&
|
||||||
|
(*(pKeyword+6) == '0'))
|
||||||
|
bOke = MNG_TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return bOke;
|
return bOke;
|
||||||
|
@ -5184,7 +5198,7 @@ READ_CHUNK (read_jhdr)
|
||||||
(pData->iJHDRalphabitdepth != 8 ) )
|
(pData->iJHDRalphabitdepth != 8 ) )
|
||||||
MNG_ERROR (pData, MNG_INVALIDBITDEPTH)
|
MNG_ERROR (pData, MNG_INVALIDBITDEPTH)
|
||||||
|
|
||||||
if (pData->iJHDRalphafilter & (~MNG_FILTER_MASK))
|
if (pData->iJHDRalphafilter & (~MNG_FILTER_DIFFERING))
|
||||||
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
MNG_ERROR (pData, MNG_INVALIDFILTER)
|
||||||
|
|
||||||
if ((pData->iJHDRalphainterlace != MNG_INTERLACE_NONE ) &&
|
if ((pData->iJHDRalphainterlace != MNG_INTERLACE_NONE ) &&
|
||||||
|
@ -6131,6 +6145,9 @@ READ_CHUNK (read_magn)
|
||||||
iMethodY = mng_get_uint16 (pRawdata+18);
|
iMethodY = mng_get_uint16 (pRawdata+18);
|
||||||
else
|
else
|
||||||
iMethodY = iMethodX;
|
iMethodY = iMethodX;
|
||||||
|
/* check field validity */
|
||||||
|
if ((iMethodX > 5) || (iMethodY > 5))
|
||||||
|
MNG_ERROR (pData, MNG_INVALIDMETHOD)
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_DISPLAY
|
#ifdef MNG_SUPPORT_DISPLAY
|
||||||
{
|
{
|
||||||
|
@ -6406,15 +6423,15 @@ WRITE_CHUNK (write_trns)
|
||||||
{
|
{
|
||||||
case 0: {
|
case 0: {
|
||||||
iRawlen = 1; /* fill the size & output buffer */
|
iRawlen = 1; /* fill the size & output buffer */
|
||||||
*pRawdata = pTRNS->iGray;
|
*pRawdata = (mng_uint8)pTRNS->iGray;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
iRawlen = 3; /* fill the size & output buffer */
|
iRawlen = 3; /* fill the size & output buffer */
|
||||||
*pRawdata = pTRNS->iRed;
|
*pRawdata = (mng_uint8)pTRNS->iRed;
|
||||||
*(pRawdata+1) = pTRNS->iGreen;
|
*(pRawdata+1) = (mng_uint8)pTRNS->iGreen;
|
||||||
*(pRawdata+2) = pTRNS->iBlue;
|
*(pRawdata+2) = (mng_uint8)pTRNS->iBlue;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -6864,15 +6881,15 @@ WRITE_CHUNK (write_bkgd)
|
||||||
{
|
{
|
||||||
case 0: { /* gray */
|
case 0: { /* gray */
|
||||||
iRawlen = 1; /* fill the size & output buffer */
|
iRawlen = 1; /* fill the size & output buffer */
|
||||||
*pRawdata = pBKGD->iGray;
|
*pRawdata = (mng_uint8)pBKGD->iGray;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: { /* rgb */
|
case 2: { /* rgb */
|
||||||
iRawlen = 3; /* fill the size & output buffer */
|
iRawlen = 3; /* fill the size & output buffer */
|
||||||
*pRawdata = pBKGD->iRed;
|
*pRawdata = (mng_uint8)pBKGD->iRed;
|
||||||
*(pRawdata+1) = pBKGD->iGreen;
|
*(pRawdata+1) = (mng_uint8)pBKGD->iGreen;
|
||||||
*(pRawdata+2) = pBKGD->iBlue;
|
*(pRawdata+2) = (mng_uint8)pBKGD->iBlue;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_chunk_xs.c copyright (c) 2000 G. Juyn * */
|
/* * file : libmng_chunk_xs.c copyright (c) 2000 G. Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.5 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : chunk access functions (implementation) * */
|
/* * purpose : chunk access functions (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -49,6 +49,9 @@
|
||||||
/* * 0.9.3 - 10/20/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/20/2000 - G.Juyn * */
|
||||||
/* * - fixed putchunk_plte() to set bEmpty parameter * */
|
/* * - fixed putchunk_plte() to set bEmpty parameter * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.5 - 1/25/2001 - G.Juyn * */
|
||||||
|
/* * - fixed some small compiler warnings (thanks Nikki) * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "libmng.h"
|
#include "libmng.h"
|
||||||
|
@ -4565,10 +4568,10 @@ mng_retcode MNG_DECL mng_putchunk_pplt_entry (mng_handle hHandle,
|
||||||
/* address proper entry */
|
/* address proper entry */
|
||||||
pEntry = (mng_pplt_entryp)(((mng_ppltp)pChunk)->aEntries) + iEntry;
|
pEntry = (mng_pplt_entryp)(((mng_ppltp)pChunk)->aEntries) + iEntry;
|
||||||
|
|
||||||
pEntry->iRed = iRed; /* fill the entry */
|
pEntry->iRed = (mng_uint8)iRed; /* fill the entry */
|
||||||
pEntry->iGreen = iGreen;
|
pEntry->iGreen = (mng_uint8)iGreen;
|
||||||
pEntry->iBlue = iBlue;
|
pEntry->iBlue = (mng_uint8)iBlue;
|
||||||
pEntry->iAlpha = iAlpha;
|
pEntry->iAlpha = (mng_uint8)iAlpha;
|
||||||
pEntry->bUsed = bUsed;
|
pEntry->bUsed = bUsed;
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_TRACE
|
#ifdef MNG_SUPPORT_TRACE
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_cms.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_cms.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.4 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : color management routines (implementation) * */
|
/* * purpose : color management routines (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -42,6 +42,9 @@
|
||||||
/* * 0.9.3 - 08/31/2000 - G.Juyn * */
|
/* * 0.9.3 - 08/31/2000 - G.Juyn * */
|
||||||
/* * - fixed sRGB precedence for gamma_only corection * */
|
/* * - fixed sRGB precedence for gamma_only corection * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 12/16/2000 - G.Juyn * */
|
||||||
|
/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "libmng.h"
|
#include "libmng.h"
|
||||||
|
@ -169,7 +172,7 @@ mng_retcode init_full_cms (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -205,7 +208,7 @@ mng_retcode init_full_cms (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -289,7 +292,7 @@ mng_retcode init_full_cms (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -345,7 +348,7 @@ mng_retcode init_full_cms_object (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -374,7 +377,7 @@ mng_retcode init_full_cms_object (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -441,7 +444,7 @@ mng_retcode init_full_cms_object (mng_datap pData)
|
||||||
if (!hTrans) /* handle error ? */
|
if (!hTrans) /* handle error ? */
|
||||||
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
MNG_ERRORL (pData, MNG_LCMS_NOTRANS)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_full_cms;
|
pData->fCorrectrow = (mng_fptr)correct_full_cms;
|
||||||
|
|
||||||
return MNG_NOERROR; /* and done */
|
return MNG_NOERROR; /* and done */
|
||||||
}
|
}
|
||||||
|
@ -520,7 +523,7 @@ mng_retcode init_gamma_only (mng_datap pData)
|
||||||
pData->dLastgamma = dGamma; /* keep for next time */
|
pData->dLastgamma = dGamma; /* keep for next time */
|
||||||
}
|
}
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_gamma_only;
|
pData->fCorrectrow = (mng_fptr)correct_gamma_only;
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_TRACE
|
#ifdef MNG_SUPPORT_TRACE
|
||||||
MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY, MNG_LC_END)
|
MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY, MNG_LC_END)
|
||||||
|
@ -567,7 +570,7 @@ mng_retcode init_gamma_only_object (mng_datap pData)
|
||||||
pData->dLastgamma = dGamma; /* keep for next time */
|
pData->dLastgamma = dGamma; /* keep for next time */
|
||||||
}
|
}
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_gamma_only;
|
pData->fCorrectrow = (mng_fptr)correct_gamma_only;
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_TRACE
|
#ifdef MNG_SUPPORT_TRACE
|
||||||
MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY_OBJ, MNG_LC_END)
|
MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY_OBJ, MNG_LC_END)
|
||||||
|
@ -660,7 +663,7 @@ mng_retcode init_app_cms (mng_datap pData)
|
||||||
if (!pData->fProcessiccp ((mng_handle)pData, iProfilesize, pProfile))
|
if (!pData->fProcessiccp ((mng_handle)pData, iProfilesize, pProfile))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (pData->fProcesssrgb) &&
|
if ( (pData->fProcesssrgb) &&
|
||||||
|
@ -676,7 +679,7 @@ mng_retcode init_app_cms (mng_datap pData)
|
||||||
if (!pData->fProcesssrgb ((mng_handle)pData, iIntent))
|
if (!pData->fProcesssrgb ((mng_handle)pData, iIntent))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (pData->fProcesschroma) &&
|
if ( (pData->fProcesschroma) &&
|
||||||
|
@ -716,7 +719,7 @@ mng_retcode init_app_cms (mng_datap pData)
|
||||||
iPrimarybluex, iPrimarybluey))
|
iPrimarybluex, iPrimarybluey))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (pData->fProcessgamma) &&
|
if ( (pData->fProcessgamma) &&
|
||||||
|
@ -732,7 +735,7 @@ mng_retcode init_app_cms (mng_datap pData)
|
||||||
if (!pData->fProcessgamma ((mng_handle)pData, iGamma))
|
if (!pData->fProcessgamma ((mng_handle)pData, iGamma))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_TRACE
|
#ifdef MNG_SUPPORT_TRACE
|
||||||
|
@ -759,7 +762,7 @@ mng_retcode init_app_cms_object (mng_datap pData)
|
||||||
if (!pData->fProcessiccp ((mng_handle)pData, pBuf->iProfilesize, pBuf->pProfile))
|
if (!pData->fProcessiccp ((mng_handle)pData, pBuf->iProfilesize, pBuf->pProfile))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pData->fProcesssrgb) && (pBuf->bHasSRGB))
|
if ((pData->fProcesssrgb) && (pBuf->bHasSRGB))
|
||||||
|
@ -767,7 +770,7 @@ mng_retcode init_app_cms_object (mng_datap pData)
|
||||||
if (!pData->fProcesssrgb ((mng_handle)pData, pBuf->iRenderingintent))
|
if (!pData->fProcesssrgb ((mng_handle)pData, pBuf->iRenderingintent))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pData->fProcesschroma) && (pBuf->bHasCHRM))
|
if ((pData->fProcesschroma) && (pBuf->bHasCHRM))
|
||||||
|
@ -778,7 +781,7 @@ mng_retcode init_app_cms_object (mng_datap pData)
|
||||||
pBuf->iPrimarybluex, pBuf->iPrimarybluey))
|
pBuf->iPrimarybluex, pBuf->iPrimarybluey))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pData->fProcessgamma) && (pBuf->bHasGAMA))
|
if ((pData->fProcessgamma) && (pBuf->bHasGAMA))
|
||||||
|
@ -786,7 +789,7 @@ mng_retcode init_app_cms_object (mng_datap pData)
|
||||||
if (!pData->fProcessgamma ((mng_handle)pData, pBuf->iGamma))
|
if (!pData->fProcessgamma ((mng_handle)pData, pBuf->iGamma))
|
||||||
MNG_ERROR (pData, MNG_APPCMSERROR)
|
MNG_ERROR (pData, MNG_APPCMSERROR)
|
||||||
/* load color-correction routine */
|
/* load color-correction routine */
|
||||||
pData->fCorrectrow = (mng_ptr)correct_app_cms;
|
pData->fCorrectrow = (mng_fptr)correct_app_cms;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MNG_SUPPORT_TRACE
|
#ifdef MNG_SUPPORT_TRACE
|
||||||
|
|
|
@ -93,6 +93,8 @@
|
||||||
/* * - fixed support for bKGD * */
|
/* * - fixed support for bKGD * */
|
||||||
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
||||||
/* * - implemented delayed delta-processing * */
|
/* * - implemented delayed delta-processing * */
|
||||||
|
/* * 0.9.4 - 12/16/2000 - G.Juyn * */
|
||||||
|
/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -468,27 +470,27 @@ typedef struct mng_data_struct {
|
||||||
mng_float dLastgamma; /* last gamma used to compute table */
|
mng_float dLastgamma; /* last gamma used to compute table */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mng_ptr fDisplayrow; /* internal callback to display an
|
mng_fptr fDisplayrow; /* internal callback to display an
|
||||||
uncompressed/unfiltered/
|
uncompressed/unfiltered/
|
||||||
color-corrected row */
|
color-corrected row */
|
||||||
mng_ptr fRestbkgdrow; /* internal callback for restore-
|
mng_fptr fRestbkgdrow; /* internal callback for restore-
|
||||||
background processing of a row */
|
background processing of a row */
|
||||||
mng_ptr fCorrectrow; /* internal callback to color-correct an
|
mng_fptr fCorrectrow; /* internal callback to color-correct an
|
||||||
uncompressed/unfiltered row */
|
uncompressed/unfiltered row */
|
||||||
mng_ptr fRetrieverow; /* internal callback to retrieve an
|
mng_fptr fRetrieverow; /* internal callback to retrieve an
|
||||||
uncompressed/unfiltered row of data */
|
uncompressed/unfiltered row of data */
|
||||||
mng_ptr fStorerow; /* internal callback to store an
|
mng_fptr fStorerow; /* internal callback to store an
|
||||||
uncompressed/unfiltered row of data */
|
uncompressed/unfiltered row of data */
|
||||||
mng_ptr fProcessrow; /* internal callback to process an
|
mng_fptr fProcessrow; /* internal callback to process an
|
||||||
uncompressed row of data */
|
uncompressed row of data */
|
||||||
mng_ptr fDifferrow; /* internal callback to perform
|
mng_fptr fDifferrow; /* internal callback to perform
|
||||||
added filter leveling and
|
added filter leveling and
|
||||||
differing on an unfiltered row */
|
differing on an unfiltered row */
|
||||||
mng_ptr fScalerow; /* internal callback to scale a
|
mng_fptr fScalerow; /* internal callback to scale a
|
||||||
delta-row to the bitdepth of its target */
|
delta-row to the bitdepth of its target */
|
||||||
mng_ptr fDeltarow; /* internal callback to execute a
|
mng_fptr fDeltarow; /* internal callback to execute a
|
||||||
delta-row onto a target */
|
delta-row onto a target */
|
||||||
mng_ptr fInitrowproc; /* internal callback to initialize
|
mng_fptr fInitrowproc; /* internal callback to initialize
|
||||||
the row processing */
|
the row processing */
|
||||||
|
|
||||||
mng_uint16 iDEFIobjectid; /* DEFI fields */
|
mng_uint16 iDEFIobjectid; /* DEFI fields */
|
||||||
|
@ -573,10 +575,10 @@ typedef struct mng_data_struct {
|
||||||
mng_uint32 iDeltaBlocky;
|
mng_uint32 iDeltaBlocky;
|
||||||
mng_bool bDeltaimmediate;
|
mng_bool bDeltaimmediate;
|
||||||
|
|
||||||
mng_ptr fDeltagetrow; /* internal delta-proc callbacks */
|
mng_fptr fDeltagetrow; /* internal delta-proc callbacks */
|
||||||
mng_ptr fDeltaaddrow;
|
mng_fptr fDeltaaddrow;
|
||||||
mng_ptr fDeltareplacerow;
|
mng_fptr fDeltareplacerow;
|
||||||
mng_ptr fDeltaputrow;
|
mng_fptr fDeltaputrow;
|
||||||
|
|
||||||
mng_uint16 iMAGNfromid;
|
mng_uint16 iMAGNfromid;
|
||||||
mng_uint16 iMAGNtoid;
|
mng_uint16 iMAGNtoid;
|
||||||
|
@ -649,10 +651,10 @@ typedef struct mng_data_struct {
|
||||||
mng_bool bJPEGscanstarted2; /* indicates "first scan" started (JDAA) */
|
mng_bool bJPEGscanstarted2; /* indicates "first scan" started (JDAA) */
|
||||||
mng_bool bJPEGprogressive2; /* indicates a progressive image (JDAA) */
|
mng_bool bJPEGprogressive2; /* indicates a progressive image (JDAA) */
|
||||||
|
|
||||||
mng_ptr fStorerow2; /* internal callback to store an
|
mng_fptr fStorerow2; /* internal callback to store an
|
||||||
uncompressed/unfiltered row of JPEG-data (JDAT) */
|
uncompressed/unfiltered row of JPEG-data (JDAT) */
|
||||||
|
|
||||||
mng_ptr fStorerow3; /* internal callback to store an
|
mng_fptr fStorerow3; /* internal callback to store an
|
||||||
uncompressed/unfiltered row of JPEG-data (JDAA) */
|
uncompressed/unfiltered row of JPEG-data (JDAA) */
|
||||||
|
|
||||||
mng_uint32 iJPEGrow; /* row-number for current JPEG row */
|
mng_uint32 iJPEGrow; /* row-number for current JPEG row */
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_error.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_error.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.4 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Error routines (implementation) * */
|
/* * purpose : Error routines (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -45,7 +45,10 @@
|
||||||
/* * - fixed processing of unknown critical chunks * */
|
/* * - fixed processing of unknown critical chunks * */
|
||||||
/* * - added support for nEED * */
|
/* * - added support for nEED * */
|
||||||
/* * 0.9.3 - 10/20/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/20/2000 - G.Juyn * */
|
||||||
/* * - added errocode for delayed delta-processing * */
|
/* * - added errorcode for delayed delta-processing * */
|
||||||
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added errorcode for MAGN methods * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -130,6 +133,7 @@
|
||||||
{MNG_UNKNOWNCRITICAL, "Unknown critical chunk encountered"},
|
{MNG_UNKNOWNCRITICAL, "Unknown critical chunk encountered"},
|
||||||
{MNG_UNSUPPORTEDNEED, "Requested nEED resources are not supported"},
|
{MNG_UNSUPPORTEDNEED, "Requested nEED resources are not supported"},
|
||||||
{MNG_INVALIDDELTA, "The delta operation is invalid (mismatched color_types?)"},
|
{MNG_INVALIDDELTA, "The delta operation is invalid (mismatched color_types?)"},
|
||||||
|
{MNG_INVALIDMETHOD, "Method is invalid"},
|
||||||
|
|
||||||
{MNG_INVALIDCNVSTYLE, "Canvas_style is invalid"},
|
{MNG_INVALIDCNVSTYLE, "Canvas_style is invalid"},
|
||||||
{MNG_WRONGCHUNK, "Attempt to access the wrong chunk"},
|
{MNG_WRONGCHUNK, "Attempt to access the wrong chunk"},
|
||||||
|
|
|
@ -260,11 +260,6 @@ mng_retcode init_rowdiffering (mng_datap pData)
|
||||||
MNG_TRACE (pData, MNG_FN_INIT_ROWDIFFERING, MNG_LC_START)
|
MNG_TRACE (pData, MNG_FN_INIT_ROWDIFFERING, MNG_LC_START)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pData->iLevel0 = 0; /* default levels */
|
|
||||||
pData->iLevel1 = 0;
|
|
||||||
pData->iLevel2 = 0;
|
|
||||||
pData->iLevel3 = 0;
|
|
||||||
|
|
||||||
if (pData->iFilter & 0x40) /* has leveling parameters ? */
|
if (pData->iFilter & 0x40) /* has leveling parameters ? */
|
||||||
{
|
{
|
||||||
switch (pData->iColortype) /* salvage leveling parameters */
|
switch (pData->iColortype) /* salvage leveling parameters */
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_object_prc.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_object_prc.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.5 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Object processing routines (implementation) * */
|
/* * purpose : Object processing routines (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -70,6 +70,13 @@
|
||||||
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
||||||
/* * - added storage for pixel-/alpha-sampledepth for delta's * */
|
/* * - added storage for pixel-/alpha-sampledepth for delta's * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - removed "old" MAGN methods 3 & 4 * */
|
||||||
|
/* * - added "new" MAGN methods 3, 4 & 5 * */
|
||||||
|
/* * * */
|
||||||
|
/* * 0.9.5 - 1/22/2001 - G.Juyn * */
|
||||||
|
/* * - B129681 - fixed compiler warnings SGI/Irix * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "libmng.h"
|
#include "libmng.h"
|
||||||
|
@ -730,7 +737,7 @@ mng_retcode renum_imageobject (mng_datap pData,
|
||||||
while ((pPrev) && (pPrev->iId > iId))
|
while ((pPrev) && (pPrev->iId > iId))
|
||||||
pPrev = (mng_imagep)pPrev->sHeader.pPrev;
|
pPrev = (mng_imagep)pPrev->sHeader.pPrev;
|
||||||
/* different from current ? */
|
/* different from current ? */
|
||||||
if (pPrev != pSource->sHeader.pPrev)
|
if (pPrev != (mng_imagep)pSource->sHeader.pPrev)
|
||||||
{
|
{
|
||||||
if (pSource->sHeader.pPrev) /* unlink from current position !! */
|
if (pSource->sHeader.pPrev) /* unlink from current position !! */
|
||||||
((mng_imagep)pSource->sHeader.pPrev)->sHeader.pNext = pSource->sHeader.pNext;
|
((mng_imagep)pSource->sHeader.pPrev)->sHeader.pNext = pSource->sHeader.pNext;
|
||||||
|
@ -1164,16 +1171,18 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
{
|
{
|
||||||
case 1 : { fMagnifyX = magnify_g8_x1; break; }
|
case 1 : { fMagnifyX = magnify_g8_x1; break; }
|
||||||
case 2 : { fMagnifyX = magnify_g8_x2; break; }
|
case 2 : { fMagnifyX = magnify_g8_x2; break; }
|
||||||
case 3 : { fMagnifyX = magnify_g8_x1; break; }
|
case 3 : { fMagnifyX = magnify_g8_x3; break; }
|
||||||
case 4 : { fMagnifyX = magnify_g8_x2; break; }
|
case 4 : { fMagnifyX = magnify_g8_x2; break; }
|
||||||
|
case 5 : { fMagnifyX = magnify_g8_x3; break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pImage->iMAGN_MethodY)
|
switch (pImage->iMAGN_MethodY)
|
||||||
{
|
{
|
||||||
case 1 : { fMagnifyY = magnify_g8_y1; break; }
|
case 1 : { fMagnifyY = magnify_g8_y1; break; }
|
||||||
case 2 : { fMagnifyY = magnify_g8_y2; break; }
|
case 2 : { fMagnifyY = magnify_g8_y2; break; }
|
||||||
case 3 : { fMagnifyY = magnify_g8_y1; break; }
|
case 3 : { fMagnifyY = magnify_g8_y3; break; }
|
||||||
case 4 : { fMagnifyY = magnify_g8_y2; break; }
|
case 4 : { fMagnifyY = magnify_g8_y2; break; }
|
||||||
|
case 5 : { fMagnifyY = magnify_g8_y3; break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1194,16 +1203,18 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
{
|
{
|
||||||
case 1 : { fMagnifyX = magnify_rgb8_x1; break; }
|
case 1 : { fMagnifyX = magnify_rgb8_x1; break; }
|
||||||
case 2 : { fMagnifyX = magnify_rgb8_x2; break; }
|
case 2 : { fMagnifyX = magnify_rgb8_x2; break; }
|
||||||
case 3 : { fMagnifyX = magnify_rgb8_x1; break; }
|
case 3 : { fMagnifyX = magnify_rgb8_x3; break; }
|
||||||
case 4 : { fMagnifyX = magnify_rgb8_x2; break; }
|
case 4 : { fMagnifyX = magnify_rgb8_x2; break; }
|
||||||
|
case 5 : { fMagnifyX = magnify_rgb8_x3; break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pImage->iMAGN_MethodY)
|
switch (pImage->iMAGN_MethodY)
|
||||||
{
|
{
|
||||||
case 1 : { fMagnifyY = magnify_rgb8_y1; break; }
|
case 1 : { fMagnifyY = magnify_rgb8_y1; break; }
|
||||||
case 2 : { fMagnifyY = magnify_rgb8_y2; break; }
|
case 2 : { fMagnifyY = magnify_rgb8_y2; break; }
|
||||||
case 3 : { fMagnifyY = magnify_rgb8_y1; break; }
|
case 3 : { fMagnifyY = magnify_rgb8_y3; break; }
|
||||||
case 4 : { fMagnifyY = magnify_rgb8_y2; break; }
|
case 4 : { fMagnifyY = magnify_rgb8_y2; break; }
|
||||||
|
case 5 : { fMagnifyY = magnify_rgb8_y3; break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1226,6 +1237,7 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
case 2 : { fMagnifyX = magnify_ga8_x2; break; }
|
case 2 : { fMagnifyX = magnify_ga8_x2; break; }
|
||||||
case 3 : { fMagnifyX = magnify_ga8_x3; break; }
|
case 3 : { fMagnifyX = magnify_ga8_x3; break; }
|
||||||
case 4 : { fMagnifyX = magnify_ga8_x4; break; }
|
case 4 : { fMagnifyX = magnify_ga8_x4; break; }
|
||||||
|
case 5 : { fMagnifyX = magnify_ga8_x5; break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pImage->iMAGN_MethodY)
|
switch (pImage->iMAGN_MethodY)
|
||||||
|
@ -1234,6 +1246,7 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
case 2 : { fMagnifyY = magnify_ga8_y2; break; }
|
case 2 : { fMagnifyY = magnify_ga8_y2; break; }
|
||||||
case 3 : { fMagnifyY = magnify_ga8_y3; break; }
|
case 3 : { fMagnifyY = magnify_ga8_y3; break; }
|
||||||
case 4 : { fMagnifyY = magnify_ga8_y4; break; }
|
case 4 : { fMagnifyY = magnify_ga8_y4; break; }
|
||||||
|
case 5 : { fMagnifyY = magnify_ga8_y5; break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1254,8 +1267,9 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
{
|
{
|
||||||
case 1 : { fMagnifyX = magnify_rgba8_x1; break; }
|
case 1 : { fMagnifyX = magnify_rgba8_x1; break; }
|
||||||
case 2 : { fMagnifyX = magnify_rgba8_x2; break; }
|
case 2 : { fMagnifyX = magnify_rgba8_x2; break; }
|
||||||
case 3 : { fMagnifyX = magnify_rgba8_x2; break; }
|
case 3 : { fMagnifyX = magnify_rgba8_x3; break; }
|
||||||
case 4 : { fMagnifyX = magnify_rgba8_x3; break; }
|
case 4 : { fMagnifyX = magnify_rgba8_x4; break; }
|
||||||
|
case 5 : { fMagnifyX = magnify_rgba8_x5; break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pImage->iMAGN_MethodY)
|
switch (pImage->iMAGN_MethodY)
|
||||||
|
@ -1264,6 +1278,7 @@ mng_retcode magnify_imageobject (mng_datap pData,
|
||||||
case 2 : { fMagnifyY = magnify_rgba8_y2; break; }
|
case 2 : { fMagnifyY = magnify_rgba8_y2; break; }
|
||||||
case 3 : { fMagnifyY = magnify_rgba8_y3; break; }
|
case 3 : { fMagnifyY = magnify_rgba8_y3; break; }
|
||||||
case 4 : { fMagnifyY = magnify_rgba8_y4; break; }
|
case 4 : { fMagnifyY = magnify_rgba8_y4; break; }
|
||||||
|
case 5 : { fMagnifyY = magnify_rgba8_y5; break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2343,7 +2358,7 @@ mng_retcode process_ani_endl (mng_datap pData,
|
||||||
|
|
||||||
if (!pLOOP->iRunningcount) /* reached zero ? */
|
if (!pLOOP->iRunningcount) /* reached zero ? */
|
||||||
{ /* was this the outer LOOP ? */
|
{ /* was this the outer LOOP ? */
|
||||||
if (pLOOP == pData->pFirstaniobj)
|
if (pData->pFirstaniobj == (mng_objectp)pLOOP)
|
||||||
pData->bHasLOOP = MNG_FALSE;
|
pData->bHasLOOP = MNG_FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_pixels.h copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_pixels.h copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.4 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Pixel-row management routines (definition) * */
|
/* * purpose : Pixel-row management routines (definition) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -40,6 +40,9 @@
|
||||||
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
|
||||||
/* * - implemented delayed delta-processing * */
|
/* * - implemented delayed delta-processing * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added "new" MAGN methods 3, 4 & 5 * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
||||||
|
@ -342,6 +345,13 @@ mng_retcode magnify_g8_x2 (mng_datap pData,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint8p pSrcline,
|
mng_uint8p pSrcline,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_g8_x3 (mng_datap pData,
|
||||||
|
mng_uint16 iMX,
|
||||||
|
mng_uint16 iML,
|
||||||
|
mng_uint16 iMR,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_rgb8_x1 (mng_datap pData,
|
mng_retcode magnify_rgb8_x1 (mng_datap pData,
|
||||||
mng_uint16 iMX,
|
mng_uint16 iMX,
|
||||||
mng_uint16 iML,
|
mng_uint16 iML,
|
||||||
|
@ -356,6 +366,13 @@ mng_retcode magnify_rgb8_x2 (mng_datap pData,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint8p pSrcline,
|
mng_uint8p pSrcline,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_rgb8_x3 (mng_datap pData,
|
||||||
|
mng_uint16 iMX,
|
||||||
|
mng_uint16 iML,
|
||||||
|
mng_uint16 iMR,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_ga8_x1 (mng_datap pData,
|
mng_retcode magnify_ga8_x1 (mng_datap pData,
|
||||||
mng_uint16 iMX,
|
mng_uint16 iMX,
|
||||||
mng_uint16 iML,
|
mng_uint16 iML,
|
||||||
|
@ -384,6 +401,13 @@ mng_retcode magnify_ga8_x4 (mng_datap pData,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint8p pSrcline,
|
mng_uint8p pSrcline,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_ga8_x5 (mng_datap pData,
|
||||||
|
mng_uint16 iMX,
|
||||||
|
mng_uint16 iML,
|
||||||
|
mng_uint16 iMR,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_rgba8_x1 (mng_datap pData,
|
mng_retcode magnify_rgba8_x1 (mng_datap pData,
|
||||||
mng_uint16 iMX,
|
mng_uint16 iMX,
|
||||||
mng_uint16 iML,
|
mng_uint16 iML,
|
||||||
|
@ -412,6 +436,13 @@ mng_retcode magnify_rgba8_x4 (mng_datap pData,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint8p pSrcline,
|
mng_uint8p pSrcline,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_rgba8_x5 (mng_datap pData,
|
||||||
|
mng_uint16 iMX,
|
||||||
|
mng_uint16 iML,
|
||||||
|
mng_uint16 iMR,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline,
|
||||||
|
mng_uint8p pDstline);
|
||||||
|
|
||||||
mng_retcode magnify_g8_y1 (mng_datap pData,
|
mng_retcode magnify_g8_y1 (mng_datap pData,
|
||||||
mng_int32 iS,
|
mng_int32 iS,
|
||||||
|
@ -427,6 +458,13 @@ mng_retcode magnify_g8_y2 (mng_datap pData,
|
||||||
mng_uint8p pSrcline1,
|
mng_uint8p pSrcline1,
|
||||||
mng_uint8p pSrcline2,
|
mng_uint8p pSrcline2,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_g8_y3 (mng_datap pData,
|
||||||
|
mng_int32 iS,
|
||||||
|
mng_int32 iM,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline1,
|
||||||
|
mng_uint8p pSrcline2,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_rgb8_y1 (mng_datap pData,
|
mng_retcode magnify_rgb8_y1 (mng_datap pData,
|
||||||
mng_int32 iS,
|
mng_int32 iS,
|
||||||
mng_int32 iM,
|
mng_int32 iM,
|
||||||
|
@ -441,6 +479,13 @@ mng_retcode magnify_rgb8_y2 (mng_datap pData,
|
||||||
mng_uint8p pSrcline1,
|
mng_uint8p pSrcline1,
|
||||||
mng_uint8p pSrcline2,
|
mng_uint8p pSrcline2,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_rgb8_y3 (mng_datap pData,
|
||||||
|
mng_int32 iS,
|
||||||
|
mng_int32 iM,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline1,
|
||||||
|
mng_uint8p pSrcline2,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_ga8_y1 (mng_datap pData,
|
mng_retcode magnify_ga8_y1 (mng_datap pData,
|
||||||
mng_int32 iS,
|
mng_int32 iS,
|
||||||
mng_int32 iM,
|
mng_int32 iM,
|
||||||
|
@ -469,6 +514,13 @@ mng_retcode magnify_ga8_y4 (mng_datap pData,
|
||||||
mng_uint8p pSrcline1,
|
mng_uint8p pSrcline1,
|
||||||
mng_uint8p pSrcline2,
|
mng_uint8p pSrcline2,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_ga8_y5 (mng_datap pData,
|
||||||
|
mng_int32 iS,
|
||||||
|
mng_int32 iM,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline1,
|
||||||
|
mng_uint8p pSrcline2,
|
||||||
|
mng_uint8p pDstline);
|
||||||
mng_retcode magnify_rgba8_y1 (mng_datap pData,
|
mng_retcode magnify_rgba8_y1 (mng_datap pData,
|
||||||
mng_int32 iS,
|
mng_int32 iS,
|
||||||
mng_int32 iM,
|
mng_int32 iM,
|
||||||
|
@ -497,6 +549,13 @@ mng_retcode magnify_rgba8_y4 (mng_datap pData,
|
||||||
mng_uint8p pSrcline1,
|
mng_uint8p pSrcline1,
|
||||||
mng_uint8p pSrcline2,
|
mng_uint8p pSrcline2,
|
||||||
mng_uint8p pDstline);
|
mng_uint8p pDstline);
|
||||||
|
mng_retcode magnify_rgba8_y5 (mng_datap pData,
|
||||||
|
mng_int32 iS,
|
||||||
|
mng_int32 iM,
|
||||||
|
mng_uint32 iWidth,
|
||||||
|
mng_uint8p pSrcline1,
|
||||||
|
mng_uint8p pSrcline2,
|
||||||
|
mng_uint8p pDstline);
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_read.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_read.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.5 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Read logic (implementation) * */
|
/* * purpose : Read logic (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -55,6 +55,9 @@
|
||||||
/* * 0.9.3 - 10/16/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/16/2000 - G.Juyn * */
|
||||||
/* * - added support for JDAA * */
|
/* * - added support for JDAA * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.5 - 1/23/2001 - G.Juyn * */
|
||||||
|
/* * - fixed timing-problem with switching framing_modes * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "libmng.h"
|
#include "libmng.h"
|
||||||
|
@ -666,7 +669,7 @@ mng_retcode read_graphic (mng_datap pData)
|
||||||
return iRetcode;
|
return iRetcode;
|
||||||
}
|
}
|
||||||
#ifdef MNG_SUPPORT_DISPLAY /* until EOF or a break-request */
|
#ifdef MNG_SUPPORT_DISPLAY /* until EOF or a break-request */
|
||||||
while ((!pData->bEOF) && (!pData->bSuspended) &&
|
while (((!pData->bEOF) || (pData->pCurraniobj)) && (!pData->bSuspended) &&
|
||||||
(!pData->bTimerset) && (!pData->bSectionwait));
|
(!pData->bTimerset) && (!pData->bSectionwait));
|
||||||
#else
|
#else
|
||||||
while ((!pData->bEOF) && (!pData->bSuspended));
|
while ((!pData->bEOF) && (!pData->bSuspended));
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_trace.c copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_trace.c copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.4 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Trace functions (implementation) * */
|
/* * purpose : Trace functions (implementation) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -84,6 +84,9 @@
|
||||||
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
||||||
/* * - added get function for interlace/progressive display * */
|
/* * - added get function for interlace/progressive display * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added "new" MAGN methods 3, 4 & 5 * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "libmng.h"
|
#include "libmng.h"
|
||||||
|
@ -983,6 +986,8 @@
|
||||||
{MNG_FN_STORE_JPEG_RGBA8, "store_jpeg_rgba8"},
|
{MNG_FN_STORE_JPEG_RGBA8, "store_jpeg_rgba8"},
|
||||||
{MNG_FN_STORE_JPEG_GA12, "store_jpeg_ga12"},
|
{MNG_FN_STORE_JPEG_GA12, "store_jpeg_ga12"},
|
||||||
{MNG_FN_STORE_JPEG_RGBA12, "store_jpeg_rgba12"},
|
{MNG_FN_STORE_JPEG_RGBA12, "store_jpeg_rgba12"},
|
||||||
|
{MNG_FN_STORE_JPEG_G8_ALPHA, "store_jpeg_g8_alpha"},
|
||||||
|
{MNG_FN_STORE_JPEG_RGB8_ALPHA, "store_jpeg_rgb8_alpha"},
|
||||||
|
|
||||||
{MNG_FN_INIT_JPEG_A1_NI, "init_jpeg_a1_ni"},
|
{MNG_FN_INIT_JPEG_A1_NI, "init_jpeg_a1_ni"},
|
||||||
{MNG_FN_INIT_JPEG_A2_NI, "init_jpeg_a2_ni"},
|
{MNG_FN_INIT_JPEG_A2_NI, "init_jpeg_a2_ni"},
|
||||||
|
@ -1030,6 +1035,10 @@
|
||||||
{MNG_FN_MAGNIFY_RGBA8_X2, "magnify_rgba8_x2"},
|
{MNG_FN_MAGNIFY_RGBA8_X2, "magnify_rgba8_x2"},
|
||||||
{MNG_FN_MAGNIFY_RGBA8_X3, "magnify_rgba8_x3"},
|
{MNG_FN_MAGNIFY_RGBA8_X3, "magnify_rgba8_x3"},
|
||||||
{MNG_FN_MAGNIFY_RGBA8_X4, "magnify_rgba8_x4"},
|
{MNG_FN_MAGNIFY_RGBA8_X4, "magnify_rgba8_x4"},
|
||||||
|
{MNG_FN_MAGNIFY_G8_X3, "magnify_g8_x3"},
|
||||||
|
{MNG_FN_MAGNIFY_RGB8_X3, "magnify_rgb8_x3"},
|
||||||
|
{MNG_FN_MAGNIFY_GA8_X5, "magnify_ga8_x5"},
|
||||||
|
{MNG_FN_MAGNIFY_RGBA8_X5, "magnify_rgba8_x5"},
|
||||||
|
|
||||||
{MNG_FN_MAGNIFY_G8_Y1, "magnify_g8_y1"},
|
{MNG_FN_MAGNIFY_G8_Y1, "magnify_g8_y1"},
|
||||||
{MNG_FN_MAGNIFY_G8_Y2, "magnify_g8_y2"},
|
{MNG_FN_MAGNIFY_G8_Y2, "magnify_g8_y2"},
|
||||||
|
@ -1043,6 +1052,10 @@
|
||||||
{MNG_FN_MAGNIFY_RGBA8_Y2, "magnify_rgba8_y2"},
|
{MNG_FN_MAGNIFY_RGBA8_Y2, "magnify_rgba8_y2"},
|
||||||
{MNG_FN_MAGNIFY_RGBA8_Y3, "magnify_rgba8_y3"},
|
{MNG_FN_MAGNIFY_RGBA8_Y3, "magnify_rgba8_y3"},
|
||||||
{MNG_FN_MAGNIFY_RGBA8_Y4, "magnify_rgba8_y4"},
|
{MNG_FN_MAGNIFY_RGBA8_Y4, "magnify_rgba8_y4"},
|
||||||
|
{MNG_FN_MAGNIFY_G8_Y3, "magnify_g8_y3"},
|
||||||
|
{MNG_FN_MAGNIFY_RGB8_Y3, "magnify_rgb8_y3"},
|
||||||
|
{MNG_FN_MAGNIFY_GA8_Y5, "magnify_ga8_y5"},
|
||||||
|
{MNG_FN_MAGNIFY_RGBA8_Y5, "magnify_rgba8_y5"},
|
||||||
|
|
||||||
{MNG_FN_DELTA_G1_G1, "delta_g1_g1"},
|
{MNG_FN_DELTA_G1_G1, "delta_g1_g1"},
|
||||||
{MNG_FN_DELTA_G2_G2, "delta_g2_g2"},
|
{MNG_FN_DELTA_G2_G2, "delta_g2_g2"},
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * project : libmng * */
|
/* * project : libmng * */
|
||||||
/* * file : libmng_trace.h copyright (c) 2000 G.Juyn * */
|
/* * file : libmng_trace.h copyright (c) 2000 G.Juyn * */
|
||||||
/* * version : 0.9.3 * */
|
/* * version : 0.9.4 * */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * purpose : Trace functions (definition) * */
|
/* * purpose : Trace functions (definition) * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -93,6 +93,9 @@
|
||||||
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
||||||
/* * - added get function for interlace/progressive display * */
|
/* * - added get function for interlace/progressive display * */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
|
||||||
|
/* * - added "new" MAGN methods 3, 4 & 5 * */
|
||||||
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
||||||
|
@ -1061,6 +1064,8 @@ mng_retcode mng_trace (mng_datap pData,
|
||||||
#define MNG_FN_STORE_JPEG_RGBA8 3506
|
#define MNG_FN_STORE_JPEG_RGBA8 3506
|
||||||
#define MNG_FN_STORE_JPEG_GA12 3507
|
#define MNG_FN_STORE_JPEG_GA12 3507
|
||||||
#define MNG_FN_STORE_JPEG_RGBA12 3508
|
#define MNG_FN_STORE_JPEG_RGBA12 3508
|
||||||
|
#define MNG_FN_STORE_JPEG_G8_ALPHA 3509
|
||||||
|
#define MNG_FN_STORE_JPEG_RGB8_ALPHA 3510
|
||||||
|
|
||||||
#define MNG_FN_INIT_JPEG_A1_NI 3511
|
#define MNG_FN_INIT_JPEG_A1_NI 3511
|
||||||
#define MNG_FN_INIT_JPEG_A2_NI 3512
|
#define MNG_FN_INIT_JPEG_A2_NI 3512
|
||||||
|
@ -1110,6 +1115,10 @@ mng_retcode mng_trace (mng_datap pData,
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_X2 3710
|
#define MNG_FN_MAGNIFY_RGBA8_X2 3710
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_X3 3711
|
#define MNG_FN_MAGNIFY_RGBA8_X3 3711
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_X4 3712
|
#define MNG_FN_MAGNIFY_RGBA8_X4 3712
|
||||||
|
#define MNG_FN_MAGNIFY_G8_X3 3713
|
||||||
|
#define MNG_FN_MAGNIFY_RGB8_X3 3714
|
||||||
|
#define MNG_FN_MAGNIFY_GA8_X5 3715
|
||||||
|
#define MNG_FN_MAGNIFY_RGBA8_X5 3716
|
||||||
|
|
||||||
#define MNG_FN_MAGNIFY_G8_Y1 3751
|
#define MNG_FN_MAGNIFY_G8_Y1 3751
|
||||||
#define MNG_FN_MAGNIFY_G8_Y2 3752
|
#define MNG_FN_MAGNIFY_G8_Y2 3752
|
||||||
|
@ -1123,6 +1132,10 @@ mng_retcode mng_trace (mng_datap pData,
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_Y2 3760
|
#define MNG_FN_MAGNIFY_RGBA8_Y2 3760
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_Y3 3761
|
#define MNG_FN_MAGNIFY_RGBA8_Y3 3761
|
||||||
#define MNG_FN_MAGNIFY_RGBA8_Y4 3762
|
#define MNG_FN_MAGNIFY_RGBA8_Y4 3762
|
||||||
|
#define MNG_FN_MAGNIFY_G8_Y3 3763
|
||||||
|
#define MNG_FN_MAGNIFY_RGB8_Y3 3764
|
||||||
|
#define MNG_FN_MAGNIFY_GA8_Y5 3765
|
||||||
|
#define MNG_FN_MAGNIFY_RGBA8_Y5 3766
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,10 @@
|
||||||
/* * * */
|
/* * * */
|
||||||
/* * 0.9.4 - 11/20/2000 - R.Giles * */
|
/* * 0.9.4 - 11/20/2000 - R.Giles * */
|
||||||
/* * - fixed inclusion of lcms header for non-windows platforms * */
|
/* * - fixed inclusion of lcms header for non-windows platforms * */
|
||||||
|
/* * 0.9.4 - 12/12/2000 - G.Juyn * */
|
||||||
|
/* * - changed callback convention for MSVC (Thanks Chad) * */
|
||||||
|
/* * 0.9.4 - 12/16/2000 - G.Juyn * */
|
||||||
|
/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
|
||||||
/* * * */
|
/* * * */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -114,8 +118,11 @@
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#ifdef WIN32 /* only include needed stuff */
|
#ifdef WIN32 /* only include needed stuff */
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MNG_USE_DLL
|
#ifdef MNG_USE_DLL
|
||||||
#ifdef MNG_SKIP_ZLIB
|
#ifdef MNG_SKIP_ZLIB
|
||||||
#undef MNG_INCLUDE_ZLIB
|
#undef MNG_INCLUDE_ZLIB
|
||||||
|
@ -249,6 +256,7 @@ typedef size_t mng_size_t; /* size field for memory alloca
|
||||||
|
|
||||||
typedef char * mng_pchar; /* string */
|
typedef char * mng_pchar; /* string */
|
||||||
typedef void * mng_ptr; /* generic pointer */
|
typedef void * mng_ptr; /* generic pointer */
|
||||||
|
typedef void (*mng_fptr) (void); /* generic function pointer */
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* * * */
|
/* * * */
|
||||||
|
@ -366,24 +374,24 @@ typedef enum mng_speedtypes mng_speedtype;
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
/* memory management callbacks */
|
/* memory management callbacks */
|
||||||
typedef mng_ptr MNG_DECL (*mng_memalloc) (mng_size_t iLen);
|
typedef mng_ptr (MNG_DECL *mng_memalloc) (mng_size_t iLen);
|
||||||
typedef void MNG_DECL (*mng_memfree) (mng_ptr iPtr,
|
typedef void (MNG_DECL *mng_memfree) (mng_ptr iPtr,
|
||||||
mng_size_t iLen);
|
mng_size_t iLen);
|
||||||
|
|
||||||
/* I/O management callbacks */
|
/* I/O management callbacks */
|
||||||
typedef mng_bool MNG_DECL (*mng_openstream) (mng_handle hHandle);
|
typedef mng_bool (MNG_DECL *mng_openstream) (mng_handle hHandle);
|
||||||
typedef mng_bool MNG_DECL (*mng_closestream) (mng_handle hHandle);
|
typedef mng_bool (MNG_DECL *mng_closestream) (mng_handle hHandle);
|
||||||
typedef mng_bool MNG_DECL (*mng_readdata) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_readdata) (mng_handle hHandle,
|
||||||
mng_ptr pBuf,
|
mng_ptr pBuf,
|
||||||
mng_uint32 iBuflen,
|
mng_uint32 iBuflen,
|
||||||
mng_uint32p pRead);
|
mng_uint32p pRead);
|
||||||
typedef mng_bool MNG_DECL (*mng_writedata) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_writedata) (mng_handle hHandle,
|
||||||
mng_ptr pBuf,
|
mng_ptr pBuf,
|
||||||
mng_uint32 iBuflen,
|
mng_uint32 iBuflen,
|
||||||
mng_uint32p pWritten);
|
mng_uint32p pWritten);
|
||||||
|
|
||||||
/* error & trace processing callbacks */
|
/* error & trace processing callbacks */
|
||||||
typedef mng_bool MNG_DECL (*mng_errorproc) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_errorproc) (mng_handle hHandle,
|
||||||
mng_int32 iErrorcode,
|
mng_int32 iErrorcode,
|
||||||
mng_int8 iSeverity,
|
mng_int8 iSeverity,
|
||||||
mng_chunkid iChunkname,
|
mng_chunkid iChunkname,
|
||||||
|
@ -391,53 +399,53 @@ typedef mng_bool MNG_DECL (*mng_errorproc) (mng_handle hHandle,
|
||||||
mng_int32 iExtra1,
|
mng_int32 iExtra1,
|
||||||
mng_int32 iExtra2,
|
mng_int32 iExtra2,
|
||||||
mng_pchar zErrortext);
|
mng_pchar zErrortext);
|
||||||
typedef mng_bool MNG_DECL (*mng_traceproc) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_traceproc) (mng_handle hHandle,
|
||||||
mng_int32 iFuncnr,
|
mng_int32 iFuncnr,
|
||||||
mng_int32 iFuncseq,
|
mng_int32 iFuncseq,
|
||||||
mng_pchar zFuncname);
|
mng_pchar zFuncname);
|
||||||
|
|
||||||
/* read processing callbacks */
|
/* read processing callbacks */
|
||||||
typedef mng_bool MNG_DECL (*mng_processheader) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processheader) (mng_handle hHandle,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint32 iHeight);
|
mng_uint32 iHeight);
|
||||||
typedef mng_bool MNG_DECL (*mng_processtext) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processtext) (mng_handle hHandle,
|
||||||
mng_uint8 iType,
|
mng_uint8 iType,
|
||||||
mng_pchar zKeyword,
|
mng_pchar zKeyword,
|
||||||
mng_pchar zText,
|
mng_pchar zText,
|
||||||
mng_pchar zLanguage,
|
mng_pchar zLanguage,
|
||||||
mng_pchar zTranslation);
|
mng_pchar zTranslation);
|
||||||
typedef mng_bool MNG_DECL (*mng_processsave) (mng_handle hHandle);
|
typedef mng_bool (MNG_DECL *mng_processsave) (mng_handle hHandle);
|
||||||
typedef mng_bool MNG_DECL (*mng_processseek) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processseek) (mng_handle hHandle,
|
||||||
mng_pchar zName);
|
mng_pchar zName);
|
||||||
typedef mng_bool MNG_DECL (*mng_processneed) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processneed) (mng_handle hHandle,
|
||||||
mng_pchar zKeyword);
|
mng_pchar zKeyword);
|
||||||
typedef mng_bool MNG_DECL (*mng_processunknown) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processunknown) (mng_handle hHandle,
|
||||||
mng_chunkid iChunkid,
|
mng_chunkid iChunkid,
|
||||||
mng_uint32 iRawlen,
|
mng_uint32 iRawlen,
|
||||||
mng_ptr pRawdata);
|
mng_ptr pRawdata);
|
||||||
|
|
||||||
/* display processing callbacks */
|
/* display processing callbacks */
|
||||||
typedef mng_ptr MNG_DECL (*mng_getcanvasline) (mng_handle hHandle,
|
typedef mng_ptr (MNG_DECL *mng_getcanvasline) (mng_handle hHandle,
|
||||||
mng_uint32 iLinenr);
|
mng_uint32 iLinenr);
|
||||||
typedef mng_ptr MNG_DECL (*mng_getbkgdline) (mng_handle hHandle,
|
typedef mng_ptr (MNG_DECL *mng_getbkgdline) (mng_handle hHandle,
|
||||||
mng_uint32 iLinenr);
|
mng_uint32 iLinenr);
|
||||||
typedef mng_ptr MNG_DECL (*mng_getalphaline) (mng_handle hHandle,
|
typedef mng_ptr (MNG_DECL *mng_getalphaline) (mng_handle hHandle,
|
||||||
mng_uint32 iLinenr);
|
mng_uint32 iLinenr);
|
||||||
typedef mng_bool MNG_DECL (*mng_refresh) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_refresh) (mng_handle hHandle,
|
||||||
mng_uint32 iX,
|
mng_uint32 iX,
|
||||||
mng_uint32 iY,
|
mng_uint32 iY,
|
||||||
mng_uint32 iWidth,
|
mng_uint32 iWidth,
|
||||||
mng_uint32 iHeight);
|
mng_uint32 iHeight);
|
||||||
|
|
||||||
/* timer management callbacks */
|
/* timer management callbacks */
|
||||||
typedef mng_uint32 MNG_DECL (*mng_gettickcount) (mng_handle hHandle);
|
typedef mng_uint32 (MNG_DECL *mng_gettickcount) (mng_handle hHandle);
|
||||||
typedef mng_bool MNG_DECL (*mng_settimer) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_settimer) (mng_handle hHandle,
|
||||||
mng_uint32 iMsecs);
|
mng_uint32 iMsecs);
|
||||||
|
|
||||||
/* color management callbacks */
|
/* color management callbacks */
|
||||||
typedef mng_bool MNG_DECL (*mng_processgamma) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processgamma) (mng_handle hHandle,
|
||||||
mng_uint32 iGamma);
|
mng_uint32 iGamma);
|
||||||
typedef mng_bool MNG_DECL (*mng_processchroma) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processchroma) (mng_handle hHandle,
|
||||||
mng_uint32 iWhitepointx,
|
mng_uint32 iWhitepointx,
|
||||||
mng_uint32 iWhitepointy,
|
mng_uint32 iWhitepointy,
|
||||||
mng_uint32 iRedx,
|
mng_uint32 iRedx,
|
||||||
|
@ -446,18 +454,18 @@ typedef mng_bool MNG_DECL (*mng_processchroma) (mng_handle hHandle,
|
||||||
mng_uint32 iGreeny,
|
mng_uint32 iGreeny,
|
||||||
mng_uint32 iBluex,
|
mng_uint32 iBluex,
|
||||||
mng_uint32 iBluey);
|
mng_uint32 iBluey);
|
||||||
typedef mng_bool MNG_DECL (*mng_processsrgb) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processsrgb) (mng_handle hHandle,
|
||||||
mng_uint8 iRenderingintent);
|
mng_uint8 iRenderingintent);
|
||||||
typedef mng_bool MNG_DECL (*mng_processiccp) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processiccp) (mng_handle hHandle,
|
||||||
mng_uint32 iProfilesize,
|
mng_uint32 iProfilesize,
|
||||||
mng_ptr pProfile);
|
mng_ptr pProfile);
|
||||||
typedef mng_bool MNG_DECL (*mng_processarow) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_processarow) (mng_handle hHandle,
|
||||||
mng_uint32 iRowsamples,
|
mng_uint32 iRowsamples,
|
||||||
mng_bool bIsRGBA16,
|
mng_bool bIsRGBA16,
|
||||||
mng_ptr pRow);
|
mng_ptr pRow);
|
||||||
|
|
||||||
/* chunk access callback(s) */
|
/* chunk access callback(s) */
|
||||||
typedef mng_bool MNG_DECL (*mng_iteratechunk) (mng_handle hHandle,
|
typedef mng_bool (MNG_DECL *mng_iteratechunk) (mng_handle hHandle,
|
||||||
mng_handle hChunk,
|
mng_handle hChunk,
|
||||||
mng_chunkid iChunkid,
|
mng_chunkid iChunkid,
|
||||||
mng_uint32 iChunkseq);
|
mng_uint32 iChunkseq);
|
||||||
|
|
|
@ -201,15 +201,18 @@ mng_retcode mngzlib_inflaterows (mng_datap pData,
|
||||||
if (pData->iRow >= (mng_int32)pData->iDataheight)
|
if (pData->iRow >= (mng_int32)pData->iDataheight)
|
||||||
/* MNG_ERROR (pData, MNG_TOOMUCHIDAT) */ ; /* TODO: check this!!! */
|
/* MNG_ERROR (pData, MNG_TOOMUCHIDAT) */ ; /* TODO: check this!!! */
|
||||||
else
|
else
|
||||||
{
|
{ /* has leveling info ? */
|
||||||
if (pData->iFilterofs) /* has leveling info ? */
|
/* if (pData->iFilterofs)
|
||||||
iRslt = init_rowdiffering (pData);
|
iRslt = init_rowdiffering (pData);
|
||||||
else
|
else
|
||||||
iRslt = MNG_NOERROR;
|
iRslt = MNG_NOERROR; */
|
||||||
/* filter the row if necessary */
|
/* filter the row if necessary */
|
||||||
if ((!iRslt) && (pData->iFilterofs < pData->iPixelofs ) &&
|
/* if ((!iRslt) && (pData->iFilterofs < pData->iPixelofs ) &&
|
||||||
(*(pData->pWorkrow + pData->iFilterofs)) )
|
(*(pData->pWorkrow + pData->iFilterofs)) ) */
|
||||||
|
if (*(pData->pWorkrow + pData->iFilterofs))
|
||||||
iRslt = filter_a_row (pData);
|
iRslt = filter_a_row (pData);
|
||||||
|
else
|
||||||
|
iRslt = MNG_NOERROR;
|
||||||
/* additonal leveling/differing ? */
|
/* additonal leveling/differing ? */
|
||||||
if ((!iRslt) && (pData->fDifferrow))
|
if ((!iRslt) && (pData->fDifferrow))
|
||||||
{
|
{
|
||||||
|
@ -217,7 +220,7 @@ mng_retcode mngzlib_inflaterows (mng_datap pData,
|
||||||
|
|
||||||
pSwap = pData->pWorkrow;
|
pSwap = pData->pWorkrow;
|
||||||
pData->pWorkrow = pData->pPrevrow;
|
pData->pWorkrow = pData->pPrevrow;
|
||||||
pData->pPrevrow = pSwap; /* so prev points to the processed row! */
|
pData->pPrevrow = pSwap; /* make sure we're processing the right data */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!iRslt)
|
if (!iRslt)
|
||||||
|
|
|
@ -172,6 +172,11 @@ il_mng_refresh(mng_handle handle,
|
||||||
mng_get_refreshpass(handle) /* pass */);
|
mng_get_refreshpass(handle) /* pass */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mng_get_imagetype(handle) == mng_it_mng) {
|
||||||
|
ic->imgdcb->ImgDCBFlushImage();
|
||||||
|
ic->imgdcb->ImgDCBHaveImageFrame();
|
||||||
|
}
|
||||||
|
|
||||||
return MNG_TRUE;
|
return MNG_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,6 +233,7 @@ il_mng_free(mng_ptr ptr, mng_size_t size)
|
||||||
nsMemory::Free(ptr);
|
nsMemory::Free(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_tor
|
||||||
static mng_bool
|
static mng_bool
|
||||||
il_mng_trace(mng_handle handle, mng_int32 iFuncnr, mng_int32 iFuncseq,
|
il_mng_trace(mng_handle handle, mng_int32 iFuncnr, mng_int32 iFuncseq,
|
||||||
mng_pchar zFuncname)
|
mng_pchar zFuncname)
|
||||||
|
@ -244,6 +250,7 @@ il_mng_error(mng_handle hHandle, mng_int32 iErrorcode, mng_int8 iSeverity,
|
||||||
dprintf((stderr, "== error == %s\n", zErrortext));
|
dprintf((stderr, "== error == %s\n", zErrortext));
|
||||||
return MNG_TRUE;
|
return MNG_TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Boilerplate methods... *yawn*
|
// Boilerplate methods... *yawn*
|
||||||
//===========================================================
|
//===========================================================
|
||||||
|
|
Загрузка…
Ссылка в новой задаче