Enable camera mode setting during embedding.

This commit is contained in:
kovacsv 2022-09-18 14:35:06 +02:00
parent 14b0863d64
commit 12537cdac8
11 changed files with 229 additions and 85 deletions

View File

@ -25,26 +25,38 @@
<body> <body>
<iframe <iframe
width="400" height="300" style="border:1px solid #eeeeee;" width="360" height="240" style="border:1px solid #eeeeee;"
src="../../website/embed.html#model=assets/models/solids.obj,assets/models/solids.mtl$camera=2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000$envsettings=fishermans_bastion,off$backgroundcolor=255,255,255$defaultcolor=200,200,200$edgesettings=off,0,0,0,1"> src="../../website/embed.html#model=assets/models/solids.obj,assets/models/solids.mtl$camera=2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000">
</iframe> </iframe>
<iframe <iframe
width="400" height="300" style="border:1px solid #eeeeee;" width="360" height="240" style="border:1px solid #eeeeee;"
src="../../website/embed.html#model=assets/models/solids.obj,assets/models/solids.mtl$camera=2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000,100.0$envsettings=fishermans_bastion,off$backgroundcolor=255,255,255$defaultcolor=200,200,200$edgesettings=off,0,0,0,1"> src="../../website/embed.html#model=assets/models/solids.obj,assets/models/solids.mtl$camera=2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000,100.0">
</iframe>
<iframe
width="360" height="240" style="border:1px solid #eeeeee;"
src="../../website/embed.html#model=assets/models/solids.obj,assets/models/solids.mtl$camera=2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000$cameramode=orthographic">
</iframe> </iframe>
<div class="online_3d_viewer" <div class="online_3d_viewer"
style="width: 400px; height: 300px;" style="width: 360px; height: 240px;"
model="../website/assets/models/solids.obj,../website/assets/models/solids.mtl" model="../website/assets/models/solids.obj,../website/assets/models/solids.mtl"
camera="2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000"> camera="2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000">
</div> </div>
<div class="online_3d_viewer" <div class="online_3d_viewer"
style="width: 400px; height: 300px;" style="width: 360px; height: 240px;"
model="../website/assets/models/solids.obj,../website/assets/models/solids.mtl" model="../website/assets/models/solids.obj,../website/assets/models/solids.mtl"
camera="2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000,100.0"> camera="2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000,100.0">
</div> </div>
<div class="online_3d_viewer"
style="width: 360px; height: 240px;"
model="../website/assets/models/solids.obj,../website/assets/models/solids.mtl"
camera="2.18558,4.53834,2.35460,3.62488,2.61927,-0.52401,0.00000,1.00000,0.00000"
cameramode="orthographic">
</div>
</body> </body>
</html> </html>

View File

