FastWfcNet 1.0.1

dotnet add package FastWfcNet --version 1.0.1
NuGet\Install-Package FastWfcNet -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastWfcNet" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastWfcNet --version 1.0.1
#r "nuget: FastWfcNet, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FastWfcNet as a Cake Addin
#addin nuget:?package=FastWfcNet&version=1.0.1

// Install FastWfcNet as a Cake Tool
#tool nuget:?package=FastWfcNet&version=1.0.1

FastWfcNet is a library that generates 2D output data that is locally similar to the 2D input data. This implementation is a port of the fast-wcf library to C# .NET. Several modifications have been made to use C# / .NET features where possible.

Highlights

  • .NET Standard 2.0 library with no dependencies

Features

  • 2D Overlapping model with improved floor pattern detection
  • 2D Tiling model with support for tiles that have no symmetry
  • Fully documented codebase

How To Use The Library

The following example is taken from the demo application's source code and shows how a bitmap that is locally similar to the input bitmap can be generated.

/// <summary>
/// Runs WFC with overlapping model in a thread creating a <see cref="Bitmap"/> that is based
/// on the specified input.
/// </summary>
/// <param name="inputBitmap">The input image.</param>
/// <param name="options">The overlapping model options.</param>
/// <param name="seed">The seed for the random number generator.</param>
/// <returns>The resulting image or <c>null</c>.</returns>
private static Task<Bitmap> RunWfcAsync(Bitmap inputBitmap, OverlappingWfcOptions options, int seed)
{
    return Task.Run<Bitmap>(() =>
    {
        // Fetch the pixels from the input image (convert Colors to ARGB for speed) and store them
        // in an Array2D.
        var inputColors = new Array2D<int>((uint)inputBitmap.Height, (uint)inputBitmap.Width);
        for (uint x = 0; x < inputColors.Width; x++)
            for (uint y = 0; y < inputColors.Height; y++)
                inputColors[y, x] = inputBitmap.GetPixel((int)x, (int)y).ToArgb();

        // Create WFC overlapping model instance with the created array, the options and the seed
        // for the random number generator.
        var wfc = new OverlappingWfc<int>(inputColors, options, seed);

        // Run the WFC algorithm. The result is an Array2D with the result pixels/colors. Return value
        // is null, if the WFC failed to create a solution without contradictions. In this case one
        // should change the settings or try again with a different seed for the random number generator.
        var result = wfc.Run();

        // Failed...
        if (result == null)
            return null;

        // Success: extract pixels/colors and put them into an image.
        var resultBitmap = new Bitmap((int)result.Width, (int)result.Height);
        for (uint x = 0; x < result.Width; x++)
            for (uint y = 0; y < result.Height; y++)
                resultBitmap.SetPixel((int)x, (int)y, Color.FromArgb(result[y, x]));

        return resultBitmap;
    });
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 709 4/28/2019
1.0.0 583 4/25/2019