1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
// ==========================================================
// FreeImage 3 .NET wrapper
// Original FreeImage 3 functions and .NET compatible derived functions
//
// Design and implementation by
// - Jean-Philippe Goerke (jpgoerke@users.sourceforge.net)
// - Carsten Klein (cklein05@users.sourceforge.net)
//
// Contributors:
// - David Boland (davidboland@vodafone.ie)
//
// Main reference : MSDN Knowlede Base
//
// This file is part of FreeImage 3
//
// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
// THIS DISCLAIMER.
//
// Use at your own risk!
// ==========================================================
// ==========================================================
// CVS
// $Revision: 1.4 $
// $Date: 2009/09/15 11:39:10 $
// $Id: Delegates.cs,v 1.4 2009/09/15 11:39:10 cklein05 Exp $
// ==========================================================
using System;
using System.IO;
using System.Runtime.InteropServices;
using FreeImageAPI.IO;
namespace FreeImageAPI
{
// Delegates used by the FreeImageIO structure
/// <summary>
/// Delegate for capturing FreeImage error messages.
/// </summary>
/// <param name="fif">The format of the image.</param>
/// <param name="message">The errormessage.</param>
// DLL_API is missing in the definition of the callbackfuntion.
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi, ThrowOnUnmappableChar = false)]
public delegate void OutputMessageFunction(FREE_IMAGE_FORMAT fif, string message);
}
namespace FreeImageAPI.IO
{
/// <summary>
/// Delegate to the C++ function <b>fread</b>.
/// </summary>
/// <param name="buffer">Pointer to read from.</param>
/// <param name="size">Item size in bytes.</param>
/// <param name="count">Maximum number of items to be read.</param>
/// <param name="handle">Handle/stream to read from.</param>
/// <returns>Number of full items actually read,
/// which may be less than count if an error occurs or
/// if the end of the file is encountered before reaching count.</returns>
public delegate uint ReadProc(IntPtr buffer, uint size, uint count, fi_handle handle);
/// <summary>
/// Delegate to the C++ function <b>fwrite</b>.
/// </summary>
/// <param name="buffer">Pointer to data to be written.</param>
/// <param name="size">Item size in bytes.</param>
/// <param name="count">Maximum number of items to be written.</param>
/// <param name="handle">Handle/stream to write to.</param>
/// <returns>Number of full items actually written,
/// which may be less than count if an error occurs.
/// Also, if an error occurs, the file-position indicator cannot be determined.</returns>
public delegate uint WriteProc(IntPtr buffer, uint size, uint count, fi_handle handle);
/// <summary>
/// Delegate to the C++ function <b>fseek</b>.
/// </summary>
/// <param name="handle">Handle/stream to seek in.</param>
/// <param name="offset">Number of bytes from origin.</param>
/// <param name="origin">Initial position.</param>
/// <returns>If successful 0 is returned; otherwise a nonzero value. </returns>
public delegate int SeekProc(fi_handle handle, int offset, SeekOrigin origin);
/// <summary>
/// Delegate to the C++ function <b>ftell</b>.
/// </summary>
/// <param name="handle">Handle/stream to retrieve its currents position from.</param>
/// <returns>The current position.</returns>
public delegate int TellProc(fi_handle handle);
// Delegates used by 'Plugin' structure
}
namespace FreeImageAPI.Plugins
{
/// <summary>
/// Delegate to a function that returns a string which describes
/// the plugins format.
/// </summary>
public delegate string FormatProc();
/// <summary>
/// Delegate to a function that returns a string which contains
/// a more detailed description.
/// </summary>
public delegate string DescriptionProc();
/// <summary>
/// Delegate to a function that returns a comma seperated list
/// of file extensions the plugin can read or write.
/// </summary>
public delegate string ExtensionListProc();
/// <summary>
/// Delegate to a function that returns a regular expression that
/// can be used to idientify whether a file can be handled by the plugin.
/// </summary>
public delegate string RegExprProc();
/// <summary>
/// Delegate to a function that opens a file.
/// </summary>
public delegate IntPtr OpenProc(ref FreeImageIO io, fi_handle handle, bool read);
/// <summary>
/// Delegate to a function that closes a previosly opened file.
/// </summary>
public delegate void CloseProc(ref FreeImageIO io, fi_handle handle, IntPtr data);
/// <summary>
/// Delegate to a function that returns the number of pages of a multipage
/// bitmap if the plugin is capable of handling multipage bitmaps.
/// </summary>
public delegate int PageCountProc(ref FreeImageIO io, fi_handle handle, IntPtr data);
/// <summary>
/// UNKNOWN
/// </summary>
public delegate int PageCapabilityProc(ref FreeImageIO io, fi_handle handle, IntPtr data);
/// <summary>
/// Delegate to a function that loads and decodes a bitmap into memory.
/// </summary>
public delegate FIBITMAP LoadProc(ref FreeImageIO io, fi_handle handle, int page, int flags, IntPtr data);
/// <summary>
/// Delegate to a function that saves a bitmap.
/// </summary>
public delegate bool SaveProc(ref FreeImageIO io, FIBITMAP dib, fi_handle handle, int page, int flags, IntPtr data);
/// <summary>
/// Delegate to a function that determines whether the source defined
/// by <param name="io"/> and <param name="handle"/> is a valid image.
/// </summary>
public delegate bool ValidateProc(ref FreeImageIO io, fi_handle handle);
/// <summary>
/// Delegate to a function that returns a string which contains
/// the plugin's mime type.
/// </summary>
public delegate string MimeProc();
/// <summary>
/// Delegate to a function that returns whether the plugin can handle the
/// specified color depth.
/// </summary>
public delegate bool SupportsExportBPPProc(int bpp);
/// <summary>
/// Delegate to a function that returns whether the plugin can handle the
/// specified image type.
/// </summary>
public delegate bool SupportsExportTypeProc(FREE_IMAGE_TYPE type);
/// <summary>
/// Delegate to a function that returns whether the plugin can handle
/// ICC-Profiles.
/// </summary>
public delegate bool SupportsICCProfilesProc();
/// <summary>
/// Callback function used by FreeImage to register plugins.
/// </summary>
public delegate void InitProc(ref Plugin plugin, int format_id);
}
|