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