@ -90,7 +90,7 @@
orthographicCamera.position.set (eye.x, eye.y, eye.z); orthographicCamera.position.set (eye.x, eye.y, eye.z);
orthographicCamera.up.set (up.x, up.y, up.z); orthographicCamera.up.set (up.x, up.y, up.z);
orthographicCamera.lookAt (center); orthographicCamera.lookAt (center);
InitRenderer ('ortographic_canvas', orthographicCamera, width, height); InitRenderer ('orthographic_canvas', orthographicCamera, width, height);
} }
window.onload = function () { window.onload = function () {
@ -101,7 +101,7 @@
<body> <body>
<canvas id="perspective_canvas"></canvas> <canvas id="perspective_canvas"></canvas>
<canvas id="ortographic_canvas"></canvas> <canvas id="orthographic_canvas"></canvas>
</body> </body>
</html> </html>

View File

@ -1,6 +1,7 @@
import { Coord3D } from '../geometry/coord3d.js'; import { Coord3D } from '../geometry/coord3d.js';
import { RGBAColor, RGBColor } from '../model/color.js'; import { RGBAColor, RGBColor } from '../model/color.js';
import { Camera } from '../viewer/camera.js'; import { Camera } from '../viewer/camera.js';
import { CameraMode } from '../viewer/viewer.js';
export let ParameterConverter = export let ParameterConverter =
{ {
@ -55,6 +56,16 @@ export let ParameterConverter =
return cameraParameters; return cameraParameters;
}, },
CameraModeToString : function (cameraMode)
{
if (cameraMode === CameraMode.Perspective) {
return 'perspective';
} else if (cameraMode === CameraMode.Orthographic) {
return 'orthographic';
}
return null;
},
StringToCamera : function (str) StringToCamera : function (str)
{ {
if (str === null || str.length === 0) { if (str === null || str.length === 0) {
@ -79,6 +90,16 @@ export let ParameterConverter =
return camera; return camera;
}, },
StringToCameraMode : function (str)
{
if (str === 'perspective') {
return CameraMode.Perspective;
} else if (str === 'orthographic') {
return CameraMode.Orthographic;
}
return null;
},
RGBColorToString : function (color) RGBColorToString : function (color)
{ {
if (color === null) { if (color === null) {
@ -224,6 +245,12 @@ export class ParameterListBuilder
return this; return this;
} }
AddCameraMode (cameraMode)
{
this.AddUrlPart ('cameramode', ParameterConverter.CameraModeToString (cameraMode));
return this;
}
AddEnvironmentSettings (envSettings) AddEnvironmentSettings (envSettings)
{ {
this.AddUrlPart ('envsettings', ParameterConverter.EnvironmentSettingsToString (envSettings)); this.AddUrlPart ('envsettings', ParameterConverter.EnvironmentSettingsToString (envSettings));
@ -290,6 +317,12 @@ export class ParameterListParser
return ParameterConverter.StringToCamera (keywordParams); return ParameterConverter.StringToCamera (keywordParams);
} }
GetCameraMode ()
{
let keywordParams = this.GetKeywordParams ('cameramode');
return ParameterConverter.StringToCameraMode (keywordParams);
}
GetEnvironmentSettings () GetEnvironmentSettings ()
{ {
let environmentSettingsParams = this.GetKeywordParams ('envsettings'); let environmentSettingsParams = this.GetKeywordParams ('envsettings');

View File

@ -27,6 +27,10 @@ export class EmbeddedViewer
let height = this.parentElement.clientHeight; let height = this.parentElement.clientHeight;
this.viewer.Resize (width, height); this.viewer.Resize (width, height);
if (this.parameters.cameraMode) {
this.viewer.SetCameraMode (this.parameters.cameraMode);
}
if (this.parameters.backgroundColor) { if (this.parameters.backgroundColor) {
this.viewer.SetBackgroundColor (this.parameters.backgroundColor); this.viewer.SetBackgroundColor (this.parameters.backgroundColor);
} }
@ -172,6 +176,12 @@ export function Init3DViewerElements (onReady)
camera = ParameterConverter.StringToCamera (cameraParams); camera = ParameterConverter.StringToCamera (cameraParams);
} }
let cameraMode = null;
let cameraModeParams = element.getAttribute ('cameramode');
if (cameraModeParams) {
cameraMode = ParameterConverter.StringToCameraMode (cameraModeParams);
}
let backgroundColor = null; let backgroundColor = null;
let backgroundColorParams = element.getAttribute ('backgroundcolor'); let backgroundColorParams = element.getAttribute ('backgroundcolor');
if (backgroundColorParams) { if (backgroundColorParams) {
@ -215,6 +225,7 @@ export function Init3DViewerElements (onReady)
return Init3DViewerElement (element, modelUrls, { return Init3DViewerElement (element, modelUrls, {
camera : camera, camera : camera,
cameraMode : cameraMode,
backgroundColor : backgroundColor, backgroundColor : backgroundColor,
defaultColor : defaultColor, defaultColor : defaultColor,
edgeSettings : edgeSettings, edgeSettings : edgeSettings,

View File

@ -337,6 +337,11 @@ export class Viewer
return this.navigation.GetCamera (); return this.navigation.GetCamera ();
} }
GetCameraMode ()
{
return this.cameraMode;
}
SetCamera (camera) SetCamera (camera)
{ {
this.navigation.SetCamera (camera); this.navigation.SetCamera (camera);
@ -392,6 +397,14 @@ export class Viewer
this.navigation.MoveCamera (newCamera, animation ? this.settings.animationSteps : 0); this.navigation.MoveCamera (newCamera, animation ? this.settings.animationSteps : 0);
} }
AdjustClippingPlanes ()
{
let boundingSphere = this.GetBoundingSphere ((meshUserData) => {
return true;
});
this.AdjustClippingPlanesToSphere (boundingSphere);
}
AdjustClippingPlanesToSphere (boundingSphere) AdjustClippingPlanesToSphere (boundingSphere)
{ {
if (boundingSphere === null) { if (boundingSphere === null) {

View File

@ -49,6 +49,10 @@ export class Embed
]; ];
this.viewer.SetEnvironmentMapSettings (envMapTextures, bgIsEnvMap); this.viewer.SetEnvironmentMapSettings (envMapTextures, bgIsEnvMap);
let cameraMode = this.hashHandler.GetCameraModeFromHash ();
if (cameraMode !== null) {
this.viewer.SetCameraMode (cameraMode);
}
let background = this.hashHandler.GetBackgroundFromHash (); let background = this.hashHandler.GetBackgroundFromHash ();
if (background !== null) { if (background !== null) {
this.viewer.SetBackgroundColor (background); this.viewer.SetBackgroundColor (background);

View File

@ -1,4 +1,4 @@
export const FeatureSet = export const FeatureSet =
{ {
OrthographicView : false
}; };

View File

@ -48,6 +48,12 @@ export class HashHandler
return parser.GetCamera (); return parser.GetCamera ();
} }
GetCameraModeFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetCameraMode ();
}
GetBackgroundFromHash () GetBackgroundFromHash ()
{ {
let parser = CreateUrlParser (this.GetHash ()); let parser = CreateUrlParser (this.GetHash ());

View File

@ -7,7 +7,7 @@ import { ButtonDialog } from './dialog.js';
import { CopyToClipboard } from './utils.js'; import { CopyToClipboard } from './utils.js';
import { HandleEvent } from './eventhandler.js'; import { HandleEvent } from './eventhandler.js';
export function ShowSharingDialog (fileList, settings, camera) export function ShowSharingDialog (fileList, settings, viewer)
{ {
function AddCheckboxLine (parentDiv, text, id, onChange) function AddCheckboxLine (parentDiv, text, id, onChange)
{ {
@ -55,14 +55,15 @@ export function ShowSharingDialog (fileList, settings, camera)
sharingLinkInput.value = GetSharingLink (modelFiles); sharingLinkInput.value = GetSharingLink (modelFiles);
} }
function AddEmbeddingCodeTab (parentDiv, modelFiles, settings, camera) function AddEmbeddingCodeTab (parentDiv, modelFiles, settings, viewer)
{ {
function GetEmbeddingCode (modelFiles, useCurrentSettings, settings, camera) function GetEmbeddingCode (modelFiles, useCurrentSettings, settings, viewer)
{ {
let builder = CreateUrlBuilder (); let builder = CreateUrlBuilder ();
builder.AddModelUrls (modelFiles); builder.AddModelUrls (modelFiles);
if (useCurrentSettings) { if (useCurrentSettings) {
builder.AddCamera (camera); builder.AddCamera (viewer.GetCamera ());
builder.AddCameraMode (viewer.GetCameraMode ());
let environmentSettings = { let environmentSettings = {
environmentMapName : settings.environmentMapName, environmentMapName : settings.environmentMapName,
backgroundIsEnvMap : settings.backgroundIsEnvMap backgroundIsEnvMap : settings.backgroundIsEnvMap
@ -95,14 +96,14 @@ export function ShowSharingDialog (fileList, settings, camera)
let optionsSection = AddDiv (section, 'ov_dialog_section'); let optionsSection = AddDiv (section, 'ov_dialog_section');
let embeddingCodeInput = AddCopyableTextInput (section, () => { let embeddingCodeInput = AddCopyableTextInput (section, () => {
HandleEvent ('model_shared', 'embedding_code'); HandleEvent ('model_shared', 'embedding_code');
return GetEmbeddingCode (modelFiles, useCurrentSettings, settings, camera); return GetEmbeddingCode (modelFiles, useCurrentSettings, settings, viewer);
}); });
AddCheckboxLine (optionsSection, 'Use customized settings', 'embed_current_settings', (checked) => { AddCheckboxLine (optionsSection, 'Use customized settings', 'embed_current_settings', (checked) => {
useCurrentSettings = checked; useCurrentSettings = checked;
embeddingCodeInput.value = GetEmbeddingCode (modelFiles, useCurrentSettings, settings, camera); embeddingCodeInput.value = GetEmbeddingCode (modelFiles, useCurrentSettings, settings, viewer);
}); });
embeddingCodeInput.value = GetEmbeddingCode (modelFiles, useCurrentSettings, settings, camera); embeddingCodeInput.value = GetEmbeddingCode (modelFiles, useCurrentSettings, settings, viewer);
} }
if (!fileList.IsOnlyUrlSource ()) { if (!fileList.IsOnlyUrlSource ()) {
@ -133,7 +134,7 @@ export function ShowSharingDialog (fileList, settings, camera)
]); ]);
AddSharingLinkTab (contentDiv, modelFiles); AddSharingLinkTab (contentDiv, modelFiles);
AddEmbeddingCodeTab (contentDiv, modelFiles, settings, camera); AddEmbeddingCodeTab (contentDiv, modelFiles, settings, viewer);
dialog.Open (); dialog.Open ();
return dialog; return dialog;

View File

@ -1,7 +1,7 @@
import { GetFileExtension, TransformFileHostUrls } from '../engine/io/fileutils.js'; import { GetFileExtension, TransformFileHostUrls } from '../engine/io/fileutils.js';
import { InputFilesFromFileObjects, InputFilesFromUrls } from '../engine/import/importerfiles.js'; import { InputFilesFromFileObjects, InputFilesFromUrls } from '../engine/import/importerfiles.js';
import { ImportErrorCode, ImportSettings } from '../engine/import/importer.js'; import { ImportErrorCode, ImportSettings } from '../engine/import/importer.js';
import { Viewer } from '../engine/viewer/viewer.js'; import { CameraMode, Viewer } from '../engine/viewer/viewer.js';
import { AddDiv, AddDomElement, ShowDomElement, SetDomElementOuterHeight } from '../engine/viewer/domutils.js'; import { AddDiv, AddDomElement, ShowDomElement, SetDomElementOuterHeight } from '../engine/viewer/domutils.js';
import { CalculatePopupPositionToScreen, ShowListPopup } from './dialogs.js'; import { CalculatePopupPositionToScreen, ShowListPopup } from './dialogs.js';
import { HandleEvent } from './eventhandler.js'; import { HandleEvent } from './eventhandler.js';
@ -23,6 +23,7 @@ import { CookieGetBoolVal, CookieSetBoolVal } from './cookiehandler.js';
import { ShadingType } from '../engine/threejs/threeutils.js'; import { ShadingType } from '../engine/threejs/threeutils.js';
import { MeasureTool } from './measuretool.js'; import { MeasureTool } from './measuretool.js';
import { CloseAllDialogs } from './dialog.js'; import { CloseAllDialogs } from './dialog.js';
import { FeatureSet } from './featureset.js';
import * as THREE from 'three'; import * as THREE from 'three';
@ -556,14 +557,33 @@ export class Website
this.viewer.FlipUpVector (); this.viewer.FlipUpVector ();
}); });
AddSeparator (this.toolbar, ['only_on_model']); AddSeparator (this.toolbar, ['only_on_model']);
AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_on_model'], (buttonIndex) => { if (FeatureSet.OrthographicView) {
if (buttonIndex === 0) { AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Perspective camera', 'Orthographic camera'], 0, ['only_on_model'], (buttonIndex) => {
this.viewer.SetFixUpVector (true); if (buttonIndex === 0) {
} else if (buttonIndex === 1) { this.viewer.SetCameraMode (CameraMode.Perspective);
this.viewer.SetFixUpVector (false); } else if (buttonIndex === 1) {
} this.viewer.SetCameraMode (CameraMode.Orthographic);
}); }
AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); });
AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']);
AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_full_width', 'only_on_model'], (buttonIndex) => {
if (buttonIndex === 0) {
this.viewer.SetFixUpVector (true);
} else if (buttonIndex === 1) {
this.viewer.SetFixUpVector (false);
}
});
AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']);
} else {
AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_on_model'], (buttonIndex) => {
if (buttonIndex === 0) {
this.viewer.SetFixUpVector (true);
} else if (buttonIndex === 1) {
this.viewer.SetFixUpVector (false);
}
});
AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']);
}
let measureToolButton = AddPushButton (this.toolbar, 'measure', 'Measure', ['only_full_width', 'only_on_model'], (isSelected) => { let measureToolButton = AddPushButton (this.toolbar, 'measure', 'Measure', ['only_full_width', 'only_on_model'], (isSelected) => {
HandleEvent ('measure_tool_activated', isSelected ? 'on' : 'off'); HandleEvent ('measure_tool_activated', isSelected ? 'on' : 'off');
this.navigator.SetSelection (null); this.navigator.SetSelection (null);
@ -582,7 +602,7 @@ export class Website
}); });
}); });
AddButton (this.toolbar, 'share', 'Share model', ['only_full_width', 'only_on_model'], () => { AddButton (this.toolbar, 'share', 'Share model', ['only_full_width', 'only_on_model'], () => {
ShowSharingDialog (importer.GetFileList (), this.settings, this.viewer.GetCamera ()); ShowSharingDialog (importer.GetFileList (), this.settings, this.viewer);
}); });
this.parameters.fileInput.addEventListener ('change', (ev) => { this.parameters.fileInput.addEventListener ('change', (ev) => {

View File

@ -15,22 +15,42 @@ describe ('Parameter List', function () {
); );
let background = new OV.RGBAColor (4, 5, 6, 7); let background = new OV.RGBAColor (4, 5, 6, 7);
let color = new OV.RGBColor (1, 2, 3); let color = new OV.RGBColor (1, 2, 3);
let urlParams1 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).GetParameterList (); {
let urlParams2 = OV.CreateUrlBuilder ().AddCamera (camera).GetParameterList (); let urlParams = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).GetParameterList ();
let urlParams3 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).GetParameterList (); assert.strictEqual (urlParams, 'model=a.txt,b.txt');
let urlParams4 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).AddDefaultColor (color).GetParameterList (); }
let urlParams5 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).AddBackgroundColor (background).AddDefaultColor (color).GetParameterList (); {
let urlParams6 = OV.CreateUrlBuilder ().AddEdgeSettings ({ let urlParams = OV.CreateUrlBuilder ().AddCamera (camera).GetParameterList ();
showEdges : true, assert.strictEqual (urlParams, 'camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000,45.00000');
edgeColor : new OV.RGBColor (1, 2, 3), }
edgeThreshold : 15 {
}).GetParameterList (); let urlParams = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).GetParameterList ();
assert.strictEqual (urlParams1, 'model=a.txt,b.txt'); assert.strictEqual (urlParams, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000,45.00000');
assert.strictEqual (urlParams2, 'camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000,45.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,45.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,45.00000$defaultcolor=1,2,3'); let urlParams = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).AddDefaultColor (color).GetParameterList ();
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,45.00000$backgroundcolor=4,5,6,7$defaultcolor=1,2,3'); assert.strictEqual (urlParams, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000,45.00000$defaultcolor=1,2,3');
assert.strictEqual (urlParams6, 'edgesettings=on,1,2,3,15'); }
{
let urlParams = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).AddBackgroundColor (background).AddDefaultColor (color).GetParameterList ();
assert.strictEqual (urlParams, 'model=a.txt,b.txt$camera=1.00000,1.00000,1.00000,0.00000,0.00000,0.00000,0.00000,0.00000,1.00000,45.00000$backgroundcolor=4,5,6,7$defaultcolor=1,2,3');
}
{
let urlParams = OV.CreateUrlBuilder ().AddEdgeSettings ({
showEdges : true,
edgeColor : new OV.RGBColor (1, 2, 3),
edgeThreshold : 15
}).GetParameterList ();
assert.strictEqual (urlParams, 'edgesettings=on,1,2,3,15');
}
{
let urlParams = OV.CreateUrlBuilder ().AddCameraMode (OV.CameraMode.Perspective).GetParameterList ();
assert.strictEqual (urlParams, 'cameramode=perspective');
}
{
let urlParams = OV.CreateUrlBuilder ().AddCameraMode (OV.CameraMode.Orthographic).GetParameterList ();
assert.strictEqual (urlParams, 'cameramode=orthographic');
}
}); });
it ('Parameter list parser', function () { it ('Parameter list parser', function () {
@ -43,48 +63,72 @@ describe ('Parameter List', function () {
); );
let background = new OV.RGBAColor (4, 5, 6, 7); let background = new OV.RGBAColor (4, 5, 6, 7);
let color = new OV.RGBColor (1, 2, 3); 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 parser = OV.CreateUrlParser ('a.txt,b.txt');
let urlParams2b = 'camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000,60.0000'; assert.deepStrictEqual (parser.GetModelUrls (), modelUrls);
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'; assert.deepStrictEqual (parser.GetCamera (), null);
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,7$defaultcolor=1,2,3';
let urlParams6 = 'edgesettings=on,1,2,3,15'; {
let parserLegacy = OV.CreateUrlParser (urlParamsLegacy); let parser = OV.CreateUrlParser ('model=a.txt,b.txt');
assert.deepStrictEqual (parserLegacy.GetModelUrls (), modelUrls); assert.deepStrictEqual (parser.GetModelUrls (), modelUrls);
assert.deepStrictEqual (parserLegacy.GetCamera (), null); assert.deepStrictEqual (parser.GetCamera (), null);
let parser1 = OV.CreateUrlParser (urlParams1); assert.deepStrictEqual (parser.GetDefaultColor (), null);
assert.deepStrictEqual (parser1.GetModelUrls (), modelUrls); }
assert.deepStrictEqual (parser1.GetCamera (), null);
assert.deepStrictEqual (parser1.GetDefaultColor (), null); {
let parser2 = OV.CreateUrlParser (urlParams2); let parser = OV.CreateUrlParser ('camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000');
assert.deepStrictEqual (parser2.GetModelUrls (), null); assert.deepStrictEqual (parser.GetModelUrls (), null);
assert.deepStrictEqual (parser2.GetCamera (), camera); assert.deepStrictEqual (parser.GetCamera (), camera);
assert.deepStrictEqual (parser2.GetDefaultColor (), null); assert.deepStrictEqual (parser.GetDefaultColor (), null);
let parser2b = OV.CreateUrlParser (urlParams2b); }
assert.deepStrictEqual (parser2b.GetModelUrls (), null);
assert.deepStrictEqual (parser2b.GetCamera (), new OV.Camera (new OV.Coord3D (1.0, 1.0, 1.0), new OV.Coord3D (0.0, 0.0, 0.0), new OV.Coord3D (0.0, 0.0, 1.0), 60.0)); {
assert.deepStrictEqual (parser2b.GetDefaultColor (), null); let parser = OV.CreateUrlParser ('camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000,60.0000');
let parser3 = OV.CreateUrlParser (urlParams3); assert.deepStrictEqual (parser.GetModelUrls (), null);
assert.deepStrictEqual (parser3.GetModelUrls (), modelUrls); assert.deepStrictEqual (parser.GetCamera (), new OV.Camera (new OV.Coord3D (1.0, 1.0, 1.0), new OV.Coord3D (0.0, 0.0, 0.0), new OV.Coord3D (0.0, 0.0, 1.0), 60.0));
assert.deepStrictEqual (parser3.GetCamera (), camera); assert.deepStrictEqual (parser.GetDefaultColor (), null);
assert.deepStrictEqual (parser3.GetDefaultColor (), null); }
let parser4 = OV.CreateUrlParser (urlParams4);
assert.deepStrictEqual (parser4.GetModelUrls (), modelUrls); {
assert.deepStrictEqual (parser4.GetCamera (), camera); let parser = OV.CreateUrlParser ('model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000');
assert.deepStrictEqual (parser4.GetDefaultColor (), color); assert.deepStrictEqual (parser.GetModelUrls (), modelUrls);
let parser5 = OV.CreateUrlParser (urlParams5); assert.deepStrictEqual (parser.GetCamera (), camera);
assert.deepStrictEqual (parser5.GetModelUrls (), modelUrls); assert.deepStrictEqual (parser.GetDefaultColor (), null);
assert.deepStrictEqual (parser5.GetCamera (), camera); }
assert.deepStrictEqual (parser5.GetDefaultColor (), color);
assert.deepStrictEqual (parser5.GetBackgroundColor (), background); {
let parser6 = OV.CreateUrlParser (urlParams6); let parser = OV.CreateUrlParser ('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');
assert.deepStrictEqual (parser6.GetEdgeSettings (), { assert.deepStrictEqual (parser.GetModelUrls (), modelUrls);
showEdges : true, assert.deepStrictEqual (parser.GetCamera (), camera);
edgeColor : new OV.RGBColor (1, 2, 3), assert.deepStrictEqual (parser.GetDefaultColor (), color);
edgeThreshold : 15 }
});
{
let parser = OV.CreateUrlParser ('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');
assert.deepStrictEqual (parser.GetModelUrls (), modelUrls);
assert.deepStrictEqual (parser.GetCamera (), camera);
assert.deepStrictEqual (parser.GetDefaultColor (), color);
assert.deepStrictEqual (parser.GetBackgroundColor (), background);
}
{
let parser = OV.CreateUrlParser ('edgesettings=on,1,2,3,15');
assert.deepStrictEqual (parser.GetEdgeSettings (), {
showEdges : true,
edgeColor : new OV.RGBColor (1, 2, 3),
edgeThreshold : 15
});
}
{
let parser = OV.CreateUrlParser ('cameramode=perspective');
assert.deepStrictEqual (parser.GetCameraMode (), OV.CameraMode.Perspective);
}
{
let parser = OV.CreateUrlParser ('cameramode=orthographic');
assert.deepStrictEqual (parser.GetCameraMode (), OV.CameraMode.Orthographic);
}
}); });
}); });