diff --git a/sandbox/background.png b/sandbox/background.png new file mode 100644 index 0000000..b2e2982 Binary files /dev/null and b/sandbox/background.png differ diff --git a/sandbox/embed_background.html b/sandbox/embed_background.html new file mode 100644 index 0000000..c12460a --- /dev/null +++ b/sandbox/embed_background.html @@ -0,0 +1,76 @@ + + + + + + + + Online 3D Viewer + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+ + + diff --git a/sandbox/embed_iframe_scroll.html b/sandbox/embed_iframe_scroll.html deleted file mode 100644 index 89ac360..0000000 --- a/sandbox/embed_iframe_scroll.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Online 3D Viewer - - - -
- -
- - - diff --git a/sandbox/embed_selfhost_calculate.html b/sandbox/embed_selfhost_calculate.html index b302f00..b9b86d2 100644 --- a/sandbox/embed_selfhost_calculate.html +++ b/sandbox/embed_selfhost_calculate.html @@ -34,7 +34,7 @@ // initialize the viewer with the parent element and some parameters let viewer = new OV.EmbeddedViewer (parentDiv, { - backgroundColor : new OV.RGBColor (255, 255, 255), + backgroundColor : new OV.RGBAColor (255, 255, 255, 255), defaultColor : new OV.RGBColor (200, 200, 200), edgeSettings : { showEdges : false, diff --git a/sandbox/embed_selfhost_code_file.html b/sandbox/embed_selfhost_code_file.html index 3cf31ea..d21fb21 100644 --- a/sandbox/embed_selfhost_code_file.html +++ b/sandbox/embed_selfhost_code_file.html @@ -26,7 +26,7 @@ // initialize the viewer with the parent element and some parameters let viewer = new OV.EmbeddedViewer (parentDiv, { - backgroundColor : new OV.RGBColor (255, 255, 255), + backgroundColor : new OV.RGBAColor (255, 255, 255, 255), defaultColor : new OV.RGBColor (200, 200, 200), edgeSettings : { showEdges : false, diff --git a/sandbox/embed_selfhost_code_url.html b/sandbox/embed_selfhost_code_url.html index c329fe4..2c98cac 100644 --- a/sandbox/embed_selfhost_code_url.html +++ b/sandbox/embed_selfhost_code_url.html @@ -31,7 +31,7 @@ new OV.Coord3D (0.0, 0.0, 0.0), new OV.Coord3D (0.0, 1.0, 0.0) ), - backgroundColor : new OV.RGBColor (255, 255, 255), + backgroundColor : new OV.RGBAColor (255, 255, 255, 255), defaultColor : new OV.RGBColor (200, 200, 200), edgeSettings : { showEdges : false, diff --git a/sandbox/embed_selfhost_multiple.html b/sandbox/embed_selfhost_multiple.html index 510a125..a057ee7 100644 --- a/sandbox/embed_selfhost_multiple.html +++ b/sandbox/embed_selfhost_multiple.html @@ -12,7 +12,7 @@ diff --git a/source/engine/main.js b/source/engine/main.js index 56bf70c..a57f37a 100644 --- a/source/engine/main.js +++ b/source/engine/main.js @@ -43,7 +43,7 @@ import { ArrayBufferToUtf8String, ArrayBufferToAsciiString, AsciiStringToArrayBu import { SetExternalLibLocation, GetExternalLibPath, LoadExternalLibrary } from './io/externallibs.js'; import { GetFileName, GetFileExtension, RequestUrl, ReadFile, TransformFileHostUrls, IsUrl, FileSource, FileFormat } from './io/fileutils.js'; import { TextWriter } from './io/textwriter.js'; -import { RGBColor, ColorComponentFromFloat, RGBColorFromFloatComponents, SRGBToLinear, LinearToSRGB, IntegerToHexString, RGBColorToHexString, HexStringToRGBColor, ArrayToRGBColor, RGBColorIsEqual } from './model/color.js'; +import { RGBColor, RGBAColor, ColorComponentFromFloat, ColorComponentToFloat, RGBColorFromFloatComponents, SRGBToLinear, LinearToSRGB, IntegerToHexString, RGBColorToHexString, HexStringToRGBColor, ArrayToRGBColor, RGBColorIsEqual } from './model/color.js'; import { GeneratorParams, Generator, GeneratorHelper, GenerateCuboid, GenerateCone, GenerateCylinder, GenerateSphere, GeneratePlatonicSolid } from './model/generator.js'; import { TextureMap, MaterialBase, FaceMaterial, PhongMaterial, PhysicalMaterial, TextureMapIsEqual, TextureIsEqual, MaterialType } from './model/material.js'; import { Mesh } from './model/mesh.js'; @@ -200,7 +200,9 @@ export { FileFormat, TextWriter, RGBColor, + RGBAColor, ColorComponentFromFloat, + ColorComponentToFloat, RGBColorFromFloatComponents, SRGBToLinear, LinearToSRGB, diff --git a/source/engine/model/color.js b/source/engine/model/color.js index 7cbbe4b..df12495 100644 --- a/source/engine/model/color.js +++ b/source/engine/model/color.js @@ -20,11 +20,40 @@ export class RGBColor } } +export class RGBAColor +{ + constructor (r, g, b, a) + { + this.r = r; // 0 .. 255 + this.g = g; // 0 .. 255 + this.b = b; // 0 .. 255 + this.a = a; // 0 .. 255 + } + + Set (r, g, b, a) + { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + Clone () + { + return new RGBAColor (this.r, this.g, this.b, this.a); + } +} + export function ColorComponentFromFloat (component) { return parseInt (Math.round (component * 255.0), 10); } +export function ColorComponentToFloat (component) +{ + return component / 255.0; +} + export function RGBColorFromFloatComponents (r, g, b) { return new RGBColor ( diff --git a/source/engine/parameters/parameterlist.js b/source/engine/parameters/parameterlist.js index 39ba3e5..697f107 100644 --- a/source/engine/parameters/parameterlist.js +++ b/source/engine/parameters/parameterlist.js @@ -1,5 +1,5 @@ import { Coord3D } from '../geometry/coord3d.js'; -import { RGBColor } from '../model/color.js'; +import { RGBAColor, RGBColor } from '../model/color.js'; import { Camera } from '../viewer/camera.js'; export let ParameterConverter = @@ -71,20 +71,32 @@ export let ParameterConverter = return camera; }, - ColorToString : function (color) + RGBColorToString : function (color) { if (color === null) { return null; } - let colorParameters = [ + return [ this.IntegerToString (color.r), this.IntegerToString (color.g), this.IntegerToString (color.b) ].join (','); - return colorParameters; }, - StringToColor : function (str) + RGBAColorToString : function (color) + { + if (color === null) { + return null; + } + return [ + this.IntegerToString (color.r), + this.IntegerToString (color.g), + this.IntegerToString (color.b), + this.IntegerToString (color.a) + ].join (','); + }, + + StringToRGBColor : function (str) { if (str === null || str.length === 0) { return null; @@ -93,11 +105,31 @@ export let ParameterConverter = if (paramParts.length !== 3) { return null; } - let color = new RGBColor ( + return new RGBColor ( this.StringToInteger (paramParts[0]), this.StringToInteger (paramParts[1]), this.StringToInteger (paramParts[2]) ); + }, + + StringToRGBAColor : function (str) + { + if (str === null || str.length === 0) { + return null; + } + let paramParts = str.split (','); + if (paramParts.length !== 3 && paramParts.length !== 4) { + return null; + } + let color = new RGBAColor ( + this.StringToInteger (paramParts[0]), + this.StringToInteger (paramParts[1]), + this.StringToInteger (paramParts[2]), + 255 + ); + if (paramParts.length === 4) { + color.a = this.StringToInteger (paramParts[3]); + } return color; }, @@ -136,7 +168,7 @@ export let ParameterConverter = } let edgeSettingsParameters = [ edgeSettings.showEdges ? 'on' : 'off', - this.ColorToString (edgeSettings.edgeColor), + this.RGBColorToString (edgeSettings.edgeColor), this.IntegerToString (edgeSettings.edgeThreshold), ].join (','); return edgeSettingsParameters; @@ -192,13 +224,13 @@ export class ParameterListBuilder AddBackgroundColor (background) { - this.AddUrlPart ('backgroundcolor', ParameterConverter.ColorToString (background)); + this.AddUrlPart ('backgroundcolor', ParameterConverter.RGBAColorToString (background)); return this; } AddDefaultColor (color) { - this.AddUrlPart ('defaultcolor', ParameterConverter.ColorToString (color)); + this.AddUrlPart ('defaultcolor', ParameterConverter.RGBColorToString (color)); return this; } @@ -259,13 +291,13 @@ export class ParameterListParser GetBackgroundColor () { let backgroundParams = this.GetKeywordParams ('backgroundcolor'); - return ParameterConverter.StringToColor (backgroundParams); + return ParameterConverter.StringToRGBAColor (backgroundParams); } GetDefaultColor () { let colorParams = this.GetKeywordParams ('defaultcolor'); - return ParameterConverter.StringToColor (colorParams); + return ParameterConverter.StringToRGBColor (colorParams); } GetEdgeSettings () diff --git a/source/engine/viewer/embeddedviewer.js b/source/engine/viewer/embeddedviewer.js index 1d451ea..f0de5cb 100644 --- a/source/engine/viewer/embeddedviewer.js +++ b/source/engine/viewer/embeddedviewer.js @@ -171,13 +171,13 @@ export function Init3DViewerElements (onReady) let backgroundColor = null; let backgroundColorParams = element.getAttribute ('backgroundcolor'); if (backgroundColorParams) { - backgroundColor = ParameterConverter.StringToColor (backgroundColorParams); + backgroundColor = ParameterConverter.StringToRGBAColor (backgroundColorParams); } let defaultColor = null; let defaultColorParams = element.getAttribute ('defaultcolor'); if (defaultColorParams) { - defaultColor = ParameterConverter.StringToColor (defaultColorParams); + defaultColor = ParameterConverter.StringToRGBColor (defaultColorParams); } let edgeSettings = null; diff --git a/source/engine/viewer/viewer.js b/source/engine/viewer/viewer.js index f1bdbb2..b571392 100644 --- a/source/engine/viewer/viewer.js +++ b/source/engine/viewer/viewer.js @@ -1,6 +1,6 @@ import { Coord3D, CoordDistance3D, SubCoord3D } from '../geometry/coord3d.js'; import { Direction } from '../geometry/geometry.js'; -import { RGBColorToHexString } from '../model/color.js'; +import { ColorComponentToFloat } from '../model/color.js'; import { ShadingType } from '../threejs/threeutils.js'; import { Camera } from './camera.js'; import { GetDomElementInnerDimensions } from './domutils.js'; @@ -266,8 +266,13 @@ export class Viewer SetBackgroundColor (color) { - let hexColor = '#' + RGBColorToHexString (color); - this.renderer.setClearColor (hexColor, 1.0); + let bgColor = new THREE.Color ( + ColorComponentToFloat (color.r), + ColorComponentToFloat (color.g), + ColorComponentToFloat (color.b) + ); + let alpha = ColorComponentToFloat (color.a); + this.renderer.setClearColor (bgColor, alpha); this.Render (); } diff --git a/source/website/cookiehandler.js b/source/website/cookiehandler.js index ef2b01d..c12ca42 100644 --- a/source/website/cookiehandler.js +++ b/source/website/cookiehandler.js @@ -49,18 +49,32 @@ export function CookieSetIntVal (key, value) CookieSetStringVal (key, value.toString ()); } -export function CookieGetColorVal (key, defVal) +export function CookieGetRGBColorVal (key, defVal) { let stringVal = CookieGetStringVal (key, null); if (stringVal === null) { return defVal; } - return ParameterConverter.StringToColor (stringVal); + return ParameterConverter.StringToRGBColor (stringVal); } -export function CookieSetColorVal (key, value) +export function CookieGetRGBAColorVal (key, defVal) { - CookieSetStringVal (key, ParameterConverter.ColorToString (value)); + let stringVal = CookieGetStringVal (key, null); + if (stringVal === null) { + return defVal; + } + return ParameterConverter.StringToRGBAColor (stringVal); +} + +export function CookieSetRGBColorVal (key, value) +{ + CookieSetStringVal (key, ParameterConverter.RGBColorToString (value)); +} + +export function CookieSetRGBAColorVal (key, value) +{ + CookieSetStringVal (key, ParameterConverter.RGBAColorToString (value)); } export function CookieClearVal (key) diff --git a/source/website/measuretool.js b/source/website/measuretool.js index a599b07..36bbc97 100644 --- a/source/website/measuretool.js +++ b/source/website/measuretool.js @@ -201,7 +201,7 @@ export class MeasureTool } ClearDomElement (this.panel); - if (IsDarkTextNeededForColor (this.settings.backgroundColor)) { + if (IsDarkTextNeededForColor (this.settings.backgroundColor.r, this.settings.backgroundColor.g, this.settings.backgroundColor.b)) { this.panel.style.color = '#000000'; } else { this.panel.style.color = '#ffffff'; diff --git a/source/website/settings.js b/source/website/settings.js index cba85b4..ca6086f 100644 --- a/source/website/settings.js +++ b/source/website/settings.js @@ -1,5 +1,5 @@ -import { RGBColor } from '../engine/model/color.js'; -import { CookieGetBoolVal, CookieGetColorVal, CookieGetIntVal, CookieGetStringVal, CookieSetBoolVal, CookieSetColorVal, CookieSetIntVal, CookieSetStringVal } from './cookiehandler.js'; +import { RGBAColor, RGBColor } from '../engine/model/color.js'; +import { CookieGetBoolVal, CookieGetRGBColorVal, CookieGetIntVal, CookieGetStringVal, CookieSetBoolVal, CookieSetRGBColorVal, CookieSetIntVal, CookieSetStringVal, CookieSetRGBAColorVal, CookieGetRGBAColorVal } from './cookiehandler.js'; export const Theme = { @@ -13,7 +13,7 @@ export class Settings { this.environmentMapName = 'fishermans_bastion'; this.backgroundIsEnvMap = false; - this.backgroundColor = new RGBColor (255, 255, 255); + this.backgroundColor = new RGBAColor (255, 255, 255, 255); this.defaultColor = new RGBColor (200, 200, 200); this.showEdges = false; this.edgeColor = new RGBColor (0, 0, 0); @@ -25,10 +25,10 @@ export class Settings { this.environmentMapName = CookieGetStringVal ('ov_environment_map', 'fishermans_bastion'); this.backgroundIsEnvMap = CookieGetBoolVal ('ov_background_is_envmap', false); - this.backgroundColor = CookieGetColorVal ('ov_background_color', new RGBColor (255, 255, 255)); - this.defaultColor = CookieGetColorVal ('ov_default_color', new RGBColor (200, 200, 200)); + this.backgroundColor = CookieGetRGBAColorVal ('ov_background_color', new RGBAColor (255, 255, 255, 255)); + this.defaultColor = CookieGetRGBColorVal ('ov_default_color', new RGBColor (200, 200, 200)); this.showEdges = CookieGetBoolVal ('ov_show_edges', false); - this.edgeColor = CookieGetColorVal ('ov_edge_color', new RGBColor (0, 0, 0)); + this.edgeColor = CookieGetRGBColorVal ('ov_edge_color', new RGBColor (0, 0, 0)); this.edgeThreshold = CookieGetIntVal ('ov_edge_threshold', 1); this.themeId = CookieGetIntVal ('ov_theme_id', Theme.Light); } @@ -37,10 +37,10 @@ export class Settings { CookieSetStringVal ('ov_environment_map', this.environmentMapName); CookieSetBoolVal ('ov_background_is_envmap', this.backgroundIsEnvMap); - CookieSetColorVal ('ov_background_color', this.backgroundColor); - CookieSetColorVal ('ov_default_color', this.defaultColor); + CookieSetRGBAColorVal ('ov_background_color', this.backgroundColor); + CookieSetRGBColorVal ('ov_default_color', this.defaultColor); CookieSetBoolVal ('ov_show_edges', this.showEdges); - CookieSetColorVal ('ov_edge_color', this.edgeColor); + CookieSetRGBColorVal ('ov_edge_color', this.edgeColor); CookieSetIntVal ('ov_edge_threshold', this.edgeThreshold); CookieSetIntVal ('ov_theme_id', this.themeId); } diff --git a/source/website/sidebarsettingspanel.js b/source/website/sidebarsettingspanel.js index 84e1aeb..212ba84 100644 --- a/source/website/sidebarsettingspanel.js +++ b/source/website/sidebarsettingspanel.js @@ -1,4 +1,4 @@ -import { RGBColor, RGBColorToHexString } from '../engine/model/color.js'; +import { RGBColor, RGBColorToHexString, RGBAColor } from '../engine/model/color.js'; import { AddDiv, AddDomElement, ShowDomElement, SetDomElementOuterHeight } from '../engine/viewer/domutils.js'; import { AddRangeSlider, AddToggle, AddCheckbox } from '../website/utils.js'; import { CalculatePopupPositionToElementTopLeft } from './dialogs.js'; @@ -34,12 +34,11 @@ function AddColorPicker (parentDiv, defaultColor, predefinedColors, onChange) }); pickr.on ('change', (color, source, instance) => { let rgbaColor = color.toRGBA (); - let ovColor = new RGBColor ( + onChange ( parseInt (rgbaColor[0], 10), parseInt (rgbaColor[1], 10), parseInt (rgbaColor[2], 10) ); - onChange (ovColor); }); return pickr; } @@ -199,8 +198,8 @@ class SettingsModelDisplaySection extends SettingsSection let backgroundColorInput = AddDiv (backgroundColorDiv, 'ov_color_picker'); AddDiv (backgroundColorDiv, null, 'Background Color'); let predefinedBackgroundColors = ['#ffffff', '#e3e3e3', '#c9c9c9', '#898989', '#5f5f5f', '#494949', '#383838', '#0f0f0f']; - this.backgroundColorPicker = AddColorPicker (backgroundColorInput, settings.backgroundColor, predefinedBackgroundColors, (color) => { - settings.backgroundColor = color; + this.backgroundColorPicker = AddColorPicker (backgroundColorInput, settings.backgroundColor, predefinedBackgroundColors, (r, g, b) => { + settings.backgroundColor = new RGBAColor (r, g, b, 255); callbacks.onBackgroundColorChange (); }); @@ -247,8 +246,8 @@ class SettingsModelDisplaySection extends SettingsSection let predefinedEdgeColors = ['#ffffff', '#e3e3e3', '#c9c9c9', '#898989', '#5f5f5f', '#494949', '#383838', '#0f0f0f']; let edgeColorInput = AddDiv (edgeColorRow, 'ov_color_picker'); - this.edgeColorPicker = AddColorPicker (edgeColorInput, settings.edgeColor, predefinedEdgeColors, (color) => { - settings.edgeColor = color; + this.edgeColorPicker = AddColorPicker (edgeColorInput, settings.edgeColor, predefinedEdgeColors, (r, g, b) => { + settings.edgeColor = new RGBColor (r, g, b); callbacks.onEdgeColorChange (); }); AddDiv (edgeColorRow, null, 'Edge Color'); @@ -353,8 +352,8 @@ class SettingsImportParametersSection extends SettingsSection let defaultColorInput = AddDiv (defaultColorDiv, 'ov_color_picker'); AddDiv (defaultColorDiv, null, 'Default Color'); let predefinedDefaultColors = ['#ffffff', '#e3e3e3', '#cc3333', '#fac832', '#4caf50', '#3393bd', '#9b27b0', '#fda4b8']; - this.defaultColorPicker = AddColorPicker (defaultColorInput, settings.defaultColor, predefinedDefaultColors, (color) => { - settings.defaultColor = color; + this.defaultColorPicker = AddColorPicker (defaultColorInput, settings.defaultColor, predefinedDefaultColors, (r, g, b) => { + settings.defaultColor = new RGBColor (r, g, b); callbacks.onDefaultColorChange (); }); } @@ -481,10 +480,10 @@ export class SidebarSettingsPanel extends SidebarPanel this.appearanceSection.Init (this.settings, { onThemeChange : () => { if (this.settings.themeId === Theme.Light) { - this.settings.backgroundColor = new RGBColor (255, 255, 255); + this.settings.backgroundColor = new RGBAColor (255, 255, 255, 255); this.settings.defaultColor = new RGBColor (200, 200, 200); } else if (this.settings.themeId === Theme.Dark) { - this.settings.backgroundColor = new RGBColor (42, 43, 46); + this.settings.backgroundColor = new RGBAColor (42, 43, 46, 255); this.settings.defaultColor = new RGBColor (200, 200, 200); } this.modelDisplaySection.Update (this.settings); diff --git a/source/website/utils.js b/source/website/utils.js index c30675d..da8b1e7 100644 --- a/source/website/utils.js +++ b/source/website/utils.js @@ -156,9 +156,9 @@ export function CreateInlineColorCircle (color) return circleDiv; } -export function IsDarkTextNeededForColor (color) +export function IsDarkTextNeededForColor (r, g, b) { - let intensity = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + let intensity = r * 0.299 + g * 0.587 + b * 0.114; return intensity > 186.0; } diff --git a/test/tests/parameterlist_test.js b/test/tests/parameterlist_test.js index 94ff0d9..2b4a2a8 100644 --- a/test/tests/parameterlist_test.js +++ b/test/tests/parameterlist_test.js @@ -12,7 +12,7 @@ describe ('Parameter List', function () { new OV.Coord3D (0.0, 0.0, 0.0), new OV.Coord3D (0.0, 0.0, 1.0) ); - let background = new OV.RGBColor (4, 5, 6); + let background = new OV.RGBAColor (4, 5, 6, 7); let color = new OV.RGBColor (1, 2, 3); let urlParams1 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).GetParameterList (); let urlParams2 = OV.CreateUrlBuilder ().AddCamera (camera).GetParameterList (); @@ -28,7 +28,7 @@ describe ('Parameter List', function () { assert.strictEqual (urlParams2, 'camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000'); assert.strictEqual (urlParams3, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000'); assert.strictEqual (urlParams4, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000$defaultcolor=1,2,3'); - assert.strictEqual (urlParams5, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000$backgroundcolor=4,5,6$defaultcolor=1,2,3'); + assert.strictEqual (urlParams5, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000$backgroundcolor=4,5,6,7$defaultcolor=1,2,3'); assert.strictEqual (urlParams6, 'edgesettings=on,1,2,3,15'); }); @@ -39,14 +39,14 @@ describe ('Parameter List', function () { new OV.Coord3D (0.0, 0.0, 0.0), new OV.Coord3D (0.0, 0.0, 1.0) ); - let background = new OV.RGBColor (4, 5, 6); + let background = new OV.RGBAColor (4, 5, 6, 7); let color = new OV.RGBColor (1, 2, 3); let urlParamsLegacy = 'a.txt,b.txt'; let urlParams1 = 'model=a.txt,b.txt'; let urlParams2 = 'camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000'; let urlParams3 = 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000'; let urlParams4 = 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000$defaultcolor=1,2,3'; - let urlParams5 = 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000$backgroundcolor=4,5,6$defaultcolor=1,2,3'; + let urlParams5 = 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000$backgroundcolor=4,5,6,7$defaultcolor=1,2,3'; let urlParams6 = 'edgesettings=on,1,2,3,15'; let parserLegacy = OV.CreateUrlParser (urlParamsLegacy); assert.deepStrictEqual (parserLegacy.GetModelUrls (), modelUrls); diff --git a/website/embed.html b/website/embed.html index 3d15391..23eda1a 100644 --- a/website/embed.html +++ b/website/embed.html @@ -43,6 +43,13 @@ OV.StartEmbed ('../libs'); + +