Enable camera mode setting during embedding.
This commit is contained in:
parent
14b0863d64
commit
12537cdac8
@ -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>
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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');
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
export const FeatureSet =
|
export const FeatureSet =
|
||||||
{
|
{
|
||||||
|
OrthographicView : false
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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 ());
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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) => {
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user