diff --git a/.bonsai/Bonsai.config b/.bonsai/Bonsai.config
new file mode 100644
index 0000000..ac40c8a
--- /dev/null
+++ b/.bonsai/Bonsai.config
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.bonsai/NuGet.config b/.bonsai/NuGet.config
new file mode 100644
index 0000000..aa5beec
--- /dev/null
+++ b/.bonsai/NuGet.config
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.bonsai/Setup.cmd b/.bonsai/Setup.cmd
new file mode 100644
index 0000000..92d983d
--- /dev/null
+++ b/.bonsai/Setup.cmd
@@ -0,0 +1,4 @@
+@echo off
+pushd %~dp0
+powershell -ExecutionPolicy Bypass -File ./Setup.ps1
+popd
\ No newline at end of file
diff --git a/.bonsai/Setup.ps1 b/.bonsai/Setup.ps1
new file mode 100644
index 0000000..01cfba6
--- /dev/null
+++ b/.bonsai/Setup.ps1
@@ -0,0 +1,21 @@
+Push-Location $PSScriptRoot
+if (!(Test-Path "./Bonsai.exe")) {
+ $release = "https://github.com/bonsai-rx/bonsai/releases/latest/download/Bonsai.zip"
+ $configPath = "./Bonsai.config"
+ if (Test-Path $configPath) {
+ [xml]$config = Get-Content $configPath
+ $bootstrapper = $config.PackageConfiguration.Packages.Package.where{$_.id -eq 'Bonsai'}
+ if ($bootstrapper) {
+ $version = $bootstrapper.version
+ $release = "https://github.com/bonsai-rx/bonsai/releases/download/$version/Bonsai.zip"
+ }
+ }
+ Invoke-WebRequest $release -OutFile "temp.zip"
+ Move-Item -Path "NuGet.config" "temp.config" -ErrorAction SilentlyContinue
+ Expand-Archive "temp.zip" -DestinationPath "." -Force
+ Move-Item -Path "temp.config" "NuGet.config" -Force -ErrorAction SilentlyContinue
+ Remove-Item -Path "temp.zip"
+ Remove-Item -Path "Bonsai32.exe"
+}
+& .\Bonsai.exe --no-editor
+Pop-Location
\ No newline at end of file
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
new file mode 100644
index 0000000..d32441d
--- /dev/null
+++ b/.config/dotnet-tools.json
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "docfx": {
+ "version": "2.78.3",
+ "commands": [
+ "docfx"
+ ],
+ "rollForward": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
index 74ef938..c9a9d0d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,27 +1,46 @@
-# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
-###############################
-# Core EditorConfig Options #
-###############################
-# All files
+root = true
+
[*]
indent_style = space
-# XML project files
-[*.{csproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
+#--------------------------------------------------------------------------------------------------
+# XML, JSON, and web files
+#--------------------------------------------------------------------------------------------------
+[*.{xml,csproj,vcxproj,vcxproj.filters,shproj,props,targets,config,nuspec,resx,vsixmanifest,wxs,vstemplate,slnx}]
indent_size = 2
-# XML config files
-[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
+[*.json]
indent_size = 2
-# Code files
-[*.{cs,csx}]
+[*.{html,css}]
+indent_size = 2
+
+#--------------------------------------------------------------------------------------------------
+# C++
+#--------------------------------------------------------------------------------------------------
+[*.{c,cpp,h,hpp,ixx}]
indent_size = 4
+charset = utf-8-bom
+trim_trailing_whitespace = true
insert_final_newline = true
+
+#--------------------------------------------------------------------------------------------------
+# C#
+#--------------------------------------------------------------------------------------------------
+[*.{cs,csx}]
+indent_size = 4
charset = utf-8-bom
-###############################
-# .NET Coding Conventions #
-###############################
-[*.{cs}]
-# Organize usings
-dotnet_sort_system_directives_first = true
\ No newline at end of file
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+# Language keyword vs full type name
+# Predefined for members, etc does not create a message because the explicitly sized types are conveient in interop scenarios where the bit size matters.
+dotnet_style_predefined_type_for_locals_parameters_members = true:none
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# Instantiate argument exceptions correctly
+dotnet_diagnostic.CA2208.severity = warning
+
+# Don't complain about not using modern collection syntax
+dotnet_style_prefer_collection_expression = never
+csharp_style_prefer_range_operator = false
diff --git a/.gitattributes b/.gitattributes
index 03051dc..601a4e2 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -8,6 +8,7 @@
# Config
*.gitignore text
*.gitattributes text
+*.gitmodules text eol=lf
*.editorconfig text
*.git-blame-ignore-revs text
*.sln text
@@ -38,4 +39,5 @@ LICENSE text
# Graphics
*.png binary
*.ico binary
-*.svg text
\ No newline at end of file
+*.gif binary
+*.svg text
diff --git a/.github/workflows/Bonsai.Tld.yml b/.github/workflows/Bonsai.Tld.yml
new file mode 100644
index 0000000..599324e
--- /dev/null
+++ b/.github/workflows/Bonsai.Tld.yml
@@ -0,0 +1,344 @@
+# =======================================================================================================================================================================
+# Bonsai.Tld CI/CD
+# =======================================================================================================================================================================
+# Index:
+# * Build, test, and package .NET
+# * Build documentation
+# * Render workflow images
+# * Publish packages to GitHub
+# * Publish packages to NuGet.org
+# * Publish documentation
+# =======================================================================================================================================================================
+# Note that this is a generic workflow meant for all Bonsai packages. Minor local modifications are fine, see https://github.com/bonsai-rx/prefect for more information.
+# =======================================================================================================================================================================
+name: Bonsai.Tld
+on:
+ push:
+ # This prevents tag pushes from triggering this workflow
+ branches: ['*']
+ pull_request:
+ release:
+ types: [published]
+ workflow_dispatch:
+env:
+ DOTNET_NOLOGO: true
+ DOTNET_CLI_TELEMETRY_OPTOUT: true
+ DOTNET_GENERATE_ASPNET_CERTIFICATE: false
+ ContinuousIntegrationBuild: true
+jobs:
+ # =====================================================================================================================================================================
+ # Build, test, and package .NET
+ # ___ _ _ _ _ _ _ _ _ _ ___ _____
+ # | _ )_ _(_) |__| | | |_ ___ __| |_ __ _ _ _ __| | _ __ __ _ __| |____ _ __ _ ___ | \| | __|_ _|
+ # | _ \ || | | / _` |_ | _/ -_|_-< _|_ / _` | ' \/ _` | | '_ \/ _` / _| / / _` / _` / -_) _| .` | _| | |
+ # |___/\_,_|_|_\__,_( ) \__\___/__/\__( ) \__,_|_||_\__,_| | .__/\__,_\__|_\_\__,_\__, \___| (_)_|\_|___| |_|
+ # |/ |/ |_| |___/
+ # =====================================================================================================================================================================
+ build:
+ strategy:
+ fail-fast: false
+ matrix:
+ platform:
+ - name: Windows x64
+ os: windows-latest
+ rid: win-x64
+ - name: Linux x64
+ os: ubuntu-22.04
+ rid: linux-x64
+ configuration: ['debug', 'release']
+ include:
+ - platform:
+ rid: win-x64
+ configuration: release
+ collect-packages: true
+ name: ${{matrix.platform.name}} ${{matrix.configuration}}
+ runs-on: ${{matrix.platform.os}}
+ outputs:
+ need-workflow-image-render: ${{steps.configure-build.outputs.need-workflow-image-render}}
+ steps:
+ # ----------------------------------------------------------------------- Checkout
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ # ----------------------------------------------------------------------- Set up tools
+ - name: Set up .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.x
+
+ # ----------------------------------------------------------------------- Configure build
+ - name: Configure build
+ id: configure-build
+ uses: bonsai-rx/configure-build@v1
+
+ # ----------------------------------------------------------------------- Build
+ - name: Restore
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build --no-restore --configuration ${{matrix.configuration}}
+
+ # ----------------------------------------------------------------------- Pack
+ - name: Pack
+ id: pack
+ run: dotnet pack --no-restore --no-build --configuration ${{matrix.configuration}}
+
+ # ----------------------------------------------------------------------- Test
+ - name: Test .NET Framework 4.7.2
+ run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net472
+ - name: Test .NET 8
+ run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net8.0
+ - name: Test .NET 8 Windows
+ if: matrix.platform.rid == 'win-x64'
+ run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net8.0-windows
+
+ # ----------------------------------------------------------------------- Collect artifacts
+ - name: Collect NuGet packages
+ uses: actions/upload-artifact@v4
+ if: matrix.collect-packages && steps.pack.outcome == 'success' && always()
+ with:
+ name: Packages
+ if-no-files-found: error
+ path: artifacts/package/${{matrix.configuration}}/**
+
+ # =====================================================================================================================================================================
+ # Build documentation
+ # ___ _ _ _ _ _ _ _
+ # | _ )_ _(_) |__| | __| |___ __ _ _ _ __ ___ _ _| |_ __ _| |_(_)___ _ _
+ # | _ \ || | | / _` | / _` / _ \/ _| || | ' \/ -_) ' \ _/ _` | _| / _ \ ' \
+ # |___/\_,_|_|_\__,_| \__,_\___/\__|\_,_|_|_|_\___|_||_\__\__,_|\__|_\___/_||_|
+ # =====================================================================================================================================================================
+ build-documentation:
+ name: Build documentation
+ runs-on: ubuntu-latest
+ steps:
+ # ----------------------------------------------------------------------- Checkout
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ # ----------------------------------------------------------------------- Set up tools
+ - name: Set up .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.x
+
+ - name: Set up .NET tools
+ run: dotnet tool restore
+
+ # ----------------------------------------------------------------------- Restore
+ - name: Restore
+ run: dotnet restore
+
+ # ----------------------------------------------------------------------- Build metadata
+ - name: Build metadata
+ id: build-metadata
+ run: dotnet docfx metadata docs/docfx.json --noRestore
+
+ # ----------------------------------------------------------------------- Build documentation
+ - name: Build documentation
+ id: build-documentation
+ run: dotnet docfx build docs/docfx.json
+
+ # ----------------------------------------------------------------------- Collect artifacts
+ - name: Collect documentation metadata
+ uses: actions/upload-artifact@v4
+ if: steps.build-metadata.outcome == 'success' && always()
+ with:
+ name: DocumentationMetadata
+ if-no-files-found: error
+ path: artifacts/docs/api/
+
+ - name: Collect documentation artifact
+ uses: actions/upload-artifact@v4
+ if: steps.build-documentation.outcome == 'success' && always()
+ with:
+ name: DocumentationWebsite
+ if-no-files-found: error
+ path: artifacts/docs/site/
+
+ # =====================================================================================================================================================================
+ # Render workflow images
+ # ___ _ _ __ _ _
+ # | _ \___ _ _ __| |___ _ _ __ __ _____ _ _| |__/ _| |_____ __ __ (_)_ __ __ _ __ _ ___ ___
+ # | / -_) ' \/ _` / -_) '_| \ V V / _ \ '_| / / _| / _ \ V V / | | ' \/ _` / _` / -_|_-<
+ # |_|_\___|_||_\__,_\___|_| \_/\_/\___/_| |_\_\_| |_\___/\_/\_/ |_|_|_|_\__,_\__, \___/__/
+ # |___/
+ # =====================================================================================================================================================================
+ workflow-images:
+ name: Render workflow images
+ runs-on: windows-latest
+ needs: build
+ if: needs.build.outputs.need-workflow-image-render == 'true'
+ steps:
+ # ----------------------------------------------------------------------- Checkout
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ # ----------------------------------------------------------------------- Download built packages
+ - name: Download packages for rendering
+ uses: actions/download-artifact@v4
+ with:
+ name: Packages
+ path: artifacts/packages/
+
+ # ----------------------------------------------------------------------- Set up Bonsai environments
+ - name: Set up Bonsai environments
+ uses: bonsai-rx/setup-bonsai@v1
+ with:
+ environment-paths: '**/.bonsai/'
+ inject-packages: artifacts/packages/*.nupkg
+
+ # ----------------------------------------------------------------------- Render
+ - name: Render images
+ id: render
+ run: pwsh ./docs/export-images.ps1 -OutputFolder artifacts/docs/site/ -Verbose
+
+ # ----------------------------------------------------------------------- Collect artifacts
+ - name: Collect images
+ uses: actions/upload-artifact@v4
+ if: steps.render.outcome == 'success' && always()
+ with:
+ name: DocumentationWorkflowImages
+ if-no-files-found: error
+ path: artifacts/docs/site/
+
+ # =====================================================================================================================================================================
+ # Publish packages to GitHub
+ # ___ _ _ _ _ _ _ ___ _ _ _ _ _
+ # | _ \_ _| |__| (_)__| |_ _ __ __ _ __| |____ _ __ _ ___ ___ | |_ ___ / __(_) |_| || |_ _| |__
+ # | _/ || | '_ \ | (_-< ' \ | '_ \/ _` / _| / / _` / _` / -_|_-< | _/ _ \ | (_ | | _| __ | || | '_ \
+ # |_| \_,_|_.__/_|_/__/_||_| | .__/\__,_\__|_\_\__,_\__, \___/__/ \__\___/ \___|_|\__|_||_|\_,_|_.__/
+ # |_| |___/
+ # =====================================================================================================================================================================
+ publish-github:
+ name: Publish packages to GitHub
+ runs-on: ubuntu-latest
+ needs: build
+ permissions:
+ # Needed to attach files to releases
+ contents: write
+ # Needed to upload to GitHub Packages
+ packages: write
+ if: github.event_name == 'push' || github.event_name == 'release'
+ steps:
+ # ----------------------------------------------------------------------- Set up .NET
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.x
+
+ # ----------------------------------------------------------------------- Download built packages
+ - name: Download built packages
+ uses: actions/download-artifact@v4
+ with:
+ name: Packages
+ path: artifacts/packages/
+
+ # ----------------------------------------------------------------------- Upload release assets
+ - name: Upload release assets
+ if: github.event_name == 'release'
+ run: gh release upload --repo ${{github.repository}} ${{github.event.release.tag_name}} artifacts/packages/* --clobber
+ env:
+ GH_TOKEN: ${{github.token}}
+
+ # ----------------------------------------------------------------------- Push to GitHub Packages
+ - name: Push to GitHub Packages
+ run: dotnet nuget push "artifacts/packages/*.nupkg" --skip-duplicate --no-symbols --api-key ${{secrets.GITHUB_TOKEN}} --source https://nuget.pkg.github.com/${{github.repository_owner}}
+ env:
+ # This is a workaround for https://github.com/NuGet/Home/issues/9775
+ DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER: 0
+
+ # =====================================================================================================================================================================
+ # Publish packages to NuGet.org
+ # ___ _ _ _ _ _ _ _ _ ___ _
+ # | _ \_ _| |__| (_)__| |_ _ __ __ _ __| |____ _ __ _ ___ ___ | |_ ___ | \| |_ _ / __|___| |_ ___ _ _ __ _
+ # | _/ || | '_ \ | (_-< ' \ | '_ \/ _` / _| / / _` / _` / -_|_-< | _/ _ \ | .` | || | (_ / -_) _|_/ _ \ '_/ _` |
+ # |_| \_,_|_.__/_|_/__/_||_| | .__/\__,_\__|_\_\__,_\__, \___/__/ \__\___/ |_|\_|\_,_|\___\___|\__(_)___/_| \__, |
+ # |_| |___/ |___/
+ # =====================================================================================================================================================================
+ publish-packages-nuget-org:
+ name: Publish packages to NuGet.org
+ runs-on: ubuntu-latest
+ environment: public-release
+ needs: build
+ if: github.event_name == 'release'
+ steps:
+ # ----------------------------------------------------------------------- Set up .NET
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.x
+
+ # ----------------------------------------------------------------------- Download built packages
+ - name: Download built packages
+ uses: actions/download-artifact@v4
+ with:
+ name: Packages
+ path: artifacts/packages/
+
+ # ----------------------------------------------------------------------- Push to NuGet.org
+ - name: Push to NuGet.org
+ run: dotnet nuget push "artifacts/packages/*.nupkg" --api-key ${{secrets.NUGET_API_KEY}} --source ${{vars.NUGET_API_URL}}
+ env:
+ # This is a workaround for https://github.com/NuGet/Home/issues/9775
+ DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER: 0
+
+
+ # =====================================================================================================================================================================
+ # Publish documentation
+ # ___ _ _ _ _ _ _ _ _
+ # | _ \_ _| |__| (_)__| |_ __| |___ __ _ _ _ __ ___ _ _| |_ __ _| |_(_)___ _ _
+ # | _/ || | '_ \ | (_-< ' \ / _` / _ \/ _| || | ' \/ -_) ' \ _/ _` | _| / _ \ ' \
+ # |_| \_,_|_.__/_|_/__/_||_| \__,_\___/\__|\_,_|_|_|_\___|_||_\__\__,_|\__|_\___/_||_|
+ # =====================================================================================================================================================================
+ publish-documentation:
+ name: Publish documentation
+ runs-on: ubuntu-latest
+ # Publishing is not strictly necessary here, but if we're going to do a public release we want to wait to publish the docs until it goes out
+ needs: [build-documentation, workflow-images, publish-packages-nuget-org]
+ permissions:
+ # Both required by actions/deploy-pages
+ pages: write
+ id-token: write
+ environment:
+ # Intentionally not using the "default" github-pages environment as it's not compatible with this workflow
+ name: documentation-website
+ url: ${{steps.publish.outputs.page_url}}
+ # Only run if the workflow isn't dying and build-documentation was successful and either A) we're releasing or B) we have continuous deployment enabled
+ if: |
+ !cancelled() && !failure() && needs.build-documentation.result == 'success'
+ && (github.event_name == 'release'
+ || (vars.CONTINUOUS_DOCUMENTATION && github.event_name != 'pull_request')
+ )
+ steps:
+ # ----------------------------------------------------------------------- Download documentation website components
+ # It is intentional that we use two independent download steps here as it ensures that workflow images are permitted
+ # to overwrite any conflicts in the docfx output but not the other way around.
+ - name: Download documentation website
+ uses: actions/download-artifact@v4
+ with:
+ name: DocumentationWebsite
+
+ - name: Download workflow images
+ if: ${{needs.workflow-images.result == 'success'}}
+ uses: actions/download-artifact@v4
+ with:
+ name: DocumentationWorkflowImages
+
+ # ----------------------------------------------------------------------- Collect artifacts
+ - name: Upload final documentation website artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: '.'
+
+ # ----------------------------------------------------------------------- Publish to GitHub Pages (for forks)
+ - name: Publish to GitHub Pages (forks)
+ id: publish
+ if: github.event_name == 'release' || github.event.repository.fork
+ uses: actions/deploy-pages@v4
diff --git a/.gitignore b/.gitignore
index 83542a1..a478de1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,6 @@
-.vs
-bin
-obj
-Debug
-Release
-packages
-*.user
\ No newline at end of file
+.bonsai/Bonsai.exe*
+.bonsai/Packages/
+.bonsai/Settings/
+.vs/
+/artifacts/
+*.user
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..acf6d39
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "docs/bonsai-docfx"]
+ path = docs/bonsai-docfx
+ url = https://github.com/bonsai-rx/docfx-tools.git
diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config
deleted file mode 100644
index 67f8ea0..0000000
--- a/.nuget/NuGet.Config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe
deleted file mode 100644
index f1cec45..0000000
Binary files a/.nuget/NuGet.exe and /dev/null differ
diff --git a/.nuget/NuGet.targets b/.nuget/NuGet.targets
deleted file mode 100644
index 3f8c37b..0000000
--- a/.nuget/NuGet.targets
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
- $(MSBuildProjectDirectory)\..\
-
-
- false
-
-
- false
-
-
- true
-
-
- false
-
-
-
-
-
-
-
-
-
-
- $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
-
-
-
-
- $(SolutionDir).nuget
-
-
-
- $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config
- $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config
-
-
-
- $(MSBuildProjectDirectory)\packages.config
- $(PackagesProjectConfig)
-
-
-
-
- $(NuGetToolsPath)\NuGet.exe
- @(PackageSource)
-
- "$(NuGetExePath)"
- mono --runtime=v4.0.30319 "$(NuGetExePath)"
-
- $(TargetDir.Trim('\\'))
-
- -RequireConsent
- -NonInteractive
-
- "$(SolutionDir) "
- "$(SolutionDir)"
-
-
- $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)
- $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols
-
-
-
- RestorePackages;
- $(BuildDependsOn);
-
-
-
-
- $(BuildDependsOn);
- BuildPackage;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/OpenTld.Net.sln b/Bonsai.Tld.sln
similarity index 61%
rename from OpenTld.Net.sln
rename to Bonsai.Tld.sln
index 3d3dcf1..dee014d 100644
--- a/OpenTld.Net.sln
+++ b/Bonsai.Tld.sln
@@ -3,59 +3,47 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32825.248
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenTld.Net", "OpenTld.Net\OpenTld.Net.vcxproj", "{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenTld.Net", "src\OpenTld.Net\OpenTld.Net.vcxproj", "{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{2CDDDCB2-0B83-4861-A88B-3BA9282CADA3}"
- ProjectSection(SolutionItems) = preProject
- .nuget\NuGet.Config = .nuget\NuGet.Config
- .nuget\NuGet.exe = .nuget\NuGet.exe
- .nuget\NuGet.targets = .nuget\NuGet.targets
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonsai.Tld", "Bonsai.Tld\Bonsai.Tld.csproj", "{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bonsai.Tld", "src\Bonsai.Tld\Bonsai.Tld.csproj", "{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{30CFF7B8-495C-4C90-AB43-B195DDD81B76}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DEE5DD87-39C1-BF34-B639-A387DCCF972B}"
ProjectSection(SolutionItems) = preProject
- Directory.Build.props = Directory.Build.props
+ build\Common.csproj.props = build\Common.csproj.props
+ build\Common.csproj.targets = build\Common.csproj.targets
+ build\Common.Tests.csproj.props = build\Common.Tests.csproj.props
+ build\icon.png = build\icon.png
+ build\Package.props = build\Package.props
+ build\Project.csproj.props = build\Project.csproj.props
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
- Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
- Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|Any CPU.ActiveCfg = Debug|Win32
- {D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|Win32.ActiveCfg = Debug|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|Win32.Build.0 = Debug|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|x64.ActiveCfg = Debug|x64
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Debug|x64.Build.0 = Debug|x64
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Any CPU.ActiveCfg = Release|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Any CPU.Build.0 = Release|Win32
- {D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Mixed Platforms.Build.0 = Release|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Win32.ActiveCfg = Release|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|Win32.Build.0 = Release|Win32
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|x64.ActiveCfg = Release|x64
{D0E28EB0-D56D-42F2-B2A5-5A3E3FC3968E}.Release|x64.Build.0 = Release|x64
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Debug|x64.ActiveCfg = Debug|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|Any CPU.Build.0 = Release|Any CPU
- {D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|Win32.ActiveCfg = Release|Any CPU
{D9D7C7A1-013F-41B3-8838-C97E8B930BA5}.Release|x64.ActiveCfg = Release|Any CPU
EndGlobalSection
diff --git a/Bonsai.Tld/Bonsai.Tld.nuspec b/Bonsai.Tld/Bonsai.Tld.nuspec
deleted file mode 100644
index a20dec6..0000000
--- a/Bonsai.Tld/Bonsai.Tld.nuspec
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- $id$
- $version$
- $title$
- $author$
- $author$
- http://bitbucket.org/horizongir/opentld.net/raw/d1044b23d6802f888a28a8d549506848d0788f90/LICENSE
- http://bitbucket.org/horizongir/opentld.net
- https://bitbucket.org/horizongir/bonsai/raw/7aacc64dc4647e57362ab310238591dc197fef0d/Resources/Bonsai.png
- false
- $description$
- Gonçalo Lopes © 2015
- Bonsai Tracking TLD OpenTLD
-
-
-
-
-
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index e22056f..91586df 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,16 +1,3 @@
-
-
-
- Gonçalo Lopes
- Copyright © Gonçalo Lopes 2022
- snupkg
- https://github.com/bonsai-rx/tld
- https://bonsai-rx.org/license
- https://bonsai-rx.org/assets/images/bonsai.png
- true
- true
- ..\bin\$(Configuration)
-
- strict
-
+
+
\ No newline at end of file
diff --git a/Directory.Build.targets b/Directory.Build.targets
new file mode 100644
index 0000000..b7ac253
--- /dev/null
+++ b/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/NuGet.config b/NuGet.config
deleted file mode 100644
index 75e78fb..0000000
--- a/NuGet.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/Common.Tests.csproj.props b/build/Common.Tests.csproj.props
new file mode 100644
index 0000000..c42b25f
--- /dev/null
+++ b/build/Common.Tests.csproj.props
@@ -0,0 +1,6 @@
+
+
+ false
+ false
+
+
\ No newline at end of file
diff --git a/build/Common.csproj.props b/build/Common.csproj.props
new file mode 100644
index 0000000..1099119
--- /dev/null
+++ b/build/Common.csproj.props
@@ -0,0 +1,80 @@
+
+
+
+
+ Debug
+ AnyCPU
+
+
+
+
+ 12.0
+ true
+ strict
+ enable
+ true
+
+
+ true
+ $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)../artifacts'))
+
+
+ $(ArtifactsPath)/wsl
+
+
+
+
+ true
+ Dependency;BonsaiLibrary
+
+ icon.png
+ $(MSBuildThisFileDirectory)icon.png
+
+ LICENSE
+ $(MSBuildThisFileDirectory)../LICENSE
+
+ README.md
+ $(MSBuildThisFileDirectory)../docs/README.md
+ $(MSBuildThisFileDirectory)README.nuget.md
+ $(MSBuildProjectDirectory)\README.md
+ $(MSBuildProjectDirectory)\README.nuget.md
+
+
+ false
+ true
+ snupkg
+
+
+ false
+ true
+
+
+
+
+ $(WarningsAsErrors);NU1701;CS7035
+
+
+ true
+
+
+ true
+
+
+ $(MSBuildThisFileDirectory)../.bonsai/Bonsai.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/Common.csproj.targets b/build/Common.csproj.targets
new file mode 100644
index 0000000..07f4916
--- /dev/null
+++ b/build/Common.csproj.targets
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+ $(TargetName.ToLowerInvariant())
+ DotnetTool
+
+
+ 1591,1573
+
+
+
+
+
+
+
+ 0
+ 42.42.42-dev$(DevVersion)
+
+ $(CiBuildVersion)
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/Package.props b/build/Package.props
new file mode 100644
index 0000000..488ae59
--- /dev/null
+++ b/build/Package.props
@@ -0,0 +1,9 @@
+
+
+ Bonsai Rx Tracking TLD OpenTLD
+ https://bonsai-rx.org/tld
+
+ Bonsai Foundation
+ Copyright © Bonsai Foundation CIC and Contributors
+
+
\ No newline at end of file
diff --git a/build/Project.csproj.props b/build/Project.csproj.props
new file mode 100644
index 0000000..1d004b4
--- /dev/null
+++ b/build/Project.csproj.props
@@ -0,0 +1,5 @@
+
+
+ annotations
+
+
\ No newline at end of file
diff --git a/build/icon.png b/build/icon.png
new file mode 100644
index 0000000..50b328b
Binary files /dev/null and b/build/icon.png differ
diff --git a/README.md b/docs/README.md
similarity index 100%
rename from README.md
rename to docs/README.md
diff --git a/docs/bonsai-docfx b/docs/bonsai-docfx
new file mode 160000
index 0000000..5b584ca
--- /dev/null
+++ b/docs/bonsai-docfx
@@ -0,0 +1 @@
+Subproject commit 5b584cadc5f1e3088f4972469243df2e3faf6925
diff --git a/docs/build.ps1 b/docs/build.ps1
new file mode 100644
index 0000000..01ad8f5
--- /dev/null
+++ b/docs/build.ps1
@@ -0,0 +1,19 @@
+[CmdletBinding()] param (
+ [string[]]$docfxArgs
+)
+Set-StrictMode -Version 3.0
+$ErrorActionPreference = 'Stop'
+$PSNativeCommandUseErrorActionPreference = $true
+
+Push-Location $PSScriptRoot
+try {
+ $libPaths = @()
+ $libPaths += Get-ChildItem "..\artifacts\bin\*\release_net4*" -Directory | Select-Object -Expand FullName
+ $libPaths += "..\artifacts\package\release"
+
+ ./export-images.ps1 $libPaths
+ dotnet docfx metadata
+ dotnet docfx build $docfxArgs
+} finally {
+ Pop-Location
+}
diff --git a/docs/docfx.json b/docs/docfx.json
new file mode 100644
index 0000000..e7a05d9
--- /dev/null
+++ b/docs/docfx.json
@@ -0,0 +1,84 @@
+{
+ "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json",
+ "metadata": [
+ {
+ "src": [
+ {
+ "src": "../src/",
+ "files": "**/*.csproj",
+ "exclude": "**/*.Tests.csproj"
+ }
+ ],
+ "output": "../artifacts/docs/api/",
+ "enumSortOrder": "declaringOrder",
+ "memberLayout": "separatePages",
+ "filter": "filter.yml"
+ }
+ ],
+ "build": {
+ "content": [
+ {
+ "files": [
+ "*.md",
+ "toc.yml",
+ "{articles,tutorials,examples}/**/*.md",
+ "{articles,tutorials,examples}/**/toc.yml"
+ ],
+ "exclude": "README.md"
+ },
+ {
+ "src": "../artifacts/docs/api/",
+ "dest": "api",
+ "files": "**/*.yml"
+ }
+ ],
+ "resource": [
+ {
+ "files": [
+ "images/**",
+ "workflows/**/*.{bonsai,svg}",
+ "{articles,tutorials,examples}/**/*.{bonsai,svg}"
+ ]
+ },
+ {
+ "src": "../build/",
+ "files": "icon.png"
+ }
+ ],
+ "overwrite": [
+ "apidoc/**/*.md"
+ ],
+ "output": "../artifacts/docs/site/",
+ "template": [
+ "default",
+ "modern",
+ "bonsai-docfx/template",
+ "template"
+ ],
+ "sitemap": {
+ "baseUrl": "https://bonsai-rx.org/tld"
+ },
+ "globalMetadata": {
+ "_appName": "Bonsai.Tld",
+ "_appTitle": "Bonsai.Tld",
+ "_appFooter": "© Bonsai Foundation CIC and Contributors. Made with docfx",
+ "_appLogoPath": "logo.svg",
+ "_appFaviconPath": "icon.png",
+ "_enableNewTab": true,
+ "_enableSearch": true,
+ "_gitContribute": {
+ "apiSpecFolder": "docs/apidoc"
+ }
+ },
+ "markdownEngineProperties": {
+ "markdigExtensions": [
+ "attributes",
+ "customcontainers"
+ ]
+ },
+ "xref": [
+ "https://bonsai-rx.org/docs/xrefmap.yml",
+ "https://horizongir.github.io/reactive/xrefmap.yml"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/docs/export-images.ps1 b/docs/export-images.ps1
new file mode 100644
index 0000000..e613b87
--- /dev/null
+++ b/docs/export-images.ps1
@@ -0,0 +1,44 @@
+[CmdletBinding()] param (
+ [string[]]$LibrarySources,
+ [bool]$UseGalleryForWorkflowsDirectory=$false,
+ [bool]$UseGalleryForExamplesDirectory=$true,
+ [string]$OutputFolder=$null
+)
+Set-StrictMode -Version 3.0
+$ErrorActionPreference = 'Stop'
+$PSNativeCommandUseErrorActionPreference = $true
+
+if ($OutputFolder) {
+ $OutputFolder = Join-Path (Get-Location) $OutputFolder
+}
+
+function Process-Workflow-Collection([bool]$useGallery, [string]$workflowPath, [string]$environmentPath) {
+ $libPath = $LibrarySources
+
+ if ($useGallery) {
+ $libPath = @()
+ $galleryPath = Join-Path $environmentPath 'Gallery'
+ $null = New-Item -ItemType Directory -Path $galleryPath -Force
+ foreach ($librarySource in $LibrarySources) {
+ Get-ChildItem -Path $librarySource -Filter *.nupkg | Copy-Item -Destination $galleryPath
+ }
+ }
+
+ $bootstrapperPath = (Join-Path $environmentPath 'Bonsai.exe')
+ .\bonsai-docfx\modules\Export-Image.ps1 -libPath $libPath -workflowPath $workflowPath -bootstrapperPath $bootstrapperPath -outputFolder $OutputFolder -documentationRoot $PSScriptRoot
+}
+
+Push-Location $PSScriptRoot
+try {
+ if (Test-Path -Path 'workflows/') {
+ Process-Workflow-Collection $UseGalleryForWorkflowsDirectory './workflows' '../.bonsai/'
+ }
+
+ if (Test-Path -Path 'examples/') {
+ foreach ($environment in (Get-ChildItem -Path 'examples/' -Filter '.bonsai' -Recurse -FollowSymlink -Directory)) {
+ Process-Workflow-Collection $UseGalleryForExamplesDirectory ($environment.Parent.FullName) ($environment.FullName)
+ }
+ }
+} finally {
+ Pop-Location
+}
diff --git a/docs/filter.yml b/docs/filter.yml
new file mode 100644
index 0000000..472eb43
--- /dev/null
+++ b/docs/filter.yml
@@ -0,0 +1,4 @@
+apiRules:
+- exclude:
+ hasAttribute:
+ uid: System.ObsoleteAttribute
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..ba991fe
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,5 @@
+---
+_layout: landing
+---
+
+[!INCLUDE [](README.md)]
diff --git a/docs/template/public/main.css b/docs/template/public/main.css
new file mode 100644
index 0000000..13bc806
--- /dev/null
+++ b/docs/template/public/main.css
@@ -0,0 +1 @@
+@import "workflow.css";
diff --git a/docs/template/public/main.js b/docs/template/public/main.js
new file mode 100644
index 0000000..7798b03
--- /dev/null
+++ b/docs/template/public/main.js
@@ -0,0 +1,13 @@
+import WorkflowContainer from "./workflow.js"
+
+export default {
+ defaultTheme: 'light',
+ iconLinks: [{
+ icon: 'github',
+ href: 'https://github.com/bonsai-rx/tld',
+ title: 'GitHub'
+ }],
+ start: () => {
+ WorkflowContainer.init();
+ }
+}
diff --git a/docs/toc.yml b/docs/toc.yml
new file mode 100644
index 0000000..3daf8b9
--- /dev/null
+++ b/docs/toc.yml
@@ -0,0 +1,2 @@
+- name: API
+ href: ../artifacts/docs/api/
diff --git a/docs/workflows/.gitignore b/docs/workflows/.gitignore
new file mode 100644
index 0000000..e2beea4
--- /dev/null
+++ b/docs/workflows/.gitignore
@@ -0,0 +1,2 @@
+*.layout
+*.svg
diff --git a/global.json b/global.json
new file mode 100644
index 0000000..989a69c
--- /dev/null
+++ b/global.json
@@ -0,0 +1,6 @@
+{
+ "sdk": {
+ "version": "8.0.100",
+ "rollForward": "latestMinor"
+ }
+}
\ No newline at end of file
diff --git a/OpenTLD/3rdparty/cvblobs/BlobContour.cpp b/src/3rdparty/cvblobs/BlobContour.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobContour.cpp
rename to src/3rdparty/cvblobs/BlobContour.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/BlobContour.h b/src/3rdparty/cvblobs/BlobContour.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobContour.h
rename to src/3rdparty/cvblobs/BlobContour.h
diff --git a/OpenTLD/3rdparty/cvblobs/BlobLibraryConfiguration.h b/src/3rdparty/cvblobs/BlobLibraryConfiguration.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobLibraryConfiguration.h
rename to src/3rdparty/cvblobs/BlobLibraryConfiguration.h
diff --git a/OpenTLD/3rdparty/cvblobs/BlobOperators.cpp b/src/3rdparty/cvblobs/BlobOperators.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobOperators.cpp
rename to src/3rdparty/cvblobs/BlobOperators.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/BlobOperators.h b/src/3rdparty/cvblobs/BlobOperators.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobOperators.h
rename to src/3rdparty/cvblobs/BlobOperators.h
diff --git a/OpenTLD/3rdparty/cvblobs/BlobProperties.cpp b/src/3rdparty/cvblobs/BlobProperties.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobProperties.cpp
rename to src/3rdparty/cvblobs/BlobProperties.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/BlobProperties.h b/src/3rdparty/cvblobs/BlobProperties.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobProperties.h
rename to src/3rdparty/cvblobs/BlobProperties.h
diff --git a/OpenTLD/3rdparty/cvblobs/BlobResult.cpp b/src/3rdparty/cvblobs/BlobResult.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobResult.cpp
rename to src/3rdparty/cvblobs/BlobResult.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/BlobResult.h b/src/3rdparty/cvblobs/BlobResult.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/BlobResult.h
rename to src/3rdparty/cvblobs/BlobResult.h
diff --git a/OpenTLD/3rdparty/cvblobs/ComponentLabeling.cpp b/src/3rdparty/cvblobs/ComponentLabeling.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/ComponentLabeling.cpp
rename to src/3rdparty/cvblobs/ComponentLabeling.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/ComponentLabeling.h b/src/3rdparty/cvblobs/ComponentLabeling.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/ComponentLabeling.h
rename to src/3rdparty/cvblobs/ComponentLabeling.h
diff --git a/OpenTLD/3rdparty/cvblobs/blob.cpp b/src/3rdparty/cvblobs/blob.cpp
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/blob.cpp
rename to src/3rdparty/cvblobs/blob.cpp
diff --git a/OpenTLD/3rdparty/cvblobs/blob.h b/src/3rdparty/cvblobs/blob.h
similarity index 100%
rename from OpenTLD/3rdparty/cvblobs/blob.h
rename to src/3rdparty/cvblobs/blob.h
diff --git a/Bonsai.Tld/Bonsai.Tld.csproj b/src/Bonsai.Tld/Bonsai.Tld.csproj
similarity index 77%
rename from Bonsai.Tld/Bonsai.Tld.csproj
rename to src/Bonsai.Tld/Bonsai.Tld.csproj
index 0567f8f..5b07a51 100644
--- a/Bonsai.Tld/Bonsai.Tld.csproj
+++ b/src/Bonsai.Tld/Bonsai.Tld.csproj
@@ -3,10 +3,7 @@
Bonsai - TLD Library
Bonsai Tracking Library containing the TLD self-supervised tracking algorithm.
- Bonsai Rx Tracking TLD OpenTLD
- true
net462
- 0.2.0
@@ -16,4 +13,4 @@
-
+
\ No newline at end of file
diff --git a/Bonsai.Tld/BoxContour.cs b/src/Bonsai.Tld/BoxContour.cs
similarity index 100%
rename from Bonsai.Tld/BoxContour.cs
rename to src/Bonsai.Tld/BoxContour.cs
diff --git a/Bonsai.Tld/Properties/AssemblyInfo.cs b/src/Bonsai.Tld/Properties/AssemblyInfo.cs
similarity index 100%
rename from Bonsai.Tld/Properties/AssemblyInfo.cs
rename to src/Bonsai.Tld/Properties/AssemblyInfo.cs
diff --git a/src/Bonsai.Tld/Properties/launchSettings.json b/src/Bonsai.Tld/Properties/launchSettings.json
new file mode 100644
index 0000000..4af4f46
--- /dev/null
+++ b/src/Bonsai.Tld/Properties/launchSettings.json
@@ -0,0 +1,10 @@
+{
+ "profiles": {
+ "Bonsai": {
+ "commandName": "Executable",
+ "executablePath": "$(BonsaiExecutablePath)",
+ "commandLineArgs": "--lib:\"$(TargetDir).\"",
+ "nativeDebugging": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/Bonsai.Tld/TldTracker.cs b/src/Bonsai.Tld/TldTracker.cs
similarity index 100%
rename from Bonsai.Tld/TldTracker.cs
rename to src/Bonsai.Tld/TldTracker.cs
diff --git a/Bonsai.Tld/TrackedComponent.cs b/src/Bonsai.Tld/TrackedComponent.cs
similarity index 100%
rename from Bonsai.Tld/TrackedComponent.cs
rename to src/Bonsai.Tld/TrackedComponent.cs
diff --git a/OpenTld.Net/AssemblyInfo.cpp b/src/OpenTld.Net/AssemblyInfo.cpp
similarity index 100%
rename from OpenTld.Net/AssemblyInfo.cpp
rename to src/OpenTld.Net/AssemblyInfo.cpp
diff --git a/OpenTld.Net/NuGet/build/net462/OpenTld.Net.props b/src/OpenTld.Net/NuGet/build/net462/OpenTld.Net.props
similarity index 79%
rename from OpenTld.Net/NuGet/build/net462/OpenTld.Net.props
rename to src/OpenTld.Net/NuGet/build/net462/OpenTld.Net.props
index b94eb38..e4601cb 100644
--- a/OpenTld.Net/NuGet/build/net462/OpenTld.Net.props
+++ b/src/OpenTld.Net/NuGet/build/net462/OpenTld.Net.props
@@ -1,5 +1,4 @@
-
-
+
$(MSBuildThisFileDirectory)..\..\build\net462\bin\x86\v110\OpenTld.Net.dll
diff --git a/OpenTld.Net/OpenTld.Net.cpp b/src/OpenTld.Net/OpenTld.Net.cpp
similarity index 100%
rename from OpenTld.Net/OpenTld.Net.cpp
rename to src/OpenTld.Net/OpenTld.Net.cpp
diff --git a/OpenTld.Net/OpenTld.Net.h b/src/OpenTld.Net/OpenTld.Net.h
similarity index 100%
rename from OpenTld.Net/OpenTld.Net.h
rename to src/OpenTld.Net/OpenTld.Net.h
diff --git a/OpenTld.Net/OpenTld.Net.nuspec b/src/OpenTld.Net/OpenTld.Net.nuspec
similarity index 73%
rename from OpenTld.Net/OpenTld.Net.nuspec
rename to src/OpenTld.Net/OpenTld.Net.nuspec
index 4ae12bc..d334ff4 100644
--- a/OpenTld.Net/OpenTld.Net.nuspec
+++ b/src/OpenTld.Net/OpenTld.Net.nuspec
@@ -2,15 +2,12 @@
OpenTld.Net
- 0.2.0
OpenTLD.NET
- Xavier Faure
Gonçalo Lopes
- http://bitbucket.org/horizongir/opentld.net/raw/d1044b23d6802f888a28a8d549506848d0788f90/LICENSE
- http://bitbucket.org/horizongir/opentld.net
+ https://raw.githubusercontent.com/bonsai-rx/tld/refs/heads/main/LICENSE
+ https://bonsai-rx.org/tld
false
A managed wrapper to the OpenTLD open-source tracking library.
- Xavier Faure © 2015
OpenTLD Tracking Wrapper
diff --git a/OpenTld.Net/OpenTld.Net.vcxproj b/src/OpenTld.Net/OpenTld.Net.vcxproj
similarity index 100%
rename from OpenTld.Net/OpenTld.Net.vcxproj
rename to src/OpenTld.Net/OpenTld.Net.vcxproj
diff --git a/OpenTld.Net/OpenTld.Net.vcxproj.filters b/src/OpenTld.Net/OpenTld.Net.vcxproj.filters
similarity index 100%
rename from OpenTld.Net/OpenTld.Net.vcxproj.filters
rename to src/OpenTld.Net/OpenTld.Net.vcxproj.filters
diff --git a/OpenTld.Net/packages.config b/src/OpenTld.Net/packages.config
similarity index 100%
rename from OpenTld.Net/packages.config
rename to src/OpenTld.Net/packages.config
diff --git a/OpenTLD/libopentld/mftracker/BB.cpp b/src/libopentld/mftracker/BB.cpp
similarity index 100%
rename from OpenTLD/libopentld/mftracker/BB.cpp
rename to src/libopentld/mftracker/BB.cpp
diff --git a/OpenTLD/libopentld/mftracker/BB.h b/src/libopentld/mftracker/BB.h
similarity index 100%
rename from OpenTLD/libopentld/mftracker/BB.h
rename to src/libopentld/mftracker/BB.h
diff --git a/OpenTLD/libopentld/mftracker/BBPredict.cpp b/src/libopentld/mftracker/BBPredict.cpp
similarity index 100%
rename from OpenTLD/libopentld/mftracker/BBPredict.cpp
rename to src/libopentld/mftracker/BBPredict.cpp
diff --git a/OpenTLD/libopentld/mftracker/BBPredict.h b/src/libopentld/mftracker/BBPredict.h
similarity index 100%
rename from OpenTLD/libopentld/mftracker/BBPredict.h
rename to src/libopentld/mftracker/BBPredict.h
diff --git a/OpenTLD/libopentld/mftracker/FBTrack.cpp b/src/libopentld/mftracker/FBTrack.cpp
similarity index 100%
rename from OpenTLD/libopentld/mftracker/FBTrack.cpp
rename to src/libopentld/mftracker/FBTrack.cpp
diff --git a/OpenTLD/libopentld/mftracker/FBTrack.h b/src/libopentld/mftracker/FBTrack.h
similarity index 100%
rename from OpenTLD/libopentld/mftracker/FBTrack.h
rename to src/libopentld/mftracker/FBTrack.h
diff --git a/OpenTLD/libopentld/mftracker/Lk.cpp b/src/libopentld/mftracker/Lk.cpp
similarity index 100%
rename from OpenTLD/libopentld/mftracker/Lk.cpp
rename to src/libopentld/mftracker/Lk.cpp
diff --git a/OpenTLD/libopentld/mftracker/Lk.h b/src/libopentld/mftracker/Lk.h
similarity index 100%
rename from OpenTLD/libopentld/mftracker/Lk.h
rename to src/libopentld/mftracker/Lk.h
diff --git a/OpenTLD/libopentld/mftracker/Median.cpp b/src/libopentld/mftracker/Median.cpp
similarity index 100%
rename from OpenTLD/libopentld/mftracker/Median.cpp
rename to src/libopentld/mftracker/Median.cpp
diff --git a/OpenTLD/libopentld/mftracker/Median.h b/src/libopentld/mftracker/Median.h
similarity index 100%
rename from OpenTLD/libopentld/mftracker/Median.h
rename to src/libopentld/mftracker/Median.h
diff --git a/OpenTLD/libopentld/tld/Clustering.cpp b/src/libopentld/tld/Clustering.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/Clustering.cpp
rename to src/libopentld/tld/Clustering.cpp
diff --git a/OpenTLD/libopentld/tld/Clustering.h b/src/libopentld/tld/Clustering.h
similarity index 100%
rename from OpenTLD/libopentld/tld/Clustering.h
rename to src/libopentld/tld/Clustering.h
diff --git a/OpenTLD/libopentld/tld/DetectionResult.cpp b/src/libopentld/tld/DetectionResult.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/DetectionResult.cpp
rename to src/libopentld/tld/DetectionResult.cpp
diff --git a/OpenTLD/libopentld/tld/DetectionResult.h b/src/libopentld/tld/DetectionResult.h
similarity index 100%
rename from OpenTLD/libopentld/tld/DetectionResult.h
rename to src/libopentld/tld/DetectionResult.h
diff --git a/OpenTLD/libopentld/tld/DetectorCascade.cpp b/src/libopentld/tld/DetectorCascade.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/DetectorCascade.cpp
rename to src/libopentld/tld/DetectorCascade.cpp
diff --git a/OpenTLD/libopentld/tld/DetectorCascade.h b/src/libopentld/tld/DetectorCascade.h
similarity index 100%
rename from OpenTLD/libopentld/tld/DetectorCascade.h
rename to src/libopentld/tld/DetectorCascade.h
diff --git a/OpenTLD/libopentld/tld/EnsembleClassifier.cpp b/src/libopentld/tld/EnsembleClassifier.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/EnsembleClassifier.cpp
rename to src/libopentld/tld/EnsembleClassifier.cpp
diff --git a/OpenTLD/libopentld/tld/EnsembleClassifier.h b/src/libopentld/tld/EnsembleClassifier.h
similarity index 100%
rename from OpenTLD/libopentld/tld/EnsembleClassifier.h
rename to src/libopentld/tld/EnsembleClassifier.h
diff --git a/OpenTLD/libopentld/tld/ForegroundDetector.cpp b/src/libopentld/tld/ForegroundDetector.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/ForegroundDetector.cpp
rename to src/libopentld/tld/ForegroundDetector.cpp
diff --git a/OpenTLD/libopentld/tld/ForegroundDetector.h b/src/libopentld/tld/ForegroundDetector.h
similarity index 100%
rename from OpenTLD/libopentld/tld/ForegroundDetector.h
rename to src/libopentld/tld/ForegroundDetector.h
diff --git a/OpenTLD/libopentld/tld/IntegralImage.h b/src/libopentld/tld/IntegralImage.h
similarity index 100%
rename from OpenTLD/libopentld/tld/IntegralImage.h
rename to src/libopentld/tld/IntegralImage.h
diff --git a/OpenTLD/libopentld/tld/MedianFlowTracker.cpp b/src/libopentld/tld/MedianFlowTracker.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/MedianFlowTracker.cpp
rename to src/libopentld/tld/MedianFlowTracker.cpp
diff --git a/OpenTLD/libopentld/tld/MedianFlowTracker.h b/src/libopentld/tld/MedianFlowTracker.h
similarity index 100%
rename from OpenTLD/libopentld/tld/MedianFlowTracker.h
rename to src/libopentld/tld/MedianFlowTracker.h
diff --git a/OpenTLD/libopentld/tld/NNClassifier.cpp b/src/libopentld/tld/NNClassifier.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/NNClassifier.cpp
rename to src/libopentld/tld/NNClassifier.cpp
diff --git a/OpenTLD/libopentld/tld/NNClassifier.h b/src/libopentld/tld/NNClassifier.h
similarity index 100%
rename from OpenTLD/libopentld/tld/NNClassifier.h
rename to src/libopentld/tld/NNClassifier.h
diff --git a/OpenTLD/libopentld/tld/NormalizedPatch.h b/src/libopentld/tld/NormalizedPatch.h
similarity index 100%
rename from OpenTLD/libopentld/tld/NormalizedPatch.h
rename to src/libopentld/tld/NormalizedPatch.h
diff --git a/OpenTLD/libopentld/tld/TLD.cpp b/src/libopentld/tld/TLD.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/TLD.cpp
rename to src/libopentld/tld/TLD.cpp
diff --git a/OpenTLD/libopentld/tld/TLD.h b/src/libopentld/tld/TLD.h
similarity index 100%
rename from OpenTLD/libopentld/tld/TLD.h
rename to src/libopentld/tld/TLD.h
diff --git a/OpenTLD/libopentld/tld/TLDUtil.cpp b/src/libopentld/tld/TLDUtil.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/TLDUtil.cpp
rename to src/libopentld/tld/TLDUtil.cpp
diff --git a/OpenTLD/libopentld/tld/TLDUtil.h b/src/libopentld/tld/TLDUtil.h
similarity index 100%
rename from OpenTLD/libopentld/tld/TLDUtil.h
rename to src/libopentld/tld/TLDUtil.h
diff --git a/OpenTLD/libopentld/tld/VarianceFilter.cpp b/src/libopentld/tld/VarianceFilter.cpp
similarity index 100%
rename from OpenTLD/libopentld/tld/VarianceFilter.cpp
rename to src/libopentld/tld/VarianceFilter.cpp
diff --git a/OpenTLD/libopentld/tld/VarianceFilter.h b/src/libopentld/tld/VarianceFilter.h
similarity index 100%
rename from OpenTLD/libopentld/tld/VarianceFilter.h
rename to src/libopentld/tld/VarianceFilter.h