Esempio n. 1
0
        public static FileHandle FromStream(Stream stream, int count = 0)
        {
            if (count <= 0)
            {
                count = (int)(stream.Length - stream.Position);
            }

            var start = stream.Position;

            byte[] data = null;

            var fileRead = new FileHandle(count, (ignore, position, buffer, size) =>
            {
                if (!stream.CanRead)
                {
                    return(false);
                }

                stream.Position = start + position;

                if (data == null || data.Length < size)
                {
                    data = new byte[size];
                }

                if (stream.Read(data, 0, (int)size) != size)
                {
                    return(false);
                }

                Marshal.Copy(data, 0, buffer, (int)size);

                return(true);
            });

            GC.KeepAlive(fileRead);

            return(fileRead);
        }
Esempio n. 2
0
        internal static int FPDFImageObjLoadJpegFile(FpdfPageT pages, int nCount, FpdfPageobjectT image_object, FileHandle fileAccess)
        {
            unsafe
            {
                var array = new[] { pages.__Instance };

                fixed(IntPtr *dataPtr = &array[0])
                {
                    return(FPDFImageObjLoadJpegFileInternal(dataPtr, nCount, image_object.__Instance, fileAccess));
                }
            }
        }
Esempio n. 3
0
 internal static extern unsafe int FPDFImageObjLoadJpegFileInternal(IntPtr *pages, int nCount, IntPtr image_object, FileHandle fileAccess);