//! Reads a Jpeg2000 file. ILboolean ilLoadJp2(ILconst_string FileName) { // ILHANDLE Jp2File; ILboolean bRet = IL_FALSE; jas_stream_t *Stream; /*Jp2File = iopenr(FileName); if (Jp2File == NULL) { ilSetError(IL_COULD_NOT_OPEN_FILE); return bJp2; } bJp2 = iLoadJp2Internal(); icloser(Jp2File);*/ if (jas_init()) { ilSetError(IL_LIB_JP2_ERROR); return IL_FALSE; } Stream = jas_stream_fopen(FileName, "rb"); if (!Stream) { ilSetError(IL_COULD_NOT_OPEN_FILE); return IL_FALSE; } bRet = iLoadJp2Internal(Stream, NULL); // Close the input stream. jas_stream_close(Stream); return bRet; }
//! Reads an already-opened Jpeg2000 file. ILboolean ilLoadJp2F(ILHANDLE File) { ILuint FirstPos; ILboolean bRet; jas_stream_t *Stream; iSetInputFile(File); FirstPos = itell(); if (jas_init()) { ilSetError(IL_LIB_JP2_ERROR); return IL_FALSE; } Stream = iJp2ReadStream(); if (!Stream) { ilSetError(IL_COULD_NOT_OPEN_FILE); return IL_FALSE; } bRet = iLoadJp2Internal(Stream, NULL); // Close the input stream. jas_stream_close(Stream); iseek(FirstPos, IL_SEEK_SET); return bRet; }
//! This is separated so that it can be called for other file types, such as .icns. ILboolean ilLoadLInternal_JP2(const void *Lump, ILuint Size, ILimage *Image) { ILboolean bRet; jas_stream_t *Stream; if (!JasperInit) { if (jas_init()) { ilSetError(IL_LIB_JP2_ERROR); return IL_FALSE; } JasperInit = IL_TRUE; } Stream = jas_stream_memopen((char*)Lump, Size); if (!Stream) { ilSetError(IL_COULD_NOT_OPEN_FILE); return IL_FALSE; } bRet = iLoadJp2Internal(Stream, Image); // Close the input stream. jas_stream_close(Stream); return bRet; }