Visualization Library 2.0.0-b5

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
DotZLib.cs
Go to the documentation of this file.
1 //
2 // © Copyright Henrik Ravn 2004
3 //
4 // Use, modification and distribution are subject to the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 
8 using System;
9 using System.IO;
10 using System.Runtime.InteropServices;
11 using System.Text;
12 
13 
14 namespace DotZLib
15 {
16 
17  #region Internal types
18 
22  internal enum FlushTypes
23  {
24  None, Partial, Sync, Full, Finish, Block
25  }
26 
27  #region ZStream structure
28  // internal mapping of the zlib zstream structure for marshalling
29  [StructLayoutAttribute(LayoutKind.Sequential, Pack=4, Size=0, CharSet=CharSet.Ansi)]
30  internal struct ZStream
31  {
32  public IntPtr next_in;
33  public uint avail_in;
34  public uint total_in;
35 
36  public IntPtr next_out;
37  public uint avail_out;
38  public uint total_out;
39 
40  [MarshalAs(UnmanagedType.LPStr)]
41  string msg;
42  uint state;
43 
44  uint zalloc;
45  uint zfree;
46  uint opaque;
47 
48  int data_type;
49  public uint adler;
50  uint reserved;
51  }
52 
53  #endregion
54 
55  #endregion
56 
57  #region Public enums
58  public enum CompressLevel : int
62  {
66  Default = -1,
70  None = 0,
74  Best = 9,
78  Fastest = 1
79  }
80  #endregion
81 
82  #region Exception classes
83  public class ZLibException : ApplicationException
87  {
94  public ZLibException(int errorCode, string msg) : base(String.Format("ZLib error {0} {1}", errorCode, msg))
95  {
96  }
97 
103  public ZLibException(int errorCode) : base(String.Format("ZLib error {0}", errorCode))
104  {
105  }
106  }
107  #endregion
108 
109  #region Interfaces
110 
114  public interface ChecksumGenerator
115  {
119  uint Value { get; }
120 
124  void Reset();
125 
130  void Update(byte[] data);
131 
141  void Update(byte[] data, int offset, int count);
142 
148  void Update(string data);
149 
155  void Update(string data, Encoding encoding);
156  }
157 
158 
169  public delegate void DataAvailableHandler(byte[] data, int startIndex, int count);
170 
174  public interface Codec
175  {
179  event DataAvailableHandler DataAvailable;
180 
186  void Add(byte[] data);
187 
195  void Add(byte[] data, int offset, int count);
196 
200  void Finish();
201 
205  uint Checksum { get; }
206 
207 
208  }
209 
210  #endregion
211 
212  #region Classes
213  public class Info
217  {
218  #region DLL imports
219  [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)]
220  private static extern uint zlibCompileFlags();
221 
222  [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)]
223  private static extern string zlibVersion();
224  #endregion
225 
226  #region Private stuff
227  private uint _flags;
228 
229  // helper function that unpacks a bitsize mask
230  private static int bitSize(uint bits)
231  {
232  switch (bits)
233  {
234  case 0: return 16;
235  case 1: return 32;
236  case 2: return 64;
237  }
238  return -1;
239  }
240  #endregion
241 
245  public Info()
246  {
247  _flags = zlibCompileFlags();
248  }
249 
253  public bool HasDebugInfo { get { return 0 != (_flags & 0x100); } }
254 
258  public bool UsesAssemblyCode { get { return 0 != (_flags & 0x200); } }
259 
263  public int SizeOfUInt { get { return bitSize(_flags & 3); } }
264 
268  public int SizeOfULong { get { return bitSize((_flags >> 2) & 3); } }
269 
273  public int SizeOfPointer { get { return bitSize((_flags >> 4) & 3); } }
274 
278  public int SizeOfOffset { get { return bitSize((_flags >> 6) & 3); } }
279 
283  public static string Version { get { return zlibVersion(); } }
284  }
285 
286  #endregion
287 
288 }
Declares methods and events for implementing compressors/decompressors
Definition: DotZLib.cs:174
DataAvailableHandler DataAvailable
Occurs when more processed data are available.
Definition: DotZLib.cs:179
unsigned char byte
Definition: tif_acorn.c:69
ZLibException(int errorCode)
Initializes a new instance of the ZLibException class with a specified error code ...
Definition: DotZLib.cs:103
ZLibException(int errorCode, string msg)
Initializes a new instance of the ZLibException class with a specified error message and error code ...
Definition: DotZLib.cs:94
unsigned int uint
Definition: gzlog.c:242
The default compression level with a reasonable compromise between compression and speed ...
GLsizei GLsizei GLenum GLenum const GLvoid * data
The fastest available compression level.
Info()
Constructs an instance of the Info class.
Definition: DotZLib.cs:245
GLintptr offset
const char *ZEXPORT zlibVersion()
Definition: zutil.c:30
Declares methods and properties that enables a running checksum to be calculated
Definition: DotZLib.cs:114
uLong ZEXPORT zlibCompileFlags()
Definition: zutil.c:35
GLuint GLuint GLsizei count
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
delegate void DataAvailableHandler(byte[] data, int startIndex, int count)
Represents the method that will be called from a codec when new data are available.
Encapsulates general information about the ZLib library
Definition: DotZLib.cs:216
CompressLevel
Defines constants for the available compression levels in zlib
Definition: DotZLib.cs:61
The maximum compression rate available.
png_const_charp msg
Definition: PngFile.c:23