|
|
using System;
|
|
|
using System.Drawing;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Text;
|
|
|
using System.Runtime.InteropServices;
|
|
|
using System.IO;
|
|
|
using System.Drawing.Imaging;
|
|
|
using System.Net;
|
|
|
using FreeImageNETUnitTest;
|
|
|
using System.Reflection;
|
|
|
using System.Threading;
|
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
|
using System.Collections;
|
|
|
using FreeImageAPI;
|
|
|
using FreeImageAPI.IO;
|
|
|
using FreeImageAPI.Metadata;
|
|
|
using FreeImageAPI.Plugins;
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
namespace FreeImageNETUnitTest
|
|
|
{
|
|
|
[TestFixture]
|
|
|
public class ImportedFunctionsTest
|
|
|
{
|
|
|
ImageManager iManager = new ImageManager();
|
|
|
FIBITMAP dib;
|
|
|
string freeImageCallback = null;
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
public void Init()
|
|
|
{
|
|
|
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[TestFixtureTearDown]
|
|
|
public void DeInit()
|
|
|
{
|
|
|
FreeImageEngine.Message -= new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[SetUp]
|
|
|
public void InitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[TearDown]
|
|
|
public void DeInitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
|
|
{
|
|
|
freeImageCallback = message;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetVersion()
|
|
|
{
|
|
|
string version = FreeImage.GetVersion();
|
|
|
Assert.IsNotEmpty(version);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetCopyrightMessage()
|
|
|
{
|
|
|
string copyright = FreeImage.GetCopyrightMessage();
|
|
|
Assert.IsNotEmpty(copyright);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_OutputMessageProc_SetOutputMessage()
|
|
|
{
|
|
|
Assert.IsNull(freeImageCallback);
|
|
|
FreeImage.SetOutputMessage(new OutputMessageFunction(FreeImage_Message));
|
|
|
FreeImage.OutputMessageProc(FREE_IMAGE_FORMAT.FIF_UNKNOWN, "unit test");
|
|
|
FreeImage.SetOutputMessage(null);
|
|
|
Assert.IsNotNull(freeImageCallback);
|
|
|
freeImageCallback = null;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Allocate()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(
|
|
|
133,
|
|
|
77,
|
|
|
8,
|
|
|
FreeImage.FI_RGBA_RED_MASK,
|
|
|
FreeImage.FI_RGBA_GREEN_MASK,
|
|
|
FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AllocateT()
|
|
|
{
|
|
|
dib = FreeImage.AllocateT(FREE_IMAGE_TYPE.FIT_RGBA16, 31, 555, 64, 0, 0, 0);
|
|
|
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Clone()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(1, 1, 32, 0, 0, 0);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Clone(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Load()
|
|
|
{
|
|
|
Assert.That(dib.IsNull);
|
|
|
dib = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, iManager.baseDirectory + @"JPEG\Image.jpg", FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
Assert.That(dib.IsNull);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Unload()
|
|
|
{
|
|
|
Assert.That(dib.IsNull);
|
|
|
dib = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, iManager.baseDirectory + @"JPEG\Image.jpg", FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.IsNotNull(dib);
|
|
|
FreeImage.Unload(dib);
|
|
|
dib.SetNull();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_LoadFromHandle()
|
|
|
{
|
|
|
byte[] data = File.ReadAllBytes(iManager.GetBitmapPath(ImageType.Even, ImageColorType.Type_16_555));
|
|
|
MemoryStream mStream = new MemoryStream(data);
|
|
|
FreeImageIO io = FreeImageStreamIO.io;
|
|
|
|
|
|
using (fi_handle handle = new fi_handle(mStream))
|
|
|
{
|
|
|
dib = FreeImage.LoadFromHandle(FREE_IMAGE_FORMAT.FIF_BMP, ref io, handle, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Save()
|
|
|
{
|
|
|
string filename = @"test.bmp";
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.Save(FREE_IMAGE_FORMAT.FIF_BMP, dib, filename, FREE_IMAGE_SAVE_FLAGS.DEFAULT));
|
|
|
Assert.IsTrue(File.Exists(filename));
|
|
|
File.Delete(filename);
|
|
|
Assert.IsFalse(File.Exists(filename));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SaveToHandle()
|
|
|
{
|
|
|
FreeImageIO io = new FreeImageIO();
|
|
|
FreeImage.SaveToHandle(FREE_IMAGE_FORMAT.FIF_BMP, dib, ref io, new fi_handle(), FREE_IMAGE_SAVE_FLAGS.DEFAULT);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Memory()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIMEMORY mem = FreeImage.OpenMemory(IntPtr.Zero, 0);
|
|
|
Assert.AreNotEqual(0, mem);
|
|
|
FreeImage.SaveToMemory(FREE_IMAGE_FORMAT.FIF_TIFF, dib, mem, FREE_IMAGE_SAVE_FLAGS.DEFAULT);
|
|
|
Assert.AreNotEqual(0, FreeImage.TellMemory(mem));
|
|
|
Assert.IsTrue(FreeImage.SeekMemory(mem, 0, System.IO.SeekOrigin.Begin));
|
|
|
|
|
|
FIBITMAP temp = FreeImage.LoadFromMemory(FREE_IMAGE_FORMAT.FIF_TIFF, mem, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
|
|
|
uint size = 0;
|
|
|
byte[] ptr = new byte[1];
|
|
|
IntPtr buffer = IntPtr.Zero;
|
|
|
Assert.IsTrue(FreeImage.AcquireMemory(mem, ref buffer, ref size));
|
|
|
Assert.AreNotEqual(IntPtr.Zero, ptr);
|
|
|
Assert.AreNotEqual(0, size);
|
|
|
|
|
|
Assert.AreEqual(1, FreeImage.WriteMemory(ptr, 1, 1, mem));
|
|
|
FreeImage.SeekMemory(mem, 1, System.IO.SeekOrigin.Begin);
|
|
|
Assert.AreEqual(1, FreeImage.TellMemory(mem));
|
|
|
Assert.AreEqual(2, FreeImage.ReadMemory(ptr, 1, 2, mem));
|
|
|
FreeImage.CloseMemory(mem);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_RegisterLocalPlugin()
|
|
|
{
|
|
|
InitProc proc = null;
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.RegisterLocalPlugin(proc, "", "", "", ""));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_RegisterExternalPlugin()
|
|
|
{
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.RegisterExternalPlugin("", "", "", "", ""));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFCount()
|
|
|
{
|
|
|
Assert.AreNotEqual(0, FreeImage.GetFIFCount());
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetPluginEnabled_IsPluginEnabled()
|
|
|
{
|
|
|
FreeImage.SetPluginEnabled(FREE_IMAGE_FORMAT.FIF_PNG, false);
|
|
|
Assert.AreEqual(0, FreeImage.IsPluginEnabled(FREE_IMAGE_FORMAT.FIF_PNG));
|
|
|
FreeImage.SetPluginEnabled(FREE_IMAGE_FORMAT.FIF_PNG, true);
|
|
|
Assert.AreEqual(1, FreeImage.IsPluginEnabled(FREE_IMAGE_FORMAT.FIF_PNG));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFFromFormat()
|
|
|
{
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromFormat(""));
|
|
|
Assert.AreNotEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromFormat("TIFF"));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFFromMime()
|
|
|
{
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromMime(""));
|
|
|
Assert.AreNotEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromMime("image/jpeg"));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFormatFromFIF()
|
|
|
{
|
|
|
Assert.IsNotEmpty(FreeImage.GetFormatFromFIF(FREE_IMAGE_FORMAT.FIF_JNG));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFExtensionList()
|
|
|
{
|
|
|
Assert.IsNotEmpty(FreeImage.GetFIFExtensionList(FREE_IMAGE_FORMAT.FIF_PGM));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFDescription()
|
|
|
{
|
|
|
Assert.IsNotEmpty(FreeImage.GetFIFDescription(FREE_IMAGE_FORMAT.FIF_PBM));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFRegExpr()
|
|
|
{
|
|
|
Assert.IsNotEmpty(FreeImage.GetFIFRegExpr(FREE_IMAGE_FORMAT.FIF_JPEG));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFMimeType()
|
|
|
{
|
|
|
Assert.IsNotEmpty(FreeImage.GetFIFMimeType(FREE_IMAGE_FORMAT.FIF_ICO));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFIFFromFilename()
|
|
|
{
|
|
|
Assert.AreNotEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromFilename("test.bmp"));
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFIFFromFilename("test.000"));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FIFSupportsReading()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.FIFSupportsReading(FREE_IMAGE_FORMAT.FIF_TIFF));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FIFSupportsWriting()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.FIFSupportsWriting(FREE_IMAGE_FORMAT.FIF_GIF));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FIFSupportsExportBPP()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.FIFSupportsExportBPP(FREE_IMAGE_FORMAT.FIF_BMP, 32));
|
|
|
Assert.IsFalse(FreeImage.FIFSupportsExportBPP(FREE_IMAGE_FORMAT.FIF_GIF, 32));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FIFSupportsExportType()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.FIFSupportsExportType(FREE_IMAGE_FORMAT.FIF_BMP, FREE_IMAGE_TYPE.FIT_BITMAP));
|
|
|
Assert.IsFalse(FreeImage.FIFSupportsExportType(FREE_IMAGE_FORMAT.FIF_BMP, FREE_IMAGE_TYPE.FIT_COMPLEX));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FIFSupportsICCProfiles()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.FIFSupportsICCProfiles(FREE_IMAGE_FORMAT.FIF_JPEG));
|
|
|
Assert.IsFalse(FreeImage.FIFSupportsICCProfiles(FREE_IMAGE_FORMAT.FIF_BMP));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_MultiBitmap()
|
|
|
{
|
|
|
FIBITMAP temp;
|
|
|
FIMULTIBITMAP mdib = FreeImage.OpenMultiBitmap(
|
|
|
FREE_IMAGE_FORMAT.FIF_TIFF,
|
|
|
@"test.tif",
|
|
|
true,
|
|
|
false,
|
|
|
true,
|
|
|
FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.AreNotEqual(0, mdib);
|
|
|
Assert.AreEqual(0, FreeImage.GetPageCount(mdib));
|
|
|
dib = FreeImage.Allocate(10, 10, 8, 0, 0, 0);
|
|
|
FreeImage.AppendPage(mdib, dib);
|
|
|
Assert.AreEqual(1, FreeImage.GetPageCount(mdib));
|
|
|
FreeImage.AppendPage(mdib, dib);
|
|
|
Assert.AreEqual(2, FreeImage.GetPageCount(mdib));
|
|
|
FreeImage.AppendPage(mdib, dib);
|
|
|
Assert.AreEqual(3, FreeImage.GetPageCount(mdib));
|
|
|
FreeImage.CloseMultiBitmapEx(ref mdib);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
mdib.SetNull();
|
|
|
mdib = FreeImage.OpenMultiBitmap(FREE_IMAGE_FORMAT.FIF_TIFF, @"test.tif", false, false, true, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.AreNotEqual(0, mdib);
|
|
|
Assert.AreEqual(3, FreeImage.GetPageCount(mdib));
|
|
|
dib = FreeImage.LockPage(mdib, 1);
|
|
|
temp = FreeImage.LockPage(mdib, 2);
|
|
|
|
|
|
int[] pages = null;
|
|
|
int count = 0;
|
|
|
FreeImage.GetLockedPageNumbers(mdib, pages, ref count);
|
|
|
Assert.AreEqual(2, count);
|
|
|
pages = new int[count];
|
|
|
FreeImage.GetLockedPageNumbers(mdib, pages, ref count);
|
|
|
Assert.AreEqual(2, pages.Length);
|
|
|
FreeImage.UnlockPage(mdib, dib, false);
|
|
|
FreeImage.UnlockPage(mdib, temp, true);
|
|
|
dib.SetNull();
|
|
|
Assert.IsTrue(FreeImage.MovePage(mdib, 0, 1));
|
|
|
FreeImage.CloseMultiBitmapEx(ref mdib);
|
|
|
Assert.IsTrue(System.IO.File.Exists("test.tif"));
|
|
|
System.IO.File.Delete("test.tif");
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFileType()
|
|
|
{
|
|
|
Assert.AreNotEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFileType(iManager.GetBitmapPath(ImageType.Even, ImageColorType.Type_08_Greyscale_Unordered), 0));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFileTypeFromHandle()
|
|
|
{
|
|
|
FreeImageIO io = FreeImageStreamIO.io;
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFileTypeFromHandle(ref io, new fi_handle(), 0));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFileTypeFromMemory()
|
|
|
{
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_UNKNOWN, FreeImage.GetFileTypeFromMemory(new FIMEMORY(), 0));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_IsLittleEndian()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.IsLittleEndian());
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_LookupX11Color()
|
|
|
{
|
|
|
byte red, green, blue;
|
|
|
FreeImage.LookupX11Color("lawngreen", out red, out green, out blue);
|
|
|
Assert.AreEqual(124, red);
|
|
|
Assert.AreEqual(252, green);
|
|
|
Assert.AreEqual(0, blue);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_LookupSVGColor()
|
|
|
{
|
|
|
byte red, green, blue;
|
|
|
FreeImage.LookupX11Color("orchid", out red, out green, out blue);
|
|
|
Assert.AreEqual(218, red);
|
|
|
Assert.AreEqual(112, green);
|
|
|
Assert.AreEqual(214, blue);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetBits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_01_Threshold);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetBits(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetScanLine()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetScanLine(dib, 0));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPixelIndex_SetPixelIndex()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_04_Greyscale_Unordered);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
byte index_old, index_new;
|
|
|
Assert.IsTrue(FreeImage.GetPixelIndex(dib, 31, 10, out index_old));
|
|
|
index_new = index_old == byte.MaxValue ? (byte)0 : (byte)(index_old + 1);
|
|
|
Assert.IsTrue(FreeImage.SetPixelIndex(dib, 31, 10, ref index_new));
|
|
|
Assert.IsTrue(FreeImage.GetPixelIndex(dib, 31, 10, out index_old));
|
|
|
Assert.AreEqual(index_new, index_old);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPixelColor_SetPixelColor()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
RGBQUAD value_old, value_new;
|
|
|
Assert.IsTrue(FreeImage.GetPixelColor(dib, 77, 61, out value_old));
|
|
|
value_new = (value_old == (RGBQUAD)Color.White) ? Color.Black : Color.White;
|
|
|
Assert.IsTrue(FreeImage.SetPixelColor(dib, 77, 61, ref value_new));
|
|
|
Assert.IsTrue(FreeImage.GetPixelColor(dib, 77, 61, out value_old));
|
|
|
Assert.AreEqual(value_new, value_old);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Bitmap_information_functions()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_BITMAP, FreeImage.GetImageType(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetColorsUsed(dib));
|
|
|
Assert.AreEqual(8, FreeImage.GetBPP(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetWidth(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetHeight(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetLine(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetPitch(dib));
|
|
|
Assert.AreNotEqual(0, FreeImage.GetDIBSize(dib));
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetPalette(dib));
|
|
|
FreeImage.SetDotsPerMeterX(dib, 1234);
|
|
|
FreeImage.SetDotsPerMeterY(dib, 4321);
|
|
|
Assert.AreEqual(1234, FreeImage.GetDotsPerMeterX(dib));
|
|
|
Assert.AreEqual(4321, FreeImage.GetDotsPerMeterY(dib));
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetInfoHeader(dib));
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetInfo(dib));
|
|
|
Assert.AreEqual(FREE_IMAGE_COLOR_TYPE.FIC_MINISBLACK, FreeImage.GetColorType(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetRedMask(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetGreenMask(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetBlueMask(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetTransparencyCount(dib));
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.GetTransparencyTable(dib));
|
|
|
FreeImage.SetTransparent(dib, false);
|
|
|
FreeImage.SetTransparencyTable(dib, new byte[] { });
|
|
|
Assert.IsTrue(FreeImage.IsTransparent(dib));
|
|
|
Assert.IsFalse(FreeImage.HasBackgroundColor(dib));
|
|
|
RGBQUAD rgb = Color.Teal;
|
|
|
Assert.IsTrue(FreeImage.SetBackgroundColor(dib, ref rgb));
|
|
|
Assert.IsTrue(FreeImage.GetBackgroundColor(dib, out rgb));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetICCProfile()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
new FIICCPROFILE(dib, new byte[] { 0xFF, 0xAA, 0x00, 0x33 });
|
|
|
FIICCPROFILE p = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.AreEqual(4, p.Size);
|
|
|
Assert.AreEqual(0xAA, p.Data[1]);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CreateICCProfile()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
byte[] data = new byte[256];
|
|
|
Assert.AreNotEqual(IntPtr.Zero, FreeImage.CreateICCProfile(dib, data, 256));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_DestroyICCProfile()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FreeImage.DestroyICCProfile(dib);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo4Bits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo4Bits(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(4, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo8Bits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo8Bits(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(8, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertToGreyscale()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertToGreyscale(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(8, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo16Bits555()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo16Bits555(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(16, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo16Bits565()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo16Bits565(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(16, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo24Bits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo24Bits(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(24, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertTo32Bits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertTo32Bits(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(32, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ColorQuantize()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ColorQuantize(dib, FREE_IMAGE_QUANTIZE.FIQ_WUQUANT);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(8, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ColorQuantizeEx()
|
|
|
{
|
|
|
FIBITMAP paletteDib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08);
|
|
|
Assert.IsFalse(paletteDib.IsNull);
|
|
|
Palette palette = FreeImage.GetPaletteEx(paletteDib);
|
|
|
RGBQUAD[] table = palette.Data;
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.ColorQuantizeEx(dib, FREE_IMAGE_QUANTIZE.FIQ_WUQUANT, (int)palette.Length, (int)palette.Length, table);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(8, FreeImage.GetBPP(temp));
|
|
|
|
|
|
FreeImage.UnloadEx(ref paletteDib);
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Threshold()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.Threshold(dib, 128);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(1, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Dither()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.Dither(dib, FREE_IMAGE_DITHER.FID_FS);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(1, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_RawBits()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
IntPtr buffer = Marshal.AllocHGlobal((int)FreeImage.GetDIBSize(dib));
|
|
|
FreeImage.ConvertToRawBits(
|
|
|
buffer,
|
|
|
dib,
|
|
|
(int)FreeImage.GetPitch(dib),
|
|
|
FreeImage.GetBPP(dib),
|
|
|
FreeImage.GetRedMask(dib),
|
|
|
FreeImage.GetGreenMask(dib),
|
|
|
FreeImage.GetBlueMask(dib),
|
|
|
true);
|
|
|
FIBITMAP temp = FreeImage.ConvertFromRawBits(
|
|
|
buffer,
|
|
|
(int)FreeImage.GetWidth(dib),
|
|
|
(int)FreeImage.GetHeight(dib),
|
|
|
(int)FreeImage.GetPitch(dib),
|
|
|
FreeImage.GetBPP(dib),
|
|
|
FreeImage.GetRedMask(dib),
|
|
|
FreeImage.GetGreenMask(dib),
|
|
|
FreeImage.GetBlueMask(dib),
|
|
|
true);
|
|
|
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
Marshal.FreeHGlobal(buffer);
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertToRGBF()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertToRGBF(dib);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_RGBF, FreeImage.GetImageType(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertToStandardType()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertToStandardType(dib, true);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(FREE_IMAGE_COLOR_TYPE.FIC_PALETTE, FreeImage.GetColorType(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertToType()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_Unordered);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP temp = FreeImage.ConvertToType(dib, FREE_IMAGE_TYPE.FIT_UINT32, true);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_UINT32, FreeImage.GetImageType(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ToneMapping()
|
|
|
{
|
|
|
FIBITMAP temp;
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP rgbf = FreeImage.ConvertToRGBF(dib);
|
|
|
Assert.AreNotEqual(0, rgbf);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_RGBF, FreeImage.GetImageType(rgbf));
|
|
|
Assert.AreEqual(96, FreeImage.GetBPP(rgbf));
|
|
|
|
|
|
temp = FreeImage.ToneMapping(rgbf, FREE_IMAGE_TMO.FITMO_REINHARD05, 1f, 1.1f);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(24, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref rgbf);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_TmoDrago03()
|
|
|
{
|
|
|
FIBITMAP temp;
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP rgbf = FreeImage.ConvertToRGBF(dib);
|
|
|
Assert.AreNotEqual(0, rgbf);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_RGBF, FreeImage.GetImageType(rgbf));
|
|
|
Assert.AreEqual(96, FreeImage.GetBPP(rgbf));
|
|
|
|
|
|
temp = FreeImage.TmoDrago03(rgbf, 1f, 1.2f);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(24, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref rgbf);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_TmoReinhard05()
|
|
|
{
|
|
|
FIBITMAP temp;
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP rgbf = FreeImage.ConvertToRGBF(dib);
|
|
|
Assert.AreNotEqual(0, rgbf);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_RGBF, FreeImage.GetImageType(rgbf));
|
|
|
Assert.AreEqual(96, FreeImage.GetBPP(rgbf));
|
|
|
|
|
|
temp = FreeImage.TmoReinhard05(rgbf, 0f, 0.25f);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(24, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref rgbf);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_TmoFattal02()
|
|
|
{
|
|
|
FIBITMAP temp;
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP rgbf = FreeImage.ConvertToRGBF(dib);
|
|
|
Assert.AreNotEqual(0, rgbf);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_RGBF, FreeImage.GetImageType(rgbf));
|
|
|
Assert.AreEqual(96, FreeImage.GetBPP(rgbf));
|
|
|
|
|
|
temp = FreeImage.TmoFattal02(rgbf, 1f, 0.79f);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
Assert.AreEqual(24, FreeImage.GetBPP(temp));
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref rgbf);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ZLibCompress_ZLibUncompress()
|
|
|
{
|
|
|
Random rand = new Random(DateTime.Now.Millisecond);
|
|
|
byte[] source = new byte[10240];
|
|
|
byte[] compressed = new byte[(int)(10355f * 1.01 + 12f)];
|
|
|
byte[] uncompressed = new byte[10240];
|
|
|
rand.NextBytes(source);
|
|
|
Assert.AreNotEqual(0, FreeImage.ZLibCompress(compressed, (uint)compressed.Length, source, (uint)source.Length));
|
|
|
Assert.AreNotEqual(0, FreeImage.ZLibUncompress(uncompressed, (uint)source.Length, compressed, (uint)compressed.Length));
|
|
|
for (int i = 0; i < source.Length; i++)
|
|
|
if (source[i] != uncompressed[i])
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ZLibGZip_ZLibGUnzip()
|
|
|
{
|
|
|
Random rand = new Random(DateTime.Now.Millisecond);
|
|
|
byte[] source = new byte[10240];
|
|
|
byte[] compressed = new byte[(int)(10355f * 1.01 + 24f)];
|
|
|
byte[] uncompressed = new byte[10240];
|
|
|
rand.NextBytes(source);
|
|
|
Assert.AreNotEqual(0, FreeImage.ZLibGZip(compressed, (uint)compressed.Length, source, (uint)source.Length));
|
|
|
Assert.AreNotEqual(0, FreeImage.ZLibGUnzip(uncompressed, (uint)source.Length, compressed, (uint)compressed.Length));
|
|
|
for (int i = 0; i < source.Length; i++)
|
|
|
if (source[i] != uncompressed[i])
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ZLibCRC32()
|
|
|
{
|
|
|
byte[] buffer = new byte[0];
|
|
|
Assert.AreEqual(0xFEBCA008, FreeImage.ZLibCRC32(0xFEBCA008, buffer, 0));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CreateTag()
|
|
|
{
|
|
|
FITAG tag = FreeImage.CreateTag();
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
FITAG tag_clone = FreeImage.CloneTag(tag);
|
|
|
Assert.AreNotEqual(0, tag_clone);
|
|
|
FreeImage.DeleteTag(tag);
|
|
|
FreeImage.DeleteTag(tag_clone);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Tag_accessors()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.FindNextMetadata(mData, out tag));
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagKey()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagKey(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagDescription()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagDescription(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagID()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagID(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagType()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagType(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagCount()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagCount(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagLength()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagLength(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTagValue()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.GetTagValue(tag);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagKey()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagKey(tag, "");
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagDescription()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagDescription(tag, "");
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagID()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagID(tag, 44);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagType()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagType(tag, FREE_IMAGE_MDTYPE.FIDT_ASCII);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagCount()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagCount(tag, 3);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagLength()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
FreeImage.SetTagLength(tag, 6);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTagValue()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
int length = (int)FreeImage.GetTagLength(tag);
|
|
|
FREE_IMAGE_MDTYPE type = FreeImage.GetTagType(tag);
|
|
|
int count = (int)FreeImage.GetTagCount(tag);
|
|
|
|
|
|
byte[] buffer = new byte[length * count];
|
|
|
|
|
|
FreeImage.SetTagValue(tag, buffer);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetMetadataCount()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.AreNotEqual(0, FreeImage.GetMetadataCount(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_TagToString()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FITAG tag;
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, dib, out tag);
|
|
|
Assert.AreNotEqual(0, mData);
|
|
|
Assert.AreNotEqual(0, tag);
|
|
|
|
|
|
Assert.IsNotEmpty(FreeImage.TagToString(FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF, tag, 0));
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mData);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_RotateClassic()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.RotateClassic(dib, 45d);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_RotateEx()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.RotateEx(dib, 261d, 0d, 33d, 51d, 9d, true);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FlipHorizontal()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.FlipHorizontal(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FlipVertical()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.FlipVertical(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_JPEGTransform()
|
|
|
{
|
|
|
string filename = iManager.GetBitmapPath(ImageType.JPEG, ImageColorType.Type_24);
|
|
|
string filenameOut = filename + ".out.jpg";
|
|
|
Assert.IsTrue(File.Exists(filename));
|
|
|
|
|
|
Assert.IsTrue(FreeImage.JPEGTransform(filename, filenameOut, FREE_IMAGE_JPEG_OPERATION.FIJPEG_OP_FLIP_V, false));
|
|
|
Assert.IsTrue(File.Exists(filenameOut));
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, filenameOut, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
File.Delete(filenameOut);
|
|
|
Assert.IsFalse(File.Exists(filenameOut));
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Rescale()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_555);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Rescale(dib, 100, 100, FREE_IMAGE_FILTER.FILTER_BICUBIC);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_MakeThumbnail()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_555);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.MakeThumbnail(dib, 50, false);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AdjustCurve()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
byte[] lut = new byte[256];
|
|
|
Assert.IsTrue(FreeImage.AdjustCurve(dib, lut, FREE_IMAGE_COLOR_CHANNEL.FICC_GREEN));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AdjustGamma()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.AdjustGamma(dib, 1.3d));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AdjustBrightness()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.AdjustBrightness(dib, 1.3d));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AdjustContrast()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.AdjustContrast(dib, 1.3d));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Invert()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_555);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.Invert(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetHistogram()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
int[] histo = new int[256];
|
|
|
Assert.IsTrue(FreeImage.GetHistogram(dib, histo, FREE_IMAGE_COLOR_CHANNEL.FICC_RED));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetChannel()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.GetChannel(dib, FREE_IMAGE_COLOR_CHANNEL.FICC_GREEN);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetChannel()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FIBITMAP dib8 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.AreNotEqual(0, dib8);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), FreeImage.GetWidth(dib8));
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), FreeImage.GetHeight(dib8));
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SetChannel(dib, dib8, FREE_IMAGE_COLOR_CHANNEL.FICC_BLUE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib8);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetComplexChannel()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.ConvertToType(dib, FREE_IMAGE_TYPE.FIT_COMPLEX, true);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FIBITMAP temp2 = FreeImage.GetComplexChannel(temp, FREE_IMAGE_COLOR_CHANNEL.FICC_IMAG);
|
|
|
Assert.AreNotEqual(0, temp2);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref temp2);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetComplexChannel()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_Unordered);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.ConvertToType(dib, FREE_IMAGE_TYPE.FIT_COMPLEX, true);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FIBITMAP temp2 = FreeImage.GetComplexChannel(temp, FREE_IMAGE_COLOR_CHANNEL.FICC_IMAG);
|
|
|
Assert.AreNotEqual(0, temp2);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SetComplexChannel(temp, temp2, FREE_IMAGE_COLOR_CHANNEL.FICC_IMAG));
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref temp2);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Copy()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Copy(dib, 5, 9, 44, 2);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Paste()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Allocate(3, 3, 8, 0, 0, 0);
|
|
|
Assert.IsTrue(FreeImage.Paste(dib, temp, 31, 3, 256));
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Composite()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
RGBQUAD rgbq = new RGBQUAD();
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Composite(dib, false, ref rgbq, new FIBITMAP());
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_JPEGCrop()
|
|
|
{
|
|
|
string filename = iManager.GetBitmapPath(ImageType.JPEG, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsTrue(File.Exists(filename));
|
|
|
string filenameOut = filename + ".out.jpg";
|
|
|
|
|
|
Assert.IsTrue(FreeImage.JPEGCrop(filename, filenameOut, 3, 2, 1, 5));
|
|
|
Assert.IsTrue(File.Exists(filenameOut));
|
|
|
|
|
|
FIBITMAP temp = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, filenameOut, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
|
|
|
Assert.AreNotEqual(0, temp);
|
|
|
|
|
|
File.Delete(filenameOut);
|
|
|
Assert.IsFalse(File.Exists(filenameOut));
|
|
|
|
|
|
FreeImage.UnloadEx(ref temp);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_PreMultiplyWithAlpha()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.PreMultiplyWithAlpha(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_MultigridPoissonSolver()
|
|
|
{
|
|
|
dib = FreeImage.AllocateT(FREE_IMAGE_TYPE.FIT_FLOAT, 10, 10, 32, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
FIBITMAP dib2 = FreeImage.MultigridPoissonSolver(dib, 2);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetAdjustColorsLookupTable()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
byte[] lut = new byte[256];
|
|
|
FreeImage.GetAdjustColorsLookupTable(lut, 55d, 0d, 2.1d, false);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_AdjustColors()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.AdjustColors(dib, -4d, 22d, 1.1d, false));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void FreeImage_ApplyColorMapping()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
FreeImage_ApplyColorMapping2(dib);
|
|
|
}
|
|
|
|
|
|
private void FreeImage_ApplyColorMapping2(FIBITMAP dib)
|
|
|
{
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Scanline<RGBQUAD> rgbqa = new Scanline<RGBQUAD>(dib, 0);
|
|
|
|
|
|
RGBQUAD[] src = new RGBQUAD[1];
|
|
|
RGBQUAD[] dst = new RGBQUAD[1];
|
|
|
src[0] = rgbqa[0];
|
|
|
dst[0].Color = src[0].Color == Color.White ? Color.Thistle : Color.White;
|
|
|
|
|
|
uint count = FreeImage.ApplyColorMapping(dib, src, dst, 1, true, false); // Memory
|
|
|
Assert.That(count > 0);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SwapColors()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_08);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
RGBQUAD src = new RGBQUAD(Color.FromArgb(93, 119, 170));
|
|
|
RGBQUAD dst = new RGBQUAD(Color.FromArgb(90, 130, 148));
|
|
|
|
|
|
uint count = FreeImage.SwapColors(dib, ref src, ref dst, true);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ApplyPaletteIndexMapping()
|
|
|
{
|
|
|
// alle farbtiefen
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_04);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
byte[] src = { 0, 3, 1 };
|
|
|
byte[] dst = { 3, 1, 0 };
|
|
|
|
|
|
uint count = FreeImage.ApplyPaletteIndexMapping(dib, src, dst, 3, false);
|
|
|
Assert.That(count > 0);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SwapPaletteIndices()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_04);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
byte src = 0;
|
|
|
byte dst = 3;
|
|
|
|
|
|
uint count = FreeImage.SwapPaletteIndices(dib, ref src, ref dst);
|
|
|
Assert.That(count > 0);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetTransparentIndex()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
FreeImage.SetTransparentIndex(dib, 0);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetTransparentIndex()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
int i = FreeImage.GetTransparentIndex(dib);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[TestFixture]
|
|
|
public class ImportedStructsTest
|
|
|
{
|
|
|
ImageManager iManager = new ImageManager();
|
|
|
FIBITMAP dib = new FIBITMAP();
|
|
|
string freeImageCallback = null;
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
public void Init()
|
|
|
{
|
|
|
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[TestFixtureTearDown]
|
|
|
public void DeInit()
|
|
|
{
|
|
|
FreeImageEngine.Message -= new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[SetUp]
|
|
|
public void InitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[TearDown]
|
|
|
public void DeInitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
|
|
{
|
|
|
freeImageCallback = message;
|
|
|
}
|
|
|
|
|
|
public bool EqualColors(Color color1, Color color2)
|
|
|
{
|
|
|
if (color1.A != color2.A) return false;
|
|
|
if (color1.R != color2.R) return false;
|
|
|
if (color1.G != color2.G) return false;
|
|
|
if (color1.B != color2.B) return false;
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void RGBQUAD()
|
|
|
{
|
|
|
RGBQUAD rgbq = new RGBQUAD();
|
|
|
Assert.AreEqual(0, rgbq.rgbBlue);
|
|
|
Assert.AreEqual(0, rgbq.rgbGreen);
|
|
|
Assert.AreEqual(0, rgbq.rgbRed);
|
|
|
Assert.AreEqual(0, rgbq.rgbReserved);
|
|
|
|
|
|
rgbq = new RGBQUAD(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgbq.Color));
|
|
|
|
|
|
rgbq = new RGBQUAD(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173, rgbq.rgbBlue);
|
|
|
Assert.AreEqual(95, rgbq.rgbGreen);
|
|
|
Assert.AreEqual(83, rgbq.rgbRed);
|
|
|
Assert.AreEqual(133, rgbq.rgbReserved);
|
|
|
|
|
|
rgbq.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgbq.Color));
|
|
|
|
|
|
rgbq.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgbq.Color));
|
|
|
|
|
|
rgbq.Color = Color.White;
|
|
|
Assert.AreEqual(255, rgbq.rgbBlue);
|
|
|
Assert.AreEqual(255, rgbq.rgbGreen);
|
|
|
Assert.AreEqual(255, rgbq.rgbRed);
|
|
|
Assert.AreEqual(255, rgbq.rgbReserved);
|
|
|
|
|
|
rgbq.Color = Color.Black;
|
|
|
Assert.AreEqual(0, rgbq.rgbBlue);
|
|
|
Assert.AreEqual(0, rgbq.rgbGreen);
|
|
|
Assert.AreEqual(0, rgbq.rgbRed);
|
|
|
Assert.AreEqual(255, rgbq.rgbReserved);
|
|
|
|
|
|
rgbq = Color.DarkGoldenrod;
|
|
|
Color color = rgbq;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void RGBTRIPLE()
|
|
|
{
|
|
|
RGBTRIPLE rgbt = new RGBTRIPLE();
|
|
|
Assert.AreEqual(0, rgbt.rgbtBlue);
|
|
|
Assert.AreEqual(0, rgbt.rgbtGreen);
|
|
|
Assert.AreEqual(0, rgbt.rgbtRed);
|
|
|
|
|
|
rgbt = new RGBTRIPLE(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgbt.Color));
|
|
|
|
|
|
rgbt = new RGBTRIPLE(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173, rgbt.rgbtBlue);
|
|
|
Assert.AreEqual(95, rgbt.rgbtGreen);
|
|
|
Assert.AreEqual(83, rgbt.rgbtRed);
|
|
|
|
|
|
rgbt.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgbt.Color));
|
|
|
|
|
|
rgbt.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgbt.Color));
|
|
|
|
|
|
rgbt.Color = Color.White;
|
|
|
Assert.AreEqual(255, rgbt.rgbtBlue);
|
|
|
Assert.AreEqual(255, rgbt.rgbtGreen);
|
|
|
Assert.AreEqual(255, rgbt.rgbtRed);
|
|
|
|
|
|
rgbt.Color = Color.Black;
|
|
|
Assert.AreEqual(0, rgbt.rgbtBlue);
|
|
|
Assert.AreEqual(0, rgbt.rgbtGreen);
|
|
|
Assert.AreEqual(0, rgbt.rgbtRed);
|
|
|
|
|
|
rgbt = Color.DarkGoldenrod;
|
|
|
Color color = rgbt;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIRGB16()
|
|
|
{
|
|
|
FIRGB16 rgb = new FIRGB16();
|
|
|
Assert.AreEqual(0 * 256, rgb.blue);
|
|
|
Assert.AreEqual(0 * 256, rgb.green);
|
|
|
Assert.AreEqual(0 * 256, rgb.red);
|
|
|
|
|
|
rgb = new FIRGB16(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgb.Color));
|
|
|
|
|
|
rgb = new FIRGB16(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173 * 256, rgb.blue);
|
|
|
Assert.AreEqual(95 * 256, rgb.green);
|
|
|
Assert.AreEqual(83 * 256, rgb.red);
|
|
|
|
|
|
rgb.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.White;
|
|
|
Assert.AreEqual(255 * 256, rgb.blue);
|
|
|
Assert.AreEqual(255 * 256, rgb.green);
|
|
|
Assert.AreEqual(255 * 256, rgb.red);
|
|
|
|
|
|
rgb.Color = Color.Black;
|
|
|
Assert.AreEqual(0 * 256, rgb.blue);
|
|
|
Assert.AreEqual(0 * 256, rgb.green);
|
|
|
Assert.AreEqual(0 * 256, rgb.red);
|
|
|
|
|
|
rgb = Color.DarkGoldenrod;
|
|
|
Color color = rgb;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIRGBA16()
|
|
|
{
|
|
|
FIRGBA16 rgb = new FIRGBA16();
|
|
|
Assert.AreEqual(0 * 256, rgb.blue);
|
|
|
Assert.AreEqual(0 * 256, rgb.green);
|
|
|
Assert.AreEqual(0 * 256, rgb.red);
|
|
|
Assert.AreEqual(0 * 256, rgb.alpha);
|
|
|
|
|
|
rgb = new FIRGBA16(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgb.Color));
|
|
|
|
|
|
rgb = new FIRGBA16(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173 * 256, rgb.blue);
|
|
|
Assert.AreEqual(95 * 256, rgb.green);
|
|
|
Assert.AreEqual(83 * 256, rgb.red);
|
|
|
Assert.AreEqual(133 * 256, rgb.alpha);
|
|
|
|
|
|
rgb.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.White;
|
|
|
Assert.AreEqual(255 * 256, rgb.blue);
|
|
|
Assert.AreEqual(255 * 256, rgb.green);
|
|
|
Assert.AreEqual(255 * 256, rgb.red);
|
|
|
Assert.AreEqual(255 * 256, rgb.alpha);
|
|
|
|
|
|
rgb.Color = Color.Black;
|
|
|
Assert.AreEqual(0 * 256, rgb.blue);
|
|
|
Assert.AreEqual(0 * 256, rgb.green);
|
|
|
Assert.AreEqual(0 * 256, rgb.red);
|
|
|
Assert.AreEqual(255 * 256, rgb.alpha);
|
|
|
|
|
|
rgb = Color.DarkGoldenrod;
|
|
|
Color color = rgb;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIRGBF()
|
|
|
{
|
|
|
FIRGBF rgb = new FIRGBF();
|
|
|
Assert.AreEqual(0 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(0 / 255f, rgb.green);
|
|
|
Assert.AreEqual(0 / 255f, rgb.red);
|
|
|
|
|
|
rgb = new FIRGBF(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgb.Color));
|
|
|
|
|
|
rgb = new FIRGBF(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(95 / 255f, rgb.green);
|
|
|
Assert.AreEqual(83 / 255f, rgb.red);
|
|
|
|
|
|
rgb.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.White;
|
|
|
Assert.AreEqual(255 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(255 / 255f, rgb.green);
|
|
|
Assert.AreEqual(255 / 255f, rgb.red);
|
|
|
|
|
|
rgb.Color = Color.Black;
|
|
|
Assert.AreEqual(0 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(0 / 255f, rgb.green);
|
|
|
Assert.AreEqual(0 / 255f, rgb.red);
|
|
|
|
|
|
rgb = Color.DarkGoldenrod;
|
|
|
Color color = rgb;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIRGBAF()
|
|
|
{
|
|
|
FIRGBAF rgb = new FIRGBAF();
|
|
|
Assert.AreEqual(0 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(0 / 255f, rgb.green);
|
|
|
Assert.AreEqual(0 / 255f, rgb.red);
|
|
|
Assert.AreEqual(0 / 255f, rgb.alpha);
|
|
|
|
|
|
rgb = new FIRGBAF(Color.Chartreuse);
|
|
|
Assert.That(EqualColors(Color.Chartreuse, rgb.Color));
|
|
|
|
|
|
rgb = new FIRGBAF(Color.FromArgb(133, 83, 95, 173));
|
|
|
Assert.AreEqual(173 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(95 / 255f, rgb.green);
|
|
|
Assert.AreEqual(83 / 255f, rgb.red);
|
|
|
Assert.AreEqual(133 / 255f, rgb.alpha);
|
|
|
|
|
|
rgb.Color = Color.Crimson;
|
|
|
Assert.That(EqualColors(Color.Crimson, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.MidnightBlue;
|
|
|
Assert.That(EqualColors(Color.MidnightBlue, rgb.Color));
|
|
|
|
|
|
rgb.Color = Color.White;
|
|
|
Assert.AreEqual(255 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(255 / 255f, rgb.green);
|
|
|
Assert.AreEqual(255 / 255f, rgb.red);
|
|
|
Assert.AreEqual(255 / 255f, rgb.alpha);
|
|
|
|
|
|
rgb.Color = Color.Black;
|
|
|
Assert.AreEqual(0 / 255f, rgb.blue);
|
|
|
Assert.AreEqual(0 / 255f, rgb.green);
|
|
|
Assert.AreEqual(0 / 255f, rgb.red);
|
|
|
Assert.AreEqual(255 / 255f, rgb.alpha);
|
|
|
|
|
|
rgb = Color.DarkGoldenrod;
|
|
|
Color color = rgb;
|
|
|
Assert.That(EqualColors(Color.DarkGoldenrod, color));
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void FICOMPLEX()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIBITMAP()
|
|
|
{
|
|
|
FIBITMAP var = new FIBITMAP();
|
|
|
Assert.IsTrue(var.IsNull);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void fi_handle()
|
|
|
{
|
|
|
fi_handle var = new fi_handle();
|
|
|
Assert.IsTrue(var.IsNull);
|
|
|
|
|
|
string test = "hello word!";
|
|
|
using (var = new fi_handle(test))
|
|
|
{
|
|
|
Assert.IsFalse(var.IsNull);
|
|
|
|
|
|
object obj = var.GetObject();
|
|
|
Assert.That(obj is string);
|
|
|
Assert.AreSame(obj, test);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIICCPROFILE()
|
|
|
{
|
|
|
Random rand = new Random(DateTime.Now.Millisecond);
|
|
|
FIICCPROFILE var = new FIICCPROFILE();
|
|
|
Assert.AreEqual(0, var.Data.Length);
|
|
|
Assert.AreEqual(IntPtr.Zero, var.DataPointer);
|
|
|
Assert.AreEqual(0, var.Size);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
byte[] data = new byte[512];
|
|
|
rand.NextBytes(data);
|
|
|
|
|
|
var = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.AreEqual(0, var.Size);
|
|
|
|
|
|
var = new FIICCPROFILE(dib, data, 256);
|
|
|
Assert.AreEqual(256, var.Data.Length);
|
|
|
Assert.AreNotEqual(IntPtr.Zero, var.DataPointer);
|
|
|
Assert.AreEqual(256, var.Size);
|
|
|
byte[] dataComp = var.Data;
|
|
|
for (int i = 0; i < data.Length && i < dataComp.Length; i++)
|
|
|
if (data[i] != dataComp[i])
|
|
|
Assert.Fail();
|
|
|
|
|
|
FreeImage.DestroyICCProfile(dib);
|
|
|
var = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.AreEqual(0, var.Size);
|
|
|
|
|
|
var = new FIICCPROFILE(dib, data);
|
|
|
Assert.AreEqual(512, var.Data.Length);
|
|
|
Assert.AreNotEqual(IntPtr.Zero, var.DataPointer);
|
|
|
Assert.AreEqual(512, var.Size);
|
|
|
dataComp = var.Data;
|
|
|
for (int i = 0; i < data.Length && i < dataComp.Length; i++)
|
|
|
if (data[i] != dataComp[i])
|
|
|
Assert.Fail();
|
|
|
|
|
|
var = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.AreEqual(512, var.Data.Length);
|
|
|
Assert.AreNotEqual(IntPtr.Zero, var.DataPointer);
|
|
|
Assert.AreEqual(512, var.Size);
|
|
|
|
|
|
FreeImage.DestroyICCProfile(dib);
|
|
|
var = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.AreEqual(0, var.Size);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[TestFixture]
|
|
|
public class WrapperStructsTest
|
|
|
{
|
|
|
ImageManager iManager = new ImageManager();
|
|
|
FIBITMAP dib = new FIBITMAP();
|
|
|
string freeImageCallback = null;
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
public void Init()
|
|
|
{
|
|
|
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[TestFixtureTearDown]
|
|
|
public void DeInit()
|
|
|
{
|
|
|
FreeImageEngine.Message -= new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[SetUp]
|
|
|
public void InitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[TearDown]
|
|
|
public void DeInitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
|
|
{
|
|
|
freeImageCallback = message;
|
|
|
}
|
|
|
|
|
|
public bool EqualColors(Color color1, Color color2)
|
|
|
{
|
|
|
if (color1.A != color2.A) return false;
|
|
|
if (color1.R != color2.R) return false;
|
|
|
if (color1.G != color2.G) return false;
|
|
|
if (color1.B != color2.B) return false;
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FIRational()
|
|
|
{
|
|
|
FIRational rational1 = new FIRational();
|
|
|
FIRational rational2 = new FIRational();
|
|
|
FIRational rational3 = new FIRational();
|
|
|
|
|
|
//
|
|
|
// Constructors
|
|
|
//
|
|
|
|
|
|
Assert.That(rational1.Numerator == 0);
|
|
|
Assert.That(rational1.Denominator == 0);
|
|
|
|
|
|
rational1 = new FIRational(412, 33);
|
|
|
Assert.That(rational1.Numerator == 412);
|
|
|
Assert.That(rational1.Denominator == 33);
|
|
|
|
|
|
rational2 = new FIRational(rational1);
|
|
|
Assert.That(rational2.Numerator == 412);
|
|
|
Assert.That(rational2.Denominator == 33);
|
|
|
|
|
|
rational3 = new FIRational(5.75m);
|
|
|
Assert.That(rational3.Numerator == 23);
|
|
|
Assert.That(rational3.Denominator == 4);
|
|
|
|
|
|
//
|
|
|
// == !=
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(421, 51);
|
|
|
rational2 = rational1;
|
|
|
Assert.That(rational1 == rational2);
|
|
|
Assert.That(!(rational1 != rational2));
|
|
|
|
|
|
rational2 = new FIRational(1, 7);
|
|
|
Assert.That(rational1 != rational2);
|
|
|
Assert.That(!(rational1 == rational2));
|
|
|
|
|
|
//
|
|
|
// > >= < <=
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(51, 4);
|
|
|
rational2 = new FIRational(27, 9);
|
|
|
Assert.That(rational1 != rational2);
|
|
|
Assert.That(rational1 > rational2);
|
|
|
Assert.That(rational1 >= rational2);
|
|
|
|
|
|
rational1 = new FIRational(-412, 4);
|
|
|
Assert.That(rational1 != rational2);
|
|
|
Assert.That(rational1 < rational2);
|
|
|
Assert.That(rational1 <= rational2);
|
|
|
|
|
|
//
|
|
|
// + / -
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(41, 3);
|
|
|
rational2 = new FIRational(612, 412);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(-7852, 63);
|
|
|
rational2 = new FIRational(666111, -7654);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(-513, 88);
|
|
|
rational2 = new FIRational(413, 5);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(-513, 88);
|
|
|
rational2 = new FIRational(413, 5);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(7531, 23144);
|
|
|
rational2 = new FIRational(-412, 78777);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(513, -42123);
|
|
|
rational2 = new FIRational(-42, 77);
|
|
|
rational3 = rational1 - rational2;
|
|
|
Assert.That((rational3 + rational2) == rational1);
|
|
|
|
|
|
rational1 = new FIRational(44, 11);
|
|
|
rational1 = -rational1;
|
|
|
Assert.That(rational1.Numerator == -4 && rational1.Denominator == 1);
|
|
|
|
|
|
//
|
|
|
// %
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(23, 8);
|
|
|
rational2 = new FIRational(77, 777);
|
|
|
Assert.That((rational1 % rational2) == 0);
|
|
|
|
|
|
rational2 = -rational2;
|
|
|
Assert.That((rational1 % rational2) == 0);
|
|
|
|
|
|
rational2 = new FIRational(7, 4);
|
|
|
rational3 = new FIRational(9, 8);
|
|
|
Assert.That((rational1 % rational2) == rational3);
|
|
|
|
|
|
rational2 = -rational2;
|
|
|
Assert.That((rational1 % rational2) == rational3);
|
|
|
|
|
|
//
|
|
|
// ~
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(41, 77);
|
|
|
rational1 = ~rational1;
|
|
|
Assert.That(rational1.Numerator == 77 && rational1.Denominator == 41);
|
|
|
|
|
|
//
|
|
|
// -
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(52, 4);
|
|
|
rational1 = -rational1;
|
|
|
Assert.That(rational1 < 0);
|
|
|
|
|
|
//
|
|
|
// ++ --
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(5, 3);
|
|
|
rational1++;
|
|
|
rational2 = new FIRational(8, 3);
|
|
|
Assert.That(rational1 == rational2);
|
|
|
|
|
|
rational1 = new FIRational(41, -43);
|
|
|
rational1++;
|
|
|
Assert.That(rational1 > 0.0f);
|
|
|
|
|
|
rational1--;
|
|
|
Assert.That(rational1 == new FIRational(41, -43));
|
|
|
|
|
|
rational1 = new FIRational(8134, 312);
|
|
|
Assert.That(rational1 != 26);
|
|
|
|
|
|
//
|
|
|
// Direct assigns
|
|
|
//
|
|
|
|
|
|
rational1 = (FIRational)0.75m;
|
|
|
Assert.That(rational1.Numerator == 3 && rational1.Denominator == 4);
|
|
|
rational1 = (FIRational)0.33;
|
|
|
Assert.That(rational1.Numerator == 33 && rational1.Denominator == 100);
|
|
|
rational1 = (FIRational)62.975m;
|
|
|
Assert.That(((decimal)rational1.Numerator / (decimal)rational1.Denominator) == 62.975m);
|
|
|
rational1 = (FIRational)(-73.0975m);
|
|
|
Assert.That(((decimal)rational1.Numerator / (decimal)rational1.Denominator) == -73.0975m);
|
|
|
rational1 = (FIRational)(7m / 9m);
|
|
|
Assert.That(rational1.Numerator == 7 && rational1.Denominator == 9);
|
|
|
rational1 = (FIRational)(-15m / 9m);
|
|
|
Assert.That(rational1.Numerator == -5 && rational1.Denominator == 3);
|
|
|
rational1 = (FIRational)(0.7777m);
|
|
|
Assert.That(rational1.Denominator != 9);
|
|
|
|
|
|
//
|
|
|
// Properties
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(515, 5);
|
|
|
Assert.That(rational1.IsInteger);
|
|
|
|
|
|
rational1 = new FIRational(876, 77);
|
|
|
Assert.That(rational1.Truncate() == (876 / 77));
|
|
|
|
|
|
//
|
|
|
// Special cases
|
|
|
//
|
|
|
|
|
|
rational1 = new FIRational(0, 10000);
|
|
|
Assert.That(rational1 == 0m);
|
|
|
|
|
|
rational1 = new FIRational(10000, 0);
|
|
|
Assert.That(rational1 == 0f);
|
|
|
|
|
|
rational1 = new FIRational(0, 0);
|
|
|
Assert.That(rational1 == 0d);
|
|
|
|
|
|
rational1 = new FIRational(-1, 0);
|
|
|
Assert.That(rational1 == 0);
|
|
|
|
|
|
rational1 = new FIRational(0, -1);
|
|
|
Assert.That(rational1 == 0);
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void StreamWrapper()
|
|
|
{
|
|
|
string url = @"http://freeimage.sourceforge.net/images/logo.jpg";
|
|
|
|
|
|
//
|
|
|
// Non blocking
|
|
|
//
|
|
|
|
|
|
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
|
|
|
Assert.IsNotNull(req);
|
|
|
|
|
|
req.Timeout = 1000;
|
|
|
HttpWebResponse resp;
|
|
|
try
|
|
|
{
|
|
|
resp = (HttpWebResponse)req.GetResponse();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
Assert.IsNotNull(resp);
|
|
|
|
|
|
Stream stream = resp.GetResponseStream();
|
|
|
Assert.IsNotNull(stream);
|
|
|
|
|
|
StreamWrapper wrapper = new StreamWrapper(stream, false);
|
|
|
Assert.IsNotNull(wrapper);
|
|
|
Assert.IsTrue(wrapper.CanRead && wrapper.CanSeek && !wrapper.CanWrite);
|
|
|
|
|
|
byte[] buffer = new byte[1024 * 100];
|
|
|
int read;
|
|
|
int count = 0;
|
|
|
|
|
|
do
|
|
|
{
|
|
|
read = wrapper.Read(buffer, count, buffer.Length - count);
|
|
|
count += read;
|
|
|
} while (read != 0);
|
|
|
|
|
|
Assert.AreEqual(7972, count);
|
|
|
Assert.AreEqual(7972, wrapper.Length);
|
|
|
|
|
|
wrapper.Position = 0;
|
|
|
Assert.AreEqual(0, wrapper.Position);
|
|
|
|
|
|
byte[] test = new byte[buffer.Length];
|
|
|
int countTest = 0;
|
|
|
|
|
|
do
|
|
|
{
|
|
|
read = wrapper.Read(test, countTest, test.Length - countTest);
|
|
|
countTest += read;
|
|
|
} while (read != 0);
|
|
|
|
|
|
Assert.AreEqual(count, countTest);
|
|
|
|
|
|
for (int i = 0; i < countTest; i++)
|
|
|
if (buffer[i] != test[i])
|
|
|
Assert.Fail();
|
|
|
|
|
|
resp.Close();
|
|
|
wrapper.Dispose();
|
|
|
stream.Dispose();
|
|
|
|
|
|
//
|
|
|
// Blocking
|
|
|
//
|
|
|
|
|
|
req = (HttpWebRequest)HttpWebRequest.Create(url);
|
|
|
Assert.IsNotNull(req);
|
|
|
|
|
|
resp = (HttpWebResponse)req.GetResponse();
|
|
|
Assert.IsNotNull(resp);
|
|
|
|
|
|
stream = resp.GetResponseStream();
|
|
|
Assert.IsNotNull(stream);
|
|
|
|
|
|
wrapper = new StreamWrapper(stream, true);
|
|
|
Assert.IsNotNull(wrapper);
|
|
|
Assert.IsTrue(wrapper.CanRead && wrapper.CanSeek && !wrapper.CanWrite);
|
|
|
|
|
|
buffer = new byte[1024 * 100];
|
|
|
count = 0;
|
|
|
|
|
|
count = wrapper.Read(buffer, 0, buffer.Length);
|
|
|
Assert.AreEqual(7972, count);
|
|
|
|
|
|
resp.Close();
|
|
|
stream.Dispose();
|
|
|
wrapper.Dispose();
|
|
|
|
|
|
//
|
|
|
// Position & Read byte
|
|
|
//
|
|
|
|
|
|
buffer = new byte[] { 0x00, 0x01, 0x02, 0xFF, 0xFE, 0xFD };
|
|
|
stream = new MemoryStream(buffer);
|
|
|
wrapper = new StreamWrapper(stream, false);
|
|
|
|
|
|
Assert.That(0x00 == wrapper.ReadByte());
|
|
|
Assert.That(0x01 == wrapper.ReadByte());
|
|
|
Assert.That(0x02 == wrapper.ReadByte());
|
|
|
Assert.That(0xFF == wrapper.ReadByte());
|
|
|
Assert.That(0xFE == wrapper.ReadByte());
|
|
|
Assert.That(0xFD == wrapper.ReadByte());
|
|
|
Assert.That(-1 == wrapper.ReadByte());
|
|
|
|
|
|
Assert.That(wrapper.Length == buffer.Length);
|
|
|
|
|
|
wrapper.Seek(0, SeekOrigin.Begin);
|
|
|
Assert.That(0x00 == wrapper.ReadByte());
|
|
|
wrapper.Seek(3, SeekOrigin.Begin);
|
|
|
Assert.That(0xFF == wrapper.ReadByte());
|
|
|
wrapper.Seek(0, SeekOrigin.End);
|
|
|
Assert.That(-1 == wrapper.ReadByte());
|
|
|
wrapper.Seek(-2, SeekOrigin.End);
|
|
|
Assert.That(0xFE == wrapper.ReadByte());
|
|
|
wrapper.Seek(0, SeekOrigin.Begin);
|
|
|
Assert.That(0x00 == wrapper.ReadByte());
|
|
|
wrapper.Seek(2, SeekOrigin.Current);
|
|
|
Assert.That(0xFF == wrapper.ReadByte());
|
|
|
wrapper.Seek(1, SeekOrigin.Current);
|
|
|
Assert.That(0xFD == wrapper.ReadByte());
|
|
|
Assert.That(wrapper.Position != 0);
|
|
|
wrapper.Reset();
|
|
|
Assert.That(wrapper.Position == 0);
|
|
|
|
|
|
wrapper.Dispose();
|
|
|
stream.Position = 0;
|
|
|
wrapper = new StreamWrapper(stream, false);
|
|
|
|
|
|
wrapper.Seek(10, SeekOrigin.Begin);
|
|
|
Assert.That(wrapper.Position == buffer.Length);
|
|
|
|
|
|
wrapper.Dispose();
|
|
|
stream.Dispose();
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void LocalPlugin()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImageStreamIO()
|
|
|
{
|
|
|
Random rand = new Random();
|
|
|
byte[] bBuffer = new byte[256];
|
|
|
IntPtr buffer = Marshal.AllocHGlobal(256);
|
|
|
|
|
|
MemoryStream stream = new MemoryStream();
|
|
|
Assert.IsNotNull(stream);
|
|
|
using (fi_handle handle = new fi_handle(stream))
|
|
|
{
|
|
|
|
|
|
FreeImageIO io = FreeImageAPI.IO.FreeImageStreamIO.io;
|
|
|
Assert.IsNotNull(io.readProc);
|
|
|
Assert.IsNotNull(io.writeProc);
|
|
|
Assert.IsNotNull(io.seekProc);
|
|
|
Assert.IsNotNull(io.tellProc);
|
|
|
|
|
|
//
|
|
|
// Procs
|
|
|
//
|
|
|
|
|
|
rand.NextBytes(bBuffer);
|
|
|
|
|
|
stream.Write(bBuffer, 0, bBuffer.Length);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.Begin) == 0);
|
|
|
Assert.That(io.tellProc(handle) == 0);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
|
|
|
// Read one block
|
|
|
Assert.That(io.readProc(buffer, (uint)bBuffer.Length, 1, handle) == 1);
|
|
|
for (int i = 0; i < bBuffer.Length; i++)
|
|
|
Assert.That(Marshal.ReadByte(buffer, i) == bBuffer[i]);
|
|
|
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.Begin) == 0);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
|
|
|
// Read 1 byte block
|
|
|
Assert.That(io.readProc(buffer, 1, (uint)bBuffer.Length, handle) == bBuffer.Length);
|
|
|
for (int i = 0; i < bBuffer.Length; i++)
|
|
|
Assert.That(Marshal.ReadByte(buffer, i) == bBuffer[i]);
|
|
|
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.Begin) == 0);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
|
|
|
rand.NextBytes(bBuffer);
|
|
|
for (int i = 0; i < bBuffer.Length; i++)
|
|
|
Marshal.WriteByte(buffer, i, bBuffer[i]);
|
|
|
|
|
|
// Write one block
|
|
|
|
|
|
Assert.That(io.writeProc(buffer, (uint)bBuffer.Length, 1, handle) == 1);
|
|
|
for (int i = 0; i < bBuffer.Length; i++)
|
|
|
Assert.That(Marshal.ReadByte(buffer, i) == bBuffer[i]);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.Begin) == 0);
|
|
|
Assert.That(io.tellProc(handle) == 0);
|
|
|
|
|
|
// write 1 byte block
|
|
|
|
|
|
Assert.That(io.writeProc(buffer, 1, (uint)bBuffer.Length, handle) == bBuffer.Length);
|
|
|
for (int i = 0; i < bBuffer.Length; i++)
|
|
|
Assert.That(Marshal.ReadByte(buffer, i) == bBuffer[i]);
|
|
|
Assert.That(io.tellProc(handle) == stream.Position);
|
|
|
|
|
|
// Seek and tell
|
|
|
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.Begin) == 0);
|
|
|
Assert.That(io.tellProc(handle) == 0);
|
|
|
|
|
|
Assert.That(io.seekProc(handle, 127, SeekOrigin.Current) == 0);
|
|
|
Assert.That(io.tellProc(handle) == 127);
|
|
|
|
|
|
Assert.That(io.seekProc(handle, 0, SeekOrigin.End) == 0);
|
|
|
Assert.That(io.tellProc(handle) == 256);
|
|
|
|
|
|
Marshal.FreeHGlobal(buffer);
|
|
|
stream.Dispose();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void MetadataTag()
|
|
|
{
|
|
|
FITAG tag;
|
|
|
MetadataTag metaTag;
|
|
|
|
|
|
Random rand = new Random();
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.That(FreeImage.GetMetadataCount(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib) > 0);
|
|
|
|
|
|
FIMETADATA mData = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib, out tag);
|
|
|
Assert.IsFalse(tag.IsNull);
|
|
|
Assert.IsFalse(mData.IsNull);
|
|
|
|
|
|
//
|
|
|
// Constructors
|
|
|
//
|
|
|
|
|
|
metaTag = new MetadataTag(tag, dib);
|
|
|
Assert.That(metaTag.Model == FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN);
|
|
|
|
|
|
metaTag = new MetadataTag(tag, FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN);
|
|
|
Assert.That(metaTag.Model == FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN);
|
|
|
|
|
|
//
|
|
|
// Properties
|
|
|
//
|
|
|
|
|
|
metaTag.ID = ushort.MinValue;
|
|
|
Assert.That(metaTag.ID == ushort.MinValue);
|
|
|
|
|
|
metaTag.ID = ushort.MaxValue;
|
|
|
Assert.That(metaTag.ID == ushort.MaxValue);
|
|
|
|
|
|
metaTag.ID = ushort.MaxValue / 2;
|
|
|
Assert.That(metaTag.ID == ushort.MaxValue / 2);
|
|
|
|
|
|
metaTag.Description = "";
|
|
|
Assert.That(metaTag.Description == "");
|
|
|
|
|
|
metaTag.Description = "A";
|
|
|
Assert.That(metaTag.Description == "A");
|
|
|
|
|
|
metaTag.Description = "ABCDEFG";
|
|
|
Assert.That(metaTag.Description == "ABCDEFG");
|
|
|
|
|
|
metaTag.Key = "";
|
|
|
Assert.That(metaTag.Key == "");
|
|
|
|
|
|
metaTag.Key = "A";
|
|
|
Assert.That(metaTag.Key == "A");
|
|
|
|
|
|
metaTag.Key = "ABCDEFG";
|
|
|
Assert.That(metaTag.Key == "ABCDEFG");
|
|
|
|
|
|
//
|
|
|
// SetValue
|
|
|
//
|
|
|
|
|
|
try
|
|
|
{
|
|
|
metaTag.SetValue(null, FREE_IMAGE_MDTYPE.FIDT_ASCII);
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_ASCII
|
|
|
//
|
|
|
|
|
|
string testString = "";
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testString, FREE_IMAGE_MDTYPE.FIDT_ASCII));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((string)metaTag.Value).Length == 0);
|
|
|
|
|
|
testString = "X";
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testString, FREE_IMAGE_MDTYPE.FIDT_ASCII));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((string)metaTag.Value).Length == testString.Length);
|
|
|
Assert.That(((string)metaTag.Value) == testString);
|
|
|
|
|
|
testString = "TEST-STRING";
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testString, FREE_IMAGE_MDTYPE.FIDT_ASCII));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((string)metaTag.Value).Length == testString.Length);
|
|
|
Assert.That(((string)metaTag.Value) == testString);
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_BYTE
|
|
|
//
|
|
|
|
|
|
byte testByte;
|
|
|
byte[] testByteArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(byte.MinValue, FREE_IMAGE_MDTYPE.FIDT_BYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == byte.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(byte.MaxValue, FREE_IMAGE_MDTYPE.FIDT_BYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == byte.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testByte = (byte)rand.Next(byte.MinValue, byte.MaxValue);
|
|
|
testByteArray = new byte[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testByteArray.Length; j++)
|
|
|
testByteArray[j] = (byte)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testByte, FREE_IMAGE_MDTYPE.FIDT_BYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 1);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_BYTE);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == testByte);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testByteArray, FREE_IMAGE_MDTYPE.FIDT_BYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == testByteArray.Length);
|
|
|
Assert.That(metaTag.Count == testByteArray.Length);
|
|
|
Assert.That(metaTag.Length == testByteArray.Length * 1);
|
|
|
|
|
|
byte[] value = (byte[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testByteArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_DOUBLE
|
|
|
//
|
|
|
|
|
|
double testDouble;
|
|
|
double[] testDoubleArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(double.MinValue, FREE_IMAGE_MDTYPE.FIDT_DOUBLE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((double[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((double[])metaTag.Value)[0] == double.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(double.MaxValue, FREE_IMAGE_MDTYPE.FIDT_DOUBLE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((double[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((double[])metaTag.Value)[0] == double.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testDouble = (double)rand.NextDouble();
|
|
|
testDoubleArray = new double[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testDoubleArray.Length; j++)
|
|
|
testDoubleArray[j] = rand.NextDouble();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testDouble, FREE_IMAGE_MDTYPE.FIDT_DOUBLE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((double[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 8);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_DOUBLE);
|
|
|
Assert.That(((double[])metaTag.Value)[0] == testDouble);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testDoubleArray, FREE_IMAGE_MDTYPE.FIDT_DOUBLE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((double[])metaTag.Value).Length == testDoubleArray.Length);
|
|
|
Assert.That(metaTag.Count == testDoubleArray.Length);
|
|
|
Assert.That(metaTag.Length == testDoubleArray.Length * 8);
|
|
|
|
|
|
double[] value = (double[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testDoubleArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_FLOAT
|
|
|
//
|
|
|
|
|
|
float testfloat;
|
|
|
float[] testFloatArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(float.MinValue, FREE_IMAGE_MDTYPE.FIDT_FLOAT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((float[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((float[])metaTag.Value)[0] == float.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(float.MaxValue, FREE_IMAGE_MDTYPE.FIDT_FLOAT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((float[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((float[])metaTag.Value)[0] == float.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testfloat = (float)rand.NextDouble();
|
|
|
testFloatArray = new float[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testFloatArray.Length; j++)
|
|
|
testFloatArray[j] = (float)rand.NextDouble();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testfloat, FREE_IMAGE_MDTYPE.FIDT_FLOAT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((float[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 4);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_FLOAT);
|
|
|
Assert.That(((float[])metaTag.Value)[0] == testfloat);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testFloatArray, FREE_IMAGE_MDTYPE.FIDT_FLOAT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((float[])metaTag.Value).Length == testFloatArray.Length);
|
|
|
Assert.That(metaTag.Count == testFloatArray.Length);
|
|
|
Assert.That(metaTag.Length == testFloatArray.Length * 4);
|
|
|
|
|
|
float[] value = (float[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testFloatArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_IFD
|
|
|
//
|
|
|
|
|
|
uint testUint;
|
|
|
uint[] testUintArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(uint.MinValue, FREE_IMAGE_MDTYPE.FIDT_IFD));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == uint.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(uint.MaxValue, FREE_IMAGE_MDTYPE.FIDT_IFD));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == uint.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testUint = (uint)rand.NextDouble();
|
|
|
testUintArray = new uint[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testUintArray.Length; j++)
|
|
|
testUintArray[j] = (uint)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUint, FREE_IMAGE_MDTYPE.FIDT_IFD));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 4);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_IFD);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == testUint);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUintArray, FREE_IMAGE_MDTYPE.FIDT_IFD));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == testUintArray.Length);
|
|
|
Assert.That(metaTag.Count == testUintArray.Length);
|
|
|
Assert.That(metaTag.Length == testUintArray.Length * 4);
|
|
|
|
|
|
uint[] value = (uint[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testUintArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_LONG
|
|
|
//
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(uint.MinValue, FREE_IMAGE_MDTYPE.FIDT_LONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == uint.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(uint.MaxValue, FREE_IMAGE_MDTYPE.FIDT_LONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == uint.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testUint = (uint)rand.NextDouble();
|
|
|
testUintArray = new uint[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testUintArray.Length; j++)
|
|
|
testUintArray[j] = (uint)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUint, FREE_IMAGE_MDTYPE.FIDT_LONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 4);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_LONG);
|
|
|
Assert.That(((uint[])metaTag.Value)[0] == testUint);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUintArray, FREE_IMAGE_MDTYPE.FIDT_LONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((uint[])metaTag.Value).Length == testUintArray.Length);
|
|
|
Assert.That(metaTag.Count == testUintArray.Length);
|
|
|
Assert.That(metaTag.Length == testUintArray.Length * 4);
|
|
|
|
|
|
uint[] value = (uint[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testUintArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_NOTYPE
|
|
|
//
|
|
|
|
|
|
try
|
|
|
{
|
|
|
metaTag.SetValue(new object(), FREE_IMAGE_MDTYPE.FIDT_NOTYPE);
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch (NotSupportedException)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_PALETTE
|
|
|
//
|
|
|
|
|
|
RGBQUAD testRGBQUAD;
|
|
|
RGBQUAD[] testRGBQUADArray;
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testRGBQUAD = new RGBQUAD(Color.FromArgb(rand.Next()));
|
|
|
testRGBQUADArray = new RGBQUAD[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testRGBQUADArray.Length; j++)
|
|
|
testRGBQUADArray[j] = new RGBQUAD(Color.FromArgb(rand.Next()));
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testRGBQUAD, FREE_IMAGE_MDTYPE.FIDT_PALETTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((RGBQUAD[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 4);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_PALETTE);
|
|
|
Assert.That(((RGBQUAD[])metaTag.Value)[0] == testRGBQUAD);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testRGBQUADArray, FREE_IMAGE_MDTYPE.FIDT_PALETTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((RGBQUAD[])metaTag.Value).Length == testRGBQUADArray.Length);
|
|
|
Assert.That(metaTag.Count == testRGBQUADArray.Length);
|
|
|
Assert.That(metaTag.Length == testRGBQUADArray.Length * 4);
|
|
|
|
|
|
RGBQUAD[] value = (RGBQUAD[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testRGBQUADArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_RATIONAL
|
|
|
//
|
|
|
|
|
|
FIURational testFIURational;
|
|
|
FIURational[] testFIURationalArray;
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testFIURational = new FIURational((uint)rand.Next(), (uint)rand.Next());
|
|
|
testFIURationalArray = new FIURational[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testFIURationalArray.Length; j++)
|
|
|
testFIURationalArray[j] = new FIURational((uint)rand.Next(), (uint)rand.Next());
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testFIURational, FREE_IMAGE_MDTYPE.FIDT_RATIONAL));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((FIURational[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 8);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_RATIONAL);
|
|
|
Assert.That(((FIURational[])metaTag.Value)[0] == testFIURational);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testFIURationalArray, FREE_IMAGE_MDTYPE.FIDT_RATIONAL));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((FIURational[])metaTag.Value).Length == testFIURationalArray.Length);
|
|
|
Assert.That(metaTag.Count == testFIURationalArray.Length);
|
|
|
Assert.That(metaTag.Length == testFIURationalArray.Length * 8);
|
|
|
|
|
|
FIURational[] value = (FIURational[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testFIURationalArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_SBYTE
|
|
|
//
|
|
|
|
|
|
sbyte testSByte;
|
|
|
sbyte[] testSByteArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(sbyte.MinValue, FREE_IMAGE_MDTYPE.FIDT_SBYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((sbyte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((sbyte[])metaTag.Value)[0] == sbyte.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(sbyte.MaxValue, FREE_IMAGE_MDTYPE.FIDT_SBYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((sbyte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((sbyte[])metaTag.Value)[0] == sbyte.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testSByte = (sbyte)rand.Next(sbyte.MinValue, sbyte.MaxValue);
|
|
|
testSByteArray = new sbyte[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testSByteArray.Length; j++)
|
|
|
testSByteArray[j] = (sbyte)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testSByte, FREE_IMAGE_MDTYPE.FIDT_SBYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((sbyte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 1);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_SBYTE);
|
|
|
Assert.That(((sbyte[])metaTag.Value)[0] == testSByte);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testSByteArray, FREE_IMAGE_MDTYPE.FIDT_SBYTE));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((sbyte[])metaTag.Value).Length == testSByteArray.Length);
|
|
|
Assert.That(metaTag.Count == testSByteArray.Length);
|
|
|
Assert.That(metaTag.Length == testSByteArray.Length * 1);
|
|
|
|
|
|
sbyte[] value = (sbyte[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testSByteArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_SHORT
|
|
|
//
|
|
|
|
|
|
ushort testUShort;
|
|
|
ushort[] testUShortArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(ushort.MinValue, FREE_IMAGE_MDTYPE.FIDT_SHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((ushort[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((ushort[])metaTag.Value)[0] == ushort.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(ushort.MaxValue, FREE_IMAGE_MDTYPE.FIDT_SHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((ushort[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((ushort[])metaTag.Value)[0] == ushort.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testUShort = (ushort)rand.Next(ushort.MinValue, sbyte.MaxValue);
|
|
|
testUShortArray = new ushort[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testUShortArray.Length; j++)
|
|
|
testUShortArray[j] = (ushort)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUShort, FREE_IMAGE_MDTYPE.FIDT_SHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((ushort[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 2);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_SHORT);
|
|
|
Assert.That(((ushort[])metaTag.Value)[0] == testUShort);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testUShortArray, FREE_IMAGE_MDTYPE.FIDT_SHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((ushort[])metaTag.Value).Length == testUShortArray.Length);
|
|
|
Assert.That(metaTag.Count == testUShortArray.Length);
|
|
|
Assert.That(metaTag.Length == testUShortArray.Length * 2);
|
|
|
|
|
|
ushort[] value = (ushort[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testUShortArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_SLONG
|
|
|
//
|
|
|
|
|
|
int testInt;
|
|
|
int[] testIntArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(int.MinValue, FREE_IMAGE_MDTYPE.FIDT_SLONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((int[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((int[])metaTag.Value)[0] == int.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(int.MaxValue, FREE_IMAGE_MDTYPE.FIDT_SLONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((int[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((int[])metaTag.Value)[0] == int.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testInt = (int)rand.NextDouble();
|
|
|
testIntArray = new int[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testIntArray.Length; j++)
|
|
|
testIntArray[j] = rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testInt, FREE_IMAGE_MDTYPE.FIDT_SLONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((int[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 4);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_SLONG);
|
|
|
Assert.That(((int[])metaTag.Value)[0] == testInt);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testIntArray, FREE_IMAGE_MDTYPE.FIDT_SLONG));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((int[])metaTag.Value).Length == testIntArray.Length);
|
|
|
Assert.That(metaTag.Count == testIntArray.Length);
|
|
|
Assert.That(metaTag.Length == testIntArray.Length * 4);
|
|
|
|
|
|
int[] value = (int[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testIntArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_SRATIONAL
|
|
|
//
|
|
|
|
|
|
FIRational testFIRational;
|
|
|
FIRational[] testFIRationalArray;
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testFIRational = new FIRational(rand.Next(), rand.Next());
|
|
|
testFIRationalArray = new FIRational[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testFIRationalArray.Length; j++)
|
|
|
testFIRationalArray[j] = new FIRational(rand.Next(), rand.Next());
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testFIRational, FREE_IMAGE_MDTYPE.FIDT_SRATIONAL));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((FIRational[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 8);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_SRATIONAL);
|
|
|
Assert.That(((FIRational[])metaTag.Value)[0] == testFIRational);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testFIRationalArray, FREE_IMAGE_MDTYPE.FIDT_SRATIONAL));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((FIRational[])metaTag.Value).Length == testFIRationalArray.Length);
|
|
|
Assert.That(metaTag.Count == testFIRationalArray.Length);
|
|
|
Assert.That(metaTag.Length == testFIRationalArray.Length * 8);
|
|
|
|
|
|
FIRational[] value = (FIRational[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testFIRationalArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_SSHORT
|
|
|
//
|
|
|
|
|
|
short testShort;
|
|
|
short[] testShortArray;
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(short.MinValue, FREE_IMAGE_MDTYPE.FIDT_SSHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((short[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((short[])metaTag.Value)[0] == short.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(short.MaxValue, FREE_IMAGE_MDTYPE.FIDT_SSHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((short[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((short[])metaTag.Value)[0] == short.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testShort = (short)rand.Next(short.MinValue, short.MaxValue);
|
|
|
testShortArray = new short[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testShortArray.Length; j++)
|
|
|
testShortArray[j] = (short)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testShort, FREE_IMAGE_MDTYPE.FIDT_SSHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((short[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 2);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_SSHORT);
|
|
|
Assert.That(((short[])metaTag.Value)[0] == testShort);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testShortArray, FREE_IMAGE_MDTYPE.FIDT_SSHORT));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((short[])metaTag.Value).Length == testShortArray.Length);
|
|
|
Assert.That(metaTag.Count == testShortArray.Length);
|
|
|
Assert.That(metaTag.Length == testShortArray.Length * 2);
|
|
|
|
|
|
short[] value = (short[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testShortArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// FREE_IMAGE_MDTYPE.FIDT_UNDEFINED
|
|
|
//
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(byte.MinValue, FREE_IMAGE_MDTYPE.FIDT_UNDEFINED));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == byte.MinValue);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(byte.MaxValue, FREE_IMAGE_MDTYPE.FIDT_UNDEFINED));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == byte.MaxValue);
|
|
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
testByte = (byte)rand.Next(byte.MinValue, byte.MaxValue);
|
|
|
testByteArray = new byte[rand.Next(0, 31)];
|
|
|
|
|
|
for (int j = 0; j < testByteArray.Length; j++)
|
|
|
testByteArray[j] = (byte)rand.Next();
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testByte, FREE_IMAGE_MDTYPE.FIDT_UNDEFINED));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == 1);
|
|
|
Assert.That(metaTag.Count == 1);
|
|
|
Assert.That(metaTag.Length == 1);
|
|
|
Assert.That(metaTag.Type == FREE_IMAGE_MDTYPE.FIDT_UNDEFINED);
|
|
|
Assert.That(((byte[])metaTag.Value)[0] == testByte);
|
|
|
|
|
|
Assert.IsTrue(metaTag.SetValue(testByteArray, FREE_IMAGE_MDTYPE.FIDT_UNDEFINED));
|
|
|
Assert.IsNotNull(metaTag.Value);
|
|
|
Assert.That(((byte[])metaTag.Value).Length == testByteArray.Length);
|
|
|
Assert.That(metaTag.Count == testByteArray.Length);
|
|
|
Assert.That(metaTag.Length == testByteArray.Length * 1);
|
|
|
|
|
|
byte[] value = (byte[])metaTag.Value;
|
|
|
|
|
|
for (int j = 0; j < value.Length; j++)
|
|
|
Assert.That(testByteArray[j] == value[j]);
|
|
|
}
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void MetadataModel()
|
|
|
{
|
|
|
MetadataTag tag;
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
MetadataModel model = new MDM_GEOTIFF(dib);
|
|
|
Assert.AreEqual(0, model.Count);
|
|
|
Assert.IsFalse(model.Exists);
|
|
|
Assert.IsEmpty(model.List);
|
|
|
Assert.AreEqual(model.Model, FREE_IMAGE_MDMODEL.FIMD_GEOTIFF);
|
|
|
Assert.IsTrue(model.DestoryModel());
|
|
|
foreach (MetadataTag m in model) Assert.Fail();
|
|
|
|
|
|
tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_GEOTIFF);
|
|
|
tag.Key = "KEY";
|
|
|
tag.Value = 54321f;
|
|
|
Assert.IsTrue(model.AddTag(tag));
|
|
|
|
|
|
Assert.AreEqual(1, model.Count);
|
|
|
Assert.IsTrue(model.Exists);
|
|
|
Assert.IsNotEmpty(model.List);
|
|
|
Assert.AreEqual(model.Model, FREE_IMAGE_MDMODEL.FIMD_GEOTIFF);
|
|
|
|
|
|
Assert.IsTrue(model.DestoryModel());
|
|
|
Assert.AreEqual(0, model.Count);
|
|
|
Assert.IsFalse(model.Exists);
|
|
|
Assert.IsEmpty(model.List);
|
|
|
Assert.AreEqual(model.Model, FREE_IMAGE_MDMODEL.FIMD_GEOTIFF);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void ImageMetadata()
|
|
|
{
|
|
|
ImageMetadata metadata;
|
|
|
List<MetadataModel> modelList;
|
|
|
MetadataTag tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS);
|
|
|
tag.Key = "KEY";
|
|
|
tag.ID = 11;
|
|
|
tag.Value = new double[] { 0d, 41d, -523d, -0.41d };
|
|
|
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 1, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
metadata = new ImageMetadata(dib, true);
|
|
|
Assert.AreEqual(0, metadata.Count);
|
|
|
Assert.IsTrue(metadata.HideEmptyModels);
|
|
|
Assert.IsEmpty(metadata.List);
|
|
|
|
|
|
metadata = new ImageMetadata(dib, false);
|
|
|
Assert.AreEqual(FreeImage.FREE_IMAGE_MDMODELS.Length, metadata.Count);
|
|
|
Assert.IsFalse(metadata.HideEmptyModels);
|
|
|
Assert.IsNotEmpty(metadata.List);
|
|
|
|
|
|
metadata.HideEmptyModels = true;
|
|
|
metadata.AddTag(tag);
|
|
|
|
|
|
Assert.AreEqual(1, metadata.Count);
|
|
|
Assert.IsNotEmpty(metadata.List);
|
|
|
|
|
|
modelList = metadata.List;
|
|
|
Assert.AreEqual(FREE_IMAGE_MDMODEL.FIMD_COMMENTS, modelList[0].Model);
|
|
|
|
|
|
System.Collections.IEnumerator enumerator = metadata.GetEnumerator();
|
|
|
Assert.IsTrue(enumerator.MoveNext());
|
|
|
Assert.IsNotNull((MetadataModel)enumerator.Current);
|
|
|
Assert.IsFalse(enumerator.MoveNext());
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[TestFixture]
|
|
|
public class WrapperFunctionsTest
|
|
|
{
|
|
|
ImageManager iManager = new ImageManager();
|
|
|
FIBITMAP dib = new FIBITMAP();
|
|
|
string freeImageCallback = null;
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
public void Init()
|
|
|
{
|
|
|
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[TestFixtureTearDown]
|
|
|
public void DeInit()
|
|
|
{
|
|
|
FreeImageEngine.Message -= new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[SetUp]
|
|
|
public void InitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[TearDown]
|
|
|
public void DeInitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
|
|
{
|
|
|
freeImageCallback = message;
|
|
|
}
|
|
|
|
|
|
public bool EqualColors(Color color1, Color color2)
|
|
|
{
|
|
|
if (color1.A != color2.A) return false;
|
|
|
if (color1.R != color2.R) return false;
|
|
|
if (color1.G != color2.G) return false;
|
|
|
if (color1.B != color2.B) return false;
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
//
|
|
|
// Tests
|
|
|
//
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetWrapperVersion()
|
|
|
{
|
|
|
//Assert.That(FreeImage.GetWrapperVersion() ==
|
|
|
// String.Format("{0}.{1}.{2}",
|
|
|
// FreeImage.FREEIMAGE_MAJOR_VERSION,
|
|
|
// FreeImage.FREEIMAGE_MINOR_VERSION,
|
|
|
// FreeImage.FREEIMAGE_RELEASE_SERIAL));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_IsAvailable()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.IsAvailable());
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetBitmap()
|
|
|
{
|
|
|
Bitmap bitmap = null;
|
|
|
|
|
|
try
|
|
|
{
|
|
|
bitmap = FreeImage.GetBitmap(new FIBITMAP());
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
Assert.IsNull(bitmap);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
bitmap = FreeImage.GetBitmap(dib);
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
Assert.AreEqual((int)FreeImage.GetHeight(dib), bitmap.Height);
|
|
|
Assert.AreEqual((int)FreeImage.GetWidth(dib), bitmap.Width);
|
|
|
|
|
|
bitmap.Dispose();
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CreateFromBitmap()
|
|
|
{
|
|
|
Bitmap bitmap = (Bitmap)Bitmap.FromFile(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_24));
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
|
|
|
dib = FreeImage.CreateFromBitmap(bitmap);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual((int)FreeImage.GetHeight(dib), bitmap.Height);
|
|
|
Assert.AreEqual((int)FreeImage.GetWidth(dib), bitmap.Width);
|
|
|
|
|
|
bitmap.Dispose();
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
try
|
|
|
{
|
|
|
dib = FreeImage.CreateFromBitmap(null);
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SaveBitmap()
|
|
|
{
|
|
|
Bitmap bitmap = (Bitmap)Bitmap.FromFile(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_24));
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SaveBitmap(bitmap, @"test.png", FREE_IMAGE_FORMAT.FIF_PNG, FREE_IMAGE_SAVE_FLAGS.DEFAULT));
|
|
|
bitmap.Dispose();
|
|
|
|
|
|
Assert.IsTrue(File.Exists(@"test.png"));
|
|
|
|
|
|
dib = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_PNG, @"test.png", FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
File.Delete(@"test.png");
|
|
|
Assert.IsFalse(File.Exists(@"test.png"));
|
|
|
bitmap.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_LoadEx()
|
|
|
{
|
|
|
dib = FreeImage.LoadEx(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_16_555));
|
|
|
Assert.That(!dib.IsNull);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
FREE_IMAGE_FORMAT format = FREE_IMAGE_FORMAT.FIF_TIFF;
|
|
|
|
|
|
dib = FreeImage.LoadEx(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_16_565), ref format);
|
|
|
Assert.That(dib.IsNull);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_TIFF, format);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
format = FREE_IMAGE_FORMAT.FIF_UNKNOWN;
|
|
|
dib = FreeImage.LoadEx(iManager.GetBitmapPath(ImageType.JPEG, ImageColorType.Type_16_565),
|
|
|
FREE_IMAGE_LOAD_FLAGS.DEFAULT, ref format);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_JPEG, format);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_UnloadEx()
|
|
|
{
|
|
|
Assert.That(dib.IsNull);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
Assert.That(dib.IsNull);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_555);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
Assert.That(dib.IsNull);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SaveEx()
|
|
|
{
|
|
|
FREE_IMAGE_FORMAT format;
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SaveEx(dib, @"test.png"));
|
|
|
Assert.IsTrue(File.Exists(@"test.png"));
|
|
|
format = FreeImage.GetFileType(@"test.png", 0);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_PNG, format);
|
|
|
File.Delete(@"test.png");
|
|
|
Assert.IsFalse(File.Exists(@"test.png"));
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SaveEx(ref dib, @"test.tiff", FREE_IMAGE_SAVE_FLAGS.DEFAULT, false));
|
|
|
Assert.IsTrue(File.Exists(@"test.tiff"));
|
|
|
format = FreeImage.GetFileType(@"test.tiff", 0);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_TIFF, format);
|
|
|
File.Delete(@"test.tiff");
|
|
|
Assert.IsFalse(File.Exists(@"test.tiff"));
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SaveEx(
|
|
|
ref dib,
|
|
|
@"test.gif",
|
|
|
FREE_IMAGE_FORMAT.FIF_UNKNOWN,
|
|
|
FREE_IMAGE_SAVE_FLAGS.DEFAULT,
|
|
|
FREE_IMAGE_COLOR_DEPTH.FICD_08_BPP,
|
|
|
false));
|
|
|
|
|
|
Assert.IsTrue(File.Exists(@"test.gif"));
|
|
|
format = FreeImage.GetFileType(@"test.gif", 0);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_GIF, format);
|
|
|
File.Delete(@"test.gif");
|
|
|
Assert.IsFalse(File.Exists(@"test.gif"));
|
|
|
|
|
|
Assert.IsFalse(FreeImage.SaveEx(dib, @""));
|
|
|
Assert.IsFalse(FreeImage.SaveEx(dib, @"test.test"));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_LoadFromStream()
|
|
|
{
|
|
|
FREE_IMAGE_FORMAT format;
|
|
|
FileStream fStream;
|
|
|
|
|
|
fStream = new FileStream(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_16_565), FileMode.Open);
|
|
|
Assert.IsNotNull(fStream);
|
|
|
|
|
|
dib = FreeImage.LoadFromStream(fStream);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.That(FreeImage.GetBPP(dib) == 16);
|
|
|
Assert.That(FreeImage.GetGreenMask(dib) == FreeImage.FI16_565_GREEN_MASK);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
fStream.Close();
|
|
|
|
|
|
fStream = new FileStream(iManager.GetBitmapPath(ImageType.Metadata, ImageColorType.Type_01_Dither), FileMode.Open);
|
|
|
Assert.IsNotNull(fStream);
|
|
|
|
|
|
format = FREE_IMAGE_FORMAT.FIF_UNKNOWN;
|
|
|
dib = FreeImage.LoadFromStream(fStream, FREE_IMAGE_LOAD_FLAGS.DEFAULT, ref format);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.That(FreeImage.GetBPP(dib) == 24);
|
|
|
Assert.That(format == FREE_IMAGE_FORMAT.FIF_JPEG);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
fStream.Close();
|
|
|
|
|
|
fStream = new FileStream(iManager.GetBitmapPath(ImageType.Even, ImageColorType.Type_32), FileMode.Open);
|
|
|
format = FREE_IMAGE_FORMAT.FIF_TIFF;
|
|
|
dib = FreeImage.LoadFromStream(fStream, FREE_IMAGE_LOAD_FLAGS.DEFAULT, ref format);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
Assert.That(FreeImage.GetBPP(dib) == 32);
|
|
|
Assert.That(format == FREE_IMAGE_FORMAT.FIF_TIFF);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
Assert.That(dib.IsNull);
|
|
|
dib = FreeImage.LoadFromStream(new MemoryStream(new byte[] { }));
|
|
|
Assert.That(dib.IsNull);
|
|
|
|
|
|
format = FREE_IMAGE_FORMAT.FIF_BMP;
|
|
|
fStream.Position = 0;
|
|
|
dib = FreeImage.LoadFromStream(fStream, ref format);
|
|
|
Assert.That(dib.IsNull);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_BMP, format);
|
|
|
|
|
|
fStream.Close();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SaveToStream()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
|
|
|
Stream stream = new FileStream(@"out_stream.bmp", FileMode.Create);
|
|
|
Assert.IsNotNull(stream);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SaveEx(ref dib, @"out_file.bmp", FREE_IMAGE_FORMAT.FIF_BMP, false));
|
|
|
Assert.IsTrue(FreeImage.SaveToStream(dib, stream, FREE_IMAGE_FORMAT.FIF_BMP));
|
|
|
stream.Flush();
|
|
|
stream.Dispose();
|
|
|
|
|
|
Assert.IsTrue(File.Exists(@"out_stream.bmp"));
|
|
|
Assert.IsTrue(File.Exists(@"out_file.bmp"));
|
|
|
byte[] buffer1 = File.ReadAllBytes(@"out_stream.bmp");
|
|
|
byte[] buffer2 = File.ReadAllBytes(@"out_file.bmp");
|
|
|
Assert.AreEqual(buffer1.Length, buffer2.Length);
|
|
|
for (int i = 0; i < buffer1.Length; i++)
|
|
|
if (buffer1[i] != buffer2[i])
|
|
|
Assert.Fail();
|
|
|
|
|
|
File.Delete(@"out_stream.bmp");
|
|
|
File.Delete(@"out_file.bmp");
|
|
|
Assert.IsFalse(File.Exists(@"out_stream.bmp"));
|
|
|
Assert.IsFalse(File.Exists(@"out_file.bmp"));
|
|
|
|
|
|
stream = new MemoryStream();
|
|
|
Assert.IsFalse(FreeImage.SaveToStream(dib, stream, FREE_IMAGE_FORMAT.FIF_FAXG3));
|
|
|
stream.Dispose();
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_IsExtensionValidForFIF()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_BMP, "bmp", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsTrue(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_BMP, "BMP", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsFalse(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_BMP, "DUMMY", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsTrue(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_PCX, "pcx", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsTrue(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_TIFF, "tif", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsTrue(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_TIFF, "TIFF", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsFalse(FreeImage.IsExtensionValidForFIF(FREE_IMAGE_FORMAT.FIF_ICO, "ICO", StringComparison.CurrentCulture));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_IsFilenameValidForFIF()
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_JPEG, "file.jpg"));
|
|
|
Assert.IsTrue(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_JPEG, "file.jpeg"));
|
|
|
Assert.IsFalse(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_JPEG, "file.bmp"));
|
|
|
Assert.IsTrue(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_GIF, "file.gif"));
|
|
|
Assert.IsTrue(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_GIF, "file.GIF"));
|
|
|
Assert.IsTrue(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_GIF, "file.GIF", StringComparison.CurrentCultureIgnoreCase));
|
|
|
Assert.IsFalse(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_GIF, "file.txt"));
|
|
|
Assert.IsFalse(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_UNKNOWN, "file.jpg"));
|
|
|
Assert.IsFalse(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_UNKNOWN, "file.bmp"));
|
|
|
Assert.IsFalse(FreeImage.IsFilenameValidForFIF(FREE_IMAGE_FORMAT.FIF_UNKNOWN, "file.tif"));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPrimaryExtensionFromFIF()
|
|
|
{
|
|
|
Assert.AreEqual("gif", FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_GIF));
|
|
|
Assert.AreEqual("tif", FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_TIFF));
|
|
|
Assert.AreNotEqual("tiff", FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_TIFF));
|
|
|
Assert.AreEqual("psd", FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_PSD));
|
|
|
Assert.AreEqual("iff", FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_IFF));
|
|
|
Assert.IsNull(FreeImage.GetPrimaryExtensionFromFIF(FREE_IMAGE_FORMAT.FIF_UNKNOWN));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_OpenMultiBitmapEx()
|
|
|
{
|
|
|
FIMULTIBITMAP dib = FreeImage.OpenMultiBitmapEx(iManager.GetBitmapPath(ImageType.Multipaged, ImageColorType.Type_01_Dither));
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
Assert.AreEqual(4, FreeImage.GetPageCount(dib));
|
|
|
FreeImage.CloseMultiBitmap(dib, FREE_IMAGE_SAVE_FLAGS.DEFAULT);
|
|
|
|
|
|
FREE_IMAGE_FORMAT format = FREE_IMAGE_FORMAT.FIF_UNKNOWN;
|
|
|
dib = FreeImage.OpenMultiBitmapEx(
|
|
|
iManager.GetBitmapPath(ImageType.Multipaged, ImageColorType.Type_04), ref format, FREE_IMAGE_LOAD_FLAGS.DEFAULT,
|
|
|
false, true, true);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_TIFF, format);
|
|
|
FreeImage.CloseMultiBitmap(dib, FREE_IMAGE_SAVE_FLAGS.DEFAULT);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetLockedPageCount()
|
|
|
{
|
|
|
FIMULTIBITMAP dib = FreeImage.OpenMultiBitmapEx(iManager.GetBitmapPath(ImageType.Multipaged, ImageColorType.Type_01_Dither));
|
|
|
FIBITMAP page1, page2, page3;
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
Assert.AreEqual(4, FreeImage.GetPageCount(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
page1 = FreeImage.LockPage(dib, 0);
|
|
|
Assert.AreEqual(1, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
page2 = FreeImage.LockPage(dib, 1);
|
|
|
Assert.AreEqual(2, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
page3 = FreeImage.LockPage(dib, 2);
|
|
|
Assert.AreEqual(3, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page3, true);
|
|
|
Assert.AreEqual(2, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page2, true);
|
|
|
Assert.AreEqual(1, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page1, true);
|
|
|
Assert.AreEqual(0, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
FreeImage.CloseMultiBitmapEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetLockedPages()
|
|
|
{
|
|
|
FIMULTIBITMAP dib = FreeImage.OpenMultiBitmapEx(iManager.GetBitmapPath(ImageType.Multipaged, ImageColorType.Type_01_Dither));
|
|
|
FIBITMAP page1, page2, page3;
|
|
|
int[] lockedList;
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
Assert.AreEqual(4, FreeImage.GetPageCount(dib));
|
|
|
Assert.AreEqual(0, FreeImage.GetLockedPageCount(dib));
|
|
|
|
|
|
page1 = FreeImage.LockPage(dib, 0);
|
|
|
Assert.AreEqual(1, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.Contains(0, lockedList);
|
|
|
|
|
|
page2 = FreeImage.LockPage(dib, 1);
|
|
|
Assert.AreEqual(2, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.Contains(0, lockedList);
|
|
|
Assert.Contains(1, lockedList);
|
|
|
|
|
|
page3 = FreeImage.LockPage(dib, 3);
|
|
|
Assert.AreEqual(3, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.Contains(0, lockedList);
|
|
|
Assert.Contains(1, lockedList);
|
|
|
Assert.Contains(3, lockedList);
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page2, true);
|
|
|
Assert.AreEqual(2, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.Contains(0, lockedList);
|
|
|
Assert.Contains(3, lockedList);
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page1, true);
|
|
|
Assert.AreEqual(1, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.Contains(3, lockedList);
|
|
|
|
|
|
FreeImage.UnlockPage(dib, page3, true);
|
|
|
Assert.AreEqual(0, FreeImage.GetLockedPageCount(dib));
|
|
|
lockedList = FreeImage.GetLockedPages(dib);
|
|
|
Assert.AreEqual(0, lockedList.Length);
|
|
|
|
|
|
FreeImage.CloseMultiBitmapEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFileTypeFromStream()
|
|
|
{
|
|
|
FileStream fStream = new FileStream(iManager.GetBitmapPath(ImageType.JPEG, ImageColorType.Type_01_Dither), FileMode.Open);
|
|
|
Assert.IsNotNull(fStream);
|
|
|
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_JPEG, FreeImage.GetFileTypeFromStream(fStream));
|
|
|
fStream.Dispose();
|
|
|
|
|
|
fStream = new FileStream(iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_16_565), FileMode.Open);
|
|
|
Assert.AreEqual(FREE_IMAGE_FORMAT.FIF_BMP, FreeImage.GetFileTypeFromStream(fStream));
|
|
|
fStream.Close();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetHbitmap()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
IntPtr hBitmap = FreeImage.GetHbitmap(dib, IntPtr.Zero, false);
|
|
|
Bitmap bitmap = Bitmap.FromHbitmap(hBitmap);
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), bitmap.Width);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), bitmap.Height);
|
|
|
|
|
|
bitmap.Dispose();
|
|
|
FreeImage.FreeHbitmap(hBitmap);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
try
|
|
|
{
|
|
|
hBitmap = FreeImage.GetHbitmap(dib, IntPtr.Zero, false);
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetResolutionX()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(72, FreeImage.GetResolutionX(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetResolutionY()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(72, FreeImage.GetResolutionY(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetResolutionX()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(72, FreeImage.GetResolutionX(dib));
|
|
|
|
|
|
FreeImage.SetResolutionX(dib, 12u);
|
|
|
Assert.AreEqual(12, FreeImage.GetResolutionX(dib));
|
|
|
|
|
|
FreeImage.SetResolutionX(dib, 1u);
|
|
|
Assert.AreEqual(1, FreeImage.GetResolutionX(dib));
|
|
|
|
|
|
FreeImage.SetResolutionX(dib, 66u);
|
|
|
Assert.AreEqual(66, FreeImage.GetResolutionX(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetResolutionY()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(72, FreeImage.GetResolutionY(dib));
|
|
|
|
|
|
FreeImage.SetResolutionY(dib, 12u);
|
|
|
Assert.AreEqual(12, FreeImage.GetResolutionY(dib));
|
|
|
|
|
|
FreeImage.SetResolutionY(dib, 1u);
|
|
|
Assert.AreEqual(1, FreeImage.GetResolutionY(dib));
|
|
|
|
|
|
FreeImage.SetResolutionY(dib, 66u);
|
|
|
Assert.AreEqual(66, FreeImage.GetResolutionY(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_IsGreyscaleImage()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.IsFalse(FreeImage.IsGreyscaleImage(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_Unordered);
|
|
|
Assert.IsTrue(FreeImage.IsGreyscaleImage(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_MinIsBlack);
|
|
|
Assert.IsTrue(FreeImage.IsGreyscaleImage(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPaletteEx()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Palette palette = null;
|
|
|
|
|
|
try
|
|
|
{
|
|
|
palette = FreeImage.GetPaletteEx(dib);
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_08_Greyscale_MinIsBlack);
|
|
|
try
|
|
|
{
|
|
|
palette = FreeImage.GetPaletteEx(dib);
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
Assert.AreEqual(256, palette.Length);
|
|
|
for (int index = 0; index < 256; index++)
|
|
|
{
|
|
|
Assert.AreEqual(index, palette[index].rgbRed);
|
|
|
Assert.AreEqual(index, palette[index].rgbGreen);
|
|
|
Assert.AreEqual(index, palette[index].rgbBlue);
|
|
|
}
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetInfoHeaderEx()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
BITMAPINFOHEADER iHeader = FreeImage.GetInfoHeaderEx(dib);
|
|
|
Assert.AreEqual(4, iHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), iHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), iHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
iHeader = FreeImage.GetInfoHeaderEx(dib);
|
|
|
Assert.AreEqual(1, iHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), iHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), iHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
iHeader = FreeImage.GetInfoHeaderEx(dib);
|
|
|
Assert.AreEqual(24, iHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), iHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), iHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetInfoEx()
|
|
|
{
|
|
|
BITMAPINFO info;
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_01_Dither);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_04_Greyscale_MinIsBlack);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_08_Greyscale_Unordered);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_555);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_565);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_24);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.That(!dib.IsNull);
|
|
|
info = FreeImage.GetInfoEx(dib);
|
|
|
Assert.AreEqual(FreeImage.GetBPP(dib), info.bmiHeader.biBitCount);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), info.bmiHeader.biWidth);
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), info.bmiHeader.biHeight);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPixelFormat()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_01_Threshold);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(PixelFormat.Format1bppIndexed, FreeImage.GetPixelFormat(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_04_Greyscale_Unordered);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(PixelFormat.Format4bppIndexed, FreeImage.GetPixelFormat(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_555);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(PixelFormat.Format16bppRgb555, FreeImage.GetPixelFormat(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Odd, ImageColorType.Type_16_565);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.AreEqual(PixelFormat.Format16bppRgb565, FreeImage.GetPixelFormat(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetFormatParameters()
|
|
|
{
|
|
|
uint bpp, red, green, blue;
|
|
|
FREE_IMAGE_TYPE type;
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format16bppArgb1555, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(16, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI16_555_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI16_555_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI16_555_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format16bppGrayScale, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(16, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_UINT16);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format16bppRgb555, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(16, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI16_555_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI16_555_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI16_555_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format16bppRgb565, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(16, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI16_565_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI16_565_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI16_565_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format1bppIndexed, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(1, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format24bppRgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(24, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI_RGBA_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI_RGBA_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format32bppArgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(32, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI_RGBA_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI_RGBA_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format32bppPArgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(32, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI_RGBA_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI_RGBA_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format32bppRgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(32, bpp);
|
|
|
Assert.AreEqual(red, FreeImage.FI_RGBA_RED_MASK);
|
|
|
Assert.AreEqual(green, FreeImage.FI_RGBA_GREEN_MASK);
|
|
|
Assert.AreEqual(blue, FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format48bppRgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(48, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_RGB16);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format4bppIndexed, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(4, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format64bppArgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(64, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_RGBA16);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format64bppPArgb, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(64, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_RGBA16);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetFormatParameters(PixelFormat.Format8bppIndexed, out type, out bpp, out red, out green, out blue));
|
|
|
Assert.AreEqual(8, bpp);
|
|
|
Assert.AreEqual(red, 0);
|
|
|
Assert.AreEqual(green, 0);
|
|
|
Assert.AreEqual(blue, 0);
|
|
|
Assert.AreEqual(type, FREE_IMAGE_TYPE.FIT_BITMAP);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Compare()
|
|
|
{
|
|
|
FIBITMAP dib2;
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_01_Threshold);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
|
|
|
Assert.IsFalse(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
Assert.IsTrue(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.HEADER));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_MinIsBlack);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_04_Greyscale_Unordered);
|
|
|
|
|
|
Assert.IsFalse(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.IsTrue(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_555);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_555);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_565);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
dib2 = iManager.GetBitmap(ImageType.Even, ImageColorType.Type_16_565);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.Compare(dib, dib2, FREE_IMAGE_COMPARE_FLAGS.COMPLETE));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CreateICCProfileEx()
|
|
|
{
|
|
|
FIICCPROFILE prof;
|
|
|
byte[] data = new byte[173];
|
|
|
Random rand = new Random(DateTime.Now.Millisecond);
|
|
|
dib = FreeImage.AllocateT(FREE_IMAGE_TYPE.FIT_BITMAP, 1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
prof = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.That(prof.DataPointer == IntPtr.Zero);
|
|
|
|
|
|
rand.NextBytes(data);
|
|
|
prof = FreeImage.CreateICCProfileEx(dib, data);
|
|
|
Assert.That(prof.Size == data.Length);
|
|
|
for (int i = 0; i < data.Length; i++)
|
|
|
if (prof.Data[i] != data[i])
|
|
|
Assert.Fail();
|
|
|
|
|
|
FreeImage.DestroyICCProfile(dib);
|
|
|
prof = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.That(prof.DataPointer == IntPtr.Zero);
|
|
|
|
|
|
FreeImage.CreateICCProfileEx(dib, new byte[0], 0);
|
|
|
prof = FreeImage.GetICCProfileEx(dib);
|
|
|
Assert.That(prof.DataPointer == IntPtr.Zero);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_ConvertColorDepth()
|
|
|
{
|
|
|
int bpp = 1;
|
|
|
FIBITMAP dib2;
|
|
|
|
|
|
dib = FreeImage.AllocateT(FREE_IMAGE_TYPE.FIT_BITMAP, 80, 80, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
do
|
|
|
{
|
|
|
dib2 = FreeImage.ConvertColorDepth(dib, (FREE_IMAGE_COLOR_DEPTH)bpp);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
Assert.AreEqual(bpp, FreeImage.GetBPP(dib2));
|
|
|
if (dib != dib2)
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
} while (0 != (bpp = FreeImage.GetNextColorDepth(bpp)));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib = FreeImage.AllocateT(FREE_IMAGE_TYPE.FIT_BITMAP, 80, 80, 32,
|
|
|
FreeImage.FI_RGBA_RED_MASK, FreeImage.FI_RGBA_GREEN_MASK, FreeImage.FI_RGBA_BLUE_MASK);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
bpp = 32;
|
|
|
|
|
|
do
|
|
|
{
|
|
|
dib2 = FreeImage.ConvertColorDepth(dib, (FREE_IMAGE_COLOR_DEPTH)bpp);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
Assert.AreEqual(bpp, FreeImage.GetBPP(dib2));
|
|
|
if (dib != dib2)
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
} while (0 != (bpp = FreeImage.GetPrevousColorDepth(bpp)));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetNextColorDepth()
|
|
|
{
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(5));
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(0));
|
|
|
Assert.AreEqual(4, FreeImage.GetNextColorDepth(1));
|
|
|
Assert.AreEqual(8, FreeImage.GetNextColorDepth(4));
|
|
|
Assert.AreEqual(16, FreeImage.GetNextColorDepth(8));
|
|
|
Assert.AreEqual(24, FreeImage.GetNextColorDepth(16));
|
|
|
Assert.AreEqual(32, FreeImage.GetNextColorDepth(24));
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(32));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetPrevousColorDepth()
|
|
|
{
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(5));
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(0));
|
|
|
Assert.AreEqual(4, FreeImage.GetNextColorDepth(1));
|
|
|
Assert.AreEqual(8, FreeImage.GetNextColorDepth(4));
|
|
|
Assert.AreEqual(16, FreeImage.GetNextColorDepth(8));
|
|
|
Assert.AreEqual(24, FreeImage.GetNextColorDepth(16));
|
|
|
Assert.AreEqual(32, FreeImage.GetNextColorDepth(24));
|
|
|
Assert.AreEqual(0, FreeImage.GetNextColorDepth(32));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public unsafe void FreeImage_PtrToStr()
|
|
|
{
|
|
|
string testString;
|
|
|
string resString;
|
|
|
IntPtr buffer;
|
|
|
int index;
|
|
|
|
|
|
testString = "Test string";
|
|
|
buffer = Marshal.AllocHGlobal(testString.Length + 1);
|
|
|
|
|
|
for (index = 0; index < testString.Length; index++)
|
|
|
{
|
|
|
Marshal.WriteByte(buffer, index, (byte)testString[index]);
|
|
|
}
|
|
|
Marshal.WriteByte(buffer, index, (byte)0);
|
|
|
|
|
|
resString = FreeImage.PtrToStr((byte*)buffer);
|
|
|
Assert.That(resString == testString);
|
|
|
|
|
|
Marshal.FreeHGlobal(buffer);
|
|
|
|
|
|
testString = @"<22><><EFBFBD>?=<3D>%/!)<29>(%&)(<28>";
|
|
|
buffer = Marshal.AllocHGlobal(testString.Length + 1);
|
|
|
|
|
|
for (index = 0; index < testString.Length; index++)
|
|
|
{
|
|
|
Marshal.WriteByte(buffer, index, (byte)testString[index]);
|
|
|
}
|
|
|
Marshal.WriteByte(buffer, index, (byte)0);
|
|
|
|
|
|
resString = FreeImage.PtrToStr((byte*)buffer);
|
|
|
Assert.That(resString == testString);
|
|
|
|
|
|
Marshal.FreeHGlobal(buffer);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CopyMetadata()
|
|
|
{
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
int mdCount = 0;
|
|
|
|
|
|
FIBITMAP dib2 = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib2.IsNull);
|
|
|
|
|
|
FREE_IMAGE_MDMODEL[] modelList = (FREE_IMAGE_MDMODEL[])Enum.GetValues(typeof(FREE_IMAGE_MDMODEL));
|
|
|
FITAG tag, tag2;
|
|
|
FIMETADATA mdHandle;
|
|
|
|
|
|
foreach (FREE_IMAGE_MDMODEL model in modelList)
|
|
|
{
|
|
|
mdHandle = FreeImage.FindFirstMetadata(model, dib2, out tag);
|
|
|
Assert.IsTrue(mdHandle.IsNull);
|
|
|
mdCount += (int)FreeImage.GetMetadataCount(model, dib);
|
|
|
}
|
|
|
|
|
|
Assert.AreEqual(mdCount, FreeImage.CloneMetadataEx(dib, dib2, FREE_IMAGE_METADATA_COPY.CLEAR_EXISTING));
|
|
|
|
|
|
foreach (FREE_IMAGE_MDMODEL model in modelList)
|
|
|
{
|
|
|
mdHandle = FreeImage.FindFirstMetadata(model, dib, out tag);
|
|
|
if (!mdHandle.IsNull)
|
|
|
{
|
|
|
do
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(model, dib2, FreeImage.GetTagKey(tag), out tag2));
|
|
|
Assert.That(FreeImage.GetTagCount(tag) == FreeImage.GetTagCount(tag2));
|
|
|
Assert.That(FreeImage.GetTagDescription(tag) == FreeImage.GetTagDescription(tag2));
|
|
|
Assert.That(FreeImage.GetTagID(tag) == FreeImage.GetTagID(tag2));
|
|
|
Assert.That(FreeImage.GetTagKey(tag) == FreeImage.GetTagKey(tag2));
|
|
|
Assert.That(FreeImage.GetTagLength(tag) == FreeImage.GetTagLength(tag2));
|
|
|
Assert.That(FreeImage.GetTagType(tag) == FreeImage.GetTagType(tag2));
|
|
|
}
|
|
|
while (FreeImage.FindNextMetadata(mdHandle, out tag));
|
|
|
FreeImage.FindCloseMetadata(mdHandle);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Assert.AreEqual(0, FreeImage.CloneMetadataEx(dib, dib2, FREE_IMAGE_METADATA_COPY.KEEP_EXISITNG));
|
|
|
|
|
|
foreach (FREE_IMAGE_MDMODEL model in modelList)
|
|
|
{
|
|
|
mdHandle = FreeImage.FindFirstMetadata(model, dib, out tag);
|
|
|
if (!mdHandle.IsNull)
|
|
|
{
|
|
|
do
|
|
|
{
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(model, dib2, FreeImage.GetTagKey(tag), out tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagCount(tag), FreeImage.GetTagCount(tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagDescription(tag), FreeImage.GetTagDescription(tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagID(tag), FreeImage.GetTagID(tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagKey(tag), FreeImage.GetTagKey(tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagLength(tag), FreeImage.GetTagLength(tag2));
|
|
|
Assert.AreEqual(FreeImage.GetTagType(tag), FreeImage.GetTagType(tag2));
|
|
|
}
|
|
|
while (FreeImage.FindNextMetadata(mdHandle, out tag));
|
|
|
FreeImage.FindCloseMetadata(mdHandle);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
const string newTagDescription = "NEW_TAG_DESCRIPTION";
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib, "Copyright", out tag));
|
|
|
Assert.IsTrue(FreeImage.SetTagDescription(tag, newTagDescription));
|
|
|
Assert.AreEqual(mdCount, FreeImage.CloneMetadataEx(dib, dib2, FREE_IMAGE_METADATA_COPY.REPLACE_EXISTING));
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib2, "Copyright", out tag2));
|
|
|
Assert.AreEqual(newTagDescription, FreeImage.GetTagDescription(tag2));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
dib2 = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
|
|
|
Assert.AreEqual(0, FreeImage.CloneMetadataEx(dib, dib2, FREE_IMAGE_METADATA_COPY.CLEAR_EXISTING));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib2);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetImageComment()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
const string comment = "C O M M E N T";
|
|
|
|
|
|
Assert.IsNull(FreeImage.GetImageComment(dib));
|
|
|
Assert.IsTrue(FreeImage.SetImageComment(dib, comment));
|
|
|
Assert.AreEqual(comment, FreeImage.GetImageComment(dib));
|
|
|
Assert.IsTrue(FreeImage.SetImageComment(dib, null));
|
|
|
Assert.IsNull(FreeImage.GetImageComment(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetImageComment()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
const string comment = "C O M M E N T";
|
|
|
|
|
|
Assert.IsNull(FreeImage.GetImageComment(dib));
|
|
|
Assert.IsTrue(FreeImage.SetImageComment(dib, comment));
|
|
|
Assert.AreEqual(comment, FreeImage.GetImageComment(dib));
|
|
|
Assert.IsTrue(FreeImage.SetImageComment(dib, null));
|
|
|
Assert.IsNull(FreeImage.GetImageComment(dib));
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetMetadata()
|
|
|
{
|
|
|
MetadataTag tag;
|
|
|
|
|
|
dib = iManager.GetBitmap(ImageType.Metadata, ImageColorType.Type_01_Dither);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Assert.IsFalse(FreeImage.GetMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib, "~~~~~", out tag));
|
|
|
Assert.IsNull(tag);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN, dib, "Artist", out tag));
|
|
|
Assert.IsFalse(tag.tag.IsNull);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetMetadata()
|
|
|
{
|
|
|
MetadataTag tag;
|
|
|
Random rand = new Random();
|
|
|
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
ushort value = (ushort)rand.Next();
|
|
|
|
|
|
tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_CUSTOM);
|
|
|
tag.ID = value;
|
|
|
|
|
|
Assert.IsTrue(FreeImage.SetMetadata(FREE_IMAGE_MDMODEL.FIMD_CUSTOM, dib, "~~~~~", tag));
|
|
|
Assert.IsTrue(FreeImage.GetMetadata(FREE_IMAGE_MDMODEL.FIMD_CUSTOM, dib, "~~~~~", out tag));
|
|
|
Assert.AreEqual(value, tag.ID);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FindFirstMetadata()
|
|
|
{
|
|
|
MetadataTag tag;
|
|
|
FIMETADATA mdHandle;
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
FREE_IMAGE_MDMODEL[] models = (FREE_IMAGE_MDMODEL[])Enum.GetValues(typeof(FREE_IMAGE_MDMODEL));
|
|
|
foreach (FREE_IMAGE_MDMODEL model in models)
|
|
|
{
|
|
|
mdHandle = FreeImage.FindFirstMetadata(model, dib, out tag);
|
|
|
Assert.IsTrue(mdHandle.IsNull);
|
|
|
}
|
|
|
|
|
|
tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS);
|
|
|
tag.Key = "KEY";
|
|
|
tag.Value = 12345;
|
|
|
tag.AddToImage(dib);
|
|
|
|
|
|
mdHandle = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_COMMENTS, dib, out tag);
|
|
|
Assert.IsFalse(mdHandle.IsNull);
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mdHandle);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_FindNextMetadata()
|
|
|
{
|
|
|
MetadataTag tag;
|
|
|
FIMETADATA mdHandle;
|
|
|
dib = FreeImage.Allocate(1, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
FREE_IMAGE_MDMODEL[] models = (FREE_IMAGE_MDMODEL[])Enum.GetValues(typeof(FREE_IMAGE_MDMODEL));
|
|
|
foreach (FREE_IMAGE_MDMODEL model in models)
|
|
|
{
|
|
|
mdHandle = FreeImage.FindFirstMetadata(model, dib, out tag);
|
|
|
Assert.IsTrue(mdHandle.IsNull);
|
|
|
}
|
|
|
|
|
|
tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS);
|
|
|
tag.Key = "KEY1";
|
|
|
tag.Value = 12345;
|
|
|
tag.AddToImage(dib);
|
|
|
|
|
|
tag = new MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS);
|
|
|
tag.Key = "KEY2";
|
|
|
tag.Value = 54321;
|
|
|
tag.AddToImage(dib);
|
|
|
|
|
|
mdHandle = FreeImage.FindFirstMetadata(FREE_IMAGE_MDMODEL.FIMD_COMMENTS, dib, out tag);
|
|
|
Assert.IsFalse(mdHandle.IsNull);
|
|
|
|
|
|
Assert.IsTrue(FreeImage.FindNextMetadata(mdHandle, out tag));
|
|
|
Assert.IsFalse(FreeImage.FindNextMetadata(mdHandle, out tag));
|
|
|
|
|
|
FreeImage.FindCloseMetadata(mdHandle);
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_SetGetTransparencyTableEx()
|
|
|
{
|
|
|
dib = FreeImage.Allocate(10, 10, 6, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
byte[] transTable = FreeImage.GetTransparencyTableEx(dib);
|
|
|
Assert.That(transTable.Length == 0);
|
|
|
|
|
|
Random rand = new Random();
|
|
|
transTable = new byte[rand.Next(0, 255)];
|
|
|
int length = transTable.Length;
|
|
|
|
|
|
for (int i = 0; i < transTable.Length; i++)
|
|
|
transTable[i] = (byte)i;
|
|
|
|
|
|
FreeImage.SetTransparencyTable(dib, transTable);
|
|
|
transTable = null;
|
|
|
transTable = FreeImage.GetTransparencyTableEx(dib);
|
|
|
Assert.That(transTable.Length == length);
|
|
|
for (int i = 0; i < transTable.Length; i++)
|
|
|
Assert.That(transTable[i] == i);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_GetUniqueColors()
|
|
|
{
|
|
|
Palette palette;
|
|
|
|
|
|
//
|
|
|
// 1bpp
|
|
|
//
|
|
|
|
|
|
dib = FreeImage.Allocate(10, 1, 1, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
palette = new Palette(dib);
|
|
|
palette[0] = Color.FromArgb(43, 255, 255, 255);
|
|
|
palette[1] = Color.FromArgb(222, 0, 0, 0);
|
|
|
|
|
|
Scanline<FI1BIT> sl1bit = new Scanline<FI1BIT>(dib, 0);
|
|
|
for (int x = 0; x < sl1bit.Length; x++)
|
|
|
{
|
|
|
sl1bit[x] = 0;
|
|
|
}
|
|
|
|
|
|
Assert.AreEqual(1, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl1bit[5] = 1;
|
|
|
Assert.AreEqual(2, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
palette[1] = Color.FromArgb(222, 255, 255, 255);
|
|
|
Assert.AreEqual(1, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl1bit[5] = 0;
|
|
|
Assert.AreEqual(1, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
//
|
|
|
// 4bpp
|
|
|
//
|
|
|
|
|
|
dib = FreeImage.Allocate(10, 1, 4, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
palette = new Palette(dib);
|
|
|
palette[0] = new RGBQUAD(Color.FromArgb(43, 255, 255, 255));
|
|
|
palette[1] = new RGBQUAD(Color.FromArgb(222, 51, 2, 211));
|
|
|
palette[2] = new RGBQUAD(Color.FromArgb(29, 25, 31, 52));
|
|
|
palette[3] = new RGBQUAD(Color.FromArgb(173, 142, 61, 178));
|
|
|
palette[4] = new RGBQUAD(Color.FromArgb(143, 41, 67, 199));
|
|
|
palette[5] = new RGBQUAD(Color.FromArgb(2, 0, 2, 221));
|
|
|
|
|
|
Scanline<FI4BIT> sl4bit = new Scanline<FI4BIT>(dib, 0);
|
|
|
|
|
|
for (int x = 0; x < sl4bit.Length; x++)
|
|
|
{
|
|
|
sl4bit[x] = 0;
|
|
|
}
|
|
|
|
|
|
Assert.AreEqual(1, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[1] = 1;
|
|
|
Assert.AreEqual(2, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[2] = 1;
|
|
|
Assert.AreEqual(2, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[3] = 2;
|
|
|
Assert.AreEqual(3, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[4] = 3;
|
|
|
Assert.AreEqual(4, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[5] = 4;
|
|
|
Assert.AreEqual(5, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[6] = 5;
|
|
|
Assert.AreEqual(6, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[7] = 6;
|
|
|
Assert.AreEqual(7, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[8] = 7;
|
|
|
Assert.AreEqual(7, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl4bit[9] = 7;
|
|
|
Assert.AreEqual(7, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
|
|
|
//
|
|
|
// 8bpp
|
|
|
//
|
|
|
|
|
|
dib = FreeImage.Allocate(10, 1, 8, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
palette = new Palette(dib);
|
|
|
palette[0] = new RGBQUAD(Color.FromArgb(43, 255, 255, 255));
|
|
|
palette[1] = new RGBQUAD(Color.FromArgb(222, 51, 2, 211));
|
|
|
palette[2] = new RGBQUAD(Color.FromArgb(29, 25, 31, 52));
|
|
|
palette[3] = new RGBQUAD(Color.FromArgb(173, 142, 61, 178));
|
|
|
palette[4] = new RGBQUAD(Color.FromArgb(143, 41, 67, 199));
|
|
|
palette[5] = new RGBQUAD(Color.FromArgb(2, 0, 2, 221));
|
|
|
|
|
|
Scanline<byte> sl8bit = new Scanline<byte>(dib, 0);
|
|
|
|
|
|
for (int x = 0; x < sl8bit.Length; x++)
|
|
|
{
|
|
|
sl8bit[x] = 0;
|
|
|
}
|
|
|
|
|
|
Assert.AreEqual(1, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[1] = 1;
|
|
|
Assert.AreEqual(2, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[2] = 2;
|
|
|
Assert.AreEqual(3, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[3] = 3;
|
|
|
Assert.AreEqual(4, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[4] = 4;
|
|
|
Assert.AreEqual(5, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[5] = 6;
|
|
|
Assert.AreEqual(6, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[5] = 7;
|
|
|
Assert.AreEqual(6, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
sl8bit[5] = 8;
|
|
|
Assert.AreEqual(6, FreeImage.GetUniqueColors(dib));
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_CreateShrunkenPaletteLUT()
|
|
|
{
|
|
|
Random rand = new Random();
|
|
|
dib = FreeImage.Allocate(1, 1, 8, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
Palette palette = new Palette(dib);
|
|
|
byte[] lut;
|
|
|
int colors;
|
|
|
|
|
|
for (int x = 0; x < palette.Length; x++)
|
|
|
{
|
|
|
palette[x] = 0xFF000000;
|
|
|
}
|
|
|
|
|
|
lut = FreeImage.CreateShrunkenPaletteLUT(dib, out colors);
|
|
|
Assert.AreEqual(1, colors);
|
|
|
|
|
|
for (int x = 0; x < palette.Length; x++)
|
|
|
{
|
|
|
Assert.AreEqual(0, lut[x]);
|
|
|
}
|
|
|
|
|
|
palette[1] = 0x00000001;
|
|
|
lut = FreeImage.CreateShrunkenPaletteLUT(dib, out colors);
|
|
|
Assert.AreEqual(2, colors);
|
|
|
|
|
|
Assert.AreEqual(0, lut[0]);
|
|
|
Assert.AreEqual(1, lut[1]);
|
|
|
|
|
|
for (int x = 2; x < palette.Length; x++)
|
|
|
{
|
|
|
Assert.AreEqual(0, lut[x]);
|
|
|
}
|
|
|
|
|
|
for (int x = 0; x < palette.Length; x++)
|
|
|
{
|
|
|
palette[x] = (uint)x;
|
|
|
}
|
|
|
|
|
|
lut = FreeImage.CreateShrunkenPaletteLUT(dib, out colors);
|
|
|
Assert.AreEqual(256, colors);
|
|
|
|
|
|
for (int x = 0; x < palette.Length; x++)
|
|
|
{
|
|
|
Assert.AreEqual(x, lut[x]);
|
|
|
}
|
|
|
|
|
|
uint[] testColors = new uint[] { 0xFF4F387C, 0xFF749178, 0xFF84D51A, 0xFF746B71, 0x74718163, 0x91648106 };
|
|
|
palette[0] = testColors[0];
|
|
|
palette[1] = testColors[1];
|
|
|
palette[2] = testColors[2];
|
|
|
palette[3] = testColors[3];
|
|
|
palette[4] = testColors[4];
|
|
|
palette[5] = testColors[5];
|
|
|
|
|
|
for (int x = testColors.Length; x < palette.Length; x++)
|
|
|
{
|
|
|
palette[x] = testColors[rand.Next(0, testColors.Length - 1)];
|
|
|
}
|
|
|
|
|
|
lut = FreeImage.CreateShrunkenPaletteLUT(dib, out colors);
|
|
|
Assert.AreEqual(testColors.Length, colors);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImage_Rotate4bit()
|
|
|
{
|
|
|
Palette orgPal, rotPal;
|
|
|
FIBITMAP rotated;
|
|
|
byte index;
|
|
|
dib = FreeImage.Allocate(2, 3, 4, 0, 0, 0);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
index = 1; if (!FreeImage.SetPixelIndex(dib, 0, 0, ref index)) throw new Exception();
|
|
|
index = 2; if (!FreeImage.SetPixelIndex(dib, 1, 0, ref index)) throw new Exception();
|
|
|
index = 3; if (!FreeImage.SetPixelIndex(dib, 0, 1, ref index)) throw new Exception();
|
|
|
index = 4; if (!FreeImage.SetPixelIndex(dib, 1, 1, ref index)) throw new Exception();
|
|
|
index = 5; if (!FreeImage.SetPixelIndex(dib, 0, 2, ref index)) throw new Exception();
|
|
|
index = 6; if (!FreeImage.SetPixelIndex(dib, 1, 2, ref index)) throw new Exception();
|
|
|
|
|
|
//
|
|
|
// 90 deg
|
|
|
//
|
|
|
|
|
|
rotated = FreeImage.Rotate4bit(dib, 90d);
|
|
|
Assert.IsFalse(rotated.IsNull);
|
|
|
Assert.AreEqual(3, FreeImage.GetWidth(rotated));
|
|
|
Assert.AreEqual(2, FreeImage.GetHeight(rotated));
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_BITMAP, FreeImage.GetImageType(rotated));
|
|
|
Assert.AreEqual(4, FreeImage.GetBPP(rotated));
|
|
|
orgPal = new Palette(dib);
|
|
|
rotPal = new Palette(rotated);
|
|
|
Assert.IsNotNull(orgPal);
|
|
|
Assert.IsNotNull(rotPal);
|
|
|
Assert.AreEqual(orgPal.Length, rotPal.Length);
|
|
|
for (int i = 0; i < orgPal.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(orgPal[i], rotPal[i]);
|
|
|
}
|
|
|
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 0, out index);
|
|
|
Assert.AreEqual(5, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 0, out index);
|
|
|
Assert.AreEqual(3, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 2, 0, out index);
|
|
|
Assert.AreEqual(1, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 1, out index);
|
|
|
Assert.AreEqual(6, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 1, out index);
|
|
|
Assert.AreEqual(4, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 2, 1, out index);
|
|
|
Assert.AreEqual(2, index);
|
|
|
FreeImage.UnloadEx(ref rotated);
|
|
|
|
|
|
//
|
|
|
// 180 deg
|
|
|
//
|
|
|
|
|
|
rotated = FreeImage.Rotate4bit(dib, 180d);
|
|
|
Assert.IsFalse(rotated.IsNull);
|
|
|
Assert.AreEqual(FreeImage.GetWidth(dib), FreeImage.GetWidth(rotated));
|
|
|
Assert.AreEqual(FreeImage.GetHeight(dib), FreeImage.GetHeight(rotated));
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_BITMAP, FreeImage.GetImageType(rotated));
|
|
|
Assert.AreEqual(4, FreeImage.GetBPP(rotated));
|
|
|
orgPal = new Palette(dib);
|
|
|
rotPal = new Palette(rotated);
|
|
|
Assert.IsNotNull(orgPal);
|
|
|
Assert.IsNotNull(rotPal);
|
|
|
Assert.AreEqual(orgPal.Length, rotPal.Length);
|
|
|
for (int i = 0; i < orgPal.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(orgPal[i], rotPal[i]);
|
|
|
}
|
|
|
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 0, out index);
|
|
|
Assert.AreEqual(6, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 0, out index);
|
|
|
Assert.AreEqual(5, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 1, out index);
|
|
|
Assert.AreEqual(4, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 1, out index);
|
|
|
Assert.AreEqual(3, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 2, out index);
|
|
|
Assert.AreEqual(2, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 2, out index);
|
|
|
Assert.AreEqual(1, index);
|
|
|
FreeImage.UnloadEx(ref rotated);
|
|
|
|
|
|
//
|
|
|
// 270 deg
|
|
|
//
|
|
|
|
|
|
rotated = FreeImage.Rotate4bit(dib, 270d);
|
|
|
Assert.IsFalse(rotated.IsNull);
|
|
|
Assert.AreEqual(3, FreeImage.GetWidth(rotated));
|
|
|
Assert.AreEqual(2, FreeImage.GetHeight(rotated));
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_BITMAP, FreeImage.GetImageType(rotated));
|
|
|
Assert.AreEqual(4, FreeImage.GetBPP(rotated));
|
|
|
orgPal = new Palette(dib);
|
|
|
rotPal = new Palette(rotated);
|
|
|
Assert.IsNotNull(orgPal);
|
|
|
Assert.IsNotNull(rotPal);
|
|
|
Assert.AreEqual(orgPal.Length, rotPal.Length);
|
|
|
for (int i = 0; i < orgPal.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(orgPal[i], rotPal[i]);
|
|
|
}
|
|
|
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 0, out index);
|
|
|
Assert.AreEqual(2, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 0, out index);
|
|
|
Assert.AreEqual(4, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 2, 0, out index);
|
|
|
Assert.AreEqual(6, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 0, 1, out index);
|
|
|
Assert.AreEqual(1, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 1, 1, out index);
|
|
|
Assert.AreEqual(3, index);
|
|
|
FreeImage.GetPixelIndex(rotated, 2, 1, out index);
|
|
|
Assert.AreEqual(5, index);
|
|
|
FreeImage.UnloadEx(ref rotated);
|
|
|
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[TestFixture]
|
|
|
public class FreeImageBitmapTest
|
|
|
{
|
|
|
ImageManager iManager = new ImageManager();
|
|
|
FIBITMAP dib = new FIBITMAP();
|
|
|
string freeImageCallback = null;
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
public void Init()
|
|
|
{
|
|
|
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[TestFixtureTearDown]
|
|
|
public void DeInit()
|
|
|
{
|
|
|
FreeImageEngine.Message -= new OutputMessageFunction(FreeImage_Message);
|
|
|
}
|
|
|
|
|
|
[SetUp]
|
|
|
public void InitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[TearDown]
|
|
|
public void DeInitEachTime()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
|
|
{
|
|
|
freeImageCallback = message;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void FreeImageBitmapConstructors()
|
|
|
{
|
|
|
Image bitmap;
|
|
|
FreeImageBitmap fib, fib2;
|
|
|
Stream stream;
|
|
|
Graphics g;
|
|
|
string filename = iManager.GetBitmapPath(ImageType.Odd, ImageColorType.Type_24);
|
|
|
Assert.IsNotNull(filename);
|
|
|
Assert.IsTrue(File.Exists(filename));
|
|
|
|
|
|
bitmap = new Bitmap(filename);
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
|
|
|
fib = new FreeImageBitmap(bitmap);
|
|
|
Assert.AreEqual(bitmap.Width, fib.Width);
|
|
|
Assert.AreEqual(bitmap.Height, fib.Height);
|
|
|
fib.Dispose();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(bitmap, new Size(100, 100));
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
bitmap.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename, FREE_IMAGE_FORMAT.FIF_UNKNOWN);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename, FREE_IMAGE_FORMAT.FIF_UNKNOWN, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
fib.Dispose();
|
|
|
|
|
|
stream = new FileStream(filename, FileMode.Open);
|
|
|
Assert.IsNotNull(stream);
|
|
|
|
|
|
fib = new FreeImageBitmap(stream);
|
|
|
fib.Dispose();
|
|
|
stream.Seek(0, SeekOrigin.Begin);
|
|
|
|
|
|
fib = new FreeImageBitmap(stream, FREE_IMAGE_FORMAT.FIF_UNKNOWN);
|
|
|
fib.Dispose();
|
|
|
stream.Seek(0, SeekOrigin.Begin);
|
|
|
|
|
|
fib = new FreeImageBitmap(stream, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
fib.Dispose();
|
|
|
stream.Seek(0, SeekOrigin.Begin);
|
|
|
|
|
|
fib = new FreeImageBitmap(stream, FREE_IMAGE_FORMAT.FIF_UNKNOWN, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
|
|
|
fib.Dispose();
|
|
|
stream.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100);
|
|
|
Assert.AreEqual(24, fib.ColorDepth);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
using (bitmap = new Bitmap(filename))
|
|
|
{
|
|
|
Assert.IsNotNull(bitmap);
|
|
|
using (g = Graphics.FromImage(bitmap))
|
|
|
{
|
|
|
Assert.IsNotNull(g);
|
|
|
fib = new FreeImageBitmap(100, 100, g);
|
|
|
}
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format1bppIndexed);
|
|
|
Assert.AreEqual(PixelFormat.Format1bppIndexed, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format4bppIndexed);
|
|
|
Assert.AreEqual(PixelFormat.Format4bppIndexed, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format8bppIndexed);
|
|
|
Assert.AreEqual(PixelFormat.Format8bppIndexed, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format16bppRgb555);
|
|
|
Assert.AreEqual(PixelFormat.Format16bppRgb555, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format16bppRgb565);
|
|
|
Assert.AreEqual(PixelFormat.Format16bppRgb565, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format24bppRgb);
|
|
|
Assert.AreEqual(PixelFormat.Format24bppRgb, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format32bppArgb);
|
|
|
Assert.AreEqual(PixelFormat.Format32bppArgb, fib.PixelFormat);
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(100, fib.Height);
|
|
|
|
|
|
stream = new MemoryStream();
|
|
|
BinaryFormatter formatter = new BinaryFormatter();
|
|
|
|
|
|
formatter.Serialize(stream, fib);
|
|
|
Assert.Greater(stream.Length, 0);
|
|
|
stream.Position = 0;
|
|
|
|
|
|
fib2 = formatter.Deserialize(stream) as FreeImageBitmap;
|
|
|
stream.Dispose();
|
|
|
fib.Dispose();
|
|
|
fib2.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename);
|
|
|
fib2 = new FreeImageBitmap(fib);
|
|
|
fib2.Dispose();
|
|
|
|
|
|
fib2 = new FreeImageBitmap(fib, new Size(31, 22));
|
|
|
Assert.AreEqual(31, fib2.Width);
|
|
|
Assert.AreEqual(22, fib2.Height);
|
|
|
fib2.Dispose();
|
|
|
fib.Dispose();
|
|
|
|
|
|
dib = FreeImage.Allocate(1000, 800, 24, 0xFF0000, 0xFF00, 0xFF);
|
|
|
Assert.IsFalse(dib.IsNull);
|
|
|
|
|
|
fib = new FreeImageBitmap(1000, 800, -(int)FreeImage.GetPitch(dib), FreeImage.GetPixelFormat(dib), FreeImage.GetScanLine(dib, 0));
|
|
|
fib.Dispose();
|
|
|
FreeImage.UnloadEx(ref dib);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public unsafe void Properties()
|
|
|
{
|
|
|
string filename = iManager.GetBitmapPath(ImageType.Even, ImageColorType.Type_32);
|
|
|
Assert.IsNotNull(filename);
|
|
|
Assert.IsTrue(File.Exists(filename));
|
|
|
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(filename);
|
|
|
Assert.IsFalse(fib.HasPalette);
|
|
|
|
|
|
try
|
|
|
{
|
|
|
Palette palette = fib.Palette;
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
}
|
|
|
|
|
|
Assert.IsFalse(fib.HasBackgroundColor);
|
|
|
fib.BackgroundColor = Color.LightSeaGreen;
|
|
|
Assert.IsTrue(fib.HasBackgroundColor);
|
|
|
Assert.That(
|
|
|
Color.LightSeaGreen.B == fib.BackgroundColor.Value.B &&
|
|
|
Color.LightSeaGreen.G == fib.BackgroundColor.Value.G &&
|
|
|
Color.LightSeaGreen.R == fib.BackgroundColor.Value.R);
|
|
|
fib.BackgroundColor = null;
|
|
|
Assert.IsFalse(fib.HasBackgroundColor);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(100, 100, PixelFormat.Format1bppIndexed);
|
|
|
ImageFlags flags = (ImageFlags)fib.Flags;
|
|
|
Assert.That((flags & ImageFlags.ColorSpaceRgb) == ImageFlags.ColorSpaceRgb);
|
|
|
Assert.That((flags & ImageFlags.HasAlpha) != ImageFlags.HasAlpha);
|
|
|
Assert.That((flags & ImageFlags.HasRealDpi) != ImageFlags.HasRealDpi);
|
|
|
Assert.That((flags & ImageFlags.HasTranslucent) != ImageFlags.HasTranslucent);
|
|
|
fib.Dispose();
|
|
|
|
|
|
dib = FreeImage.Allocate(100, 100, 32, 0xFF0000, 0xFF00, 0xFF);
|
|
|
FIICCPROFILE* prof = (FIICCPROFILE*)FreeImage.CreateICCProfile(dib, new byte[] { 0, 1, 2, 3 }, 4);
|
|
|
fib = new FreeImageBitmap(dib);
|
|
|
Scanline<RGBQUAD> sc = (Scanline<RGBQUAD>)fib.GetScanline(0);
|
|
|
RGBQUAD rgbq = sc[0];
|
|
|
rgbq.rgbReserved = 127;
|
|
|
sc[0] = rgbq;
|
|
|
flags = (ImageFlags)fib.Flags;
|
|
|
Assert.That((flags & ImageFlags.HasAlpha) == ImageFlags.HasAlpha);
|
|
|
Assert.That((flags & ImageFlags.HasRealDpi) != ImageFlags.HasRealDpi);
|
|
|
Assert.That((flags & ImageFlags.HasTranslucent) == ImageFlags.HasTranslucent);
|
|
|
fib.Dispose();
|
|
|
fib = null;
|
|
|
GC.Collect(2, GCCollectionMode.Forced);
|
|
|
GC.WaitForPendingFinalizers();
|
|
|
|
|
|
fib = new FreeImageBitmap(iManager.GetBitmapPath(ImageType.Metadata, ImageColorType.Type_01_Dither));
|
|
|
int[] propList = fib.PropertyIdList;
|
|
|
Assert.IsNotNull(propList);
|
|
|
Assert.Greater(propList.Length, 0);
|
|
|
PropertyItem[] propItemList = fib.PropertyItems;
|
|
|
Assert.IsNotNull(propItemList);
|
|
|
Assert.Greater(propItemList.Length, 0);
|
|
|
Assert.IsNotNull(fib.RawFormat);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(iManager.GetBitmapPath(ImageType.Multipaged, ImageColorType.Type_01_Dither));
|
|
|
Assert.Greater(fib.FrameCount, 1);
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetBounds()
|
|
|
{
|
|
|
Random rand = new Random();
|
|
|
int height = rand.Next(1, 100), width = rand.Next(1, 100);
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(width, height, PixelFormat.Format24bppRgb);
|
|
|
|
|
|
Assert.AreEqual(fib.VerticalResolution, fib.HorizontalResolution);
|
|
|
GraphicsUnit unit;
|
|
|
RectangleF rect;
|
|
|
|
|
|
unit = GraphicsUnit.Display;
|
|
|
rect = fib.GetBounds(ref unit);
|
|
|
|
|
|
Assert.AreEqual(GraphicsUnit.Pixel, unit);
|
|
|
Assert.AreEqual(width, (int)rect.Width);
|
|
|
Assert.AreEqual(height, (int)rect.Height);
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetPropertyItem()
|
|
|
{
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(iManager.GetBitmapPath(ImageType.Metadata, ImageColorType.Type_01_Dither));
|
|
|
int[] list = fib.PropertyIdList;
|
|
|
Assert.IsNotNull(list);
|
|
|
Assert.Greater(list.Length, 0);
|
|
|
|
|
|
for (int i = 0; i < list.Length; i++)
|
|
|
{
|
|
|
PropertyItem item = fib.GetPropertyItem(list[i]);
|
|
|
Assert.IsNotNull(item);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void RemovePropertyItem()
|
|
|
{
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(iManager.GetBitmapPath(ImageType.Metadata, ImageColorType.Type_01_Dither));
|
|
|
Random rand = new Random();
|
|
|
int[] list = fib.PropertyIdList;
|
|
|
int length = list.Length;
|
|
|
Assert.Greater(list.Length, 0);
|
|
|
|
|
|
int id = list[rand.Next(0, list.Length - 1)];
|
|
|
Assert.IsNotNull(fib.GetPropertyItem(id));
|
|
|
fib.RemovePropertyItem(id);
|
|
|
list = fib.PropertyIdList;
|
|
|
Assert.That((list.Length + 1) == length);
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public unsafe void RotateFlip()
|
|
|
{
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(2, 2, PixelFormat.Format32bppArgb);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.RotateNoneFlipX);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.RotateNoneFlipXY);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.Rotate90FlipNone);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.Rotate90FlipX);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
ResetRotateBitmap(fib);
|
|
|
fib.RotateFlip(RotateFlipType.Rotate90FlipY);
|
|
|
Assert.AreEqual(0x00000004, ((int*)fib.GetScanlinePointer(0))[0]);
|
|
|
Assert.AreEqual(0x00000002, ((int*)fib.GetScanlinePointer(0))[1]);
|
|
|
Assert.AreEqual(0x00000003, ((int*)fib.GetScanlinePointer(1))[0]);
|
|
|
Assert.AreEqual(0x00000001, ((int*)fib.GetScanlinePointer(1))[1]);
|
|
|
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
private unsafe void ResetRotateBitmap(FreeImageBitmap fib)
|
|
|
{
|
|
|
((int*)fib.GetScanlinePointer(0))[0] = 0x00000001;
|
|
|
((int*)fib.GetScanlinePointer(0))[1] = 0x00000002;
|
|
|
((int*)fib.GetScanlinePointer(1))[0] = 0x00000003;
|
|
|
((int*)fib.GetScanlinePointer(1))[1] = 0x00000004;
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public unsafe void GetSetPixel()
|
|
|
{
|
|
|
Random rand = new Random();
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(2, 1, PixelFormat.Format1bppIndexed);
|
|
|
Palette palette = fib.Palette;
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
palette[i] = (uint)rand.Next(int.MinValue, int.MaxValue);
|
|
|
fib.SetPixel(i, 0, palette[i]);
|
|
|
}
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(fib.GetPixel(i, 0), palette[i].Color);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(16, 1, PixelFormat.Format4bppIndexed);
|
|
|
palette = fib.Palette;
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
palette[i] = (uint)rand.Next(int.MinValue, int.MaxValue);
|
|
|
fib.SetPixel(i, 0, palette[i]);
|
|
|
}
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(fib.GetPixel(i, 0), palette[i].Color);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(256, 1, PixelFormat.Format8bppIndexed);
|
|
|
palette = fib.Palette;
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
palette[i] = (uint)rand.Next(int.MinValue, int.MaxValue);
|
|
|
fib.SetPixel(i, 0, palette[i]);
|
|
|
}
|
|
|
for (int i = 0; i < palette.Length; i++)
|
|
|
{
|
|
|
Assert.AreEqual(fib.GetPixel(i, 0), palette[i].Color);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(1000, 1, PixelFormat.Format16bppRgb555);
|
|
|
for (int i = 0; i < 1000; i++)
|
|
|
{
|
|
|
Color orgColor = Color.FromArgb(rand.Next(int.MinValue, int.MaxValue));
|
|
|
fib.SetPixel(i, 0, orgColor);
|
|
|
Color newColor = fib.GetPixel(i, 0);
|
|
|
Assert.That(Math.Abs(orgColor.B - newColor.B) <= 8);
|
|
|
Assert.That(Math.Abs(orgColor.G - newColor.G) <= 8);
|
|
|
Assert.That(Math.Abs(orgColor.R - newColor.R) <= 8);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(1000, 1, PixelFormat.Format24bppRgb);
|
|
|
for (int i = 0; i < 1000; i++)
|
|
|
{
|
|
|
Color orgColor = Color.FromArgb(rand.Next(int.MinValue, int.MaxValue));
|
|
|
fib.SetPixel(i, 0, orgColor);
|
|
|
Color newColor = fib.GetPixel(i, 0);
|
|
|
Assert.AreEqual(orgColor.B, newColor.B);
|
|
|
Assert.AreEqual(orgColor.G, newColor.G);
|
|
|
Assert.AreEqual(orgColor.R, newColor.R);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(1000, 1, PixelFormat.Format32bppArgb);
|
|
|
for (int i = 0; i < 1000; i++)
|
|
|
{
|
|
|
Color orgColor = Color.FromArgb(rand.Next(int.MinValue, int.MaxValue));
|
|
|
fib.SetPixel(i, 0, orgColor);
|
|
|
Color newColor = fib.GetPixel(i, 0);
|
|
|
Assert.AreEqual(orgColor.B, newColor.B);
|
|
|
Assert.AreEqual(orgColor.G, newColor.G);
|
|
|
Assert.AreEqual(orgColor.R, newColor.R);
|
|
|
Assert.AreEqual(orgColor.A, newColor.A);
|
|
|
}
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void SaveAdd()
|
|
|
{
|
|
|
string filename = @"saveadd.tif";
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(100, 100, PixelFormat.Format24bppRgb);
|
|
|
try
|
|
|
{
|
|
|
fib.SaveAdd();
|
|
|
Assert.Fail();
|
|
|
}
|
|
|
catch { }
|
|
|
Assert.IsFalse(File.Exists(filename));
|
|
|
fib.Save(filename);
|
|
|
fib.AdjustBrightness(0.3d);
|
|
|
fib.SaveAdd();
|
|
|
FreeImageBitmap other = new FreeImageBitmap(100, 100, PixelFormat.Format24bppRgb);
|
|
|
foreach (Scanline<RGBTRIPLE> scanline in other)
|
|
|
{
|
|
|
for (int i = 0; i < scanline.Length; i++)
|
|
|
{
|
|
|
scanline[i] = new RGBTRIPLE(Color.FromArgb(0x339955));
|
|
|
}
|
|
|
}
|
|
|
fib.SaveAdd(other);
|
|
|
other.SaveAdd(filename);
|
|
|
other.Dispose();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(filename);
|
|
|
Assert.AreEqual(4, fib.FrameCount);
|
|
|
fib.Dispose();
|
|
|
File.Delete(filename);
|
|
|
Assert.IsFalse(File.Exists(filename));
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void Clone()
|
|
|
{
|
|
|
FreeImageBitmap fib = new FreeImageBitmap(iManager.GetBitmapPath(ImageType.Even, ImageColorType.Type_24));
|
|
|
object obj = new object();
|
|
|
fib.Tag = obj;
|
|
|
FreeImageBitmap clone = fib.Clone() as FreeImageBitmap;
|
|
|
Assert.IsNotNull(clone);
|
|
|
Assert.AreEqual(fib.Width, clone.Width);
|
|
|
Assert.AreEqual(fib.Height, clone.Height);
|
|
|
Assert.AreEqual(fib.ColorDepth, clone.ColorDepth);
|
|
|
Assert.AreSame(fib.Tag, clone.Tag);
|
|
|
Assert.AreEqual(fib.ImageFormat, clone.ImageFormat);
|
|
|
clone.Dispose();
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void LockBits()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[Ignore]
|
|
|
public void UnlockBits()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetTypeConvertedInstance()
|
|
|
{
|
|
|
using (FreeImageBitmap fib = new FreeImageBitmap(10, 10, PixelFormat.Format8bppIndexed))
|
|
|
{
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_BITMAP, fib.ImageType);
|
|
|
using (FreeImageBitmap conv = fib.GetTypeConvertedInstance(FREE_IMAGE_TYPE.FIT_DOUBLE, true))
|
|
|
{
|
|
|
Assert.IsNotNull(conv);
|
|
|
Assert.AreEqual(FREE_IMAGE_TYPE.FIT_DOUBLE, conv.ImageType);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetColorConvertedInstance()
|
|
|
{
|
|
|
using (FreeImageBitmap fib = new FreeImageBitmap(10, 10, PixelFormat.Format32bppArgb))
|
|
|
{
|
|
|
Assert.AreEqual(32, fib.ColorDepth);
|
|
|
using (FreeImageBitmap conv = fib.GetColorConvertedInstance(FREE_IMAGE_COLOR_DEPTH.FICD_24_BPP))
|
|
|
{
|
|
|
Assert.IsNotNull(conv);
|
|
|
Assert.AreEqual(24, conv.ColorDepth);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetScaledInstance()
|
|
|
{
|
|
|
using (FreeImageBitmap fib = new FreeImageBitmap(100, 80, PixelFormat.Format32bppArgb))
|
|
|
{
|
|
|
Assert.AreEqual(100, fib.Width);
|
|
|
Assert.AreEqual(80, fib.Height);
|
|
|
using (FreeImageBitmap conv = fib.GetScaledInstance(80, 60, FREE_IMAGE_FILTER.FILTER_BICUBIC))
|
|
|
{
|
|
|
Assert.IsNotNull(conv);
|
|
|
Assert.AreEqual(80, conv.Width);
|
|
|
Assert.AreEqual(60, conv.Height);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public unsafe void GetRotatedInstance()
|
|
|
{
|
|
|
using (FreeImageBitmap fib = new FreeImageBitmap(2, 2, PixelFormat.Format32bppArgb))
|
|
|
{
|
|
|
((int*)fib.GetScanlinePointer(0))[0] = 0x1;
|
|
|
((int*)fib.GetScanlinePointer(0))[1] = 0x2;
|
|
|
((int*)fib.GetScanlinePointer(1))[0] = 0x3;
|
|
|
((int*)fib.GetScanlinePointer(1))[1] = 0x4;
|
|
|
using (FreeImageBitmap conv = fib.GetRotatedInstance(90d))
|
|
|
{
|
|
|
Assert.IsNotNull(conv);
|
|
|
Assert.AreEqual(((int*)conv.GetScanlinePointer(0))[0], 0x3);
|
|
|
Assert.AreEqual(((int*)conv.GetScanlinePointer(0))[1], 0x1);
|
|
|
Assert.AreEqual(((int*)conv.GetScanlinePointer(1))[0], 0x4);
|
|
|
Assert.AreEqual(((int*)conv.GetScanlinePointer(1))[1], 0x2);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetScanline()
|
|
|
{
|
|
|
FreeImageBitmap fib;
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format1bppIndexed);
|
|
|
Scanline<FI1BIT> scanline1 = (Scanline<FI1BIT>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format4bppIndexed);
|
|
|
Scanline<FI4BIT> scanline2 = (Scanline<FI4BIT>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format8bppIndexed);
|
|
|
Scanline<Byte> scanline3 = (Scanline<Byte>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format16bppRgb555);
|
|
|
Scanline<FI16RGB555> scanline4 = (Scanline<FI16RGB555>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format16bppRgb565);
|
|
|
Scanline<FI16RGB565> scanline5 = (Scanline<FI16RGB565>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format24bppRgb);
|
|
|
Scanline<RGBTRIPLE> scanline6 = (Scanline<RGBTRIPLE>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format32bppArgb);
|
|
|
Scanline<RGBQUAD> scanline7 = (Scanline<RGBQUAD>)fib.GetScanline(0);
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void GetScanlines()
|
|
|
{
|
|
|
FreeImageBitmap fib;
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format1bppIndexed);
|
|
|
IList<Scanline<FI1BIT>> scanline01 = (IList<Scanline<FI1BIT>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format4bppIndexed);
|
|
|
IList<Scanline<FI4BIT>> scanline02 = (IList<Scanline<FI4BIT>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format8bppIndexed);
|
|
|
IList<Scanline<Byte>> scanline03 = (IList<Scanline<Byte>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format16bppRgb555);
|
|
|
IList<Scanline<FI16RGB555>> scanline04 = (IList<Scanline<FI16RGB555>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format16bppRgb565);
|
|
|
IList<Scanline<FI16RGB565>> scanline05 = (IList<Scanline<FI16RGB565>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format24bppRgb);
|
|
|
IList<Scanline<RGBTRIPLE>> scanline06 = (IList<Scanline<RGBTRIPLE>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, PixelFormat.Format32bppArgb);
|
|
|
IList<Scanline<RGBQUAD>> scanline07 = (IList<Scanline<RGBQUAD>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_COMPLEX);
|
|
|
IList<Scanline<FICOMPLEX>> scanline08 = (IList<Scanline<FICOMPLEX>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_DOUBLE);
|
|
|
IList<Scanline<Double>> scanline09 = (IList<Scanline<Double>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_FLOAT);
|
|
|
IList<Scanline<Single>> scanline10 = (IList<Scanline<Single>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_INT16);
|
|
|
IList<Scanline<Int16>> scanline11 = (IList<Scanline<Int16>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_INT32);
|
|
|
IList<Scanline<Int32>> scanline12 = (IList<Scanline<Int32>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_RGB16);
|
|
|
IList<Scanline<FIRGB16>> scanline13 = (IList<Scanline<FIRGB16>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_RGBA16);
|
|
|
IList<Scanline<FIRGBA16>> scanline14 = (IList<Scanline<FIRGBA16>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_RGBAF);
|
|
|
IList<Scanline<FIRGBAF>> scanline15 = (IList<Scanline<FIRGBAF>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_RGBF);
|
|
|
IList<Scanline<FIRGBF>> scanline16 = (IList<Scanline<FIRGBF>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_UINT16);
|
|
|
IList<Scanline<UInt16>> scanline17 = (IList<Scanline<UInt16>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
|
|
|
fib = new FreeImageBitmap(10, 10, FREE_IMAGE_TYPE.FIT_UINT32);
|
|
|
IList<Scanline<UInt32>> scanline18 = (IList<Scanline<UInt32>>)fib.GetScanlines();
|
|
|
fib.Dispose();
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
|
public void Operators()
|
|
|
{
|
|
|
FreeImageBitmap fib1 = null, fib2 = null;
|
|
|
Assert.IsTrue(fib1 == fib2);
|
|
|
Assert.IsFalse(fib1 != fib2);
|
|
|
Assert.IsTrue(fib1 == null);
|
|
|
Assert.IsFalse(fib1 != null);
|
|
|
|
|
|
fib1 = new FreeImageBitmap(10, 10, PixelFormat.Format24bppRgb);
|
|
|
Assert.IsFalse(fib1 == fib2);
|
|
|
Assert.IsTrue(fib1 != fib2);
|
|
|
|
|
|
fib2 = fib1;
|
|
|
fib1 = null;
|
|
|
Assert.IsFalse(fib1 == fib2);
|
|
|
Assert.IsTrue(fib1 != fib2);
|
|
|
|
|
|
fib1 = new FreeImageBitmap(10, 9, PixelFormat.Format24bppRgb);
|
|
|
Assert.IsFalse(fib1 == fib2);
|
|
|
Assert.IsTrue(fib1 != fib2);
|
|
|
|
|
|
fib2.Dispose();
|
|
|
fib2 = fib1;
|
|
|
|
|
|
Assert.IsTrue(fib1 == fib2);
|
|
|
Assert.IsFalse(fib1 != fib2);
|
|
|
|
|
|
fib2 = fib1.Clone() as FreeImageBitmap;
|
|
|
Assert.IsTrue(fib1 == fib2);
|
|
|
Assert.IsFalse(fib1 != fib2);
|
|
|
|
|
|
fib1.Dispose();
|
|
|
fib2.Dispose();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public class Program
|
|
|
{
|
|
|
static ImageManager iManager = new ImageManager();
|
|
|
static ImportedFunctionsTest ift = new ImportedFunctionsTest();
|
|
|
static ImportedStructsTest ist = new ImportedStructsTest();
|
|
|
static WrapperStructsTest wst = new WrapperStructsTest();
|
|
|
static WrapperFunctionsTest wft = new WrapperFunctionsTest();
|
|
|
static FreeImageBitmapTest fib = new FreeImageBitmapTest();
|
|
|
|
|
|
public static void Main()
|
|
|
{
|
|
|
List<TestClass> classList = new List<TestClass>(5);
|
|
|
classList.Add(new TestClass(ift));
|
|
|
classList.Add(new TestClass(ist));
|
|
|
classList.Add(new TestClass(wst));
|
|
|
classList.Add(new TestClass(wft));
|
|
|
classList.Add(new TestClass(fib));
|
|
|
|
|
|
for (int i = 0; i < 10000; )
|
|
|
{
|
|
|
for (int j = 0; j < classList.Count; j++)
|
|
|
classList[j].ExecuteTests();
|
|
|
Console.WriteLine("Loop {0}", ++i);
|
|
|
//GC.Collect();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public class TestClass
|
|
|
{
|
|
|
private object classMember = null;
|
|
|
|
|
|
private MethodInfo classSetUp = null;
|
|
|
private MethodInfo classTearDown = null;
|
|
|
|
|
|
private MethodInfo testSetUp = null;
|
|
|
private MethodInfo testTearDown = null;
|
|
|
|
|
|
private List<MethodInfo> methodList = null;
|
|
|
|
|
|
private static object[] parameters = { };
|
|
|
|
|
|
public TestClass(object classMember)
|
|
|
{
|
|
|
this.classMember = classMember;
|
|
|
MethodInfo[] infos = classMember.GetType().GetMethods(System.Reflection.BindingFlags.Public | BindingFlags.Instance);
|
|
|
methodList = new List<MethodInfo>(infos.Length);
|
|
|
|
|
|
foreach (MethodInfo info in infos)
|
|
|
{
|
|
|
object[] attributes = info.GetCustomAttributes(false);
|
|
|
foreach (Attribute attribute in attributes)
|
|
|
{
|
|
|
if (attribute.GetType() == typeof(TestAttribute))
|
|
|
{
|
|
|
methodList.Add(info);
|
|
|
break;
|
|
|
}
|
|
|
else if (attribute.GetType() == typeof(TestFixtureSetUpAttribute))
|
|
|
{
|
|
|
classSetUp = info;
|
|
|
break;
|
|
|
}
|
|
|
else if (attribute.GetType() == typeof(TestFixtureTearDownAttribute))
|
|
|
{
|
|
|
classTearDown = info;
|
|
|
break;
|
|
|
}
|
|
|
else if (attribute.GetType() == typeof(SetUpAttribute))
|
|
|
{
|
|
|
testSetUp = info;
|
|
|
break;
|
|
|
}
|
|
|
else if (attribute.GetType() == typeof(TearDownAttribute))
|
|
|
{
|
|
|
testTearDown = info;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void ExecuteTests()
|
|
|
{
|
|
|
if (classSetUp != null)
|
|
|
classSetUp.Invoke(classMember, parameters);
|
|
|
|
|
|
foreach (MethodInfo method in methodList)
|
|
|
{
|
|
|
if (testSetUp != null)
|
|
|
testSetUp.Invoke(classMember, parameters);
|
|
|
|
|
|
try
|
|
|
{
|
|
|
Console.WriteLine(method.ToString());
|
|
|
method.Invoke(classMember, parameters);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
while (ex.InnerException != null)
|
|
|
ex = ex.InnerException;
|
|
|
Console.WriteLine(ex.ToString());
|
|
|
Environment.Exit(99);
|
|
|
}
|
|
|
|
|
|
if (testTearDown != null)
|
|
|
testTearDown.Invoke(classMember, parameters);
|
|
|
}
|
|
|
|
|
|
if (classTearDown != null)
|
|
|
classTearDown.Invoke(classMember, parameters);
|
|
|
}
|
|
|
}
|
|
|
} |