123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- #region MIT License
- #endregion
- using System;
- using System.Runtime.InteropServices;
- using SharpFont.Internal;
- namespace SharpFont
- {
-
-
-
-
-
-
-
-
-
-
-
-
- [CLSCompliant(false)]
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate uint StreamIOFunc([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(StreamMarshaler))] FTStream stream, uint offset, IntPtr buffer, uint count);
-
-
-
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate void StreamCloseFunc([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(StreamMarshaler))] FTStream stream);
-
-
-
- public sealed class FTStream
- {
- #region Fields
- private IntPtr reference;
- private StreamRec rec;
- #endregion
- #region Constructors
- internal FTStream(IntPtr reference)
- {
- Reference = reference;
- }
- #endregion
- #region Properties
-
-
-
-
- public IntPtr Base
- {
- get
- {
- return rec.@base;
- }
- }
-
-
-
-
- [CLSCompliant(false)]
- public uint Size
- {
- get
- {
- return (uint)rec.size;
- }
- }
-
-
-
- [CLSCompliant(false)]
- public uint Position
- {
- get
- {
- return (uint)rec.pos;
- }
- }
-
-
-
-
- public StreamDesc Descriptor
- {
- get
- {
- return new StreamDesc(reference, Marshal.OffsetOf(typeof(StreamRec), "descriptor"));
- }
- }
-
-
-
-
- public StreamDesc PathName
- {
- get
- {
- return new StreamDesc(reference, Marshal.OffsetOf(typeof(StreamRec), "pathname"));
- }
- }
-
-
-
- [CLSCompliant(false)]
- public StreamIOFunc Read
- {
- get
- {
- return rec.read;
- }
- }
-
-
-
- public StreamCloseFunc Close
- {
- get
- {
- return rec.close;
- }
- }
-
-
-
-
- public Memory Memory
- {
- get
- {
- return new Memory(reference, Marshal.OffsetOf(typeof(StreamRec), "memory"));
- }
- }
-
-
-
- public IntPtr Cursor
- {
- get
- {
- return rec.cursor;
- }
- }
-
-
-
- public IntPtr Limit
- {
- get
- {
- return rec.limit;
- }
- }
- internal IntPtr Reference
- {
- get
- {
- return reference;
- }
- set
- {
- reference = value;
- rec = PInvokeHelper.PtrToStructure<StreamRec>(reference);
- }
- }
- #endregion
- #region Methods
- #region GZIP Streams
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public void OpenGzip(FTStream source)
- {
- Error err = FT.FT_Stream_OpenGzip(Reference, source.Reference);
- if (err != Error.Ok)
- throw new FreeTypeException(err);
- }
- #endregion
- #region LZW Streams
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public void OpenLzw(FTStream source)
- {
- Error err = FT.FT_Stream_OpenLZW(Reference, source.Reference);
- if (err != Error.Ok)
- throw new FreeTypeException(err);
- }
- #endregion
- #region BZIP2 Streams
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public void StreamOpenBzip2(FTStream source)
- {
- Error err = FT.FT_Stream_OpenBzip2(Reference, source.Reference);
- if (err != Error.Ok)
- throw new FreeTypeException(err);
- }
- #endregion
- #endregion
- }
- }
|