From 8edce119cdd50c4a8f596080a5ca29de37c7cf7f Mon Sep 17 00:00:00 2001 From: kovacsv Date: Wed, 28 Jun 2023 20:35:31 +0200 Subject: [PATCH] Option to switch between themes without opening a model #400 --- assets/icons/dark_mode.svg | 47 +++++++++++ assets/icons/light_mode.svg | 50 ++++++++++++ source/website/css/O3DVIcons/O3DVIcons.woff | Bin 8116 -> 8572 bytes source/website/css/icons.css | 86 +++++++++++--------- source/website/css/website.css | 5 ++ source/website/settings.js | 17 ++-- source/website/sidebar.js | 8 +- source/website/sidebarsettingspanel.js | 74 +++-------------- source/website/website.js | 29 +++++-- website/info/css/O3DVIcons.woff | Bin 8116 -> 8572 bytes website/info/css/icons.css | 86 +++++++++++--------- 11 files changed, 242 insertions(+), 160 deletions(-) create mode 100644 assets/icons/dark_mode.svg create mode 100644 assets/icons/light_mode.svg diff --git a/assets/icons/dark_mode.svg b/assets/icons/dark_mode.svg new file mode 100644 index 0000000..2e569e0 --- /dev/null +++ b/assets/icons/dark_mode.svg @@ -0,0 +1,47 @@ + + + + + + + + diff --git a/assets/icons/light_mode.svg b/assets/icons/light_mode.svg new file mode 100644 index 0000000..8b39435 --- /dev/null +++ b/assets/icons/light_mode.svg @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/source/website/css/O3DVIcons/O3DVIcons.woff b/source/website/css/O3DVIcons/O3DVIcons.woff index ed02e9ad9603553c979bcfc8fca95cd4ce9418bc..2e28dd7c6e4197f1c8bd37a858edf5d8f5320571 100644 GIT binary patch delta 8169 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 Xx{S&@gCJ@5uDI2!!5=vYn|If& zQ>97Al}GDxmYTug%SWd*0rROR%GRX03Vx<>>)8r^)4Cm+v+S+FeKHZNCWy|tR@D+1 zeEy(q&USy#g@zGYVj(E+7lDHQq)#iMz}|vzm|6X7!){8DH78LCDQf(ct753sXS!s15gn zdgApe#BvLr4~OoqyZ4;5?%wvh zHL6~F=R>P4Kfkq-mw;5u6%bQ~XY(+DA#{^L*V~_l9BSn<7*~kM-k!kYxOGV0?cbwp z#%H&7OB(a%$h@q;-&Hr{l;Mw{_kLy7Z1;1@t2w z9!b5GJ95xOU(}82M!u|oB|~M9&@~jQ827ng$~&i1fvj?1;zVrCG8k=C=G_R}6S_Qh zIzKKFkwuaT9$^N|8{Yr^T2W|D=T+cUL|LR{kx<$rL3Hqu=wT|!T~$@e1!@_w203^& z5w4am8=-`E$f%2++s&^e)pMo7ljj6cg`mQ;)y=r@_Na%l!=wTxU zg~LbYIk{yIFkjL`pc?!6Ja>@J^MKDoX0-c1;#%Rwh3|UoO4g?dCEV=d;SpR2ZqmY+ zEkBTYAm7jJD1L+fJ{RxEmGlu9g!m*AEBc1wq$;odG4TBMkLS#MnTXh4*saW(GcP%% zI}EtDAGNK-AHl&R+KrM9vkmiP^yoWKmZcFqi7x9gpl%v)4SzM3Og_gS8BJRxIiRiK zsaBI(bIx-X`Em&Q_!!351iCHFY+3ZY{O&}Rg|NT>4zChyS$ugDSvsoaob>uaP~7?c zA=L^6b7Rq~vZo-!dj8$_TXz9e@e7nlaKo8fiY&Ofrsg_6wr$0&dnjW=8tnN!GQ<@$ z8soUO?`$Ua=_T_wUuV z4BHaxN0-S69~s+roJ4$u&H}q-@9SOM5u(OX$eJizmitB#f>?_njX&e0y1Gse-%#SC z2~*{MrgU$6qjs*=@}SA30zS|W822h;26@SO55w40dVYF(rzx|=JT>t0k9QB?=y0CRt1kt?|+#tugligrtvcEo`nL`tO}T1g<95$L4oqZs%Y>zLG-msl;>GC00Cueg=C%XqYS-S|!fqy(jeeE-*u!>r}= zrwjnCBsLCb^?`6h1fao!rvHEK9OH%U`Zx$9Ob#0{$ylHuYD;cw9GH6s)o#fG;LJI{ zx_bl=1<7}ja(9Swcj1h8@QioSHh0K2cVR?!a71=dI(JAqcM$@2 z2-sXQfF%zQFz#rq6$Y>8m3Krge?YZ$yQg&x>98Uw;Ph-zamn4U^+NEvN1en+R=UbD zzqQFgk)T|C)+Dm0GVDj_0+&V!qrzf=)*`Ke>iMdI_H0wq!GQw3r)=?JLx+K9wLED= zRAjjHkn75o=O~@S5-);HCYvDQ1l2)~m9CS({hB9arBTDejW4I>o+;JWz&VzW_FVt? z7qMJK4FlDL%-mCOMKOc2Vy`@V6Mew-g<_L)GE8`GBKr4kD;lR+{G`a*8XB5r<3pVC zY-=2LZ8F9|9-^peMO9CZqcvZWtp6hWi}{Mk=JW;<%oQ@rv>~cPd3Hm=OPQ7GzDZgQ Nr|cH6h`;#({{!X>yA=Qc delta 7713 zcmX|GWl)|?kbH5M;4ZJ`VV*7r|>q0?jOEfM87_S|AxsR#6df@hBl@j^uq*# zqKvPdF41QTmJi*PXCd!{GZrA-x1C^f|&(xra`NPhe0;%ip6~&l#C|uLcUzA5L8GM9=qXq z6fc03QuSak6~e^-kBG-{e=?YX`{MdOw`+9&VB&>Tfhl;Vw^1Im&YK!Wj48v6P-P)W zbd2L(iEA+;UjwDttjuNM8J!?xo#VB0mTj>m-xayps!UMqoba?yDKvzSZLvOI5!uDE zj9o07@U&kkHKc=W5lu{&@N`(IHKc=mu^Y%ILB0c*(TE8Wo(?J1hIq0scIFGo@7TK& zoK7gQQ#`}it2&K<+_Snpb)qO&JoH|FYu}$*sq2??npc>2r1B4}rT55Rx@c@7wR6y^ zV7N&THqZ_vVVz=7)ejbv4M8%FDS~wk0s}x3s75*>K@SNJKjAUR#>D)z>QMMaascFk zt4a!}PrrCr9E|LG-qr3e5-=c?UD=SV-PCjW)PMJS@7%wa3jBSzWa-|ybDYsBPKpIf zr-EIR6;I;iB^Sgx=z~{Te5k@+wtUE=()VY)6Qj0Sst0*(iheoGR~|jjVk2)0#e=dDW}jaLM}qL38vxI)}TRWEaj| zsJhqhxkf>h4g->RQ~HQ77q*#Pag40nZuJpI{QA^o@qzkeq;xioy)^POc!+mFQf-|a=e1pnCUIURn#}G1Z29&2&|6 z^LOKR1IMqF&s(39BD`G!L^9fd0}olEBDCy!-ZLXqi=Q+e?nrPn-Uhu^XPLUXiX1-rRYU+0-Ru^t_+nlA|+OIBPH z;Z}y*lAba<|C-~3F4KImzNbMWUMVKMbS+zrjz4S?!W;2N7rq(J-+7*&7SnXy47L|L z_Wm^I&wX{YZF)&}$>n{me7UgwyL)9f7UPJYi%HR+T-1=$oF8C94`EgexiUhkXB$Q+ zIv%rxU2QB;|J9f{RK!~SsoG4yx8d92&eCHsM@mqX_g%l2X;s{_fBfZh{d?FfcW1x zC8@WB>eyZ_Bo%Pgt{C!&<{9C1w=MVp4)Nywvt=aiShr&x24WDvZS%-0lVBD1xlYv!8 He=pWa!CGmt3J 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 WI6bQh>OBROv4&nsxyr|n|NkFRG4K!o diff --git a/source/website/css/icons.css b/source/website/css/icons.css index f5e5367..589f444 100644 --- a/source/website/css/icons.css +++ b/source/website/css/icons.css @@ -1,6 +1,6 @@ @font-face { font-family: "O3DVIcons"; - src: url("O3DVIcons/O3DVIcons.woff?5b9efabdc2c1ef6b3990e38a69a1fb39") format("woff"); + src: url("O3DVIcons/O3DVIcons.woff?d27bdb5af135068ed4a9350e285e132e") format("woff"); } i[class^="icon-"]:before, i[class*=" icon-"]:before { @@ -38,120 +38,126 @@ i[class^="icon-"]:before, i[class*=" icon-"]:before { .icon-collapse:before { content: "\f108"; } -.icon-deisolate:before { +.icon-dark_mode:before { content: "\f109"; } -.icon-details:before { +.icon-deisolate:before { content: "\f10a"; } -.icon-donate:before { +.icon-details:before { content: "\f10b"; } -.icon-download:before { +.icon-donate:before { content: "\f10c"; } -.icon-expand:before { +.icon-download:before { content: "\f10d"; } -.icon-export:before { +.icon-expand:before { content: "\f10e"; } -.icon-feedback:before { +.icon-export:before { content: "\f10f"; } -.icon-file_download:before { +.icon-feedback:before { content: "\f110"; } -.icon-files:before { +.icon-file_download:before { content: "\f111"; } -.icon-fit:before { +.icon-files:before { content: "\f112"; } -.icon-fix_up_off:before { +.icon-fit:before { content: "\f113"; } -.icon-fix_up_on:before { +.icon-fix_up_off:before { content: "\f114"; } -.icon-flat_list:before { +.icon-fix_up_on:before { content: "\f115"; } -.icon-flip:before { +.icon-flat_list:before { content: "\f116"; } -.icon-github:before { +.icon-flip:before { content: "\f117"; } -.icon-hidden:before { +.icon-github:before { content: "\f118"; } -.icon-info:before { +.icon-hidden:before { content: "\f119"; } -.icon-isolate:before { +.icon-info:before { content: "\f11a"; } -.icon-materials:before { +.icon-isolate:before { content: "\f11b"; } -.icon-measure_angle:before { +.icon-light_mode:before { content: "\f11c"; } -.icon-measure_distance_parallel:before { +.icon-materials:before { content: "\f11d"; } -.icon-measure_distance:before { +.icon-measure_angle:before { content: "\f11e"; } -.icon-measure:before { +.icon-measure_distance_parallel:before { content: "\f11f"; } -.icon-meshes:before { +.icon-measure_distance:before { content: "\f120"; } -.icon-missing_files:before { +.icon-measure:before { content: "\f121"; } -.icon-model:before { +.icon-meshes:before { content: "\f122"; } -.icon-open_url:before { +.icon-missing_files:before { content: "\f123"; } -.icon-open:before { +.icon-model:before { content: "\f124"; } -.icon-print3d:before { +.icon-open_url:before { content: "\f125"; } -.icon-settings:before { +.icon-open:before { content: "\f126"; } -.icon-share:before { +.icon-print3d:before { content: "\f127"; } -.icon-snapshot:before { +.icon-settings:before { content: "\f128"; } -.icon-tree_mesh:before { +.icon-share:before { content: "\f129"; } -.icon-tree_view:before { +.icon-snapshot:before { content: "\f12a"; } -.icon-twitter:before { +.icon-tree_mesh:before { content: "\f12b"; } -.icon-up_y:before { +.icon-tree_view:before { content: "\f12c"; } -.icon-up_z:before { +.icon-twitter:before { content: "\f12d"; } -.icon-visible:before { +.icon-up_y:before { content: "\f12e"; } -.icon-warning:before { +.icon-up_z:before { content: "\f12f"; } +.icon-visible:before { + content: "\f130"; +} +.icon-warning:before { + content: "\f131"; +} diff --git a/source/website/css/website.css b/source/website/css/website.css index 69135e7..0f4fb90 100644 --- a/source/website/css/website.css +++ b/source/website/css/website.css @@ -207,6 +207,11 @@ div.ov_toolbar div.ov_toolbar_button padding: 10px; } +div.ov_toolbar div.ov_toolbar_button.align_right +{ + float: right; +} + div.ov_toolbar div.ov_toolbar_button.selected { background: var(--ov_toolbar_selected_color); diff --git a/source/website/settings.js b/source/website/settings.js index 1c59a4a..c4538f0 100644 --- a/source/website/settings.js +++ b/source/website/settings.js @@ -10,18 +10,24 @@ export const Theme = export class Settings { - constructor () + constructor (themeId) { + this.themeId = themeId; this.environmentMapName = 'fishermans_bastion'; this.backgroundIsEnvMap = false; - this.backgroundColor = new RGBAColor (255, 255, 255, 255); - this.defaultColor = new RGBColor (200, 200, 200); + if (this.themeId === Theme.Light) { + this.backgroundColor = new RGBAColor (255, 255, 255, 255); + this.defaultColor = new RGBColor (200, 200, 200); + } else if (this.themeId === Theme.Dark) { + this.backgroundColor = new RGBAColor (42, 43, 46, 255); + this.defaultColor = new RGBColor (200, 200, 200); + } this.edgeSettings = new EdgeSettings (false, new RGBColor (0, 0, 0), 1); - this.themeId = Theme.Light; } LoadFromCookies () { + this.themeId = CookieGetIntVal ('ov_theme_id', Theme.Light); this.environmentMapName = CookieGetStringVal ('ov_environment_map', 'fishermans_bastion'); this.backgroundIsEnvMap = CookieGetBoolVal ('ov_background_is_envmap', false); this.backgroundColor = CookieGetRGBAColorVal ('ov_background_color', new RGBAColor (255, 255, 255, 255)); @@ -29,11 +35,11 @@ export class Settings this.edgeSettings.showEdges = CookieGetBoolVal ('ov_show_edges', false); this.edgeSettings.edgeColor = CookieGetRGBColorVal ('ov_edge_color', new RGBColor (0, 0, 0)); this.edgeSettings.edgeThreshold = CookieGetIntVal ('ov_edge_threshold', 1); - this.themeId = CookieGetIntVal ('ov_theme_id', Theme.Light); } SaveToCookies () { + CookieSetIntVal ('ov_theme_id', this.themeId); CookieSetStringVal ('ov_environment_map', this.environmentMapName); CookieSetBoolVal ('ov_background_is_envmap', this.backgroundIsEnvMap); CookieSetRGBAColorVal ('ov_background_color', this.backgroundColor); @@ -41,6 +47,5 @@ export class Settings CookieSetBoolVal ('ov_show_edges', this.edgeSettings.showEdges); CookieSetRGBColorVal ('ov_edge_color', this.edgeSettings.edgeColor); CookieSetIntVal ('ov_edge_threshold', this.edgeSettings.edgeThreshold); - CookieSetIntVal ('ov_theme_id', this.themeId); } } diff --git a/source/website/sidebar.js b/source/website/sidebar.js index 34d2019..04e304a 100644 --- a/source/website/sidebar.js +++ b/source/website/sidebar.js @@ -62,13 +62,15 @@ export class Sidebar }, onEdgeDisplayChanged : () => { this.callbacks.onEdgeDisplayChanged (); - }, - onThemeChanged : () => { - this.callbacks.onThemeChanged (); } }); } + UpdateControlsStatus () + { + this.settingsPanel.UpdateControlsStatus (); + } + UpdateControlsVisibility () { this.settingsPanel.UpdateControlsVisibility (); diff --git a/source/website/sidebarsettingspanel.js b/source/website/sidebarsettingspanel.js index 96d0bc8..f85056d 100644 --- a/source/website/sidebarsettingspanel.js +++ b/source/website/sidebarsettingspanel.js @@ -3,7 +3,7 @@ import { AddDiv, AddDomElement, ShowDomElement, SetDomElementOuterHeight } from import { AddRangeSlider, AddToggle, AddCheckbox } from '../website/utils.js'; import { CalculatePopupPositionToElementTopLeft } from './dialogs.js'; import { PopupDialog } from './dialog.js'; -import { Settings, Theme } from './settings.js'; +import { Settings } from './settings.js'; import { SidebarPanel } from './sidebarpanel.js'; import { ShadingType } from '../engine/threejs/threeutils.js'; import { CameraMode } from '../engine/viewer/camera.js'; @@ -416,45 +416,6 @@ class SettingsImportParametersSection extends SettingsSection } } -class SettingsAppearanceSection extends SettingsSection -{ - constructor (parentDiv, settings) - { - super (parentDiv, 'Appearance', settings); - this.darkModeToggle = null; - } - - Init (callbacks) - { - super.Init (callbacks); - - let darkModeParameterDiv = AddDiv (this.contentDiv, 'ov_sidebar_parameter'); - - this.darkModeToggle = AddToggle (darkModeParameterDiv, 'ov_sidebar_parameter_toggle'); - this.darkModeToggle.OnChange (() => { - this.settings.themeId = (this.darkModeToggle.GetStatus () ? Theme.Dark : Theme.Light); - this.callbacks.onThemeChanged (); - }); - AddDiv (darkModeParameterDiv, null, 'Dark Mode'); - - let isDarkMode = (this.settings.themeId === Theme.Dark); - this.darkModeToggle.SetStatus (isDarkMode); - } - - Update () - { - if (this.darkModeToggle !== null) { - let isDarkMode = (this.settings.themeId === Theme.Dark); - this.darkModeToggle.SetStatus (isDarkMode); - } - } - - UpdateVisibility () - { - - } -} - export class SidebarSettingsPanel extends SidebarPanel { constructor (parentDiv, settings) @@ -465,7 +426,6 @@ export class SidebarSettingsPanel extends SidebarPanel this.sectionsDiv = AddDiv (this.contentDiv, 'ov_sidebar_settings_sections ov_thin_scrollbar'); this.modelDisplaySection = new SettingsModelDisplaySection (this.sectionsDiv, this.settings); this.importParametersSection = new SettingsImportParametersSection (this.sectionsDiv, this.settings); - this.appearanceSection = new SettingsAppearanceSection (this.sectionsDiv, this.settings); this.resetToDefaultsButton = AddDiv (this.contentDiv, 'ov_button ov_panel_button outline', 'Reset to Default'); this.resetToDefaultsButton.addEventListener ('click', () => { @@ -492,7 +452,6 @@ export class SidebarSettingsPanel extends SidebarPanel { this.modelDisplaySection.Clear (); this.importParametersSection.Clear (); - this.appearanceSection.Clear (); } Init (callbacks) @@ -530,20 +489,12 @@ export class SidebarSettingsPanel extends SidebarPanel this.callbacks.onDefaultColorChanged (); } }); - this.appearanceSection.Init ({ - onThemeChanged : () => { - if (this.settings.themeId === Theme.Light) { - 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 RGBAColor (42, 43, 46, 255); - this.settings.defaultColor = new RGBColor (200, 200, 200); - } - this.modelDisplaySection.Update (); - this.importParametersSection.Update (); - callbacks.onThemeChanged (); - } - }); + } + + UpdateControlsStatus () + { + this.modelDisplaySection.Update (); + this.importParametersSection.Update (); } UpdateControlsVisibility () @@ -555,7 +506,8 @@ export class SidebarSettingsPanel extends SidebarPanel ResetToDefaults () { - let defaultSettings = new Settings (); + console.log (this.settings.themeId); + let defaultSettings = new Settings (this.settings.themeId); this.settings.environmentMapName = defaultSettings.environmentMapName; this.settings.backgroundIsEnvMap = defaultSettings.backgroundIsEnvMap; @@ -563,13 +515,9 @@ export class SidebarSettingsPanel extends SidebarPanel this.settings.defaultColor = defaultSettings.defaultColor; this.settings.edgeSettings = defaultSettings.edgeSettings; this.settings.themeId = defaultSettings.themeId; - - this.modelDisplaySection.Update (); - this.importParametersSection.Update (); - this.appearanceSection.Update (); - + console.log (this.settings.themeId); + this.UpdateControlsStatus (); this.callbacks.onEnvironmentMapChanged (); - this.callbacks.onThemeChanged (); } Resize () diff --git a/source/website/website.js b/source/website/website.js index c563b7c..50f4cb3 100644 --- a/source/website/website.js +++ b/source/website/website.js @@ -186,7 +186,7 @@ export class Website constructor (parameters) { this.parameters = parameters; - this.settings = new Settings (); + this.settings = new Settings (Theme.Light); this.viewer = new Viewer (); this.measureTool = new MeasureTool (this.viewer, this.settings); this.hashHandler = new HashHandler (); @@ -566,8 +566,12 @@ export class Website { this.settings.themeId = newThemeId; this.themeHandler.SwitchTheme (this.settings.themeId); - this.settings.SaveToCookies (); if (resetColors) { + let defaultSettings = new Settings (this.settings.themeId); + this.settings.backgroundColor = defaultSettings.backgroundColor; + this.settings.defaultColor = defaultSettings.defaultColor; + this.sidebar.UpdateControlsStatus (); + this.viewer.SetBackgroundColor (this.settings.backgroundColor); let modelLoader = this.modelLoaderUI.GetModelLoader (); if (modelLoader.GetDefaultMaterial () !== null) { @@ -575,6 +579,8 @@ export class Website modelLoader.ReplaceDefaultMaterialColor (this.settings.defaultColor); } } + + this.settings.SaveToCookies (); } InitViewer () @@ -666,7 +672,7 @@ export class Website AddButton (this.toolbar, 'flip', 'Flip up vector', ['only_on_model'], () => { this.viewer.FlipUpVector (); }); - AddSeparator (this.toolbar, ['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); @@ -675,7 +681,7 @@ export class Website } }); AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); - AddRadioButton (this.toolbar, ['camera_perspective', 'camera_orthographic'], ['Perspective camera', 'Orthographic camera'], 0, ['only_on_model'], (buttonIndex) => { + AddRadioButton (this.toolbar, ['camera_perspective', 'camera_orthographic'], ['Perspective camera', 'Orthographic camera'], 0, ['only_full_width', 'only_on_model'], (buttonIndex) => { if (buttonIndex === 0) { this.viewer.SetCameraMode (CameraMode.Perspective); } else if (buttonIndex === 1) { @@ -725,6 +731,17 @@ export class Website }); }); + let selectedTheme = (this.settings.themeId === Theme.Light ? 1 : 0); + AddRadioButton (this.toolbar, ['dark_mode', 'light_mode'], ['Dark mode', 'Light mode'], selectedTheme, ['align_right'], (buttonIndex) => { + if (buttonIndex === 0) { + this.settings.themeId = Theme.Dark; + } else if (buttonIndex === 1) { + this.settings.themeId = Theme.Light; + } + HandleEvent ('theme_changed', this.settings.themeId === Theme.Light ? 'light' : 'dark'); + this.SwitchTheme (this.settings.themeId, true); + }); + this.parameters.fileInput.addEventListener ('change', (ev) => { if (ev.target.files.length > 0) { HandleEvent ('model_load_started', 'open_file'); @@ -796,10 +813,6 @@ export class Website HandleEvent ('edge_display_changed', this.settings.showEdges ? 'on' : 'off'); this.UpdateEdgeDisplay (); }, - onThemeChanged : () => { - HandleEvent ('theme_changed', this.settings.themeId === Theme.Light ? 'light' : 'dark'); - this.SwitchTheme (this.settings.themeId, true); - }, onResizeRequested : () => { this.layouter.Resize (); }, diff --git a/website/info/css/O3DVIcons.woff b/website/info/css/O3DVIcons.woff index ed02e9ad9603553c979bcfc8fca95cd4ce9418bc..2e28dd7c6e4197f1c8bd37a858edf5d8f5320571 100644 GIT binary patch delta 8169 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 Xx{S&@gCJ@5uDI2!!5=vYn|If& zQ>97Al}GDxmYTug%SWd*0rROR%GRX03Vx<>>)8r^)4Cm+v+S+FeKHZNCWy|tR@D+1 zeEy(q&USy#g@zGYVj(E+7lDHQq)#iMz}|vzm|6X7!){8DH78LCDQf(ct753sXS!s15gn zdgApe#BvLr4~OoqyZ4;5?%wvh zHL6~F=R>P4Kfkq-mw;5u6%bQ~XY(+DA#{^L*V~_l9BSn<7*~kM-k!kYxOGV0?cbwp z#%H&7OB(a%$h@q;-&Hr{l;Mw{_kLy7Z1;1@t2w z9!b5GJ95xOU(}82M!u|oB|~M9&@~jQ827ng$~&i1fvj?1;zVrCG8k=C=G_R}6S_Qh zIzKKFkwuaT9$^N|8{Yr^T2W|D=T+cUL|LR{kx<$rL3Hqu=wT|!T~$@e1!@_w203^& z5w4am8=-`E$f%2++s&^e)pMo7ljj6cg`mQ;)y=r@_Na%l!=wTxU zg~LbYIk{yIFkjL`pc?!6Ja>@J^MKDoX0-c1;#%Rwh3|UoO4g?dCEV=d;SpR2ZqmY+ zEkBTYAm7jJD1L+fJ{RxEmGlu9g!m*AEBc1wq$;odG4TBMkLS#MnTXh4*saW(GcP%% zI}EtDAGNK-AHl&R+KrM9vkmiP^yoWKmZcFqi7x9gpl%v)4SzM3Og_gS8BJRxIiRiK zsaBI(bIx-X`Em&Q_!!351iCHFY+3ZY{O&}Rg|NT>4zChyS$ugDSvsoaob>uaP~7?c zA=L^6b7Rq~vZo-!dj8$_TXz9e@e7nlaKo8fiY&Ofrsg_6wr$0&dnjW=8tnN!GQ<@$ z8soUO?`$Ua=_T_wUuV z4BHaxN0-S69~s+roJ4$u&H}q-@9SOM5u(OX$eJizmitB#f>?_njX&e0y1Gse-%#SC z2~*{MrgU$6qjs*=@}SA30zS|W822h;26@SO55w40dVYF(rzx|=JT>t0k9QB?=y0CRt1kt?|+#tugligrtvcEo`nL`tO}T1g<95$L4oqZs%Y>zLG-msl;>GC00Cueg=C%XqYS-S|!fqy(jeeE-*u!>r}= zrwjnCBsLCb^?`6h1fao!rvHEK9OH%U`Zx$9Ob#0{$ylHuYD;cw9GH6s)o#fG;LJI{ zx_bl=1<7}ja(9Swcj1h8@QioSHh0K2cVR?!a71=dI(JAqcM$@2 z2-sXQfF%zQFz#rq6$Y>8m3Krge?YZ$yQg&x>98Uw;Ph-zamn4U^+NEvN1en+R=UbD zzqQFgk)T|C)+Dm0GVDj_0+&V!qrzf=)*`Ke>iMdI_H0wq!GQw3r)=?JLx+K9wLED= zRAjjHkn75o=O~@S5-);HCYvDQ1l2)~m9CS({hB9arBTDejW4I>o+;JWz&VzW_FVt? z7qMJK4FlDL%-mCOMKOc2Vy`@V6Mew-g<_L)GE8`GBKr4kD;lR+{G`a*8XB5r<3pVC zY-=2LZ8F9|9-^peMO9CZqcvZWtp6hWi}{Mk=JW;<%oQ@rv>~cPd3Hm=OPQ7GzDZgQ Nr|cH6h`;#({{!X>yA=Qc delta 7713 zcmX|GWl)|?kbH5M;4ZJ`VV*7r|>q0?jOEfM87_S|AxsR#6df@hBl@j^uq*# zqKvPdF41QTmJi*PXCd!{GZrA-x1C^f|&(xra`NPhe0;%ip6~&l#C|uLcUzA5L8GM9=qXq z6fc03QuSak6~e^-kBG-{e=?YX`{MdOw`+9&VB&>Tfhl;Vw^1Im&YK!Wj48v6P-P)W zbd2L(iEA+;UjwDttjuNM8J!?xo#VB0mTj>m-xayps!UMqoba?yDKvzSZLvOI5!uDE zj9o07@U&kkHKc=W5lu{&@N`(IHKc=mu^Y%ILB0c*(TE8Wo(?J1hIq0scIFGo@7TK& zoK7gQQ#`}it2&K<+_Snpb)qO&JoH|FYu}$*sq2??npc>2r1B4}rT55Rx@c@7wR6y^ zV7N&THqZ_vVVz=7)ejbv4M8%FDS~wk0s}x3s75*>K@SNJKjAUR#>D)z>QMMaascFk zt4a!}PrrCr9E|LG-qr3e5-=c?UD=SV-PCjW)PMJS@7%wa3jBSzWa-|ybDYsBPKpIf zr-EIR6;I;iB^Sgx=z~{Te5k@+wtUE=()VY)6Qj0Sst0*(iheoGR~|jjVk2)0#e=dDW}jaLM}qL38vxI)}TRWEaj| zsJhqhxkf>h4g->RQ~HQ77q*#Pag40nZuJpI{QA^o@qzkeq;xioy)^POc!+mFQf-|a=e1pnCUIURn#}G1Z29&2&|6 z^LOKR1IMqF&s(39BD`G!L^9fd0}olEBDCy!-ZLXqi=Q+e?nrPn-Uhu^XPLUXiX1-rRYU+0-Ru^t_+nlA|+OIBPH z;Z}y*lAba<|C-~3F4KImzNbMWUMVKMbS+zrjz4S?!W;2N7rq(J-+7*&7SnXy47L|L z_Wm^I&wX{YZF)&}$>n{me7UgwyL)9f7UPJYi%HR+T-1=$oF8C94`EgexiUhkXB$Q+ zIv%rxU2QB;|J9f{RK!~SsoG4yx8d92&eCHsM@mqX_g%l2X;s{_fBfZh{d?FfcW1x zC8@WB>eyZ_Bo%Pgt{C!&<{9C1w=MVp4)Nywvt=aiShr&x24WDvZS%-0lVBD1xlYv!8 He=pWa!CGmt3J zOEM(iH|qiLW;DFR7$<%)#e5mi5h?VS9km48t4L7mTg7A5!;R)SIr7s2o!q=g1nwS; z_lpaNT&n~r$R z*VG(gE2b|{S{;PL!|u}bcgxl1rFv~ika87dmaPLw-MWik`>bJo+X45;%Z|myQd#-8 zW69m&oINJ7R;-Ei!31m~i!!cqYo&JFuiU@Es-7E3ly39;eP?Dd7^J6(c%h$i8qsCY z(}mH=!e@q?PB7gaaVO$Eb4#C>l{kUTjyO%jv_Z^N6BFv}wp=u_aa>YbaPle?IkYK! ziNXLFVA^t>zb&Z&$IlIowfI&C;*OLu@6@Ql%l^9yajI`9s;>psBBKzIFc-IxO9lc; zD7;unbl9@8klmS29owwLPOehs6{f)tQH%4b>wdF7(0JxWIR0kwrNO~!2mDvx9x$}1 zc+D?INY$40zpe?W(@k(KBZiSiVA9ye;9>%(LeNl<^Q$Q~t*aSPr+9sMjamH>#TFYV zXN_b9wR@=1i%HjAD77 z@)a=IMt(C_O1R1nu@NKhN#mjx;;3m z>&U0?xit9#B01m^9V~~spF#A3O&g1a~f`&0JIAmVoE&_uCrx zZIVgDtTw5>Qt8|iljgEftP=Jb5hL2PcD#Ln;x~vUj64e!=D;B%-CAWbmaslrWY-i< zn-E*;1w0ke2VIf>%sqbI1;ECM_&(7~2R%&?Y0H1lJil;5eHumFLQcFWi0nFoJbd`! z#c$xu4R`3eX7OECso_{da}2IM3UB=%iE(zyCu35ie-s9tNJR|lkF2_N=9LYQ2B89a z@+xx#5o_fJo20E1EQsqGS-PJQ873$?qcA!}kq!QCT}L*qfprLOk^qcaX%Ef#%^ZtC z*W8x)Tgjj~r*D#3XLBoYIes=@N;KmSs+WVSnJhVAX5U2cJpyZtw}(@T6i7hPZ=01~ z#&#!ydpz-<%sGKPNFa|Lw=ZSB=XZJ%aco1}_WpG%y2s#rL&5UppI!1?dp)nI!UG5T zE3K=s0|BUs+~Coslh=?%4!>O$lX`QO!ru#x> zg=P^eo+e*TAM7Grh`fK??B$mYe}qq%Qql%3%)3w1YyK9mONAM@j~ zQst5vwLyaXoRo(_Fo*0;gCk**hxuAHwAkG}>!-=U!4ZXmUqLTt9P|TpwZ)54O83`; zGeTc?I@Wj(3GqU;@^j_*X9w>u1k|!jsIPU{C3l*%c?Eev;!~tthO|H>b6Iv`2=#JtcTttGsaZd$Q0d*Q0RQSCg=nAVoc%?(t7yw;?sZ$qcWL z3d&4?>Z8vVeoHC8%Tz2ISyEDGpdYPEkA?V7Qoo|-=Hi@Dq{t?_%4Rz*GwFs?@x>hm zkJQe5?%mMR-O9-dI&z>XSZ0ff4e}5bT^ICcsc~(wJ2u|*dvA-q_Hq5f6&*RG1O6d! zto{OuM%v*d;vGT|cxp(k&jH6Gi8E8t~1e_mx;?~&xR0)3;UXDsXg-{TdXPe+74kK*W#5ye} zh0M~M*zn6B_01GH5nwSZQ+}W>P5}yXAXG+f4c+E_4N?2G}$Eb zZAaX<%>t#e*jFf;knEsBgh{e8Q%|YyevW0ZR7@>FJZS8ZxGIb6k|Uo$QlVq*F$h{) zgu6v~I^X6yNH+>nQaw}KEG;_tJjC*Aq@b0%vZ`Ea9n@{q|3qtAkvILYF%i80++DY( zUuI^(&Vh7G$iq*JL@6aKHaXf6dNbh=SrtXJ)fou&GM+(An@d60I$LU8HjmKgEG>(S~T5AN=b?bup=0eh^K zDop;M^Qv^7*Yq9zs{krtljjbA-4&k2s2v2eh^8t;f9{DRba?a$t>p1iMyHICQJd@Z z(Kqb@AxR9r`Y9o#<e>ZG5b&leAiOyu?$ zd4rGpcc`$0M(kf^Fo8vQK0!!zaAFjm#3QFpVeRKQb3K9$!NB`Pxbet8do>~Rt)#lc z>cZS@N@j^_7bUdv+(y%+(yX>b_%>f*6#kK;+(EPZK-VLJ=1r~23WfnKTcX_anL+~d zYjhacWa=~G9|Sk#rLReVI0CLVTg;P1BaJEEu#4_9?nVaD&hy@|j&Vn(b zbY4?Uq>j(Ga=u#@4)(Ucp2Uk=V+q!muoxHU<3xsaVHB$fC8W>+y2?ajoz>-Q=XM^~ zt%5?9+29E+vQnX~TPBkoBqjknFafQIr5UAZTWc5Bkk9%_E< z>?rfwyRMqL%i{SBJexn z%`!}ELWs33%2uGS{>47hKBecR&V=+@3BY7PMYk=_ZCn{pWLijWH{V=wU{4(T$;_d` zs-wQSXXj}f9=pzg32H>@Yt~X8L|J&GYh3>53-RCvN<@?Boolb%&oA@;TJqfgt)UrB zNz4`?H^Rpz1S5dc0*%9W!JWHWT@}6oxsNsN6Qo#^EGLg=5}wzunQc6BD@ESeay=fZ zDp$OV1A*7TUJ4Je*Z&MhigLU^6zROTU)=dS+g9WL&1`GM8>`|^X%~y8S4gG;!$jQJ zp*MXR)KO``_r5!IMN|o@7DP4X%vpyX{VX1rsZEvUALyiwMtYoBl?WEr6P(bRDE<}4 z__Z_Y-J5oidNp`^OKC%bEMM=Vm8ER7(;aJocU9sc0Z}TM1#--wNdo$D$^*ux zem{Q|vpaK?)D6*Kx)%m{qkyU-K7-E|u+0G;I)^TFJE1DIL~=YAIJ>=}h)|4FBN7Zv zcdITipBR61ngn(%NoA&-^(IO%orG|)8HxFPFH+H`VT?HGuRR6$B=I; zR$7q*R9fx?h?7-j3=hd1X3n_lyIbYNOLS^oa%5L9)L;?h9uzV7|HV%pj?ukq6Tc1* z*g5yT0{8Iw4I8{aPY_=8cO4%Zb?cEUAI)hXiucgFD>xQS$NL+7 z=0w-cP|PAp-DELJMITNZf=pB~Sk^5}WFUG70H(!Icae5Oq)4MZyVEwKnL=d?u(ohWKR$e*p#ihb3gz_%jvYt*ij`p~km^!k&gHA7@qyrTmc zSd)BOJKvF=B~tC^?I9`*qz1wefgRA zvR8u>_R`3aSg&B+KDx0#TxyRXn2{<5(2Zk*{ZZ_qiC!EwfQEOP7T)h-@4;V6fBZdJ z!2?!GL98=_A9=Oz4uQDt8%BRr$aQaVlXo(HaN&oGm{eiZr!iZ*) z@r4s#5Oy%w=0e{FSD7I~M`l^7DoKc;*i%@uIp}^TXft(GL&<;!g=4oNrT9}t$SRzw z_9VqR=ft&PqiZq(j`^RSh~`rQVj$QKPazic{SU2t-vZ89qB6!qoL*ShY8mDJvdz>} z27*csIrnU{-~8fzCtk{6eUd{I;?(^sv=W$N&2r8r{@0dkgu^T2WwSVwtfTs6D@5ec zo6wJy4Oll4_mysbwDZAsTSmJd<%dwS`?>CsY7V46_=a_;p0clOi=*A}TzbiO6OM9gTo!Kx zmbba=HmyixP;{iyFu&Y00QfW5USEFu8WA3V_^S>y$Urr3?bD{+8gr7#fpSL}YS77( znS6AuS#7yOpG~mru;Uw0xu7U|DKMM2JMpb0l$;MA%B5}HnAjbfTW1vBZnOvIiUkv0 zU&8J$hPP-f&GOOIV%K$=>$W9yiM|VmWQ`m06k4yA_LSu}z`3RU269uWL26_CZcVYP zV{zddoUos-GXr#xu4`E-&G66Y8fdK~mE9(}BVJbR#Mj7T%b6pyJu$Rx`46bulI;er z-nRcF^X1~+MEhyiY`^F%#iW*O1h)(0 zJ30_~pBewWfBNCJ4Pg6lZI{K{Jmuv6d6i$G5fC|i$ycCiv(U^Hh%-MNq*JTvIoB@l zlG@*9sgxB?f|>=4ax?|49ir5ybP0#%D5lj|jG{q(X}9JhsTqcYTj?~ZzBB?(oCpfl zz78u*I7mZH!nIm3xD99iCEj z*u8U5#DRP`t7KU^Y|w~yF3RzzOLXidn(PSDh|?)SO8m^rw4JlDjmI-z>J+708o3Mh zX#9vD{OjbYKxI(gY#WVW4v*>4AW>T^6&|acwJc4}?pr5aFO#H7%)?S28MsJDtvbmH zUyN1}WqcQOV)Ryz-kBv#emkpsF2==}LaH&T#^;^Sq$O2uBcs0;VA^e?RoSjP$g$O5 z$KF(ZH`;9z_Ej;)?IWyqJ&H_%iN8Rm{}Ehjtyj6 z^Y0!2;}@SxI|jsmwy_!xwXA)1sG7*6dBGV>ed@lWmbtM`Y?WW;r+q;9DA zvT4C-HD0s=Szt(Wf%7Bby0TGbZtW~?wOa;*F4-;7uZL>?PD9%1Sh&eJpb(F<)slLA z(aT|W=fom@iC{|*{MM8y;Q_sOY5wRLD*jLipc_@_-Y{g=`Mz551*m(@{`*FLw0SWA zMOM{8m^a|0rlDJRXT|hV%eG`RL~XdWR^!^i{eq-BR&rQ%7_TpTrr~Ba$zmJT8gZi& zn^mG*=jBU-6nU+|P``fPTz$7+#KSxeRTRXGTR8Yo14k{U`KPb2$I(zdaxb$>%#qKZ7bE74=tzt=*mrJwv!2O z>fQS z!6G@%`+My0yIfYzJHUDuI5ao)EVZhr<^X!YBclK4``@Akse#-H?LEB{C5C~FUWD>^g9qtAn^mzl4vhgPg z9|RDm zbZ!*?DqQ0b1mlQBtDG+xNEPD%$FMmhn6)dU=nw+u9wy};MZ+_qDlp*G)hG937hCTD zh1nsv)jjn7!7uh9XyzfH_95i5Z8+ANt_x^YWjHtaS0*!bK3??$%ifJ1Z zGAj|%H4^t$#agOfc=Si~j94SZ`OMZPnt|O2MiZ0bi(_47VPmmE$i_xa(n$5T!>*ZeRQI5famE|LX%QFUvB=1jhN4qAb|34AFB=4d&5MxVYvpn;X|-TI5x+X=27Ka<=ci6oCpR WI6bQh>OBROv4&nsxyr|n|NkFRG4K!o diff --git a/website/info/css/icons.css b/website/info/css/icons.css index de1454a..05a1f52 100644 --- a/website/info/css/icons.css +++ b/website/info/css/icons.css @@ -1,6 +1,6 @@ @font-face { font-family: "O3DVIcons"; - src: url("./O3DVIcons.woff?5b9efabdc2c1ef6b3990e38a69a1fb39") format("woff"); + src: url("./O3DVIcons.woff?d27bdb5af135068ed4a9350e285e132e") format("woff"); } i[class^="icon-"]:before, i[class*=" icon-"]:before { @@ -38,120 +38,126 @@ i[class^="icon-"]:before, i[class*=" icon-"]:before { .icon-collapse:before { content: "\f108"; } -.icon-deisolate:before { +.icon-dark_mode:before { content: "\f109"; } -.icon-details:before { +.icon-deisolate:before { content: "\f10a"; } -.icon-donate:before { +.icon-details:before { content: "\f10b"; } -.icon-download:before { +.icon-donate:before { content: "\f10c"; } -.icon-expand:before { +.icon-download:before { content: "\f10d"; } -.icon-export:before { +.icon-expand:before { content: "\f10e"; } -.icon-feedback:before { +.icon-export:before { content: "\f10f"; } -.icon-file_download:before { +.icon-feedback:before { content: "\f110"; } -.icon-files:before { +.icon-file_download:before { content: "\f111"; } -.icon-fit:before { +.icon-files:before { content: "\f112"; } -.icon-fix_up_off:before { +.icon-fit:before { content: "\f113"; } -.icon-fix_up_on:before { +.icon-fix_up_off:before { content: "\f114"; } -.icon-flat_list:before { +.icon-fix_up_on:before { content: "\f115"; } -.icon-flip:before { +.icon-flat_list:before { content: "\f116"; } -.icon-github:before { +.icon-flip:before { content: "\f117"; } -.icon-hidden:before { +.icon-github:before { content: "\f118"; } -.icon-info:before { +.icon-hidden:before { content: "\f119"; } -.icon-isolate:before { +.icon-info:before { content: "\f11a"; } -.icon-materials:before { +.icon-isolate:before { content: "\f11b"; } -.icon-measure_angle:before { +.icon-light_mode:before { content: "\f11c"; } -.icon-measure_distance_parallel:before { +.icon-materials:before { content: "\f11d"; } -.icon-measure_distance:before { +.icon-measure_angle:before { content: "\f11e"; } -.icon-measure:before { +.icon-measure_distance_parallel:before { content: "\f11f"; } -.icon-meshes:before { +.icon-measure_distance:before { content: "\f120"; } -.icon-missing_files:before { +.icon-measure:before { content: "\f121"; } -.icon-model:before { +.icon-meshes:before { content: "\f122"; } -.icon-open_url:before { +.icon-missing_files:before { content: "\f123"; } -.icon-open:before { +.icon-model:before { content: "\f124"; } -.icon-print3d:before { +.icon-open_url:before { content: "\f125"; } -.icon-settings:before { +.icon-open:before { content: "\f126"; } -.icon-share:before { +.icon-print3d:before { content: "\f127"; } -.icon-snapshot:before { +.icon-settings:before { content: "\f128"; } -.icon-tree_mesh:before { +.icon-share:before { content: "\f129"; } -.icon-tree_view:before { +.icon-snapshot:before { content: "\f12a"; } -.icon-twitter:before { +.icon-tree_mesh:before { content: "\f12b"; } -.icon-up_y:before { +.icon-tree_view:before { content: "\f12c"; } -.icon-up_z:before { +.icon-twitter:before { content: "\f12d"; } -.icon-visible:before { +.icon-up_y:before { content: "\f12e"; } -.icon-warning:before { +.icon-up_z:before { content: "\f12f"; } +.icon-visible:before { + content: "\f130"; +} +.icon-warning:before { + content: "\f131"; +}