diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 4ee7d058..fec2d310 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,28 +3,32 @@ "isRoot": true, "tools": { "paket": { - "version": "7.0.0-alpha003", + "version": "8.0.3", "commands": [ "paket" - ] + ], + "rollForward": false }, "aardpack": { "version": "1.0.10", "commands": [ "aardpack" - ] + ], + "rollForward": false }, "adaptify": { - "version": "1.1.9", + "version": "1.3.3", "commands": [ "adaptify" - ] + ], + "rollForward": false }, "fantomas": { "version": "6.2.3", "commands": [ "fantomas" - ] + ], + "rollForward": false } } } \ No newline at end of file diff --git a/TEST_RELEASE_NOTES.md b/TEST_RELEASE_NOTES.md index 70988d19..15189eec 100644 --- a/TEST_RELEASE_NOTES.md +++ b/TEST_RELEASE_NOTES.md @@ -1,3 +1,6 @@ +## 4.25.0-prerelease10 +- optimized kd tree loading from caches + ## 4.25.0-prerelease6 - #413 (without footprints part), #330, #414, #397 diff --git a/global.json b/global.json index 08fc58c6..75a80e90 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.100", + "version": "8.0.0", "rollForward": "latestMinor" } } \ No newline at end of file diff --git a/paket.dependencies b/paket.dependencies index 6853a9e8..7c154bde 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -5,53 +5,53 @@ source https://vrvis.myget.org/F/aardvark_public/api/v3/index.json storage: none -nuget Aardvark.Build ~> 1.0.11 +nuget Aardvark.Build ~> 1.0.25 -nuget FSharp.Core ~> 6.0.2 lowest_matching: true +nuget FSharp.Core >= 8.0.0 lowest_matching: true nuget FSharp.Data ~> 3.1.1 -nuget FSharp.Data.Adaptive ~> 1.2.13 -nuget Aardvark.Base ~> 5.2.13 -nuget Aardvark.Base.Incremental ~> 5.2.13 -nuget Aardvark.Base.FSharp ~> 5.2.13 -nuget Aardvark.Geometry ~> 5.2.13 -nuget Aardvark.PixImage.DevIL ~> 5.2.13 +nuget Aardvark.Base ~> 5.3.2 +nuget Aardvark.Base.Incremental ~> 5.3.2 +nuget Aardvark.Base.FSharp ~> 5.3.2 +nuget Aardvark.Geometry ~> 5.3.2 -nuget SixLabors.ImageSharp ~> 2.1.7 +nuget Aardvark.PixImage.DevIL -nuget Aardvark.Rendering ~> 5.4.0 -nuget Aardvark.Application.Slim ~> 5.4.0 -nuget Aardvark.Application.Slim.GL ~> 5.4.0 -nuget Aardvark.Application.Slim.Vulkan ~> 5.4.0 -nuget Aardvark.SceneGraph ~> 5.4.0 -nuget Aardvark.SceneGraph.IO ~> 5.4.0 -nuget Aardvark.SceneGraph.Opc ~> 5.4.0 -nuget Aardvark.Rendering.Text ~> 5.4.0 -nuget Aardvark.Rendering.Vulkan ~> 5.4.0 -nuget Aardvark.Rendering.GL ~> 5.4.0 -nuget Aardvark.GPGPU ~> 5.4.0 -nuget Aardvark.Geometry.Intersection ~> 5.2.25 -nuget Aardvark.Geometry.PointTree ~> 5.2.25 -nuget Aardvark.Geometry.PolyMesh ~> 5.2.25 -nuget Aardvark.Geometry.Clustering ~> 5.2.25 +nuget SixLabors.ImageSharp ~> 2.1.9 -nuget Aardvark.Service ~> 5.4.0 -nuget Aardvark.UI ~> 5.4.0 -nuget Aardvark.UI.Primitives ~> 5.4.0 -nuget Aardvark.Service.Giraffe ~> 5.4.0 +nuget Aardvark.Rendering ~> 5.5.0 +nuget Aardvark.Application.Slim ~> 5.5.0 +nuget Aardvark.Application.Slim.GL ~> 5.5.0 +nuget Aardvark.Application.Slim.Vulkan ~> 5.5.0 +nuget Aardvark.SceneGraph ~> 5.5.0 +nuget Aardvark.Rendering.Text ~> 5.5.0 +nuget Aardvark.Rendering.Vulkan ~> 5.5.0 +nuget Aardvark.Rendering.GL ~> 5.5.0 +nuget Aardvark.GPGPU ~> 5.5.0 +nuget Aardvark.SceneGraph.Assimp ~> 5.5.0 -nuget Adaptify.MSBuild ~> 1.1.9 -nuget Adaptify.Core ~> 1.1.9 +nuget Aardvark.Geometry.Intersection ~> 5.5.0 +nuget Aardvark.Geometry.PointTree ~> 5.5.0 +nuget Aardvark.Geometry.PolyMesh ~> 5.5.0 +nuget Aardvark.Geometry.Clustering ~> 5.5.0 +nuget Aardvark.Service ~> 5.5.0 +nuget Aardvark.UI ~> 5.5.0 +nuget Aardvark.UI.Primitives ~> 5.5.0 +nuget Aardvark.Service.Giraffe ~> 5.5.0 -nuget Aardvark.Data.Wavefront ~> 5.2.25 -nuget Aardvark.GeoSpatial.Opc ~> 5.10.8 +nuget Adaptify.MSBuild ~> 1.3.0 +nuget Adaptify.Core ~> 1.3.0 -nuget Aardium ~> 2.0.10-prerelease0007 +nuget Aardvark.Data.Opc ~> 0.11.0 +nuget Aardvark.Data.Wavefront ~> 5.3.10 +nuget Aardvark.GeoSpatial.Opc ~> 5.11.2 -nuget OPCViewer.Base ~> 1.7.2 +nuget Aardium ~> 2.1.1 + +nuget OPCViewer.Base ~> 1.9.2 nuget Uncodium.Eigensystems ~> 1.1.2 nuget Chiron ~> 6.3.1 @@ -116,12 +116,13 @@ nuget Fake.IO.FileSystem nuget Fake.Api.GitHub nuget Fake.Core.ReleaseNotes nuget Octokit -nuget Fake.Core.Target +nuget Fake.Core.Target nuget Farmer -nuget Fake.DotNet.Cli ~> 5.23.0 -nuget Fake.DotNet.NuGet -nuget Fake.Tools.Git -nuget Fake.DotNet.Paket +nuget Fake.DotNet.Cli = 5.23.0 +nuget Fake.DotNet.MSBuild = 5.23.0 +nuget Fake.DotNet.NuGet +nuget Fake.Tools.Git +nuget Fake.DotNet.Paket nuget fake-cli nuget Argu nuget Mono.Cecil diff --git a/paket.lock b/paket.lock index ebefe947..d838a531 100644 --- a/paket.lock +++ b/paket.lock @@ -2,272 +2,224 @@ STORAGE: NONE RESTRICTION: || (== net6.0) (== netstandard2.0) NUGET remote: https://api.nuget.org/v3/index.json - Aardium (2.0.10-prerelease0007) - FSharp.Core (>= 4.7) + Aardium (2.1.1) + Aardvark.Base (>= 5.3 < 5.4) + FSharp.Core (>= 8.0) FSys (>= 0.0.1 < 0.1) - Aardvark.Application (5.4.10) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.Application.Slim (5.4.10) - Aardvark.Application (5.4.10) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) + Aardvark.Application (5.5.1) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade.Core (>= 5.6 < 5.7) + FShade.GLSL (>= 5.6) + FSharp.Core (>= 8.0) + Aardvark.Application.Slim (5.5.1) + Aardvark.Application (5.5.1) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade (>= 5.6 < 5.7) + FSharp.Core (>= 8.0) Silk.NET.GLFW (2.15) Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Application.Slim.GL (5.4.10) - Aardvark.Application (5.4.10) - Aardvark.Application.Slim (5.4.10) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - Aardvark.Rendering.GL (5.4.10) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) + Aardvark.Application.Slim.GL (5.5.1) + Aardvark.Application (5.5.1) + Aardvark.Application.Slim (5.5.1) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + Aardvark.Rendering.GL (5.5.1) + FShade (>= 5.6 < 5.7) + FSharp.Core (>= 8.0) Silk.NET.Core (2.15) Silk.NET.GLFW (2.15) Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Application.Slim.Vulkan (5.4.10) - Aardvark.Application (5.4.10) - Aardvark.Application.Slim (5.4.10) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - Aardvark.Rendering.Vulkan (5.4.10) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) + Aardvark.Application.Slim.Vulkan (5.5.1) + Aardvark.Application (5.5.1) + Aardvark.Application.Slim (5.5.1) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + Aardvark.Rendering.Vulkan (5.5.1) + FShade (>= 5.6 < 5.7) + FSharp.Core (>= 8.0) GLSLangSharp (>= 0.4.14 < 0.5) Silk.NET.GLFW (2.15) Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Assembler (0.0.8) - Aardvark.Base (>= 5.2.7 < 5.3) - Aardvark.Base.Runtime (>= 5.2.7 < 5.3) - FSharp.Core (>= 5.0) + Aardvark.Assembler (0.1) + Aardvark.Base.FSharp (>= 5.3) + FSharp.Core (>= 8.0) FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Aardvark.Base (5.2.31) - Aardvark.Base.Telemetry (5.2.31) - System.Collections.Immutable (>= 5.0) - System.Reflection.Metadata (>= 5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Text.Json (>= 4.7.2) - Aardvark.Base.Essentials (5.2.31) - Aardvark.Base (5.2.31) - System.Collections.Immutable (>= 5.0) - Aardvark.Base.FSharp (5.2.31) - Aardvark.Base (5.2.31) + Aardvark.Base (5.3.4) + Aardvark.Base.Telemetry (5.3.4) + SingleFileExtractor.Core (>= 2.2.1 < 2.3) + System.Collections.Immutable (>= 8.0) + System.Reflection.Metadata (>= 8.0) + System.Text.Json (>= 8.0.4) + Aardvark.Base.Essentials (5.3.4) + Aardvark.Base (5.3.4) + System.Collections.Immutable (>= 8.0) + Aardvark.Base.Fonts (5.3.4) + Aardvark.Base.FSharp (5.3.4) + FSharp.Core (>= 8.0) + FuzzySharp (>= 2.0.2 < 2.1) + Unofficial.LibTessDotNet (>= 2.0.2 < 2.1) + Unofficial.Typography (>= 0.1 < 0.2) + Aardvark.Base.FSharp (5.3.4) + Aardvark.Base (5.3.4) Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) + FSharp.Core (>= 8.0) FSharp.Data.Adaptive (>= 1.2 < 1.3) FsPickler (>= 5.3.2 < 5.4) System.Dynamic.Runtime (>= 4.3 < 4.4) - Aardvark.Base.Incremental (5.2.31) - Aardvark.Base (5.2.31) - Aardvark.Base.FSharp (5.2.31) + Aardvark.Base.Incremental (5.3.4) + Aardvark.Base (5.3.4) + Aardvark.Base.FSharp (5.3.4) Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) + FSharp.Core (>= 8.0) FSharp.Data.Adaptive (>= 1.2 < 1.3) FsPickler (>= 5.3.2 < 5.4) - Aardvark.Base.IO (5.2.31) - Aardvark.Base (5.2.31) - Aardvark.Base.Tensors (5.2.31) + Aardvark.Base.IO (5.3.4) + Aardvark.Base (5.3.4) + Aardvark.Base.Tensors (5.3.4) System.Dynamic.Runtime (>= 4.3 < 4.4) - Aardvark.Base.Runtime (5.2.31) - Aardvark.Base.FSharp (5.2.31) - Aardvark.Base.Incremental (5.2.31) - Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - Aardvark.Base.Telemetry (5.2.31) - Aardvark.Base.Tensors (5.2.31) - Aardvark.Base (5.2.31) - Aardvark.Base.FSharp (5.2.31) - FSharp.Core (>= 5.0) - SixLabors.ImageSharp (>= 2.1.3 < 2.2) + Aardvark.Base.Telemetry (5.3.4) + Aardvark.Base.Tensors (5.3.4) + Aardvark.Base (5.3.4) + Aardvark.Base.FSharp (5.3.4) + FSharp.Core (>= 8.0) Aardvark.Base.TypeProviders (4.5.15) FSharp.Core (>= 4.2.3) - Aardvark.Build (1.0.18) - Aardvark.Data.Wavefront (5.2.28) - Aardvark.Geometry.PolyMesh (5.2.28) - Aardvark.Geometry (5.2.31) - Aardvark.Base (5.2.31) - Aardvark.Base.FSharp (5.2.31) - Aardvark.Base.Tensors (5.2.31) + Aardvark.Build (1.0.25) + Aardvark.Data.Opc (0.11) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Rendering.Common (>= 5.5) + FSharp.Core (>= 8.0) + SharpZipLib (>= 1.4.1 < 1.5) + Aardvark.Data.Wavefront (5.3.10) + Aardvark.Geometry.PolyMesh (>= 5.5 < 5.6) + Aardvark.FontProvider (0.1) + Aardvark.Base.Fonts (>= 5.3) + FSharp.Core (>= 8.0.100) + Aardvark.Geometry (5.3.4) + Aardvark.Base (5.3.4) + Aardvark.Base.FSharp (5.3.4) + Aardvark.Base.Tensors (5.3.4) Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) + FSharp.Core (>= 8.0) FSharp.Data.Adaptive (>= 1.2 < 1.3) FsPickler (>= 5.3.2 < 5.4) Unofficial.LibTessDotNet (>= 2.0.2 < 2.1) - Aardvark.Geometry.Clustering (5.2.28) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Geometry.PointTree (5.2.28) - FSharp.Core (>= 5.0.1) - Aardvark.Geometry.Intersection (5.2.28) - Aardvark.Base.IO (>= 5.2.28 < 5.3) - Aardvark.Geometry.PointTree (5.2.28) - Aardvark.Base.IO (>= 5.2.28 < 5.3) - Aardvark.Geometry.PolyMesh (5.2.28) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Geometry.Clustering (5.2.28) - Aardvark.Geometry.Intersection (5.2.28) - Aardvark.Rendering (>= 5.4.1) - Aardvark.GeoSpatial.Opc (5.10.8) - Aardvark.Base (>= 5.2.13 < 5.3) - Aardvark.Base.FSharp (>= 5.2.13 < 5.3) - Aardvark.Base.IO (>= 5.2.13 < 5.3) - Aardvark.Geometry.Intersection (>= 5.2.13 < 5.3) - Aardvark.PixImage.DevIL (>= 5.2.25 < 5.3) - Aardvark.PixImage.Pfim (>= 0.9.1 < 0.10) - Aardvark.Rendering (>= 5.4 < 5.5) - Aardvark.Rendering.GL (>= 5.4 < 5.5) - Aardvark.SceneGraph (>= 5.4 < 5.5) - Aardvark.SceneGraph.Opc (>= 5.4 < 5.5) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Aardvark.GPGPU (5.4.10) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.PixImage.DevIL (5.2.31) - Aardvark.Base (5.2.31) - Aardvark.Base.Tensors (5.2.31) + Aardvark.Geometry.Clustering (5.5.2) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Geometry.PointTree (5.5.2) + FSharp.Core (>= 8.0) + Aardvark.Geometry.Intersection (5.5.2) + Aardvark.Base.IO (>= 5.3 < 5.4) + Aardvark.Geometry.PointTree (5.5.2) + Aardvark.Base.IO (>= 5.3 < 5.4) + Aardvark.Geometry.PolyMesh (5.5.2) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Geometry.Clustering (5.5.2) + Aardvark.Geometry.Intersection (5.5.2) + Aardvark.Rendering.Common (>= 5.5) + Aardvark.GeoSpatial.Opc (5.11.2) + Aardvark.Data.Opc (>= 0.11 < 0.12) + Aardvark.PixImage.DevIL (>= 5.2.33 < 5.3) + Aardvark.PixImage.Pfim (>= 0.9.3 < 0.10) + Aardvark.Rendering (>= 5.5 < 5.6) + Aardvark.Rendering.GL (>= 5.5 < 5.6) + Aardvark.SceneGraph (>= 5.5 < 5.6) + FSharp.Core (>= 8.0) + Aardvark.GPGPU (5.5.1) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade.Core (>= 5.6 < 5.7) + FShade.GLSL (>= 5.6) + FSharp.Core (>= 8.0) + Aardvark.PixImage.DevIL (5.2.33) + Aardvark.Base.Tensors (>= 5.3 < 5.4) DevILSharp - Aardvark.PixImage.Pfim (0.9.1) - Aardvark.Base.Tensors (>= 5.2.19 < 5.3) - FSharp.Core (>= 5.0.1) + Aardvark.PixImage.Pfim (0.9.3) + Aardvark.Base.Tensors (>= 5.3 < 5.4) + FSharp.Core (>= 8.0) Pfim (>= 0.11.2 < 0.12) - Aardvark.Rendering (5.4.10) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) + Aardvark.Rendering (5.5.1) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Rendering.Common (5.5.1) + FShade.Core (>= 5.6 < 5.7) + FShade.GLSL (>= 5.6) + FSharp.Core (>= 8.0) FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Aardvark.Rendering.GL (5.4.10) - Aardvark.Assembler (>= 0.0.8 < 0.1) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Geometry (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) + Aardvark.Rendering.Common (5.5.1) + Aardvark.Base (>= 5.3.4) + FSharp.Core (>= 8.0) + System.Reflection.Emit.Lightweight (>= 4.7) + Aardvark.Rendering.GL (5.5.1) + Aardvark.Assembler (>= 0.1 < 0.2) + Aardvark.Base.Essentials (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Geometry (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade (>= 5.6 < 5.7) + FSharp.Core (>= 8.0) Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Rendering.Text (5.4.10) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - Aardvark.SceneGraph (5.4.10) + Aardvark.Rendering.Text (5.5.1) + Aardvark.FontProvider (>= 0.1 < 0.2) + Aardvark.Rendering (5.5.1) + Aardvark.SceneGraph (5.5.1) CommonMark.NET (>= 0.15.1 < 0.16) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Unofficial.LibTessDotNet (>= 2.0.2 < 2.1) - Unofficial.Typography (>= 0.1 < 0.2) - Aardvark.Rendering.Vulkan (5.4.10) - Aardvark.Base.FSharp (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) + FSharp.Core (>= 8.0) + Aardvark.Rendering.Vulkan (5.5.1) + Aardvark.Base.FSharp (>= 5.3.4 < 5.4) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade (>= 5.6 < 5.7) + FSharp.Core (>= 8.0) GLSLangSharp (>= 0.4.14 < 0.5) - Aardvark.SceneGraph (5.4.10) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.SceneGraph.IO (5.4.10) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - Aardvark.SceneGraph (5.4.10) + Aardvark.SceneGraph (5.5.1) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + FShade.Core (>= 5.6 < 5.7) + FShade.GLSL (>= 5.6) + FSharp.Core (>= 8.0) + Aardvark.SceneGraph.Assimp (5.5.1) + Aardvark.Base.Incremental (>= 5.3.4 < 5.4) + Aardvark.Base.Tensors (>= 5.3.4 < 5.4) + Aardvark.Rendering (5.5.1) + Aardvark.SceneGraph (5.5.1) AssimpNet (>= 5.0.0-beta1 < 5.1.0-beta) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.SceneGraph.Opc (5.4.10) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.IO (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.10) - Aardvark.SceneGraph (5.4.10) - FSharp.Core (>= 5.0.1) - SharpZipLib (>= 1.4.1 < 1.5) - Aardvark.Service (5.4.4) - Aardvark.Application (>= 5.4.1) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Base.FSharp (>= 5.2.28 < 5.3) - Aardvark.GPGPU (>= 5.4.1 < 5.5) - Aardvark.Rendering (>= 5.4.1 < 5.5) - Aardvark.Rendering.GL (>= 5.4.1) - Aardvark.Rendering.Vulkan (>= 5.4.1 < 5.5) - FSharp.Core (>= 5.0.1) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - FsPickler (>= 5.3.2 < 5.4) + FShade.Core (>= 5.6 < 5.7) + FShade.GLSL (>= 5.6) + FSharp.Core (>= 8.0) + Aardvark.Service (5.5.2) + Aardvark.Application (>= 5.5) + Aardvark.GPGPU (>= 5.5 < 5.6) + Aardvark.Rendering.GL (>= 5.5) + Aardvark.Rendering.Vulkan (>= 5.5 < 5.6) FsPickler.Json (>= 5.3.2 < 5.4) Suave (>= 2.5.6 < 2.6) - Aardvark.Service.Giraffe (5.4.4) - Aardvark.Application (>= 5.4.1) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Base.FSharp (>= 5.2.28 < 5.3) - Aardvark.GPGPU (>= 5.4.1 < 5.5) - Aardvark.Rendering (>= 5.4.1 < 5.5) - Aardvark.Rendering.GL (>= 5.4.1) - Aardvark.Rendering.Vulkan (>= 5.4.1 < 5.5) - Aardvark.Service (5.4.4) - Aardvark.UI (5.4.4) - FSharp.Core (>= 5.0.1) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - FsPickler.Json (>= 5.3.2 < 5.4) - Giraffe (>= 5.0 < 5.1) - Suave (>= 2.5.6 < 2.6) - Aardvark.UI (5.4.4) - Aardvark.Application (>= 5.4.1) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Base.FSharp (>= 5.2.28 < 5.3) - Aardvark.Base.Incremental (>= 5.2.28 < 5.3) - Aardvark.Rendering (>= 5.4.1 < 5.5) - Aardvark.SceneGraph (>= 5.4.1 < 5.5) - Aardvark.Service (5.4.4) - FSharp.Core (>= 5.0.1) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - FsPickler.Json (>= 5.3.2 < 5.4) - Suave (>= 2.5.6 < 2.6) - Aardvark.UI.Primitives (5.4.4) - Aardvark.Application (>= 5.4.1) - Aardvark.Base (>= 5.2.28 < 5.3) - Aardvark.Base.FSharp (>= 5.2.28 < 5.3) - Aardvark.Base.Incremental (>= 5.2.28 < 5.3) - Aardvark.Rendering (>= 5.4.1 < 5.5) - Aardvark.SceneGraph (>= 5.4.1 < 5.5) - Aardvark.Service (5.4.4) - Aardvark.UI (5.4.4) - Adaptify.Core (>= 1.1.13 < 1.2) + Aardvark.Service.Giraffe (5.5.2) + Aardvark.Service (5.5.2) + Aardvark.UI (5.5.2) + Giraffe (>= 7.0 < 7.1) + Aardvark.UI (5.5.2) + Aardvark.SceneGraph (>= 5.5 < 5.6) + Aardvark.Service (5.5.2) + Aardvark.UI.Primitives (5.5.2) + Aardvark.Service (5.5.2) + Aardvark.UI (5.5.2) + Adaptify.Core (>= 1.3 < 2.0) Aether (>= 8.3.1 < 8.4) - FSharp.Core (>= 5.0.1) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - FsPickler.Json (>= 5.3.2 < 5.4) - Adaptify.Core (1.1.13) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Adaptify.MSBuild (1.1.13) - Adaptify.Core (1.1.13) + Adaptify.Core (1.3) + FSharp.Data.Adaptive (>= 1.2.14 < 1.3) + Adaptify.MSBuild (1.3) + Adaptify.Core (1.3) Aether (8.3.1) FSharp.Core (>= 4.3.4) AssimpNet (5.0.0-beta1) @@ -283,50 +235,54 @@ NUGET DynamicObj (>= 0.0.3) FSharp.Core (>= 5.0) Newtonsoft.Json (>= 12.0.3) - DevILSharp (0.2.19) + DevILSharp (0.2.20) FSharp.Core (>= 5.0) - DynamicObj (2.0) - FSharp.Core (>= 6.0.2) + DynamicObj (3.1) + Fable.Core (>= 4.3) + FSharp.Core (>= 6.0.7) Newtonsoft.Json (>= 13.0.1) - Fable.Core (3.7.1) + Fable.Core (4.3) FParsec (1.1.1) FSharp.Core (>= 4.3.4) - FShade (5.5.3) - FShade.Core (5.5.3) - FShade.GLSL (5.5.3) - FShade.Imperative (5.5.3) - FShade.SpirV (5.5.3) - FShade.Core (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) - FShade.GLSL (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Core (5.5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) - FShade.Imperative (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FSharp.Core (>= 5.0) + FShade (5.6) + FShade.Core (5.6) + FShade.GLSL (5.6) + FShade.Imperative (5.6) + FShade.SpirV (5.6) + FShade.Core (5.6) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Base.FSharp (>= 5.3 < 5.4) + FShade.Imperative (5.6) + FSharp.Core (>= 8.0) + FShade.GLSL (5.6) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Base.FSharp (>= 5.3 < 5.4) + FShade.Core (5.6) + FShade.Imperative (5.6) + FSharp.Core (>= 8.0) + FShade.Imperative (5.6) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Base.FSharp (>= 5.3 < 5.4) + FSharp.Core (>= 8.0) FsPickler (>= 5.3.2 < 5.4) - FShade.SpirV (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Core (5.5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) - FSharp.Control.Websockets (0.2.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - FSharp.Core (>= 4.3.4) - Microsoft.IO.RecyclableMemoryStream (>= 1.2.2) - FSharp.Core (6.0.2) + FShade.SpirV (5.6) + Aardvark.Base (>= 5.3 < 5.4) + Aardvark.Base.FSharp (>= 5.3 < 5.4) + FShade.Core (5.6) + FShade.Imperative (5.6) + FSharp.Core (>= 8.0) + FSharp.Control.Websockets (0.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + FSharp.Core (>= 6.0) + Microsoft.IO.RecyclableMemoryStream (>= 3.0) + FSharp.Core (8.0.100) FSharp.Data (3.1.1) FSharp.Core (>= 4.3.4) - FSharp.Data.Adaptive (1.2.15) + FSharp.Data.Adaptive (1.2.16) FSharp.Core (>= 4.7) System.Reflection.Emit.Lightweight (>= 4.6) + FSharp.SystemTextJson (1.3.13) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + FSharp.Core (>= 4.7) + System.Text.Json (>= 6.0) FsPickler (5.3.2) FSharp.Core (>= 4.3.2) System.Reflection.Emit.Lightweight (>= 4.3) @@ -336,27 +292,29 @@ NUGET Newtonsoft.Json (>= 10.0.1) FSys (0.0.1) FSharp.Core (>= 4.7) - Giraffe (5.0) - FSharp.Core (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Giraffe.ViewEngine (>= 1.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Microsoft.IO.RecyclableMemoryStream (>= 1.3.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Newtonsoft.Json (>= 12.0.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Ply (>= 0.3.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - System.Text.Json (>= 5.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Utf8Json (>= 1.3.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Giraffe.ViewEngine (1.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) + FuzzySharp (2.0.2) + Giraffe (7.0.1) + FSharp.Core (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + FSharp.SystemTextJson (>= 1.3.13) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Giraffe.ViewEngine (>= 1.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IO.RecyclableMemoryStream (>= 3.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + System.Text.Json (>= 8.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Giraffe.ViewEngine (1.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) FSharp.Core (>= 5.0) GLSLangSharp (0.4.15) FSharp.Core (>= 5.0) - Microsoft.AspNetCore.Authentication.JwtBearer (6.0.14) - Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 6.10) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Bcl.AsyncInterfaces (7.0) + Microsoft.AspNetCore.Authentication.JwtBearer (6.0.33) + Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 6.35) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Bcl.AsyncInterfaces (8.0) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) Microsoft.Bcl.HashCode (1.1.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Bcl.TimeProvider (8.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Bcl.AsyncInterfaces (>= 8.0) Microsoft.CSharp (4.7) - Microsoft.Diagnostics.NETCore.Client (0.2.410101) - Microsoft.Bcl.AsyncInterfaces (>= 1.1) - Microsoft.Extensions.Logging (>= 2.1.1) + Microsoft.Diagnostics.NETCore.Client (0.2.547301) + Microsoft.Bcl.AsyncInterfaces (>= 6.0) - restriction: == netstandard2.0 + Microsoft.Extensions.Logging.Abstractions (>= 6.0.4) + System.Buffers (>= 4.5.1) - restriction: == netstandard2.0 Microsoft.Diagnostics.Runtime (2.0.226801) Microsoft.Diagnostics.NETCore.Client (>= 0.2.221401) System.Buffers (>= 4.5.1) @@ -365,83 +323,51 @@ NUGET System.Reflection.Metadata (>= 5.0) System.Runtime.CompilerServices.Unsafe (>= 4.5.3) Microsoft.DotNet.PlatformAbstractions (3.1.6) - Microsoft.Extensions.DependencyInjection (7.0) - Microsoft.Bcl.AsyncInterfaces (>= 7.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (7.0) - Microsoft.Bcl.AsyncInterfaces (>= 7.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (8.0.1) + Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyModel (7.0) + Microsoft.Extensions.DependencyModel (8.0.1) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Text.Encodings.Web (>= 7.0) - System.Text.Json (>= 7.0) - Microsoft.Extensions.Logging (7.0) - Microsoft.Bcl.AsyncInterfaces (>= 7.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection (>= 7.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - Microsoft.Extensions.Logging.Abstractions (>= 7.0) - Microsoft.Extensions.Options (>= 7.0) - System.Diagnostics.DiagnosticSource (>= 7.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (7.0) + System.Text.Encodings.Web (>= 8.0) + System.Text.Json (>= 8.0.4) + Microsoft.Extensions.Logging.Abstractions (8.0.1) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - Microsoft.Extensions.Options (7.0.1) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - Microsoft.Extensions.Primitives (>= 7.0) - System.ComponentModel.Annotations (>= 5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.Primitives (7.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.IdentityModel.Abstractions (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.JsonWebTokens (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.Tokens (>= 6.27) - System.Text.Encoding (>= 4.3) - System.Text.Encodings.Web (>= 4.7.2) - System.Text.Json (>= 4.7.2) - Microsoft.IdentityModel.Logging (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.Abstractions (>= 6.27) - Microsoft.IdentityModel.Protocols (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.Logging (>= 6.27) - Microsoft.IdentityModel.Tokens (>= 6.27) - Microsoft.IdentityModel.Protocols.OpenIdConnect (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.Protocols (>= 6.27) - System.IdentityModel.Tokens.Jwt (>= 6.27) - Microsoft.IdentityModel.Tokens (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.CSharp (>= 4.5) - Microsoft.IdentityModel.Logging (>= 6.27) - System.Security.Cryptography.Cng (>= 4.5) - Microsoft.IO.RecyclableMemoryStream (2.3.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Microsoft.NETCore.Platforms (7.0) + Microsoft.IdentityModel.Abstractions (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IdentityModel.JsonWebTokens (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Bcl.TimeProvider (>= 8.0.1) + Microsoft.IdentityModel.Tokens (>= 8.1) + Microsoft.IdentityModel.Logging (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IdentityModel.Abstractions (>= 8.1) + Microsoft.IdentityModel.Protocols (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IdentityModel.Tokens (>= 8.1) + Microsoft.IdentityModel.Protocols.OpenIdConnect (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IdentityModel.Protocols (>= 8.1) + System.IdentityModel.Tokens.Jwt (>= 8.1) + Microsoft.IdentityModel.Tokens (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Bcl.TimeProvider (>= 8.0.1) + Microsoft.IdentityModel.Logging (>= 8.1) + Microsoft.IO.RecyclableMemoryStream (3.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) - Newtonsoft.Json (13.0.2) - OPCViewer.Base (1.7.2) - Aardvark.Base (>= 5.2.14 < 5.3) - Aardvark.Base.FSharp (>= 5.2.14 < 5.3) - Aardvark.Geometry.Intersection (>= 5.2.13 < 5.3) - Aardvark.Rendering (>= 5.4 < 5.5) - Aardvark.Rendering.Text (>= 5.4 < 5.5) - Aardvark.SceneGraph (>= 5.4 < 5.5) - Aardvark.SceneGraph.Opc (>= 5.4 < 5.5) - Aardvark.UI.Primitives (>= 5.4 < 5.5) - FSharp.Core (>= 5.0.1) + Newtonsoft.Json (13.0.3) + OPCViewer.Base (1.9.2) + Aardvark.Data.Opc (>= 0.11 < 0.12) + Aardvark.Geometry.Intersection (>= 5.5 < 5.6) + Aardvark.Rendering.Text (>= 5.5 < 5.6) + Aardvark.UI.Primitives (>= 5.5 < 5.6) + FSharp.Core (>= 8.0) Uncodium.Eigensystems (>= 1.1.2 < 1.2) - Pfim (0.11.2) - Ply (0.3.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - FSharp.Core (>= 4.6.2) - System.Threading.Tasks.Extensions (>= 4.5.4) - PRo3D.SPICE (1.0.2) - Aardvark.Base (>= 5.2.13 < 5.3) - FSharp.Core (>= 5.0.1) + Pfim (0.11.3) RestSharp (106.6.10) - Saturn (0.15) - FSharp.Control.Websockets (>= 0.2.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - FSharp.Core (>= 5.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Giraffe (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Microsoft.AspNetCore.Authentication.JwtBearer (>= 5.0.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) + Saturn (0.17) + FSharp.Control.Websockets (>= 0.2.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Giraffe (>= 6.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.AspNetCore.Authentication.JwtBearer (>= 6.0.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) SharpZipLib (1.4.2) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) System.Threading.Tasks.Extensions (>= 4.5.2) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) @@ -456,7 +382,9 @@ NUGET Silk.NET.GLFW (2.15) Silk.NET.Core (>= 2.15) Ultz.Native.GLFW (>= 3.3.3.1) - SixLabors.ImageSharp (2.1.8) + SingleFileExtractor.Core (2.2.1) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) + SixLabors.ImageSharp (2.1.9) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp2.1)) (== netstandard2.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp2.1)) (== netstandard2.0) System.Numerics.Vectors (>= 4.5) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp2.1)) (== netstandard2.0) @@ -469,17 +397,13 @@ NUGET Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Collections.Immutable (7.0) + System.Collections.Immutable (8.0) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.ComponentModel.Annotations (5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) System.Diagnostics.Debug (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Diagnostics.DiagnosticSource (7.0.1) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Dynamic.Runtime (4.3) System.Collections (>= 4.3) System.Diagnostics.Debug (>= 4.3) @@ -495,14 +419,13 @@ NUGET System.Runtime (>= 4.3) System.Runtime.Extensions (>= 4.3) System.Threading (>= 4.3) - System.Formats.Asn1 (7.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Globalization (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.IdentityModel.Tokens.Jwt (6.27) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.IdentityModel.JsonWebTokens (>= 6.27) - Microsoft.IdentityModel.Tokens (>= 6.27) + System.IdentityModel.Tokens.Jwt (8.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.IdentityModel.JsonWebTokens (>= 8.1) + Microsoft.IdentityModel.Tokens (>= 8.1) System.IO (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -560,8 +483,8 @@ NUGET Microsoft.NETCore.Targets (>= 1.1) System.Reflection (>= 4.3) System.Runtime (>= 4.3) - System.Reflection.Metadata (7.0) - System.Collections.Immutable (>= 7.0) + System.Reflection.Metadata (8.0) + System.Collections.Immutable (>= 8.0) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Reflection.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) @@ -582,20 +505,24 @@ NUGET Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) System.Runtime (>= 4.3.1) - System.Security.Cryptography.Cng (5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (7.0) + System.Text.Encoding.CodePages (8.0) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (7.0) + System.Text.Encodings.Web (8.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (7.0.2) + System.Text.Json (8.0.4) + Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 7.0) + System.Text.Encodings.Web (>= 8.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) System.Threading (4.3) System.Runtime (>= 4.3) System.Threading.Tasks (>= 4.3) @@ -603,144 +530,140 @@ NUGET Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Threading.Tasks.Extensions (4.5.4) - System.ValueTuple (4.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Thoth.Json.Giraffe (5.0) - FSharp.Core (>= 5.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Giraffe (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - Thoth.Json.Net (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (== netstandard2.0) + Thoth.Json.Giraffe (6.0) + FSharp.Core (>= 6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Giraffe (>= 6.0.0-alpha-1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) + Thoth.Json.Net (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) Thoth.Json.Net (11.0) Fable.Core (>= 3.1.6) FSharp.Core (>= 4.7.2) Newtonsoft.Json (>= 11.0.2) - Ultz.Native.GLFW (3.3.3.1) + Ultz.Native.GLFW (3.4) Uncodium.Eigensystems (1.1.2) Aardvark.Base (>= 5.1 < 6.0) Unofficial.LibTessDotNet (2.0.2) Unofficial.OpenTK (3.0.21) Unofficial.Typography (0.1) System.Numerics.Vectors (>= 4.5) - Utf8Json (1.3.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net5.0)) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.Lightweight (>= 4.3) - System.Threading.Tasks.Extensions (>= 4.4) - System.ValueTuple (>= 4.4) GROUP Build RESTRICTION: == net6.0 NUGET remote: https://api.nuget.org/v3/index.json - Argu (6.1.1) - FSharp.Core (>= 4.3.2) + Argu (6.2.4) + FSharp.Core (>= 6.0.7) System.Configuration.ConfigurationManager (>= 4.4) BlackFox.VsWhere (1.1) FSharp.Core (>= 4.2.3) Microsoft.Win32.Registry (>= 4.7) - fake-cli (5.23.1) - Fake.Api.GitHub (5.23.1) - FSharp.Core (>= 6.0) - Octokit (>= 0.50) - Fake.Core.CommandLineParsing (5.23.1) + fake-cli (6.1.2) + Fake.Api.GitHub (6.1.2) + FSharp.Core (>= 8.0.301) + Octokit (>= 13.0.1) + Fake.Core.CommandLineParsing (6.1.2) FParsec (>= 1.1.1) - FSharp.Core (>= 6.0) - Fake.Core.Context (5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.Environment (5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.FakeVar (5.23.1) - Fake.Core.Context (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.Process (5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.FakeVar (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) - FSharp.Core (>= 6.0) - System.Collections.Immutable (>= 5.0) - Fake.Core.ReleaseNotes (5.23.1) - Fake.Core.SemVer (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.SemVer (5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.String (5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.Target (5.23.1) - Fake.Core.CommandLineParsing (>= 5.23.1) - Fake.Core.Context (>= 5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.FakeVar (>= 5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) + FSharp.Core (>= 8.0.301) + Fake.Core.Context (6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.Environment (6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.FakeVar (6.1.2) + Fake.Core.Context (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.Process (6.1.2) + Fake.Core.Environment (>= 6.1.2) + Fake.Core.FakeVar (>= 6.1.2) + Fake.Core.String (>= 6.1.2) + Fake.Core.Trace (>= 6.1.2) + Fake.IO.FileSystem (>= 6.1.2) + FSharp.Core (>= 8.0.301) + System.Collections.Immutable (>= 8.0) + Fake.Core.ReleaseNotes (6.1.2) + Fake.Core.SemVer (>= 6.1.2) + Fake.Core.String (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.SemVer (6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.String (6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.Target (6.1.2) + Fake.Core.CommandLineParsing (>= 6.1.2) + Fake.Core.Context (>= 6.1.2) + Fake.Core.Environment (>= 6.1.2) + Fake.Core.FakeVar (>= 6.1.2) + Fake.Core.Process (>= 6.1.2) + Fake.Core.String (>= 6.1.2) + Fake.Core.Trace (>= 6.1.2) FSharp.Control.Reactive (>= 5.0.2) - FSharp.Core (>= 6.0) - Fake.Core.Tasks (5.23.1) - Fake.Core.Trace (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.Trace (5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.FakeVar (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Core.Xml (5.23.1) - Fake.Core.String (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.DotNet.Cli (5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.DotNet.MSBuild (>= 5.23.1) - Fake.DotNet.NuGet (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) + FSharp.Core (>= 8.0.301) + Fake.Core.Tasks (6.1.2) + Fake.Core.Trace (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.Trace (6.1.2) + Fake.Core.Environment (>= 6.1.2) + Fake.Core.FakeVar (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Core.Xml (6.1.2) + Fake.Core.String (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.DotNet.Cli (5.23) + Fake.Core.Environment (>= 5.23) + Fake.Core.Process (>= 5.23) + Fake.Core.String (>= 5.23) + Fake.Core.Trace (>= 5.23) + Fake.DotNet.MSBuild (>= 5.23) + Fake.DotNet.NuGet (>= 5.23) + Fake.IO.FileSystem (>= 5.23) FSharp.Core (>= 6.0) Mono.Posix.NETStandard (>= 1.0) Newtonsoft.Json (>= 13.0.1) - Fake.DotNet.MSBuild (5.23.1) + Fake.DotNet.MSBuild (5.23) BlackFox.VsWhere (>= 1.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) + Fake.Core.Environment (>= 5.23) + Fake.Core.Process (>= 5.23) + Fake.Core.String (>= 5.23) + Fake.Core.Trace (>= 5.23) + Fake.IO.FileSystem (>= 5.23) FSharp.Core (>= 6.0) MSBuild.StructuredLogger (>= 2.1.545) - Fake.DotNet.NuGet (5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.SemVer (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Tasks (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.Core.Xml (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) - Fake.Net.Http (>= 5.23.1) - FSharp.Core (>= 6.0) - Newtonsoft.Json (>= 13.0.1) - NuGet.Protocol (>= 5.11) - Fake.DotNet.Paket (5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.DotNet.Cli (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) + Fake.DotNet.NuGet (6.1.2) + Fake.Core.Environment (>= 6.1.2) + Fake.Core.Process (>= 6.1.2) + Fake.Core.SemVer (>= 6.1.2) + Fake.Core.String (>= 6.1.2) + Fake.Core.Tasks (>= 6.1.2) + Fake.Core.Trace (>= 6.1.2) + Fake.Core.Xml (>= 6.1.2) + Fake.IO.FileSystem (>= 6.1.2) + Fake.Net.Http (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Newtonsoft.Json (>= 13.0.3) + NuGet.Protocol (>= 6.10.1) + Fake.DotNet.Paket (5.23) + Fake.Core.Process (>= 5.23) + Fake.Core.String (>= 5.23) + Fake.Core.Trace (>= 5.23) + Fake.DotNet.Cli (>= 5.23) + Fake.IO.FileSystem (>= 5.23) FSharp.Core (>= 6.0) - Fake.IO.FileSystem (5.23.1) - Fake.Core.String (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Net.Http (5.23.1) - Fake.Core.Trace (>= 5.23.1) - FSharp.Core (>= 6.0) - Fake.Tools.Git (5.23.1) - Fake.Core.Environment (>= 5.23.1) - Fake.Core.Process (>= 5.23.1) - Fake.Core.SemVer (>= 5.23.1) - Fake.Core.String (>= 5.23.1) - Fake.Core.Trace (>= 5.23.1) - Fake.IO.FileSystem (>= 5.23.1) - FSharp.Core (>= 6.0) - Farmer (1.7.17) + Fake.IO.FileSystem (6.1.2) + Fake.Core.String (>= 6.1.2) + Fake.Core.Trace (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Net.Http (6.1.2) + Fake.Core.Trace (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Fake.Tools.Git (6.1.2) + Fake.Core.Environment (>= 6.1.2) + Fake.Core.Process (>= 6.1.2) + Fake.Core.SemVer (>= 6.1.2) + Fake.Core.String (>= 6.1.2) + Fake.Core.Trace (>= 6.1.2) + Fake.IO.FileSystem (>= 6.1.2) + FSharp.Core (>= 8.0.301) + Farmer (1.9.2) FSharp.Core (>= 5.0) System.Text.Json (>= 5.0) FParsec (1.1.1) @@ -748,7 +671,7 @@ NUGET FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0 < 6.0) - FSharp.Core (7.0.200) + FSharp.Core (8.0.400) Microsoft.Build (17.3.2) Microsoft.Build.Framework (>= 17.3.2) Microsoft.NET.StringTools (>= 17.3.2) @@ -779,228 +702,71 @@ NUGET Microsoft.NET.StringTools (>= 17.3.2) System.Collections.Immutable (>= 6.0) System.Configuration.ConfigurationManager (>= 6.0) - Microsoft.NET.StringTools (17.4) + Microsoft.NET.StringTools (17.11.4) System.Memory (>= 4.5.5) System.Runtime.CompilerServices.Unsafe (>= 6.0) Microsoft.Win32.Registry (5.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (7.0) - Mono.Cecil (0.11.4) + Mono.Cecil (0.11.5) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.768) + MSBuild.StructuredLogger (2.1.815) Microsoft.Build.Framework (>= 16.10) Microsoft.Build.Utilities.Core (>= 16.10) - Newtonsoft.Json (13.0.2) - NuGet.Common (6.4) - NuGet.Frameworks (>= 6.4) - NuGet.Configuration (6.4) - NuGet.Common (>= 6.4) + Newtonsoft.Json (13.0.3) + NuGet.Common (6.11) + NuGet.Frameworks (>= 6.11) + NuGet.Configuration (6.11) + NuGet.Common (>= 6.11) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.4) - NuGet.Packaging (6.4) - Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.4) - NuGet.Versioning (>= 6.4) - System.Security.Cryptography.Cng (>= 5.0) - System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.4) - NuGet.Packaging (>= 6.4) - NuGet.Versioning (6.4) - Octokit (5.0) - System.CodeDom (7.0) - System.Collections.Immutable (7.0) + NuGet.Frameworks (6.11) + NuGet.Packaging (6.11) + Newtonsoft.Json (>= 13.0.3) + NuGet.Configuration (>= 6.11) + NuGet.Versioning (>= 6.11) + System.Security.Cryptography.Pkcs (>= 6.0.4) + NuGet.Protocol (6.11) + NuGet.Packaging (>= 6.11) + NuGet.Versioning (6.11) + Octokit (13.0.1) + System.CodeDom (8.0) + System.Collections.Immutable (8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Configuration.ConfigurationManager (7.0) - System.Security.Cryptography.ProtectedData (>= 7.0) - System.Security.Permissions (>= 7.0) - System.Drawing.Common (7.0) - Microsoft.Win32.SystemEvents (>= 7.0) - System.Formats.Asn1 (7.0) + System.Configuration.ConfigurationManager (8.0) + System.Security.Cryptography.ProtectedData (>= 8.0) + System.Formats.Asn1 (8.0.1) System.Memory (4.5.5) System.Reactive (5.0) - System.Reflection.Metadata (7.0) - System.Collections.Immutable (>= 7.0) - System.Reflection.MetadataLoadContext (7.0) - System.Collections.Immutable (>= 7.0) - System.Reflection.Metadata (>= 7.0) - System.Resources.Extensions (7.0) + System.Reflection.Metadata (8.0) + System.Collections.Immutable (>= 8.0) + System.Reflection.MetadataLoadContext (8.0) + System.Collections.Immutable (>= 8.0) + System.Reflection.Metadata (>= 8.0) + System.Resources.Extensions (8.0) System.Runtime.CompilerServices.Unsafe (6.0) - System.Security.AccessControl (6.0) - System.Security.Cryptography.Cng (5.0) - System.Formats.Asn1 (>= 5.0) - System.Security.Cryptography.Pkcs (7.0.1) - System.Formats.Asn1 (>= 7.0) - System.Security.Cryptography.ProtectedData (7.0.1) - System.Security.Cryptography.Xml (7.0.1) - System.Security.Cryptography.Pkcs (>= 7.0) - System.Security.Permissions (7.0) - System.Windows.Extensions (>= 7.0) + System.Security.AccessControl (6.0.1) + System.Security.Cryptography.Pkcs (8.0) + System.Formats.Asn1 (>= 8.0) + System.Security.Cryptography.ProtectedData (8.0) + System.Security.Cryptography.Xml (8.0.1) + System.Security.Cryptography.Pkcs (>= 8.0) + System.Security.Permissions (8.0) + System.Windows.Extensions (>= 8.0) System.Security.Principal.Windows (5.0) - System.Text.Encoding.CodePages (7.0) + System.Text.Encoding.CodePages (8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (7.0) + System.Text.Encodings.Web (8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (7.0.2) + System.Text.Json (8.0.4) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 7.0) - System.Threading.Tasks.Dataflow (7.0) - System.Windows.Extensions (7.0) - System.Drawing.Common (>= 7.0) + System.Text.Encodings.Web (>= 8.0) + System.Threading.Tasks.Dataflow (8.0.1) + System.Windows.Extensions (8.0) GROUP Test RESTRICTION: || (== net6.0) (== net6.0-windows7.0) NUGET remote: https://api.nuget.org/v3/index.json - Aardvark.Application (5.4.8) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.Application.Slim (5.4.8) - Aardvark.Application (5.4.8) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) - Silk.NET.GLFW (2.15) - Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Application.Slim.GL (5.4.8) - Aardvark.Application (5.4.8) - Aardvark.Application.Slim (5.4.8) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - Aardvark.Rendering.GL (5.4.8) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) - Silk.NET.Core (2.15) - Silk.NET.GLFW (2.15) - Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Application.Slim.Vulkan (5.4.8) - Aardvark.Application (5.4.8) - Aardvark.Application.Slim (5.4.8) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - Aardvark.Rendering.Vulkan (5.4.8) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) - GLSLangSharp (>= 0.4.14 < 0.5) - Silk.NET.GLFW (2.15) - Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Assembler (0.0.8) - Aardvark.Base (>= 5.2.7 < 5.3) - Aardvark.Base.Runtime (>= 5.2.7 < 5.3) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Aardvark.Base (5.2.28) - Aardvark.Base.Telemetry (5.2.28) - System.Collections.Immutable (>= 5.0) - System.Text.Json (>= 4.7.2) - Aardvark.Base.Essentials (5.2.28) - Aardvark.Base (5.2.28) - System.Collections.Immutable (>= 5.0) - Aardvark.Base.FSharp (5.2.28) - Aardvark.Base (5.2.28) - Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - System.Dynamic.Runtime (>= 4.3 < 4.4) - Aardvark.Base.Incremental (5.2.28) - Aardvark.Base (5.2.28) - Aardvark.Base.FSharp (5.2.28) - Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - Aardvark.Base.Runtime (5.2.28) - Aardvark.Base.FSharp (5.2.28) - Aardvark.Base.Incremental (5.2.28) - Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - Aardvark.Base.Telemetry (5.2.28) - Aardvark.Base.Tensors (5.2.28) - Aardvark.Base (5.2.28) - Aardvark.Base.FSharp (5.2.28) - FSharp.Core (>= 5.0) - SixLabors.ImageSharp (>= 2.1.3 < 2.2) - Aardvark.Base.TypeProviders (4.5.15) - FSharp.Core (>= 4.2.3) - Aardvark.Geometry (5.2.28) - Aardvark.Base (5.2.28) - Aardvark.Base.FSharp (5.2.28) - Aardvark.Base.Tensors (5.2.28) - Aardvark.Base.TypeProviders (>= 4.5.15 < 4.6) - FSharp.Core (>= 5.0) - FSharp.Data.Adaptive (>= 1.2 < 1.3) - FsPickler (>= 5.3.2 < 5.4) - Unofficial.LibTessDotNet (>= 2.0.2 < 2.1) - Aardvark.Rendering (5.4.8) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - FSharp.Data.Adaptive (>= 1.2.13 < 1.3) - Aardvark.Rendering.GL (5.4.8) - Aardvark.Assembler (>= 0.0.8 < 0.1) - Aardvark.Base.Essentials (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Geometry (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) - Unofficial.OpenTK (>= 3.0.21 < 3.1) - Aardvark.Rendering.Text (5.4.8) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - Aardvark.SceneGraph (5.4.8) - CommonMark.NET (>= 0.15.1 < 0.16) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Unofficial.LibTessDotNet (>= 2.0.2 < 2.1) - Unofficial.Typography (>= 0.1 < 0.2) - Aardvark.Rendering.Vulkan (5.4.8) - Aardvark.Base.FSharp (>= 5.2.27 < 5.3) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Runtime (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - FShade (>= 5.5.3 < 5.6) - FSharp.Core (>= 5.0.1) - GLSLangSharp (>= 0.4.14 < 0.5) - Aardvark.SceneGraph (5.4.8) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - Aardvark.SceneGraph.IO (5.4.8) - Aardvark.Base.Incremental (>= 5.2.27 < 5.3) - Aardvark.Base.Tensors (>= 5.2.27 < 5.3) - Aardvark.Rendering (5.4.8) - Aardvark.SceneGraph (5.4.8) - AssimpNet (>= 5.0.0-beta1 < 5.1.0-beta) - FShade.Core (>= 5.5.3 < 5.6) - FShade.GLSL (>= 5.5.3) - FSharp.Core (>= 5.0.1) - AssimpNet (5.0.0-beta1) - NETStandard.Library (>= 1.6.1) BenchmarkDotNet (0.13.12) BenchmarkDotNet.Annotations (>= 0.13.12) CommandLineParser (>= 2.9.1) @@ -1012,9 +778,8 @@ NUGET Microsoft.DotNet.PlatformAbstractions (>= 3.1.6) Perfolizer (0.2.1) System.Management (>= 5.0) - BenchmarkDotNet.Annotations (0.13.12) + BenchmarkDotNet.Annotations (0.14) CommandLineParser (2.9.1) - CommonMark.NET (0.15.1) Expecto (9.0.4) FSharp.Core (>= 4.6) Mono.Cecil (>= 0.11.3) @@ -1026,94 +791,58 @@ NUGET FsCheck.NUnit (2.16.6) FsCheck (2.16.6) NUnit (>= 3.13.1 < 4.0) - FShade (5.5.3) - FShade.Core (5.5.3) - FShade.GLSL (5.5.3) - FShade.Imperative (5.5.3) - FShade.SpirV (5.5.3) - FShade.Core (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) - FShade.GLSL (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Core (5.5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) - FShade.Imperative (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FSharp.Core (>= 5.0) - FsPickler (>= 5.3.2 < 5.4) - FShade.SpirV (5.5.3) - Aardvark.Base (>= 5.2.19 < 5.3) - Aardvark.Base.FSharp (>= 5.2.19 < 5.3) - FShade.Core (5.5.3) - FShade.Imperative (5.5.3) - FSharp.Core (>= 5.0) FSharp.Core (6.0.2) - FSharp.Data.Adaptive (1.2.14) - FSharp.Core (>= 4.7) - System.Reflection.Emit.Lightweight (>= 4.6) - FsPickler (5.3.2) - FSharp.Core (>= 4.3.2) - System.Reflection.Emit.Lightweight (>= 4.3) FsUnit (5.0.5) FSharp.Core (>= 5.0.2) NUnit (>= 3.13.3 < 3.14) Gee.External.Capstone (2.3) - GLSLangSharp (0.4.15) - FSharp.Core (>= 5.0) Iced (1.21) Microsoft.CodeAnalysis.Analyzers (3.3.4) - Microsoft.CodeAnalysis.Common (4.8) + Microsoft.CodeAnalysis.Common (4.11) Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - System.Collections.Immutable (>= 7.0) - System.Reflection.Metadata (>= 7.0) + System.Buffers (>= 4.5.1) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) + System.Numerics.Vectors (>= 4.5) + System.Reflection.Metadata (>= 8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.CodeAnalysis.CSharp (4.8) - Microsoft.CodeAnalysis.Common (4.8) - Microsoft.CodeCoverage (17.8) - Microsoft.CSharp (4.7) - Microsoft.Diagnostics.NETCore.Client (0.2.505301) - Microsoft.Extensions.Logging (>= 6.0) - Microsoft.Diagnostics.Runtime (3.1.456101) + System.Text.Encoding.CodePages (>= 7.0) + System.Threading.Tasks.Extensions (>= 4.5.4) + Microsoft.CodeAnalysis.CSharp (4.11) + Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) + Microsoft.CodeAnalysis.Common (4.11) + System.Buffers (>= 4.5.1) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) + System.Numerics.Vectors (>= 4.5) + System.Reflection.Metadata (>= 8.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Text.Encoding.CodePages (>= 7.0) + System.Threading.Tasks.Extensions (>= 4.5.4) + Microsoft.CodeCoverage (17.11.1) + Microsoft.Diagnostics.NETCore.Client (0.2.547301) + Microsoft.Extensions.Logging.Abstractions (>= 6.0.4) + Microsoft.Diagnostics.Runtime (3.1.512801) Microsoft.Diagnostics.NETCore.Client (>= 0.2.410101) - System.Collections.Immutable (>= 6.0) + Microsoft.Diagnostics.Tracing.TraceEvent (3.1.15) + Microsoft.Diagnostics.NETCore.Client (>= 0.2.510501) + Microsoft.Win32.Registry (>= 5.0) + System.Collections.Immutable (>= 8.0) + System.Reflection.Metadata (>= 8.0) + System.Reflection.TypeExtensions (>= 4.7) System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.Diagnostics.Tracing.TraceEvent (3.1.7) - Microsoft.Win32.Registry (>= 4.4) - System.Runtime.CompilerServices.Unsafe (>= 5.0) Microsoft.DotNet.PlatformAbstractions (3.1.6) - Microsoft.Extensions.DependencyInjection (8.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - Microsoft.Extensions.DependencyInjection.Abstractions (8.0) - Microsoft.Extensions.DependencyModel (8.0) - System.Text.Encodings.Web (>= 8.0) - System.Text.Json (>= 8.0) - Microsoft.Extensions.Logging (8.0) - Microsoft.Extensions.DependencyInjection (>= 8.0) - Microsoft.Extensions.Logging.Abstractions (>= 8.0) - Microsoft.Extensions.Options (>= 8.0) - Microsoft.Extensions.Logging.Abstractions (8.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - Microsoft.Extensions.Options (8.0.1) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - Microsoft.Extensions.Primitives (>= 8.0) - Microsoft.Extensions.Primitives (8.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) + Microsoft.Extensions.DependencyInjection.Abstractions (8.0.1) + Microsoft.Extensions.Logging.Abstractions (8.0.1) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1) Microsoft.NET.Test.Sdk (17.2.1) Microsoft.CodeCoverage (>= 17.2.1) Microsoft.TestPlatform.TestHost (>= 17.2.1) Microsoft.NETCore.Platforms (7.0.4) - Microsoft.NETCore.Targets (5.0) - Microsoft.TestPlatform.ObjectModel (17.8) - NuGet.Frameworks (>= 6.5) + Microsoft.TestPlatform.ObjectModel (17.11.1) System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.8) - Microsoft.TestPlatform.ObjectModel (>= 17.8) + Microsoft.TestPlatform.TestHost (17.11.1) + Microsoft.TestPlatform.ObjectModel (>= 17.11.1) Newtonsoft.Json (>= 13.0.1) Microsoft.Win32.Registry (5.0) System.Security.AccessControl (>= 5.0) @@ -1122,158 +851,28 @@ NUGET NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) Newtonsoft.Json (13.0.3) - NuGet.Frameworks (6.8) NUnit (3.13.3) NETStandard.Library (>= 2.0) NUnit3TestAdapter (4.2.1) Perfolizer (0.2.1) System.Memory (>= 4.5.3) - PRo3D.SPICE (1.0.2) - Aardvark.Base (>= 5.2.13 < 5.3) - FSharp.Core (>= 5.0.1) - Silk.NET.Core (2.15) - Microsoft.CSharp (>= 4.7) - Microsoft.DotNet.PlatformAbstractions (>= 3.1.6) - Microsoft.Extensions.DependencyModel (>= 5.0) - System.Memory (>= 4.5.4) - System.Numerics.Vectors (>= 4.5) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Silk.NET.GLFW (2.15) - Silk.NET.Core (>= 2.15) - Ultz.Native.GLFW (>= 3.3.3.1) - SixLabors.ImageSharp (2.1.6) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - System.Text.Encoding.CodePages (>= 5.0) + System.Buffers (4.5.1) System.CodeDom (8.0) - System.Collections (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) System.Collections.Immutable (8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Diagnostics.Debug (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Dynamic.Runtime (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Linq (>= 4.3) - System.Linq.Expressions (>= 4.3) - System.ObjectModel (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Reflection.TypeExtensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Globalization (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.IO (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Linq (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Linq.Expressions (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Linq (>= 4.3) - System.ObjectModel (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Emit.Lightweight (>= 4.3) - System.Reflection.Extensions (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Reflection.TypeExtensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) System.Management (8.0) System.CodeDom (>= 8.0) System.Memory (4.5.5) System.Numerics.Vectors (4.5) - System.ObjectModel (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Reflection (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Emit (4.7) - System.Reflection.Emit.ILGeneration (4.7) - System.Reflection.Emit.Lightweight (4.7) - System.Reflection.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) System.Reflection.Metadata (8.0) System.Collections.Immutable (>= 8.0) - System.Reflection.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) System.Reflection.TypeExtensions (4.7) - System.Resources.ResourceManager (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) System.Runtime.CompilerServices.Unsafe (6.0) - System.Runtime.Extensions (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime (>= 4.3.1) - System.Security.AccessControl (6.0) + System.Security.AccessControl (6.0.1) System.Security.Principal.Windows (5.0) - System.Text.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) System.Text.Encoding.CodePages (8.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (8.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (8.0.1) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 8.0) - System.Threading (4.3) - System.Runtime (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Tasks (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - Ultz.Native.GLFW (3.3.9.2) - Unofficial.LibTessDotNet (2.0.2) - Unofficial.OpenTK (3.0.21) - Unofficial.Typography (0.1) - System.Numerics.Vectors (>= 4.5) + System.Threading.Tasks.Extensions (4.5.4) YoloDev.Expecto.TestSdk (0.12.20) Expecto (>= 9.0 < 10.0) FSharp.Core (>= 4.6) diff --git a/src/OpcViewer/AnnotationViewer.fs b/src/OpcViewer/AnnotationViewer.fs index 3250f19b..d297aa80 100644 --- a/src/OpcViewer/AnnotationViewer.fs +++ b/src/OpcViewer/AnnotationViewer.fs @@ -4,7 +4,7 @@ open System.IO open Aardvark.Base open Aardvark.Rendering open Aardvark.Application -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Application.Slim open Aardvark.GeoSpatial.Opc @@ -27,7 +27,7 @@ open PRo3D.Base open Aardvark.Geometry - +open Aardvark.GeoSpatial.Opc.Load diff --git a/src/OpcViewer/TestViewer.fs b/src/OpcViewer/TestViewer.fs index 075ee6d8..6483329d 100644 --- a/src/OpcViewer/TestViewer.fs +++ b/src/OpcViewer/TestViewer.fs @@ -4,13 +4,15 @@ open Aardvark.Base open Aardvark.Rendering open Aardvark.SceneGraph open Aardvark.Application -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Application.Slim open Aardvark.GeoSpatial.Opc open FSharp.Data.Adaptive open MBrace.FsPickler +open Aardvark.GeoSpatial.Opc.Load + [] module Shader = diff --git a/src/OpcViewer/paket.references b/src/OpcViewer/paket.references index bbc20522..1f587e35 100644 --- a/src/OpcViewer/paket.references +++ b/src/OpcViewer/paket.references @@ -6,9 +6,10 @@ Aardvark.Rendering Aardvark.Application.Slim.GL Aardvark.Application.Slim.Vulkan Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.Data.Opc Aardvark.Rendering.Text +Aardvark.SceneGraph.Assimp + FSharp.Core Uncodium.Eigensystems diff --git a/src/PRo3D.2D3DLinking/App.fs b/src/PRo3D.2D3DLinking/App.fs index b2bc1241..d2905b06 100644 --- a/src/PRo3D.2D3DLinking/App.fs +++ b/src/PRo3D.2D3DLinking/App.fs @@ -10,7 +10,7 @@ namespace LinkingTestApp //open Aardvark.Rendering.Text //open Aardvark.SceneGraph -//open Aardvark.SceneGraph.Opc +//open Aardvark.Data.Opc //open FShade //open Aardvark.Application @@ -22,7 +22,7 @@ namespace LinkingTestApp //open OpcViewer.Base.Picking //open PRo3D.Base //open PRo3D.Minerva -//open Aardvark.VRVis.Opc +//open Aardvark.Data.Opc //open PRo3D.Linking //open Aether diff --git a/src/PRo3D.2D3DLinking/Model.fs b/src/PRo3D.2D3DLinking/Model.fs index 554abeb7..bfb1edcd 100644 --- a/src/PRo3D.2D3DLinking/Model.fs +++ b/src/PRo3D.2D3DLinking/Model.fs @@ -5,7 +5,7 @@ open PRo3D.Linking open Aardvark.Base open Aardvark.Rendering open FSharp.Data.Adaptive -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.UI.Primitives open Aardvark.Application diff --git a/src/PRo3D.2D3DLinking/paket.references b/src/PRo3D.2D3DLinking/paket.references index 8fe0dc86..f8c06371 100644 --- a/src/PRo3D.2D3DLinking/paket.references +++ b/src/PRo3D.2D3DLinking/paket.references @@ -7,8 +7,8 @@ Aardvark.Application.Slim.GL Aardvark.Rendering.Text Aardvark.UI.Primitives Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.SceneGraph.Assimp +Aardvark.Data.Opc Adaptify.MSBuild Adaptify.Core diff --git a/src/PRo3D.Base/Annotation/Annotation-Model.fs b/src/PRo3D.Base/Annotation/Annotation-Model.fs index cb39555f..d1bd135c 100644 --- a/src/PRo3D.Base/Annotation/Annotation-Model.fs +++ b/src/PRo3D.Base/Annotation/Annotation-Model.fs @@ -5,8 +5,6 @@ open MBrace.FsPickler open Aardvark.Base open FSharp.Data.Adaptive open Aardvark.Rendering -open Aardvark.UI - open Aardvark.UI open Aardvark.UI.Primitives open PRo3D.Base diff --git a/src/PRo3D.Base/Annotation/AnnotationHelpers.fs b/src/PRo3D.Base/Annotation/AnnotationHelpers.fs index 0607bfa7..0ab5abc2 100644 --- a/src/PRo3D.Base/Annotation/AnnotationHelpers.fs +++ b/src/PRo3D.Base/Annotation/AnnotationHelpers.fs @@ -3,6 +3,7 @@ namespace PRo3D.Base.Annotation open System open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open OpcViewer.Base open PRo3D.Base diff --git a/src/PRo3D.Base/ChironExt.fs b/src/PRo3D.Base/ChironExt.fs index 0d0ed097..56f51dbd 100644 --- a/src/PRo3D.Base/ChironExt.fs +++ b/src/PRo3D.Base/ChironExt.fs @@ -5,6 +5,7 @@ open Aardvark.Base open FSharp.Data.Adaptive open Aardvark.Rendering open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D open Chiron diff --git a/src/PRo3D.Base/Deprecated.fs b/src/PRo3D.Base/Deprecated.fs new file mode 100644 index 00000000..f8b28678 --- /dev/null +++ b/src/PRo3D.Base/Deprecated.fs @@ -0,0 +1,43 @@ +namespace Aardvark.UI + +open System +open Aardvark.Base + + + + +namespace Aardvark.UI.Primitives + +open Aardvark.Base +open FSharp.Data.Adaptive +open Aardvark.UI + +module ColorPicker = + + type Action = SetColor of C4b + + let pickerStyle = { ColorPicker.PickerStyle.Default with showButtons = true } + + let viewAdvanced (defaultPalette : ColorPicker.Palette) (paletteFile : string) (localStorageKey : string) (darkTheme : bool) (model : AdaptiveColorInput) = + ColorPicker.view + { ColorPicker.Config.Default with + localStorageKey = Some localStorageKey; + palette = Some defaultPalette; + darkTheme = darkTheme; + pickerStyle = Some pickerStyle + } SetColor model.c + + let view (model : AdaptiveColorInput) = + ColorPicker.view { ColorPicker.Config.Default with darkTheme = true; pickerStyle = Some pickerStyle } SetColor model.c + + let update m (SetColor c) = + { m with c = c } + + let defaultPalette = ColorPicker.Palette.Default + + +namespace PRo3D.Core + +module Config = + + let colorPaletteStore = "" \ No newline at end of file diff --git a/src/PRo3D.Base/DeprecatedModel.fs b/src/PRo3D.Base/DeprecatedModel.fs new file mode 100644 index 00000000..ba72cff0 --- /dev/null +++ b/src/PRo3D.Base/DeprecatedModel.fs @@ -0,0 +1,8 @@ +namespace Aardvark.UI + +open System +open Aardvark.Base +open Adaptify + +[] +type ColorInput = { c : C4b } \ No newline at end of file diff --git a/src/PRo3D.Base/FalseColors/FalseColorLegendApp.fs b/src/PRo3D.Base/FalseColors/FalseColorLegendApp.fs index 7ee554f0..96cce081 100644 --- a/src/PRo3D.Base/FalseColors/FalseColorLegendApp.fs +++ b/src/PRo3D.Base/FalseColors/FalseColorLegendApp.fs @@ -50,15 +50,15 @@ module FalseColorLegendApp = //let myCss = { kind = Stylesheet; name = "semui-overrides"; url = "semui-overrides.css" } module UI = - let viewScalarMappingProperties (colorPaletteStore : string) (model:AdaptiveFalseColorsModel) = + let viewScalarMappingProperties (paletteFile : string) (model:AdaptiveFalseColorsModel) = require GuiEx.semui ( Html.table [ Html.row "show legend:" [GuiEx.iconCheckBox model.useFalseColors UseFalseColors ] Html.row "max:" [Numeric.view' [InputBox] model.upperBound |> UI.map SetUpperBound ] Html.row "min:" [Numeric.view' [InputBox] model.lowerBound |> UI.map SetLowerBound ] Html.row "interval:" [Numeric.view' [InputBox] model.interval |> UI.map SetInterval ] - Html.row "upper color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette colorPaletteStore "pro3d" model.upperColor |> UI.map SetUpperColor ] - Html.row "lower color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette colorPaletteStore "pro3d" model.lowerColor |> UI.map SetLowerColor ] + Html.row "upper color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" true model.upperColor |> UI.map SetUpperColor ] + Html.row "lower color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" true model.lowerColor |> UI.map SetLowerColor ] Html.row "invert mapping:" [GuiEx.iconCheckBox model.invertMapping InvertMapping ] ] ) diff --git a/src/PRo3D.Base/FalseColors/FalseColors-Model.fs b/src/PRo3D.Base/FalseColors/FalseColors-Model.fs index b8de7e4c..44e08b49 100644 --- a/src/PRo3D.Base/FalseColors/FalseColors-Model.fs +++ b/src/PRo3D.Base/FalseColors/FalseColors-Model.fs @@ -3,6 +3,7 @@ open System open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open Chiron open Adaptify diff --git a/src/PRo3D.Base/MissingHelpers.fs b/src/PRo3D.Base/MissingHelpers.fs index d25004b2..4fb056d2 100644 --- a/src/PRo3D.Base/MissingHelpers.fs +++ b/src/PRo3D.Base/MissingHelpers.fs @@ -1,6 +1,6 @@ namespace FSharp.Data.Adaptive - +open Aardvark.FontProvider open FSharp.Data.Adaptive open Adaptify.FSharp.Core @@ -108,8 +108,10 @@ namespace Aardvark.Rendering.Text module Font = + type HackRegular = Aardvark.FontProvider.FontSquirrelProvider + let create name style = - FontSquirrel.Hack.Regular + HackRegular.Font namespace Aardvark.Base diff --git a/src/PRo3D.Base/PRo3D.Base.fsproj b/src/PRo3D.Base/PRo3D.Base.fsproj index d3530cf8..2efac28b 100644 --- a/src/PRo3D.Base/PRo3D.Base.fsproj +++ b/src/PRo3D.Base/PRo3D.Base.fsproj @@ -4,6 +4,7 @@ Library net6.0 True + True F:\pro3d\PRo3D\src\PRo3D.Base @@ -17,6 +18,8 @@ + + diff --git a/src/PRo3D.Base/Utilities.fs b/src/PRo3D.Base/Utilities.fs index a78de1a7..f9311889 100644 --- a/src/PRo3D.Base/Utilities.fs +++ b/src/PRo3D.Base/Utilities.fs @@ -10,11 +10,13 @@ open Aardvark.SceneGraph open Aardvark.SceneGraph.SgPrimitives open Aardvark.SceneGraph.``Sg Picking Extensions`` open Aardvark.UI +open Aardvark.UI.Primitives open Aardvark.Rendering.Text open OpcViewer.Base open OpcViewer.Base.Shader open FShade open System.IO +open Aardvark.Base.Fonts type Self = Self @@ -1173,6 +1175,8 @@ module Sg = let stableTrafoShader = Effect.compose [toEffect Shader.StableTrafo.stableTrafo] + let consolasFont = Font.create "Consolas" FontStyle.Regular + let text (view : aval) (near : aval) @@ -1190,7 +1194,7 @@ module Sg = return screenAlignedTrafo v.Forward v.Up modelt } color |> AVal.map( fun c -> - Sg.text (Font.create "Consolas" FontStyle.Regular) c text + Sg.text consolasFont c text |> Sg.noEvents |> Sg.effect [stableTrafoShader] |> Sg.trafo (invariantScaleTrafo view near pos size hfov) // fixed pixel size scaling @@ -1204,7 +1208,7 @@ module Sg = { TextConfig.Default with renderStyle = RenderStyle.Billboard - font = Font.create "Consolas" FontStyle.Regular + font = consolasFont color = C4b.White align = TextAlignment.Center } @@ -1223,7 +1227,7 @@ module Sg = return screenAlignedTrafo v.Forward v.Up modelt } - Sg.text (Font.create "Consolas" FontStyle.Regular) C4b.White text + Sg.text consolasFont C4b.White text |> Sg.noEvents |> Sg.effect [stableTrafoShader] |> Sg.trafo (0.1 |> Trafo3d.Scale |> AVal.constant ) diff --git a/src/PRo3D.Base/paket.references b/src/PRo3D.Base/paket.references index 4ee97fd3..1483eee5 100644 --- a/src/PRo3D.Base/paket.references +++ b/src/PRo3D.Base/paket.references @@ -4,7 +4,7 @@ Aardvark.Base.FSharp Aardvark.Rendering Aardvark.SceneGraph -Aardvark.SceneGraph.Opc +Aardvark.Data.Opc Aardvark.Rendering.Text Adaptify.Core diff --git a/src/PRo3D.Core/AardvarkUIReworks.fs b/src/PRo3D.Core/AardvarkUIReworks.fs index 496d6072..1ad7f76d 100644 --- a/src/PRo3D.Core/AardvarkUIReworks.fs +++ b/src/PRo3D.Core/AardvarkUIReworks.fs @@ -5,6 +5,7 @@ module NoSemUi = open System open Aardvark.Base open Aardvark.UI + open Aardvark.UI.Primitives open FSharp.Data.Adaptive open Aardvark.UI.Generic open Aardvark.UI.Primitives.SimplePrimitives @@ -93,6 +94,6 @@ module NoSemUi = ]) } ) - ) + ) ) \ No newline at end of file diff --git a/src/PRo3D.Core/Bookmark-Model.fs b/src/PRo3D.Core/Bookmark-Model.fs index 7c53974d..96db0e83 100644 --- a/src/PRo3D.Core/Bookmark-Model.fs +++ b/src/PRo3D.Core/Bookmark-Model.fs @@ -3,10 +3,7 @@ namespace PRo3D.Core open System open Aardvark.Base open Aardvark.Rendering -open Aardvark.UI -open FSharp.Data.Adaptive open Adaptify -open Aardvark.UI.Primitives open PRo3D open PRo3D.Base diff --git a/src/PRo3D.Core/Config.fs b/src/PRo3D.Core/Config.fs index 61698f6f..a8c9ba08 100644 --- a/src/PRo3D.Core/Config.fs +++ b/src/PRo3D.Core/Config.fs @@ -6,6 +6,5 @@ module Config = let sampleCount = 100 let mutable configPath = "." - let mutable colorPaletteStore = ".\palettes.js" let mutable besideExecuteable = "." \ No newline at end of file diff --git a/src/PRo3D.Core/Drawing/Drawing-App.fs b/src/PRo3D.Core/Drawing/Drawing-App.fs index 9e961527..ae3ce256 100644 --- a/src/PRo3D.Core/Drawing/Drawing-App.fs +++ b/src/PRo3D.Core/Drawing/Drawing-App.fs @@ -14,6 +14,7 @@ open System.Collections.Concurrent open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators @@ -22,13 +23,12 @@ open FSharp.Data.Adaptive.Operators open Aardvark.Rendering open Aardvark.Application open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Rendering.Text -open Aardvark.VRVis -open Aardvark.VRVis.Opc open Aardvark.UI -open Aardvark.UI.Primitives + +open Aardvark.UI open PRo3D diff --git a/src/PRo3D.Core/Drawing/Drawing-Model.fs b/src/PRo3D.Core/Drawing/Drawing-Model.fs index f9b496a6..66148823 100644 --- a/src/PRo3D.Core/Drawing/Drawing-Model.fs +++ b/src/PRo3D.Core/Drawing/Drawing-Model.fs @@ -8,7 +8,7 @@ open Aardvark.UI open Aardvark.UI.Primitives open Aardvark.Application open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open PRo3D open PRo3D.Base diff --git a/src/PRo3D.Core/Drawing/Drawing-Properties.fs b/src/PRo3D.Core/Drawing/Drawing-Properties.fs index 6c624269..1eccbe98 100644 --- a/src/PRo3D.Core/Drawing/Drawing-Properties.fs +++ b/src/PRo3D.Core/Drawing/Drawing-Properties.fs @@ -6,7 +6,7 @@ open FSharp.Data.Adaptive open Aardvark.Base open Aardvark.UI -open Aardvark.UI.Static.Svg +open Aardvark.UI.Primitives open PRo3D.Base open PRo3D.Base.Annotation @@ -82,7 +82,7 @@ module AnnotationProperties = Html.row "Projection:" [Incremental.text (model.projection |> AVal.map (fun x -> sprintf "%A" x ))] Html.row "Semantic:" [Html.SemUi.dropDown model.semantic SetSemantic] Html.row "Thickness:" [Numeric.view' [InputBox] model.thickness |> UI.map ChangeThickness ] - Html.row "Color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" model.color |> UI.map ChangeColor ] + Html.row "Color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" true model.color |> UI.map ChangeColor ] Html.row "Text:" [Html.SemUi.textBox model.text SetText ] Html.row "TextSize:" [Numeric.view' [InputBox] model.textsize |> UI.map SetTextSize ] Html.row "Show Text:" [GuiEx.iconCheckBox model.showText ToggleShowText ] diff --git a/src/PRo3D.Core/Drawing/Drawing.Sg.fs b/src/PRo3D.Core/Drawing/Drawing.Sg.fs index 1eeea82c..de2763fc 100644 --- a/src/PRo3D.Core/Drawing/Drawing.Sg.fs +++ b/src/PRo3D.Core/Drawing/Drawing.Sg.fs @@ -6,16 +6,18 @@ open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators open Aardvark.Rendering open Aardvark.Application open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Rendering.Text open Aardvark.UI -open Aardvark.UI.Primitives + +open Aardvark.UI open OpcViewer.Base @@ -222,7 +224,7 @@ module Sg = let reallyHit = // TODO hs/to real horrorshow here! lines - |> Array.forany (fun e -> + |> Array.exists (fun e -> let m = modelTrafo * sceneHit.event.evtView * sceneHit.event.evtProj let r = sceneHit.localRay.Ray.Ray let a = Line3d(r.Origin, r.Origin + r.Direction * 10000.0) diff --git a/src/PRo3D.Core/Drawing/Drawing.UI.fs b/src/PRo3D.Core/Drawing/Drawing.UI.fs index 37b37e7e..bf7fb1ba 100644 --- a/src/PRo3D.Core/Drawing/Drawing.UI.fs +++ b/src/PRo3D.Core/Drawing/Drawing.UI.fs @@ -9,7 +9,6 @@ open Aardvark.Application open Aardvark.UI open Aardvark.UI.Primitives -open PRo3D open PRo3D.Base open PRo3D.Base.Annotation open PRo3D.Core @@ -22,7 +21,7 @@ module UI = Html.Layout.boxH [ i [clazz "large Write icon"] [] ] Html.Layout.boxH [ Html.SemUi.dropDown model.geometry SetGeometry ] Html.Layout.boxH [ Html.SemUi.dropDown model.projection SetProjection ] - Html.Layout.boxH [ ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" model.color |> UI.map ChangeColor; div [] [] ] + Html.Layout.boxH [ ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" false model.color |> UI.map ChangeColor; div [] [] ] Html.Layout.boxH [ Numeric.view' [InputBox] model.thickness |> UI.map ChangeThickness ] Html.Layout.boxH [ i [clazz "large crosshairs icon"] [] ] Html.Layout.boxH [ Numeric.view' [InputBox] model.samplingAmount |> UI.map ChangeSamplingAmount ] diff --git a/src/PRo3D.Core/Drawing/DrawingUtilities.fs b/src/PRo3D.Core/Drawing/DrawingUtilities.fs index f633c75d..c5e52694 100644 --- a/src/PRo3D.Core/Drawing/DrawingUtilities.fs +++ b/src/PRo3D.Core/Drawing/DrawingUtilities.fs @@ -6,7 +6,7 @@ open FSharp.Data.Adaptive open Aardvark.Base open Aardvark.Application open Aardvark.UI - +open Aardvark.UI.Primitives open PRo3D open PRo3D.Base open PRo3D.Base.Annotation @@ -19,13 +19,8 @@ module DrawingUtilities = let semantics = ["unit boundary"; "bed set boundary"; "x beds"] |> List.map(fun x -> x.ToLower()) - open Aardvark.Application - open Aardvark.UI - open System open System.IO - open PRo3D - type private Self = Self //(semanticsModel : CorrelationDrawing.SemanticTypes.SemanticsModel) diff --git a/src/PRo3D.Core/Drawing/PackedRendering.fs b/src/PRo3D.Core/Drawing/PackedRendering.fs index 5c1e6eb5..095b615b 100644 --- a/src/PRo3D.Core/Drawing/PackedRendering.fs +++ b/src/PRo3D.Core/Drawing/PackedRendering.fs @@ -4,11 +4,13 @@ open Aardvark.Base open Aardvark.Rendering open Aardvark.Application -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Application.Slim open Aardvark.GeoSpatial.Opc open Aardvark.UI +open Aardvark.UI.Primitives + open Aardvark.SceneGraph open FSharp.Data.Adaptive open MBrace.FsPickler diff --git a/src/PRo3D.Core/GeologicSurface-Model.fs b/src/PRo3D.Core/GeologicSurface-Model.fs index 21174387..e83263a8 100644 --- a/src/PRo3D.Core/GeologicSurface-Model.fs +++ b/src/PRo3D.Core/GeologicSurface-Model.fs @@ -6,6 +6,7 @@ open Adaptify open Aardvark.Base open Aardvark.Rendering open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D open PRo3D.Base diff --git a/src/PRo3D.Core/GeologicSurfaceApp.fs b/src/PRo3D.Core/GeologicSurfaceApp.fs index e59063a2..e40a6984 100644 --- a/src/PRo3D.Core/GeologicSurfaceApp.fs +++ b/src/PRo3D.Core/GeologicSurfaceApp.fs @@ -5,11 +5,13 @@ open Aardvark.Base open Aardvark.Application open Aardvark.SceneGraph open Aardvark.UI + +open Aardvark.UI.Primitives open Aardvark.Rendering open Aardvark.VRVis open FSharp.Data.Adaptive open Adaptify.FSharp.Core -open Aardvark.SceneGraph.IO +open Aardvark.SceneGraph.Assimp open Aardvark.SceneGraph.SgPrimitives //open Aardvark.Base.Rendering open Aardvark.UI.Trafos diff --git a/src/PRo3D.Core/Groups-Model.fs b/src/PRo3D.Core/Groups-Model.fs index 695a234a..7834d3b1 100644 --- a/src/PRo3D.Core/Groups-Model.fs +++ b/src/PRo3D.Core/Groups-Model.fs @@ -7,7 +7,7 @@ open Adaptify open Aardvark.VRVis open Aardvark.Geometry -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open PRo3D open PRo3D.Base diff --git a/src/PRo3D.Core/GroupsApp.fs b/src/PRo3D.Core/GroupsApp.fs index 8df048d2..671438ee 100644 --- a/src/PRo3D.Core/GroupsApp.fs +++ b/src/PRo3D.Core/GroupsApp.fs @@ -6,10 +6,9 @@ open Aardvark.Base open Aardvark.Application open Aardvark.Geometry open Aardvark.UI -open Aardvark.UI.Trafos +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open Aardvark.SceneGraph -open Aardvark.VRVis.Opc open PRo3D.Base open PRo3D diff --git a/src/PRo3D.Core/Importers/AnnotationGroupsImporter.fs b/src/PRo3D.Core/Importers/AnnotationGroupsImporter.fs index 21a1694c..ae9836c3 100644 --- a/src/PRo3D.Core/Importers/AnnotationGroupsImporter.fs +++ b/src/PRo3D.Core/Importers/AnnotationGroupsImporter.fs @@ -6,6 +6,7 @@ open System.Xml open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base open PRo3D.Base.Annotation diff --git a/src/PRo3D.Core/Importers/MeasurementsImporter.fs b/src/PRo3D.Core/Importers/MeasurementsImporter.fs index 813a3046..e6789f9f 100644 --- a/src/PRo3D.Core/Importers/MeasurementsImporter.fs +++ b/src/PRo3D.Core/Importers/MeasurementsImporter.fs @@ -7,6 +7,7 @@ open System.Xml open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base.Annotation open FSharp.Data.Adaptive diff --git a/src/PRo3D.Core/Importers/SurfaceTrafoImporter.fs b/src/PRo3D.Core/Importers/SurfaceTrafoImporter.fs index 91bc6d1d..e49e881c 100644 --- a/src/PRo3D.Core/Importers/SurfaceTrafoImporter.fs +++ b/src/PRo3D.Core/Importers/SurfaceTrafoImporter.fs @@ -18,6 +18,7 @@ module SurfaceTrafoImporter = open Aardvark.Base open Aardvark.UI + let xname s = XName.Get(s) let getTrafo (t:XElement) = diff --git a/src/PRo3D.Core/OrientationCube.fs b/src/PRo3D.Core/OrientationCube.fs index a34d5f66..14ffb947 100644 --- a/src/PRo3D.Core/OrientationCube.fs +++ b/src/PRo3D.Core/OrientationCube.fs @@ -1,12 +1,10 @@ namespace PRo3D.OrientationCube + open FSharp.Data.Adaptive open Aardvark.Base open Aardvark.Rendering -open Aardvark.Rendering -open Aardvark.SceneGraph open Aardvark.UI -open Aardvark.UI.Trafos open Aardvark.UI.Primitives open PRo3D @@ -64,7 +62,7 @@ module Sg = let loadCubeModel (filename : string) = if System.IO.File.Exists filename then - Aardvark.SceneGraph.IO.Loader.Assimp.load filename + Aardvark.SceneGraph.Assimp.Loader.Assimp.load filename |> Sg.adapter |> Sg.noEvents else diff --git a/src/PRo3D.Core/PRo3D.Core.fsproj b/src/PRo3D.Core/PRo3D.Core.fsproj index db141169..1d95b210 100644 --- a/src/PRo3D.Core/PRo3D.Core.fsproj +++ b/src/PRo3D.Core/PRo3D.Core.fsproj @@ -29,7 +29,6 @@ - diff --git a/src/PRo3D.Core/Queries/AnnotationQuery.fs b/src/PRo3D.Core/Queries/AnnotationQuery.fs index 4c9c5d4a..f54cefd0 100644 --- a/src/PRo3D.Core/Queries/AnnotationQuery.fs +++ b/src/PRo3D.Core/Queries/AnnotationQuery.fs @@ -4,7 +4,7 @@ open System open System.IO open Aardvark.Base open Aardvark.Rendering -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.GeoSpatial.Opc open Aardvark.SceneGraph @@ -14,19 +14,20 @@ open PRo3D.Base.Annotation open System.Collections.Generic open Aardvark.Geometry +open Aardvark.Data.Opc.Aara module QTree = - open Aardvark.SceneGraph.Opc + open Aardvark.Data.Opc let rec foldCulled (consider : Box3d -> bool) (f : Patch -> 's -> 's) (seed : 's) (tree : QTree) = match tree with - | Node(p, children) -> + | QTree.Node(p, children) -> if consider p.info.GlobalBoundingBox then Seq.fold (foldCulled consider f) seed children else seed - | Leaf(p) -> + | QTree.Leaf(p) -> if consider p.info.GlobalBoundingBox then f p seed else diff --git a/src/PRo3D.Core/ReferenceSystem-Model.fs b/src/PRo3D.Core/ReferenceSystem-Model.fs index 585437ef..048d4242 100644 --- a/src/PRo3D.Core/ReferenceSystem-Model.fs +++ b/src/PRo3D.Core/ReferenceSystem-Model.fs @@ -4,6 +4,7 @@ open FSharp.Data.Adaptive open Adaptify open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D open PRo3D.Base open Chiron @@ -17,8 +18,8 @@ open Aether.Operators type ReferenceSystem = { version : int origin : V3d - north : V3dInput - noffset : NumericInput + north : Aardvark.UI.Primitives.V3dInput + noffset : Aardvark.UI.Primitives.NumericInput northO : V3d up : V3dInput isVisible : bool diff --git a/src/PRo3D.Core/ReferenceSystem.fs b/src/PRo3D.Core/ReferenceSystem.fs index ed33a992..104cb3d5 100644 --- a/src/PRo3D.Core/ReferenceSystem.fs +++ b/src/PRo3D.Core/ReferenceSystem.fs @@ -9,6 +9,7 @@ open Aardvark.Rendering open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base open PRo3D.Base.Annotation diff --git a/src/PRo3D.Core/ScaleBars-Model.fs b/src/PRo3D.Core/ScaleBars-Model.fs index 05dcc68c..27e05cb6 100644 --- a/src/PRo3D.Core/ScaleBars-Model.fs +++ b/src/PRo3D.Core/ScaleBars-Model.fs @@ -6,6 +6,7 @@ open Adaptify open Aardvark.Base open Aardvark.Rendering open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D open PRo3D.Base open PRo3D.Core.Surface diff --git a/src/PRo3D.Core/ScaleBarsApp.fs b/src/PRo3D.Core/ScaleBarsApp.fs index 72961d87..5bed0fbc 100644 --- a/src/PRo3D.Core/ScaleBarsApp.fs +++ b/src/PRo3D.Core/ScaleBarsApp.fs @@ -1,21 +1,13 @@ namespace PRo3D.Core +open System open Aardvark.Base -open Aardvark.Application open Aardvark.UI -open Aardvark.VRVis open FSharp.Data.Adaptive -open FSharp.Data.Adaptive.Operators -open Adaptify.FSharp.Core -open Aardvark.SceneGraph.IO open Aardvark.SceneGraph.SgPrimitives open Aardvark.Rendering -open Aardvark.UI.Trafos open PRo3D.Core.Surface -open System -open System.IO -open System.Diagnostics open Aardvark.UI.Primitives diff --git a/src/PRo3D.Core/SceneObjects-Model.fs b/src/PRo3D.Core/SceneObjects-Model.fs index f3a1a40e..01a8ccfb 100644 --- a/src/PRo3D.Core/SceneObjects-Model.fs +++ b/src/PRo3D.Core/SceneObjects-Model.fs @@ -5,6 +5,7 @@ open FSharp.Data.Adaptive open Adaptify open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D open PRo3D.Base open PRo3D.Core.Surface diff --git a/src/PRo3D.Core/SceneObjectsApp.fs b/src/PRo3D.Core/SceneObjectsApp.fs index 06ef2a52..037a97e0 100644 --- a/src/PRo3D.Core/SceneObjectsApp.fs +++ b/src/PRo3D.Core/SceneObjectsApp.fs @@ -1,22 +1,17 @@ namespace PRo3D.Core +open System +open System.IO + open Aardvark.Base -open Aardvark.Application open Aardvark.UI -open Aardvark.VRVis +open Aardvark.UI.Primitives open FSharp.Data.Adaptive -open Adaptify.FSharp.Core -open Aardvark.SceneGraph.IO -open Aardvark.SceneGraph.SgPrimitives +open Aardvark.SceneGraph.Assimp open Aardvark.Rendering open Aardvark.UI.Trafos open PRo3D.Core.Surface -open System -open System.IO -open System.Diagnostics - -open Aardvark.UI.Primitives open PRo3D.Base open PRo3D.Base.Gis diff --git a/src/PRo3D.Core/SequencedBookmarks/BookmarkAnimations.fs b/src/PRo3D.Core/SequencedBookmarks/BookmarkAnimations.fs index e868f4ea..342826d2 100644 --- a/src/PRo3D.Core/SequencedBookmarks/BookmarkAnimations.fs +++ b/src/PRo3D.Core/SequencedBookmarks/BookmarkAnimations.fs @@ -4,13 +4,14 @@ open System open Aardvark.Base open Aardvark.UI open Aardvark.UI.Primitives + open FSharp.Data.Adaptive open Aardvark.Rendering -open Aardvark.UI.Anewmation -open Aardvark.UI.Anewmation.AnimationSplinePrimitives.Animation -open Aardvark.UI.Anewmation.AnimationPrimitives.Animation -open Aardvark.UI.Anewmation.AnimationCameraPrimitives.Animation +open Aardvark.UI.Animation +open Aardvark.UI.Animation.AnimationSplinePrimitives.Animation +open Aardvark.UI.Animation.AnimationPrimitives.Animation +open Aardvark.UI.Animation.AnimationCameraPrimitives.Animation open PRo3D.Base open PRo3D.Core.SequencedBookmarks diff --git a/src/PRo3D.Core/SequencedBookmarks/BookmarkUtils.fs b/src/PRo3D.Core/SequencedBookmarks/BookmarkUtils.fs index bc248856..22444ecb 100644 --- a/src/PRo3D.Core/SequencedBookmarks/BookmarkUtils.fs +++ b/src/PRo3D.Core/SequencedBookmarks/BookmarkUtils.fs @@ -3,20 +3,21 @@ open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open Aardvark.UI.Animation open Aardvark.UI.Primitives open FSharp.Data.Adaptive open Aardvark.Rendering -open Aardvark.UI.Anewmation +open Aardvark.UI.Animation open System open System.IO open System.Runtime.InteropServices open PRo3D.Base -open PRo3D.Core.SequencedBookmarks open Chiron -open Aardvark.UI.Anewmation +open Aardvark.UI.Animation +open PRo3D.Core.SequencedBookmarks open Aether open Aether.Operators diff --git a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmark.fs b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmark.fs index 36013f55..74a4a3de 100644 --- a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmark.fs +++ b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmark.fs @@ -2,6 +2,8 @@ open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives + open System open System.IO open PRo3D.Core.SequencedBookmarks diff --git a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarks-Model.fs b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarks-Model.fs index fd469136..9f9d0bff 100644 --- a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarks-Model.fs +++ b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarks-Model.fs @@ -4,6 +4,7 @@ open System open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open Adaptify open PRo3D.Base diff --git a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarksApp.fs b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarksApp.fs index 1d1951f7..1675a819 100644 --- a/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarksApp.fs +++ b/src/PRo3D.Core/SequencedBookmarks/SequencedBookmarksApp.fs @@ -3,12 +3,11 @@ namespace PRo3D.Core open Aardvark.Base open Aardvark.Application open Aardvark.UI -open Aardvark.UI.Animation open Aardvark.UI.Primitives +open Aardvark.UI.Animation open FSharp.Data.Adaptive open Adaptify.FSharp.Core open Aardvark.Rendering -open Aardvark.UI.Anewmation open System open System.IO diff --git a/src/PRo3D.Core/Sg.fs b/src/PRo3D.Core/Sg.fs index df73dcac..d44f1c01 100644 --- a/src/PRo3D.Core/Sg.fs +++ b/src/PRo3D.Core/Sg.fs @@ -8,6 +8,7 @@ open Aardvark.Rendering open Aardvark.SceneGraph open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base module Sg = diff --git a/src/PRo3D.Core/Surface-Model.fs b/src/PRo3D.Core/Surface-Model.fs index 819ed61f..050b7b45 100644 --- a/src/PRo3D.Core/Surface-Model.fs +++ b/src/PRo3D.Core/Surface-Model.fs @@ -5,13 +5,10 @@ open Aardvark.Base open FSharp.Data.Adaptive open Aardvark.Rendering open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc -open Aardvark.SceneGraph.IO.Loader +open Aardvark.Data.Opc open Aardvark.UI open Aardvark.UI.Primitives open Aardvark.UI.Trafos -open Aardvark.VRVis -open Aardvark.VRVis.Opc open Chiron @@ -19,6 +16,7 @@ open PRo3D.Base open PRo3D.Core open Adaptify +open OpcViewer.Base #nowarn "0686" diff --git a/src/PRo3D.Core/Surface.fs b/src/PRo3D.Core/Surface.fs index b5e0dfbe..6e94fcd7 100644 --- a/src/PRo3D.Core/Surface.fs +++ b/src/PRo3D.Core/Surface.fs @@ -2,15 +2,11 @@ open System open Aardvark.Base -open Aardvark.VRVis.Opc.KdTrees -open MBrace.FsPickler open Aardvark.Geometry open OpcViewer.Base open FSharp.Data.Adaptive open OpcViewer.Base.Picking -open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open PRo3D.Base open PRo3D.Core @@ -18,6 +14,7 @@ open PRo3D.Base.Gis open PRo3D.Extensions open PRo3D.Core.Surface open PRo3DCompability +open OpcViewer.Base.KdTrees module SurfaceTransformations = //let computeSolRotation (sol : Sol) (referenceSystem : ReferenceSystem) : Trafo3d = @@ -128,9 +125,9 @@ module DebugKdTreesX = let loadObjectSet (cache : HashMap) (lvl0Tree : Level0KdTree) = match lvl0Tree with - | InCoreKdTree kd -> + | Aardvark.VRVis.Opc.KdTrees.InCoreKdTree kd -> kd.kdTree, cache - | LazyKdTree kd -> + | Aardvark.VRVis.Opc.KdTrees.LazyKdTree kd -> let kdTree, cache = match kd.kdTree with | Some k -> k, cache diff --git a/src/PRo3D.Core/Surface/Surface-Properties.fs b/src/PRo3D.Core/Surface/Surface-Properties.fs index 393d40da..d2e4c09e 100644 --- a/src/PRo3D.Core/Surface/Surface-Properties.fs +++ b/src/PRo3D.Core/Surface/Surface-Properties.fs @@ -8,7 +8,7 @@ open Aardvark.Rendering open Aardvark.UI open Aardvark.UI.Primitives open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.VRVis open PRo3D @@ -269,7 +269,7 @@ module ColorCorrectionProperties = Html.table [ Html.row "" [] Html.row "use color:" [GuiEx.iconCheckBox model.useColor UseColor ] - Html.row "color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" model.color |> UI.map SetColor ] + Html.row "color:" [ColorPicker.viewAdvanced ColorPicker.defaultPalette paletteFile "pro3d" true model.color |> UI.map SetColor ] Html.row "grayscale:" [GuiEx.iconCheckBox model.useGrayscale UseGrayScale ] Html.row "use brightness:" [GuiEx.iconCheckBox model.useBrightn UseBrightness ] Html.row "set brightness:" [Numeric.view' [NumericInputType.Slider; NumericInputType.InputBox] model.brightness |> UI.map SetBrightness ] diff --git a/src/PRo3D.Core/Surface/Surface.Files.fs b/src/PRo3D.Core/Surface/Surface.Files.fs index 4d6924b3..58d7a83d 100644 --- a/src/PRo3D.Core/Surface/Surface.Files.fs +++ b/src/PRo3D.Core/Surface/Surface.Files.fs @@ -5,13 +5,13 @@ open System.IO open Aardvark.Base open FSharp.Data.Adaptive open Aardvark.UI -open Aardvark.UI.Primitives + +open Aardvark.UI open Aardvark.Rendering open Aardvark.SceneGraph -open Aardvark.SceneGraph.IO -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open OpcViewer.Base open OpcViewer.Base.Picking @@ -28,7 +28,6 @@ open PRo3DCompability module Files = open System.IO - open Aardvark.Prinziple type DiscoverFolder = | OpcFolder of string @@ -227,7 +226,7 @@ module Files = match sceneRelativePath lk.kdtreePath, sceneRelativePath lk.objectSetPath with | Some kdTreeSub, Some triangleSub -> - KdTrees.LazyKdTree { + Aardvark.VRVis.Opc.KdTrees.LazyKdTree { lk with kdtreePath = Path.Combine(path, kdTreeSub) objectSetPath = Path.Combine(path, triangleSub) @@ -239,7 +238,7 @@ module Files = match surfaceRelativePath lk.kdtreePath, surfaceRelativePath lk.objectSetPath with | Some kdTreeSub, Some triangleSub -> - KdTrees.LazyKdTree { + Aardvark.VRVis.Opc.KdTrees.LazyKdTree { lk with kdtreePath = Path.Combine(surf.importPath, kdTreeSub) objectSetPath = Path.Combine(surf.importPath, triangleSub) @@ -249,7 +248,7 @@ module Files = None | KdTrees.Level0KdTree.InCoreKdTree ik -> - KdTrees.InCoreKdTree ik |> Some // kdtrees can be loaded as is + Aardvark.VRVis.Opc.KdTrees.InCoreKdTree ik |> Some // kdtrees can be loaded as is sgSurfaces |> HashMap.choose (fun _ s -> diff --git a/src/PRo3D.Core/Surface/Surface.Sg.fs b/src/PRo3D.Core/Surface/Surface.Sg.fs index 2825f6ca..d738b341 100644 --- a/src/PRo3D.Core/Surface/Surface.Sg.fs +++ b/src/PRo3D.Core/Surface/Surface.Sg.fs @@ -7,18 +7,18 @@ open Aardvark.Base.Ag open FSharp.Data.Adaptive open Aardvark.Rendering open Aardvark.SceneGraph -open Aardvark.SceneGraph.IO -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.SceneGraph.Semantics -open Aardvark.Prinziple open Aardvark.UI + open Aardvark.UI.Primitives +open Aardvark.UI open Aardvark.UI.Operators open Aardvark.UI.Trafos open Aardvark.GeoSpatial.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc //open OpcViewer.Base open PRo3D @@ -26,7 +26,8 @@ open PRo3D.Base open PRo3D.Core open PRo3D.Core.Surface open Aardvark.GeoSpatial.Opc.PatchLod -open Aardvark.Base.Ag +open Aardvark.GeoSpatial.Opc.Load +open OpcViewer.Base @@ -161,7 +162,7 @@ module Sg = let patchHierarchies = scene.patchHierarchies - |> Seq.map Prinziple.registerIfZipped + |> Seq.map Prinziple.register |> Seq.map (fun x -> PatchHierarchy.load Serialization.binarySerializer.Pickle Serialization.binarySerializer.UnPickle (OpcPaths x) ) @@ -172,7 +173,7 @@ module Sg = for h in patchHierarchies do if createKdTrees then Log.startTimed "[KdTrees] Loading kdtrees: %s" h.opcPaths.Patches_DirAbsPath - let m = Aardvark.VRVis.Opc.KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false false DebugKdTreesX.loadTriangles' true + let m = KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false false DebugKdTreesX.loadTriangles' true Log.stop() if HashMap.isEmpty m then Log.warn "[KdTrees], KdTree map for %s is empty." h.opcPaths.Patches_DirAbsPath @@ -247,7 +248,7 @@ module Sg = PatchNode(signature, runner, h.opcPaths.Opc_DirAbsPath, lodDeciderMars, scene.useCompressedTextures, true, ViewerModality.XYZ, PatchLod.CoordinatesMapping.Local, useAsyncLoading, context, map, PatchLod.toRoseTree h.tree, - Some (getTextures h.opcPaths), Some (getVertexAttributes h.opcPaths), Aardvark.Base.PixImagePfim.Loader) + Some (getTextures h.opcPaths), Some (getVertexAttributes h.opcPaths), Aardvark.Data.PixImagePfim.Loader) //let plainPatchLod = // Sg.patchLod' @@ -293,7 +294,7 @@ module Sg = |> Seq.map (fun p -> assertInvalidBB p.info.GlobalBoundingBox) |> Box3d - let createSgSurface (scene : OpcScene) (s : Surface) sg (bb : Box3d) (kd : HashMap) = + let createSgSurface (scene : OpcScene) (s : Surface) sg (bb : Box3d) (kd : HashMap) = let pose = Pose.translate V3d.Zero // bb.Center let trafo = { TrafoController.initial with pose = pose; previewTrafo = Pose.toTrafo pose; mode = TrafoMode.Local } diff --git a/src/PRo3D.Core/Surface/SurfaceApp.fs b/src/PRo3D.Core/Surface/SurfaceApp.fs index d8c309d7..f45919f3 100644 --- a/src/PRo3D.Core/Surface/SurfaceApp.fs +++ b/src/PRo3D.Core/Surface/SurfaceApp.fs @@ -10,10 +10,10 @@ open Aardvark.UI open Aardvark.UI.Primitives open Aardvark.Rendering open Aardvark.SceneGraph -open Aardvark.SceneGraph.IO -open Aardvark.SceneGraph.Opc +open Aardvark.SceneGraph.Assimp +open Aardvark.Data.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open Aardvark.UI.Operators open Aardvark.UI.Trafos @@ -881,7 +881,7 @@ module SurfaceApp = Log.startTimed "[RebuildKdTrees] creating kdtrees" let cnt = hs |> Array.sumBy (fun h -> - let m = KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ Serialization.binarySerializer true true PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false false Aardvark.VRVis.Opc.KdTrees.KdTreeParameters.legacyDefault + let m = KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ Serialization.binarySerializer true true PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false false KdTrees.KdTreeParameters.legacyDefault HashMap.count m ) Log.stop() diff --git a/src/PRo3D.Core/Surface/SurfaceUtils.fs b/src/PRo3D.Core/Surface/SurfaceUtils.fs index 99e38511..d2b3ec7b 100644 --- a/src/PRo3D.Core/Surface/SurfaceUtils.fs +++ b/src/PRo3D.Core/Surface/SurfaceUtils.fs @@ -5,7 +5,8 @@ open Aardvark.Base open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators open Aardvark.UI -open Aardvark.UI.Primitives + +open Aardvark.UI open PRo3D open PRo3D.Base open PRo3D.Core diff --git a/src/PRo3D.Core/Surface/Translation.fs b/src/PRo3D.Core/Surface/Translation.fs index 4010a35b..507e90f7 100644 --- a/src/PRo3D.Core/Surface/Translation.fs +++ b/src/PRo3D.Core/Surface/Translation.fs @@ -3,6 +3,7 @@ namespace PRo3D.Core.Surface open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open System @@ -11,9 +12,9 @@ open Aardvark.Rendering open Aardvark.Rendering -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.SceneGraph.SgPrimitives -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open PRo3D.Base open PRo3D.Core diff --git a/src/PRo3D.Core/Transformation-Model.fs b/src/PRo3D.Core/Transformation-Model.fs index d0309b72..42d63d82 100644 --- a/src/PRo3D.Core/Transformation-Model.fs +++ b/src/PRo3D.Core/Transformation-Model.fs @@ -1,19 +1,8 @@ namespace PRo3D.Core.Surface -open System open Aardvark.Base -open FSharp.Data.Adaptive -open Aardvark.Rendering -open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc -open Aardvark.SceneGraph.IO.Loader -open Aardvark.UI open Aardvark.UI.Primitives -open Aardvark.UI.Trafos -open Aardvark.VRVis -open Aardvark.VRVis.Opc -open DevILSharp.ILU open Chiron open PRo3D.Base diff --git a/src/PRo3D.Core/TransformationApp.fs b/src/PRo3D.Core/TransformationApp.fs index 7ad63446..35de6fd3 100644 --- a/src/PRo3D.Core/TransformationApp.fs +++ b/src/PRo3D.Core/TransformationApp.fs @@ -3,6 +3,7 @@ namespace PRo3D.Core.Surface open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open System @@ -11,9 +12,9 @@ open Aardvark.Rendering open Aardvark.Rendering -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.SceneGraph.SgPrimitives -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open PRo3D.Base open PRo3D.Core diff --git a/src/PRo3D.Core/Traverse-Model.fs b/src/PRo3D.Core/Traverse-Model.fs index 42e4f656..136cdb3a 100644 --- a/src/PRo3D.Core/Traverse-Model.fs +++ b/src/PRo3D.Core/Traverse-Model.fs @@ -4,6 +4,7 @@ namespace PRo3D.Core open System open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open PRo3D.Base open PRo3D.Core diff --git a/src/PRo3D.Core/UI.fs b/src/PRo3D.Core/UI.fs index e652fdea..f07a59eb 100644 --- a/src/PRo3D.Core/UI.fs +++ b/src/PRo3D.Core/UI.fs @@ -4,7 +4,10 @@ open System module UI = open Aardvark.UI + + open Aardvark.UI.Primitives open FSharp.Data.Adaptive + let mutable enabletoolTips = false let toAlignmentString (alignment : DataPosition) = diff --git a/src/PRo3D.Core/Validator/HeightValidator-Model.fs b/src/PRo3D.Core/Validator/HeightValidator-Model.fs index 754eead6..6c0fd932 100644 --- a/src/PRo3D.Core/Validator/HeightValidator-Model.fs +++ b/src/PRo3D.Core/Validator/HeightValidator-Model.fs @@ -3,6 +3,7 @@ namespace PRo3D.Core open Aardvark.Base open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base open FSharp.Data.Adaptive diff --git a/src/PRo3D.Core/Validator/HeightValidatorApp.fs b/src/PRo3D.Core/Validator/HeightValidatorApp.fs index e7b0e7df..de3731a9 100644 --- a/src/PRo3D.Core/Validator/HeightValidatorApp.fs +++ b/src/PRo3D.Core/Validator/HeightValidatorApp.fs @@ -6,16 +6,18 @@ open Aardvark.Base open Aardvark.Application open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators open Aardvark.Rendering open Aardvark.Application open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Rendering.Text open Aardvark.UI -open Aardvark.UI.Primitives + +open Aardvark.UI open OpcViewer.Base diff --git a/src/PRo3D.Core/ViewConfigModel.fs b/src/PRo3D.Core/ViewConfigModel.fs index 04457b73..437571d7 100644 --- a/src/PRo3D.Core/ViewConfigModel.fs +++ b/src/PRo3D.Core/ViewConfigModel.fs @@ -4,6 +4,7 @@ open Aardvark.Base open FSharp.Data.Adaptive open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open Chiron open PRo3D.Base diff --git a/src/PRo3D.Core/VisualizationAndTFModel.fs b/src/PRo3D.Core/VisualizationAndTFModel.fs index 27231560..f8084f65 100644 --- a/src/PRo3D.Core/VisualizationAndTFModel.fs +++ b/src/PRo3D.Core/VisualizationAndTFModel.fs @@ -3,6 +3,7 @@ open Adaptify open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base open Chiron diff --git a/src/PRo3D.Core/glTF.fs b/src/PRo3D.Core/glTF.fs deleted file mode 100644 index 0ade70b4..00000000 --- a/src/PRo3D.Core/glTF.fs +++ /dev/null @@ -1,2 +0,0 @@ -module glTF - diff --git a/src/PRo3D.Core/paket.references b/src/PRo3D.Core/paket.references index ab376f6d..3210ef85 100644 --- a/src/PRo3D.Core/paket.references +++ b/src/PRo3D.Core/paket.references @@ -8,8 +8,8 @@ Aardvark.Application.Slim.GL Aardvark.Rendering.Text Aardvark.UI.Primitives Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.SceneGraph.Assimp +Aardvark.Data.Opc Adaptify.MSBuild Adaptify.Core diff --git a/src/PRo3D.CorrelationPanels/paket.references b/src/PRo3D.CorrelationPanels/paket.references index f50c34eb..cbf8ea80 100644 --- a/src/PRo3D.CorrelationPanels/paket.references +++ b/src/PRo3D.CorrelationPanels/paket.references @@ -1,30 +1,30 @@ -nuget FSharp.Core - -nuget Aardvark.Base -nuget Aardvark.Base.Incremental -nuget Aardvark.Base.FSharp -nuget Aardvark.Base.Essentials -nuget Aardvark.Service -nuget Aardvark.UI -nuget Aardvark.UI.Primitives - -nuget Aardvark.Rendering -nuget Aardvark.SceneGraph -nuget Aardvark.SceneGraph.IO -nuget Aardvark.Rendering.Text -nuget Aardvark.Rendering.Vulkan -nuget Aardvark.GPGPU +FSharp.Core + +Aardvark.Base +Aardvark.Base.Incremental +Aardvark.Base.FSharp +Aardvark.Base.Essentials +Aardvark.Service +Aardvark.UI +Aardvark.UI.Primitives + +Aardvark.Rendering +Aardvark.SceneGraph +Aardvark.SceneGraph.Assimp +Aardvark.Rendering.Text +Aardvark.Rendering.Vulkan +Aardvark.GPGPU Adaptify.MSBuild Adaptify.Core -nuget FsPickler -nuget FsPickler.Json +FsPickler +FsPickler.Json -nuget Suave +Suave -nuget Aardium +Aardium -nuget Aardvark.SceneGraph.Opc -nuget Aardvark.Application.Slim +Aardvark.Data.Opc +Aardvark.Application.Slim diff --git a/src/PRo3D.Lite/API.fs b/src/PRo3D.Lite/API.fs index ae5e4f18..97e73ffa 100644 --- a/src/PRo3D.Lite/API.fs +++ b/src/PRo3D.Lite/API.fs @@ -5,7 +5,7 @@ open MBrace.FsPickler open FSharp.Data.Adaptive open Aardvark.Base -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Rendering open Adaptify.FSharp diff --git a/src/PRo3D.Lite/App.fs b/src/PRo3D.Lite/App.fs index 33c38be7..e13f4a2b 100644 --- a/src/PRo3D.Lite/App.fs +++ b/src/PRo3D.Lite/App.fs @@ -12,7 +12,7 @@ open Aardvark.Rendering open Aardvark.SceneGraph open Aardvark.GeoSpatial.Opc -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.UI open Aardvark.UI.Primitives @@ -20,6 +20,7 @@ open Aardvark.UI.Primitives open PRo3D.Lite open Aardvark.Rendering open PRo3D.Base +open Aardvark.GeoSpatial.Opc.Load module App = @@ -193,9 +194,9 @@ module App = return r * V4d.IIII + v.c * (1.0 - r) } - let viewScene (runner : Load.Runner) (emit : Message -> unit) (model : AdaptiveModel) = + let viewScene (runner : Load.Load.Runner) (emit : Message -> unit) (model : AdaptiveModel) = let renderControl = - + let renderControlAttributes = AttributeMap.ofListCond [ always <| style "width: 100%; grid-row: 2; height:100%"; @@ -351,11 +352,7 @@ module App = ] button [onClick (fun _ -> CenterScene)] [text "Center Scene"] button [onClick (fun _ -> ToggleBackground)] [text "Change Background"] - Simple.dropDown [] - model.cameraMode SetCameraMode - (Map.ofList [ - CameraMode.FreeFly, "Free Fly"; CameraMode.Orbit, "Orbit"; - ]) + Dropdown.dropdown SetCameraMode false None model.cameraMode AttributeMap.empty [CameraMode.FreeFly, text "Free Fly"; CameraMode.Orbit, text "Orbit" ] ] div [style "grid-row: 2; width: 100%; height: 100%"] [ renderControl diff --git a/src/PRo3D.Lite/PRo3D.State.fs b/src/PRo3D.Lite/PRo3D.State.fs index 0d1832f4..8183a38b 100644 --- a/src/PRo3D.Lite/PRo3D.State.fs +++ b/src/PRo3D.Lite/PRo3D.State.fs @@ -3,7 +3,7 @@ open FSharp.Data.Adaptive open Aardvark.Base -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.Rendering open Adaptify.FSharp diff --git a/src/PRo3D.Lite/Program.fs b/src/PRo3D.Lite/Program.fs index c7d1c0cc..e87fcfb1 100644 --- a/src/PRo3D.Lite/Program.fs +++ b/src/PRo3D.Lite/Program.fs @@ -2,7 +2,6 @@ open System.Threading open System.Threading.Tasks -open Giraffe open Aardvark.Base open Aardvark.Rendering @@ -14,8 +13,9 @@ open Aardium open PRo3D.Lite open PRo3D.Base -open Aardvark.UI.Giraffe -open Aardvark.Service.Giraffe +open Aardvark.UI +open Aardvark.Service +open Suave type Self = Self @@ -56,7 +56,7 @@ let main argv = MutableApp.toWebPart runtime instance ] use cts = new CancellationTokenSource() - let server = Server.startServer "http://localhost:4321" cts.Token webApp + let server = Server.StartWebPart 4321 webApp Aardium.run { diff --git a/src/PRo3D.Lite/paket.references b/src/PRo3D.Lite/paket.references index 6af7ddd3..9cd099ee 100644 --- a/src/PRo3D.Lite/paket.references +++ b/src/PRo3D.Lite/paket.references @@ -10,7 +10,7 @@ Aardvark.Base.Incremental Aardvark.Rendering.Vulkan Aardvark.Application.Slim.GL Aardvark.SceneGraph -Aardvark.SceneGraph.IO +Aardvark.SceneGraph.Assimp Aardvark.Rendering.Text Adaptify.Core @@ -26,7 +26,7 @@ Newtonsoft.Json Aardium -Aardvark.Service.Giraffe +Aardvark.Service Giraffe Saturn diff --git a/src/PRo3D.Minerva/Model.fs b/src/PRo3D.Minerva/Model.fs index 5d86717c..c53a6fe0 100644 --- a/src/PRo3D.Minerva/Model.fs +++ b/src/PRo3D.Minerva/Model.fs @@ -6,6 +6,7 @@ open Aardvark.Base open FSharp.Data.Adaptive open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data open FSharp.Data.JsonExtensions diff --git a/src/PRo3D.Minerva/paket.references b/src/PRo3D.Minerva/paket.references index a97229c4..123632a5 100644 --- a/src/PRo3D.Minerva/paket.references +++ b/src/PRo3D.Minerva/paket.references @@ -5,7 +5,7 @@ Aardvark.Base.FSharp Aardvark.Rendering Aardvark.Application.Slim.GL Aardvark.SceneGraph -Aardvark.SceneGraph.Opc +Aardvark.Data.Opc Aardvark.Rendering.Text Aardvark.Geometry diff --git a/src/PRo3D.SimulatedViews/Comparison/AnnotationComparison.fs b/src/PRo3D.SimulatedViews/Comparison/AnnotationComparison.fs index ea9aacda..45334e8a 100644 --- a/src/PRo3D.SimulatedViews/Comparison/AnnotationComparison.fs +++ b/src/PRo3D.SimulatedViews/Comparison/AnnotationComparison.fs @@ -6,6 +6,7 @@ open PRo3D.Comparison open FSharp.Data.Adaptive open PRo3D.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core open PRo3D.SurfaceUtils open PRo3D.Core.Surface diff --git a/src/PRo3D.SimulatedViews/Comparison/AreaComparison.fs b/src/PRo3D.SimulatedViews/Comparison/AreaComparison.fs index a816b880..25ab6638 100644 --- a/src/PRo3D.SimulatedViews/Comparison/AreaComparison.fs +++ b/src/PRo3D.SimulatedViews/Comparison/AreaComparison.fs @@ -6,21 +6,20 @@ open Adaptify.FSharp.Core open Aardvark.Base open Aardvark.Rendering open Aardvark.UI -open Aardvark.VRVis.Opc.KdTrees open MBrace.FsPickler open Aardvark.Geometry open OpcViewer.Base open FSharp.Data.Adaptive open OpcViewer.Base.Picking open Aardvark.SceneGraph -open Aardvark.SceneGraph.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc open PRo3D.Base open PRo3D.Core open PRo3D.Core.Surface open PRo3D.Comparison.ComparisonUtils open Aardvark.Geometry +open OpcViewer.Base.KdTrees //open System.Collections.Generic @@ -59,9 +58,9 @@ module AreaComparison = let positions = match level0Tree with - | InCoreKdTree kd -> + | Aardvark.VRVis.Opc.KdTrees.InCoreKdTree kd -> (kd.kdTree.KdIntersectionTree.ObjectSet |> toPositionsList) - | LazyKdTree kd -> + | Aardvark.VRVis.Opc.KdTrees.LazyKdTree kd -> match kd.kdTree with | Some tree -> (tree.KdIntersectionTree.ObjectSet |> toPositionsList) diff --git a/src/PRo3D.SimulatedViews/Comparison/Comparison-Model.fs b/src/PRo3D.SimulatedViews/Comparison/Comparison-Model.fs index 08f6c2c6..1460c799 100644 --- a/src/PRo3D.SimulatedViews/Comparison/Comparison-Model.fs +++ b/src/PRo3D.SimulatedViews/Comparison/Comparison-Model.fs @@ -6,6 +6,7 @@ open FSharp.Data.Adaptive open Aardvark.Base open PRo3D.Base.Annotation open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core open PRo3D.Base open Chiron diff --git a/src/PRo3D.SimulatedViews/Comparison/ComparisonUtils.fs b/src/PRo3D.SimulatedViews/Comparison/ComparisonUtils.fs index f7b3442b..e5d2e698 100644 --- a/src/PRo3D.SimulatedViews/Comparison/ComparisonUtils.fs +++ b/src/PRo3D.SimulatedViews/Comparison/ComparisonUtils.fs @@ -5,6 +5,7 @@ open Aardvark.UI open FSharp.Data.Adaptive open PRo3D.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core open PRo3D.SurfaceUtils open PRo3D.Core.Surface diff --git a/src/PRo3D.SimulatedViews/Comparison/SurfaceMeasurements.fs b/src/PRo3D.SimulatedViews/Comparison/SurfaceMeasurements.fs index 065c5988..1e8191a6 100644 --- a/src/PRo3D.SimulatedViews/Comparison/SurfaceMeasurements.fs +++ b/src/PRo3D.SimulatedViews/Comparison/SurfaceMeasurements.fs @@ -3,10 +3,10 @@ open System open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open FSharp.Data.Adaptive open PRo3D.Base -open Aardvark.UI open PRo3D.Core open PRo3D.SurfaceUtils open PRo3D.Core.Surface diff --git a/src/PRo3D.SimulatedViews/Lighting/Shading-Model.fs b/src/PRo3D.SimulatedViews/Lighting/Shading-Model.fs index 55266cb2..4f949c8e 100644 --- a/src/PRo3D.SimulatedViews/Lighting/Shading-Model.fs +++ b/src/PRo3D.SimulatedViews/Lighting/Shading-Model.fs @@ -2,6 +2,7 @@ open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open Chiron open PRo3D.Base diff --git a/src/PRo3D.SimulatedViews/Lighting/ShadingApp.fs b/src/PRo3D.SimulatedViews/Lighting/ShadingApp.fs index 9262c245..801e0b2a 100644 --- a/src/PRo3D.SimulatedViews/Lighting/ShadingApp.fs +++ b/src/PRo3D.SimulatedViews/Lighting/ShadingApp.fs @@ -233,7 +233,7 @@ module ShadingApp = Html.row "Light Direction:" [ div [] [text "Normalize Direction ";(Html.SemUi.iconCheckBox model.normalizeLightDirection ShadingAction.ToggleUseDirection)] - (Aardvark.UI.Vector3d.view model.lightDirection) + (Aardvark.UI.Primitives.Vector3d.view model.lightDirection) |> UI.map ShadingAction.SetLightDirection ] //Html.row "Light Distance: " diff --git a/src/PRo3D.SimulatedViews/Screenshots/Screenshot-Model.fs b/src/PRo3D.SimulatedViews/Screenshots/Screenshot-Model.fs index 3af0e79e..fb18776a 100644 --- a/src/PRo3D.SimulatedViews/Screenshots/Screenshot-Model.fs +++ b/src/PRo3D.SimulatedViews/Screenshots/Screenshot-Model.fs @@ -3,6 +3,7 @@ open Aardvark.Base open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open Chiron open PRo3D.Base diff --git a/src/PRo3D.SimulatedViews/Screenshots/ScreenshotApp.fs b/src/PRo3D.SimulatedViews/Screenshots/ScreenshotApp.fs index 2f7f7539..92bcf242 100644 --- a/src/PRo3D.SimulatedViews/Screenshots/ScreenshotApp.fs +++ b/src/PRo3D.SimulatedViews/Screenshots/ScreenshotApp.fs @@ -3,6 +3,7 @@ open FSharp.Data.Adaptive open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Base open System.IO diff --git a/src/PRo3D.SimulatedViews/Snapshots/GroupExtensions.fs b/src/PRo3D.SimulatedViews/Snapshots/GroupExtensions.fs index f041001d..b3cb2a6e 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/GroupExtensions.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/GroupExtensions.fs @@ -4,13 +4,7 @@ open System open Aardvark.Base open PRo3D.Core.GroupsApp -open Aardvark.Application -open Aardvark.Geometry -open Aardvark.UI -open Aardvark.UI.Trafos open FSharp.Data.Adaptive -open Aardvark.SceneGraph -open Aardvark.VRVis.Opc open PRo3D.Base open PRo3D diff --git a/src/PRo3D.SimulatedViews/Snapshots/HaltonPlacement.fs b/src/PRo3D.SimulatedViews/Snapshots/HaltonPlacement.fs index f5628a0e..ca1ba505 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/HaltonPlacement.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/HaltonPlacement.fs @@ -1,27 +1,12 @@ namespace PRo3D.SimulatedViews open System -open System.IO open Aardvark.Base -open Aardvark.Base.Geometry open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators open Aardvark.Rendering -open Aardvark.Rendering.Effects -open Aardvark.SceneGraph open Aardvark.UI -open Aardvark.UI.Primitives -open Aardvark.UI.Trafos -open Aardvark.UI.Animation -open Aardvark.Rendering.Text - -open Aardvark.SceneGraph.Opc -open Aardvark.SceneGraph.SgPrimitives.Sg -open Aardvark.GeoSpatial.Opc -open OpcViewer.Base - -open Adaptify.FSharp.Core open PRo3D.Core open PRo3D.Core.Surface diff --git a/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacement-Model.fs b/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacement-Model.fs index 757142cc..3b12384a 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacement-Model.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacement-Model.fs @@ -3,6 +3,7 @@ open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open Adaptify open Chiron open PRo3D.Base diff --git a/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacementApp.fs b/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacementApp.fs index 95f4921d..89b1b306 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacementApp.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/ObjectPlacementApp.fs @@ -5,6 +5,7 @@ open Aardvark.Base open Aardvark.Rendering open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core.Surface open PRo3D.Core open FSharp.Data.Adaptive diff --git a/src/PRo3D.SimulatedViews/Snapshots/RenderingUtils.fs b/src/PRo3D.SimulatedViews/Snapshots/RenderingUtils.fs index b0a4a5bc..7ad54091 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/RenderingUtils.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/RenderingUtils.fs @@ -5,6 +5,7 @@ open Aardvark.Base open Aardvark.Rendering open Aardvark.SceneGraph.``Sg RuntimeCommand Extensions`` open Aardvark.UI +open Aardvark.Data //open PixImageDevil //DevILSharp type RenderParameters = diff --git a/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettings-Model.fs b/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettings-Model.fs index 2d25650c..69dfe759 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettings-Model.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettings-Model.fs @@ -3,6 +3,7 @@ open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open Adaptify open Chiron open PRo3D.Base diff --git a/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettingsApp.fs b/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettingsApp.fs index a44d14f5..5f8051aa 100644 --- a/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettingsApp.fs +++ b/src/PRo3D.SimulatedViews/Snapshots/SnapshotSettingsApp.fs @@ -4,6 +4,7 @@ open System open Aardvark.Base open Adaptify open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core.Surface open PRo3D.Core open FSharp.Data.Adaptive diff --git a/src/PRo3D.SimulatedViews/Viewplanner/Rover.fs b/src/PRo3D.SimulatedViews/Viewplanner/Rover.fs index 234074cf..c659103e 100644 --- a/src/PRo3D.SimulatedViews/Viewplanner/Rover.fs +++ b/src/PRo3D.SimulatedViews/Viewplanner/Rover.fs @@ -7,6 +7,7 @@ open FSharp.Data.Adaptive open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open IPWrappers open JR diff --git a/src/PRo3D.SimulatedViews/paket.references b/src/PRo3D.SimulatedViews/paket.references index 75dab748..8e721f09 100644 --- a/src/PRo3D.SimulatedViews/paket.references +++ b/src/PRo3D.SimulatedViews/paket.references @@ -7,8 +7,8 @@ Aardvark.Application.Slim.GL Aardvark.Rendering.Text Aardvark.UI.Primitives Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.SceneGraph.Assimp +Aardvark.Data.Opc Aardvark.PixImage.DevIL diff --git a/src/PRo3D.Snapshots/PRo3D.Snapshots.fsproj b/src/PRo3D.Snapshots/PRo3D.Snapshots.fsproj index f2e714d8..24755efb 100644 --- a/src/PRo3D.Snapshots/PRo3D.Snapshots.fsproj +++ b/src/PRo3D.Snapshots/PRo3D.Snapshots.fsproj @@ -47,12 +47,6 @@ Never - - Always - - - Always - Always diff --git a/src/PRo3D.Snapshots/Program.fs b/src/PRo3D.Snapshots/Program.fs index ba9aa863..67027215 100644 --- a/src/PRo3D.Snapshots/Program.fs +++ b/src/PRo3D.Snapshots/Program.fs @@ -43,6 +43,8 @@ open Suave.Json open FSharp.Data.Adaptive +open Aardvark.GeoSpatial.Opc.Load + type EmbeddedRessource = EmbeddedRessource @@ -82,9 +84,6 @@ let startApplication (startupArgs : CLStartupArgs) = Aardvark.Base.Report.LogFileName <- logFilePath Log.line "Running with AppData: %s" appData - Config.colorPaletteStore <- Path.combine [appData; "favoriteColors.js"] - Log.line "Color palette favorite colors are stored here: %s" Config.colorPaletteStore - let crashDumpFile = "Aardvark.log" Aardium.init() @@ -196,6 +195,7 @@ let startApplication (startupArgs : CLStartupArgs) = MutableApp.toWebPart' runtime false mainApp path "/websocket" >=> handShake ws Reflection.assemblyWebPart typeof.Assembly + Aardvark.UI.Primitives.Resources.WebPart // Reflection.assemblyWebPart typeof.Assembly //(System.Reflection.Assembly.LoadFrom "PRo3D.CorrelationPanels.dll") // prefix "/instrument" >=> MutableApp.toWebPart runtime instrumentApp diff --git a/src/PRo3D.Snapshots/paket.references b/src/PRo3D.Snapshots/paket.references index a4571560..3f35158c 100644 --- a/src/PRo3D.Snapshots/paket.references +++ b/src/PRo3D.Snapshots/paket.references @@ -5,8 +5,8 @@ Aardvark.Base.FSharp Aardvark.Rendering Aardvark.Application.Slim.GL Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.SceneGraph.Assimp +Aardvark.Data.Opc Aardvark.Rendering.Text Aardvark.Geometry Aardvark.Geometry.Intersection diff --git a/src/PRo3D.Snapshots/resources/spectrum.css b/src/PRo3D.Snapshots/resources/spectrum.css deleted file mode 100644 index a8ad9e4f..00000000 --- a/src/PRo3D.Snapshots/resources/spectrum.css +++ /dev/null @@ -1,507 +0,0 @@ -/*** -Spectrum Colorpicker v1.8.0 -https://github.com/bgrins/spectrum -Author: Brian Grinstead -License: MIT -***/ - -.sp-container { - position:absolute; - top:0; - left:0; - display:inline-block; - *display: inline; - *zoom: 1; - /* https://github.com/bgrins/spectrum/issues/40 */ - z-index: 9999994; - overflow: hidden; -} -.sp-container.sp-flat { - position: relative; -} - -/* Fix for * { box-sizing: border-box; } */ -.sp-container, -.sp-container * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ -.sp-top { - position:relative; - width: 100%; - display:inline-block; -} -.sp-top-inner { - position:absolute; - top:0; - left:0; - bottom:0; - right:0; -} -.sp-color { - position: absolute; - top:0; - left:0; - bottom:0; - right:20%; -} -.sp-hue { - position: absolute; - top:0; - right:0; - bottom:0; - left:84%; - height: 100%; -} - -.sp-clear-enabled .sp-hue { - top:33px; - height: 77.5%; -} - -.sp-fill { - padding-top: 80%; -} -.sp-sat, .sp-val { - position: absolute; - top:0; - left:0; - right:0; - bottom:0; -} - -.sp-alpha-enabled .sp-top { - margin-bottom: 18px; -} -.sp-alpha-enabled .sp-alpha { - display: block; -} -.sp-alpha-handle { - position:absolute; - top:-4px; - bottom: -4px; - width: 6px; - left: 50%; - cursor: pointer; - border: 1px solid black; - background: white; - opacity: .8; -} -.sp-alpha { - display: none; - position: absolute; - bottom: -14px; - right: 0; - left: 0; - height: 8px; -} -.sp-alpha-inner { - border: solid 1px #333; -} - -.sp-clear { - display: none; -} - -.sp-clear.sp-clear-display { - background-position: center; -} - -.sp-clear-enabled .sp-clear { - display: block; - position:absolute; - top:0px; - right:0; - bottom:0; - left:84%; - height: 28px; -} - -/* Don't allow text selection */ -.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { - -webkit-user-select:none; - -moz-user-select: -moz-none; - -o-user-select:none; - user-select: none; -} - -.sp-container.sp-input-disabled .sp-input-container { - display: none; -} -.sp-container.sp-buttons-disabled .sp-button-container { - display: none; -} -.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { - display: none; -} -.sp-palette-only .sp-picker-container { - display: none; -} -.sp-palette-disabled .sp-palette-container { - display: none; -} - -.sp-initial-disabled .sp-initial { - display: none; -} - - -/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ -.sp-sat { - background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; - filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); -} -.sp-val { - background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; - filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); -} - -.sp-hue { - background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); - background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); -} - -/* IE filters do not support multiple color stops. - Generate 6 divs, line them up, and do two color gradients for each. - Yes, really. - */ -.sp-1 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); -} -.sp-2 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); -} -.sp-3 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); -} -.sp-4 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); -} -.sp-5 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); -} -.sp-6 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); -} - -.sp-hidden { - display: none !important; -} - -/* Clearfix hack */ -.sp-cf:before, .sp-cf:after { content: ""; display: table; } -.sp-cf:after { clear: both; } -.sp-cf { *zoom: 1; } - -/* Mobile devices, make hue slider bigger so it is easier to slide */ -@media (max-device-width: 480px) { - .sp-color { right: 40%; } - .sp-hue { left: 63%; } - .sp-fill { padding-top: 60%; } -} -.sp-dragger { - border-radius: 5px; - height: 5px; - width: 5px; - border: 1px solid #fff; - background: #000; - cursor: pointer; - position:absolute; - top:0; - left: 0; -} -.sp-slider { - position: absolute; - top:0; - cursor:pointer; - height: 3px; - left: -1px; - right: -1px; - border: 1px solid #000; - background: white; - opacity: .8; -} - -/* -Theme authors: -Here are the basic themeable display options (colors, fonts, global widths). -See http://bgrins.github.io/spectrum/themes/ for instructions. -*/ - -.sp-container { - border-radius: 0; - background-color: #ECECEC; - border: solid 1px #f0c49B; - padding: 0; -} -.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { - font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} -.sp-top { - margin-bottom: 3px; -} -.sp-color, .sp-hue, .sp-clear { - border: solid 1px #666; -} - -/* Input */ -.sp-input-container { - float:right; - width: 100px; - margin-bottom: 4px; -} -.sp-initial-disabled .sp-input-container { - width: 100%; -} -.sp-input { - font-size: 12px !important; - border: 1px inset; - padding: 4px 5px; - margin: 0; - width: 100%; - background:transparent; - border-radius: 3px; - color: #222; -} -.sp-input:focus { - border: 1px solid orange; -} -.sp-input.sp-validation-error { - border: 1px solid red; - background: #fdd; -} -.sp-picker-container , .sp-palette-container { - float:left; - position: relative; - padding: 10px; - padding-bottom: 300px; - margin-bottom: -290px; -} -.sp-picker-container { - width: 172px; - border-left: solid 1px #fff; -} - -/* Palettes */ -.sp-palette-container { - border-right: solid 1px #ccc; -} - -.sp-palette-only .sp-palette-container { - border: 0; -} - -.sp-palette .sp-thumb-el { - display: block; - position:relative; - float:left; - width: 24px; - height: 15px; - margin: 3px; - cursor: pointer; - border:solid 2px transparent; -} -.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { - border-color: orange; -} -.sp-thumb-el { - position:relative; -} - -/* Initial */ -.sp-initial { - float: left; - border: solid 1px #333; -} -.sp-initial span { - width: 30px; - height: 25px; - border:none; - display:block; - float:left; - margin:0; -} - -.sp-initial .sp-clear-display { - background-position: center; -} - -/* Buttons */ -.sp-palette-button-container, -.sp-button-container { - float: right; -} - -/* Replacer (the little preview div that shows up instead of the ) */ -.sp-replacer { - margin:0; - overflow:hidden; - cursor:pointer; - padding: 4px; - display:inline-block; - *zoom: 1; - *display: inline; - border: solid 1px #91765d; - background: #eee; - color: #333; - vertical-align: middle; -} -.sp-replacer:hover, .sp-replacer.sp-active { - border-color: #F0C49B; - color: #111; -} -.sp-replacer.sp-disabled { - cursor:default; - border-color: silver; - color: silver; -} -.sp-dd { - padding: 2px 0; - height: 16px; - line-height: 16px; - float:left; - font-size:10px; -} -.sp-preview { - position:relative; - width:25px; - height: 20px; - border: solid 1px #222; - margin-right: 5px; - float:left; - z-index: 0; -} - -.sp-palette { - *width: 220px; - max-width: 220px; -} -.sp-palette .sp-thumb-el { - width:16px; - height: 16px; - margin:2px 1px; - border: solid 1px #d0d0d0; -} - -.sp-container { - padding-bottom:0; -} - - -/* Buttons: http://hellohappy.org/css3-buttons/ */ -.sp-container button { - background-color: #eeeeee; - background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); - background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); - background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); - background-image: -o-linear-gradient(top, #eeeeee, #cccccc); - background-image: linear-gradient(to bottom, #eeeeee, #cccccc); - border: 1px solid #ccc; - border-bottom: 1px solid #bbb; - border-radius: 3px; - color: #333; - font-size: 14px; - line-height: 1; - padding: 5px 4px; - text-align: center; - text-shadow: 0 1px 0 #eee; - vertical-align: middle; -} -.sp-container button:hover { - background-color: #dddddd; - background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); - background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); - border: 1px solid #bbb; - border-bottom: 1px solid #999; - cursor: pointer; - text-shadow: 0 1px 0 #ddd; -} -.sp-container button:active { - border: 1px solid #aaa; - border-bottom: 1px solid #888; - -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -} -.sp-cancel { - font-size: 11px; - color: #d93f3f !important; - margin:0; - padding:2px; - margin-right: 5px; - vertical-align: middle; - text-decoration:none; - -} -.sp-cancel:hover { - color: #d93f3f !important; - text-decoration: underline; -} - - -.sp-palette span:hover, .sp-palette span.sp-thumb-active { - border-color: #000; -} - -.sp-preview, .sp-alpha, .sp-thumb-el { - position:relative; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); -} -.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { - display:block; - position:absolute; - top:0;left:0;bottom:0;right:0; -} - -.sp-palette .sp-thumb-inner { - background-position: 50% 50%; - background-repeat: no-repeat; -} - -.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); -} - -.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); -} - -.sp-clear-display { - background-repeat:no-repeat; - background-position: center; - background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); -} diff --git a/src/PRo3D.Snapshots/resources/spectrum.js b/src/PRo3D.Snapshots/resources/spectrum.js deleted file mode 100644 index 72009787..00000000 --- a/src/PRo3D.Snapshots/resources/spectrum.js +++ /dev/null @@ -1,2323 +0,0 @@ -// Spectrum Colorpicker v1.8.0 -// https://github.com/bgrins/spectrum -// Author: Brian Grinstead -// License: MIT - -(function (factory) { - "use strict"; - - if (typeof define === 'function' && define.amd) { // AMD - define(['jquery'], factory); - } - else if (typeof exports == "object" && typeof module == "object") { // CommonJS - module.exports = factory(require('jquery')); - } - else { // Browser - factory(jQuery); - } -})(function($, undefined) { - "use strict"; - - var defaultOpts = { - - // Callbacks - beforeShow: noop, - move: noop, - change: noop, - show: noop, - hide: noop, - - // Options - color: false, - flat: false, - showInput: false, - allowEmpty: false, - showButtons: true, - clickoutFiresChange: true, - showInitial: false, - showPalette: false, - showPaletteOnly: false, - hideAfterPaletteSelect: false, - togglePaletteOnly: false, - showSelectionPalette: true, - localStorageKey: false, - appendTo: "body", - maxSelectionSize: 7, - cancelText: "cancel", - chooseText: "choose", - togglePaletteMoreText: "more", - togglePaletteLessText: "less", - clearText: "Clear Color Selection", - noColorSelectedText: "No Color Selected", - preferredFormat: false, - className: "", // Deprecated - use containerClassName and replacerClassName instead. - containerClassName: "", - replacerClassName: "", - showAlpha: false, - theme: "sp-light", - palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], - selectionPalette: [], - disabled: false, - offset: null - }, - spectrums = [], - IE = !!/msie/i.exec( window.navigator.userAgent ), - rgbaSupport = (function() { - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - var elem = document.createElement('div'); - var style = elem.style; - style.cssText = 'background-color:rgba(0,0,0,.5)'; - return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); - })(), - replaceInput = [ - "
", - "
", - "
", - "
" - ].join(''), - markup = (function () { - - // IE does not support gradients with multiple stops, so we need to simulate - // that for the rainbow slider with 8 divs that each have a single gradient - var gradientFix = ""; - if (IE) { - for (var i = 1; i <= 6; i++) { - gradientFix += "
"; - } - } - - return [ - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - gradientFix, - "
", - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "", - "", - "
", - "
", - "
" - ].join(""); - })(); - - function paletteTemplate (p, color, className, opts) { - var html = []; - for (var i = 0; i < p.length; i++) { - var current = p[i]; - if(current) { - var tiny = tinycolor(current); - var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; - c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; - var formattedString = tiny.toString(opts.preferredFormat || "rgb"); - var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); - html.push(''); - } else { - var cls = 'sp-clear-display'; - html.push($('
') - .append($('') - .attr('title', opts.noColorSelectedText) - ) - .html() - ); - } - } - return "
" + html.join('') + "
"; - } - - function hideAll() { - for (var i = 0; i < spectrums.length; i++) { - if (spectrums[i]) { - spectrums[i].hide(); - } - } - } - - function instanceOptions(o, callbackContext) { - var opts = $.extend({}, defaultOpts, o); - opts.callbacks = { - 'move': bind(opts.move, callbackContext), - 'change': bind(opts.change, callbackContext), - 'show': bind(opts.show, callbackContext), - 'hide': bind(opts.hide, callbackContext), - 'beforeShow': bind(opts.beforeShow, callbackContext) - }; - - return opts; - } - - function spectrum(element, o) { - - var opts = instanceOptions(o, element), - flat = opts.flat, - showSelectionPalette = opts.showSelectionPalette, - localStorageKey = opts.localStorageKey, - theme = opts.theme, - callbacks = opts.callbacks, - resize = throttle(reflow, 10), - visible = false, - isDragging = false, - dragWidth = 0, - dragHeight = 0, - dragHelperHeight = 0, - slideHeight = 0, - slideWidth = 0, - alphaWidth = 0, - alphaSlideHelperWidth = 0, - slideHelperHeight = 0, - currentHue = 0, - currentSaturation = 0, - currentValue = 0, - currentAlpha = 1, - palette = [], - paletteArray = [], - paletteLookup = {}, - selectionPalette = opts.selectionPalette.slice(0), - maxSelectionSize = opts.maxSelectionSize, - draggingClass = "sp-dragging", - shiftMovementDirection = null; - - var doc = element.ownerDocument, - body = doc.body, - boundElement = $(element), - disabled = false, - container = $(markup, doc).addClass(theme), - pickerContainer = container.find(".sp-picker-container"), - dragger = container.find(".sp-color"), - dragHelper = container.find(".sp-dragger"), - slider = container.find(".sp-hue"), - slideHelper = container.find(".sp-slider"), - alphaSliderInner = container.find(".sp-alpha-inner"), - alphaSlider = container.find(".sp-alpha"), - alphaSlideHelper = container.find(".sp-alpha-handle"), - textInput = container.find(".sp-input"), - paletteContainer = container.find(".sp-palette"), - initialColorContainer = container.find(".sp-initial"), - cancelButton = container.find(".sp-cancel"), - clearButton = container.find(".sp-clear"), - chooseButton = container.find(".sp-choose"), - toggleButton = container.find(".sp-palette-toggle"), - isInput = boundElement.is("input"), - isInputTypeColor = isInput && boundElement.attr("type") === "color" && inputTypeColorSupport(), - shouldReplace = isInput && !flat, - replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), - offsetElement = (shouldReplace) ? replacer : boundElement, - previewElement = replacer.find(".sp-preview-inner"), - initialColor = opts.color || (isInput && boundElement.val()), - colorOnShow = false, - currentPreferredFormat = opts.preferredFormat, - clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, - isEmpty = !initialColor, - allowEmpty = opts.allowEmpty && !isInputTypeColor; - - function applyOptions() { - - if (opts.showPaletteOnly) { - opts.showPalette = true; - } - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - - if (opts.palette) { - palette = opts.palette.slice(0); - paletteArray = $.isArray(palette[0]) ? palette : [palette]; - paletteLookup = {}; - for (var i = 0; i < paletteArray.length; i++) { - for (var j = 0; j < paletteArray[i].length; j++) { - var rgb = tinycolor(paletteArray[i][j]).toRgbString(); - paletteLookup[rgb] = true; - } - } - } - - container.toggleClass("sp-flat", flat); - container.toggleClass("sp-input-disabled", !opts.showInput); - container.toggleClass("sp-alpha-enabled", opts.showAlpha); - container.toggleClass("sp-clear-enabled", allowEmpty); - container.toggleClass("sp-buttons-disabled", !opts.showButtons); - container.toggleClass("sp-palette-buttons-disabled", !opts.togglePaletteOnly); - container.toggleClass("sp-palette-disabled", !opts.showPalette); - container.toggleClass("sp-palette-only", opts.showPaletteOnly); - container.toggleClass("sp-initial-disabled", !opts.showInitial); - container.addClass(opts.className).addClass(opts.containerClassName); - - reflow(); - } - - function initialize() { - - if (IE) { - container.find("*:not(input)").attr("unselectable", "on"); - } - - applyOptions(); - - if (shouldReplace) { - boundElement.after(replacer).hide(); - } - - if (!allowEmpty) { - clearButton.hide(); - } - - if (flat) { - boundElement.after(container).hide(); - } - else { - - var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); - if (appendTo.length !== 1) { - appendTo = $("body"); - } - - appendTo.append(container); - } - - updateSelectionPaletteFromStorage(); - - offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { - if (!disabled) { - toggle(); - } - - e.stopPropagation(); - - if (!$(e.target).is("input")) { - e.preventDefault(); - } - }); - - if(boundElement.is(":disabled") || (opts.disabled === true)) { - disable(); - } - - // Prevent clicks from bubbling up to document. This would cause it to be hidden. - container.click(stopPropagation); - - // Handle user typed input - textInput.change(setFromTextInput); - textInput.bind("paste", function () { - setTimeout(setFromTextInput, 1); - }); - textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); - - cancelButton.text(opts.cancelText); - cancelButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - revert(); - hide(); - }); - - clearButton.attr("title", opts.clearText); - clearButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - isEmpty = true; - move(); - - if(flat) { - //for the flat style, this is a change event - updateOriginalInput(true); - } - }); - - chooseButton.text(opts.chooseText); - chooseButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - if (IE && textInput.is(":focus")) { - textInput.trigger('change'); - } - - if (isValid()) { - updateOriginalInput(true); - hide(); - } - }); - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - toggleButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - opts.showPaletteOnly = !opts.showPaletteOnly; - - // To make sure the Picker area is drawn on the right, next to the - // Palette area (and not below the palette), first move the Palette - // to the left to make space for the picker, plus 5px extra. - // The 'applyOptions' function puts the whole container back into place - // and takes care of the button-text and the sp-palette-only CSS class. - if (!opts.showPaletteOnly && !flat) { - container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5)); - } - applyOptions(); - }); - - draggable(alphaSlider, function (dragX, dragY, e) { - currentAlpha = (dragX / alphaWidth); - isEmpty = false; - if (e.shiftKey) { - currentAlpha = Math.round(currentAlpha * 10) / 10; - } - - move(); - }, dragStart, dragStop); - - draggable(slider, function (dragX, dragY) { - currentHue = parseFloat(dragY / slideHeight); - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - move(); - }, dragStart, dragStop); - - draggable(dragger, function (dragX, dragY, e) { - - // shift+drag should snap the movement to either the x or y axis. - if (!e.shiftKey) { - shiftMovementDirection = null; - } - else if (!shiftMovementDirection) { - var oldDragX = currentSaturation * dragWidth; - var oldDragY = dragHeight - (currentValue * dragHeight); - var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); - - shiftMovementDirection = furtherFromX ? "x" : "y"; - } - - var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; - var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; - - if (setSaturation) { - currentSaturation = parseFloat(dragX / dragWidth); - } - if (setValue) { - currentValue = parseFloat((dragHeight - dragY) / dragHeight); - } - - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - - move(); - - }, dragStart, dragStop); - - if (!!initialColor) { - set(initialColor); - - // In case color was black - update the preview UI and set the format - // since the set function will not run (default color is black). - updateUI(); - currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).format; - - addColorToSelectionPalette(initialColor); - } - else { - updateUI(); - } - - if (flat) { - show(); - } - - function paletteElementClick(e) { - if (e.data && e.data.ignore) { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - } - else { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - updateOriginalInput(true); - if (opts.hideAfterPaletteSelect) { - hide(); - } - } - - return false; - } - - var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; - paletteContainer.delegate(".sp-thumb-el", paletteEvent, paletteElementClick); - initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, paletteElementClick); - } - - function updateSelectionPaletteFromStorage() { - - if (localStorageKey && window.localStorage) { - - // Migrate old palettes over to new format. May want to remove this eventually. - try { - var oldPalette = window.localStorage[localStorageKey].split(",#"); - if (oldPalette.length > 1) { - delete window.localStorage[localStorageKey]; - $.each(oldPalette, function(i, c) { - addColorToSelectionPalette(c); - }); - } - } - catch(e) { } - - try { - selectionPalette = window.localStorage[localStorageKey].split(";"); - } - catch (e) { } - } - } - - function addColorToSelectionPalette(color) { - if (showSelectionPalette) { - var rgb = tinycolor(color).toRgbString(); - if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { - selectionPalette.push(rgb); - while(selectionPalette.length > maxSelectionSize) { - selectionPalette.shift(); - } - } - - if (localStorageKey && window.localStorage) { - try { - window.localStorage[localStorageKey] = selectionPalette.join(";"); - } - catch(e) { } - } - } - } - - function getUniqueSelectionPalette() { - var unique = []; - if (opts.showPalette) { - for (var i = 0; i < selectionPalette.length; i++) { - var rgb = tinycolor(selectionPalette[i]).toRgbString(); - - if (!paletteLookup[rgb]) { - unique.push(selectionPalette[i]); - } - } - } - - return unique.reverse().slice(0, opts.maxSelectionSize); - } - - function drawPalette() { - - var currentColor = get(); - - var html = $.map(paletteArray, function (palette, i) { - return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts); - }); - - updateSelectionPaletteFromStorage(); - - if (selectionPalette) { - html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts)); - } - - paletteContainer.html(html.join("")); - } - - function drawInitial() { - if (opts.showInitial) { - var initial = colorOnShow; - var current = get(); - initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts)); - } - } - - function dragStart() { - if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { - reflow(); - } - isDragging = true; - container.addClass(draggingClass); - shiftMovementDirection = null; - boundElement.trigger('dragstart.spectrum', [ get() ]); - } - - function dragStop() { - isDragging = false; - container.removeClass(draggingClass); - boundElement.trigger('dragstop.spectrum', [ get() ]); - } - - function setFromTextInput() { - - var value = textInput.val(); - - if ((value === null || value === "") && allowEmpty) { - set(null); - updateOriginalInput(true); - } - else { - var tiny = tinycolor(value); - if (tiny.isValid()) { - set(tiny); - updateOriginalInput(true); - } - else { - textInput.addClass("sp-validation-error"); - } - } - } - - function toggle() { - if (visible) { - hide(); - } - else { - show(); - } - } - - function show() { - var event = $.Event('beforeShow.spectrum'); - - if (visible) { - reflow(); - return; - } - - boundElement.trigger(event, [ get() ]); - - if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { - return; - } - - hideAll(); - visible = true; - - $(doc).bind("keydown.spectrum", onkeydown); - $(doc).bind("click.spectrum", clickout); - $(window).bind("resize.spectrum", resize); - replacer.addClass("sp-active"); - container.removeClass("sp-hidden"); - - reflow(); - updateUI(); - - colorOnShow = get(); - - drawInitial(); - callbacks.show(colorOnShow); - boundElement.trigger('show.spectrum', [ colorOnShow ]); - } - - function onkeydown(e) { - // Close on ESC - if (e.keyCode === 27) { - hide(); - } - } - - function clickout(e) { - // Return on right click. - if (e.button == 2) { return; } - - // If a drag event was happening during the mouseup, don't hide - // on click. - if (isDragging) { return; } - - if (clickoutFiresChange) { - updateOriginalInput(true); - } - else { - revert(); - } - hide(); - } - - function hide() { - // Return if hiding is unnecessary - if (!visible || flat) { return; } - visible = false; - - $(doc).unbind("keydown.spectrum", onkeydown); - $(doc).unbind("click.spectrum", clickout); - $(window).unbind("resize.spectrum", resize); - - replacer.removeClass("sp-active"); - container.addClass("sp-hidden"); - - callbacks.hide(get()); - boundElement.trigger('hide.spectrum', [ get() ]); - } - - function revert() { - set(colorOnShow, true); - } - - function set(color, ignoreFormatChange) { - if (tinycolor.equals(color, get())) { - // Update UI just in case a validation error needs - // to be cleared. - updateUI(); - return; - } - - var newColor, newHsv; - if (!color && allowEmpty) { - isEmpty = true; - } else { - isEmpty = false; - newColor = tinycolor(color); - newHsv = newColor.toHsv(); - - currentHue = (newHsv.h % 360) / 360; - currentSaturation = newHsv.s; - currentValue = newHsv.v; - currentAlpha = newHsv.a; - } - updateUI(); - - if (newColor && newColor.isValid() && !ignoreFormatChange) { - currentPreferredFormat = opts.preferredFormat || newColor.getFormat(); - } - } - - function get(opts) { - opts = opts || { }; - - if (allowEmpty && isEmpty) { - return null; - } - - return tinycolor.fromRatio({ - h: currentHue, - s: currentSaturation, - v: currentValue, - a: Math.round(currentAlpha * 100) / 100 - }, { format: opts.format || currentPreferredFormat }); - } - - function isValid() { - return !textInput.hasClass("sp-validation-error"); - } - - function move() { - updateUI(); - - callbacks.move(get()); - boundElement.trigger('move.spectrum', [ get() ]); - } - - function updateUI() { - - textInput.removeClass("sp-validation-error"); - - updateHelperLocations(); - - // Update dragger background color (gradients take care of saturation and value). - var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); - dragger.css("background-color", flatColor.toHexString()); - - // Get a format that alpha will be included in (hex and names ignore alpha) - var format = currentPreferredFormat; - if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { - if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { - format = "rgb"; - } - } - - var realColor = get({ format: format }), - displayColor = ''; - - //reset background info for preview element - previewElement.removeClass("sp-clear-display"); - previewElement.css('background-color', 'transparent'); - - if (!realColor && allowEmpty) { - // Update the replaced elements background with icon indicating no color selection - previewElement.addClass("sp-clear-display"); - } - else { - var realHex = realColor.toHexString(), - realRgb = realColor.toRgbString(); - - // Update the replaced elements background color (with actual selected color) - if (rgbaSupport || realColor.alpha === 1) { - previewElement.css("background-color", realRgb); - } - else { - previewElement.css("background-color", "transparent"); - previewElement.css("filter", realColor.toFilter()); - } - - if (opts.showAlpha) { - var rgb = realColor.toRgb(); - rgb.a = 0; - var realAlpha = tinycolor(rgb).toRgbString(); - var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; - - if (IE) { - alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); - } - else { - alphaSliderInner.css("background", "-webkit-" + gradient); - alphaSliderInner.css("background", "-moz-" + gradient); - alphaSliderInner.css("background", "-ms-" + gradient); - // Use current syntax gradient on unprefixed property. - alphaSliderInner.css("background", - "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); - } - } - - displayColor = realColor.toString(format); - } - - // Update the text entry input as it changes happen - if (opts.showInput) { - textInput.val(displayColor); - } - - if (opts.showPalette) { - drawPalette(); - } - - drawInitial(); - } - - function updateHelperLocations() { - var s = currentSaturation; - var v = currentValue; - - if(allowEmpty && isEmpty) { - //if selected color is empty, hide the helpers - alphaSlideHelper.hide(); - slideHelper.hide(); - dragHelper.hide(); - } - else { - //make sure helpers are visible - alphaSlideHelper.show(); - slideHelper.show(); - dragHelper.show(); - - // Where to show the little circle in that displays your current selected color - var dragX = s * dragWidth; - var dragY = dragHeight - (v * dragHeight); - dragX = Math.max( - -dragHelperHeight, - Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) - ); - dragY = Math.max( - -dragHelperHeight, - Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) - ); - dragHelper.css({ - "top": dragY + "px", - "left": dragX + "px" - }); - - var alphaX = currentAlpha * alphaWidth; - alphaSlideHelper.css({ - "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" - }); - - // Where to show the bar that displays your current selected hue - var slideY = (currentHue) * slideHeight; - slideHelper.css({ - "top": (slideY - slideHelperHeight) + "px" - }); - } - } - - function updateOriginalInput(fireCallback) { - var color = get(), - displayColor = '', - hasChanged = !tinycolor.equals(color, colorOnShow); - - if (color) { - displayColor = color.toString(currentPreferredFormat); - // Update the selection palette with the current color - addColorToSelectionPalette(color); - } - - if (isInput) { - boundElement.val(displayColor); - } - - if (fireCallback && hasChanged) { - callbacks.change(color); - boundElement.trigger('change', [ color ]); - } - } - - function reflow() { - if (!visible) { - return; // Calculations would be useless and wouldn't be reliable anyways - } - dragWidth = dragger.width(); - dragHeight = dragger.height(); - dragHelperHeight = dragHelper.height(); - slideWidth = slider.width(); - slideHeight = slider.height(); - slideHelperHeight = slideHelper.height(); - alphaWidth = alphaSlider.width(); - alphaSlideHelperWidth = alphaSlideHelper.width(); - - if (!flat) { - container.css("position", "absolute"); - if (opts.offset) { - container.offset(opts.offset); - } else { - container.offset(getOffset(container, offsetElement)); - } - } - - updateHelperLocations(); - - if (opts.showPalette) { - drawPalette(); - } - - boundElement.trigger('reflow.spectrum'); - } - - function destroy() { - boundElement.show(); - offsetElement.unbind("click.spectrum touchstart.spectrum"); - container.remove(); - replacer.remove(); - spectrums[spect.id] = null; - } - - function option(optionName, optionValue) { - if (optionName === undefined) { - return $.extend({}, opts); - } - if (optionValue === undefined) { - return opts[optionName]; - } - - opts[optionName] = optionValue; - - if (optionName === "preferredFormat") { - currentPreferredFormat = opts.preferredFormat; - } - applyOptions(); - } - - function enable() { - disabled = false; - boundElement.attr("disabled", false); - offsetElement.removeClass("sp-disabled"); - } - - function disable() { - hide(); - disabled = true; - boundElement.attr("disabled", true); - offsetElement.addClass("sp-disabled"); - } - - function setOffset(coord) { - opts.offset = coord; - reflow(); - } - - initialize(); - - var spect = { - show: show, - hide: hide, - toggle: toggle, - reflow: reflow, - option: option, - enable: enable, - disable: disable, - offset: setOffset, - set: function (c) { - set(c); - updateOriginalInput(); - }, - get: get, - destroy: destroy, - container: container - }; - - spect.id = spectrums.push(spect) - 1; - - return spect; - } - - /** - * checkOffset - get the offset below/above and left/right element depending on screen position - * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js - */ - function getOffset(picker, input) { - var extraY = 0; - var dpWidth = picker.outerWidth(); - var dpHeight = picker.outerHeight(); - var inputHeight = input.outerHeight(); - var doc = picker[0].ownerDocument; - var docElem = doc.documentElement; - var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); - var viewHeight = docElem.clientHeight + $(doc).scrollTop(); - var offset = input.offset(); - offset.top += inputHeight; - - offset.left -= - Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? - Math.abs(offset.left + dpWidth - viewWidth) : 0); - - offset.top -= - Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? - Math.abs(dpHeight + inputHeight - extraY) : extraY)); - - return offset; - } - - /** - * noop - do nothing - */ - function noop() { - - } - - /** - * stopPropagation - makes the code only doing this a little easier to read in line - */ - function stopPropagation(e) { - e.stopPropagation(); - } - - /** - * Create a function bound to a given object - * Thanks to underscore.js - */ - function bind(func, obj) { - var slice = Array.prototype.slice; - var args = slice.call(arguments, 2); - return function () { - return func.apply(obj, args.concat(slice.call(arguments))); - }; - } - - /** - * Lightweight drag helper. Handles containment within the element, so that - * when dragging, the x is within [0,element.width] and y is within [0,element.height] - */ - function draggable(element, onmove, onstart, onstop) { - onmove = onmove || function () { }; - onstart = onstart || function () { }; - onstop = onstop || function () { }; - var doc = document; - var dragging = false; - var offset = {}; - var maxHeight = 0; - var maxWidth = 0; - var hasTouch = ('ontouchstart' in window); - - var duringDragEvents = {}; - duringDragEvents["selectstart"] = prevent; - duringDragEvents["dragstart"] = prevent; - duringDragEvents["touchmove mousemove"] = move; - duringDragEvents["touchend mouseup"] = stop; - - function prevent(e) { - if (e.stopPropagation) { - e.stopPropagation(); - } - if (e.preventDefault) { - e.preventDefault(); - } - e.returnValue = false; - } - - function move(e) { - if (dragging) { - // Mouseup happened outside of window - if (IE && doc.documentMode < 9 && !e.button) { - return stop(); - } - - var t0 = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]; - var pageX = t0 && t0.pageX || e.pageX; - var pageY = t0 && t0.pageY || e.pageY; - - var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); - var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); - - if (hasTouch) { - // Stop scrolling in iOS - prevent(e); - } - - onmove.apply(element, [dragX, dragY, e]); - } - } - - function start(e) { - var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); - - if (!rightclick && !dragging) { - if (onstart.apply(element, arguments) !== false) { - dragging = true; - maxHeight = $(element).height(); - maxWidth = $(element).width(); - offset = $(element).offset(); - - $(doc).bind(duringDragEvents); - $(doc.body).addClass("sp-dragging"); - - move(e); - - prevent(e); - } - } - } - - function stop() { - if (dragging) { - $(doc).unbind(duringDragEvents); - $(doc.body).removeClass("sp-dragging"); - - // Wait a tick before notifying observers to allow the click event - // to fire in Chrome. - setTimeout(function() { - onstop.apply(element, arguments); - }, 0); - } - dragging = false; - } - - $(element).bind("touchstart mousedown", start); - } - - function throttle(func, wait, debounce) { - var timeout; - return function () { - var context = this, args = arguments; - var throttler = function () { - timeout = null; - func.apply(context, args); - }; - if (debounce) clearTimeout(timeout); - if (debounce || !timeout) timeout = setTimeout(throttler, wait); - }; - } - - function inputTypeColorSupport() { - return $.fn.spectrum.inputTypeColorSupport(); - } - - /** - * Define a jQuery plugin - */ - var dataID = "spectrum.id"; - $.fn.spectrum = function (opts, extra) { - - if (typeof opts == "string") { - - var returnValue = this; - var args = Array.prototype.slice.call( arguments, 1 ); - - this.each(function () { - var spect = spectrums[$(this).data(dataID)]; - if (spect) { - var method = spect[opts]; - if (!method) { - throw new Error( "Spectrum: no such method: '" + opts + "'" ); - } - - if (opts == "get") { - returnValue = spect.get(); - } - else if (opts == "container") { - returnValue = spect.container; - } - else if (opts == "option") { - returnValue = spect.option.apply(spect, args); - } - else if (opts == "destroy") { - spect.destroy(); - $(this).removeData(dataID); - } - else { - method.apply(spect, args); - } - } - }); - - return returnValue; - } - - // Initializing a new instance of spectrum - return this.spectrum("destroy").each(function () { - var options = $.extend({}, opts, $(this).data()); - var spect = spectrum(this, options); - $(this).data(dataID, spect.id); - }); - }; - - $.fn.spectrum.load = true; - $.fn.spectrum.loadOpts = {}; - $.fn.spectrum.draggable = draggable; - $.fn.spectrum.defaults = defaultOpts; - $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() { - if (typeof inputTypeColorSupport._cachedResult === "undefined") { - var colorInput = $("")[0]; // if color element is supported, value will default to not null - inputTypeColorSupport._cachedResult = colorInput.type === "color" && colorInput.value !== ""; - } - return inputTypeColorSupport._cachedResult; - }; - - $.spectrum = { }; - $.spectrum.localization = { }; - $.spectrum.palettes = { }; - - $.fn.spectrum.processNativeColorInputs = function () { - var colorInputs = $("input[type=color]"); - if (colorInputs.length && !inputTypeColorSupport()) { - colorInputs.spectrum({ - preferredFormat: "hex6" - }); - } - }; - - // TinyColor v1.1.2 - // https://github.com/bgrins/TinyColor - // Brian Grinstead, MIT License - - (function() { - - var trimLeft = /^[\s,#]+/, - trimRight = /\s+$/, - tinyCounter = 0, - math = Math, - mathRound = math.round, - mathMin = math.min, - mathMax = math.max, - mathRandom = math.random; - - var tinycolor = function(color, opts) { - - color = (color) ? color : ''; - opts = opts || { }; - - // If input is already a tinycolor, return itself - if (color instanceof tinycolor) { - return color; - } - // If we are called as a function, call using new instead - if (!(this instanceof tinycolor)) { - return new tinycolor(color, opts); - } - - var rgb = inputToRGB(color); - this._originalInput = color, - this._r = rgb.r, - this._g = rgb.g, - this._b = rgb.b, - this._a = rgb.a, - this._roundA = mathRound(100*this._a) / 100, - this._format = opts.format || rgb.format; - this._gradientType = opts.gradientType; - - // Don't let the range of [0,255] come back in [0,1]. - // Potentially lose a little bit of precision here, but will fix issues where - // .5 gets interpreted as half of the total, instead of half of 1 - // If it was supposed to be 128, this was already taken care of by `inputToRgb` - if (this._r < 1) { this._r = mathRound(this._r); } - if (this._g < 1) { this._g = mathRound(this._g); } - if (this._b < 1) { this._b = mathRound(this._b); } - - this._ok = rgb.ok; - this._tc_id = tinyCounter++; - }; - - tinycolor.prototype = { - isDark: function() { - return this.getBrightness() < 128; - }, - isLight: function() { - return !this.isDark(); - }, - isValid: function() { - return this._ok; - }, - getOriginalInput: function() { - return this._originalInput; - }, - getFormat: function() { - return this._format; - }, - getAlpha: function() { - return this._a; - }, - getBrightness: function() { - var rgb = this.toRgb(); - return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; - }, - setAlpha: function(value) { - this._a = boundAlpha(value); - this._roundA = mathRound(100*this._a) / 100; - return this; - }, - toHsv: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; - }, - toHsvString: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); - return (this._a == 1) ? - "hsv(" + h + ", " + s + "%, " + v + "%)" : - "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; - }, - toHsl: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; - }, - toHslString: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); - return (this._a == 1) ? - "hsl(" + h + ", " + s + "%, " + l + "%)" : - "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; - }, - toHex: function(allow3Char) { - return rgbToHex(this._r, this._g, this._b, allow3Char); - }, - toHexString: function(allow3Char) { - return '#' + this.toHex(allow3Char); - }, - toHex8: function() { - return rgbaToHex(this._r, this._g, this._b, this._a); - }, - toHex8String: function() { - return '#' + this.toHex8(); - }, - toRgb: function() { - return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; - }, - toRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : - "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; - }, - toPercentageRgb: function() { - return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; - }, - toPercentageRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : - "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; - }, - toName: function() { - if (this._a === 0) { - return "transparent"; - } - - if (this._a < 1) { - return false; - } - - return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; - }, - toFilter: function(secondColor) { - var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a); - var secondHex8String = hex8String; - var gradientType = this._gradientType ? "GradientType = 1, " : ""; - - if (secondColor) { - var s = tinycolor(secondColor); - secondHex8String = s.toHex8String(); - } - - return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; - }, - toString: function(format) { - var formatSet = !!format; - format = format || this._format; - - var formattedString = false; - var hasAlpha = this._a < 1 && this._a >= 0; - var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); - - if (needsAlphaFormat) { - // Special case for "transparent", all other non-alpha formats - // will return rgba when there is transparency. - if (format === "name" && this._a === 0) { - return this.toName(); - } - return this.toRgbString(); - } - if (format === "rgb") { - formattedString = this.toRgbString(); - } - if (format === "prgb") { - formattedString = this.toPercentageRgbString(); - } - if (format === "hex" || format === "hex6") { - formattedString = this.toHexString(); - } - if (format === "hex3") { - formattedString = this.toHexString(true); - } - if (format === "hex8") { - formattedString = this.toHex8String(); - } - if (format === "name") { - formattedString = this.toName(); - } - if (format === "hsl") { - formattedString = this.toHslString(); - } - if (format === "hsv") { - formattedString = this.toHsvString(); - } - - return formattedString || this.toHexString(); - }, - - _applyModification: function(fn, args) { - var color = fn.apply(null, [this].concat([].slice.call(args))); - this._r = color._r; - this._g = color._g; - this._b = color._b; - this.setAlpha(color._a); - return this; - }, - lighten: function() { - return this._applyModification(lighten, arguments); - }, - brighten: function() { - return this._applyModification(brighten, arguments); - }, - darken: function() { - return this._applyModification(darken, arguments); - }, - desaturate: function() { - return this._applyModification(desaturate, arguments); - }, - saturate: function() { - return this._applyModification(saturate, arguments); - }, - greyscale: function() { - return this._applyModification(greyscale, arguments); - }, - spin: function() { - return this._applyModification(spin, arguments); - }, - - _applyCombination: function(fn, args) { - return fn.apply(null, [this].concat([].slice.call(args))); - }, - analogous: function() { - return this._applyCombination(analogous, arguments); - }, - complement: function() { - return this._applyCombination(complement, arguments); - }, - monochromatic: function() { - return this._applyCombination(monochromatic, arguments); - }, - splitcomplement: function() { - return this._applyCombination(splitcomplement, arguments); - }, - triad: function() { - return this._applyCombination(triad, arguments); - }, - tetrad: function() { - return this._applyCombination(tetrad, arguments); - } - }; - - // If input is an object, force 1 into "1.0" to handle ratios properly - // String input requires "1.0" as input, so 1 will be treated as 1 - tinycolor.fromRatio = function(color, opts) { - if (typeof color == "object") { - var newColor = {}; - for (var i in color) { - if (color.hasOwnProperty(i)) { - if (i === "a") { - newColor[i] = color[i]; - } - else { - newColor[i] = convertToPercentage(color[i]); - } - } - } - color = newColor; - } - - return tinycolor(color, opts); - }; - - // Given a string or object, convert that input to RGB - // Possible string inputs: - // - // "red" - // "#f00" or "f00" - // "#ff0000" or "ff0000" - // "#ff000000" or "ff000000" - // "rgb 255 0 0" or "rgb (255, 0, 0)" - // "rgb 1.0 0 0" or "rgb (1, 0, 0)" - // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" - // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" - // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" - // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" - // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" - // - function inputToRGB(color) { - - var rgb = { r: 0, g: 0, b: 0 }; - var a = 1; - var ok = false; - var format = false; - - if (typeof color == "string") { - color = stringInputToObject(color); - } - - if (typeof color == "object") { - if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { - rgb = rgbToRgb(color.r, color.g, color.b); - ok = true; - format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { - color.s = convertToPercentage(color.s); - color.v = convertToPercentage(color.v); - rgb = hsvToRgb(color.h, color.s, color.v); - ok = true; - format = "hsv"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { - color.s = convertToPercentage(color.s); - color.l = convertToPercentage(color.l); - rgb = hslToRgb(color.h, color.s, color.l); - ok = true; - format = "hsl"; - } - - if (color.hasOwnProperty("a")) { - a = color.a; - } - } - - a = boundAlpha(a); - - return { - ok: ok, - format: color.format || format, - r: mathMin(255, mathMax(rgb.r, 0)), - g: mathMin(255, mathMax(rgb.g, 0)), - b: mathMin(255, mathMax(rgb.b, 0)), - a: a - }; - } - - - // Conversion Functions - // -------------------- - - // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: - // - - // `rgbToRgb` - // Handle bounds / percentage checking to conform to CSS color spec - // - // *Assumes:* r, g, b in [0, 255] or [0, 1] - // *Returns:* { r, g, b } in [0, 255] - function rgbToRgb(r, g, b){ - return { - r: bound01(r, 255) * 255, - g: bound01(g, 255) * 255, - b: bound01(b, 255) * 255 - }; - } - - // `rgbToHsl` - // Converts an RGB color value to HSL. - // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] - // *Returns:* { h, s, l } in [0,1] - function rgbToHsl(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, l = (max + min) / 2; - - if(max == min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - - h /= 6; - } - - return { h: h, s: s, l: l }; - } - - // `hslToRgb` - // Converts an HSL color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hslToRgb(h, s, l) { - var r, g, b; - - h = bound01(h, 360); - s = bound01(s, 100); - l = bound01(l, 100); - - function hue2rgb(p, q, t) { - if(t < 0) t += 1; - if(t > 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - } - - if(s === 0) { - r = g = b = l; // achromatic - } - else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHsv` - // Converts an RGB color value to HSV - // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] - // *Returns:* { h, s, v } in [0,1] - function rgbToHsv(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, v = max; - - var d = max - min; - s = max === 0 ? 0 : d / max; - - if(max == min) { - h = 0; // achromatic - } - else { - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - return { h: h, s: s, v: v }; - } - - // `hsvToRgb` - // Converts an HSV color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hsvToRgb(h, s, v) { - - h = bound01(h, 360) * 6; - s = bound01(s, 100); - v = bound01(v, 100); - - var i = math.floor(h), - f = h - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s), - mod = i % 6, - r = [v, q, p, p, t, v][mod], - g = [t, v, v, q, p, p][mod], - b = [p, p, t, v, v, q][mod]; - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHex` - // Converts an RGB color to hex - // Assumes r, g, and b are contained in the set [0, 255] - // Returns a 3 or 6 character hex - function rgbToHex(r, g, b, allow3Char) { - - var hex = [ - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - // Return a 3 character hex if possible - if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { - return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); - } - - return hex.join(""); - } - // `rgbaToHex` - // Converts an RGBA color plus alpha transparency to hex - // Assumes r, g, b and a are contained in the set [0, 255] - // Returns an 8 character hex - function rgbaToHex(r, g, b, a) { - - var hex = [ - pad2(convertDecimalToHex(a)), - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - return hex.join(""); - } - - // `equals` - // Can be called with any tinycolor input - tinycolor.equals = function (color1, color2) { - if (!color1 || !color2) { return false; } - return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); - }; - tinycolor.random = function() { - return tinycolor.fromRatio({ - r: mathRandom(), - g: mathRandom(), - b: mathRandom() - }); - }; - - - // Modification Functions - // ---------------------- - // Thanks to less.js for some of the basics here - // - - function desaturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s -= amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function saturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s += amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function greyscale(color) { - return tinycolor(color).desaturate(100); - } - - function lighten (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l += amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - function brighten(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var rgb = tinycolor(color).toRgb(); - rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); - rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); - rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); - return tinycolor(rgb); - } - - function darken (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l -= amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. - // Values outside of this range will be wrapped into this range. - function spin(color, amount) { - var hsl = tinycolor(color).toHsl(); - var hue = (mathRound(hsl.h) + amount) % 360; - hsl.h = hue < 0 ? 360 + hue : hue; - return tinycolor(hsl); - } - - // Combination Functions - // --------------------- - // Thanks to jQuery xColor for some of the ideas behind these - // - - function complement(color) { - var hsl = tinycolor(color).toHsl(); - hsl.h = (hsl.h + 180) % 360; - return tinycolor(hsl); - } - - function triad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function tetrad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function splitcomplement(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), - tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) - ]; - } - - function analogous(color, results, slices) { - results = results || 6; - slices = slices || 30; - - var hsl = tinycolor(color).toHsl(); - var part = 360 / slices; - var ret = [tinycolor(color)]; - - for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { - hsl.h = (hsl.h + part) % 360; - ret.push(tinycolor(hsl)); - } - return ret; - } - - function monochromatic(color, results) { - results = results || 6; - var hsv = tinycolor(color).toHsv(); - var h = hsv.h, s = hsv.s, v = hsv.v; - var ret = []; - var modification = 1 / results; - - while (results--) { - ret.push(tinycolor({ h: h, s: s, v: v})); - v = (v + modification) % 1; - } - - return ret; - } - - // Utility Functions - // --------------------- - - tinycolor.mix = function(color1, color2, amount) { - amount = (amount === 0) ? 0 : (amount || 50); - - var rgb1 = tinycolor(color1).toRgb(); - var rgb2 = tinycolor(color2).toRgb(); - - var p = amount / 100; - var w = p * 2 - 1; - var a = rgb2.a - rgb1.a; - - var w1; - - if (w * a == -1) { - w1 = w; - } else { - w1 = (w + a) / (1 + w * a); - } - - w1 = (w1 + 1) / 2; - - var w2 = 1 - w1; - - var rgba = { - r: rgb2.r * w1 + rgb1.r * w2, - g: rgb2.g * w1 + rgb1.g * w2, - b: rgb2.b * w1 + rgb1.b * w2, - a: rgb2.a * p + rgb1.a * (1 - p) - }; - - return tinycolor(rgba); - }; - - - // Readability Functions - // --------------------- - // - - // `readability` - // Analyze the 2 colors and returns an object with the following properties: - // `brightness`: difference in brightness between the two colors - // `color`: difference in color/hue between the two colors - tinycolor.readability = function(color1, color2) { - var c1 = tinycolor(color1); - var c2 = tinycolor(color2); - var rgb1 = c1.toRgb(); - var rgb2 = c2.toRgb(); - var brightnessA = c1.getBrightness(); - var brightnessB = c2.getBrightness(); - var colorDiff = ( - Math.max(rgb1.r, rgb2.r) - Math.min(rgb1.r, rgb2.r) + - Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) + - Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b) - ); - - return { - brightness: Math.abs(brightnessA - brightnessB), - color: colorDiff - }; - }; - - // `readable` - // http://www.w3.org/TR/AERT#color-contrast - // Ensure that foreground and background color combinations provide sufficient contrast. - // *Example* - // tinycolor.isReadable("#000", "#111") => false - tinycolor.isReadable = function(color1, color2) { - var readability = tinycolor.readability(color1, color2); - return readability.brightness > 125 && readability.color > 500; - }; - - // `mostReadable` - // Given a base color and a list of possible foreground or background - // colors for that base, returns the most readable color. - // *Example* - // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" - tinycolor.mostReadable = function(baseColor, colorList) { - var bestColor = null; - var bestScore = 0; - var bestIsReadable = false; - for (var i=0; i < colorList.length; i++) { - - // We normalize both around the "acceptable" breaking point, - // but rank brightness constrast higher than hue. - - var readability = tinycolor.readability(baseColor, colorList[i]); - var readable = readability.brightness > 125 && readability.color > 500; - var score = 3 * (readability.brightness / 125) + (readability.color / 500); - - if ((readable && ! bestIsReadable) || - (readable && bestIsReadable && score > bestScore) || - ((! readable) && (! bestIsReadable) && score > bestScore)) { - bestIsReadable = readable; - bestScore = score; - bestColor = tinycolor(colorList[i]); - } - } - return bestColor; - }; - - - // Big List of Colors - // ------------------ - // - var names = tinycolor.names = { - aliceblue: "f0f8ff", - antiquewhite: "faebd7", - aqua: "0ff", - aquamarine: "7fffd4", - azure: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "000", - blanchedalmond: "ffebcd", - blue: "00f", - blueviolet: "8a2be2", - brown: "a52a2a", - burlywood: "deb887", - burntsienna: "ea7e5d", - cadetblue: "5f9ea0", - chartreuse: "7fff00", - chocolate: "d2691e", - coral: "ff7f50", - cornflowerblue: "6495ed", - cornsilk: "fff8dc", - crimson: "dc143c", - cyan: "0ff", - darkblue: "00008b", - darkcyan: "008b8b", - darkgoldenrod: "b8860b", - darkgray: "a9a9a9", - darkgreen: "006400", - darkgrey: "a9a9a9", - darkkhaki: "bdb76b", - darkmagenta: "8b008b", - darkolivegreen: "556b2f", - darkorange: "ff8c00", - darkorchid: "9932cc", - darkred: "8b0000", - darksalmon: "e9967a", - darkseagreen: "8fbc8f", - darkslateblue: "483d8b", - darkslategray: "2f4f4f", - darkslategrey: "2f4f4f", - darkturquoise: "00ced1", - darkviolet: "9400d3", - deeppink: "ff1493", - deepskyblue: "00bfff", - dimgray: "696969", - dimgrey: "696969", - dodgerblue: "1e90ff", - firebrick: "b22222", - floralwhite: "fffaf0", - forestgreen: "228b22", - fuchsia: "f0f", - gainsboro: "dcdcdc", - ghostwhite: "f8f8ff", - gold: "ffd700", - goldenrod: "daa520", - gray: "808080", - green: "008000", - greenyellow: "adff2f", - grey: "808080", - honeydew: "f0fff0", - hotpink: "ff69b4", - indianred: "cd5c5c", - indigo: "4b0082", - ivory: "fffff0", - khaki: "f0e68c", - lavender: "e6e6fa", - lavenderblush: "fff0f5", - lawngreen: "7cfc00", - lemonchiffon: "fffacd", - lightblue: "add8e6", - lightcoral: "f08080", - lightcyan: "e0ffff", - lightgoldenrodyellow: "fafad2", - lightgray: "d3d3d3", - lightgreen: "90ee90", - lightgrey: "d3d3d3", - lightpink: "ffb6c1", - lightsalmon: "ffa07a", - lightseagreen: "20b2aa", - lightskyblue: "87cefa", - lightslategray: "789", - lightslategrey: "789", - lightsteelblue: "b0c4de", - lightyellow: "ffffe0", - lime: "0f0", - limegreen: "32cd32", - linen: "faf0e6", - magenta: "f0f", - maroon: "800000", - mediumaquamarine: "66cdaa", - mediumblue: "0000cd", - mediumorchid: "ba55d3", - mediumpurple: "9370db", - mediumseagreen: "3cb371", - mediumslateblue: "7b68ee", - mediumspringgreen: "00fa9a", - mediumturquoise: "48d1cc", - mediumvioletred: "c71585", - midnightblue: "191970", - mintcream: "f5fffa", - mistyrose: "ffe4e1", - moccasin: "ffe4b5", - navajowhite: "ffdead", - navy: "000080", - oldlace: "fdf5e6", - olive: "808000", - olivedrab: "6b8e23", - orange: "ffa500", - orangered: "ff4500", - orchid: "da70d6", - palegoldenrod: "eee8aa", - palegreen: "98fb98", - paleturquoise: "afeeee", - palevioletred: "db7093", - papayawhip: "ffefd5", - peachpuff: "ffdab9", - peru: "cd853f", - pink: "ffc0cb", - plum: "dda0dd", - powderblue: "b0e0e6", - purple: "800080", - rebeccapurple: "663399", - red: "f00", - rosybrown: "bc8f8f", - royalblue: "4169e1", - saddlebrown: "8b4513", - salmon: "fa8072", - sandybrown: "f4a460", - seagreen: "2e8b57", - seashell: "fff5ee", - sienna: "a0522d", - silver: "c0c0c0", - skyblue: "87ceeb", - slateblue: "6a5acd", - slategray: "708090", - slategrey: "708090", - snow: "fffafa", - springgreen: "00ff7f", - steelblue: "4682b4", - tan: "d2b48c", - teal: "008080", - thistle: "d8bfd8", - tomato: "ff6347", - turquoise: "40e0d0", - violet: "ee82ee", - wheat: "f5deb3", - white: "fff", - whitesmoke: "f5f5f5", - yellow: "ff0", - yellowgreen: "9acd32" - }; - - // Make it easy to access colors via `hexNames[hex]` - var hexNames = tinycolor.hexNames = flip(names); - - - // Utilities - // --------- - - // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` - function flip(o) { - var flipped = { }; - for (var i in o) { - if (o.hasOwnProperty(i)) { - flipped[o[i]] = i; - } - } - return flipped; - } - - // Return a valid alpha value [0,1] with all invalid values being set to 1 - function boundAlpha(a) { - a = parseFloat(a); - - if (isNaN(a) || a < 0 || a > 1) { - a = 1; - } - - return a; - } - - // Take input from [0, n] and return it as [0, 1] - function bound01(n, max) { - if (isOnePointZero(n)) { n = "100%"; } - - var processPercent = isPercentage(n); - n = mathMin(max, mathMax(0, parseFloat(n))); - - // Automatically convert percentage into number - if (processPercent) { - n = parseInt(n * max, 10) / 100; - } - - // Handle floating point rounding errors - if ((math.abs(n - max) < 0.000001)) { - return 1; - } - - // Convert into [0, 1] range if it isn't already - return (n % max) / parseFloat(max); - } - - // Force a number between 0 and 1 - function clamp01(val) { - return mathMin(1, mathMax(0, val)); - } - - // Parse a base-16 hex value into a base-10 integer - function parseIntFromHex(val) { - return parseInt(val, 16); - } - - // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 - // - function isOnePointZero(n) { - return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; - } - - // Check to see if string passed in is a percentage - function isPercentage(n) { - return typeof n === "string" && n.indexOf('%') != -1; - } - - // Force a hex value to have 2 characters - function pad2(c) { - return c.length == 1 ? '0' + c : '' + c; - } - - // Replace a decimal with it's percentage value - function convertToPercentage(n) { - if (n <= 1) { - n = (n * 100) + "%"; - } - - return n; - } - - // Converts a decimal to a hex value - function convertDecimalToHex(d) { - return Math.round(parseFloat(d) * 255).toString(16); - } - // Converts a hex value to a decimal - function convertHexToDecimal(h) { - return (parseIntFromHex(h) / 255); - } - - var matchers = (function() { - - // - var CSS_INTEGER = "[-\\+]?\\d+%?"; - - // - var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; - - // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. - var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; - - // Actual matching. - // Parentheses and commas are optional, but not required. - // Whitespace can take the place of commas or opening paren - var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - - return { - rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), - rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), - hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), - hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), - hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), - hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), - hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, - hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, - hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ - }; - })(); - - // `stringInputToObject` - // Permissive string parsing. Take in a number of formats, and output an object - // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` - function stringInputToObject(color) { - - color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); - var named = false; - if (names[color]) { - color = names[color]; - named = true; - } - else if (color == 'transparent') { - return { r: 0, g: 0, b: 0, a: 0, format: "name" }; - } - - // Try to match string input using regular expressions. - // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] - // Just return an object and let the conversion functions handle that. - // This way the result will be the same whether the tinycolor is initialized with string or object. - var match; - if ((match = matchers.rgb.exec(color))) { - return { r: match[1], g: match[2], b: match[3] }; - } - if ((match = matchers.rgba.exec(color))) { - return { r: match[1], g: match[2], b: match[3], a: match[4] }; - } - if ((match = matchers.hsl.exec(color))) { - return { h: match[1], s: match[2], l: match[3] }; - } - if ((match = matchers.hsla.exec(color))) { - return { h: match[1], s: match[2], l: match[3], a: match[4] }; - } - if ((match = matchers.hsv.exec(color))) { - return { h: match[1], s: match[2], v: match[3] }; - } - if ((match = matchers.hsva.exec(color))) { - return { h: match[1], s: match[2], v: match[3], a: match[4] }; - } - if ((match = matchers.hex8.exec(color))) { - return { - a: convertHexToDecimal(match[1]), - r: parseIntFromHex(match[2]), - g: parseIntFromHex(match[3]), - b: parseIntFromHex(match[4]), - format: named ? "name" : "hex8" - }; - } - if ((match = matchers.hex6.exec(color))) { - return { - r: parseIntFromHex(match[1]), - g: parseIntFromHex(match[2]), - b: parseIntFromHex(match[3]), - format: named ? "name" : "hex" - }; - } - if ((match = matchers.hex3.exec(color))) { - return { - r: parseIntFromHex(match[1] + '' + match[1]), - g: parseIntFromHex(match[2] + '' + match[2]), - b: parseIntFromHex(match[3] + '' + match[3]), - format: named ? "name" : "hex" - }; - } - - return false; - } - - window.tinycolor = tinycolor; - })(); - - $(function () { - if ($.fn.spectrum.load) { - $.fn.spectrum.processNativeColorInputs(); - } - }); - -}); diff --git a/src/PRo3D.Viewer/AnnotationRendering.fs b/src/PRo3D.Viewer/AnnotationRendering.fs deleted file mode 100644 index e60bfefb..00000000 --- a/src/PRo3D.Viewer/AnnotationRendering.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace PRo3D.Base - -open FSharp.Data.Adaptive - -open Aardvark.Base - -open PRo3D.Base -open PRo3D.Base.Annotation - - -module AnnotationRendering = - - let bakeAnnotations (annotations : aset) = - AVal.custom (fun token -> - let annotations = annotations.Content.GetValue(token) - for a in annotations do - failwith "" - ) \ No newline at end of file diff --git a/src/PRo3D.Viewer/Config.fs b/src/PRo3D.Viewer/Config.fs index e66d6006..87975c3e 100644 --- a/src/PRo3D.Viewer/Config.fs +++ b/src/PRo3D.Viewer/Config.fs @@ -5,10 +5,6 @@ module Config = let useAsyncIntersections = false let sampleCount = 100 - let mutable configPath = "." - let mutable colorPaletteStore = ".\palettes.js" - - let mutable besideExecuteable = "." let mutable data_samples = "4" let mutable useMapping = "true" diff --git a/src/PRo3D.Viewer/InitialViewerModel.fs b/src/PRo3D.Viewer/InitialViewerModel.fs index 6dd97d2e..f940dcc1 100644 --- a/src/PRo3D.Viewer/InitialViewerModel.fs +++ b/src/PRo3D.Viewer/InitialViewerModel.fs @@ -14,10 +14,10 @@ open PRo3D.Core.SequencedBookmarks open PRo3D.Navigation2 open Aardvark.UI -open Aardvark.UI.Anewmation +open Aardvark.UI.Animation open Aardvark.UI.Primitives open Aardvark.UI.Trafos -open Aardvark.UI.Animation +open Aardvark.UI.Animation.Deprecated open Aardvark.Rendering module Viewer = @@ -169,7 +169,7 @@ module Viewer = renderingUrl = renderingUrl numberOfSamples = numberOfSamples screenshotDirectory = screenshotDirectory - animator = Anewmation.Animator.initial animatorLens + animator = Animation.Animator.initial animatorLens provenanceModel = ProvenanceModel.invalid } |> ProvenanceApp.emptyWithModel diff --git a/src/PRo3D.Viewer/LensConfigs.fs b/src/PRo3D.Viewer/LensConfigs.fs deleted file mode 100644 index 01617e02..00000000 --- a/src/PRo3D.Viewer/LensConfigs.fs +++ /dev/null @@ -1 +0,0 @@ -namespace LensConfig \ No newline at end of file diff --git a/src/PRo3D.Viewer/Models/Lenses.fs b/src/PRo3D.Viewer/Models/Lenses.fs index b6c2c2c7..7f0c44ad 100644 --- a/src/PRo3D.Viewer/Models/Lenses.fs +++ b/src/PRo3D.Viewer/Models/Lenses.fs @@ -1,6 +1,6 @@ namespace PRo3D -open Aardvark.UI +open Aardvark.UI.Primitives open PRo3D.Core open Aether diff --git a/src/PRo3D.Viewer/PRo3D.Viewer.fsproj b/src/PRo3D.Viewer/PRo3D.Viewer.fsproj index 4e061d51..65aafd90 100644 --- a/src/PRo3D.Viewer/PRo3D.Viewer.fsproj +++ b/src/PRo3D.Viewer/PRo3D.Viewer.fsproj @@ -54,10 +54,6 @@ - - - - @@ -121,12 +117,6 @@ - - Always - - - Always - Always diff --git a/src/PRo3D.Viewer/Program.fs b/src/PRo3D.Viewer/Program.fs index 3fb05a48..9fc58a2b 100644 --- a/src/PRo3D.Viewer/Program.fs +++ b/src/PRo3D.Viewer/Program.fs @@ -11,11 +11,7 @@ open System.Collections.Generic open Aardvark.Base open Aardvark.Application.Slim -open Aardvark.SceneGraph.Opc open Aardvark.UI -open Aardvark.VRVis -open Aardvark.VRVis.Opc -open Aardvark.GeoSpatial.Opc open OpcViewer.Base open Aardvark.Rendering @@ -45,6 +41,7 @@ open FSharp.Data.Adaptive open System.Reflection open System.Runtime.InteropServices +open Aardvark.GeoSpatial.Opc.Load type EmbeddedRessource = EmbeddedRessource @@ -127,10 +124,7 @@ let main argv = System.Threading.ThreadPool.SetMinThreads(12, 12) |> ignore - Log.line "path: %s, current dir: %s" executeablePath System.Environment.CurrentDirectory - Config.colorPaletteStore <- Path.combine [appData; "favoriteColors.js"] - Log.line "Color palette favorite colors are stored here: %s" Config.colorPaletteStore let os = if RuntimeInformation.IsOSPlatform(OSPlatform.OSX) then @@ -380,6 +374,7 @@ let main argv = path "/websocket" >=> handShake ws prefix "/api" >=> remoteApi Reflection.assemblyWebPart typeof.Assembly + Aardvark.UI.Primitives.Resources.WebPart // Reflection.assemblyWebPart typeof.Assembly //(System.Reflection.Assembly.LoadFrom "PRo3D.CorrelationPanels.dll") // prefix "/instrument" >=> MutableApp.toWebPart runtime instrumentApp @@ -478,11 +473,6 @@ let main argv = height 800 debug true title titlestr - - - windowoptions {| minWidth = 180; minHeight = 180; title = titlestr;|} - hideDock true - autoclose true } finally diff --git a/src/PRo3D.Viewer/ProvenanceApp.fs b/src/PRo3D.Viewer/ProvenanceApp.fs index a944b07c..bbdd3c0c 100644 --- a/src/PRo3D.Viewer/ProvenanceApp.fs +++ b/src/PRo3D.Viewer/ProvenanceApp.fs @@ -14,8 +14,8 @@ open Aardvark.UI.Primitives open PRo3D.Navigation open PRo3D.Viewer -open Aardvark.UI.Anewmation open Aardvark.UI.Animation +open Aardvark.UI.Animation.Deprecated module ProvenanceApp = diff --git a/src/PRo3D.Viewer/RemoteApi.fs b/src/PRo3D.Viewer/RemoteApi.fs index d3c4dd30..6210ce15 100644 --- a/src/PRo3D.Viewer/RemoteApi.fs +++ b/src/PRo3D.Viewer/RemoteApi.fs @@ -14,6 +14,7 @@ open PRo3D.Core open System.IO open Aardvark.Base open FSharp.Data.Adaptive +open Aardvark.Data.Opc module RemoteApi = @@ -211,9 +212,9 @@ module RemoteApi = let patchHierarchies = opcs |> Seq.collect (fun scene -> scene.patchHierarchies - |> Seq.map Aardvark.Prinziple.Prinziple.registerIfZipped + |> Seq.map Prinziple.register |> Seq.map (fun x -> - Aardvark.SceneGraph.Opc.PatchHierarchy.load PRo3D.Base.Serialization.binarySerializer.Pickle PRo3D.Base.Serialization.binarySerializer.UnPickle (Aardvark.SceneGraph.Opc.OpcPaths x), x + Aardvark.Data.Opc.PatchHierarchy.load PRo3D.Base.Serialization.binarySerializer.Pickle PRo3D.Base.Serialization.binarySerializer.UnPickle (Aardvark.Data.Opc.OpcPaths x), x ) ) |> Seq.toList @@ -225,25 +226,6 @@ module RemoteApi = member x.ApplyGraphAndGetCheckpointState(sceneAsJson : string, drawingAsJson : string, p : Option, activeNode : Option) : Model * ViewerIO.SerializedModel = - - - - - - - - - - - - - - - - - - - let nopSendQueue = new System.Collections.Concurrent.BlockingCollection<_>() let nopMailbox = new MessagingMailbox(fun _ -> async { return () }) let mutable currentModel = x.FullModel.Current.GetValue() @@ -252,18 +234,6 @@ module RemoteApi = let emit (msg : ViewerAction) = emitTopLevel (ViewerAnimationAction.ViewerMessage msg) - - - - - - - - - - - - let setScene = ViewerAction.LoadSerializedScene sceneAsJson let setDrawing = ViewerAction.LoadSerializedDrawingModel drawingAsJson setScene |> emit diff --git a/src/PRo3D.Viewer/Scene.fs b/src/PRo3D.Viewer/Scene.fs index 84d5b4e0..c760077d 100644 --- a/src/PRo3D.Viewer/Scene.fs +++ b/src/PRo3D.Viewer/Scene.fs @@ -4,7 +4,7 @@ open System open System.IO open Aardvark.Base open FSharp.Data.Adaptive -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.UI.Primitives open Aardvark.Rendering diff --git a/src/PRo3D.Viewer/TraverseApp.fs b/src/PRo3D.Viewer/TraverseApp.fs index c1bfcef3..4b89aa9b 100644 --- a/src/PRo3D.Viewer/TraverseApp.fs +++ b/src/PRo3D.Viewer/TraverseApp.fs @@ -4,6 +4,7 @@ open System open System.IO open Aardvark.Base open Aardvark.UI +open Aardvark.UI.Primitives open Chiron open PRo3D.Base.Annotation.GeoJSON open PRo3D.Base diff --git a/src/PRo3D.Viewer/Viewer-Model.fs b/src/PRo3D.Viewer/Viewer-Model.fs index 2524d332..dccebc11 100644 --- a/src/PRo3D.Viewer/Viewer-Model.fs +++ b/src/PRo3D.Viewer/Viewer-Model.fs @@ -9,9 +9,9 @@ open Aardvark.UI.Primitives open Aardvark.Application open Aardvark.SceneGraph open Aardvark.UI.Trafos -open Aardvark.UI.Animation +open Aardvark.UI.Animation.Deprecated open Aardvark.Rendering -open Aardvark.UI.Anewmation +open Aardvark.UI.Animation open PRo3D open PRo3D.Base @@ -596,7 +596,7 @@ type Model = { screenshotDirectory : string [] - animator : Anewmation.Animator + animator : Animation.Animator provenanceModel : ProvenanceModel } diff --git a/src/PRo3D.Viewer/Viewer/SnapshotSg.fs b/src/PRo3D.Viewer/Viewer/SnapshotSg.fs index 633c7a23..6a9d0269 100644 --- a/src/PRo3D.Viewer/Viewer/SnapshotSg.fs +++ b/src/PRo3D.Viewer/Viewer/SnapshotSg.fs @@ -23,7 +23,7 @@ open Aardvark.UI.Trafos open Aardvark.UI.Animation open Aardvark.Application -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.SceneGraph.SgPrimitives.Sg open Aardvark.VRVis diff --git a/src/PRo3D.Viewer/Viewer/Viewer-Utils.fs b/src/PRo3D.Viewer/Viewer/Viewer-Utils.fs index f7d80975..afc0dc91 100644 --- a/src/PRo3D.Viewer/Viewer/Viewer-Utils.fs +++ b/src/PRo3D.Viewer/Viewer/Viewer-Utils.fs @@ -4,23 +4,14 @@ open System open System.IO open Aardvark.Base -open Aardvark.Base.Geometry open FSharp.Data.Adaptive open FSharp.Data.Adaptive.Operators open FShade -open Aardvark.Rendering.Effects open Aardvark.Rendering open Aardvark.SceneGraph open Aardvark.UI open Aardvark.UI.Primitives open Aardvark.UI.Trafos -open Aardvark.UI.Animation -open Aardvark.Rendering.Text - - -open Aardvark.SceneGraph.Opc -open Aardvark.SceneGraph.SgPrimitives.Sg -open Aardvark.GeoSpatial.Opc open OpcViewer.Base open PRo3D @@ -32,6 +23,7 @@ open PRo3D.Viewer open PRo3D.SimulatedViews open Adaptify.FSharp.Core +open Aardvark.GeoSpatial.Opc module ViewerUtils = type Self = Self diff --git a/src/PRo3D.Viewer/Viewer/Viewer.fs b/src/PRo3D.Viewer/Viewer/Viewer.fs index 371905e9..6fb3e179 100644 --- a/src/PRo3D.Viewer/Viewer/Viewer.fs +++ b/src/PRo3D.Viewer/Viewer/Viewer.fs @@ -23,7 +23,7 @@ open Aardvark.UI.Trafos open Aardvark.UI.Animation open Aardvark.Application -open Aardvark.SceneGraph.Opc +open Aardvark.Data.Opc open Aardvark.SceneGraph.SgPrimitives.Sg open Aardvark.VRVis @@ -50,6 +50,7 @@ open Aether open Aether.Operators open Chiron open PRo3D.Core.Surface +open Aardvark.UI.Animation.Deprecated type UserFeedback<'a> = { id : string @@ -454,7 +455,7 @@ module ViewerApp = (msg : ViewerAction) = //Log.line "[Viewer_update] %A inter:%A pick:%A" msg m.interaction m.picking match msg, m.interaction, m.ctrlFlag with - | NavigationMessage msg,_,false when (isGrabbed m |> not) && (not (AnimationApp.shouldAnimate m.animations)) -> + | NavigationMessage msg,_,false when (isGrabbed m |> not) && (not (AnimationApp.shouldAnimate m.animations)) -> let c = m.scene.config let ref = m.scene.referenceSystem let nav = Navigation.update c ref navConf true m.navigation msg @@ -663,7 +664,7 @@ module ViewerApp = m, scenePath let m = - Anewmation.Animator.update (Anewmation.AnimatorMessage.RealTimeTick) m + Animation.Animator.update (Animation.AnimatorMessage.RealTimeTick) m match msg with | SequencedBookmarksAction.StopRecording -> @@ -1419,15 +1420,26 @@ module ViewerApp = // | true -> // Log.line "[Viewer] No shattercone updates found." // m - | StartDragging _,_,_ - | Dragging _,_,_ - //| MouseOut _,_,_ - | EndDragging _,_,_ -> + | StartDragging _,_,_ -> + let m' = + match m.multiSelectBox with + | Some x -> { m with multiSelectBox = None } + | None -> m + m' + | Dragging _,_,_ -> + let m' = + match m.multiSelectBox with + | Some x -> { m with multiSelectBox = None } + | None -> m + m' + | EndDragging (mousePos, mouseButton) ,_,_ -> let m' = match m.multiSelectBox with | Some x -> { m with multiSelectBox = None } | None -> m - m' //{m' with navigation = {m'.navigation with camera = {m'.navigation.camera with pan = false }}} + let m' = + {m' with navigation = {m'.navigation with camera = {m'.navigation.camera with pan = false }}} + m' | MouseIn _,_,_ -> {m with navigation = {m.navigation with camera = {m.navigation.camera with pan = true }}} | MouseOut _,_,_ -> @@ -1719,7 +1731,7 @@ module ViewerApp = //| _ -> // () - Anewmation.Animator.update msg m + Animation.Animator.update msg m | ProvenanceMessage msg -> ProvenanceApp.update msg m @@ -1794,7 +1806,7 @@ module ViewerApp = )] |> AttributeMap.mapAttributes (AttributeValue.map ViewerMessage) //onResize (fun s -> OnResize(s,id)) AttributeMap.ofList [ - onEvent "onRendered" [] (fun _ -> AnewmationMessage Anewmation.AnimatorMessage.RealTimeTick) + onEvent "onRendered" [] (fun _ -> AnewmationMessage Animation.AnimatorMessage.RealTimeTick) ] ] @@ -2135,7 +2147,7 @@ module ViewerApp = unionMany [drawing; animation; nav; m.scene.feedbackThreads; sBookmarks] |> ThreadPool.map ViewerMessage |> ThreadPool.union ( - Anewmation.Animator.threads m.animator + Animation.Animator.threads m.animator |> ThreadPool.map AnewmationMessage) let loadWaypoints m = diff --git a/src/PRo3D.Viewer/Viewer/ViewerGUI.fs b/src/PRo3D.Viewer/Viewer/ViewerGUI.fs index 1af6739e..9339b04c 100644 --- a/src/PRo3D.Viewer/Viewer/ViewerGUI.fs +++ b/src/PRo3D.Viewer/Viewer/ViewerGUI.fs @@ -1,32 +1,17 @@ namespace PRo3D.Viewer -open Aardvark.Service open System -open System.Diagnostics open System.IO open System.Runtime.InteropServices open Aardvark.Base -open Aardvark.Base.Geometry -open Aardvark.Service open FSharp.Data.Adaptive -open FSharp.Data.Adaptive.Operators open Aardvark.Rendering -open Aardvark.SceneGraph open Aardvark.UI open Aardvark.UI.Operators open Aardvark.UI.Primitives -open Aardvark.Rendering.Text - -open Aardvark.SceneGraph.Opc -open Aardvark.SceneGraph.SgPrimitives.Sg -open Aardvark.VRVis - -open MBrace.FsPickler -open System.IO - open PRo3D open PRo3D.Base open PRo3D.Base.Annotation diff --git a/src/PRo3D.Viewer/Viewer/ViewerLenses.fs b/src/PRo3D.Viewer/Viewer/ViewerLenses.fs index cffa032c..6b7d96a5 100644 --- a/src/PRo3D.Viewer/Viewer/ViewerLenses.fs +++ b/src/PRo3D.Viewer/Viewer/ViewerLenses.fs @@ -20,6 +20,7 @@ open PRo3D.Viewer open Aether open Aether.Operators open PRo3D.Core.Gis +open Aardvark.UI.Animation.Deprecated module ViewerLenses = // surfaces diff --git a/src/PRo3D.Viewer/paket.references b/src/PRo3D.Viewer/paket.references index d84a81ef..5de7cedd 100644 --- a/src/PRo3D.Viewer/paket.references +++ b/src/PRo3D.Viewer/paket.references @@ -5,8 +5,8 @@ Aardvark.Base.FSharp Aardvark.Rendering Aardvark.Application.Slim.GL Aardvark.SceneGraph -Aardvark.SceneGraph.IO -Aardvark.SceneGraph.Opc +Aardvark.SceneGraph.Assimp +Aardvark.Data.Opc Aardvark.Rendering.Text Aardvark.Geometry Aardvark.Geometry.Intersection diff --git a/src/PRo3D.Viewer/resources/spectrum.css b/src/PRo3D.Viewer/resources/spectrum.css deleted file mode 100644 index a8ad9e4f..00000000 --- a/src/PRo3D.Viewer/resources/spectrum.css +++ /dev/null @@ -1,507 +0,0 @@ -/*** -Spectrum Colorpicker v1.8.0 -https://github.com/bgrins/spectrum -Author: Brian Grinstead -License: MIT -***/ - -.sp-container { - position:absolute; - top:0; - left:0; - display:inline-block; - *display: inline; - *zoom: 1; - /* https://github.com/bgrins/spectrum/issues/40 */ - z-index: 9999994; - overflow: hidden; -} -.sp-container.sp-flat { - position: relative; -} - -/* Fix for * { box-sizing: border-box; } */ -.sp-container, -.sp-container * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ -.sp-top { - position:relative; - width: 100%; - display:inline-block; -} -.sp-top-inner { - position:absolute; - top:0; - left:0; - bottom:0; - right:0; -} -.sp-color { - position: absolute; - top:0; - left:0; - bottom:0; - right:20%; -} -.sp-hue { - position: absolute; - top:0; - right:0; - bottom:0; - left:84%; - height: 100%; -} - -.sp-clear-enabled .sp-hue { - top:33px; - height: 77.5%; -} - -.sp-fill { - padding-top: 80%; -} -.sp-sat, .sp-val { - position: absolute; - top:0; - left:0; - right:0; - bottom:0; -} - -.sp-alpha-enabled .sp-top { - margin-bottom: 18px; -} -.sp-alpha-enabled .sp-alpha { - display: block; -} -.sp-alpha-handle { - position:absolute; - top:-4px; - bottom: -4px; - width: 6px; - left: 50%; - cursor: pointer; - border: 1px solid black; - background: white; - opacity: .8; -} -.sp-alpha { - display: none; - position: absolute; - bottom: -14px; - right: 0; - left: 0; - height: 8px; -} -.sp-alpha-inner { - border: solid 1px #333; -} - -.sp-clear { - display: none; -} - -.sp-clear.sp-clear-display { - background-position: center; -} - -.sp-clear-enabled .sp-clear { - display: block; - position:absolute; - top:0px; - right:0; - bottom:0; - left:84%; - height: 28px; -} - -/* Don't allow text selection */ -.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { - -webkit-user-select:none; - -moz-user-select: -moz-none; - -o-user-select:none; - user-select: none; -} - -.sp-container.sp-input-disabled .sp-input-container { - display: none; -} -.sp-container.sp-buttons-disabled .sp-button-container { - display: none; -} -.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { - display: none; -} -.sp-palette-only .sp-picker-container { - display: none; -} -.sp-palette-disabled .sp-palette-container { - display: none; -} - -.sp-initial-disabled .sp-initial { - display: none; -} - - -/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ -.sp-sat { - background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; - filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); -} -.sp-val { - background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; - filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); -} - -.sp-hue { - background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); - background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); -} - -/* IE filters do not support multiple color stops. - Generate 6 divs, line them up, and do two color gradients for each. - Yes, really. - */ -.sp-1 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); -} -.sp-2 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); -} -.sp-3 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); -} -.sp-4 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); -} -.sp-5 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); -} -.sp-6 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); -} - -.sp-hidden { - display: none !important; -} - -/* Clearfix hack */ -.sp-cf:before, .sp-cf:after { content: ""; display: table; } -.sp-cf:after { clear: both; } -.sp-cf { *zoom: 1; } - -/* Mobile devices, make hue slider bigger so it is easier to slide */ -@media (max-device-width: 480px) { - .sp-color { right: 40%; } - .sp-hue { left: 63%; } - .sp-fill { padding-top: 60%; } -} -.sp-dragger { - border-radius: 5px; - height: 5px; - width: 5px; - border: 1px solid #fff; - background: #000; - cursor: pointer; - position:absolute; - top:0; - left: 0; -} -.sp-slider { - position: absolute; - top:0; - cursor:pointer; - height: 3px; - left: -1px; - right: -1px; - border: 1px solid #000; - background: white; - opacity: .8; -} - -/* -Theme authors: -Here are the basic themeable display options (colors, fonts, global widths). -See http://bgrins.github.io/spectrum/themes/ for instructions. -*/ - -.sp-container { - border-radius: 0; - background-color: #ECECEC; - border: solid 1px #f0c49B; - padding: 0; -} -.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { - font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} -.sp-top { - margin-bottom: 3px; -} -.sp-color, .sp-hue, .sp-clear { - border: solid 1px #666; -} - -/* Input */ -.sp-input-container { - float:right; - width: 100px; - margin-bottom: 4px; -} -.sp-initial-disabled .sp-input-container { - width: 100%; -} -.sp-input { - font-size: 12px !important; - border: 1px inset; - padding: 4px 5px; - margin: 0; - width: 100%; - background:transparent; - border-radius: 3px; - color: #222; -} -.sp-input:focus { - border: 1px solid orange; -} -.sp-input.sp-validation-error { - border: 1px solid red; - background: #fdd; -} -.sp-picker-container , .sp-palette-container { - float:left; - position: relative; - padding: 10px; - padding-bottom: 300px; - margin-bottom: -290px; -} -.sp-picker-container { - width: 172px; - border-left: solid 1px #fff; -} - -/* Palettes */ -.sp-palette-container { - border-right: solid 1px #ccc; -} - -.sp-palette-only .sp-palette-container { - border: 0; -} - -.sp-palette .sp-thumb-el { - display: block; - position:relative; - float:left; - width: 24px; - height: 15px; - margin: 3px; - cursor: pointer; - border:solid 2px transparent; -} -.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { - border-color: orange; -} -.sp-thumb-el { - position:relative; -} - -/* Initial */ -.sp-initial { - float: left; - border: solid 1px #333; -} -.sp-initial span { - width: 30px; - height: 25px; - border:none; - display:block; - float:left; - margin:0; -} - -.sp-initial .sp-clear-display { - background-position: center; -} - -/* Buttons */ -.sp-palette-button-container, -.sp-button-container { - float: right; -} - -/* Replacer (the little preview div that shows up instead of the ) */ -.sp-replacer { - margin:0; - overflow:hidden; - cursor:pointer; - padding: 4px; - display:inline-block; - *zoom: 1; - *display: inline; - border: solid 1px #91765d; - background: #eee; - color: #333; - vertical-align: middle; -} -.sp-replacer:hover, .sp-replacer.sp-active { - border-color: #F0C49B; - color: #111; -} -.sp-replacer.sp-disabled { - cursor:default; - border-color: silver; - color: silver; -} -.sp-dd { - padding: 2px 0; - height: 16px; - line-height: 16px; - float:left; - font-size:10px; -} -.sp-preview { - position:relative; - width:25px; - height: 20px; - border: solid 1px #222; - margin-right: 5px; - float:left; - z-index: 0; -} - -.sp-palette { - *width: 220px; - max-width: 220px; -} -.sp-palette .sp-thumb-el { - width:16px; - height: 16px; - margin:2px 1px; - border: solid 1px #d0d0d0; -} - -.sp-container { - padding-bottom:0; -} - - -/* Buttons: http://hellohappy.org/css3-buttons/ */ -.sp-container button { - background-color: #eeeeee; - background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); - background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); - background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); - background-image: -o-linear-gradient(top, #eeeeee, #cccccc); - background-image: linear-gradient(to bottom, #eeeeee, #cccccc); - border: 1px solid #ccc; - border-bottom: 1px solid #bbb; - border-radius: 3px; - color: #333; - font-size: 14px; - line-height: 1; - padding: 5px 4px; - text-align: center; - text-shadow: 0 1px 0 #eee; - vertical-align: middle; -} -.sp-container button:hover { - background-color: #dddddd; - background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); - background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); - border: 1px solid #bbb; - border-bottom: 1px solid #999; - cursor: pointer; - text-shadow: 0 1px 0 #ddd; -} -.sp-container button:active { - border: 1px solid #aaa; - border-bottom: 1px solid #888; - -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -} -.sp-cancel { - font-size: 11px; - color: #d93f3f !important; - margin:0; - padding:2px; - margin-right: 5px; - vertical-align: middle; - text-decoration:none; - -} -.sp-cancel:hover { - color: #d93f3f !important; - text-decoration: underline; -} - - -.sp-palette span:hover, .sp-palette span.sp-thumb-active { - border-color: #000; -} - -.sp-preview, .sp-alpha, .sp-thumb-el { - position:relative; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); -} -.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { - display:block; - position:absolute; - top:0;left:0;bottom:0;right:0; -} - -.sp-palette .sp-thumb-inner { - background-position: 50% 50%; - background-repeat: no-repeat; -} - -.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); -} - -.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); -} - -.sp-clear-display { - background-repeat:no-repeat; - background-position: center; - background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); -} diff --git a/src/PRo3D.Viewer/resources/spectrum.js b/src/PRo3D.Viewer/resources/spectrum.js deleted file mode 100644 index 72009787..00000000 --- a/src/PRo3D.Viewer/resources/spectrum.js +++ /dev/null @@ -1,2323 +0,0 @@ -// Spectrum Colorpicker v1.8.0 -// https://github.com/bgrins/spectrum -// Author: Brian Grinstead -// License: MIT - -(function (factory) { - "use strict"; - - if (typeof define === 'function' && define.amd) { // AMD - define(['jquery'], factory); - } - else if (typeof exports == "object" && typeof module == "object") { // CommonJS - module.exports = factory(require('jquery')); - } - else { // Browser - factory(jQuery); - } -})(function($, undefined) { - "use strict"; - - var defaultOpts = { - - // Callbacks - beforeShow: noop, - move: noop, - change: noop, - show: noop, - hide: noop, - - // Options - color: false, - flat: false, - showInput: false, - allowEmpty: false, - showButtons: true, - clickoutFiresChange: true, - showInitial: false, - showPalette: false, - showPaletteOnly: false, - hideAfterPaletteSelect: false, - togglePaletteOnly: false, - showSelectionPalette: true, - localStorageKey: false, - appendTo: "body", - maxSelectionSize: 7, - cancelText: "cancel", - chooseText: "choose", - togglePaletteMoreText: "more", - togglePaletteLessText: "less", - clearText: "Clear Color Selection", - noColorSelectedText: "No Color Selected", - preferredFormat: false, - className: "", // Deprecated - use containerClassName and replacerClassName instead. - containerClassName: "", - replacerClassName: "", - showAlpha: false, - theme: "sp-light", - palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], - selectionPalette: [], - disabled: false, - offset: null - }, - spectrums = [], - IE = !!/msie/i.exec( window.navigator.userAgent ), - rgbaSupport = (function() { - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - var elem = document.createElement('div'); - var style = elem.style; - style.cssText = 'background-color:rgba(0,0,0,.5)'; - return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); - })(), - replaceInput = [ - "
", - "
", - "
", - "
" - ].join(''), - markup = (function () { - - // IE does not support gradients with multiple stops, so we need to simulate - // that for the rainbow slider with 8 divs that each have a single gradient - var gradientFix = ""; - if (IE) { - for (var i = 1; i <= 6; i++) { - gradientFix += "
"; - } - } - - return [ - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - gradientFix, - "
", - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "", - "", - "
", - "
", - "
" - ].join(""); - })(); - - function paletteTemplate (p, color, className, opts) { - var html = []; - for (var i = 0; i < p.length; i++) { - var current = p[i]; - if(current) { - var tiny = tinycolor(current); - var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; - c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; - var formattedString = tiny.toString(opts.preferredFormat || "rgb"); - var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); - html.push(''); - } else { - var cls = 'sp-clear-display'; - html.push($('
') - .append($('') - .attr('title', opts.noColorSelectedText) - ) - .html() - ); - } - } - return "
" + html.join('') + "
"; - } - - function hideAll() { - for (var i = 0; i < spectrums.length; i++) { - if (spectrums[i]) { - spectrums[i].hide(); - } - } - } - - function instanceOptions(o, callbackContext) { - var opts = $.extend({}, defaultOpts, o); - opts.callbacks = { - 'move': bind(opts.move, callbackContext), - 'change': bind(opts.change, callbackContext), - 'show': bind(opts.show, callbackContext), - 'hide': bind(opts.hide, callbackContext), - 'beforeShow': bind(opts.beforeShow, callbackContext) - }; - - return opts; - } - - function spectrum(element, o) { - - var opts = instanceOptions(o, element), - flat = opts.flat, - showSelectionPalette = opts.showSelectionPalette, - localStorageKey = opts.localStorageKey, - theme = opts.theme, - callbacks = opts.callbacks, - resize = throttle(reflow, 10), - visible = false, - isDragging = false, - dragWidth = 0, - dragHeight = 0, - dragHelperHeight = 0, - slideHeight = 0, - slideWidth = 0, - alphaWidth = 0, - alphaSlideHelperWidth = 0, - slideHelperHeight = 0, - currentHue = 0, - currentSaturation = 0, - currentValue = 0, - currentAlpha = 1, - palette = [], - paletteArray = [], - paletteLookup = {}, - selectionPalette = opts.selectionPalette.slice(0), - maxSelectionSize = opts.maxSelectionSize, - draggingClass = "sp-dragging", - shiftMovementDirection = null; - - var doc = element.ownerDocument, - body = doc.body, - boundElement = $(element), - disabled = false, - container = $(markup, doc).addClass(theme), - pickerContainer = container.find(".sp-picker-container"), - dragger = container.find(".sp-color"), - dragHelper = container.find(".sp-dragger"), - slider = container.find(".sp-hue"), - slideHelper = container.find(".sp-slider"), - alphaSliderInner = container.find(".sp-alpha-inner"), - alphaSlider = container.find(".sp-alpha"), - alphaSlideHelper = container.find(".sp-alpha-handle"), - textInput = container.find(".sp-input"), - paletteContainer = container.find(".sp-palette"), - initialColorContainer = container.find(".sp-initial"), - cancelButton = container.find(".sp-cancel"), - clearButton = container.find(".sp-clear"), - chooseButton = container.find(".sp-choose"), - toggleButton = container.find(".sp-palette-toggle"), - isInput = boundElement.is("input"), - isInputTypeColor = isInput && boundElement.attr("type") === "color" && inputTypeColorSupport(), - shouldReplace = isInput && !flat, - replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), - offsetElement = (shouldReplace) ? replacer : boundElement, - previewElement = replacer.find(".sp-preview-inner"), - initialColor = opts.color || (isInput && boundElement.val()), - colorOnShow = false, - currentPreferredFormat = opts.preferredFormat, - clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, - isEmpty = !initialColor, - allowEmpty = opts.allowEmpty && !isInputTypeColor; - - function applyOptions() { - - if (opts.showPaletteOnly) { - opts.showPalette = true; - } - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - - if (opts.palette) { - palette = opts.palette.slice(0); - paletteArray = $.isArray(palette[0]) ? palette : [palette]; - paletteLookup = {}; - for (var i = 0; i < paletteArray.length; i++) { - for (var j = 0; j < paletteArray[i].length; j++) { - var rgb = tinycolor(paletteArray[i][j]).toRgbString(); - paletteLookup[rgb] = true; - } - } - } - - container.toggleClass("sp-flat", flat); - container.toggleClass("sp-input-disabled", !opts.showInput); - container.toggleClass("sp-alpha-enabled", opts.showAlpha); - container.toggleClass("sp-clear-enabled", allowEmpty); - container.toggleClass("sp-buttons-disabled", !opts.showButtons); - container.toggleClass("sp-palette-buttons-disabled", !opts.togglePaletteOnly); - container.toggleClass("sp-palette-disabled", !opts.showPalette); - container.toggleClass("sp-palette-only", opts.showPaletteOnly); - container.toggleClass("sp-initial-disabled", !opts.showInitial); - container.addClass(opts.className).addClass(opts.containerClassName); - - reflow(); - } - - function initialize() { - - if (IE) { - container.find("*:not(input)").attr("unselectable", "on"); - } - - applyOptions(); - - if (shouldReplace) { - boundElement.after(replacer).hide(); - } - - if (!allowEmpty) { - clearButton.hide(); - } - - if (flat) { - boundElement.after(container).hide(); - } - else { - - var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); - if (appendTo.length !== 1) { - appendTo = $("body"); - } - - appendTo.append(container); - } - - updateSelectionPaletteFromStorage(); - - offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { - if (!disabled) { - toggle(); - } - - e.stopPropagation(); - - if (!$(e.target).is("input")) { - e.preventDefault(); - } - }); - - if(boundElement.is(":disabled") || (opts.disabled === true)) { - disable(); - } - - // Prevent clicks from bubbling up to document. This would cause it to be hidden. - container.click(stopPropagation); - - // Handle user typed input - textInput.change(setFromTextInput); - textInput.bind("paste", function () { - setTimeout(setFromTextInput, 1); - }); - textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); - - cancelButton.text(opts.cancelText); - cancelButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - revert(); - hide(); - }); - - clearButton.attr("title", opts.clearText); - clearButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - isEmpty = true; - move(); - - if(flat) { - //for the flat style, this is a change event - updateOriginalInput(true); - } - }); - - chooseButton.text(opts.chooseText); - chooseButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - if (IE && textInput.is(":focus")) { - textInput.trigger('change'); - } - - if (isValid()) { - updateOriginalInput(true); - hide(); - } - }); - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - toggleButton.bind("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - opts.showPaletteOnly = !opts.showPaletteOnly; - - // To make sure the Picker area is drawn on the right, next to the - // Palette area (and not below the palette), first move the Palette - // to the left to make space for the picker, plus 5px extra. - // The 'applyOptions' function puts the whole container back into place - // and takes care of the button-text and the sp-palette-only CSS class. - if (!opts.showPaletteOnly && !flat) { - container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5)); - } - applyOptions(); - }); - - draggable(alphaSlider, function (dragX, dragY, e) { - currentAlpha = (dragX / alphaWidth); - isEmpty = false; - if (e.shiftKey) { - currentAlpha = Math.round(currentAlpha * 10) / 10; - } - - move(); - }, dragStart, dragStop); - - draggable(slider, function (dragX, dragY) { - currentHue = parseFloat(dragY / slideHeight); - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - move(); - }, dragStart, dragStop); - - draggable(dragger, function (dragX, dragY, e) { - - // shift+drag should snap the movement to either the x or y axis. - if (!e.shiftKey) { - shiftMovementDirection = null; - } - else if (!shiftMovementDirection) { - var oldDragX = currentSaturation * dragWidth; - var oldDragY = dragHeight - (currentValue * dragHeight); - var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); - - shiftMovementDirection = furtherFromX ? "x" : "y"; - } - - var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; - var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; - - if (setSaturation) { - currentSaturation = parseFloat(dragX / dragWidth); - } - if (setValue) { - currentValue = parseFloat((dragHeight - dragY) / dragHeight); - } - - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - - move(); - - }, dragStart, dragStop); - - if (!!initialColor) { - set(initialColor); - - // In case color was black - update the preview UI and set the format - // since the set function will not run (default color is black). - updateUI(); - currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).format; - - addColorToSelectionPalette(initialColor); - } - else { - updateUI(); - } - - if (flat) { - show(); - } - - function paletteElementClick(e) { - if (e.data && e.data.ignore) { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - } - else { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - updateOriginalInput(true); - if (opts.hideAfterPaletteSelect) { - hide(); - } - } - - return false; - } - - var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; - paletteContainer.delegate(".sp-thumb-el", paletteEvent, paletteElementClick); - initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, paletteElementClick); - } - - function updateSelectionPaletteFromStorage() { - - if (localStorageKey && window.localStorage) { - - // Migrate old palettes over to new format. May want to remove this eventually. - try { - var oldPalette = window.localStorage[localStorageKey].split(",#"); - if (oldPalette.length > 1) { - delete window.localStorage[localStorageKey]; - $.each(oldPalette, function(i, c) { - addColorToSelectionPalette(c); - }); - } - } - catch(e) { } - - try { - selectionPalette = window.localStorage[localStorageKey].split(";"); - } - catch (e) { } - } - } - - function addColorToSelectionPalette(color) { - if (showSelectionPalette) { - var rgb = tinycolor(color).toRgbString(); - if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { - selectionPalette.push(rgb); - while(selectionPalette.length > maxSelectionSize) { - selectionPalette.shift(); - } - } - - if (localStorageKey && window.localStorage) { - try { - window.localStorage[localStorageKey] = selectionPalette.join(";"); - } - catch(e) { } - } - } - } - - function getUniqueSelectionPalette() { - var unique = []; - if (opts.showPalette) { - for (var i = 0; i < selectionPalette.length; i++) { - var rgb = tinycolor(selectionPalette[i]).toRgbString(); - - if (!paletteLookup[rgb]) { - unique.push(selectionPalette[i]); - } - } - } - - return unique.reverse().slice(0, opts.maxSelectionSize); - } - - function drawPalette() { - - var currentColor = get(); - - var html = $.map(paletteArray, function (palette, i) { - return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts); - }); - - updateSelectionPaletteFromStorage(); - - if (selectionPalette) { - html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts)); - } - - paletteContainer.html(html.join("")); - } - - function drawInitial() { - if (opts.showInitial) { - var initial = colorOnShow; - var current = get(); - initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts)); - } - } - - function dragStart() { - if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { - reflow(); - } - isDragging = true; - container.addClass(draggingClass); - shiftMovementDirection = null; - boundElement.trigger('dragstart.spectrum', [ get() ]); - } - - function dragStop() { - isDragging = false; - container.removeClass(draggingClass); - boundElement.trigger('dragstop.spectrum', [ get() ]); - } - - function setFromTextInput() { - - var value = textInput.val(); - - if ((value === null || value === "") && allowEmpty) { - set(null); - updateOriginalInput(true); - } - else { - var tiny = tinycolor(value); - if (tiny.isValid()) { - set(tiny); - updateOriginalInput(true); - } - else { - textInput.addClass("sp-validation-error"); - } - } - } - - function toggle() { - if (visible) { - hide(); - } - else { - show(); - } - } - - function show() { - var event = $.Event('beforeShow.spectrum'); - - if (visible) { - reflow(); - return; - } - - boundElement.trigger(event, [ get() ]); - - if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { - return; - } - - hideAll(); - visible = true; - - $(doc).bind("keydown.spectrum", onkeydown); - $(doc).bind("click.spectrum", clickout); - $(window).bind("resize.spectrum", resize); - replacer.addClass("sp-active"); - container.removeClass("sp-hidden"); - - reflow(); - updateUI(); - - colorOnShow = get(); - - drawInitial(); - callbacks.show(colorOnShow); - boundElement.trigger('show.spectrum', [ colorOnShow ]); - } - - function onkeydown(e) { - // Close on ESC - if (e.keyCode === 27) { - hide(); - } - } - - function clickout(e) { - // Return on right click. - if (e.button == 2) { return; } - - // If a drag event was happening during the mouseup, don't hide - // on click. - if (isDragging) { return; } - - if (clickoutFiresChange) { - updateOriginalInput(true); - } - else { - revert(); - } - hide(); - } - - function hide() { - // Return if hiding is unnecessary - if (!visible || flat) { return; } - visible = false; - - $(doc).unbind("keydown.spectrum", onkeydown); - $(doc).unbind("click.spectrum", clickout); - $(window).unbind("resize.spectrum", resize); - - replacer.removeClass("sp-active"); - container.addClass("sp-hidden"); - - callbacks.hide(get()); - boundElement.trigger('hide.spectrum', [ get() ]); - } - - function revert() { - set(colorOnShow, true); - } - - function set(color, ignoreFormatChange) { - if (tinycolor.equals(color, get())) { - // Update UI just in case a validation error needs - // to be cleared. - updateUI(); - return; - } - - var newColor, newHsv; - if (!color && allowEmpty) { - isEmpty = true; - } else { - isEmpty = false; - newColor = tinycolor(color); - newHsv = newColor.toHsv(); - - currentHue = (newHsv.h % 360) / 360; - currentSaturation = newHsv.s; - currentValue = newHsv.v; - currentAlpha = newHsv.a; - } - updateUI(); - - if (newColor && newColor.isValid() && !ignoreFormatChange) { - currentPreferredFormat = opts.preferredFormat || newColor.getFormat(); - } - } - - function get(opts) { - opts = opts || { }; - - if (allowEmpty && isEmpty) { - return null; - } - - return tinycolor.fromRatio({ - h: currentHue, - s: currentSaturation, - v: currentValue, - a: Math.round(currentAlpha * 100) / 100 - }, { format: opts.format || currentPreferredFormat }); - } - - function isValid() { - return !textInput.hasClass("sp-validation-error"); - } - - function move() { - updateUI(); - - callbacks.move(get()); - boundElement.trigger('move.spectrum', [ get() ]); - } - - function updateUI() { - - textInput.removeClass("sp-validation-error"); - - updateHelperLocations(); - - // Update dragger background color (gradients take care of saturation and value). - var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); - dragger.css("background-color", flatColor.toHexString()); - - // Get a format that alpha will be included in (hex and names ignore alpha) - var format = currentPreferredFormat; - if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { - if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { - format = "rgb"; - } - } - - var realColor = get({ format: format }), - displayColor = ''; - - //reset background info for preview element - previewElement.removeClass("sp-clear-display"); - previewElement.css('background-color', 'transparent'); - - if (!realColor && allowEmpty) { - // Update the replaced elements background with icon indicating no color selection - previewElement.addClass("sp-clear-display"); - } - else { - var realHex = realColor.toHexString(), - realRgb = realColor.toRgbString(); - - // Update the replaced elements background color (with actual selected color) - if (rgbaSupport || realColor.alpha === 1) { - previewElement.css("background-color", realRgb); - } - else { - previewElement.css("background-color", "transparent"); - previewElement.css("filter", realColor.toFilter()); - } - - if (opts.showAlpha) { - var rgb = realColor.toRgb(); - rgb.a = 0; - var realAlpha = tinycolor(rgb).toRgbString(); - var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; - - if (IE) { - alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); - } - else { - alphaSliderInner.css("background", "-webkit-" + gradient); - alphaSliderInner.css("background", "-moz-" + gradient); - alphaSliderInner.css("background", "-ms-" + gradient); - // Use current syntax gradient on unprefixed property. - alphaSliderInner.css("background", - "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); - } - } - - displayColor = realColor.toString(format); - } - - // Update the text entry input as it changes happen - if (opts.showInput) { - textInput.val(displayColor); - } - - if (opts.showPalette) { - drawPalette(); - } - - drawInitial(); - } - - function updateHelperLocations() { - var s = currentSaturation; - var v = currentValue; - - if(allowEmpty && isEmpty) { - //if selected color is empty, hide the helpers - alphaSlideHelper.hide(); - slideHelper.hide(); - dragHelper.hide(); - } - else { - //make sure helpers are visible - alphaSlideHelper.show(); - slideHelper.show(); - dragHelper.show(); - - // Where to show the little circle in that displays your current selected color - var dragX = s * dragWidth; - var dragY = dragHeight - (v * dragHeight); - dragX = Math.max( - -dragHelperHeight, - Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) - ); - dragY = Math.max( - -dragHelperHeight, - Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) - ); - dragHelper.css({ - "top": dragY + "px", - "left": dragX + "px" - }); - - var alphaX = currentAlpha * alphaWidth; - alphaSlideHelper.css({ - "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" - }); - - // Where to show the bar that displays your current selected hue - var slideY = (currentHue) * slideHeight; - slideHelper.css({ - "top": (slideY - slideHelperHeight) + "px" - }); - } - } - - function updateOriginalInput(fireCallback) { - var color = get(), - displayColor = '', - hasChanged = !tinycolor.equals(color, colorOnShow); - - if (color) { - displayColor = color.toString(currentPreferredFormat); - // Update the selection palette with the current color - addColorToSelectionPalette(color); - } - - if (isInput) { - boundElement.val(displayColor); - } - - if (fireCallback && hasChanged) { - callbacks.change(color); - boundElement.trigger('change', [ color ]); - } - } - - function reflow() { - if (!visible) { - return; // Calculations would be useless and wouldn't be reliable anyways - } - dragWidth = dragger.width(); - dragHeight = dragger.height(); - dragHelperHeight = dragHelper.height(); - slideWidth = slider.width(); - slideHeight = slider.height(); - slideHelperHeight = slideHelper.height(); - alphaWidth = alphaSlider.width(); - alphaSlideHelperWidth = alphaSlideHelper.width(); - - if (!flat) { - container.css("position", "absolute"); - if (opts.offset) { - container.offset(opts.offset); - } else { - container.offset(getOffset(container, offsetElement)); - } - } - - updateHelperLocations(); - - if (opts.showPalette) { - drawPalette(); - } - - boundElement.trigger('reflow.spectrum'); - } - - function destroy() { - boundElement.show(); - offsetElement.unbind("click.spectrum touchstart.spectrum"); - container.remove(); - replacer.remove(); - spectrums[spect.id] = null; - } - - function option(optionName, optionValue) { - if (optionName === undefined) { - return $.extend({}, opts); - } - if (optionValue === undefined) { - return opts[optionName]; - } - - opts[optionName] = optionValue; - - if (optionName === "preferredFormat") { - currentPreferredFormat = opts.preferredFormat; - } - applyOptions(); - } - - function enable() { - disabled = false; - boundElement.attr("disabled", false); - offsetElement.removeClass("sp-disabled"); - } - - function disable() { - hide(); - disabled = true; - boundElement.attr("disabled", true); - offsetElement.addClass("sp-disabled"); - } - - function setOffset(coord) { - opts.offset = coord; - reflow(); - } - - initialize(); - - var spect = { - show: show, - hide: hide, - toggle: toggle, - reflow: reflow, - option: option, - enable: enable, - disable: disable, - offset: setOffset, - set: function (c) { - set(c); - updateOriginalInput(); - }, - get: get, - destroy: destroy, - container: container - }; - - spect.id = spectrums.push(spect) - 1; - - return spect; - } - - /** - * checkOffset - get the offset below/above and left/right element depending on screen position - * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js - */ - function getOffset(picker, input) { - var extraY = 0; - var dpWidth = picker.outerWidth(); - var dpHeight = picker.outerHeight(); - var inputHeight = input.outerHeight(); - var doc = picker[0].ownerDocument; - var docElem = doc.documentElement; - var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); - var viewHeight = docElem.clientHeight + $(doc).scrollTop(); - var offset = input.offset(); - offset.top += inputHeight; - - offset.left -= - Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? - Math.abs(offset.left + dpWidth - viewWidth) : 0); - - offset.top -= - Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? - Math.abs(dpHeight + inputHeight - extraY) : extraY)); - - return offset; - } - - /** - * noop - do nothing - */ - function noop() { - - } - - /** - * stopPropagation - makes the code only doing this a little easier to read in line - */ - function stopPropagation(e) { - e.stopPropagation(); - } - - /** - * Create a function bound to a given object - * Thanks to underscore.js - */ - function bind(func, obj) { - var slice = Array.prototype.slice; - var args = slice.call(arguments, 2); - return function () { - return func.apply(obj, args.concat(slice.call(arguments))); - }; - } - - /** - * Lightweight drag helper. Handles containment within the element, so that - * when dragging, the x is within [0,element.width] and y is within [0,element.height] - */ - function draggable(element, onmove, onstart, onstop) { - onmove = onmove || function () { }; - onstart = onstart || function () { }; - onstop = onstop || function () { }; - var doc = document; - var dragging = false; - var offset = {}; - var maxHeight = 0; - var maxWidth = 0; - var hasTouch = ('ontouchstart' in window); - - var duringDragEvents = {}; - duringDragEvents["selectstart"] = prevent; - duringDragEvents["dragstart"] = prevent; - duringDragEvents["touchmove mousemove"] = move; - duringDragEvents["touchend mouseup"] = stop; - - function prevent(e) { - if (e.stopPropagation) { - e.stopPropagation(); - } - if (e.preventDefault) { - e.preventDefault(); - } - e.returnValue = false; - } - - function move(e) { - if (dragging) { - // Mouseup happened outside of window - if (IE && doc.documentMode < 9 && !e.button) { - return stop(); - } - - var t0 = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]; - var pageX = t0 && t0.pageX || e.pageX; - var pageY = t0 && t0.pageY || e.pageY; - - var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); - var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); - - if (hasTouch) { - // Stop scrolling in iOS - prevent(e); - } - - onmove.apply(element, [dragX, dragY, e]); - } - } - - function start(e) { - var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); - - if (!rightclick && !dragging) { - if (onstart.apply(element, arguments) !== false) { - dragging = true; - maxHeight = $(element).height(); - maxWidth = $(element).width(); - offset = $(element).offset(); - - $(doc).bind(duringDragEvents); - $(doc.body).addClass("sp-dragging"); - - move(e); - - prevent(e); - } - } - } - - function stop() { - if (dragging) { - $(doc).unbind(duringDragEvents); - $(doc.body).removeClass("sp-dragging"); - - // Wait a tick before notifying observers to allow the click event - // to fire in Chrome. - setTimeout(function() { - onstop.apply(element, arguments); - }, 0); - } - dragging = false; - } - - $(element).bind("touchstart mousedown", start); - } - - function throttle(func, wait, debounce) { - var timeout; - return function () { - var context = this, args = arguments; - var throttler = function () { - timeout = null; - func.apply(context, args); - }; - if (debounce) clearTimeout(timeout); - if (debounce || !timeout) timeout = setTimeout(throttler, wait); - }; - } - - function inputTypeColorSupport() { - return $.fn.spectrum.inputTypeColorSupport(); - } - - /** - * Define a jQuery plugin - */ - var dataID = "spectrum.id"; - $.fn.spectrum = function (opts, extra) { - - if (typeof opts == "string") { - - var returnValue = this; - var args = Array.prototype.slice.call( arguments, 1 ); - - this.each(function () { - var spect = spectrums[$(this).data(dataID)]; - if (spect) { - var method = spect[opts]; - if (!method) { - throw new Error( "Spectrum: no such method: '" + opts + "'" ); - } - - if (opts == "get") { - returnValue = spect.get(); - } - else if (opts == "container") { - returnValue = spect.container; - } - else if (opts == "option") { - returnValue = spect.option.apply(spect, args); - } - else if (opts == "destroy") { - spect.destroy(); - $(this).removeData(dataID); - } - else { - method.apply(spect, args); - } - } - }); - - return returnValue; - } - - // Initializing a new instance of spectrum - return this.spectrum("destroy").each(function () { - var options = $.extend({}, opts, $(this).data()); - var spect = spectrum(this, options); - $(this).data(dataID, spect.id); - }); - }; - - $.fn.spectrum.load = true; - $.fn.spectrum.loadOpts = {}; - $.fn.spectrum.draggable = draggable; - $.fn.spectrum.defaults = defaultOpts; - $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() { - if (typeof inputTypeColorSupport._cachedResult === "undefined") { - var colorInput = $("")[0]; // if color element is supported, value will default to not null - inputTypeColorSupport._cachedResult = colorInput.type === "color" && colorInput.value !== ""; - } - return inputTypeColorSupport._cachedResult; - }; - - $.spectrum = { }; - $.spectrum.localization = { }; - $.spectrum.palettes = { }; - - $.fn.spectrum.processNativeColorInputs = function () { - var colorInputs = $("input[type=color]"); - if (colorInputs.length && !inputTypeColorSupport()) { - colorInputs.spectrum({ - preferredFormat: "hex6" - }); - } - }; - - // TinyColor v1.1.2 - // https://github.com/bgrins/TinyColor - // Brian Grinstead, MIT License - - (function() { - - var trimLeft = /^[\s,#]+/, - trimRight = /\s+$/, - tinyCounter = 0, - math = Math, - mathRound = math.round, - mathMin = math.min, - mathMax = math.max, - mathRandom = math.random; - - var tinycolor = function(color, opts) { - - color = (color) ? color : ''; - opts = opts || { }; - - // If input is already a tinycolor, return itself - if (color instanceof tinycolor) { - return color; - } - // If we are called as a function, call using new instead - if (!(this instanceof tinycolor)) { - return new tinycolor(color, opts); - } - - var rgb = inputToRGB(color); - this._originalInput = color, - this._r = rgb.r, - this._g = rgb.g, - this._b = rgb.b, - this._a = rgb.a, - this._roundA = mathRound(100*this._a) / 100, - this._format = opts.format || rgb.format; - this._gradientType = opts.gradientType; - - // Don't let the range of [0,255] come back in [0,1]. - // Potentially lose a little bit of precision here, but will fix issues where - // .5 gets interpreted as half of the total, instead of half of 1 - // If it was supposed to be 128, this was already taken care of by `inputToRgb` - if (this._r < 1) { this._r = mathRound(this._r); } - if (this._g < 1) { this._g = mathRound(this._g); } - if (this._b < 1) { this._b = mathRound(this._b); } - - this._ok = rgb.ok; - this._tc_id = tinyCounter++; - }; - - tinycolor.prototype = { - isDark: function() { - return this.getBrightness() < 128; - }, - isLight: function() { - return !this.isDark(); - }, - isValid: function() { - return this._ok; - }, - getOriginalInput: function() { - return this._originalInput; - }, - getFormat: function() { - return this._format; - }, - getAlpha: function() { - return this._a; - }, - getBrightness: function() { - var rgb = this.toRgb(); - return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; - }, - setAlpha: function(value) { - this._a = boundAlpha(value); - this._roundA = mathRound(100*this._a) / 100; - return this; - }, - toHsv: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; - }, - toHsvString: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); - return (this._a == 1) ? - "hsv(" + h + ", " + s + "%, " + v + "%)" : - "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; - }, - toHsl: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; - }, - toHslString: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); - return (this._a == 1) ? - "hsl(" + h + ", " + s + "%, " + l + "%)" : - "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; - }, - toHex: function(allow3Char) { - return rgbToHex(this._r, this._g, this._b, allow3Char); - }, - toHexString: function(allow3Char) { - return '#' + this.toHex(allow3Char); - }, - toHex8: function() { - return rgbaToHex(this._r, this._g, this._b, this._a); - }, - toHex8String: function() { - return '#' + this.toHex8(); - }, - toRgb: function() { - return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; - }, - toRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : - "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; - }, - toPercentageRgb: function() { - return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; - }, - toPercentageRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : - "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; - }, - toName: function() { - if (this._a === 0) { - return "transparent"; - } - - if (this._a < 1) { - return false; - } - - return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; - }, - toFilter: function(secondColor) { - var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a); - var secondHex8String = hex8String; - var gradientType = this._gradientType ? "GradientType = 1, " : ""; - - if (secondColor) { - var s = tinycolor(secondColor); - secondHex8String = s.toHex8String(); - } - - return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; - }, - toString: function(format) { - var formatSet = !!format; - format = format || this._format; - - var formattedString = false; - var hasAlpha = this._a < 1 && this._a >= 0; - var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); - - if (needsAlphaFormat) { - // Special case for "transparent", all other non-alpha formats - // will return rgba when there is transparency. - if (format === "name" && this._a === 0) { - return this.toName(); - } - return this.toRgbString(); - } - if (format === "rgb") { - formattedString = this.toRgbString(); - } - if (format === "prgb") { - formattedString = this.toPercentageRgbString(); - } - if (format === "hex" || format === "hex6") { - formattedString = this.toHexString(); - } - if (format === "hex3") { - formattedString = this.toHexString(true); - } - if (format === "hex8") { - formattedString = this.toHex8String(); - } - if (format === "name") { - formattedString = this.toName(); - } - if (format === "hsl") { - formattedString = this.toHslString(); - } - if (format === "hsv") { - formattedString = this.toHsvString(); - } - - return formattedString || this.toHexString(); - }, - - _applyModification: function(fn, args) { - var color = fn.apply(null, [this].concat([].slice.call(args))); - this._r = color._r; - this._g = color._g; - this._b = color._b; - this.setAlpha(color._a); - return this; - }, - lighten: function() { - return this._applyModification(lighten, arguments); - }, - brighten: function() { - return this._applyModification(brighten, arguments); - }, - darken: function() { - return this._applyModification(darken, arguments); - }, - desaturate: function() { - return this._applyModification(desaturate, arguments); - }, - saturate: function() { - return this._applyModification(saturate, arguments); - }, - greyscale: function() { - return this._applyModification(greyscale, arguments); - }, - spin: function() { - return this._applyModification(spin, arguments); - }, - - _applyCombination: function(fn, args) { - return fn.apply(null, [this].concat([].slice.call(args))); - }, - analogous: function() { - return this._applyCombination(analogous, arguments); - }, - complement: function() { - return this._applyCombination(complement, arguments); - }, - monochromatic: function() { - return this._applyCombination(monochromatic, arguments); - }, - splitcomplement: function() { - return this._applyCombination(splitcomplement, arguments); - }, - triad: function() { - return this._applyCombination(triad, arguments); - }, - tetrad: function() { - return this._applyCombination(tetrad, arguments); - } - }; - - // If input is an object, force 1 into "1.0" to handle ratios properly - // String input requires "1.0" as input, so 1 will be treated as 1 - tinycolor.fromRatio = function(color, opts) { - if (typeof color == "object") { - var newColor = {}; - for (var i in color) { - if (color.hasOwnProperty(i)) { - if (i === "a") { - newColor[i] = color[i]; - } - else { - newColor[i] = convertToPercentage(color[i]); - } - } - } - color = newColor; - } - - return tinycolor(color, opts); - }; - - // Given a string or object, convert that input to RGB - // Possible string inputs: - // - // "red" - // "#f00" or "f00" - // "#ff0000" or "ff0000" - // "#ff000000" or "ff000000" - // "rgb 255 0 0" or "rgb (255, 0, 0)" - // "rgb 1.0 0 0" or "rgb (1, 0, 0)" - // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" - // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" - // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" - // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" - // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" - // - function inputToRGB(color) { - - var rgb = { r: 0, g: 0, b: 0 }; - var a = 1; - var ok = false; - var format = false; - - if (typeof color == "string") { - color = stringInputToObject(color); - } - - if (typeof color == "object") { - if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { - rgb = rgbToRgb(color.r, color.g, color.b); - ok = true; - format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { - color.s = convertToPercentage(color.s); - color.v = convertToPercentage(color.v); - rgb = hsvToRgb(color.h, color.s, color.v); - ok = true; - format = "hsv"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { - color.s = convertToPercentage(color.s); - color.l = convertToPercentage(color.l); - rgb = hslToRgb(color.h, color.s, color.l); - ok = true; - format = "hsl"; - } - - if (color.hasOwnProperty("a")) { - a = color.a; - } - } - - a = boundAlpha(a); - - return { - ok: ok, - format: color.format || format, - r: mathMin(255, mathMax(rgb.r, 0)), - g: mathMin(255, mathMax(rgb.g, 0)), - b: mathMin(255, mathMax(rgb.b, 0)), - a: a - }; - } - - - // Conversion Functions - // -------------------- - - // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: - // - - // `rgbToRgb` - // Handle bounds / percentage checking to conform to CSS color spec - // - // *Assumes:* r, g, b in [0, 255] or [0, 1] - // *Returns:* { r, g, b } in [0, 255] - function rgbToRgb(r, g, b){ - return { - r: bound01(r, 255) * 255, - g: bound01(g, 255) * 255, - b: bound01(b, 255) * 255 - }; - } - - // `rgbToHsl` - // Converts an RGB color value to HSL. - // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] - // *Returns:* { h, s, l } in [0,1] - function rgbToHsl(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, l = (max + min) / 2; - - if(max == min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - - h /= 6; - } - - return { h: h, s: s, l: l }; - } - - // `hslToRgb` - // Converts an HSL color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hslToRgb(h, s, l) { - var r, g, b; - - h = bound01(h, 360); - s = bound01(s, 100); - l = bound01(l, 100); - - function hue2rgb(p, q, t) { - if(t < 0) t += 1; - if(t > 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - } - - if(s === 0) { - r = g = b = l; // achromatic - } - else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHsv` - // Converts an RGB color value to HSV - // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] - // *Returns:* { h, s, v } in [0,1] - function rgbToHsv(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, v = max; - - var d = max - min; - s = max === 0 ? 0 : d / max; - - if(max == min) { - h = 0; // achromatic - } - else { - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - return { h: h, s: s, v: v }; - } - - // `hsvToRgb` - // Converts an HSV color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hsvToRgb(h, s, v) { - - h = bound01(h, 360) * 6; - s = bound01(s, 100); - v = bound01(v, 100); - - var i = math.floor(h), - f = h - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s), - mod = i % 6, - r = [v, q, p, p, t, v][mod], - g = [t, v, v, q, p, p][mod], - b = [p, p, t, v, v, q][mod]; - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHex` - // Converts an RGB color to hex - // Assumes r, g, and b are contained in the set [0, 255] - // Returns a 3 or 6 character hex - function rgbToHex(r, g, b, allow3Char) { - - var hex = [ - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - // Return a 3 character hex if possible - if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { - return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); - } - - return hex.join(""); - } - // `rgbaToHex` - // Converts an RGBA color plus alpha transparency to hex - // Assumes r, g, b and a are contained in the set [0, 255] - // Returns an 8 character hex - function rgbaToHex(r, g, b, a) { - - var hex = [ - pad2(convertDecimalToHex(a)), - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - return hex.join(""); - } - - // `equals` - // Can be called with any tinycolor input - tinycolor.equals = function (color1, color2) { - if (!color1 || !color2) { return false; } - return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); - }; - tinycolor.random = function() { - return tinycolor.fromRatio({ - r: mathRandom(), - g: mathRandom(), - b: mathRandom() - }); - }; - - - // Modification Functions - // ---------------------- - // Thanks to less.js for some of the basics here - // - - function desaturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s -= amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function saturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s += amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function greyscale(color) { - return tinycolor(color).desaturate(100); - } - - function lighten (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l += amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - function brighten(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var rgb = tinycolor(color).toRgb(); - rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); - rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); - rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); - return tinycolor(rgb); - } - - function darken (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l -= amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. - // Values outside of this range will be wrapped into this range. - function spin(color, amount) { - var hsl = tinycolor(color).toHsl(); - var hue = (mathRound(hsl.h) + amount) % 360; - hsl.h = hue < 0 ? 360 + hue : hue; - return tinycolor(hsl); - } - - // Combination Functions - // --------------------- - // Thanks to jQuery xColor for some of the ideas behind these - // - - function complement(color) { - var hsl = tinycolor(color).toHsl(); - hsl.h = (hsl.h + 180) % 360; - return tinycolor(hsl); - } - - function triad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function tetrad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function splitcomplement(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), - tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) - ]; - } - - function analogous(color, results, slices) { - results = results || 6; - slices = slices || 30; - - var hsl = tinycolor(color).toHsl(); - var part = 360 / slices; - var ret = [tinycolor(color)]; - - for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { - hsl.h = (hsl.h + part) % 360; - ret.push(tinycolor(hsl)); - } - return ret; - } - - function monochromatic(color, results) { - results = results || 6; - var hsv = tinycolor(color).toHsv(); - var h = hsv.h, s = hsv.s, v = hsv.v; - var ret = []; - var modification = 1 / results; - - while (results--) { - ret.push(tinycolor({ h: h, s: s, v: v})); - v = (v + modification) % 1; - } - - return ret; - } - - // Utility Functions - // --------------------- - - tinycolor.mix = function(color1, color2, amount) { - amount = (amount === 0) ? 0 : (amount || 50); - - var rgb1 = tinycolor(color1).toRgb(); - var rgb2 = tinycolor(color2).toRgb(); - - var p = amount / 100; - var w = p * 2 - 1; - var a = rgb2.a - rgb1.a; - - var w1; - - if (w * a == -1) { - w1 = w; - } else { - w1 = (w + a) / (1 + w * a); - } - - w1 = (w1 + 1) / 2; - - var w2 = 1 - w1; - - var rgba = { - r: rgb2.r * w1 + rgb1.r * w2, - g: rgb2.g * w1 + rgb1.g * w2, - b: rgb2.b * w1 + rgb1.b * w2, - a: rgb2.a * p + rgb1.a * (1 - p) - }; - - return tinycolor(rgba); - }; - - - // Readability Functions - // --------------------- - // - - // `readability` - // Analyze the 2 colors and returns an object with the following properties: - // `brightness`: difference in brightness between the two colors - // `color`: difference in color/hue between the two colors - tinycolor.readability = function(color1, color2) { - var c1 = tinycolor(color1); - var c2 = tinycolor(color2); - var rgb1 = c1.toRgb(); - var rgb2 = c2.toRgb(); - var brightnessA = c1.getBrightness(); - var brightnessB = c2.getBrightness(); - var colorDiff = ( - Math.max(rgb1.r, rgb2.r) - Math.min(rgb1.r, rgb2.r) + - Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) + - Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b) - ); - - return { - brightness: Math.abs(brightnessA - brightnessB), - color: colorDiff - }; - }; - - // `readable` - // http://www.w3.org/TR/AERT#color-contrast - // Ensure that foreground and background color combinations provide sufficient contrast. - // *Example* - // tinycolor.isReadable("#000", "#111") => false - tinycolor.isReadable = function(color1, color2) { - var readability = tinycolor.readability(color1, color2); - return readability.brightness > 125 && readability.color > 500; - }; - - // `mostReadable` - // Given a base color and a list of possible foreground or background - // colors for that base, returns the most readable color. - // *Example* - // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" - tinycolor.mostReadable = function(baseColor, colorList) { - var bestColor = null; - var bestScore = 0; - var bestIsReadable = false; - for (var i=0; i < colorList.length; i++) { - - // We normalize both around the "acceptable" breaking point, - // but rank brightness constrast higher than hue. - - var readability = tinycolor.readability(baseColor, colorList[i]); - var readable = readability.brightness > 125 && readability.color > 500; - var score = 3 * (readability.brightness / 125) + (readability.color / 500); - - if ((readable && ! bestIsReadable) || - (readable && bestIsReadable && score > bestScore) || - ((! readable) && (! bestIsReadable) && score > bestScore)) { - bestIsReadable = readable; - bestScore = score; - bestColor = tinycolor(colorList[i]); - } - } - return bestColor; - }; - - - // Big List of Colors - // ------------------ - // - var names = tinycolor.names = { - aliceblue: "f0f8ff", - antiquewhite: "faebd7", - aqua: "0ff", - aquamarine: "7fffd4", - azure: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "000", - blanchedalmond: "ffebcd", - blue: "00f", - blueviolet: "8a2be2", - brown: "a52a2a", - burlywood: "deb887", - burntsienna: "ea7e5d", - cadetblue: "5f9ea0", - chartreuse: "7fff00", - chocolate: "d2691e", - coral: "ff7f50", - cornflowerblue: "6495ed", - cornsilk: "fff8dc", - crimson: "dc143c", - cyan: "0ff", - darkblue: "00008b", - darkcyan: "008b8b", - darkgoldenrod: "b8860b", - darkgray: "a9a9a9", - darkgreen: "006400", - darkgrey: "a9a9a9", - darkkhaki: "bdb76b", - darkmagenta: "8b008b", - darkolivegreen: "556b2f", - darkorange: "ff8c00", - darkorchid: "9932cc", - darkred: "8b0000", - darksalmon: "e9967a", - darkseagreen: "8fbc8f", - darkslateblue: "483d8b", - darkslategray: "2f4f4f", - darkslategrey: "2f4f4f", - darkturquoise: "00ced1", - darkviolet: "9400d3", - deeppink: "ff1493", - deepskyblue: "00bfff", - dimgray: "696969", - dimgrey: "696969", - dodgerblue: "1e90ff", - firebrick: "b22222", - floralwhite: "fffaf0", - forestgreen: "228b22", - fuchsia: "f0f", - gainsboro: "dcdcdc", - ghostwhite: "f8f8ff", - gold: "ffd700", - goldenrod: "daa520", - gray: "808080", - green: "008000", - greenyellow: "adff2f", - grey: "808080", - honeydew: "f0fff0", - hotpink: "ff69b4", - indianred: "cd5c5c", - indigo: "4b0082", - ivory: "fffff0", - khaki: "f0e68c", - lavender: "e6e6fa", - lavenderblush: "fff0f5", - lawngreen: "7cfc00", - lemonchiffon: "fffacd", - lightblue: "add8e6", - lightcoral: "f08080", - lightcyan: "e0ffff", - lightgoldenrodyellow: "fafad2", - lightgray: "d3d3d3", - lightgreen: "90ee90", - lightgrey: "d3d3d3", - lightpink: "ffb6c1", - lightsalmon: "ffa07a", - lightseagreen: "20b2aa", - lightskyblue: "87cefa", - lightslategray: "789", - lightslategrey: "789", - lightsteelblue: "b0c4de", - lightyellow: "ffffe0", - lime: "0f0", - limegreen: "32cd32", - linen: "faf0e6", - magenta: "f0f", - maroon: "800000", - mediumaquamarine: "66cdaa", - mediumblue: "0000cd", - mediumorchid: "ba55d3", - mediumpurple: "9370db", - mediumseagreen: "3cb371", - mediumslateblue: "7b68ee", - mediumspringgreen: "00fa9a", - mediumturquoise: "48d1cc", - mediumvioletred: "c71585", - midnightblue: "191970", - mintcream: "f5fffa", - mistyrose: "ffe4e1", - moccasin: "ffe4b5", - navajowhite: "ffdead", - navy: "000080", - oldlace: "fdf5e6", - olive: "808000", - olivedrab: "6b8e23", - orange: "ffa500", - orangered: "ff4500", - orchid: "da70d6", - palegoldenrod: "eee8aa", - palegreen: "98fb98", - paleturquoise: "afeeee", - palevioletred: "db7093", - papayawhip: "ffefd5", - peachpuff: "ffdab9", - peru: "cd853f", - pink: "ffc0cb", - plum: "dda0dd", - powderblue: "b0e0e6", - purple: "800080", - rebeccapurple: "663399", - red: "f00", - rosybrown: "bc8f8f", - royalblue: "4169e1", - saddlebrown: "8b4513", - salmon: "fa8072", - sandybrown: "f4a460", - seagreen: "2e8b57", - seashell: "fff5ee", - sienna: "a0522d", - silver: "c0c0c0", - skyblue: "87ceeb", - slateblue: "6a5acd", - slategray: "708090", - slategrey: "708090", - snow: "fffafa", - springgreen: "00ff7f", - steelblue: "4682b4", - tan: "d2b48c", - teal: "008080", - thistle: "d8bfd8", - tomato: "ff6347", - turquoise: "40e0d0", - violet: "ee82ee", - wheat: "f5deb3", - white: "fff", - whitesmoke: "f5f5f5", - yellow: "ff0", - yellowgreen: "9acd32" - }; - - // Make it easy to access colors via `hexNames[hex]` - var hexNames = tinycolor.hexNames = flip(names); - - - // Utilities - // --------- - - // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` - function flip(o) { - var flipped = { }; - for (var i in o) { - if (o.hasOwnProperty(i)) { - flipped[o[i]] = i; - } - } - return flipped; - } - - // Return a valid alpha value [0,1] with all invalid values being set to 1 - function boundAlpha(a) { - a = parseFloat(a); - - if (isNaN(a) || a < 0 || a > 1) { - a = 1; - } - - return a; - } - - // Take input from [0, n] and return it as [0, 1] - function bound01(n, max) { - if (isOnePointZero(n)) { n = "100%"; } - - var processPercent = isPercentage(n); - n = mathMin(max, mathMax(0, parseFloat(n))); - - // Automatically convert percentage into number - if (processPercent) { - n = parseInt(n * max, 10) / 100; - } - - // Handle floating point rounding errors - if ((math.abs(n - max) < 0.000001)) { - return 1; - } - - // Convert into [0, 1] range if it isn't already - return (n % max) / parseFloat(max); - } - - // Force a number between 0 and 1 - function clamp01(val) { - return mathMin(1, mathMax(0, val)); - } - - // Parse a base-16 hex value into a base-10 integer - function parseIntFromHex(val) { - return parseInt(val, 16); - } - - // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 - // - function isOnePointZero(n) { - return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; - } - - // Check to see if string passed in is a percentage - function isPercentage(n) { - return typeof n === "string" && n.indexOf('%') != -1; - } - - // Force a hex value to have 2 characters - function pad2(c) { - return c.length == 1 ? '0' + c : '' + c; - } - - // Replace a decimal with it's percentage value - function convertToPercentage(n) { - if (n <= 1) { - n = (n * 100) + "%"; - } - - return n; - } - - // Converts a decimal to a hex value - function convertDecimalToHex(d) { - return Math.round(parseFloat(d) * 255).toString(16); - } - // Converts a hex value to a decimal - function convertHexToDecimal(h) { - return (parseIntFromHex(h) / 255); - } - - var matchers = (function() { - - // - var CSS_INTEGER = "[-\\+]?\\d+%?"; - - // - var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; - - // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. - var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; - - // Actual matching. - // Parentheses and commas are optional, but not required. - // Whitespace can take the place of commas or opening paren - var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - - return { - rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), - rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), - hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), - hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), - hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), - hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), - hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, - hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, - hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ - }; - })(); - - // `stringInputToObject` - // Permissive string parsing. Take in a number of formats, and output an object - // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` - function stringInputToObject(color) { - - color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); - var named = false; - if (names[color]) { - color = names[color]; - named = true; - } - else if (color == 'transparent') { - return { r: 0, g: 0, b: 0, a: 0, format: "name" }; - } - - // Try to match string input using regular expressions. - // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] - // Just return an object and let the conversion functions handle that. - // This way the result will be the same whether the tinycolor is initialized with string or object. - var match; - if ((match = matchers.rgb.exec(color))) { - return { r: match[1], g: match[2], b: match[3] }; - } - if ((match = matchers.rgba.exec(color))) { - return { r: match[1], g: match[2], b: match[3], a: match[4] }; - } - if ((match = matchers.hsl.exec(color))) { - return { h: match[1], s: match[2], l: match[3] }; - } - if ((match = matchers.hsla.exec(color))) { - return { h: match[1], s: match[2], l: match[3], a: match[4] }; - } - if ((match = matchers.hsv.exec(color))) { - return { h: match[1], s: match[2], v: match[3] }; - } - if ((match = matchers.hsva.exec(color))) { - return { h: match[1], s: match[2], v: match[3], a: match[4] }; - } - if ((match = matchers.hex8.exec(color))) { - return { - a: convertHexToDecimal(match[1]), - r: parseIntFromHex(match[2]), - g: parseIntFromHex(match[3]), - b: parseIntFromHex(match[4]), - format: named ? "name" : "hex8" - }; - } - if ((match = matchers.hex6.exec(color))) { - return { - r: parseIntFromHex(match[1]), - g: parseIntFromHex(match[2]), - b: parseIntFromHex(match[3]), - format: named ? "name" : "hex" - }; - } - if ((match = matchers.hex3.exec(color))) { - return { - r: parseIntFromHex(match[1] + '' + match[1]), - g: parseIntFromHex(match[2] + '' + match[2]), - b: parseIntFromHex(match[3] + '' + match[3]), - format: named ? "name" : "hex" - }; - } - - return false; - } - - window.tinycolor = tinycolor; - })(); - - $(function () { - if ($.fn.spectrum.load) { - $.fn.spectrum.processNativeColorInputs(); - } - }); - -}); diff --git a/src/opc-tool/Program.fs b/src/opc-tool/Program.fs index d9646eb7..fe679930 100644 --- a/src/opc-tool/Program.fs +++ b/src/opc-tool/Program.fs @@ -3,13 +3,14 @@ open System.Threading.Tasks open System.IO open System.Threading open Aardvark.Base -open Aardvark.SceneGraph.Opc -open Aardvark.VRVis.Opc +open Aardvark.Data.Opc +open OpcViewer.Base open PRo3D.Core.Surface open Aardvark.GeoSpatial.Opc open Aardvark.GeoSpatial.Opc.PatchLod -open Aardvark.Prinziple +open Aardvark.Data.Opc open CommandLine +open Aardvark.Data let logo = """ @@ -27,10 +28,6 @@ Examples: opc-tool --forcekdtreerebuild --generatedds --overwritedds --ignoremas let validateAndConvertTextures (generateDds : bool) (overwriteDdds : bool) (patchHierarchy : PatchHierarchy) = - let isZipped path = - let split = path |> Path.GetFullPath |> Prinziple.splitPath - split.IsSome - let mutable validationErrors = 0 let m (level : int) (d : Patch) = @@ -49,11 +46,7 @@ let validateAndConvertTextures (generateDds : bool) (overwriteDdds : bool) (patc None, 1 let mip = - use stream = - if texturePath |> isZipped then - Prinziple.openRead (texturePath |> Path.GetFullPath) - else - File.Open(texturePath, FileMode.Open, FileAccess.Read, FileShare.Read) + use stream = Prinziple.openRead texturePath ImageLoading.loadImageFromStream stream extension @@ -120,12 +113,12 @@ let generateKdTrees (degreeOfParallelism : Option) (forceKdTreeRebuild : bo let kdTrees = - KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ serializer forceKdTreeRebuild ignoreMasterKdTree PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false false Aardvark.VRVis.Opc.KdTrees.KdTreeParameters.legacyDefault + KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ serializer forceKdTreeRebuild ignoreMasterKdTree PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false false OpcViewer.Base.KdTrees.KdTreeParameters.legacyDefault for (bb,kdTree) in kdTrees do match kdTree with - | KdTrees.Level0KdTree.InCoreKdTree inCore -> () - | KdTrees.Level0KdTree.LazyKdTree l -> + | Aardvark.VRVis.Opc.KdTrees.Level0KdTree.InCoreKdTree inCore -> () + | Aardvark.VRVis.Opc.KdTrees.Level0KdTree.LazyKdTree l -> () () diff --git a/src/opc-tool/paket.references b/src/opc-tool/paket.references index c55d58bc..7312f8cd 100644 --- a/src/opc-tool/paket.references +++ b/src/opc-tool/paket.references @@ -5,7 +5,7 @@ Aardvark.Base Aardvark.Base.Incremental Aardvark.Base.FSharp -Aardvark.SceneGraph.Opc +Aardvark.Data.Opc Aardvark.GeoSpatial.Opc OPCViewer.Base