Use RGBAColor for background.
This commit is contained in:
parent
c168f944f6
commit
62af23cafc
BIN
sandbox/background.png
Normal file
BIN
sandbox/background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
76
sandbox/embed_background.html
Normal file
76
sandbox/embed_background.html
Normal file
@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no">
|
||||
|
||||
<title>Online 3D Viewer</title>
|
||||
|
||||
<script type="text/javascript" src="../build/o3dv.min-dev.js"></script>
|
||||
|
||||
<script type='text/javascript'>
|
||||
OV.Init3DViewerElements ();
|
||||
</script>
|
||||
|
||||
<style>
|
||||
html, body
|
||||
{
|
||||
background: url('background.png');
|
||||
}
|
||||
|
||||
iframe, div.online_3d_viewer
|
||||
{
|
||||
float: left;
|
||||
border: 1px solid #eeeeee;
|
||||
margin: 0px 4px 4px 0px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe
|
||||
src="../../website/embed.html#model=../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl$backgroundcolor=255,0,0"
|
||||
width=360 height=240
|
||||
style="border:1px solid #eeeeee;">
|
||||
</iframe>
|
||||
<iframe
|
||||
src="../../website/embed.html#model=../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl$backgroundcolor=255,0,0,128"
|
||||
width=360 height=240
|
||||
style="border:1px solid #eeeeee;">
|
||||
</iframe>
|
||||
<iframe
|
||||
src="../../website/embed.html#model=../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl$backgroundcolor=255,0,0,128$envsettings=fishermans_bastion,on"
|
||||
width=360 height=240
|
||||
style="border:1px solid #eeeeee;">
|
||||
</iframe>
|
||||
<iframe
|
||||
src="../../website/embed.html#model=../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl$backgroundcolor=255,0,0,0"
|
||||
width=360 height=240
|
||||
style="border:1px solid #eeeeee;">
|
||||
</iframe>
|
||||
<div class="online_3d_viewer"
|
||||
style="width: 360px; height: 240px;"
|
||||
model="../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl"
|
||||
backgroundcolor="255,0,0">
|
||||
</div>
|
||||
<div class="online_3d_viewer"
|
||||
style="width: 360px; height: 240px;"
|
||||
model="../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl"
|
||||
backgroundcolor="255,0,0,128">
|
||||
</div>
|
||||
<div class="online_3d_viewer"
|
||||
style="width: 360px; height: 240px;"
|
||||
model="../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl"
|
||||
backgroundcolor="255,0,0,128"
|
||||
environmentmap="../../website/assets/envmaps/fishermans_bastion/posx.jpg,../../website/assets/envmaps/fishermans_bastion/negx.jpg,../../website/assets/envmaps/fishermans_bastion/posy.jpg,../../website/assets/envmaps/fishermans_bastion/negy.jpg,../../website/assets/envmaps/fishermans_bastion/posz.jpg,../../website/assets/envmaps/fishermans_bastion/negz.jpg"
|
||||
environmentmapbg="true">
|
||||
</div>
|
||||
<div class="online_3d_viewer"
|
||||
style="width: 360px; height: 240px;"
|
||||
model="../../website/assets/models/solids.obj,../../website/assets/models/solids.mtl"
|
||||
backgroundcolor="255,0,0,0">
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -1,20 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no">
|
||||
<title>Online 3D Viewer</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div style="background:#cccccc;width:800px;height:600px;"></div>
|
||||
<iframe
|
||||
src="../../website/embed.html#model=../test/testfiles/obj/hundred_cubes.obj,../test/testfiles/obj/hundred_cubes.mtl$camera=1,1,1,0,0,0,0,0,1"
|
||||
width=800 height=600
|
||||
style="border:1px solid #eeeeee;">
|
||||
</iframe>
|
||||
<div style="background:#cccccc;width:800px;height:2000px;"></div>
|
||||
</body>
|
||||
|
||||
</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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<script type='text/javascript'>
|
||||
OV.Init3DViewerElements (function (viewers) {
|
||||
let firstViewer = viewers[0].viewer;
|
||||
firstViewer.SetBackgroundColor (new OV.RGBColor (34, 34, 34));
|
||||
firstViewer.SetBackgroundColor (new OV.RGBAColor (34, 34, 34, 255));
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 (
|
||||
|
||||
@ -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 ()
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 ();
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -43,6 +43,13 @@
|
||||
OV.StartEmbed ('../libs');
|
||||
</script>
|
||||
<!-- embed init end -->
|
||||
|
||||
<style>
|
||||
html, body
|
||||
{
|
||||
background: transparent;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user