Use font icons instead of svg.
38
assets/icons/arrow_down.svg
Normal 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 |
33
assets/icons/arrow_right.svg
Normal 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
@ -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
@ -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 |
|
Before Width: | Height: | Size: 864 B After Width: | Height: | Size: 864 B |
|
Before Width: | Height: | Size: 333 B After Width: | Height: | Size: 333 B |
|
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
|
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 554 B |
38
assets/icons/file_download.svg
Normal 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 |
|
Before Width: | Height: | Size: 410 B After Width: | Height: | Size: 410 B |
|
Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 297 B |
|
Before Width: | Height: | Size: 301 B After Width: | Height: | Size: 301 B |
|
Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 258 B After Width: | Height: | Size: 258 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
38
assets/icons/hidden.svg
Normal 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 |
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 372 B |
|
Before Width: | Height: | Size: 867 B After Width: | Height: | Size: 867 B |
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 503 B |
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 781 B |
|
Before Width: | Height: | Size: 260 B After Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 531 B After Width: | Height: | Size: 531 B |
|
Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 737 B |
|
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 304 B |
|
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
48
assets/icons/visible.svg
Normal 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
@ -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 |
@ -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"
|
||||
},
|
||||
|
||||
@ -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']
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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:
|
||||
|
||||
39
tools/svg.py
@ -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))
|
||||
|
||||
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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">
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
BIN
website/o3dv/css/O3DVIcons/O3DVIcons.woff
Normal 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;
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
--ov_primary_hover_color: #146a8f;
|
||||
--ov_secondary_color: #ffffff;
|
||||
--ov_secondary_hover_color: #e4f4ff;
|
||||
--ov_icon_color: #263238;
|
||||
}
|
||||
|
||||
@font-face
|
||||
|
||||
@ -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
@ -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";
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
});
|
||||
|
||||
@ -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++) {
|
||||
|
||||
@ -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 ();
|
||||
});
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 ();
|
||||
}
|
||||
};
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||