📄 freeimagestaticimports.cs
字号:
// ==========================================================
// 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: 2008/06/17 13:50:59 $
// $Id: FreeImageStaticImports.cs,v 1.4 2008/06/17 13:50:59 cklein05 Exp $
// ==========================================================
using System;
using System.Runtime.InteropServices;
using FreeImageAPI.Plugins;
using FreeImageAPI.IO;
namespace FreeImageAPI
{
public static partial class FreeImage
{
#region Constants
/// <summary>
/// Filename of the FreeImage library.
/// </summary>
private const string FreeImageLibrary = "FreeImage";
/// <summary>
/// Major version of the library.
/// </summary>
public const int FREEIMAGE_MAJOR_VERSION = 3;
/// <summary>
/// Minor version of the library.
/// </summary>
public const int FREEIMAGE_MINOR_VERSION = 11;
/// <summary>
/// Release version of the library.
/// </summary>
public const int FREEIMAGE_RELEASE_SERIAL = 0;
/// <summary>
/// Number of bytes to shift left within a 4 byte block.
/// </summary>
public const int FI_RGBA_RED = 2;
/// <summary>
/// Number of bytes to shift left within a 4 byte block.
/// </summary>
public const int FI_RGBA_GREEN = 1;
/// <summary>
/// Number of bytes to shift left within a 4 byte block.
/// </summary>
public const int FI_RGBA_BLUE = 0;
/// <summary>
/// Number of bytes to shift left within a 4 byte block.
/// </summary>
public const int FI_RGBA_ALPHA = 3;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const uint FI_RGBA_RED_MASK = 0x00FF0000;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const uint FI_RGBA_GREEN_MASK = 0x0000FF00;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const uint FI_RGBA_BLUE_MASK = 0x000000FF;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const uint FI_RGBA_ALPHA_MASK = 0xFF000000;
/// <summary>
/// Number of bits to shift left within a 32 bit block.
/// </summary>
public const int FI_RGBA_RED_SHIFT = 16;
/// <summary>
/// Number of bits to shift left within a 32 bit block.
/// </summary>
public const int FI_RGBA_GREEN_SHIFT = 8;
/// <summary>
/// Number of bits to shift left within a 32 bit block.
/// </summary>
public const int FI_RGBA_BLUE_SHIFT = 0;
/// <summary>
/// Number of bits to shift left within a 32 bit block.
/// </summary>
public const int FI_RGBA_ALPHA_SHIFT = 24;
/// <summary>
/// Mask indicating the position of color components of a 32 bit color.
/// </summary>
public const uint FI_RGBA_RGB_MASK = (FI_RGBA_RED_MASK | FI_RGBA_GREEN_MASK | FI_RGBA_BLUE_MASK);
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_555_RED_MASK = 0x7C00;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_555_GREEN_MASK = 0x03E0;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_555_BLUE_MASK = 0x001F;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_555_RED_SHIFT = 10;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_555_GREEN_SHIFT = 5;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_555_BLUE_SHIFT = 0;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_565_RED_MASK = 0xF800;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_565_GREEN_MASK = 0x07E0;
/// <summary>
/// Mask indicating the position of the given color.
/// </summary>
public const int FI16_565_BLUE_MASK = 0x001F;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_565_RED_SHIFT = 11;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_565_GREEN_SHIFT = 5;
/// <summary>
/// Number of bits to shift left within a 16 bit block.
/// </summary>
public const int FI16_565_BLUE_SHIFT = 0;
#endregion
#region General functions
/// <summary>
/// Initialises the library.
/// </summary>
/// <param name="load_local_plugins_only">
/// When the <paramref name="load_local_plugins_only"/> is true, FreeImage won't make use of external plugins.
/// </param>
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_Initialise")]
private static extern void Initialise(bool load_local_plugins_only);
/// <summary>
/// Deinitialises the library.
/// </summary>
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_DeInitialise")]
private static extern void DeInitialise();
/// <summary>
/// Returns a string containing the current version of the library.
/// </summary>
/// <returns>The current version of the library.</returns>
public static unsafe string GetVersion() { return PtrToStr(GetVersion_()); }
[DllImport(FreeImageLibrary, CharSet = CharSet.Ansi, EntryPoint = "FreeImage_GetVersion")]
private static unsafe extern byte* GetVersion_();
/// <summary>
/// Returns a string containing a standard copyright message.
/// </summary>
/// <returns>A standard copyright message.</returns>
public static unsafe string GetCopyrightMessage() { return PtrToStr(GetCopyrightMessage_()); }
[DllImport(FreeImageLibrary, CharSet = CharSet.Ansi, EntryPoint = "FreeImage_GetCopyrightMessage")]
private static unsafe extern byte* GetCopyrightMessage_();
/// <summary>
/// Calls the set error message function in FreeImage.
/// </summary>
/// <param name="fif">Format of the bitmaps.</param>
/// <param name="message">The error message.</param>
[DllImport(FreeImageLibrary, CharSet = CharSet.Ansi, EntryPoint = "FreeImage_OutputMessageProc")]
public static extern void OutputMessageProc(FREE_IMAGE_FORMAT fif, string message);
/// <summary>
/// You use the function FreeImage_SetOutputMessage to capture the log string
/// so that you can show it to the user of the program.
/// The callback is implemented in the <see cref="Message"/> event of this class.
/// </summary>
/// <remarks>The function is private because FreeImage can only have a single
/// callback function. To use the callback use the <see cref="Message"/> event of this class.</remarks>
/// <param name="omf">Handler to the callback function.</param>
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_SetOutputMessage")]
internal static extern void SetOutputMessage(OutputMessageFunction omf);
#endregion
#region Bitmap management functions
/// <summary>
/// Creates a new bitmap in memory.
/// </summary>
/// <param name="width">Width of the new bitmap.</param>
/// <param name="height">Height of the new bitmap.</param>
/// <param name="bpp">Bit depth of the new Bitmap.
/// Supported pixel depth: 1-, 4-, 8-, 16-, 24-, 32-bit per pixel for standard bitmap</param>
/// <param name="red_mask">Red part of the color layout.
/// eg: 0xFF0000</param>
/// <param name="green_mask">Green part of the color layout.
/// eg: 0x00FF00</param>
/// <param name="blue_mask">Blue part of the color layout.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -