Use font icons instead of svg.

This commit is contained in:
kovacsv 2021-08-18 17:08:25 +02:00
parent 9bdd924b2f
commit f12cbaadeb
75 changed files with 591 additions and 104 deletions

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg4"
sodipodi:docname="arrow_down.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
fill="none"
stroke="#838383"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="m14 6.5-5 5-5-5"
id="path2"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg4"
sodipodi:docname="arrow_right.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
d="m6.503 14.003 5-5-5-5"
style="fill:none;stroke:#263238;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
id="path2" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

38
assets/icons/arrow_up.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg4"
sodipodi:docname="arrow_up.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
fill="none"
stroke="#838383"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="m14 11.5-5-5-5 5"
id="path2"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

38
assets/icons/close.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xml:space="preserve"
viewBox="0 0 18 18"
version="1.1"
id="svg4"
sodipodi:docname="close.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
d="m3.5 14.5 11-11m0 11-11-11"
stroke-miterlimit="10"
stroke-linejoin="round"
stroke-linecap="round"
stroke="#838383"
fill="none"
id="path2"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 864 B

After

Width:  |  Height:  |  Size: 864 B

View File

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 333 B

View File

Before

Width:  |  Height:  |  Size: 713 B

After

Width:  |  Height:  |  Size: 713 B

View File

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 293 B

View File

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 554 B

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg4"
sodipodi:docname="file_download.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
fill="none"
stroke="#3393BD"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="m6.5 9.5 3 3 3-3m-3-6v9m-6 1v1c0 .6.5 1 1.2 1h9.6c.7 0 1.2-.4 1.2-1v-1"
id="path2"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 410 B

View File

Before

Width:  |  Height:  |  Size: 297 B

After

Width:  |  Height:  |  Size: 297 B

View File

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 301 B

View File

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 278 B

View File

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 258 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

38
assets/icons/hidden.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg4"
sodipodi:docname="hidden.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" /><path
fill="none"
stroke="#838383"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0m-16 6.5 15-13"
id="path2"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 372 B

View File

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 867 B

View File

Before

Width:  |  Height:  |  Size: 503 B

After

Width:  |  Height:  |  Size: 503 B

View File

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 380 B

View File

Before

Width:  |  Height:  |  Size: 781 B

After

Width:  |  Height:  |  Size: 781 B

View File

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 260 B

View File

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 531 B

View File

Before

Width:  |  Height:  |  Size: 355 B

After

Width:  |  Height:  |  Size: 355 B

View File

Before

Width:  |  Height:  |  Size: 737 B

After

Width:  |  Height:  |  Size: 737 B

View File

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 304 B

View File

Before

Width:  |  Height:  |  Size: 339 B

After

Width:  |  Height:  |  Size: 339 B

View File

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 336 B

48
assets/icons/visible.svg Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 18 18"
xml:space="preserve"
version="1.1"
id="svg6"
sodipodi:docname="visible.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" /><path
fill="none"
stroke="#838383"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0"
id="path2"
style="stroke:#263238;stroke-opacity:1" /><circle
fill="none"
stroke="#838383"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
cx="9"
cy="8"
r="3.5"
id="circle4"
style="stroke:#263238;stroke-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

49
assets/icons/warning.svg Normal file
View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Layer_1"
x="0"
y="0"
viewBox="0 0 18 18"
style="enable-background:new 0 0 18 18"
xml:space="preserve"
sodipodi:docname="warning.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs9" /><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="43.277778"
inkscape:cx="9"
inkscape:cy="9"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><style
id="style2">.st1{fill:#fff}</style><circle
style="fill:none;stroke:#263238;stroke-opacity:1"
id="circle4"
cy="9"
cx="9"
r="8.5" /><path
class="st1"
d="M9 10c-.6 0-1-.4-1-1V5c0-.6.4-1 1-1s1 .4 1 1v4c0 .6-.4 1-1 1z"
id="path6"
style="fill:#263238;fill-opacity:1" /><circle
class="st1"
cx="9"
cy="13"
r="1"
id="circle8"
style="fill:#263238;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -7,9 +7,11 @@
"devDependencies": {
"clean-css-cli": "^5.3.3",
"eslint": "^7.30.0",
"fantasticon": "^1.2.2",
"google-closure-compiler": "^20210302.0.0",
"http-server": "^0.12.3",
"mocha": "^8.3.2",
"oslllo-svg-fixer": "^1.4.0",
"rewire": "^5.0.0",
"svgo": "^2.3.1"
},

View File

@ -61,6 +61,7 @@ def CreateDestinationDir (config, rootDir, websiteDir, version, testBuild):
shutil.copytree (os.path.join (rootDir, 'libs'), os.path.join (websiteDir, 'libs'))
shutil.copytree (os.path.join (rootDir, 'website', 'assets'), os.path.join (websiteDir, 'assets'))
shutil.copytree (os.path.join (rootDir, 'website', 'o3dv', 'css', 'Quicksand'), os.path.join (websiteDir, 'o3dv', 'Quicksand'))
shutil.copytree (os.path.join (rootDir, 'website', 'o3dv', 'css', 'O3DVIcons'), os.path.join (websiteDir, 'o3dv', 'O3DVIcons'))
shutil.copytree (os.path.join (rootDir, 'website', 'info'), os.path.join (websiteDir, 'info'))
libFiles = config['lib_files']

View File

@ -90,6 +90,7 @@
"website/o3dv/js/embed.js"
],
"website_files_css" : [
"website/o3dv/css/icons.css",
"website/o3dv/css/core.css",
"website/o3dv/css/controls.css",
"website/o3dv/css/dialogs.css",

View File

@ -92,6 +92,11 @@ def ReplaceInFile (filePath, begToken, endToken, newContent):
content = content.replace (content[begPosition : endPosition + len (endToken)], newContent)
WriteContentToFile (filePath, content)
def ReplaceStringInFile (filePath, oldString, newString):
content = GetFileContent (filePath)
content = content.replace (oldString, newString)
WriteContentToFile (filePath, content)
def CreateFileLinks (fileUrls, linePrefix, eolChar):
result = ''
for fileUrl in fileUrls:

View File

@ -1,5 +1,6 @@
import os
import sys
import shutil
from lib import tools_lib as Tools
@ -7,8 +8,44 @@ def Main (argv):
toolsDir = os.path.dirname (os.path.abspath (__file__))
rootDir = os.path.dirname (toolsDir)
os.chdir (rootDir)
iconsDir = os.path.join (rootDir, 'assets', 'icons')
tempDir = os.path.join ('build', 'temp')
if os.path.exists (tempDir):
shutil.rmtree (tempDir)
fixedIconsDir = os.path.join (tempDir, 'icons')
if not os.path.exists (fixedIconsDir):
os.makedirs (fixedIconsDir)
iconFontDir = os.path.join (tempDir, 'iconfont')
if not os.path.exists (iconFontDir):
os.makedirs (iconFontDir)
Tools.RunCommand ('oslllo-svg-fixer', [
'-s', iconsDir,
'-d', fixedIconsDir
])
imagesPath = os.path.abspath (os.path.join ('website', 'assets', 'images'))
Tools.RunCommand ('svgo', ['-r', imagesPath])
Tools.RunCommand ('svgo', [fixedIconsDir])
Tools.RunCommand ('fantasticon', [
fixedIconsDir,
'-o', iconFontDir,
'-t', 'woff',
'-n', 'O3DVIcons'
])
websiteCssDir = os.path.join (rootDir, 'website', 'o3dv', 'css')
websiteIconFontDir = os.path.join (websiteCssDir, 'O3DVIcons')
if not os.path.exists (websiteIconFontDir):
os.makedirs (websiteIconFontDir)
shutil.copy (os.path.join (iconFontDir, 'O3DVIcons.woff'), websiteIconFontDir)
websiteIconsCssPath = os.path.join (websiteCssDir, 'icons.css')
shutil.copy (os.path.join (iconFontDir, 'O3DVIcons.css'), websiteIconsCssPath)
Tools.ReplaceStringInFile (websiteIconsCssPath, './O3DVIcons.woff', 'O3DVIcons/O3DVIcons.woff')
shutil.rmtree (tempDir)
return 0
sys.exit (Main (sys.argv))

View File

@ -1 +0,0 @@
<svg viewBox="0 0 18 18" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0m-16 6.5 15-13" style="stroke:#263238;stroke-opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 290 B

View File

@ -1 +0,0 @@
<svg viewBox="0 0 18 18" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0" style="stroke:#263238;stroke-opacity:1"/><circle fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="9" cy="8" r="3.5" style="stroke:#263238;stroke-opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 446 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="m14 6.5-5 5-5-5"/></svg>

Before

Width:  |  Height:  |  Size: 213 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#3393BD" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="m6.5 9.5 3 3 3-3m-3-6v9m-6 1v1c0 .6.5 1 1.2 1h9.6c.7 0 1.2-.4 1.2-1v-1"/></svg>

Before

Width:  |  Height:  |  Size: 268 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18" xml:space="preserve"><path d="M17.5 6.6c0 1.1-.3 2.1-.9 3-.4.6-.8 1.2-1.3 1.8-1 1.1-2.1 2.1-3.3 3-.9.7-1.8 1.4-2.8 2-.2.1-.3.1-.4 0-1.4-.9-2.7-1.9-4-2.9-1-.9-2-1.8-2.8-2.9C1.4 9.8.9 9 .7 8 .5 7.2.4 6.3.6 5.5 1 3.9 2 2.7 3.5 2c.8-.4 1.6-.5 2.5-.4 1 .1 1.9.4 2.7 1 .1.1.2.2.3.2s.2-.1.3-.2c.8-.6 1.7-.9 2.7-1s2 .1 2.9.6 1.6 1.2 2.1 2.2c.3.7.5 1.4.5 2.2z" style="fill:#3393bd;stroke:#3393bd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"/><path d="M12.5 3.4h.2c1.2.1 2.1.6 2.6 1.7.4.8.5 1.6.2 2.4" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 713 B

View File

@ -1 +0,0 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18" xml:space="preserve"><style>.st2{fill:#fff}</style><path d="M9.6 6.8h.5c-.7-1.9-2.4-3.3-4.6-3.3C2.9 3.5.8 5.6.8 8.2c0 .8.2 1.6.6 2.3-.5 1.1-.9 2.4-.9 2.4s1.1-.6 2.5-.7l.6.3c.2-3.1 2.8-5.7 6-5.7z" style="fill:#fafafa"/><path d="M17.9 16.3c0-.1-.5-1.8-1.3-3.4.6-1.1.8-2.3.8-3.6 0-4.8-4-8.8-8.8-8.8C3.9.5 0 4.4 0 9.2c0 2.4.9 4.6 2.6 6.2C4.3 17.1 6.5 18 8.8 18c1.7 0 3.1-.4 4.3-1.1 1.6.2 2.9.9 2.9.9.5.3 1 .2 1.4-.1.5-.3.7-.9.5-1.4z" style="fill:#3393bd"/><circle class="st2" cx="5" cy="9" r="1"/><circle class="st2" cx="9" cy="9" r="1"/><circle class="st2" cx="13" cy="9" r="1"/></svg>

Before

Width:  |  Height:  |  Size: 721 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18" xml:space="preserve"><g style="fill:#3393bd;fill-opacity:1"><path style="fill:#3393bd;fill-opacity:1;fill-rule:evenodd;stroke:none" d="M0 0c-8.995 0-16.288-7.293-16.288-16.29 0-7.197 4.667-13.302 11.14-15.457.815-.149 1.112.354 1.112.786 0 .386-.014 1.411-.022 2.77-4.531-.984-5.487 2.184-5.487 2.184-.741 1.881-1.809 2.382-1.809 2.382-1.479 1.011.112.991.112.991 1.635-.116 2.495-1.679 2.495-1.679 1.453-2.489 3.813-1.77 4.741-1.354.148 1.053.568 1.771 1.034 2.178-3.617.411-7.42 1.809-7.42 8.051 0 1.778.635 3.232 1.677 4.371-.168.412-.727 2.068.159 4.311 0 0 1.368.438 4.48-1.67 1.299.361 2.693.542 4.078.548a15.625 15.625 0 0 0 4.078-.548c3.11 2.108 4.475 1.67 4.475 1.67.889-2.243.33-3.899.162-4.311 1.044-1.139 1.675-2.593 1.675-4.371 0-6.258-3.809-7.635-7.438-8.038.585-.503 1.106-1.497 1.106-3.017 0-2.177-.02-3.934-.02-4.468 0-.436.293-.943 1.12-.784 6.468 2.159 11.131 8.26 11.131 15.455C16.291-7.293 8.997 0 0 0" transform="matrix(.5525 0 0 -.5525 9 .444)"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1 +0,0 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18" xml:space="preserve"><style>.st1{fill:#fff}</style><circle cx="9" cy="9" r="9" style="fill:#3393bd"/><path class="st1" d="M9 14c-.6 0-1-.4-1-1V9c0-.6.4-1 1-1s1 .4 1 1v4c0 .6-.4 1-1 1z"/><circle class="st1" cx="9" cy="5" r="1"/></svg>

Before

Width:  |  Height:  |  Size: 372 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="m14 6.5-5 5-5-5"/></svg>

Before

Width:  |  Height:  |  Size: 213 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path d="m6.503 14.003 5-5-5-5" style="fill:none;stroke:#838383;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 217 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="m14 11.5-5-5-5 5"/></svg>

Before

Width:  |  Height:  |  Size: 214 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M1.5 5.5v-4h4m11 4v-4h-4m-11 11v4h4m11-4v4h-4m-11-15L6 6m10.5-4.5L12 6M1.5 16.5 6 12m10.5 4.5L12 12"/></svg>

Before

Width:  |  Height:  |  Size: 297 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0m-16 6.5 15-13"/></svg>

Before

Width:  |  Height:  |  Size: 250 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#263238" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M13.5 9.5v1M2 15l3.6-3.8c.4-.4 1.2-.7 1.7-.7h9.1c.5 0 .9.3.5.7l-3.6 3.6c-.4.4-1.1.7-1.6.7H2.5c-.5 0-1-.4-1-1v-10c0-.5.4-1 1-1h1.9c.5 0 1.3.3 1.6.7L7.6 6c.4.4 1.1.5 1.6.5h.8m1.5-3 3-3 3 3m-3 .5V.5" style="stroke:#838383;stroke-opacity:1"/><path fill="none" stroke="#263238" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M10 8.5c2.5 0 4.5-2 4.5-4.5" style="stroke:#838383;stroke-opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 611 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M.5 9c6-6 11-6 17 0M.5 9c6 6 11 6 17 0"/><circle fill="none" stroke="#838383" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="9" cy="8" r="3.5"/></svg>

Before

Width:  |  Height:  |  Size: 366 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 18 18"><path d="m3.5 14.5 11-11m0 11-11-11" stroke-miterlimit="10" stroke-linejoin="round" stroke-linecap="round" stroke="#838383" fill="none"/></svg>

Before

Width:  |  Height:  |  Size: 224 B

View File

@ -1 +0,0 @@
<svg version="1.1" id="Layer_1" x="0" y="0" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><style id="style2">.st1{fill:#fff}</style><circle style="fill:none;stroke:#838383;stroke-opacity:1" id="circle4" cy="9" cx="9" r="8.5"/><path class="st1" d="M9 10c-.6 0-1-.4-1-1V5c0-.6.4-1 1-1s1 .4 1 1v4c0 .6-.4 1-1 1z" id="path6" style="fill:#838383;fill-opacity:1"/><circle class="st1" cx="9" cy="13" r="1" id="circle8" style="fill:#838383;fill-opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 525 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 18 18"><path d="M14.5 16.5h-11c-.5 0-1-.5-1-1v-14c0-.6.5-1 1-1h11c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1zm-7-13h5m-5 3h5m-5 3h5m-5 3h5m-7-9h0m0 3h0m0 3h0m0 3h0" stroke-miterlimit="10" stroke-linejoin="round" stroke-linecap="round" stroke="#3393BD" fill="none"/></svg>

Before

Width:  |  Height:  |  Size: 333 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" xml:space="preserve"><path fill="none" stroke="#263238" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M1.5 5.5v-4h4m11 4v-4h-4m-11 11v4h4m11-4v4h-4m-11-15L6 6m10.5-4.5L12 6M1.5 16.5 6 12m10.5 4.5L12 12"/></svg>

Before

Width:  |  Height:  |  Size: 297 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 18 18" viewBox="0 0 18 18"><path d="M14.9 7.9 17 6.1h0c-.2-.5-.4-.9-.6-1.4-.3-.4-.6-.9-.9-1.2h0l-2.6 1c-.5-.5-1.2-.9-1.9-1.2h0L10.6.6h0C10 .5 9.5.5 9 .5s-1 0-1.5.1h0L7 3.3c-.7.3-1.3.6-1.9 1.1h0l-2.6-1h0c-.3.5-.6.9-.9 1.4-.2.4-.4.9-.6 1.3h0l2.1 1.7c-.1.8-.1 1.6 0 2.3h0L1 11.9h0c.2.5.4.9.6 1.4.3.4.6.9.9 1.2h0l2.6-1c.5.5 1.2.9 1.9 1.2h0l.4 2.7h0c.5.1 1 .1 1.5.1s1 0 1.5-.1h0l.4-2.7c.7-.2 1.4-.6 1.9-1.1h0l2.6 1h0c.3-.4.6-.8.9-1.3.3-.4.5-.9.6-1.4h0l-2.1-1.7c.3-.8.3-1.6.2-2.3" style="fill:none;stroke:#3393bd;stroke-linecap:round;stroke-linejoin:round"/><circle r="2.5" cy="9" cx="9" style="fill:none;stroke:#3393bd;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 737 B

View File

@ -80,6 +80,7 @@
<!-- engine end -->
<!-- website start -->
<link rel="stylesheet" type="text/css" href="o3dv/css/icons.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/core.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/controls.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/dialogs.css">

View File

@ -80,6 +80,7 @@
<!-- engine end -->
<!-- website start -->
<link rel="stylesheet" type="text/css" href="o3dv/css/icons.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/core.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/controls.css">
<link rel="stylesheet" type="text/css" href="o3dv/css/dialogs.css">

View File

@ -166,8 +166,7 @@
There are two ways to load models from your computer:
<ol>
<li>
Use the open button on the toolbar (<img class="inline" src="../assets/images/toolbar/open.svg"/>). Here you can select all the
relevant files.
Use the open button on the toolbar. Here you can select all the relevant files.
</li>
<li>Drag and drop all the relevant files into the browser window.</li>
</ol>
@ -175,7 +174,7 @@
<h3 id="loading_models_server">Loading models hosted on a web server</h3>
<p>
You can load models by url with the open url button on the toolbar (<img class="inline" src="../assets/images/toolbar/open_url.svg"/>).
You can load models by url with the open url button on the toolbar.
Here you can list all of the model files. You should place every file in a separate line.
</p>
<p class="info">
@ -189,7 +188,7 @@
<p>
<ol>
<li>Commit models to GitHub with all the required files.</li>
<li>Go to <a href="https://3dviewer.net">3dviewer.net</a>, and click on the open url button in the toolbar (<img class="inline" src="../assets/images/toolbar/open_url.svg"/>).</li>
<li>Go to <a href="https://3dviewer.net">3dviewer.net</a>, and click on the open url button in the toolbar.</li>
<li>
Open the files on GitHub, copy the link of the file from the address bar, and paste it in the dialog. See the example below.
<div class="code">
@ -208,7 +207,7 @@
<p>
<ol>
<li>Upload models to DropBox with all the required files.</li>
<li>Go to <a href="https://3dviewer.net">3dviewer.net</a>, and click on the open url button in the toolbar (<img class="inline" src="../assets/images/toolbar/open_url.svg"/>).</li>
<li>Go to <a href="https://3dviewer.net">3dviewer.net</a>, and click on the open url button in the toolbar.</li>
<li>
Get the sharing link from DropBox for all of the files, and paste it in the dialog. See the example below.
<div class="code">
@ -222,7 +221,7 @@
<h3 id="loading_models_missing_files">Missing files</h3>
<p>
Sometimes you see missing files in the tree (<img class="inline" src="../assets/images/navigator/missing_files.svg"/>). It means that your model
Sometimes you see missing files in the tree. It means that your model
refers to another files, but they are not selected to import. To solve the issue you have to import the model again together with the referenced
files, or just import the missing files on their own.
</p>
@ -230,12 +229,12 @@
<h2 id="sharing_and_embedding_models">Sharing and embedding models</h2>
<p>
If your models are hosted on a web server, you can share the link with others, or you can generate embedding code to integrate the viewer in your website.
To get the sharing link or the embedding code, click on the share model button (<img class="inline" src="../assets/images/toolbar/share.svg"/>) in the toolbar.
To get the sharing link or the embedding code, click on the share model button in the toolbar.
</p>
<h2 id="settings_panel">Model and visualization settings</h2>
<p>
You can access model and visualization settings by clicking on the settings icon (<img class="inline" src="../assets/images/toolbar/settings.svg"/>) on the toolbar.
You can access model and visualization settings by clicking on the settings icon on the toolbar.
</p>
<p>
<ul>
@ -246,7 +245,7 @@
<h2 id="exporting_models">Exporting models</h2>
<p>
You can export your model in several file formats. To achieve this, click on the export button in the toolbar (<img class="inline" src="../assets/images/toolbar/export.svg"/>).
You can export your model in several file formats. To achieve this, click on the export button in the toolbar.
After that select the format you would like to export to, and download the resulting files one by one.
</p>

View File

@ -1,7 +1,7 @@
@font-face
{
font-family: Quicksand;
src: url('../assets/fonts/Quicksand/Quicksand-Regular.ttf');
src: url('../o3dv/css/Quicksand/Quicksand-Regular.ttf');
}
html, body
@ -24,14 +24,29 @@ a:hover
text-decoration: underline;
}
img.inline
div.inline
{
background: red;
font-size: 18px;
width: 18px;
height: 18px;
display: inline-block;
margin-left: 3px;
margin-right: 3px;
margin-bottom: -4px;
line-height: inherit;
}
i
{
width: 18px;
height: 18px;
display: block;
}
i[class^="icon-"]:before, i[class*=" icon-"]:before {
height:18px;
margin-bottom: -4px;
}
h1

Binary file not shown.

View File

@ -1,22 +1,29 @@
img.ov_svg_icon
div.ov_svg_icon
{
color: var(--ov_icon_color);
font-size: 18px;
width: 18px;
height: 18px;
}
img.ov_svg_icon.left
div.ov_svg_icon.left
{
margin-right: 10px;
float: left;
}
img.ov_svg_icon.left_inline
div.ov_svg_icon.left_inline
{
margin-right: 10px;
margin-top: 2px;
float: left;
}
div.ov_svg_icon.selected
{
color: var(--ov_primary_color);
}
div.ov_thin_scrollbar
{
scrollbar-color: #cccccc transparent;

View File

@ -6,6 +6,7 @@
--ov_primary_hover_color: #146a8f;
--ov_secondary_color: #ffffff;
--ov_secondary_hover_color: #e4f4ff;
--ov_icon_color: #263238;
}
@font-face

View File

@ -102,6 +102,13 @@ div.ov_dialog a.ov_dialog_file_link
border-radius: 5px;
}
div.ov_dialog div.ov_file_link_img
{
color: var(--ov_primary_color);
margin-right: 10px;
float: left;
}
div.ov_dialog div.ov_dialog_file_link_text
{
float: left;

109
website/o3dv/css/icons.css Normal file
View File

@ -0,0 +1,109 @@
@font-face {
font-family: "O3DVIcons";
src: url("O3DVIcons/O3DVIcons.woff?635260a48b8099b02c71a5bd51ded212") format("woff");
}
i[class^="icon-"]:before, i[class*=" icon-"]:before {
font-family: O3DVIcons !important;
font-style: normal;
font-weight: normal !important;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-arrow_down:before {
content: "\f101";
}
.icon-arrow_right:before {
content: "\f102";
}
.icon-arrow_up:before {
content: "\f103";
}
.icon-close:before {
content: "\f104";
}
.icon-deisolate:before {
content: "\f105";
}
.icon-details:before {
content: "\f106";
}
.icon-donate:before {
content: "\f107";
}
.icon-export:before {
content: "\f108";
}
.icon-feedback:before {
content: "\f109";
}
.icon-file_download:before {
content: "\f10a";
}
.icon-files:before {
content: "\f10b";
}
.icon-fit:before {
content: "\f10c";
}
.icon-fix_up_off:before {
content: "\f10d";
}
.icon-fix_up_on:before {
content: "\f10e";
}
.icon-flip:before {
content: "\f10f";
}
.icon-github:before {
content: "\f110";
}
.icon-hidden:before {
content: "\f111";
}
.icon-info:before {
content: "\f112";
}
.icon-isolate:before {
content: "\f113";
}
.icon-materials:before {
content: "\f114";
}
.icon-meshes:before {
content: "\f115";
}
.icon-missing_files:before {
content: "\f116";
}
.icon-model:before {
content: "\f117";
}
.icon-open_url:before {
content: "\f118";
}
.icon-open:before {
content: "\f119";
}
.icon-settings:before {
content: "\f11a";
}
.icon-share:before {
content: "\f11b";
}
.icon-up_y:before {
content: "\f11c";
}
.icon-up_z:before {
content: "\f11d";
}
.icon-visible:before {
content: "\f11e";
}
.icon-warning:before {
content: "\f11f";
}

View File

@ -27,14 +27,15 @@ div.ov_tree_view div.ov_tree_item_button_container
float: right;
}
div.ov_tree_view img.ov_tree_item_button
div.ov_tree_view div.ov_tree_item_button
{
color: #838383;
padding: 5px;
float: left;
cursor: pointer;
}
div.ov_tree_view img.ov_tree_item_icon
div.ov_tree_view div.ov_tree_item_icon
{
padding: 5px;
float: left;

View File

@ -50,12 +50,7 @@ div.title_right a
padding: 11px 5px;
display: block;
float: left;
}
div.title_right img
{
width: 18px;
height: 18px;
text-decoration: none;
}
div.toolbar
@ -196,8 +191,9 @@ div.ov_navigator_info_panel div.ov_navigator_info_button_text
float: left;
}
div.ov_navigator_info_panel img.ov_navigator_info_button_icon
div.ov_navigator_info_panel div.ov_navigator_info_button_icon
{
color: #838383;
padding: 6px;
float: right;
}
@ -218,8 +214,9 @@ div.ov_sidebar_title div.ov_sidebar_title_text
float: left;
}
div.ov_sidebar_title img.ov_sidebar_title_img
div.ov_sidebar_title div.ov_sidebar_title_img
{
color: #838383;
float: right;
cursor: pointer;
}
@ -324,6 +321,11 @@ div.ov_property_table div.ov_property_table_button
@media (hover)
{
div.title_right div.header_button:hover
{
color: var(--ov_primary_color);
}
div.ov_toolbar div.ov_toolbar_button:hover
{
background: #c9e5f8;

View File

@ -215,7 +215,7 @@ OV.ExportDialog = class
let fileLink = $('<a>').addClass ('ov_dialog_file_link').appendTo (fileList);
fileLink.attr ('href', url);
fileLink.attr ('download', file.GetName ());
OV.CreateSvgIcon (fileLink, 'assets/images/dialog/file_download.svg', 'left');
OV.CreateSvgIcon (fileLink, 'file_download', 'ov_file_link_img');
$('<div>').addClass ('ov_dialog_file_link_text').html (file.GetName ()).appendTo (fileLink);
}

View File

@ -40,9 +40,9 @@ OV.MeshData = class
{
this.visible = visible;
if (this.visible) {
this.showHideButton.SetImage ('assets/images/navigator/visible.svg');
this.showHideButton.SetImage ('visible');
} else {
this.showHideButton.SetImage ('assets/images/navigator/hidden.svg');
this.showHideButton.SetImage ('hidden');
}
}
@ -55,13 +55,13 @@ OV.MeshData = class
{
this.menuItem = new OV.TreeViewButtonItem (name);
let fitToWindowButton = new OV.TreeViewButton ('assets/images/navigator/fit_navigator.svg');
let fitToWindowButton = new OV.TreeViewButton ('fit');
fitToWindowButton.OnClick (() => {
callbacks.onFitToWindow (this.originalIndex);
});
this.menuItem.AddButton (fitToWindowButton);
this.showHideButton = new OV.TreeViewButton ('assets/images/navigator/visible.svg');
this.showHideButton = new OV.TreeViewButton ('visible');
this.showHideButton.OnClick ((ev) => {
callbacks.onShowHide (this.originalIndex);
});

View File

@ -94,7 +94,7 @@ OV.NavigatorInfoPanel = class
{
let button = $('<div>').addClass ('ov_navigator_info_button').appendTo (parentDiv);
$('<div>').addClass ('ov_navigator_info_button_text').html (buttonText).appendTo (button);
OV.CreateSvgIcon (button, 'assets/images/navigator/arrow_right.svg', 'ov_navigator_info_button_icon');
OV.CreateSvgIcon (button, 'arrow_right', 'ov_navigator_info_button_icon');
button.click (() => {
onClick (button);
});
@ -147,7 +147,7 @@ OV.Navigator = class
let usedFiles = importResult.usedFiles;
let missingFiles = importResult.missingFiles;
let filesItem = new OV.TreeViewGroupItem ('Files', 'assets/images/navigator/files.svg');
let filesItem = new OV.TreeViewGroupItem ('Files', 'files');
this.treeView.AddItem (filesItem);
for (let i = 0; i < usedFiles.length; i++) {
let file = usedFiles[i];
@ -156,12 +156,12 @@ OV.Navigator = class
}
if (missingFiles.length > 0) {
let missingFilesItem = new OV.TreeViewGroupItem ('Missing Files', 'assets/images/navigator/missing_files.svg');
let missingFilesItem = new OV.TreeViewGroupItem ('Missing Files', 'missing_files');
this.treeView.AddItem (missingFilesItem);
for (let i = 0; i < missingFiles.length; i++) {
let file = missingFiles[i];
let item = new OV.TreeViewButtonItem (file);
let browseButton = new OV.TreeViewButton ('assets/images/navigator/open.svg');
let browseButton = new OV.TreeViewButton ('open');
browseButton.OnClick (() => {
this.callbacks.openFileBrowserDialog ();
});
@ -170,7 +170,7 @@ OV.Navigator = class
}
}
let materialsItem = new OV.TreeViewGroupItem ('Materials', 'assets/images/navigator/materials.svg');
let materialsItem = new OV.TreeViewGroupItem ('Materials', 'materials');
this.treeView.AddItem (materialsItem);
for (let i = 0; i < model.MaterialCount (); i++) {
let material = model.GetMaterial (i);
@ -185,7 +185,7 @@ OV.Navigator = class
materialsItem.AddChild (materialItem);
}
let meshesItem = new OV.TreeViewGroupItem ('Meshes', 'assets/images/navigator/meshes.svg');
let meshesItem = new OV.TreeViewGroupItem ('Meshes', 'meshes');
this.treeView.AddItem (meshesItem);
meshesItem.ShowChildren (true, null);
for (let i = 0; i < model.MeshCount (); i++) {

View File

@ -14,7 +14,7 @@ OV.SidebarPanel = class
this.titleDiv = $('<div>').addClass ('ov_sidebar_title').appendTo (this.panelDiv);
this.contentDiv = $('<div>').addClass ('ov_sidebar_content').addClass ('ov_thin_scrollbar').appendTo (this.panelDiv);
$('<div>').addClass ('ov_sidebar_title_text').html (this.GetTitle ()).appendTo (this.titleDiv);
let titleImg = OV.CreateSvgIcon (this.titleDiv, 'assets/images/sidebar/close.svg', 'ov_sidebar_title_img');
let titleImg = OV.CreateSvgIcon (this.titleDiv, 'close', 'ov_sidebar_title_img');
titleImg.click (() => {
callbacks.onClose ();
});

View File

@ -13,8 +13,7 @@ OV.ToolbarButton = class
CreateDomElement (parentDiv)
{
this.buttonDiv = $('<div>').addClass ('ov_toolbar_button').appendTo (parentDiv);
this.buttonImg = OV.CreateSvgIcon (this.buttonDiv);
this.buttonImg.attr ('src', this.image);
this.buttonImg = OV.CreateSvgIcon (this.buttonDiv, this.image);
if (this.onClick !== null) {
this.buttonDiv.click (this.onClick);
}
@ -27,6 +26,21 @@ OV.ToolbarButton = class
this.buttonDiv.addClass (className);
}
RemoveClass (className)
{
this.buttonDiv.removeClass (className);
}
AddImageClass (className)
{
this.buttonImg.addClass (className);
}
RemoveImageClass (className)
{
this.buttonImg.removeClass (className);
}
SetSelected (selected)
{
this.selected = selected;
@ -36,12 +50,6 @@ OV.ToolbarButton = class
this.buttonDiv.addClass ('selected');
}
}
SetImage (image)
{
this.image = image;
this.buttonImg.attr ('src', this.image);
}
};
OV.Toolbar = class

View File

@ -18,7 +18,7 @@ OV.TreeViewButton = class
SetImage (imagePath)
{
this.imagePath = imagePath;
this.domElement.attr ('src', this.imagePath);
OV.SetSvgIconImage (this.domElement, this.imagePath);
}
OnClick (clickHandler)
@ -147,8 +147,8 @@ OV.TreeViewGroupItem = class extends OV.TreeViewItem
this.childrenDiv = null;
this.showChildren = false;
this.openCloseButton = null;
this.openButtonPath = 'assets/images/navigator/arrow_down.svg';
this.closeButtonPath = 'assets/images/navigator/arrow_up.svg';
this.openButtonIcon = 'arrow_down';
this.closeButtonIcon = 'arrow_up';
this.animated = true;
this.openCloseHandler = null;
}
@ -180,7 +180,7 @@ OV.TreeViewGroupItem = class extends OV.TreeViewItem
return;
}
if (show) {
this.openCloseButton.attr ('src', this.openButtonPath);
OV.SetSvgIconImage (this.openCloseButton, this.openButtonIcon);
if (this.animated) {
this.childrenDiv.slideDown (400, onComplete);
} else {
@ -190,7 +190,7 @@ OV.TreeViewGroupItem = class extends OV.TreeViewItem
}
}
} else {
this.openCloseButton.attr ('src', this.closeButtonPath);
OV.SetSvgIconImage (this.openCloseButton, this.closeButtonIcon);
if (this.animated) {
this.childrenDiv.slideUp (400, onComplete);
} else {
@ -236,7 +236,7 @@ OV.TreeViewGroupItem = class extends OV.TreeViewItem
this.CreateMainElement (parentDiv);
OV.CreateSvgIcon (this.mainElement, this.iconPath, 'ov_tree_item_icon');
let buttonContainer = $('<div>').addClass ('ov_tree_item_button_container').appendTo (this.mainElement);
this.openCloseButton = OV.CreateSvgIcon (buttonContainer, this.openButtonPath, 'ov_tree_item_button');
this.openCloseButton = OV.CreateSvgIcon (buttonContainer, this.openButtonIcon, 'ov_tree_item_button');
this.CreateNameElement ();
}
};

View File

@ -116,36 +116,30 @@ OV.DownloadArrayBufferAsFile = function (arrayBuffer, fileName)
OV.DownloadUrlAsFile (url, fileName);
};
OV.CreateSvgIcon = function (parent, sourceImage, extraClass)
OV.CreateSvgIcon = function (parent, iconName, extraClass)
{
let img = $('<img>').addClass ('ov_svg_icon').appendTo (parent);
if (sourceImage !== undefined && sourceImage !== null) {
img.attr ('src', sourceImage);
}
let div = $('<div>').addClass ('ov_svg_icon').appendTo (parent);
$('<i>').addClass ('icon').addClass ('icon-' + iconName).appendTo (div);
if (extraClass !== undefined && extraClass !== null) {
img.addClass (extraClass);
div.addClass (extraClass);
}
return img;
return div;
};
OV.CreateHeaderButton = function (iconName, hoverIconName, title, link)
OV.SetSvgIconImage = function (icon, iconName)
{
icon.empty ();
$('<i>').addClass ('icon').addClass ('icon-' + iconName).appendTo (icon);
};
OV.CreateHeaderButton = function (iconName, title, link)
{
let buttonLink = $('<a>');
buttonLink.attr ('href', link);
buttonLink.attr ('target', '_blank');
buttonLink.attr ('rel', 'noopener noreferrer');
OV.InstallTooltip (buttonLink, title);
let imgElem = $('<img>').attr ('src', iconName).appendTo (buttonLink);
if (hoverIconName !== null && OV.IsHoverEnabled ()) {
buttonLink.hover (
() => {
imgElem.attr ('src', hoverIconName);
},
() => {
imgElem.attr ('src', iconName);
}
);
}
OV.CreateSvgIcon (buttonLink, iconName, 'header_button');
return buttonLink;
};

View File

@ -157,7 +157,7 @@ OV.Website = class
if (meshUserData === null) {
items.push ({
name : 'Fit model to window',
icon : 'assets/images/context/fit.svg',
icon : 'fit',
onClick : () => {
this.FitModelToWindow (false);
}
@ -165,7 +165,7 @@ OV.Website = class
if (this.navigator.HasHiddenMesh ()) {
items.push ({
name : 'Show all meshes',
icon : 'assets/images/context/show.svg',
icon : 'visible',
onClick : () => {
this.navigator.ShowAllMeshes ();
}
@ -175,14 +175,14 @@ OV.Website = class
let meshIndex = meshUserData.originalMeshIndex;
items.push ({
name : 'Hide mesh',
icon : 'assets/images/context/hide.svg',
icon : 'hidden',
onClick : () => {
this.navigator.ToggleMeshVisibility (meshIndex);
}
});
items.push ({
name : 'Fit mesh to window',
icon : 'assets/images/context/fit.svg',
icon : 'fit',
onClick : () => {
this.navigator.FitMeshToWindow (meshIndex);
}
@ -191,7 +191,7 @@ OV.Website = class
let isMeshIsolated = this.navigator.IsMeshIsolated (meshIndex);
items.push ({
name : isMeshIsolated ? 'Remove isolation' : 'Isolate mesh',
icon : isMeshIsolated ? 'assets/images/context/deisolate.svg' : 'assets/images/context/isolate.svg',
icon : isMeshIsolated ? 'deisolate' : 'isolate',
onClick : () => {
this.navigator.IsolateMesh (meshIndex);
}
@ -317,8 +317,7 @@ OV.Website = class
{
function AddButton (toolbar, eventHandler, imageName, imageTitle, onlyFullWidth, onClick)
{
let image = 'assets/images/toolbar/' + imageName + '.svg';
let button = toolbar.AddImageButton (image, imageTitle, () => {
let button = toolbar.AddImageButton (imageName, imageTitle, () => {
eventHandler.HandleEvent ('toolbar_clicked', { item : imageName });
onClick ();
});
@ -335,7 +334,7 @@ OV.Website = class
let imageName = imageNames[i];
let imageTitle = imageTitles[i];
imageData.push ({
image : 'assets/images/toolbar/' + imageName + '.svg',
image : imageName,
title : imageTitle
});
}
@ -476,8 +475,7 @@ OV.Website = class
{
function AddSidebarButton (toolbar, eventHandler, sidebarPanel, onClick)
{
let image = 'assets/images/toolbar/' + sidebarPanel.image + '.svg';
let button = toolbar.AddImageButton (image, sidebarPanel.title, () => {
let button = toolbar.AddImageButton (sidebarPanel.image, sidebarPanel.title, () => {
eventHandler.HandleEvent ('sidebar_clicked', { item : sidebarPanel.image });
onClick ();
});
@ -492,11 +490,9 @@ OV.Website = class
for (let i = 0; i < sidebarPanels.length; i++) {
let sidebarPanel = sidebarPanels[i];
if (sidebarPanel.panelId === visiblePanelId) {
let image = 'assets/images/toolbar/' + sidebarPanel.image + '_active.svg';
sidebarPanel.button.SetImage (image);
sidebarPanel.button.AddImageClass ('selected');
} else {
let image = 'assets/images/toolbar/' + sidebarPanel.image + '.svg';
sidebarPanel.button.SetImage (image);
sidebarPanel.button.RemoveImageClass ('selected');
}
}
}