├── .gitignore ├── CHANGELOG.md ├── CNAME ├── License.md ├── README.md ├── assets ├── arrow │ ├── texture_arrow.png │ ├── unit_arrow.blend │ ├── unit_arrow.blend1 │ ├── unit_arrow.mtl │ └── unit_arrow.obj ├── icon_128.png ├── icon_128_dark.png ├── icon_16.png ├── icon_16_dark.png ├── icon_24.png ├── icon_256.png ├── icon_32.png ├── icon_512.png └── icon_64.png ├── css ├── font-awesome.min.css ├── styles.css ├── ui-console.css ├── ui-contextmenu.css ├── ui-modal.css ├── ui-progressbar.css ├── ui-propertiesbar.css └── w3.css ├── favicon.ico ├── img ├── badges │ ├── badge.xcf │ ├── build_status.svg │ ├── launcher.png │ ├── launcher.xcf │ └── path.txt ├── btns │ ├── cancel.png │ ├── delete.png │ ├── document_export.png │ └── warning.png ├── gui │ ├── bug_go.png │ ├── bullet_arrow_right.png │ ├── burger.png │ ├── burger.xcf │ ├── burger_hover.png │ ├── centroid.png │ ├── check_box.png │ ├── check_box_mix.png │ ├── check_box_uncheck.png │ ├── information.png │ ├── magnifier_zoom_in.png │ └── magnifier_zoom_out.png ├── icon │ ├── Icon_mipmap.xcf │ ├── badge.xcf │ ├── icon.png │ ├── icon.xcf │ ├── icon_128.png │ ├── icon_16.png │ ├── icon_256.png │ ├── icon_32.png │ ├── icon_64.png │ ├── vrtx_logo.png │ ├── vrtx_logo.xcf │ └── vrtx_logo_16.png ├── io │ ├── drive.png │ ├── drive_go.png │ ├── folder.png │ ├── open_gdrive.png │ ├── open_local.png │ └── open_onDisk.png ├── loading │ ├── Eclipse.gif │ ├── Eclipse.svg │ ├── anim.gif │ ├── balls.gif │ └── box.gif ├── main │ ├── export.png │ ├── import.png │ ├── new_32.png │ ├── open.png │ ├── open_32.png │ ├── save.png │ └── save_as.png ├── rbn │ └── main │ │ └── about │ │ ├── bug_go.png │ │ └── info.png ├── social │ ├── Facebook-Icon-Hover.png │ ├── Facebook-Icon.png │ ├── Fb.xcf │ ├── Github-Icon-Hover.png │ ├── Github-Icon.png │ ├── Github-Icon.xcf │ ├── Twitter-Icon-Hover.png │ ├── Twitter-Icon.png │ └── Twitter-Icon.xcf ├── tlbr │ ├── file │ │ ├── exit.png │ │ ├── export.png │ │ ├── import.png │ │ ├── new.png │ │ ├── new_32.png │ │ ├── open.png │ │ ├── open_32.png │ │ ├── save.png │ │ ├── save_as.png │ │ ├── setting_tools.png │ │ ├── toggle_console.png │ │ ├── toggle_properties.png │ │ └── toggle_tree.png │ ├── tools │ │ ├── debug.png │ │ └── measure.png │ └── view │ │ ├── render │ │ ├── Rander Icons.xcf │ │ ├── edge.png │ │ ├── normal.png │ │ ├── render_texture.xcf │ │ ├── shaded.png │ │ ├── texture.png │ │ └── wireframe.png │ │ ├── set │ │ ├── cube.png │ │ ├── view_back.png │ │ ├── view_bottom.png │ │ ├── view_cube.xcf │ │ ├── view_cube_16.xcf │ │ ├── view_front.png │ │ ├── view_iso.png │ │ ├── view_left.png │ │ ├── view_ortho.png │ │ ├── view_perspective.png │ │ ├── view_projection.xcf │ │ ├── view_projection_16.xcf │ │ ├── view_projection_16_2.xcf │ │ ├── view_right.png │ │ └── view_top.png │ │ └── zoom │ │ ├── zoom_fit.png │ │ ├── zoom_in.png │ │ └── zoom_out.png ├── tree │ ├── bullet_error.png │ ├── bullet_success.png │ ├── bullet_warning.png │ ├── document_import.png │ ├── document_info.png │ ├── file_ascii.png │ ├── file_bin.png │ ├── file_extension_jpeg.png │ ├── file_info.png │ ├── lightbulb.png │ ├── node_axis.png │ ├── node_bullet_blue.png │ ├── node_bullet_green.png │ ├── node_bullet_red.png │ ├── node_bullet_vector.png │ ├── node_bullet_white.png │ ├── node_centroid.png │ ├── node_color_info.png │ ├── node_colour_rgb.png │ ├── node_colour_wheel.png │ ├── node_colours.png │ ├── node_default.png │ ├── node_envr.png │ ├── node_folder.png │ ├── node_folder_picture.png │ ├── node_hash.png │ ├── node_image.png │ ├── node_material.png │ ├── node_materials.png │ ├── node_measure.png │ ├── node_measure_angle.png │ ├── node_mesh.png │ ├── node_plane.png │ ├── node_prop_physical.png │ ├── node_properties.png │ └── node_root.png └── txtrs │ ├── txtr.png │ ├── txtr_default.png │ ├── txtr_default.xcf │ └── txtr_missing.png ├── index.html ├── js ├── .DS_Store ├── contextmenu.js ├── google │ ├── analytics.js │ ├── gdrive.js │ ├── login.js │ └── platform.js ├── io │ ├── io_drctx.js │ ├── io_img.js │ ├── io_obj.js │ ├── io_open.js │ ├── io_ply.js │ └── io_stl.js ├── main.js ├── vx │ ├── vxCamera.js │ ├── vxColour.js │ ├── vxCommand.js │ ├── vxGeometry.js │ ├── vxMeasure.js │ ├── vxMesh.js │ ├── vxMeshPart.js │ ├── vxModel.js │ ├── vxPropteries.js │ └── vxTetra.js └── vxConsole.js ├── lib ├── dat.gui.js ├── dat.gui.min.js ├── gl-matrix-min.js ├── gl-matrix.js ├── glMatrix-0.9.5.min.js ├── glmat │ ├── .gitignore │ ├── .travis.yml │ ├── BUILDING.md │ ├── CNAME │ ├── LICENSE.md │ ├── README.md │ ├── TESTING.md │ ├── VERSION │ ├── bower.json │ ├── dist │ │ ├── gl-matrix-min.js │ │ └── gl-matrix.js │ ├── docs │ │ ├── common.js.html │ │ ├── fonts │ │ │ ├── OpenSans-Bold-webfont.eot │ │ │ ├── OpenSans-Bold-webfont.svg │ │ │ ├── OpenSans-Bold-webfont.woff │ │ │ ├── OpenSans-BoldItalic-webfont.eot │ │ │ ├── OpenSans-BoldItalic-webfont.svg │ │ │ ├── OpenSans-BoldItalic-webfont.woff │ │ │ ├── OpenSans-Italic-webfont.eot │ │ │ ├── OpenSans-Italic-webfont.svg │ │ │ ├── OpenSans-Italic-webfont.woff │ │ │ ├── OpenSans-Light-webfont.eot │ │ │ ├── OpenSans-Light-webfont.svg │ │ │ ├── OpenSans-Light-webfont.woff │ │ │ ├── OpenSans-LightItalic-webfont.eot │ │ │ ├── OpenSans-LightItalic-webfont.svg │ │ │ ├── OpenSans-LightItalic-webfont.woff │ │ │ ├── OpenSans-Regular-webfont.eot │ │ │ ├── OpenSans-Regular-webfont.svg │ │ │ └── OpenSans-Regular-webfont.woff │ │ ├── gl-matrix.js.html │ │ ├── gl-matrix_common.js.html │ │ ├── gl-matrix_mat2.js.html │ │ ├── gl-matrix_mat2d.js.html │ │ ├── gl-matrix_mat3.js.html │ │ ├── gl-matrix_mat4.js.html │ │ ├── gl-matrix_quat.js.html │ │ ├── gl-matrix_vec2.js.html │ │ ├── gl-matrix_vec3.js.html │ │ ├── gl-matrix_vec4.js.html │ │ ├── glMatrix.html │ │ ├── index.html │ │ ├── mat2.html │ │ ├── mat2.js.html │ │ ├── mat2d.html │ │ ├── mat2d.js.html │ │ ├── mat3.html │ │ ├── mat3.js.html │ │ ├── mat4.html │ │ ├── mat4.js.html │ │ ├── quat.html │ │ ├── quat.js.html │ │ ├── scripts │ │ │ ├── linenumber.js │ │ │ └── prettify │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ ├── lang-css.js │ │ │ │ └── prettify.js │ │ ├── styles │ │ │ ├── jsdoc-default.css │ │ │ ├── prettify-jsdoc.css │ │ │ └── prettify-tomorrow.css │ │ ├── vec2.html │ │ ├── vec2.js.html │ │ ├── vec3.html │ │ ├── vec3.js.html │ │ ├── vec4.html │ │ └── vec4.js.html │ ├── index.html │ ├── jsdoc-template │ │ ├── allclasses.tmpl │ │ ├── allfiles.tmpl │ │ ├── class.tmpl │ │ ├── index.tmpl │ │ ├── publish.js │ │ ├── static │ │ │ ├── default.css │ │ │ ├── header.html │ │ │ └── index.html │ │ └── symbol.tmpl │ ├── jsdoc.config.json │ ├── package.json │ ├── spec │ │ ├── gl-matrix │ │ │ ├── common-spec.js │ │ │ ├── mat2-spec.js │ │ │ ├── mat2d-spec.js │ │ │ ├── mat3-spec.js │ │ │ ├── mat4-spec.js │ │ │ ├── quat-spec.js │ │ │ ├── vec2-spec.js │ │ │ ├── vec3-spec.js │ │ │ ├── vec4-spec.js │ │ │ └── worker-spec.js │ │ ├── helpers │ │ │ └── spec-helper.js │ │ └── jasmine.yml │ ├── src │ │ ├── gl-matrix.js │ │ └── gl-matrix │ │ │ ├── common.js │ │ │ ├── mat2.js │ │ │ ├── mat2d.js │ │ │ ├── mat3.js │ │ │ ├── mat4.js │ │ │ ├── quat.js │ │ │ ├── vec2.js │ │ │ ├── vec3.js │ │ │ └── vec4.js │ ├── webpack.config.js │ └── webpack.config.min.js ├── jquery-3.1.0.min.js ├── prism │ ├── prism.css │ └── prism.js ├── stats.min.js ├── vx-ui-ribbon │ ├── img │ │ └── arw_dwn.png │ ├── ribbon.css │ └── ribbon.js └── vx-ui-tree │ ├── img │ ├── arrow_bullet.png │ ├── arrow_down.png │ ├── arrow_empty.png │ ├── arrow_right.png │ ├── check_box.png │ ├── check_box_mix.png │ ├── check_box_uncheck.png │ └── folder.png │ ├── tree.css │ └── tree.js ├── privacy.html ├── ref ├── favicon.xcf ├── favicon32.xcf ├── iris icon │ ├── icon.xcf │ ├── icon_128.png │ ├── icon_128_white.png │ ├── icon_16.png │ ├── icon_16_white.png │ ├── icon_24.png │ ├── icon_24_white.png │ ├── icon_256.png │ ├── icon_256_white.png │ ├── icon_32.png │ ├── icon_32_white.png │ ├── icon_48.png │ ├── icon_48_white.png │ ├── icon_64.png │ ├── icon_64_white.png │ └── icon_mipmap.xcf ├── prsimtest │ ├── prism.css │ ├── prism.js │ └── test.html ├── screenshots │ ├── 01intro.png │ ├── 02model_import.png │ ├── 03model_export.png │ ├── 04model_data.png │ ├── 05model_tree.png │ ├── IRIS_TILE_SMALL.png │ ├── IRIS_TILE_SMALL.xcf │ ├── Iris Screenshots.xcf │ ├── SPLIT.png │ ├── SPLIT.xcf │ ├── base.png │ ├── cls_up.xcf │ ├── clsup_menu.png │ ├── clsup_tree.png │ ├── scrn_sht.xcf │ ├── scrnsht_intro.png │ ├── scrnsht_measure.png │ ├── scrnsht_normal.png │ ├── scrnsht_solid.png │ ├── scrnsht_wireframe.png │ ├── title.png │ └── title.xcf ├── test case │ ├── ref │ │ ├── main copy.js │ │ └── tree.css │ ├── test.css │ └── test.html └── untitled.html └── wiki ├── libExporting.md └── libImporting.md /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | ._* 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # v 0.5 June 26th 2018 2 | * Added Chrome Extension. 3 | * Added Ribbon and Tree support. 4 | * Added Console. 5 | 6 | # v 0.4 October 3rd 2017 7 | * Added Direct X (.x) 3D File Support. 8 | * Added Google Drive Integration. 9 | * Added Texture Support. 10 | * Added Angle Measurement Tool. 11 | * Fixed bug where 'stl' files would split meshes instead of mesh parts after 65000 elements. 12 | * Fixed bug where mouse scroll/zoom was not working in firefox. Cross browser solution implemented. 13 | * Added Toggleable Menu Items. 14 | * Streamlined Menubar. 15 | * Added Corner View Item. 16 | * Added Mesh Highlighting when treeview item is highlighted. 17 | * Added Scrollbar to Treeview. 18 | * split mesh parts based on materials. add a material key name to each mesh part, then apply the material once all files have been read. Add material name to mesh part. 19 | 20 | 21 | # v 0.3 April 28th 2017 22 | * Added Mesh Parts to allow for internal handling of large meshes past the ~65000 element count. 23 | * Changed Mesh Lists to Dictionaries. 24 | * Fixed bug with Right View not working. 25 | 26 | ## v 0.22 March 13th 2017 27 | * Fixed bug where OBJ files would not load after ~65000 elements. 28 | * Added About page. 29 | 30 | # v 0.2 Jan 18th 2017 31 | * Added OBJ support 32 | * Fixed bug where STL files would not load after ~65000 elements. 33 | 34 | # v 0.1 Sept 28th 2015 35 | * Basic STL file loading. 36 | 37 | 38 | # TODO 39 | * Add Centers 40 | * Fully Implement Materials 41 | * remove mesh collection. only use model collection. 42 | * Write .x file writeup 43 | * add fbx support. 44 | * move all view and projections into camera class -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | web.irisviewer.xyz -------------------------------------------------------------------------------- /License.md: -------------------------------------------------------------------------------- 1 | 2 | # The MIT License (MIT) 3 | 4 | ### Copyright (c) Virtex Edge Design 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Iris Web Viewer 2 | 3 |

4 |

5 | 6 | 7 | ### BuildStatus: 8 | ![image_version](https://img.shields.io/badge/build-beta%20%5Bv.%200.5.0%5D-blue.svg 'Version') 9 | 10 | Iris Web Viewer is an open source experimental online model viewer. It allows you to view 3D Exchange format files through a web browser with out the need for larger packages to be installed on a computer. It runs off of Javascript and WebGL is available at [Iris Web Viewer](https://VirtexEdgeDesign.github.io/Iris-Web-Viewer/) as well as through a Chrome Web Extension: 11 | 12 | [](https://chrome.google.com/webstore/detail/iris-3d-viewer/kfaocdjigbgfjbmbbodglgoomooblail) 13 | 14 | 15 | ![image_import](ref/screenshots/01intro.png 'Intro') 16 | 17 | ## License & Disclaimer 18 | 19 | Iris is released under the [MIT License](https://github.com/VirtexEdgeDesign/Iris-Web-Viewer/blob/master/License.md). 20 | 21 | Note though, that Iris is currently both experimental and in Beta, and therefore naturally has some bugs in it. It's not a perfect system and is therefore only useful for general views and for working out rough ideas. It comes with no warrenty what so ever (refer to license). Any models should be viewed and infomation verfied through a secondary programand before any designs are finalised. That said it's meant for informal viewing of 3D files in non-critical applciations as well as it's open source, so feel free to commit and add to it as you see fit! 22 | 23 | # Features 24 | 25 | ## Import 26 | 27 | Iris can import any of the following model formats. If there's one you don't see then feel free to request it in the 'Issues'. 28 | 29 | - stl (both ASCII and Binary) 30 | - obj (material files not supported yet) 31 | 32 | ![image_import](ref/screenshots/02model_import.png 'Export') 33 | 34 | ## Export 35 | 36 | Iris can can also export to stl files for use in 3D Printing. We currently only support ASCII stl files. 37 | 38 | ![image_import](ref/screenshots/03model_export.png 'Import') 39 | 40 | ## Tree View Breakdown 41 | 42 | The Iris Environment has a treeview overlayed on the screen, allowing you to view statistics of each imported models as well as be able to hide and show groups/sub meshes of each model. Other info, such as measurements, are added to the treeview, allowing you to see broken down information (such as the measured distance in each coordinate axis). 43 | 44 | ![image_import](ref/screenshots/05model_tree.png 'tree') 45 | 46 | ## Multiple Shader Outputs 47 | 48 | Solid, Wireframe and Normal shader options are avaiable. Solid gives a basic grey view to the model, Wireframe shows an entire wireframe skelton of the edges of the models and surface triangles. and _Normal_ shows the angle at which the surface is relative to the Global X, Y and Z axis'. 49 | 50 | ![image_import](ref/screenshots/04model_data.png 'views') 51 | 52 | ### Solid 53 | 54 | The Solid View of the 'Utah teapot'. 55 | ![image_solid_view](ref/screenshots/scrnsht_solid.png "The 'Solid' View") 56 | 57 | ### Wireframe 58 | 59 | The Wireframe View of the 'Utah teapot'. 60 | ![image_wireframe_view](ref/screenshots/scrnsht_wireframe.png "The 'Wireframe' View") 61 | 62 | ### Normal 63 | 64 | The Normal View of the 'Utah teapot'. 65 | ![image_normal_view](ref/screenshots/scrnsht_normal.png "The 'Normal' View") 66 | 67 | ## Surface Measurement 68 | 69 | Iris allows you to measure the distance between different triangular faces of the imported model. This allows you to get a rough idea of distances in your model. Note: that no exact units are defined in Iris (i.e. mm, inches, etc...) and the measurements given are in terms of Face center positions calcuated from Face Vertices. 70 | ![image_measure](ref/screenshots/scrnsht_measure.png "The 'Normal' View") 71 | -------------------------------------------------------------------------------- /assets/arrow/texture_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/arrow/texture_arrow.png -------------------------------------------------------------------------------- /assets/arrow/unit_arrow.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/arrow/unit_arrow.blend -------------------------------------------------------------------------------- /assets/arrow/unit_arrow.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/arrow/unit_arrow.blend1 -------------------------------------------------------------------------------- /assets/arrow/unit_arrow.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'unit_arrow.blend' 2 | # Material Count: 1 3 | 4 | newmtl None 5 | Ns 0 6 | Ka 0.000000 0.000000 0.000000 7 | Kd 0.8 0.8 0.8 8 | Ks 0.8 0.8 0.8 9 | d 1 10 | illum 2 11 | map_Kd texture_arrow.png 12 | -------------------------------------------------------------------------------- /assets/arrow/unit_arrow.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.77 (sub 0) OBJ File: 'unit_arrow.blend' 2 | # www.blender.org 3 | mtllib unit_arrow.mtl 4 | o Cylinder 5 | v -0.000000 0.002744 0.047140 6 | v -0.000000 0.795331 0.047140 7 | v -0.033333 0.002744 0.033333 8 | v -0.033333 0.795331 0.033333 9 | v -0.047140 0.002744 0.000001 10 | v -0.047140 0.795331 -0.000000 11 | v -0.033333 0.002744 -0.033332 12 | v -0.033333 0.795331 -0.033333 13 | v -0.000000 0.002744 -0.047139 14 | v -0.000000 0.795331 -0.047140 15 | v 0.033333 0.002744 -0.033332 16 | v 0.033333 0.795331 -0.033333 17 | v 0.047140 0.002744 0.000001 18 | v 0.047140 0.795331 -0.000000 19 | v 0.033333 0.002744 0.033333 20 | v 0.033333 0.795331 0.033333 21 | v -0.000000 0.795331 0.094279 22 | v -0.066666 0.795331 0.066665 23 | v -0.094279 0.795331 -0.000000 24 | v -0.066666 0.795331 -0.066666 25 | v -0.000000 0.795331 -0.094279 26 | v 0.066665 0.795331 -0.066666 27 | v 0.094279 0.795331 -0.000000 28 | v 0.066665 0.795331 0.066665 29 | v -0.000000 0.814187 0.094279 30 | v -0.066666 0.814187 0.066665 31 | v -0.094279 0.814187 -0.000000 32 | v -0.066666 0.814187 -0.066666 33 | v -0.000000 0.814187 -0.094279 34 | v 0.066665 0.814187 -0.066666 35 | v 0.094279 0.814187 -0.000000 36 | v 0.066665 0.814187 0.066665 37 | v -0.000000 1.002745 0.014142 38 | v -0.010000 1.002745 0.010000 39 | v -0.014142 1.002745 -0.000000 40 | v -0.010000 1.002745 -0.010000 41 | v -0.000000 1.002745 -0.014142 42 | v 0.010000 1.002745 -0.010000 43 | v 0.014142 1.002745 -0.000000 44 | v 0.010000 1.002745 0.009999 45 | vt 0.6933 0.7491 46 | vt 0.7292 0.0328 47 | vt 0.6883 0.0592 48 | vt 0.7478 0.7223 49 | vt 0.6605 0.0081 50 | vt 0.6561 0.6971 51 | vt 0.5212 0.0000 52 | vt 0.4696 0.6887 53 | vt 0.3949 0.0136 54 | vt 0.3012 0.7024 55 | vt 0.3569 0.0404 56 | vt 0.2518 0.7296 57 | vt 0.4274 0.0645 58 | vt 0.4390 0.6501 59 | vt 0.5638 0.0723 60 | vt 0.3465 0.7541 61 | vt 0.9974 0.7187 62 | vt 0.8184 0.6896 63 | vt 0.8172 0.6674 64 | vt 0.5279 0.7621 65 | vt 0.1977 0.7815 66 | vt 0.5557 0.7970 67 | vt 0.0053 0.7332 68 | vt 0.0991 0.6783 69 | vt 0.8833 0.7718 70 | vt 0.4729 0.9788 71 | vt 0.4370 0.6723 72 | vt 0.0944 0.7004 73 | vt 0.1940 0.8034 74 | vt 1.0000 0.7408 75 | vt 0.5548 0.8188 76 | vt 0.8850 0.7937 77 | vt 0.0000 0.7552 78 | vt 0.4321 0.9976 79 | vt 0.4180 0.9826 80 | vt 0.5469 0.9962 81 | vt 0.4012 0.9905 82 | vt 0.4923 1.0000 83 | vt 0.5642 0.9884 84 | vt 0.5337 0.9812 85 | vn -0.3827 0.0000 0.9239 86 | vn -0.9239 0.0000 0.3827 87 | vn -0.9239 -0.0000 -0.3827 88 | vn -0.3827 -0.0000 -0.9239 89 | vn 0.3827 -0.0000 -0.9239 90 | vn 0.9239 -0.0000 -0.3827 91 | vn -0.0000 -1.0000 0.0000 92 | vn 0.3827 0.0000 0.9239 93 | vn 0.9239 0.0000 0.3827 94 | vn -0.8600 0.3655 -0.3562 95 | vn 0.0000 1.0000 0.0000 96 | vn 0.3562 0.3655 -0.8600 97 | vn 0.8600 0.3655 0.3562 98 | vn -0.8600 0.3655 0.3562 99 | vn -0.3562 0.3655 -0.8600 100 | vn 0.8600 0.3655 -0.3562 101 | vn -0.3562 0.3655 0.8600 102 | vn 0.3562 0.3655 0.8600 103 | usemtl None 104 | s off 105 | f 2/1/1 3/2/1 1/3/1 106 | f 4/4/2 5/5/2 3/2/2 107 | f 6/6/3 7/7/3 5/5/3 108 | f 8/8/4 9/9/4 7/7/4 109 | f 10/10/5 11/11/5 9/9/5 110 | f 12/12/6 13/13/6 11/11/6 111 | f 6/6/7 20/14/7 8/8/7 112 | f 15/15/8 2/1/8 1/3/8 113 | f 14/16/9 15/15/9 13/13/9 114 | f 7/7/7 11/11/7 15/15/7 115 | f 18/17/2 27/18/2 19/19/2 116 | f 16/20/7 23/21/7 24/22/7 117 | f 6/6/7 18/17/7 19/19/7 118 | f 12/12/7 23/21/7 14/16/7 119 | f 10/10/7 22/23/7 12/12/7 120 | f 10/10/7 20/14/7 21/24/7 121 | f 16/20/7 17/25/7 2/1/7 122 | f 2/1/7 18/17/7 4/4/7 123 | f 27/18/10 36/26/10 28/27/10 124 | f 20/14/4 29/28/4 21/24/4 125 | f 22/23/6 31/29/6 23/21/6 126 | f 17/25/1 26/30/1 18/17/1 127 | f 17/25/8 32/31/8 25/32/8 128 | f 19/19/3 28/27/3 20/14/3 129 | f 21/24/5 30/33/5 22/23/5 130 | f 23/21/9 32/31/9 24/22/9 131 | f 39/34/11 37/35/11 33/36/11 132 | f 29/28/12 38/37/12 30/33/12 133 | f 32/31/13 39/34/13 40/38/13 134 | f 27/18/14 34/39/14 35/40/14 135 | f 29/28/15 36/26/15 37/35/15 136 | f 30/33/16 39/34/16 31/29/16 137 | f 25/32/17 34/39/17 26/30/17 138 | f 32/31/18 33/36/18 25/32/18 139 | f 2/1/1 4/4/1 3/2/1 140 | f 4/4/2 6/6/2 5/5/2 141 | f 6/6/3 8/8/3 7/7/3 142 | f 8/8/4 10/10/4 9/9/4 143 | f 10/10/5 12/12/5 11/11/5 144 | f 12/12/6 14/16/6 13/13/6 145 | f 6/6/7 19/19/7 20/14/7 146 | f 15/15/8 16/20/8 2/1/8 147 | f 14/16/9 16/20/9 15/15/9 148 | f 15/15/7 1/3/7 7/7/7 149 | f 3/2/7 5/5/7 7/7/7 150 | f 7/7/7 9/9/7 11/11/7 151 | f 11/11/7 13/13/7 15/15/7 152 | f 1/3/7 3/2/7 7/7/7 153 | f 18/17/2 26/30/2 27/18/2 154 | f 16/20/7 14/16/7 23/21/7 155 | f 6/6/7 4/4/7 18/17/7 156 | f 12/12/7 22/23/7 23/21/7 157 | f 10/10/7 21/24/7 22/23/7 158 | f 10/10/7 8/8/7 20/14/7 159 | f 16/20/7 24/22/7 17/25/7 160 | f 2/1/7 17/25/7 18/17/7 161 | f 27/18/10 35/40/10 36/26/10 162 | f 20/14/4 28/27/4 29/28/4 163 | f 22/23/6 30/33/6 31/29/6 164 | f 17/25/1 25/32/1 26/30/1 165 | f 17/25/8 24/22/8 32/31/8 166 | f 19/19/3 27/18/3 28/27/3 167 | f 21/24/5 29/28/5 30/33/5 168 | f 23/21/9 31/29/9 32/31/9 169 | f 35/40/11 34/39/11 33/36/11 170 | f 33/36/11 40/38/11 39/34/11 171 | f 39/34/11 38/37/11 37/35/11 172 | f 37/35/11 36/26/11 35/40/11 173 | f 35/40/11 33/36/11 37/35/11 174 | f 29/28/12 37/35/12 38/37/12 175 | f 32/31/13 31/29/13 39/34/13 176 | f 27/18/14 26/30/14 34/39/14 177 | f 29/28/15 28/27/15 36/26/15 178 | f 30/33/16 38/37/16 39/34/16 179 | f 25/32/17 33/36/17 34/39/17 180 | f 32/31/18 40/38/18 33/36/18 181 | -------------------------------------------------------------------------------- /assets/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_128.png -------------------------------------------------------------------------------- /assets/icon_128_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_128_dark.png -------------------------------------------------------------------------------- /assets/icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_16.png -------------------------------------------------------------------------------- /assets/icon_16_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_16_dark.png -------------------------------------------------------------------------------- /assets/icon_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_24.png -------------------------------------------------------------------------------- /assets/icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_256.png -------------------------------------------------------------------------------- /assets/icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_32.png -------------------------------------------------------------------------------- /assets/icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_512.png -------------------------------------------------------------------------------- /assets/icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/assets/icon_64.png -------------------------------------------------------------------------------- /css/ui-console.css: -------------------------------------------------------------------------------- 1 | .ui-cntrl-console { 2 | width: 500px; 3 | font-size: 12px; 4 | position: absolute; 5 | z-index: 1; 6 | background-color: rgba(34, 34, 34, 0.5); 7 | transition: 0.3s; 8 | opacity: 0.75; 9 | } 10 | .ui-cntrl-console:hover { 11 | opacity: 1; 12 | background-color: #222; 13 | } 14 | .ui-cntrl-console-insides { 15 | overflow: scroll; 16 | height: 48px; 17 | } 18 | -------------------------------------------------------------------------------- /css/ui-contextmenu.css: -------------------------------------------------------------------------------- 1 | /* context menu */ 2 | 3 | .context-menu { 4 | display: none; 5 | position: absolute; 6 | z-index: 10; 7 | /*padding: 2px 0;*/ 8 | width: 200px; 9 | background-color: #222; 10 | border: solid 1px #111; 11 | box-shadow: 1px 1px 2px #000; 12 | } 13 | 14 | .context-menu--active { 15 | display: block; 16 | z-index: 10000; 17 | } 18 | 19 | .context-menu__items { 20 | list-style: none; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | 25 | .context-menu__item { 26 | display: block; 27 | margin-bottom: 4px; 28 | } 29 | 30 | .context-menu__item#splitter { 31 | padding: 0px 10px 0px 10px; 32 | margin: 0px 5px 0px 5px; 33 | color: #888; 34 | background-color: #888; 35 | font-size: 1%; 36 | width: 100% - 10px; 37 | height: 1px; 38 | border: 0; 39 | } 40 | .context-menu__item#splitter:hover { 41 | color: #888; 42 | background-color: #888; 43 | } 44 | 45 | .context-menu__item > a { 46 | display: block; 47 | padding: 0 10px; 48 | color: #bbb; 49 | font-size: 11px; 50 | line-height: 20px; 51 | text-decoration: none; 52 | } 53 | 54 | .context-menu__item > a:before { 55 | vertical-align: center; 56 | /*content: url('../assets/icon_16.png');*/ 57 | top: 4px; 58 | left: -10px; 59 | position: absolute; 60 | } 61 | 62 | .context-menu__item > a[data-icon='properties']::before { 63 | content: url('../img/tree/node_properties.png'); 64 | } 65 | 66 | .context-menu__item:last-child { 67 | margin-bottom: 0; 68 | } 69 | 70 | .context-menu__link { 71 | display: block; 72 | padding: 0px 10px 5px 200px; 73 | 74 | position: relative; 75 | left: 20px; 76 | 77 | color: #bbb; 78 | font-size: 11px; 79 | /*line-height: 20px;*/ 80 | text-decoration: none; 81 | /* 82 | display: block; 83 | padding: 4px 12px; 84 | color: #aaa; 85 | text-decoration: none; 86 | */ 87 | } 88 | 89 | .context-menu__link:hover { 90 | color: #fff; 91 | } 92 | 93 | .context-menu__item:hover { 94 | background-color: #0094f7; 95 | } 96 | -------------------------------------------------------------------------------- /css/ui-progressbar.css: -------------------------------------------------------------------------------- 1 | /* Progress Bar */ 2 | /* -------------------------------------------------------------------- */ 3 | .meter { 4 | height: 15px; /* Can be anything */ 5 | position: relative; 6 | margin: 60px 0 20px 0; /* Just for demo spacing */ 7 | background: #222; /* Border Background */ 8 | -moz-border-radius: 25px; 9 | -webkit-border-radius: 25px; 10 | border-radius: 25px; /* Border Radius */ 11 | padding: 4px; /* Padding Between Bar and Border*/ 12 | -webkit-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); 13 | -moz-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); 14 | box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); 15 | } 16 | .meter > span { 17 | display: block; 18 | height: 100%; 19 | -webkit-border-top-right-radius: 8px; 20 | -webkit-border-bottom-right-radius: 8px; 21 | -moz-border-radius-topright: 8px; 22 | -moz-border-radius-bottomright: 8px; 23 | border-top-right-radius: 8px; 24 | border-bottom-right-radius: 8px; 25 | -webkit-border-top-left-radius: 20px; 26 | -webkit-border-bottom-left-radius: 20px; 27 | -moz-border-radius-topleft: 20px; 28 | -moz-border-radius-bottomleft: 20px; 29 | border-top-left-radius: 20px; 30 | border-bottom-left-radius: 20px; 31 | background-color: rgb(0, 255, 0); 32 | background-image: -webkit-gradient( 33 | linear, 34 | left bottom, 35 | left top, 36 | color-stop(0, rgb(43, 194, 83)), 37 | color-stop(1, rgb(0, 240, 0)) 38 | ); 39 | background-image: -moz-linear-gradient( 40 | center bottom, 41 | rgb(43, 194, 83) 37%, 42 | rgb(84, 240, 84) 69% 43 | ); 44 | -webkit-box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), 45 | inset 0 -2px 6px rgba(0, 0, 0, 0.4); 46 | -moz-box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), 47 | inset 0 -2px 6px rgba(0, 0, 0, 0.4); 48 | box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), 49 | inset 0 -2px 6px rgba(0, 0, 0, 0.4); 50 | position: relative; 51 | overflow: hidden; 52 | } 53 | .meter > span:after, 54 | .animate > span > span { 55 | content: ''; 56 | position: absolute; 57 | top: 0; 58 | left: 0; 59 | bottom: 0; 60 | right: 0; 61 | background-image: -webkit-gradient( 62 | linear, 63 | 0 0, 64 | 100% 100%, 65 | color-stop(0.25, rgba(255, 255, 255, 0.2)), 66 | color-stop(0.25, transparent), 67 | color-stop(0.5, transparent), 68 | color-stop(0.5, rgba(255, 255, 255, 0.2)), 69 | color-stop(0.75, rgba(255, 255, 255, 0.2)), 70 | color-stop(0.75, transparent), 71 | to(transparent) 72 | ); 73 | background-image: -moz-linear-gradient( 74 | -45deg, 75 | rgba(255, 255, 255, 0.2) 25%, 76 | transparent 25%, 77 | transparent 50%, 78 | rgba(255, 255, 255, 0.2) 50%, 79 | rgba(255, 255, 255, 0.2) 75%, 80 | transparent 75%, 81 | transparent 82 | ); 83 | z-index: 1; 84 | -webkit-background-size: 50px 50px; 85 | -moz-background-size: 50px 50px; 86 | -webkit-animation: move 2s linear infinite; 87 | -webkit-border-top-right-radius: 8px; 88 | -webkit-border-bottom-right-radius: 8px; 89 | -moz-border-radius-topright: 8px; 90 | -moz-border-radius-bottomright: 8px; 91 | border-top-right-radius: 8px; 92 | border-bottom-right-radius: 8px; 93 | -webkit-border-top-left-radius: 20px; 94 | -webkit-border-bottom-left-radius: 20px; 95 | -moz-border-radius-topleft: 20px; 96 | -moz-border-radius-bottomleft: 20px; 97 | border-top-left-radius: 20px; 98 | border-bottom-left-radius: 20px; 99 | overflow: hidden; 100 | } 101 | 102 | .animate > span:after { 103 | display: none; 104 | } 105 | 106 | @-webkit-keyframes move { 107 | 0% { 108 | background-position: 0 0; 109 | } 110 | 100% { 111 | background-position: 50px 50px; 112 | } 113 | } 114 | 115 | .orange > span { 116 | background-color: #f1a165; 117 | background-image: -moz-linear-gradient(top, #f1a165, #f36d0a); 118 | background-image: -webkit-gradient( 119 | linear, 120 | left top, 121 | left bottom, 122 | color-stop(0, #f1a165), 123 | color-stop(1, #f36d0a) 124 | ); 125 | background-image: -webkit-linear-gradient(#f1a165, #f36d0a); 126 | } 127 | 128 | .red > span { 129 | background-color: #f0a3a3; 130 | background-image: -moz-linear-gradient(top, #f0a3a3, #f42323); 131 | background-image: -webkit-gradient( 132 | linear, 133 | left top, 134 | left bottom, 135 | color-stop(0, #f0a3a3), 136 | color-stop(1, #f42323) 137 | ); 138 | background-image: -webkit-linear-gradient(#f0a3a3, #f42323); 139 | } 140 | /*4dd2ff*/ 141 | .deepskyblue > span { 142 | background-color: #00bfff; 143 | background-image: -moz-linear-gradient(top, #00bfff, #4dd2ff); 144 | background-image: -webkit-gradient( 145 | linear, 146 | left top, 147 | left bottom, 148 | color-stop(0, #00bfff), 149 | color-stop(1, #4dd2ff) 150 | ); 151 | background-image: -webkit-linear-gradient(#00bfff, #4dd2ff); 152 | } 153 | 154 | .nostripes > span > span, 155 | .nostripes > span:after { 156 | -webkit-animation: none; 157 | background-image: none; 158 | } 159 | -------------------------------------------------------------------------------- /css/ui-propertiesbar.css: -------------------------------------------------------------------------------- 1 | /* Properties Control */ 2 | /* -------------------------------------------------------------------- */ /*.ui-cntrl-properties body { 3 | font-family: "Lato", sans-serif; 4 | transition: background-color .5s; 5 | }*/ 6 | 7 | .ui-cntrl-properties { 8 | /* height: 100%;*/ 9 | width: 300px; 10 | position: fixed; 11 | z-index: 1; 12 | top: 116px; 13 | right: -300px; 14 | background-color: #222; 15 | /*overflow-x: hidden;*/ 16 | transition: 0.3s; 17 | opacity: 0.75; 18 | } 19 | 20 | .ui-cntrl-properties-closebtn { 21 | position: absolute; 22 | top: -5px; 23 | right: 0px; 24 | font-size: 11px; 25 | margin-left: 50px; 26 | font-weight: bold; 27 | color: #000; 28 | } 29 | 30 | #prop_dat_gui { 31 | margin-right: 0px; 32 | } 33 | 34 | #prop_header { 35 | /* 36 | position: absolute; 37 | z-index: 0; 38 | top: -32px; 39 | right: 0px; 40 | */ 41 | background-color: rgb(59, 59, 59); 42 | font-weight: bold; 43 | font-size: 12px; 44 | color: rgb(215, 215, 215); 45 | } 46 | 47 | .ui-cntrl-properties a { 48 | padding: 8px 8px 8px 32px; 49 | text-decoration: none; 50 | font-size: 11px; 51 | color: #818181; 52 | display: block; 53 | transition: 0.3s; 54 | } 55 | 56 | .ui-cntrl-properties a:hover, 57 | .offcanvas a:focus { 58 | color: #f1f1f1; 59 | } 60 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/favicon.ico -------------------------------------------------------------------------------- /img/badges/badge.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/badges/badge.xcf -------------------------------------------------------------------------------- /img/badges/build_status.svg: -------------------------------------------------------------------------------- 1 | buildbuildbeta [v0.5.1]beta [v0.5.1] -------------------------------------------------------------------------------- /img/badges/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/badges/launcher.png -------------------------------------------------------------------------------- /img/badges/launcher.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/badges/launcher.xcf -------------------------------------------------------------------------------- /img/badges/path.txt: -------------------------------------------------------------------------------- 1 | https://img.shields.io/badge/build-beta%20[v0.3.2]-blue.svg -------------------------------------------------------------------------------- /img/btns/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/btns/cancel.png -------------------------------------------------------------------------------- /img/btns/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/btns/delete.png -------------------------------------------------------------------------------- /img/btns/document_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/btns/document_export.png -------------------------------------------------------------------------------- /img/btns/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/btns/warning.png -------------------------------------------------------------------------------- /img/gui/bug_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/bug_go.png -------------------------------------------------------------------------------- /img/gui/bullet_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/bullet_arrow_right.png -------------------------------------------------------------------------------- /img/gui/burger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/burger.png -------------------------------------------------------------------------------- /img/gui/burger.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/burger.xcf -------------------------------------------------------------------------------- /img/gui/burger_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/burger_hover.png -------------------------------------------------------------------------------- /img/gui/centroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/centroid.png -------------------------------------------------------------------------------- /img/gui/check_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/check_box.png -------------------------------------------------------------------------------- /img/gui/check_box_mix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/check_box_mix.png -------------------------------------------------------------------------------- /img/gui/check_box_uncheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/check_box_uncheck.png -------------------------------------------------------------------------------- /img/gui/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/information.png -------------------------------------------------------------------------------- /img/gui/magnifier_zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/magnifier_zoom_in.png -------------------------------------------------------------------------------- /img/gui/magnifier_zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/gui/magnifier_zoom_out.png -------------------------------------------------------------------------------- /img/icon/Icon_mipmap.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/Icon_mipmap.xcf -------------------------------------------------------------------------------- /img/icon/badge.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/badge.xcf -------------------------------------------------------------------------------- /img/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon.png -------------------------------------------------------------------------------- /img/icon/icon.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon.xcf -------------------------------------------------------------------------------- /img/icon/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon_128.png -------------------------------------------------------------------------------- /img/icon/icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon_16.png -------------------------------------------------------------------------------- /img/icon/icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon_256.png -------------------------------------------------------------------------------- /img/icon/icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon_32.png -------------------------------------------------------------------------------- /img/icon/icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/icon_64.png -------------------------------------------------------------------------------- /img/icon/vrtx_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/vrtx_logo.png -------------------------------------------------------------------------------- /img/icon/vrtx_logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/vrtx_logo.xcf -------------------------------------------------------------------------------- /img/icon/vrtx_logo_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/icon/vrtx_logo_16.png -------------------------------------------------------------------------------- /img/io/drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/drive.png -------------------------------------------------------------------------------- /img/io/drive_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/drive_go.png -------------------------------------------------------------------------------- /img/io/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/folder.png -------------------------------------------------------------------------------- /img/io/open_gdrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/open_gdrive.png -------------------------------------------------------------------------------- /img/io/open_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/open_local.png -------------------------------------------------------------------------------- /img/io/open_onDisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/io/open_onDisk.png -------------------------------------------------------------------------------- /img/loading/Eclipse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/loading/Eclipse.gif -------------------------------------------------------------------------------- /img/loading/Eclipse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /img/loading/anim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/loading/anim.gif -------------------------------------------------------------------------------- /img/loading/balls.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/loading/balls.gif -------------------------------------------------------------------------------- /img/loading/box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/loading/box.gif -------------------------------------------------------------------------------- /img/main/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/export.png -------------------------------------------------------------------------------- /img/main/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/import.png -------------------------------------------------------------------------------- /img/main/new_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/new_32.png -------------------------------------------------------------------------------- /img/main/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/open.png -------------------------------------------------------------------------------- /img/main/open_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/open_32.png -------------------------------------------------------------------------------- /img/main/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/save.png -------------------------------------------------------------------------------- /img/main/save_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/main/save_as.png -------------------------------------------------------------------------------- /img/rbn/main/about/bug_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/rbn/main/about/bug_go.png -------------------------------------------------------------------------------- /img/rbn/main/about/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/rbn/main/about/info.png -------------------------------------------------------------------------------- /img/social/Facebook-Icon-Hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Facebook-Icon-Hover.png -------------------------------------------------------------------------------- /img/social/Facebook-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Facebook-Icon.png -------------------------------------------------------------------------------- /img/social/Fb.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Fb.xcf -------------------------------------------------------------------------------- /img/social/Github-Icon-Hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Github-Icon-Hover.png -------------------------------------------------------------------------------- /img/social/Github-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Github-Icon.png -------------------------------------------------------------------------------- /img/social/Github-Icon.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Github-Icon.xcf -------------------------------------------------------------------------------- /img/social/Twitter-Icon-Hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Twitter-Icon-Hover.png -------------------------------------------------------------------------------- /img/social/Twitter-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Twitter-Icon.png -------------------------------------------------------------------------------- /img/social/Twitter-Icon.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/social/Twitter-Icon.xcf -------------------------------------------------------------------------------- /img/tlbr/file/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/exit.png -------------------------------------------------------------------------------- /img/tlbr/file/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/export.png -------------------------------------------------------------------------------- /img/tlbr/file/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/import.png -------------------------------------------------------------------------------- /img/tlbr/file/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/new.png -------------------------------------------------------------------------------- /img/tlbr/file/new_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/new_32.png -------------------------------------------------------------------------------- /img/tlbr/file/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/open.png -------------------------------------------------------------------------------- /img/tlbr/file/open_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/open_32.png -------------------------------------------------------------------------------- /img/tlbr/file/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/save.png -------------------------------------------------------------------------------- /img/tlbr/file/save_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/save_as.png -------------------------------------------------------------------------------- /img/tlbr/file/setting_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/setting_tools.png -------------------------------------------------------------------------------- /img/tlbr/file/toggle_console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/toggle_console.png -------------------------------------------------------------------------------- /img/tlbr/file/toggle_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/toggle_properties.png -------------------------------------------------------------------------------- /img/tlbr/file/toggle_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/file/toggle_tree.png -------------------------------------------------------------------------------- /img/tlbr/tools/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/tools/debug.png -------------------------------------------------------------------------------- /img/tlbr/tools/measure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/tools/measure.png -------------------------------------------------------------------------------- /img/tlbr/view/render/Rander Icons.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/Rander Icons.xcf -------------------------------------------------------------------------------- /img/tlbr/view/render/edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/edge.png -------------------------------------------------------------------------------- /img/tlbr/view/render/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/normal.png -------------------------------------------------------------------------------- /img/tlbr/view/render/render_texture.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/render_texture.xcf -------------------------------------------------------------------------------- /img/tlbr/view/render/shaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/shaded.png -------------------------------------------------------------------------------- /img/tlbr/view/render/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/texture.png -------------------------------------------------------------------------------- /img/tlbr/view/render/wireframe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/render/wireframe.png -------------------------------------------------------------------------------- /img/tlbr/view/set/cube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/cube.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_back.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_bottom.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_cube.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_cube.xcf -------------------------------------------------------------------------------- /img/tlbr/view/set/view_cube_16.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_cube_16.xcf -------------------------------------------------------------------------------- /img/tlbr/view/set/view_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_front.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_iso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_iso.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_left.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_ortho.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_ortho.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_perspective.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_perspective.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_projection.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_projection.xcf -------------------------------------------------------------------------------- /img/tlbr/view/set/view_projection_16.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_projection_16.xcf -------------------------------------------------------------------------------- /img/tlbr/view/set/view_projection_16_2.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_projection_16_2.xcf -------------------------------------------------------------------------------- /img/tlbr/view/set/view_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_right.png -------------------------------------------------------------------------------- /img/tlbr/view/set/view_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/set/view_top.png -------------------------------------------------------------------------------- /img/tlbr/view/zoom/zoom_fit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/zoom/zoom_fit.png -------------------------------------------------------------------------------- /img/tlbr/view/zoom/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/zoom/zoom_in.png -------------------------------------------------------------------------------- /img/tlbr/view/zoom/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tlbr/view/zoom/zoom_out.png -------------------------------------------------------------------------------- /img/tree/bullet_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/bullet_error.png -------------------------------------------------------------------------------- /img/tree/bullet_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/bullet_success.png -------------------------------------------------------------------------------- /img/tree/bullet_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/bullet_warning.png -------------------------------------------------------------------------------- /img/tree/document_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/document_import.png -------------------------------------------------------------------------------- /img/tree/document_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/document_info.png -------------------------------------------------------------------------------- /img/tree/file_ascii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/file_ascii.png -------------------------------------------------------------------------------- /img/tree/file_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/file_bin.png -------------------------------------------------------------------------------- /img/tree/file_extension_jpeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/file_extension_jpeg.png -------------------------------------------------------------------------------- /img/tree/file_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/file_info.png -------------------------------------------------------------------------------- /img/tree/lightbulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/lightbulb.png -------------------------------------------------------------------------------- /img/tree/node_axis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_axis.png -------------------------------------------------------------------------------- /img/tree/node_bullet_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_bullet_blue.png -------------------------------------------------------------------------------- /img/tree/node_bullet_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_bullet_green.png -------------------------------------------------------------------------------- /img/tree/node_bullet_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_bullet_red.png -------------------------------------------------------------------------------- /img/tree/node_bullet_vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_bullet_vector.png -------------------------------------------------------------------------------- /img/tree/node_bullet_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_bullet_white.png -------------------------------------------------------------------------------- /img/tree/node_centroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_centroid.png -------------------------------------------------------------------------------- /img/tree/node_color_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_color_info.png -------------------------------------------------------------------------------- /img/tree/node_colour_rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_colour_rgb.png -------------------------------------------------------------------------------- /img/tree/node_colour_wheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_colour_wheel.png -------------------------------------------------------------------------------- /img/tree/node_colours.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_colours.png -------------------------------------------------------------------------------- /img/tree/node_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_default.png -------------------------------------------------------------------------------- /img/tree/node_envr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_envr.png -------------------------------------------------------------------------------- /img/tree/node_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_folder.png -------------------------------------------------------------------------------- /img/tree/node_folder_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_folder_picture.png -------------------------------------------------------------------------------- /img/tree/node_hash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_hash.png -------------------------------------------------------------------------------- /img/tree/node_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_image.png -------------------------------------------------------------------------------- /img/tree/node_material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_material.png -------------------------------------------------------------------------------- /img/tree/node_materials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_materials.png -------------------------------------------------------------------------------- /img/tree/node_measure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_measure.png -------------------------------------------------------------------------------- /img/tree/node_measure_angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_measure_angle.png -------------------------------------------------------------------------------- /img/tree/node_mesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_mesh.png -------------------------------------------------------------------------------- /img/tree/node_plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_plane.png -------------------------------------------------------------------------------- /img/tree/node_prop_physical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_prop_physical.png -------------------------------------------------------------------------------- /img/tree/node_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_properties.png -------------------------------------------------------------------------------- /img/tree/node_root.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/tree/node_root.png -------------------------------------------------------------------------------- /img/txtrs/txtr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/txtrs/txtr.png -------------------------------------------------------------------------------- /img/txtrs/txtr_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/txtrs/txtr_default.png -------------------------------------------------------------------------------- /img/txtrs/txtr_default.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/txtrs/txtr_default.xcf -------------------------------------------------------------------------------- /img/txtrs/txtr_missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/img/txtrs/txtr_missing.png -------------------------------------------------------------------------------- /js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/js/.DS_Store -------------------------------------------------------------------------------- /js/contextmenu.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | ////////////////////////////////////////////////////////////////////////////// 5 | ////////////////////////////////////////////////////////////////////////////// 6 | // 7 | // H E L P E R F U N C T I O N S 8 | // 9 | ////////////////////////////////////////////////////////////////////////////// 10 | ////////////////////////////////////////////////////////////////////////////// 11 | 12 | /** 13 | * Function to check if we clicked inside an element with a particular class 14 | * name. 15 | * 16 | * @param {Object} e The event 17 | * @param {String} className The class name to check against 18 | * @return {Boolean} 19 | */ 20 | function clickInsideElement(e, className) { 21 | var el = e.srcElement || e.target; 22 | 23 | if (el.classList.contains(className)) { 24 | return el; 25 | } else { 26 | while ((el = el.parentNode)) { 27 | if (el.classList && el.classList.contains(className)) { 28 | return el; 29 | } 30 | } 31 | } 32 | 33 | return false; 34 | } 35 | 36 | /** 37 | * Get's exact position of event. 38 | * 39 | * @param {Object} e The event passed in 40 | * @return {Object} Returns the x and y position 41 | */ 42 | function getPosition(e) { 43 | var posx = 0; 44 | var posy = 0; 45 | 46 | if (!e) var e = window.event; 47 | 48 | if (e.pageX || e.pageY) { 49 | posx = e.pageX; 50 | posy = e.pageY; 51 | } else if (e.clientX || e.clientY) { 52 | posx = 53 | e.clientX + 54 | document.body.scrollLeft + 55 | document.documentElement.scrollLeft; 56 | posy = 57 | e.clientY + 58 | document.body.scrollTop + 59 | document.documentElement.scrollTop; 60 | } 61 | 62 | return { 63 | x: posx, 64 | y: posy 65 | }; 66 | } 67 | 68 | ////////////////////////////////////////////////////////////////////////////// 69 | ////////////////////////////////////////////////////////////////////////////// 70 | // 71 | // C O R E F U N C T I O N S 72 | // 73 | ////////////////////////////////////////////////////////////////////////////// 74 | ////////////////////////////////////////////////////////////////////////////// 75 | 76 | /** 77 | * Variables. 78 | */ 79 | var contextMenuClassName = 'context-menu'; 80 | var contextMenuItemClassName = 'context-menu__item'; 81 | var contextMenuLinkClassName = 'context-menu__link'; 82 | var contextMenuActive = 'context-menu--active'; 83 | 84 | var taskItemClassName = 'glcanvas3D'; 85 | var taskItemInContext; 86 | 87 | var clickCoords; 88 | var clickCoordsX; 89 | var clickCoordsY; 90 | 91 | var menu = document.querySelector('#context-menu'); 92 | var menuItems = menu.querySelectorAll('.context-menu__item'); 93 | var menuState = 0; 94 | var menuWidth; 95 | var menuHeight; 96 | var menuPosition; 97 | var menuPositionX; 98 | var menuPositionY; 99 | 100 | var windowWidth; 101 | var windowHeight; 102 | 103 | /** 104 | * Initialise our application's code. 105 | */ 106 | function init() { 107 | contextListener(); 108 | clickListener(); 109 | keyupListener(); 110 | resizeListener(); 111 | } 112 | 113 | /** 114 | * Listens for contextmenu events. 115 | */ 116 | function contextListener() { 117 | document.addEventListener('contextmenu', function(e) { 118 | taskItemInContext = clickInsideElement(e, taskItemClassName); 119 | //e.preventDefault(); 120 | if (taskItemInContext) { 121 | e.preventDefault(); 122 | toggleMenuOn(); 123 | positionMenu(e); 124 | } else { 125 | taskItemInContext = null; 126 | toggleMenuOff(); 127 | } 128 | }); 129 | } 130 | 131 | /** 132 | * Listens for click events. 133 | */ 134 | function clickListener() { 135 | document.addEventListener('click', function(e) { 136 | var clickeElIsLink = clickInsideElement(e, contextMenuLinkClassName); 137 | 138 | if (clickeElIsLink) { 139 | e.preventDefault(); 140 | menuItemListener(clickeElIsLink); 141 | } else { 142 | var button = e.which || e.button; 143 | if (button === 1) { 144 | toggleMenuOff(); 145 | } 146 | } 147 | }); 148 | } 149 | 150 | /** 151 | * Listens for keyup events. 152 | */ 153 | function keyupListener() { 154 | window.onkeyup = function(e) { 155 | if (e.keyCode === 27) { 156 | toggleMenuOff(); 157 | } 158 | }; 159 | } 160 | 161 | /** 162 | * Window resize event listener 163 | */ 164 | function resizeListener() { 165 | window.onresize = function(e) { 166 | toggleMenuOff(); 167 | }; 168 | } 169 | 170 | /** 171 | * Turns the custom context menu on. 172 | */ 173 | function toggleMenuOn() { 174 | if (menuState !== 1) { 175 | menuState = 1; 176 | menu.classList.add(contextMenuActive); 177 | } 178 | } 179 | 180 | /** 181 | * Turns the custom context menu off. 182 | */ 183 | function toggleMenuOff() { 184 | if (menuState !== 0) { 185 | menuState = 0; 186 | menu.classList.remove(contextMenuActive); 187 | } 188 | } 189 | 190 | /** 191 | * Positions the menu properly. 192 | * 193 | * @param {Object} e The event 194 | */ 195 | function positionMenu(e) { 196 | clickCoords = getPosition(e); 197 | clickCoordsX = clickCoords.x; 198 | clickCoordsY = clickCoords.y; 199 | 200 | menuWidth = menu.offsetWidth + 4; 201 | menuHeight = menu.offsetHeight + 4; 202 | 203 | windowWidth = window.innerWidth; 204 | windowHeight = window.innerHeight; 205 | 206 | if (windowWidth - clickCoordsX < menuWidth) { 207 | menu.style.left = windowWidth - menuWidth + 'px'; 208 | } else { 209 | menu.style.left = clickCoordsX + 'px'; 210 | } 211 | 212 | if (windowHeight - clickCoordsY < menuHeight) { 213 | menu.style.top = windowHeight - menuHeight + 'px'; 214 | } else { 215 | menu.style.top = clickCoordsY + 'px'; 216 | } 217 | } 218 | 219 | /** 220 | * Dummy action function that logs an action when a menu item link is clicked 221 | * 222 | * @param {HTMLElement} link The link that was clicked 223 | */ 224 | function menuItemListener(link) { 225 | log( 226 | 'Task ID - ' + 227 | taskItemInContext.getAttribute('data-id') + 228 | ', Task action - ' + 229 | link.getAttribute('data-action') 230 | ); 231 | toggleMenuOff(); 232 | } 233 | 234 | /** 235 | * Run the app. 236 | */ 237 | init(); 238 | })(); 239 | -------------------------------------------------------------------------------- /js/google/gdrive.js: -------------------------------------------------------------------------------- 1 | // The Browser API key obtained from the Google API Console. 2 | // Replace with your own Browser API key, or your own key. 3 | var developerKey = 'AIzaSyCpY9meQR6AgjIYSko19crZpGr5jDjVsGA'; 4 | 5 | // The Client ID obtained from the Google API Console. Replace with your own Client ID. 6 | var clientId = 7 | '629606533840-1j5m58o3krsdkno8hiamd763opce78ia.apps.googleusercontent.com'; 8 | 9 | // Replace with your own project number from console.developers.google.com. 10 | // See "Project number" under "IAM & Admin" > "Settings" 11 | var appId = '629606533840'; 12 | 13 | // Scope to use to access user's Drive items. 14 | var scope = ['https://www.googleapis.com/auth/drive.file']; 15 | 16 | var pickerApiLoaded = false; 17 | var oauthToken; 18 | 19 | // Use the Google API Loader script to load the google.picker script. 20 | function loadPicker() { 21 | gapi.load('auth', { 22 | callback: onAuthApiLoad 23 | }); 24 | gapi.load('picker', { 25 | callback: onPickerApiLoad 26 | }); 27 | } 28 | 29 | function onAuthApiLoad() { 30 | window.gapi.auth.authorize( 31 | { 32 | client_id: clientId, 33 | scope: scope, 34 | immediate: false 35 | }, 36 | handleAuthResult 37 | ); 38 | } 39 | 40 | function onPickerApiLoad() { 41 | pickerApiLoaded = true; 42 | createPicker(); 43 | } 44 | 45 | function handleAuthResult(authResult) { 46 | if (authResult && !authResult.error) { 47 | oauthToken = authResult.access_token; 48 | console.log(authResult); 49 | createPicker(); 50 | } 51 | } 52 | 53 | // Create and render a Picker object for searching images. 54 | function createPicker() { 55 | if (pickerApiLoaded && oauthToken) { 56 | //var view = new google.picker.View(google.picker.ViewId.DOCS); 57 | var view = new google.picker.DocsView() 58 | .setParent('root') 59 | .setIncludeFolders(true); 60 | //view.setMimeTypes("application/vnd.ms-pki.stl, application/octet-stream"); 61 | var picker = new google.picker.PickerBuilder() 62 | //.enableFeature(google.picker.Feature.NAV_HIDDEN) 63 | .enableFeature(google.picker.Feature.MULTISELECT_ENABLED) 64 | .setAppId(appId) 65 | .setOAuthToken(oauthToken) 66 | .addView(view) 67 | .addView(new google.picker.DocsUploadView()) 68 | .setDeveloperKey(developerKey) 69 | .setCallback(pickerCallback) 70 | .build(); 71 | picker.setVisible(true); 72 | } 73 | } 74 | 75 | function downloadFiles(docs) {} 76 | 77 | // A simple callback implementation. 78 | function pickerCallback(data) { 79 | if (data.action == google.picker.Action.PICKED) { 80 | // first open & close the respective dialogs 81 | modalOpenFile.style.display = 'none'; 82 | document.getElementById('modal_GDrivePicker').style.display = 'block'; 83 | document.getElementById('modal_GDrivePicker-prgrsbar').style.width = 84 | 0 + '%'; 85 | 86 | document.getElementById('modal_GDrivePicker-name').innerHTML = 87 | 'Requesting File: ' + data.docs[0].name; 88 | 89 | document.getElementById('modal_GDrivePicker-size').innerHTML = 90 | 'Please Wait...'; 91 | 92 | var numOfFilesToGet = data.docs.length; 93 | var currentFileIndex = 1; 94 | 95 | var totalBytes = 1; 96 | var currentBytes = 0; 97 | 98 | var fileId = data.docs[0].id; 99 | 100 | var googleSelectedFiles = new Array(); 101 | var docs = data[google.picker.Response.DOCUMENTS]; 102 | docs.forEach(function(file) { 103 | var downloadUrl; 104 | totalBytes += file.sizeBytes; 105 | 106 | gapi.client.request({ 107 | path: '/drive/v2/files/' + file.id, 108 | method: 'GET', 109 | callback: function(responsejs, responsetxt) { 110 | //console.log(responsejs); 111 | 112 | downloadUrl = responsejs.downloadUrl; 113 | 114 | // progress on transfers from the server to the client (downloads) 115 | function updateProgress(event) { 116 | if (event.lengthComputable) { 117 | // Add to the current bytes 118 | currentBytes = event.loaded; 119 | 120 | // Now calculate the percent finished 121 | var percentComplete = (currentBytes / totalBytes) * 100; 122 | 123 | //console.log("Downloaded: " + parseInt(percentComplete) + "%"); 124 | document.getElementById( 125 | 'modal_GDrivePicker-prgrsbar' 126 | ).style.width = 127 | parseInt(percentComplete) + '%'; 128 | //TODO: Add multiple download bars. 129 | 130 | document.getElementById('modal_GDrivePicker-size').innerHTML = 131 | 'Size: ' + 132 | parseInt(currentBytes / 10000) / 100 + 133 | ' of ' + 134 | parseInt(totalBytes / 10000) / 100 + 135 | ' Mb'; 136 | document.getElementById('modal_GDrivePicker-name').innerHTML = 137 | 'Downloading Files '; // + file.name; 138 | } else { 139 | // Unable to compute progress information since the total size is unknown 140 | } 141 | } 142 | 143 | var gDoxBlob = null; 144 | var xhr = new XMLHttpRequest(); 145 | xhr.addEventListener('progress', updateProgress, false); 146 | xhr.open('GET', downloadUrl); //file.url 147 | 148 | var accessToken = gapi.auth.getToken().access_token; 149 | xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); 150 | 151 | xhr.responseType = 'blob'; 152 | xhr.onload = function() { 153 | gDoxBlob = xhr.response; 154 | gDoxBlob.name = file.name; 155 | googleSelectedFiles.push(gDoxBlob); 156 | //googleSelectedFiles.push({ bytes: gDoxBlob, name: file.name }); 157 | //console.log("File '" + file.name + "' Downloaded"); 158 | 159 | if (currentFileIndex == numOfFilesToGet) { 160 | //Finished Downloading Files 161 | document.getElementById('modal_GDrivePicker').style.display = 162 | 'none'; 163 | modalLoadFile.style.display = 'block'; 164 | ProcessFiles(googleSelectedFiles); 165 | //console.log("Loading Files..."); 166 | } 167 | currentFileIndex++; 168 | }; 169 | xhr.send(); 170 | } 171 | }); 172 | }); 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /js/google/login.js: -------------------------------------------------------------------------------- 1 | var GoogleProfile; 2 | 3 | function onSignIn(googleUser) { 4 | GoogleProfile = googleUser.getBasicProfile(); 5 | 6 | /* 7 | console.log('ID: ' + GoogleProfile.getId()); // Do not send to your backend! Use an ID token instead. 8 | console.log('Name: ' + GoogleProfile.getName()); 9 | console.log('Image URL: ' + GoogleProfile.getImageUrl()); 10 | console.log('Email: ' + GoogleProfile.getEmail()); // This is null if the 'email' scope is not present. 11 | */ 12 | User.LoggedIn = true; 13 | User.ID = GoogleProfile.getId(); 14 | User.Name = GoogleProfile.getName(); 15 | User.ImgUrl = GoogleProfile.getImageUrl(); 16 | User.Email = GoogleProfile.getEmail(); 17 | 18 | // hide the button 19 | var btn_googleSignIn = document.getElementById("btn_googleSignIn"); 20 | btn_googleSignIn.style.display = 'none'; 21 | 22 | 23 | // hide and show the proper divs 24 | var btn_googleSignIn = document.getElementById("btn_googleSignIn"); 25 | btn_googleSignIn.style.display = 'none'; 26 | 27 | var img_profile = document.getElementById("img_profile"); 28 | img_profile.src = GoogleProfile.getImageUrl(); 29 | 30 | 31 | var profile_name = document.getElementById("profile_name"); 32 | profile_name.innerHTML = GoogleProfile.getName(); 33 | 34 | 35 | var profile_img = document.getElementById("profile_img"); 36 | profile_img.src = GoogleProfile.getImageUrl(); 37 | 38 | var profile_email = document.getElementById("profile_email"); 39 | profile_email.innerHTML = GoogleProfile.getEmail(); 40 | 41 | 42 | var dev_signedIn = document.getElementById("dev_signedIn"); 43 | dev_signedIn.style.display = 'block'; 44 | 45 | /* 46 | Code to Request Google Drive Later On 47 | var options = new gapi.auth2.SigninOptionsBuilder( 48 | {'scope': 'email https://www.googleapis.com/auth/drive'}); 49 | 50 | googleUser.grant(options).then( 51 | function(success){ 52 | console.log(JSON.stringify({message: "success", value: success})); 53 | }, 54 | function(fail){ 55 | alert(JSON.stringify({message: "fail", value: fail})); 56 | }); 57 | */ 58 | 59 | } 60 | // Logout 61 | //****************************************************************** 62 | function OnGoogleSignOut() { 63 | var auth2 = gapi.auth2.getAuthInstance(); 64 | auth2.signOut().then(function () { 65 | gapi.auth2.getAuthInstance().disconnect(); 66 | var dev_signedIn = document.getElementById("dev_signedIn"); 67 | dev_signedIn.style.display = 'none'; 68 | 69 | 70 | var btn_googleSignIn = document.getElementById("btn_googleSignIn"); 71 | btn_googleSignIn.style.display = 'block'; 72 | 73 | console.log('User signed out.'); 74 | }); 75 | }; -------------------------------------------------------------------------------- /js/io/io_img.js: -------------------------------------------------------------------------------- 1 | var ioImgs = {}; 2 | 3 | function io_import_img(filename, base64) 4 | { 5 | var key = filename; 6 | ioImgs[key.toString().trim().valueOf()] = base64; 7 | } -------------------------------------------------------------------------------- /js/vx/vxCamera.js: -------------------------------------------------------------------------------- 1 | // View Projection Type 2 | //************************************************** 3 | const vxProjectionType = { 4 | Perspective: 0, 5 | Ortho: 1 6 | }; 7 | 8 | 9 | vec3.transformMat4 = function(out, a, m) { 10 | var x = a[0], 11 | y = a[1], 12 | z = a[2], 13 | w = m[3] * x + m[7] * y + m[11] * z + m[15]; 14 | w = w || 1.0; 15 | out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; 16 | out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; 17 | out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; 18 | return out; 19 | }; 20 | 21 | 22 | vec3.cross = function(out, a, b) { 23 | var ax = a[0], 24 | ay = a[1], 25 | az = a[2], 26 | bx = b[0], 27 | by = b[1], 28 | bz = b[2]; 29 | 30 | out[0] = ay * bz - az * by; 31 | out[1] = az * bx - ax * bz; 32 | out[2] = ax * by - ay * bx; 33 | return out; 34 | }; 35 | 36 | vec3.normalize = function(out, a) { 37 | var x = a[0], 38 | y = a[1], 39 | z = a[2]; 40 | var len = x * x + y * y + z * z; 41 | if (len > 0) { 42 | //TODO: evaluate use of glm_invsqrt here? 43 | len = 1 / Math.sqrt(len); 44 | out[0] = a[0] * len; 45 | out[1] = a[1] * len; 46 | out[2] = a[2] * len; 47 | } 48 | return out; 49 | }; 50 | 51 | function vxCamera() { 52 | 53 | // View matrix 54 | this.view = mat4.create(); 55 | 56 | // Projection Matrix 57 | this.projection = mat4.create(); 58 | 59 | this.nearPlane = 1; 60 | 61 | this.farPlane = 100000; 62 | 63 | this.mvp = mat4.create(); 64 | 65 | // Zoom Amount 66 | this.zoom = -100; 67 | 68 | this.projectionType = vxProjectionType.Perspective; 69 | 70 | this.targetCenter = [0, 0, 0]; 71 | 72 | this.target = [0, 0, 0]; 73 | 74 | this.center = [0, 0, 0]; 75 | this.eye = [0, 0, 0]; 76 | 77 | // Roatation about the Y-Axis 78 | // This must be between 0 < theta < 2*PI 79 | this.theta = 0; 80 | 81 | // Angle about the X-Axis 82 | // This must be between 0 < phi < PI 83 | this.phi = 0; 84 | 85 | 86 | this.rotX = -45; 87 | this.rotY = 30; 88 | this.panX = 0; 89 | this.panY = 0; 90 | 91 | this.curZoom = 0; 92 | 93 | // The foward vector 94 | this.fwd = [0, 0, 0]; 95 | 96 | // The up vector 97 | this.up = [0, 1, 0]; 98 | 99 | // The right vector 100 | this.right = [0, 0, 0]; 101 | } 102 | 103 | vxCamera.prototype.update = function() { 104 | 105 | 106 | var resp = 8; 107 | // monitored code goes here 108 | this.theta = Smooth(this.theta, DegToRad(this.rotX), resp); 109 | this.phi = Smooth(this.phi, DegToRad(this.rotY), resp); 110 | this.curZoom = Smooth(this.curZoom, this.zoom, resp); 111 | 112 | 113 | this.up[0] = Math.sin(this.theta) * Math.sin(this.phi); 114 | this.up[1] = Math.cos(this.phi); 115 | this.up[2] = -Math.cos(this.theta) * Math.sin(this.phi); 116 | //console.log(up); 117 | 118 | //var center = [0,0,0]; 119 | 120 | // now get the foward vector, the right vector will be the x-product of that 121 | // and the up vector. 122 | 123 | this.eye = [0, 0, this.curZoom]; 124 | this.eye[0] = Math.sin(this.theta) * Math.cos(this.phi) * this.curZoom; 125 | this.eye[1] = -Math.sin(this.phi) * this.curZoom; 126 | this.eye[2] = -Math.cos(this.theta) * Math.cos(this.phi) * this.curZoom; 127 | 128 | this.fwd[0] = this.center[0] - this.eye[0]; 129 | this.fwd[1] = this.center[1] - this.eye[1]; 130 | this.fwd[2] = this.center[2] - this.eye[2]; 131 | 132 | var fwdN = [0, 0, 0]; 133 | vec3.normalize(fwdN, this.fwd); 134 | //this.right 135 | vec3.cross(this.right, this.up, fwdN); 136 | 137 | modelprop_Center[0] += this.panY * this.up[0] + this.panX * this.right[0]; 138 | modelprop_Center[1] += this.panY * this.up[1] + this.panX * this.right[1]; 139 | modelprop_Center[2] += this.panY * this.up[2] + this.panX * this.right[2]; 140 | 141 | 142 | this.panX = 0; 143 | this.panY = 0; 144 | 145 | this.target[0] = Smooth(this.target[0], modelprop_Center[0], 8); 146 | this.target[1] = Smooth(this.target[1], modelprop_Center[1], 8); 147 | this.target[2] = Smooth(this.target[2], modelprop_Center[2], 8); 148 | 149 | var factor = -this.curZoom / 800; 150 | // Update Projection 151 | if (this.projectionType == vxProjectionType.Perspective) { 152 | mat4.perspective(45, canvas.width / canvas.height, this.nearPlane, this.farPlane, this.projection); 153 | } else if (this.projectionType == vxProjectionType.Ortho) { 154 | mat4.ortho(-factor * canvas.width / 2, factor * canvas.width / 2, -factor * canvas.height / 2, factor * canvas.height / 2, -this.farPlane, this.farPlane, this.projection); 155 | } 156 | 157 | // Set the drawing position to the "identity" point, which is 158 | // the center of the scene. 159 | mat4.identity(this.view); 160 | 161 | // Set Zoom 162 | mat4.translate(this.view, [0, 0, this.curZoom]); 163 | 164 | // set panning 165 | mat4.translate(this.view, [-2 * this.panX / 10, -2 * this.panY / 10, 0]); 166 | 167 | // rotate 168 | mat4.rotate(this.view, this.phi, [1, 0, 0]); 169 | mat4.rotate(this.view, this.theta, [0, 1, 0]); 170 | 171 | // translate to the target 172 | mat4.translate(this.view, this.target); 173 | 174 | mat4.multiply(this.projection, this.view, this.mvp); 175 | // Save the current matrix, then rotate before we draw. 176 | }; 177 | 178 | 179 | vxCamera.prototype.pan = function(deltaX, deltaY) { 180 | 181 | Camera.panX = (deltaX) / 500 * Camera.zoom; 182 | Camera.panY = (deltaY) / 500 * Camera.zoom; 183 | 184 | }; 185 | 186 | vxCamera.prototype.rotate = function(deltaTheta, deltaPhi) { 187 | Camera.rotX += deltaTheta; 188 | Camera.rotY += deltaPhi; 189 | }; 190 | -------------------------------------------------------------------------------- /js/vx/vxColour.js: -------------------------------------------------------------------------------- 1 | function hexToRgb(hex) { 2 | // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") 3 | var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; 4 | hex = hex.replace(shorthandRegex, function(m, r, g, b) { 5 | return r + r + g + g + b + b; 6 | }); 7 | 8 | var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); 9 | return result ? { 10 | r: parseInt(result[1], 16), 11 | g: parseInt(result[2], 16), 12 | b: parseInt(result[3], 16) 13 | } : null; 14 | } 15 | 16 | function rgbToHex(r, g, b) { 17 | return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); 18 | } 19 | 20 | 21 | 22 | function vxColour () { 23 | 24 | this.R=0; 25 | this.G=0; 26 | this.B=0; 27 | this.A=0; 28 | } 29 | 30 | function vxColour (r, g, b, a) { 31 | this.R = r; 32 | this.G = g; 33 | this.B = b; 34 | this.A = a; 35 | } 36 | 37 | vxColour.prototype.Create = function(r, g, b, a) { 38 | this.R = r; 39 | this.G = g; 40 | this.B = b; 41 | this.A = a; 42 | }; 43 | 44 | vxColour.prototype.toString = function() { 45 | return "rgba("+parseInt(this.R*255)+", "+parseInt(this.G*255)+", "+parseInt(this.B*255)+", "+parseInt(this.A*255)+")"; 46 | }; 47 | 48 | //Function to convert hex format to a rgb color 49 | 50 | vxColour.prototype.toHex = function(){ 51 | var color = "rgb("+parseInt(this.R*255)+", "+parseInt(this.G*255)+", "+parseInt(this.B*255)+")"; 52 | if (color.substr(0, 1) === '#') { 53 | return color; 54 | } 55 | var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color); 56 | 57 | var red = parseInt(digits[2]); 58 | var green = parseInt(digits[3]); 59 | var blue = parseInt(digits[4]); 60 | 61 | var rgb = blue | (green << 8) | (red << 16); 62 | return digits[1] + '#' + rgb.toString(16); 63 | }; 64 | 65 | // Set's the RGB values based on a index value 66 | vxColour.prototype.EncodeColour = function(index) { 67 | this.R = index % 255; 68 | this.G = Math.floor((index/255) % (255)); 69 | this.B = Math.floor((index/(255 * 255)) % (255)); 70 | this.A = 1; 71 | 72 | //Now scale down the values from 0-255 to 0-1 73 | this.R = this.R / 255; 74 | this.G = this.G / 255; 75 | this.B = this.B / 255; 76 | //this.A = this.A / 255; 77 | }; 78 | 79 | // Set's the RGB values based on a index value 80 | vxColour.prototype.DecodeColour = function(r, g, b, a) { 81 | var index = 0; 82 | 83 | index = r + g * 255 + b * 255 * 255; 84 | return index; 85 | }; -------------------------------------------------------------------------------- /js/vx/vxCommand.js: -------------------------------------------------------------------------------- 1 | class vxCommand { 2 | constructor() { 3 | } 4 | 5 | HandleMouseClick(mesh) 6 | { 7 | 8 | } 9 | 10 | get Draw() { 11 | 12 | } 13 | 14 | } 15 | 16 | var measureCounts = 1; 17 | class vxMeasureCMD extends vxCommand { 18 | Init() 19 | { 20 | log("-----------------------------------"); 21 | log("Starting Measurement Command"); 22 | this.CurrentClick=1; 23 | 24 | this.Point1=null; 25 | this.Point2=null; 26 | 27 | this.Normal1 = [0,0,0]; 28 | this.Normal2 = [0,0,0]; 29 | 30 | document.getElementById('footer_text').innerHTML = "Select the first face..."; 31 | } 32 | 33 | HandleMouseClick(mesh) { 34 | //console.log(mesh); 35 | if(this.CurrentClick == 1) 36 | { 37 | this.CurrentClick++; 38 | this.Point1 = mesh.Center; 39 | this.Normal1[0] = parseFloat(mesh.vert_noramls[0]); 40 | this.Normal1[1] = parseFloat(mesh.vert_noramls[1]); 41 | this.Normal1[2] = parseFloat(mesh.vert_noramls[2]); 42 | 43 | document.getElementById('footer_text').innerHTML = "Select the second face..."; 44 | } 45 | 46 | else if(this.CurrentClick == 2) 47 | { 48 | this.CurrentClick++; 49 | this.Point2 = mesh.Center; 50 | 51 | this.Normal2[0] = parseFloat(mesh.vert_noramls[0]); 52 | this.Normal2[1] = parseFloat(mesh.vert_noramls[1]); 53 | this.Normal2[2] = parseFloat(mesh.vert_noramls[2]); 54 | 55 | //Now output the distance 56 | var name = 'dist.'+measureCounts; 57 | var distanceMesh = new vxMeasure(name, this.Point1, this.Point2, this.Normal1, this.Normal2); 58 | 59 | document.getElementById('footer_text').innerHTML = "Distance '" + name + "' is: " + distanceMesh.Length; 60 | 61 | measureCounts++; 62 | 63 | MeasureCollection.push(distanceMesh); 64 | log("-----------------------------------"); 65 | } 66 | } 67 | } 68 | 69 | 70 | 71 | class vxMeasureAngleCMD extends vxCommand { 72 | Init() 73 | { 74 | log("-----------------------------------"); 75 | log("Starting Angle Command"); 76 | this.CurrentClick=1; 77 | 78 | this.Point1=null; 79 | this.Point2=null; 80 | 81 | this.Normal1 = [0,0,0]; 82 | this.Normal2 = [0,0,0]; 83 | 84 | document.getElementById('footer_text').innerHTML = "Select the first face..."; 85 | } 86 | 87 | HandleMouseClick(mesh) { 88 | //console.log(mesh); 89 | if(this.CurrentClick == 1) 90 | { 91 | this.CurrentClick++; 92 | this.Point1 = mesh.Center; 93 | 94 | //TODO: change to vertices to get geometric normals 95 | 96 | // the average normal must be taken 97 | var temp_normal = [0,0,0]; 98 | var faceCount = 0; 99 | for(var i = 0; i < mesh.vert_noramls.length; i+=3) 100 | { 101 | faceCount++; 102 | temp_normal[0] += parseFloat(mesh.vert_noramls[i+0]); 103 | temp_normal[1] += parseFloat(mesh.vert_noramls[i+1]); 104 | temp_normal[2] += parseFloat(mesh.vert_noramls[i+2]); 105 | } 106 | 107 | temp_normal[0] /= faceCount; 108 | temp_normal[1] /= faceCount; 109 | temp_normal[2] /= faceCount; 110 | 111 | this.Normal1[0] = temp_normal[0]; 112 | this.Normal1[1] = temp_normal[1]; 113 | this.Normal1[2] = temp_normal[2]; 114 | 115 | document.getElementById('footer_text').innerHTML = "Select the second face..."; 116 | } 117 | 118 | else if(this.CurrentClick == 2) 119 | { 120 | this.CurrentClick++; 121 | this.Point2 = mesh.Center; 122 | 123 | // the average normal must be taken 124 | var temp_normal = [0,0,0]; 125 | var faceCount = 0; 126 | for(var i = 0; i < mesh.vert_noramls.length; i+=3) 127 | { 128 | faceCount++; 129 | temp_normal[0] += parseFloat(mesh.vert_noramls[i+0]); 130 | temp_normal[1] += parseFloat(mesh.vert_noramls[i+1]); 131 | temp_normal[2] += parseFloat(mesh.vert_noramls[i+2]); 132 | } 133 | 134 | temp_normal[0] /= faceCount; 135 | temp_normal[1] /= faceCount; 136 | temp_normal[2] /= faceCount; 137 | 138 | this.Normal2[0] = temp_normal[0]; 139 | this.Normal2[1] = temp_normal[1]; 140 | this.Normal2[2] = temp_normal[2]; 141 | 142 | //Now output the distance 143 | var name = 'angle.'+measureCounts; 144 | var angleMesh = new vxMeasureAngle(name, this.Point1, this.Point2, this.Normal1, this.Normal2); 145 | 146 | document.getElementById('footer_text').innerHTML = "Angle '" + name + "' is: " + angleMesh.Angle; 147 | 148 | measureCounts++; 149 | 150 | MeasureCollection.push(angleMesh); 151 | log("-----------------------------------"); 152 | } 153 | } 154 | } -------------------------------------------------------------------------------- /js/vx/vxGeometry.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | // vxVertex2D 4 | // -------------------------------------------------------------------- 5 | // A 2D Vector class which allows for basic operations. 6 | function vxVertex2D () { 7 | this.X = 0; 8 | this.Y = 0; 9 | } 10 | 11 | function vxVertex2D (x, y) { 12 | this.X = x; 13 | this.Y = y; 14 | } 15 | 16 | vxVertex2D.prototype.Set = function(x, y) { 17 | this.X = x; 18 | this.Y = y; 19 | }; 20 | 21 | // Returns the length of the Vector. 22 | // 23 | // L = (x^2 + y^2 + z^2)^0.5 24 | // 25 | vxVertex2D.prototype.Length = function() { 26 | return Math.sqrt(this.X * this.X + this.Y * this.Y); 27 | }; 28 | 29 | // Normalises this Vector with respect to it's length. 30 | // X = X/L, Y = Y/L 31 | vxVertex2D.prototype.Normalise = function() { 32 | var length = this.Length(); 33 | this.X = this.X/length; 34 | this.Y = this.Y/length; 35 | }; 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | // vxVertex3D 45 | // -------------------------------------------------------------------- 46 | // A 3D Vector class which allows for basic operations. 47 | function vxVertex3D () { 48 | this.X = 0; 49 | this.Y = 0; 50 | this.Z = 0; 51 | } 52 | 53 | function vxVertex3D (x, y, z) { 54 | this.X = x; 55 | this.Y = y; 56 | this.Z = z; 57 | } 58 | 59 | vxVertex3D.prototype.Set = function(x, y, z) { 60 | this.X = x; 61 | this.Y = y; 62 | this.Z = z; 63 | }; 64 | 65 | // Returns the length of the Vector. 66 | // 67 | // L = (x^2 + y^2 + z^2)^0.5 68 | // 69 | vxVertex3D.prototype.Length = function() { 70 | return Math.sqrt(this.X * this.X + this.Y * this.Y + this.Z * this.Z); 71 | }; 72 | 73 | // Normalises this Vector with respect to it's length. 74 | // X = X/L, Y = Y/L, Z = Z/L 75 | vxVertex3D.prototype.Normalise = function() { 76 | var length = this.Length(); 77 | this.X = this.X/length; 78 | this.Y = this.Y/length; 79 | this.Z = this.Z/length; 80 | }; 81 | 82 | // Returns the Cross product of two vectors 83 | vxVertex3D.prototype.Cross = function(v1, v2) { 84 | return 1; 85 | }; 86 | 87 | function sigDigs(val, sigdig){ 88 | var bigVal = parseInt(val * Math.pow(10, sigdig)); 89 | 90 | return bigVal/(Math.pow(10, sigdig)); 91 | }; 92 | 93 | vxVertex3D.prototype.toShortString = function() { 94 | var fig = 3; 95 | return "(" + sigDigs(this.X, fig) + ", " + sigDigs(this.Y, fig) + ", " + sigDigs(this.Z, fig) + ")"; 96 | }; 97 | -------------------------------------------------------------------------------- /js/vx/vxPropteries.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | class vxProperty { 5 | constructor(gui) { 6 | this.gui = gui 7 | this.Type = "base" 8 | } 9 | 10 | remove() { 11 | } 12 | } 13 | 14 | class ModelProp extends vxProperty{ 15 | 16 | constructor(gui, Name) { 17 | super(gui); 18 | 19 | 20 | this.Name = Name; 21 | this.NameNode = this.gui.add(this, 'Name'); 22 | } 23 | 24 | remove() { 25 | this.gui.remove(this.NameNode); 26 | 27 | } 28 | 29 | } 30 | 31 | 32 | class VectorProperty extends vxProperty{ 33 | constructor(gui, text, x, y, z) { 34 | super(gui); 35 | this.x = parseFloat(x); 36 | this.y = parseFloat(y); 37 | this.z = parseFloat(z); 38 | 39 | this.nrmStrn = text + ' (' + this.x + ',' + this.y + ',' + this.z+')'; 40 | //this.folder = this.gui.addFolder('Normal (' + this.x + ',' + this.y + ',' + this.z+')'); 41 | 42 | this.folder = this.gui.addFolder(this.nrmStrn); 43 | this.folder.add(this, 'x'); 44 | this.folder.add(this, 'y'); 45 | this.folder.add(this, 'z'); 46 | } 47 | 48 | remove() { 49 | //this.folder.remove(this.nodex); 50 | //this.folder.remove(this, 'y'); 51 | //this.folder.remove(this, 'z'); 52 | this.gui.removeFolder(this.nrmStrn); 53 | 54 | } 55 | } 56 | 57 | var x = 0; 58 | class FaceProperty extends vxProperty{ 59 | 60 | constructor(gui, mesh) { 61 | super(gui); 62 | 63 | 64 | this.Type = "face" 65 | 66 | x++; 67 | this.Name = mesh.Name; 68 | this.Mesh = mesh; 69 | console.log(mesh); 70 | this.Model = mesh.Mesh.Model.Name; 71 | this.x = 1; 72 | 73 | this.NameNode = this.gui.add(this, 'Name'); 74 | this.ModelNode = this.gui.add(this, 'Model'); 75 | 76 | // Set the Normal 77 | this.Normal = new VectorProperty(gui, "Normal", mesh.vert_noramls[0], mesh.vert_noramls[1], mesh.vert_noramls[2]); 78 | 79 | // Set Vertices 80 | this.Vertices = this.gui.addFolder("Vertices"); 81 | this.Vertices.open(); 82 | 83 | this.Vert1 = new VectorProperty(this.Vertices, "Vert 1", mesh.mesh_vertices[0], mesh.mesh_vertices[1], mesh.mesh_vertices[2]); 84 | this.Vert2 = new VectorProperty(this.Vertices, "Vert 2", mesh.mesh_vertices[3], mesh.mesh_vertices[4], mesh.mesh_vertices[5]); 85 | this.Vert3 = new VectorProperty(this.Vertices, "Vert 3", mesh.mesh_vertices[6], mesh.mesh_vertices[7], mesh.mesh_vertices[8]); 86 | 87 | } 88 | 89 | remove() { 90 | 91 | this.Normal.remove(); 92 | 93 | this.gui.removeFolder("Vertices"); 94 | //this.Vert1.remove(); 95 | 96 | this.gui.remove(this.NameNode); 97 | this.gui.remove(this.ModelNode); 98 | } 99 | 100 | } -------------------------------------------------------------------------------- /js/vxConsole.js: -------------------------------------------------------------------------------- 1 | function vxConsole() { 2 | this.form = document.getElementById('cntrl_console'); 3 | this.textControl = document.getElementById('ui_console'); 4 | this.textControl.textContent = ''; 5 | this.isVisible = true; 6 | 7 | $('.ui-cntrl-console').mouseenter(function() { 8 | LogHasFocus = 1; 9 | }); 10 | $('.ui-cntrl-console').mouseleave(function() { 11 | LogHasFocus = 0; 12 | }); 13 | } 14 | 15 | vxConsole.prototype.ToggleVisibility = function() { 16 | this.isVisible = !this.isVisible; 17 | if (this.isVisible == true) { 18 | this.form.style.display = 'block'; 19 | } else { 20 | this.form.style.display = 'none'; 21 | } 22 | }; 23 | 24 | vxConsole.prototype.WriteLine = function(input) { 25 | this.textControl.textContent += '\n' + input; 26 | this.textControl.scrollTop = 300; // this.textControl.scrollHeight; 27 | var objDiv = document.getElementById('ui_console_pre'); 28 | objDiv.scrollTop = objDiv.scrollHeight - 95; 29 | Prism.highlightElement(this.textControl); 30 | }; 31 | -------------------------------------------------------------------------------- /lib/glmat/.gitignore: -------------------------------------------------------------------------------- 1 | .rvmrc 2 | .DS_Store 3 | tmp 4 | node_modules 5 | npm-debug.log 6 | -------------------------------------------------------------------------------- /lib/glmat/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - "4.2" 5 | script: 6 | - webpack 7 | - webpack --config webpack.config.min.js 8 | - jasmine-node spec 9 | -------------------------------------------------------------------------------- /lib/glmat/BUILDING.md: -------------------------------------------------------------------------------- 1 | Building for the browser 2 | ======================== 3 | 4 | To build `gl-matrix.js` and `gl-matrix-min.js` for use in the browser install 5 | the required NPM dependencies first by running 6 | 7 | npm install 8 | 9 | from the this directory, then run the following command: 10 | 11 | npm run build-all 12 | 13 | This will build the full and minified versions of glMatrix as well as the docs. -------------------------------------------------------------------------------- /lib/glmat/CNAME: -------------------------------------------------------------------------------- 1 | glmatrix.net 2 | -------------------------------------------------------------------------------- /lib/glmat/LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /lib/glmat/README.md: -------------------------------------------------------------------------------- 1 | glMatrix 2 | ======================= 3 | [![Build Status](https://travis-ci.org/toji/gl-matrix.svg)](https://travis-ci.org/toji/gl-matrix) 4 | 5 | Javascript has evolved into a language capable of handling realtime 3D graphics, 6 | via WebGL, and computationally intensive tasks such as physics simulations. 7 | These types of applications demand high performance vector and matrix math, 8 | which is something that Javascript doesn't provide by default. 9 | glMatrix to the rescue! 10 | 11 | glMatrix is designed to perform vector and matrix operations stupidly fast! By 12 | hand-tuning each function for maximum performance and encouraging efficient 13 | usage patterns through API conventions, glMatrix will help you get the most out 14 | of your browsers Javascript engine. 15 | 16 | Learn More 17 | ---------------------- 18 | For documentation, news, tutorials, and more visit the [glMatrix Homepage](http://glmatrix.net/) 19 | 20 | Contributing 21 | ---------------------- 22 | Contributions are welcome! Please provide unit tests for new functionality. (See TESTING.md for details) 23 | -------------------------------------------------------------------------------- /lib/glmat/TESTING.md: -------------------------------------------------------------------------------- 1 | Running the test suite 2 | ======================= 3 | 4 | The unit tests are built upon the following tools: 5 | 6 | * Jasmine -- the underlying test suite which executes the test and reports feedback 7 | * node.js -- used for testing at the command line, via the `jasmine-node` package 8 | 9 | To run the unit tests run the following command: 10 | 11 | npm run test -------------------------------------------------------------------------------- /lib/glmat/VERSION: -------------------------------------------------------------------------------- 1 | 2.3.0 -------------------------------------------------------------------------------- /lib/glmat/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gl-matrix", 3 | "homepage": "http://glmatrix.net", 4 | "authors": [ 5 | "Brandon Jones ", 6 | "Colin MacKenzie IV " 7 | ], 8 | "description": "Javascript Matrix and Vector library for High Performance WebGL apps", 9 | "main": "dist/gl-matrix-min.js", 10 | "ignore": [ 11 | "**/.*", 12 | "jsdoc-template", 13 | "spec", 14 | "tasks", 15 | "Gemfile", 16 | "Gemfile.lock", 17 | "Rakefile", 18 | "TESTING.md" 19 | ], 20 | "keywords": [ 21 | "webGL", 22 | "matrix", 23 | "vector" 24 | ], 25 | "license": "MIT" 26 | } 27 | -------------------------------------------------------------------------------- /lib/glmat/docs/common.js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Source: common.js 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |

19 | 20 |

Source: common.js

21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
 30 | 
 31 | Permission is hereby granted, free of charge, to any person obtaining a copy
 32 | of this software and associated documentation files (the "Software"), to deal
 33 | in the Software without restriction, including without limitation the rights
 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 35 | copies of the Software, and to permit persons to whom the Software is
 36 | furnished to do so, subject to the following conditions:
 37 | 
 38 | The above copyright notice and this permission notice shall be included in
 39 | all copies or substantial portions of the Software.
 40 | 
 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 47 | THE SOFTWARE. */
 48 | 
 49 | /**
 50 |  * @class Common utilities
 51 |  * @name glMatrix
 52 |  */
 53 | var glMatrix = {};
 54 | 
 55 | // Configuration Constants
 56 | glMatrix.EPSILON = 0.000001;
 57 | glMatrix.ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;
 58 | glMatrix.RANDOM = Math.random;
 59 | glMatrix.ENABLE_SIMD = false;
 60 | 
 61 | // Capability detection
 62 | glMatrix.SIMD_AVAILABLE = (glMatrix.ARRAY_TYPE === this.Float32Array) && ('SIMD' in this);
 63 | glMatrix.USE_SIMD = glMatrix.ENABLE_SIMD && glMatrix.SIMD_AVAILABLE;
 64 | 
 65 | /**
 66 |  * Sets the type of array used when creating new vectors and matrices
 67 |  *
 68 |  * @param {Type} type Array type, such as Float32Array or Array
 69 |  */
 70 | glMatrix.setMatrixArrayType = function(type) {
 71 |     glMatrix.ARRAY_TYPE = type;
 72 | }
 73 | 
 74 | var degree = Math.PI / 180;
 75 | 
 76 | /**
 77 | * Convert Degree To Radian
 78 | *
 79 | * @param {Number} a Angle in Degrees
 80 | */
 81 | glMatrix.toRadian = function(a){
 82 |      return a * degree;
 83 | }
 84 | 
 85 | /**
 86 |  * Tests whether or not the arguments have approximately the same value, within an absolute
 87 |  * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less 
 88 |  * than or equal to 1.0, and a relative tolerance is used for larger values)
 89 |  * 
 90 |  * @param {Number} a The first number to test.
 91 |  * @param {Number} b The second number to test.
 92 |  * @returns {Boolean} True if the numbers are approximately equal, false otherwise.
 93 |  */
 94 | glMatrix.equals = function(a, b) {
 95 | 	return Math.abs(a - b) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b));
 96 | }
 97 | 
 98 | module.exports = glMatrix;
 99 | 
100 |
101 |
102 | 103 | 104 | 105 | 106 |
107 | 108 | 111 | 112 |
113 | 114 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /lib/glmat/docs/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/glmat/docs/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /lib/glmat/docs/gl-matrix.js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Source: gl-matrix.js 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Source: gl-matrix.js

21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
/**
30 |  * @fileoverview gl-matrix - High performance matrix and vector operations
31 |  * @author Brandon Jones
32 |  * @author Colin MacKenzie IV
33 |  * @version 2.3.2
34 |  */
35 | 
36 | /* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
37 | 
38 | Permission is hereby granted, free of charge, to any person obtaining a copy
39 | of this software and associated documentation files (the "Software"), to deal
40 | in the Software without restriction, including without limitation the rights
41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42 | copies of the Software, and to permit persons to whom the Software is
43 | furnished to do so, subject to the following conditions:
44 | 
45 | The above copyright notice and this permission notice shall be included in
46 | all copies or substantial portions of the Software.
47 | 
48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54 | THE SOFTWARE. */
55 | // END HEADER
56 | 
57 | exports.glMatrix = require("./gl-matrix/common.js");
58 | exports.mat2 = require("./gl-matrix/mat2.js");
59 | exports.mat2d = require("./gl-matrix/mat2d.js");
60 | exports.mat3 = require("./gl-matrix/mat3.js");
61 | exports.mat4 = require("./gl-matrix/mat4.js");
62 | exports.quat = require("./gl-matrix/quat.js");
63 | exports.vec2 = require("./gl-matrix/vec2.js");
64 | exports.vec3 = require("./gl-matrix/vec3.js");
65 | exports.vec4 = require("./gl-matrix/vec4.js");
66 |
67 |
68 | 69 | 70 | 71 | 72 |
73 | 74 | 77 | 78 |
79 | 80 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /lib/glmat/docs/gl-matrix_common.js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Source: gl-matrix/common.js 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Source: gl-matrix/common.js

21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
 30 | 
 31 | Permission is hereby granted, free of charge, to any person obtaining a copy
 32 | of this software and associated documentation files (the "Software"), to deal
 33 | in the Software without restriction, including without limitation the rights
 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 35 | copies of the Software, and to permit persons to whom the Software is
 36 | furnished to do so, subject to the following conditions:
 37 | 
 38 | The above copyright notice and this permission notice shall be included in
 39 | all copies or substantial portions of the Software.
 40 | 
 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 47 | THE SOFTWARE. */
 48 | 
 49 | /**
 50 |  * @class Common utilities
 51 |  * @name glMatrix
 52 |  */
 53 | var glMatrix = {};
 54 | 
 55 | // Configuration Constants
 56 | glMatrix.EPSILON = 0.000001;
 57 | glMatrix.ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;
 58 | glMatrix.RANDOM = Math.random;
 59 | glMatrix.ENABLE_SIMD = false;
 60 | 
 61 | // Capability detection
 62 | glMatrix.SIMD_AVAILABLE = (glMatrix.ARRAY_TYPE === this.Float32Array) && ('SIMD' in this);
 63 | glMatrix.USE_SIMD = glMatrix.ENABLE_SIMD && glMatrix.SIMD_AVAILABLE;
 64 | 
 65 | /**
 66 |  * Sets the type of array used when creating new vectors and matrices
 67 |  *
 68 |  * @param {Type} type Array type, such as Float32Array or Array
 69 |  */
 70 | glMatrix.setMatrixArrayType = function(type) {
 71 |     glMatrix.ARRAY_TYPE = type;
 72 | }
 73 | 
 74 | var degree = Math.PI / 180;
 75 | 
 76 | /**
 77 | * Convert Degree To Radian
 78 | *
 79 | * @param {Number} a Angle in Degrees
 80 | */
 81 | glMatrix.toRadian = function(a){
 82 |      return a * degree;
 83 | }
 84 | 
 85 | /**
 86 |  * Tests whether or not the arguments have approximately the same value, within an absolute
 87 |  * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less 
 88 |  * than or equal to 1.0, and a relative tolerance is used for larger values)
 89 |  * 
 90 |  * @param {Number} a The first number to test.
 91 |  * @param {Number} b The second number to test.
 92 |  * @returns {Boolean} True if the numbers are approximately equal, false otherwise.
 93 |  */
 94 | glMatrix.equals = function(a, b) {
 95 | 	return Math.abs(a - b) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b));
 96 | }
 97 | 
 98 | module.exports = glMatrix;
 99 | 
100 |
101 |
102 | 103 | 104 | 105 | 106 |
107 | 108 | 111 | 112 |
113 | 114 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /lib/glmat/docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Home 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Home

21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 55 | 56 |
57 | 58 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /lib/glmat/docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /lib/glmat/docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /lib/glmat/docs/styles/jsdoc-default.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Open Sans'; 3 | font-weight: normal; 4 | font-style: normal; 5 | src: url('../fonts/OpenSans-Regular-webfont.eot'); 6 | src: 7 | local('Open Sans'), 8 | local('OpenSans'), 9 | url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), 10 | url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), 11 | url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); 12 | } 13 | 14 | @font-face { 15 | font-family: 'Open Sans Light'; 16 | font-weight: normal; 17 | font-style: normal; 18 | src: url('../fonts/OpenSans-Light-webfont.eot'); 19 | src: 20 | local('Open Sans Light'), 21 | local('OpenSans Light'), 22 | url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), 23 | url('../fonts/OpenSans-Light-webfont.woff') format('woff'), 24 | url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); 25 | } 26 | 27 | html 28 | { 29 | overflow: auto; 30 | background-color: #fff; 31 | font-size: 14px; 32 | } 33 | 34 | body 35 | { 36 | font-family: 'Open Sans', sans-serif; 37 | line-height: 1.5; 38 | color: #4d4e53; 39 | background-color: white; 40 | } 41 | 42 | a, a:visited, a:active { 43 | color: #0095dd; 44 | text-decoration: none; 45 | } 46 | 47 | a:hover { 48 | text-decoration: underline; 49 | } 50 | 51 | header 52 | { 53 | display: block; 54 | padding: 0px 4px; 55 | } 56 | 57 | tt, code, kbd, samp { 58 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 59 | } 60 | 61 | .class-description { 62 | font-size: 130%; 63 | line-height: 140%; 64 | margin-bottom: 1em; 65 | margin-top: 1em; 66 | } 67 | 68 | .class-description:empty { 69 | margin: 0; 70 | } 71 | 72 | #main { 73 | float: left; 74 | width: 70%; 75 | } 76 | 77 | article dl { 78 | margin-bottom: 40px; 79 | } 80 | 81 | section 82 | { 83 | display: block; 84 | background-color: #fff; 85 | padding: 12px 24px; 86 | border-bottom: 1px solid #ccc; 87 | margin-right: 30px; 88 | } 89 | 90 | .variation { 91 | display: none; 92 | } 93 | 94 | .signature-attributes { 95 | font-size: 60%; 96 | color: #aaa; 97 | font-style: italic; 98 | font-weight: lighter; 99 | } 100 | 101 | nav 102 | { 103 | display: block; 104 | float: right; 105 | margin-top: 28px; 106 | width: 30%; 107 | box-sizing: border-box; 108 | border-left: 1px solid #ccc; 109 | padding-left: 16px; 110 | } 111 | 112 | nav ul { 113 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; 114 | font-size: 100%; 115 | line-height: 17px; 116 | padding: 0; 117 | margin: 0; 118 | list-style-type: none; 119 | } 120 | 121 | nav ul a, nav ul a:visited, nav ul a:active { 122 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 123 | line-height: 18px; 124 | color: #4D4E53; 125 | } 126 | 127 | nav h3 { 128 | margin-top: 12px; 129 | } 130 | 131 | nav li { 132 | margin-top: 6px; 133 | } 134 | 135 | footer { 136 | display: block; 137 | padding: 6px; 138 | margin-top: 12px; 139 | font-style: italic; 140 | font-size: 90%; 141 | } 142 | 143 | h1, h2, h3, h4 { 144 | font-weight: 200; 145 | margin: 0; 146 | } 147 | 148 | h1 149 | { 150 | font-family: 'Open Sans Light', sans-serif; 151 | font-size: 48px; 152 | letter-spacing: -2px; 153 | margin: 12px 24px 20px; 154 | } 155 | 156 | h2, h3 157 | { 158 | font-size: 30px; 159 | font-weight: 700; 160 | letter-spacing: -1px; 161 | margin-bottom: 12px; 162 | } 163 | 164 | h4 165 | { 166 | font-size: 18px; 167 | letter-spacing: -0.33px; 168 | margin-bottom: 12px; 169 | color: #4d4e53; 170 | } 171 | 172 | h5, .container-overview .subsection-title 173 | { 174 | font-size: 120%; 175 | font-weight: bold; 176 | letter-spacing: -0.01em; 177 | margin: 8px 0 3px 0; 178 | } 179 | 180 | h6 181 | { 182 | font-size: 100%; 183 | letter-spacing: -0.01em; 184 | margin: 6px 0 3px 0; 185 | font-style: italic; 186 | } 187 | 188 | .ancestors { color: #999; } 189 | .ancestors a 190 | { 191 | color: #999 !important; 192 | text-decoration: none; 193 | } 194 | 195 | .clear 196 | { 197 | clear: both; 198 | } 199 | 200 | .important 201 | { 202 | font-weight: bold; 203 | color: #950B02; 204 | } 205 | 206 | .yes-def { 207 | text-indent: -1000px; 208 | } 209 | 210 | .type-signature { 211 | color: #aaa; 212 | } 213 | 214 | .name, .signature { 215 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 216 | } 217 | 218 | .details { margin-top: 14px; border-left: 2px solid #DDD; } 219 | .details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } 220 | .details dd { margin-left: 70px; } 221 | .details ul { margin: 0; } 222 | .details ul { list-style-type: none; } 223 | .details li { margin-left: 30px; padding-top: 6px; } 224 | .details pre.prettyprint { margin: 0 } 225 | .details .object-value { padding-top: 0; } 226 | 227 | .description { 228 | margin-bottom: 1em; 229 | margin-top: 1em; 230 | } 231 | 232 | .code-caption 233 | { 234 | font-style: italic; 235 | font-size: 107%; 236 | margin: 0; 237 | } 238 | 239 | .prettyprint 240 | { 241 | border: 1px solid #ddd; 242 | width: 80%; 243 | overflow: auto; 244 | } 245 | 246 | .prettyprint.source { 247 | width: inherit; 248 | } 249 | 250 | .prettyprint code 251 | { 252 | font-size: 100%; 253 | line-height: 18px; 254 | display: block; 255 | padding: 4px 12px; 256 | margin: 0; 257 | background-color: #fff; 258 | color: #4D4E53; 259 | } 260 | 261 | .prettyprint code span.line 262 | { 263 | display: inline-block; 264 | } 265 | 266 | .prettyprint.linenums 267 | { 268 | padding-left: 70px; 269 | -webkit-user-select: none; 270 | -moz-user-select: none; 271 | -ms-user-select: none; 272 | user-select: none; 273 | } 274 | 275 | .prettyprint.linenums ol 276 | { 277 | padding-left: 0; 278 | } 279 | 280 | .prettyprint.linenums li 281 | { 282 | border-left: 3px #ddd solid; 283 | } 284 | 285 | .prettyprint.linenums li.selected, 286 | .prettyprint.linenums li.selected * 287 | { 288 | background-color: lightyellow; 289 | } 290 | 291 | .prettyprint.linenums li * 292 | { 293 | -webkit-user-select: text; 294 | -moz-user-select: text; 295 | -ms-user-select: text; 296 | user-select: text; 297 | } 298 | 299 | .params, .props 300 | { 301 | border-spacing: 0; 302 | border: 0; 303 | border-collapse: collapse; 304 | } 305 | 306 | .params .name, .props .name, .name code { 307 | color: #4D4E53; 308 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 309 | font-size: 100%; 310 | } 311 | 312 | .params td, .params th, .props td, .props th 313 | { 314 | border: 1px solid #ddd; 315 | margin: 0px; 316 | text-align: left; 317 | vertical-align: top; 318 | padding: 4px 6px; 319 | display: table-cell; 320 | } 321 | 322 | .params thead tr, .props thead tr 323 | { 324 | background-color: #ddd; 325 | font-weight: bold; 326 | } 327 | 328 | .params .params thead tr, .props .props thead tr 329 | { 330 | background-color: #fff; 331 | font-weight: bold; 332 | } 333 | 334 | .params th, .props th { border-right: 1px solid #aaa; } 335 | .params thead .last, .props thead .last { border-right: 1px solid #ddd; } 336 | 337 | .params td.description > p:first-child, 338 | .props td.description > p:first-child 339 | { 340 | margin-top: 0; 341 | padding-top: 0; 342 | } 343 | 344 | .params td.description > p:last-child, 345 | .props td.description > p:last-child 346 | { 347 | margin-bottom: 0; 348 | padding-bottom: 0; 349 | } 350 | 351 | .disabled { 352 | color: #454545; 353 | } 354 | -------------------------------------------------------------------------------- /lib/glmat/docs/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /lib/glmat/docs/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/allclasses.tmpl: -------------------------------------------------------------------------------- 1 |
{+new Link().toFile("index.html").withText("Class Index")+} 2 | | {+new Link().toFile("files.html").withText("File Index")+}
3 |
4 |

Classes

5 | 14 |
-------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/allfiles.tmpl: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | {! Link.base = ""; /* all generated links will be relative to this */ !} 7 | glMatrix - File Index 8 | 9 | 10 | 13 | 14 | 15 | 16 | {+include("static/header.html")+} 17 | 18 |
19 | 20 |
21 | {+publish.classesIndex+} 22 |
23 | 24 |
25 |

File Index

26 | 27 | 28 |
29 |

{+new Link().toSrc(item.alias).withText(item.name)+}

30 | {+resolveLinks(item.desc)+} 31 |
32 | 33 |
Author:
34 |
{+item.author+}
35 |
36 | 37 |
Version:
38 |
{+item.version+}
39 |
40 | {! var locations = item.comment.getTag('location').map(function($){return $.toString().replace(/(^\$ ?| ?\$$)/g, '').replace(/^HeadURL: https:/g, 'http:');}) !} 41 | 42 |
Location:
43 | 44 |
{+location+}
45 |
46 |
47 |
48 |
49 |
50 |
51 | 52 |
53 | 54 | 62 | 63 |
64 | 65 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/index.tmpl: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | glMatrix - Index 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | {+include("static/header.html")+} 19 | 20 |
21 | 22 |
23 | {+publish.classesIndex+} 24 |
25 | 26 |
27 |

Class Index

28 | 29 | 30 | 31 |
32 |

{+(new Link().toSymbol(thisClass.alias))+}

33 | {+resolveLinks(summarize(thisClass.classDesc))+} 34 |
35 |
36 |
37 |
38 | 39 |
40 | 41 | 49 | 50 |
51 | 52 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/publish.js: -------------------------------------------------------------------------------- 1 | /** Called automatically by JsDoc Toolkit. */ 2 | function publish(symbolSet) { 3 | publish.conf = { // trailing slash expected for dirs 4 | ext: ".html", 5 | outDir: JSDOC.opt.d || SYS.pwd+"../out/jsdoc/", 6 | templatesDir: JSDOC.opt.t || SYS.pwd+"../jsdoc-template/", 7 | symbolsDir: "symbols/", 8 | srcDir: "symbols/src/" 9 | }; 10 | 11 | // is source output is suppressed, just display the links to the source file 12 | if (JSDOC.opt.s && defined(Link) && Link.prototype._makeSrcLink) { 13 | Link.prototype._makeSrcLink = function(srcFilePath) { 14 | return "<"+srcFilePath+">"; 15 | } 16 | } 17 | 18 | // create the folders and subfolders to hold the output 19 | IO.mkPath((publish.conf.outDir+"symbols/src").split("/")); 20 | 21 | // used to allow Link to check the details of things being linked to 22 | Link.symbolSet = symbolSet; 23 | 24 | // create the required templates 25 | try { 26 | var classTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"class.tmpl"); 27 | var classesTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allclasses.tmpl"); 28 | } 29 | catch(e) { 30 | print("Couldn't create the required templates: "+e); 31 | quit(); 32 | } 33 | 34 | // some ustility filters 35 | function hasNoParent($) {return ($.memberOf == "")} 36 | function isaFile($) {return ($.is("FILE"))} 37 | function isaClass($) {return ($.is("CONSTRUCTOR") || $.isNamespace)} 38 | 39 | // get an array version of the symbolset, useful for filtering 40 | var symbols = symbolSet.toArray(); 41 | 42 | // create the hilited source code files 43 | var files = JSDOC.opt.srcFiles; 44 | for (var i = 0, l = files.length; i < l; i++) { 45 | var file = files[i]; 46 | var srcDir = publish.conf.outDir + "symbols/src/"; 47 | makeSrcFile(file, srcDir); 48 | } 49 | 50 | // get a list of all the classes in the symbolset 51 | var classes = symbols.filter(isaClass).sort(makeSortby("alias")); 52 | 53 | // create a filemap in which outfiles must be to be named uniquely, ignoring case 54 | if (JSDOC.opt.u) { 55 | var filemapCounts = {}; 56 | Link.filemap = {}; 57 | for (var i = 0, l = classes.length; i < l; i++) { 58 | var lcAlias = classes[i].alias.toLowerCase(); 59 | 60 | if (!filemapCounts[lcAlias]) filemapCounts[lcAlias] = 1; 61 | else filemapCounts[lcAlias]++; 62 | 63 | Link.filemap[classes[i].alias] = 64 | (filemapCounts[lcAlias] > 1)? 65 | lcAlias+"_"+filemapCounts[lcAlias] : lcAlias; 66 | } 67 | } 68 | 69 | // create a class index, displayed in the left-hand column of every class page 70 | Link.base = "../"; 71 | publish.classesIndex = classesTemplate.process(classes); // kept in memory 72 | 73 | // create each of the class pages 74 | for (var i = 0, l = classes.length; i < l; i++) { 75 | var symbol = classes[i]; 76 | 77 | symbol.events = symbol.getEvents(); // 1 order matters 78 | symbol.methods = symbol.getMethods(); // 2 79 | 80 | Link.currentSymbol= symbol; 81 | var output = ""; 82 | output = classTemplate.process(symbol); 83 | 84 | IO.saveFile(publish.conf.outDir+"symbols/", ((JSDOC.opt.u)? Link.filemap[symbol.alias] : symbol.alias) + publish.conf.ext, output); 85 | } 86 | 87 | // regenerate the index with different relative links, used in the index pages 88 | Link.base = ""; 89 | publish.classesIndex = classesTemplate.process(classes); 90 | 91 | // create the class index page 92 | try { 93 | var classesindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"index.tmpl"); 94 | } 95 | catch(e) { print(e.message); quit(); } 96 | 97 | var classesIndex = classesindexTemplate.process(classes); 98 | IO.saveFile(publish.conf.outDir, "index"+publish.conf.ext, classesIndex); 99 | classesindexTemplate = classesIndex = classes = null; 100 | 101 | // create the file index page 102 | try { 103 | var fileindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allfiles.tmpl"); 104 | } 105 | catch(e) { print(e.message); quit(); } 106 | 107 | var documentedFiles = symbols.filter(isaFile); // files that have file-level docs 108 | var allFiles = []; // not all files have file-level docs, but we need to list every one 109 | 110 | for (var i = 0; i < files.length; i++) { 111 | allFiles.push(new JSDOC.Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */"))); 112 | } 113 | 114 | for (var i = 0; i < documentedFiles.length; i++) { 115 | var offset = files.indexOf(documentedFiles[i].alias); 116 | allFiles[offset] = documentedFiles[i]; 117 | } 118 | 119 | allFiles = allFiles.sort(makeSortby("name")); 120 | 121 | // output the file index page 122 | var filesIndex = fileindexTemplate.process(allFiles); 123 | IO.saveFile(publish.conf.outDir, "files"+publish.conf.ext, filesIndex); 124 | fileindexTemplate = filesIndex = files = null; 125 | } 126 | 127 | 128 | /** Just the first sentence (up to a full stop). Should not break on dotted variable names. */ 129 | function summarize(desc) { 130 | if (typeof desc != "undefined") 131 | return desc.match(/([\w\W]+?\.)[^a-z0-9_$]/i)? RegExp.$1 : desc; 132 | } 133 | 134 | /** Make a symbol sorter by some attribute. */ 135 | function makeSortby(attribute) { 136 | return function(a, b) { 137 | if (a[attribute] != undefined && b[attribute] != undefined) { 138 | a = a[attribute].toLowerCase(); 139 | b = b[attribute].toLowerCase(); 140 | if (a < b) return -1; 141 | if (a > b) return 1; 142 | return 0; 143 | } 144 | } 145 | } 146 | 147 | /** Pull in the contents of an external file at the given path. */ 148 | function include(path) { 149 | var path = publish.conf.templatesDir+path; 150 | return IO.readFile(path); 151 | } 152 | 153 | /** Turn a raw source file into a code-hilited page in the docs. */ 154 | function makeSrcFile(path, srcDir, name) { 155 | if (JSDOC.opt.s) return; 156 | 157 | if (!name) { 158 | name = path.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_"); 159 | name = name.replace(/\:/g, "_"); 160 | } 161 | 162 | var src = {path: path, name:name, charset: IO.encoding, hilited: ""}; 163 | 164 | if (defined(JSDOC.PluginManager)) { 165 | JSDOC.PluginManager.run("onPublishSrc", src); 166 | } 167 | 168 | if (src.hilited) { 169 | IO.saveFile(srcDir, name+publish.conf.ext, src.hilited); 170 | } 171 | } 172 | 173 | /** Build output for displaying function parameters. */ 174 | function makeSignature(params) { 175 | if (!params) return "()"; 176 | var signature = "(" 177 | + 178 | params.filter( 179 | function($) { 180 | return $.name.indexOf(".") == -1; // don't show config params in signature 181 | } 182 | ).map( 183 | function($) { 184 | return $.name; 185 | } 186 | ).join(", ") 187 | + 188 | ")"; 189 | return signature; 190 | } 191 | 192 | /** Find symbol {@link ...} strings in text and turn into html links */ 193 | function resolveLinks(str, from) { 194 | str = str.replace(/\{@link ([^} ]+) ?\}/gi, 195 | function(match, symbolName) { 196 | return new Link().toSymbol(symbolName); 197 | } 198 | ); 199 | 200 | return str; 201 | } 202 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/static/header.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/static/index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | glMatrix Documentation 7 | 8 | 9 | 10 | 11 | 12 | <body> 13 | <p> 14 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 15 | </p> 16 | </body> 17 | 18 | 19 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc-template/symbol.tmpl: -------------------------------------------------------------------------------- 1 | 2 | {+data.name+} 3 | {+data.memberOf+} 4 | {+data.isStatic+} 5 | {+data.isa+} 6 | {+data.desc+} 7 | {+data.classDesc+} 8 | 9 | 10 | 11 | {+method.name+} 12 | {+method.memberOf+} 13 | {+method.isStatic+} 14 | {+method.desc+} 15 | 16 | 17 | {+param.type+} 18 | {+param.name+} 19 | {+param.desc+} 20 | {+param.defaultValue+} 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {+property.name+} 29 | {+property.memberOf+} 30 | {+property.isStatic+} 31 | {+property.desc+} 32 | {+property.type+} 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /lib/glmat/jsdoc.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": { 3 | "include": [ "src/gl-matrix" ] 4 | }, 5 | "opts": { 6 | "recurse": true, 7 | "destination": "./docs/" 8 | } 9 | } -------------------------------------------------------------------------------- /lib/glmat/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gl-matrix", 3 | "description": "Javascript Matrix and Vector library for High Performance WebGL apps", 4 | "version": "2.3.2", 5 | "main": "src/gl-matrix.js", 6 | "homepage": "http://glmatrix.net", 7 | "bugs": { 8 | "url": "https://github.com/toji/gl-matrix/issues" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/toji/gl-matrix.git" 13 | }, 14 | "contributors": [ 15 | { 16 | "name": "Brandon Jones", 17 | "email": "tojiro@gmail.com" 18 | }, 19 | { 20 | "name": "Colin MacKenzie IV", 21 | "email": "sinisterchipmunk@gmail.com" 22 | } 23 | ], 24 | "devDependencies": { 25 | "jasmine-node": "1.2.2", 26 | "jsdoc": "^3.4.0", 27 | "node-libs-browser": "^0.5.2", 28 | "simd": "2.0.0", 29 | "webpack": "^1.9.10" 30 | }, 31 | "license": "MIT", 32 | "scripts": { 33 | "test": "jasmine-node spec", 34 | "doc": "jsdoc -c jsdoc.config.json", 35 | "build": "webpack", 36 | "build-min": "webpack --config webpack.config.min.js", 37 | "build-all": "webpack && webpack --config webpack.config.min.js && jsdoc -c jsdoc.config.json" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/glmat/spec/gl-matrix/common-spec.js: -------------------------------------------------------------------------------- 1 | /* 2 | * common.js unit test 3 | */ 4 | 5 | describe("glMatrix", function(){ 6 | var result; 7 | 8 | var glMatrix = require("../../src/gl-matrix/common.js"); 9 | 10 | describe("toRadian", function(){ 11 | beforeEach(function(){ result = glMatrix.toRadian(180); }); 12 | it("should return a value of 3.141592654(Math.PI)", function(){ expect(result).toBeEqualish(Math.PI); }); 13 | }); 14 | 15 | describe("equals", function() { 16 | var r0, r1, r2; 17 | beforeEach(function() { 18 | r0 = glMatrix.equals(1.0, 0.0); 19 | r1 = glMatrix.equals(1.0, 1.0); 20 | r2 = glMatrix.equals(1.0+glMatrix.EPSILON/2, 1.0); 21 | }); 22 | it("should return false for different numbers", function() { expect(r0).toBe(false); }); 23 | it("should return true for the same number", function() { expect(r1).toBe(true); }); 24 | it("should return true for numbers that are close", function() { expect(r2).toBe(true); }); 25 | }); 26 | 27 | }); 28 | -------------------------------------------------------------------------------- /lib/glmat/spec/gl-matrix/worker-spec.js: -------------------------------------------------------------------------------- 1 | /* spec tests gl-matrix when embedded into a Web Worker */ 2 | 3 | // only test with workers if workers are available 4 | if (typeof(Worker) !== 'undefined') { 5 | describe("Embedded within Web Workers", function() { 6 | it("should initialize successfully", function() { 7 | var xhr = new XMLHttpRequest(); 8 | var source = null; 9 | xhr.onreadystatechange = function() { 10 | if (this.readyState == this.DONE) { 11 | if (this.status == 200) { 12 | source = this.responseText; 13 | } 14 | } 15 | }; 16 | xhr.open("GET", "/dist/gl-matrix-min.js"); 17 | xhr.send(); 18 | 19 | var result = null; 20 | 21 | waitsFor(function() { 22 | if (!source) return false; 23 | var blob = new Blob([ 24 | source, 25 | "self.postMessage(vec3.create());" 26 | ], 27 | {type: "application/javascript"} 28 | ); 29 | 30 | var worker = new Worker(URL.createObjectURL(blob)); 31 | worker.onmessage = function(e) { 32 | result = e.data; 33 | }; 34 | return true; 35 | }); 36 | 37 | waitsFor(function() { 38 | if (!result) return false; 39 | expect(result).toBeEqualish([0, 0, 0]); 40 | return true; 41 | }); 42 | }); 43 | }); 44 | } 45 | -------------------------------------------------------------------------------- /lib/glmat/spec/helpers/spec-helper.js: -------------------------------------------------------------------------------- 1 | var HELPER_MATCHERS = (function() { 2 | var EPSILON = 0.00001; 3 | 4 | return { 5 | /* 6 | Returns true if `actual` has the same length as `expected`, and 7 | if each element of both arrays is within 0.000001 of each other. 8 | This is a way to check for "equal enough" conditions, as a way 9 | of working around floating point imprecision. 10 | */ 11 | toBeEqualish: function(expected) { 12 | if (typeof(this.actual) == 'number') 13 | return Math.abs(this.actual - expected) < EPSILON; 14 | 15 | if (this.actual.length != expected.length) return false; 16 | for (var i = 0; i < this.actual.length; i++) { 17 | if (isNaN(this.actual[i]) !== isNaN(expected[i])) 18 | return false; 19 | if (Math.abs(this.actual[i] - expected[i]) >= EPSILON) 20 | return false; 21 | } 22 | return true; 23 | } 24 | }; 25 | })(); 26 | 27 | beforeEach(function() { 28 | this.addMatchers(HELPER_MATCHERS); 29 | }); 30 | 31 | if (typeof(global) != 'undefined') 32 | global.HELPER_MATCHERS = HELPER_MATCHERS; 33 | -------------------------------------------------------------------------------- /lib/glmat/spec/jasmine.yml: -------------------------------------------------------------------------------- 1 | # src_files 2 | # 3 | # Return an array of filepaths relative to src_dir to include before jasmine specs. 4 | # Default: [] 5 | # 6 | # EXAMPLE: 7 | # 8 | # src_files: 9 | # - lib/source1.js 10 | # - lib/source2.js 11 | # - dist/**/*.js 12 | # 13 | src_files: 14 | - src/gl-matrix.js 15 | - src/gl-matrix/common.js 16 | 17 | # stylesheets 18 | # 19 | # Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs. 20 | # Default: [] 21 | # 22 | # EXAMPLE: 23 | # 24 | # stylesheets: 25 | # - css/style.css 26 | # - stylesheets/*.css 27 | # 28 | stylesheets: 29 | 30 | # helpers 31 | # 32 | # Return an array of filepaths relative to spec_dir to include before jasmine specs. 33 | # Default: ["helpers/**/*.js"] 34 | # 35 | # EXAMPLE: 36 | # 37 | # helpers: 38 | # - helpers/**/*.js 39 | # 40 | helpers: 41 | 42 | # spec_files 43 | # 44 | # Return an array of filepaths relative to spec_dir to include. 45 | # Default: ["**/*[sS]pec.js"] 46 | # 47 | # EXAMPLE: 48 | # 49 | # spec_files: 50 | # - **/*[sS]pec.js 51 | # 52 | spec_files: 53 | 54 | # src_dir 55 | # 56 | # Source directory path. Your src_files must be returned relative to this path. Will use root if left blank. 57 | # Default: project root 58 | # 59 | # EXAMPLE: 60 | # 61 | # src_dir: public 62 | # 63 | src_dir: 64 | 65 | # spec_dir 66 | # 67 | # Spec directory path. Your spec_files must be returned relative to this path. 68 | # Default: spec/javascripts 69 | # 70 | # EXAMPLE: 71 | # 72 | # spec_dir: spec/javascripts 73 | # 74 | spec_dir: spec 75 | -------------------------------------------------------------------------------- /lib/glmat/src/gl-matrix.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview gl-matrix - High performance matrix and vector operations 3 | * @author Brandon Jones 4 | * @author Colin MacKenzie IV 5 | * @version 2.3.2 6 | */ 7 | 8 | /* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. */ 27 | // END HEADER 28 | 29 | exports.glMatrix = require("./gl-matrix/common.js"); 30 | exports.mat2 = require("./gl-matrix/mat2.js"); 31 | exports.mat2d = require("./gl-matrix/mat2d.js"); 32 | exports.mat3 = require("./gl-matrix/mat3.js"); 33 | exports.mat4 = require("./gl-matrix/mat4.js"); 34 | exports.quat = require("./gl-matrix/quat.js"); 35 | exports.vec2 = require("./gl-matrix/vec2.js"); 36 | exports.vec3 = require("./gl-matrix/vec3.js"); 37 | exports.vec4 = require("./gl-matrix/vec4.js"); -------------------------------------------------------------------------------- /lib/glmat/src/gl-matrix/common.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. */ 20 | 21 | /** 22 | * @class Common utilities 23 | * @name glMatrix 24 | */ 25 | var glMatrix = {}; 26 | 27 | // Configuration Constants 28 | glMatrix.EPSILON = 0.000001; 29 | glMatrix.ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array; 30 | glMatrix.RANDOM = Math.random; 31 | glMatrix.ENABLE_SIMD = false; 32 | 33 | // Capability detection 34 | glMatrix.SIMD_AVAILABLE = (glMatrix.ARRAY_TYPE === this.Float32Array) && ('SIMD' in this); 35 | glMatrix.USE_SIMD = glMatrix.ENABLE_SIMD && glMatrix.SIMD_AVAILABLE; 36 | 37 | /** 38 | * Sets the type of array used when creating new vectors and matrices 39 | * 40 | * @param {Type} type Array type, such as Float32Array or Array 41 | */ 42 | glMatrix.setMatrixArrayType = function(type) { 43 | glMatrix.ARRAY_TYPE = type; 44 | } 45 | 46 | var degree = Math.PI / 180; 47 | 48 | /** 49 | * Convert Degree To Radian 50 | * 51 | * @param {Number} a Angle in Degrees 52 | */ 53 | glMatrix.toRadian = function(a){ 54 | return a * degree; 55 | } 56 | 57 | /** 58 | * Tests whether or not the arguments have approximately the same value, within an absolute 59 | * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less 60 | * than or equal to 1.0, and a relative tolerance is used for larger values) 61 | * 62 | * @param {Number} a The first number to test. 63 | * @param {Number} b The second number to test. 64 | * @returns {Boolean} True if the numbers are approximately equal, false otherwise. 65 | */ 66 | glMatrix.equals = function(a, b) { 67 | return Math.abs(a - b) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b)); 68 | } 69 | 70 | module.exports = glMatrix; 71 | -------------------------------------------------------------------------------- /lib/glmat/webpack.config.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. */ 20 | 21 | var fs = require('fs'); 22 | var webpack = require('webpack'); 23 | 24 | var entryFile = './src/gl-matrix.js'; 25 | 26 | // Read the comments from the top of the main gl-matrix file and append them to 27 | // the minified version. 28 | var header = ''; 29 | var mainFile = fs.readFileSync(entryFile, { encoding: 'utf8' }); 30 | if (mainFile) { 31 | var headerIndex = mainFile.indexOf('\/\/ END HEADER'); 32 | if (headerIndex >= 0) { 33 | header = mainFile.substr(0, headerIndex); 34 | } 35 | } 36 | 37 | module.exports = { 38 | entry: entryFile, 39 | output: { 40 | path: __dirname + '/dist', 41 | filename: 'gl-matrix.js', 42 | libraryTarget: 'umd' 43 | }, 44 | plugins: [ 45 | new webpack.BannerPlugin(header, { raw: true }), 46 | ] 47 | }; -------------------------------------------------------------------------------- /lib/glmat/webpack.config.min.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. */ 20 | 21 | var webpack = require('webpack'); 22 | module.exports = require('./webpack.config.js'); 23 | 24 | module.exports.plugins.unshift( 25 | new webpack.optimize.UglifyJsPlugin() 26 | ); 27 | 28 | module.exports.output.filename = 'gl-matrix-min.js'; -------------------------------------------------------------------------------- /lib/prism/prism.css: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.15.0 2 | https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript */ 3 | /** 4 | * okaidia theme for JavaScript, CSS and HTML 5 | * Loosely based on Monokai textmate theme by http://www.monokai.nl/ 6 | * @author ocodia 7 | */ 8 | 9 | code[class*='language-'], 10 | pre[class*='language-'] { 11 | color: #f8f8f2; 12 | background: none; 13 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 14 | font-size: 12px; 15 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | word-wrap: normal; 21 | line-height: 1.5; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | } 32 | 33 | /* Code blocks */ 34 | pre[class*='language-'] { 35 | padding: 1em; 36 | margin: 0.5em 0; 37 | overflow: auto; 38 | border-radius: 0.3em; 39 | } 40 | 41 | :not(pre) > code[class*='language-'], 42 | pre[class*='language-'] { 43 | background: #20202000; 44 | } 45 | 46 | /* Inline code */ 47 | :not(pre) > code[class*='language-'] { 48 | padding: 0.1em; 49 | border-radius: 0.3em; 50 | white-space: normal; 51 | } 52 | 53 | .token.comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { 57 | color: slategray; 58 | } 59 | 60 | .token.punctuation { 61 | color: #f8f8f2; 62 | } 63 | 64 | .namespace { 65 | opacity: 0.7; 66 | } 67 | 68 | .token.property, 69 | .token.tag, 70 | .token.constant, 71 | .token.symbol, 72 | .token.deleted { 73 | color: #f92672; 74 | } 75 | 76 | .token.boolean, 77 | .token.number { 78 | color: #ae81ff; 79 | } 80 | 81 | .token.selector, 82 | .token.attr-name, 83 | .token.string, 84 | .token.char, 85 | .token.builtin, 86 | .token.inserted { 87 | color: #a6e22e; 88 | } 89 | 90 | .token.operator, 91 | .token.entity, 92 | .token.url, 93 | .language-css .token.string, 94 | .style .token.string, 95 | .token.variable { 96 | color: #f8f8f2; 97 | } 98 | 99 | .token.atrule, 100 | .token.attr-value, 101 | .token.function, 102 | .token.class-name { 103 | color: #e6db74; 104 | } 105 | 106 | .token.keyword { 107 | color: #66d9ef; 108 | } 109 | 110 | .token.regex, 111 | .token.important { 112 | color: #fd971f; 113 | } 114 | 115 | .token.important, 116 | .token.bold { 117 | font-weight: bold; 118 | } 119 | .token.italic { 120 | font-style: italic; 121 | } 122 | 123 | .token.entity { 124 | cursor: help; 125 | } 126 | -------------------------------------------------------------------------------- /lib/stats.min.js: -------------------------------------------------------------------------------- 1 | // stats.js - http://github.com/mrdoob/stats.js 2 | var Stats=function(){function h(a){c.appendChild(a.dom);return a}function k(a){for(var d=0;de+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; 4 | Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, 5 | v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats); 6 | -------------------------------------------------------------------------------- /lib/vx-ui-ribbon/img/arw_dwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-ribbon/img/arw_dwn.png -------------------------------------------------------------------------------- /lib/vx-ui-ribbon/ribbon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --tab-bg-color: #323232; 3 | --tab-fg-colour-unselected: #aaa; 4 | --tab-fg-colour: #333; 5 | 6 | /* Main Tab Colours */ 7 | --maintab-bg-colour: #ff7e00; 8 | --maintab-bg-colour-hover: #ffa64f; 9 | --maintab-fg-colour: #333; 10 | --maintab-fg-colour-hover: #000; 11 | 12 | 13 | --content-bg-color: #ddd; 14 | --content-fg-color: #333; 15 | --gui-selected: #00abff; 16 | } 17 | 18 | .vx-rbn-cntrl{ 19 | border: 1px solid #333; 20 | font-family: Arial; 21 | font-size: 11px; 22 | } 23 | 24 | .vx-rbn-headerbar{ 25 | text-align: center; 26 | background-color: var(--tab-bg-color); 27 | height: 2px; 28 | color: #aaa; 29 | } 30 | .vx-rbn-titlebar{ 31 | padding: 6px; 32 | } 33 | 34 | /* Style the tab */ 35 | .vx-rbn-tab-header { 36 | overflow: hidden; 37 | background-color: var(--tab-bg-color); 38 | } 39 | 40 | /* Style the buttons that are used to open the tab content */ 41 | .vx-rbn-tab { 42 | color: var(--tab-fg-colour-unselected); 43 | background-color: var(--tab-bg-color); 44 | float: left; 45 | border: none; 46 | outline: none; 47 | cursor: pointer; 48 | padding: 4px 24px; 49 | margin: 0px 1px; 50 | transition: 0.3s; 51 | } 52 | 53 | /* Change background color of buttons on hover */ 54 | .vx-rbn-tab:hover { 55 | background-color: #646464; 56 | color: #ccc; 57 | } 58 | 59 | /* Create an active/current tablink class */ 60 | .vx-rbn-tab.active { 61 | background-color: var(--content-bg-color); 62 | color: #333; 63 | } 64 | 65 | #mainTab { 66 | background-color: var(--maintab-bg-colour); 67 | color: var(--maintab-fg-colour); 68 | } 69 | 70 | #mainTab:hover { 71 | background-color: var(--maintab-bg-colour-hover); 72 | color: var(--maintab-fg-colour-hover); 73 | } 74 | 75 | /* Style the tab content */ 76 | .vx-rbn-tab-content { 77 | background-color: var(--content-bg-color); 78 | display: none; 79 | padding: 6px 12px; 80 | height: 80px; 81 | 82 | /*animation: fadeEffect 0.15s; /* Fading effect takes 1 second */ 83 | } 84 | 85 | /* Go from zero to full opacity */ 86 | @keyframes fadeEffect { 87 | from {opacity: 0;} 88 | to {opacity: 1;} 89 | } 90 | 91 | .vx-rbn-tab-content ul { 92 | list-style-type: none; 93 | margin: 0; 94 | padding: 0; 95 | display: flex; 96 | flex-direction: column; 97 | flex-wrap: wrap; 98 | height:64px; 99 | width: 400px; 100 | } 101 | 102 | .vx-rbn-tab-group{ 103 | 104 | width:100%; 105 | border: 1px solid transparent; 106 | border-color: transparent #777 transparent transparent; 107 | } 108 | 109 | 110 | .vx-rbn-tab-group-footer{ 111 | width:100%; 112 | color: #555; 113 | text-align: center; 114 | margin: 0; 115 | } 116 | 117 | .vx-rbn-break 118 | { 119 | height: 96px; 120 | } 121 | 122 | 123 | .vx-rbn-seperator { 124 | border-left: 1px solid #aaa; 125 | height: 92px; 126 | margin: 0px 10px 0px 10px; 127 | } 128 | 129 | .vx-rbn-btn { 130 | color: #333; 131 | background-color: var(--content-bg-color); 132 | border: 1px solid var(--content-bg-color); 133 | outline: none; 134 | cursor: pointer; 135 | padding: 0px 16px 6px 16px; 136 | transition: 0.3s; 137 | margin: 2px 2px; 138 | } 139 | 140 | .vx-rbn-btn[btn-size="large"]{ 141 | color: #333; 142 | background-color: var(--content-bg-color); 143 | border: 1px solid var(--content-bg-color); 144 | outline: none; 145 | cursor: pointer; 146 | padding: 4px 16px; 147 | transition: 0.3s; 148 | padding-bottom: 10px; 149 | margin: 2px 2px; 150 | } 151 | .vx-rbn-btn::before { 152 | width: 16px; 153 | height: 16px; 154 | position: relative; 155 | left:-5px; 156 | bottom: -4px; 157 | } 158 | 159 | .vx-rbn-btn[btn-size="large"]::before { 160 | 161 | width: 32px; 162 | height: 32px; 163 | display: block; 164 | white-space: normal; 165 | word-wrap: break-word; 166 | left:0px; 167 | bottom: 0px; 168 | } 169 | 170 | .vx-rbn-btn:hover { 171 | border-radius: 2px; 172 | color: #222; 173 | background-color: #eee; 174 | border: 1px solid #777; 175 | } 176 | .vx-rbn-btn:active { 177 | transition: 0s; 178 | background-color: var(--gui-selected); 179 | color: #fff; 180 | border: 1px solid #555; 181 | } 182 | 183 | 184 | 185 | .vx-rbn-drpdwn { 186 | color: #333; 187 | background-color: var(--content-bg-color); 188 | border: 1px solid var(--content-bg-color); 189 | outline: none; 190 | text-align: left; 191 | cursor: pointer; 192 | padding: 0px 16px 6px 16px; 193 | transition: 0.3s; 194 | margin: 20px 2px; 195 | width: 150px; 196 | transition: 0.3s; 197 | } 198 | 199 | /*the container must be positioned relative:*/ 200 | .vx-rbn-drpdwn-select { 201 | position: relative; 202 | width: 125px; 203 | margin: 2px 2px; 204 | } 205 | 206 | 207 | 208 | .vx-rbn-drpdwn-select select { 209 | display: none; /*hide original SELECT element:*/ 210 | } 211 | .select-selected { 212 | background-color: var(--content-bg-color); 213 | transition: 0.3s; 214 | } 215 | /*style the arrow inside the select element:*/ 216 | .select-selected:after { 217 | position: absolute; 218 | content: ""; 219 | top: 8px; 220 | right: 10px; 221 | width: 0; 222 | height: 0; 223 | border: 6px solid transparent; 224 | border-color: #777 transparent transparent transparent; 225 | } 226 | /*point the arrow upwards when the select box is open (active):*/ 227 | .select-selected.select-arrow-active:after { 228 | border-color: transparent transparent #333 transparent; 229 | top: 3px; 230 | } 231 | .select-selected { 232 | color: var(--content-fg-color); 233 | border: 1px solid transparent; 234 | cursor: pointer; 235 | padding: 2px 18px 6px 16px; 236 | transition: 0.3s; 237 | margin: 2px 2px; 238 | } 239 | .select-selected:before{ 240 | content:url('../img/main/import.png'); 241 | position: relative; 242 | left: -5px; 243 | bottom: -3px; 244 | } 245 | /*style the items (options), including the selected item:*/ 246 | .select-items div{ 247 | color: var(--content-fg-color); 248 | border: 1px solid transparent; 249 | cursor: pointer; 250 | padding: 4px 14px 6px 16px; 251 | transition: 0.3s; 252 | margin: 2px 2px; 253 | 254 | } 255 | 256 | .select-selected:hover{ 257 | background-color: #eee; 258 | border: 1px solid #777; 259 | } 260 | 261 | /*style items (options):*/ 262 | .select-items { 263 | position: absolute; 264 | background-color: #fff; 265 | top: 100%; 266 | left: 0; 267 | right: 0; 268 | z-index: 99; 269 | border: 1px solid #777; 270 | } 271 | /*hide the items when the select box is closed:*/ 272 | .select-hide { 273 | display: none; 274 | } 275 | 276 | .select-items div:before{ 277 | content:url('../img/main/import.png'); 278 | position: relative; 279 | left: -5px; 280 | bottom: -3px; 281 | } 282 | 283 | .select-items div:hover { 284 | background-color: var(--gui-selected); 285 | } 286 | 287 | -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/arrow_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/arrow_bullet.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/arrow_down.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/arrow_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/arrow_empty.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/arrow_right.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/check_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/check_box.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/check_box_mix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/check_box_mix.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/check_box_uncheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/check_box_uncheck.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/img/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/lib/vx-ui-tree/img/folder.png -------------------------------------------------------------------------------- /lib/vx-ui-tree/tree.css: -------------------------------------------------------------------------------- 1 | 2 | .tree-control, 3 | .tree-control * 4 | { 5 | padding: 0; 6 | margin: ; 7 | font-family: Arial; 8 | font-size: 11px; 9 | cursor: pointer; 10 | transition: 0.2s; 11 | } 12 | 13 | .tree-control li ul 14 | { 15 | margin: 0 0 0 16px; 16 | } 17 | 18 | input[type=checkbox] { 19 | position: absolute; 20 | top: -9999px; 21 | left: -9999px; 22 | } 23 | 24 | .tree-control ul{ 25 | list-style-type: none; 26 | } 27 | 28 | .tree-node{ 29 | display: inline-block; 30 | margin: ; 31 | padding: 2px; 32 | } 33 | /* Text And Icon Location */ 34 | .tree-node span{ 35 | position: relative; 36 | top: -3px; 37 | padding: 5px 6px 3px 3px; 38 | border: solid 1px transparent; 39 | 40 | 41 | background-color: rgba(50,50,50,0.5); 42 | border: solid 1px rgba(20,20,20,0.5); 43 | } 44 | 45 | .tree-node span:hover{ 46 | background-color: #00abff; 47 | border: solid 1px #0055ff; 48 | } 49 | 50 | .tree-node span:before{ 51 | position: relative; 52 | top: 3px; 53 | left: -2px; 54 | } 55 | 56 | .tree-node span[icon="default"]::before{ 57 | content: url('img/folder.png'); 58 | } 59 | 60 | 61 | 62 | .tree-node-arrow{ 63 | transition: 0.2s; 64 | content: url('img/arrow_right.png'); 65 | border: solid 1px transparent; 66 | } 67 | .tree-node-arrow[show="yes"]:hover{ 68 | background-color: #00abff; 69 | border: solid 1px #0066ff; 70 | } 71 | 72 | .tree-node-arrow[show="no"]{ 73 | content: url('img/arrow_empty.png'); 74 | } 75 | 76 | 77 | /* Node Items */ 78 | .tree-node input[type=checkbox]:checked ~ .tree-node-arrow[show="yes"] { 79 | content: url('img/arrow_down.png'); 80 | } 81 | 82 | .tree-node input[type=checkbox]:checked ~ li 83 | { 84 | display: block; 85 | } 86 | 87 | .tree-node input[type=checkbox]:not(:checked) ~ li 88 | { 89 | display: none; 90 | } 91 | 92 | 93 | .tree-node-chkbx{ 94 | padding: 1px; 95 | background-color: transparent; 96 | border: none; 97 | } 98 | 99 | .tree-node-chkbx:hover{ 100 | background-color: #00abff; 101 | } 102 | 103 | .tree-node-chkbx-img{ 104 | content: url('img/check_box_uncheck.png'); 105 | } 106 | 107 | .tree-node-chkbx-img[status="checked"] { 108 | content: url('img/check_box.png'); 109 | } 110 | 111 | 112 | .tree-node-chkbx-img[status="mixed"] { 113 | content: url('img/check_box.png'); 114 | } 115 | -------------------------------------------------------------------------------- /lib/vx-ui-tree/tree.js: -------------------------------------------------------------------------------- 1 | 2 | function vxTreeControl (divID) { 3 | 4 | // First create the Tree Control 5 | this.divID = divID; 6 | this.tree = document.createElement("DIV"); 7 | this.tree.setAttribute("id", "tree_"+divID); 8 | this.tree.classList.add("tree-control"); 9 | 10 | document.getElementById(divID).appendChild(this.tree); 11 | 12 | this.visible = true; 13 | } 14 | 15 | 16 | vxTreeControl.prototype.ToggleVisibility = function(newNode) { 17 | if(this.visible == true) 18 | { 19 | this.visible = false; 20 | document.getElementById("tree_"+this.divID).style.display = "none"; 21 | } 22 | else{ 23 | this.visible = true; 24 | document.getElementById("tree_"+this.divID).style.display = "block"; 25 | } 26 | }; 27 | 28 | vxTreeControl.prototype.SetRootNode = function(newNode) { 29 | this.tree.appendChild(newNode.treenode); 30 | }; 31 | 32 | vxTreeControl.prototype.AddNode = function(newNode, parentNodeID) { 33 | var parent = document.getElementById(parentNodeID); 34 | if(parent){ 35 | var li = document.createElement("li"); 36 | li.appendChild(newNode.treenode); 37 | parent.appendChild(li); 38 | 39 | // Now tell the parent node it has children so the arrow texture will show 40 | var arw = parent.getElementsByClassName("tree-node-arrow")[0]; 41 | arw.setAttribute("show", "yes"); 42 | } 43 | }; 44 | 45 | function vxTreeNode (id, text, icon) { 46 | 47 | // Set up variables 48 | this.IsChecked = true; 49 | 50 | if(!icon){ 51 | icon = "default"; 52 | } 53 | // Now create the HTML elements 54 | 55 | // First, the UL 56 | this.treenode = document.createElement("ul"); 57 | this.treenode.classList.add("tree-node"); 58 | this.treenode.setAttribute("id", id); 59 | 60 | // Next, the Arrow 61 | // 62 | // 63 | this.arrowInpt = document.createElement("input"); 64 | this.arrowInpt.setAttribute("type", "checkbox"); 65 | 66 | this.arrowInpt.setAttribute("id", "arw_"+id); 67 | this.treenode.appendChild(this.arrowInpt); 68 | 69 | this.arrowLabel = document.createElement("label"); 70 | this.arrowLabel.classList.add("tree-node-arrow"); 71 | this.arrowLabel.setAttribute("for", "arw_"+id); 72 | //this.arrowInpt.setAttribute("id", "arw_img_"+id); 73 | this.arrowLabel.setAttribute("show", "no"); 74 | this.treenode.appendChild(this.arrowLabel); 75 | 76 | 77 | // 78 | //Hello 79 | this.CheckBox = document.createElement("button"); 80 | this.CheckBox.classList.add("tree-node-chkbx"); 81 | this.CheckBox.setAttribute("id", "chkbx_"+id); 82 | this.CheckBox.addEventListener("click", function(e) { 83 | var img = e.path[0]; 84 | var isChecked = false; 85 | 86 | if(img.getAttribute("status")=="checked"){ 87 | isChecked = false; 88 | img.setAttribute("status", "not-checked"); // added line 89 | } 90 | else{ 91 | isChecked = true; 92 | img.setAttribute("status", "checked"); // added line 93 | } 94 | 95 | this.setAttribute("toggle", isChecked); // added line 96 | var event = new CustomEvent('onNodeCheckChanged', 97 | { 98 | detail:{ 99 | nodeId: id , 100 | isChecked: isChecked 101 | } 102 | }); 103 | // target can be any Element or other EventTarget. 104 | this.dispatchEvent(event); 105 | }); 106 | 107 | this.chkBxImg = document.createElement("img"); 108 | this.chkBxImg.setAttribute("status", "checked"); // added line 109 | this.chkBxImg.classList.add("tree-node-chkbx-img"); 110 | this.CheckBox.appendChild(this.chkBxImg); 111 | this.treenode.appendChild(this.CheckBox); 112 | 113 | this.Text = document.createElement("span"); 114 | this.Text.innerHTML = text; 115 | this.Text.setAttribute("icon", icon); 116 | this.treenode.appendChild(this.Text); 117 | 118 | } 119 | 120 | vxTreeNode.prototype.AddNode = function(newNode) { 121 | var li = document.createElement("li"); 122 | li.appendChild(newNode.treenode); 123 | this.treenode.appendChild(li); 124 | this.arrowLabel.setAttribute("show", "yes"); 125 | }; 126 | 127 | 128 | vxTreeNode.prototype.Expand = function(newNode) { 129 | this.arrowInpt.setAttribute("checked", "checked"); // added line 130 | }; 131 | 132 | vxTreeNode.prototype.Collapse = function(newNode) { 133 | this.arrowInpt.setAttribute("checked", ""); // added line 134 | }; -------------------------------------------------------------------------------- /privacy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Iris Web Viewer - Fine Print 5 | 6 | 34 | 35 | 36 |

Iris Web Viewer

37 |
38 |

Privacy Policy

39 |

40 | Iris Web Viewer does not save any user information, whether it be google drive log in info or opened 3D files. In terms of opening and parsing files, everything is done on the client side and nothing regarding file content is sent back to the servers. 41 |
42 |
43 | If you have a comment, question or complaint, you can post to 44 | our forum here. 45 |

46 |
47 | 48 | 49 | -------------------------------------------------------------------------------- /ref/favicon.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/favicon.xcf -------------------------------------------------------------------------------- /ref/favicon32.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/favicon32.xcf -------------------------------------------------------------------------------- /ref/iris icon/icon.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon.xcf -------------------------------------------------------------------------------- /ref/iris icon/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_128.png -------------------------------------------------------------------------------- /ref/iris icon/icon_128_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_128_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_16.png -------------------------------------------------------------------------------- /ref/iris icon/icon_16_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_16_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_24.png -------------------------------------------------------------------------------- /ref/iris icon/icon_24_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_24_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_256.png -------------------------------------------------------------------------------- /ref/iris icon/icon_256_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_256_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_32.png -------------------------------------------------------------------------------- /ref/iris icon/icon_32_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_32_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_48.png -------------------------------------------------------------------------------- /ref/iris icon/icon_48_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_48_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_64.png -------------------------------------------------------------------------------- /ref/iris icon/icon_64_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_64_white.png -------------------------------------------------------------------------------- /ref/iris icon/icon_mipmap.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/iris icon/icon_mipmap.xcf -------------------------------------------------------------------------------- /ref/prsimtest/prism.css: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.15.0 2 | https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript */ 3 | /** 4 | * okaidia theme for JavaScript, CSS and HTML 5 | * Loosely based on Monokai textmate theme by http://www.monokai.nl/ 6 | * @author ocodia 7 | */ 8 | 9 | code[class*='language-'], 10 | pre[class*='language-'] { 11 | color: #f8f8f2; 12 | background: none; 13 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 14 | font-size: 12px; 15 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | word-wrap: normal; 21 | line-height: 1.5; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | } 32 | 33 | /* Code blocks */ 34 | pre[class*='language-'] { 35 | padding: 1em; 36 | margin: 0.5em 0; 37 | overflow: auto; 38 | border-radius: 0.3em; 39 | } 40 | 41 | :not(pre) > code[class*='language-'], 42 | pre[class*='language-'] { 43 | background: #272822; 44 | } 45 | 46 | /* Inline code */ 47 | :not(pre) > code[class*='language-'] { 48 | padding: 0.1em; 49 | border-radius: 0.3em; 50 | white-space: normal; 51 | } 52 | 53 | .token.comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { 57 | color: slategray; 58 | } 59 | 60 | .token.punctuation { 61 | color: #f8f8f2; 62 | } 63 | 64 | .namespace { 65 | opacity: 0.7; 66 | } 67 | 68 | .token.property, 69 | .token.tag, 70 | .token.constant, 71 | .token.symbol, 72 | .token.deleted { 73 | color: #f92672; 74 | } 75 | 76 | .token.boolean, 77 | .token.number { 78 | color: #ae81ff; 79 | } 80 | 81 | .token.selector, 82 | .token.attr-name, 83 | .token.string, 84 | .token.char, 85 | .token.builtin, 86 | .token.inserted { 87 | color: #a6e22e; 88 | } 89 | 90 | .token.operator, 91 | .token.entity, 92 | .token.url, 93 | .language-css .token.string, 94 | .style .token.string, 95 | .token.variable { 96 | color: #f8f8f2; 97 | } 98 | 99 | .token.atrule, 100 | .token.attr-value, 101 | .token.function, 102 | .token.class-name { 103 | color: #e6db74; 104 | } 105 | 106 | .token.keyword { 107 | color: #66d9ef; 108 | } 109 | 110 | .token.regex, 111 | .token.important { 112 | color: #fd971f; 113 | } 114 | 115 | .token.important, 116 | .token.bold { 117 | font-weight: bold; 118 | } 119 | .token.italic { 120 | font-style: italic; 121 | } 122 | 123 | .token.entity { 124 | cursor: help; 125 | } 126 | -------------------------------------------------------------------------------- /ref/prsimtest/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Here is the Normal one

10 |
11 |
I'm in Content and I'm very long
12 |
13 | 14 |

And here is the Flipped one

15 |
16 |
I'm in Content and I'm very long
17 |
18 | 19 |
20 |         
21 |         p { color: red }
22 | int i = 0;
23 | hello();
24 |     
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ref/screenshots/01intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/01intro.png -------------------------------------------------------------------------------- /ref/screenshots/02model_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/02model_import.png -------------------------------------------------------------------------------- /ref/screenshots/03model_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/03model_export.png -------------------------------------------------------------------------------- /ref/screenshots/04model_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/04model_data.png -------------------------------------------------------------------------------- /ref/screenshots/05model_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/05model_tree.png -------------------------------------------------------------------------------- /ref/screenshots/IRIS_TILE_SMALL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/IRIS_TILE_SMALL.png -------------------------------------------------------------------------------- /ref/screenshots/IRIS_TILE_SMALL.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/IRIS_TILE_SMALL.xcf -------------------------------------------------------------------------------- /ref/screenshots/Iris Screenshots.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/Iris Screenshots.xcf -------------------------------------------------------------------------------- /ref/screenshots/SPLIT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/SPLIT.png -------------------------------------------------------------------------------- /ref/screenshots/SPLIT.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/SPLIT.xcf -------------------------------------------------------------------------------- /ref/screenshots/base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/base.png -------------------------------------------------------------------------------- /ref/screenshots/cls_up.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/cls_up.xcf -------------------------------------------------------------------------------- /ref/screenshots/clsup_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/clsup_menu.png -------------------------------------------------------------------------------- /ref/screenshots/clsup_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/clsup_tree.png -------------------------------------------------------------------------------- /ref/screenshots/scrn_sht.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrn_sht.xcf -------------------------------------------------------------------------------- /ref/screenshots/scrnsht_intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrnsht_intro.png -------------------------------------------------------------------------------- /ref/screenshots/scrnsht_measure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrnsht_measure.png -------------------------------------------------------------------------------- /ref/screenshots/scrnsht_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrnsht_normal.png -------------------------------------------------------------------------------- /ref/screenshots/scrnsht_solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrnsht_solid.png -------------------------------------------------------------------------------- /ref/screenshots/scrnsht_wireframe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/scrnsht_wireframe.png -------------------------------------------------------------------------------- /ref/screenshots/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/title.png -------------------------------------------------------------------------------- /ref/screenshots/title.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VirtexEdgeDesign/Iris-Web-Viewer/51dbcbb6ae724ec2d33d7748870aee8115f733c1/ref/screenshots/title.xcf -------------------------------------------------------------------------------- /ref/test case/ref/tree.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /* Treeview Control */ 5 | /* -------------------------------------------------------------------- */ 6 | 7 | /* 8 | * Imageless CSS3 Treeview with Checkbox Support 9 | * @namespace window.AcidJs 10 | * @class CSS3Treeview 11 | * @version 3.0 12 | * @author Martin Ivanov 13 | * @url developer website: http://wemakesites.net/ 14 | * @url developer twitter: https://twitter.com/#!/wemakesitesnet 15 | * @url developer blog http://acidmartin.wordpress.com/ 16 | **/ 17 | 18 | /* 19 | * Do you like this solution? Please, donate: 20 | * https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QFUHPWJB2JDBS 21 | **/ 22 | 23 | .ui-cntrl-treeview, 24 | .ui-cntrl-treeview * 25 | { 26 | padding: 0; 27 | margin: ; 28 | list-style: none; 29 | transition: margin-left .5s; 30 | transition: background-color 1s ease; 31 | background-color:rgba(0, 0, 0, 0); 32 | text-shadow: 0px 0px 8px black; 33 | } 34 | 35 | .ui-cntrl-treeview label[for]::before, 36 | .ui-cntrl-treeview label span::before 37 | { 38 | content: "\25b6"; 39 | display: inline-block; 40 | margin: 2px 0 0; 41 | width: 13px; 42 | height: 13px; 43 | vertical-align: top; 44 | text-align: center; 45 | color: #1375b3; 46 | font-size: 8px; 47 | line-height: 13px; 48 | } 49 | 50 | 51 | .ui-cntrl-treeview:hover 52 | { 53 | background-color:rgba(0, 0, 0, .5); 54 | box-shadow: 0 0 15px rgba(0, 0, 0, .75); 55 | transition: box-shadow 0.5s ease; 56 | } 57 | 58 | .ui-cntrl-treeview li ul 59 | { 60 | margin: 0 0 0 22px; 61 | 62 | } 63 | 64 | .ui-cntrl-treeview li ul li>label 65 | { 66 | transition: background-color 0.1s ease; 67 | } 68 | 69 | 70 | .ui-cntrl-treeview li ul li>label:hover 71 | { 72 | /*color:black;*/ 73 | /*background-color:#0094f7;*/ 74 | } 75 | 76 | .ui-cntrl-treeview * 77 | { 78 | vertical-align: middle; 79 | } 80 | 81 | .ui-cntrl-treeview 82 | { 83 | font: normal 13px/16px "Segoe UI", Arial, Sans-serif; 84 | } 85 | 86 | .ui-cntrl-treeview li 87 | { 88 | -webkit-user-select: none; 89 | -moz-user-select: none; 90 | user-select: none; 91 | } 92 | 93 | .ui-cntrl-treeview li ul li canvas[data-id="id"] 94 | { 95 | position:absolute; 96 | left:0px; 97 | 98 | transition: background-color 0.25s ease; 99 | } 100 | 101 | .ui-cntrl-treeview li ul li:hover > canvas[data-id="id"] 102 | { 103 | background-color:#0094f7; 104 | } 105 | 106 | .ui-cntrl-treeview input[type="checkbox"] 107 | { 108 | display: none; 109 | } 110 | 111 | .ui-cntrl-treeview label 112 | { 113 | cursor: pointer; 114 | } 115 | 116 | 117 | 118 | .ui-cntrl-treeview label[for]::before 119 | { 120 | -webkit-transform: translatex(-24px); 121 | -moz-transform: translatex(-24px); 122 | -ms-transform: translatex(-24px); 123 | -o-transform: translatex(-24px); 124 | transform: translatex(-45px); 125 | } 126 | 127 | .ui-cntrl-treeview label span::before 128 | { 129 | -webkit-transform: translatex(16px); 130 | -moz-transform: translatex(16px); 131 | -ms-transform: translatex(16px); 132 | -o-transform: translatex(16px); 133 | transform: translatex(16px); 134 | } 135 | 136 | .ui-cntrl-treeview input[type="checkbox"][id]:checked ~ label[for]::before 137 | { 138 | content: "\25bc"; 139 | } 140 | 141 | .ui-cntrl-treeview input[type="checkbox"][id]:not(:checked) ~ ul 142 | { 143 | display: none; 144 | } 145 | 146 | .ui-cntrl-treeview label:not([for]) 147 | { 148 | margin: 0 7px 0 5px; 149 | } 150 | 151 | 152 | 153 | .ui-cntrl-treeview label span::before 154 | { 155 | content: ""; 156 | border: solid 1px #1375b3; 157 | color: #1375b3; 158 | opacity: .50; 159 | } 160 | 161 | .ui-cntrl-treeview label input:checked + span::before 162 | { 163 | content: "\2714"; 164 | box-shadow: 0 0 2px rgba(0, 0, 0, .25) inset; 165 | color: white; 166 | opacity: 1; 167 | } 168 | 169 | 170 | .ui-cntrl-treeview label[for] 171 | { 172 | position:relative; 173 | left:16px; 174 | 175 | padding-left:5px; 176 | padding-right:20px; 177 | margin: 20px 0 0; 178 | background-image: url('../img/tree/node_default.png'); 179 | background-repeat: no-repeat; 180 | background-position: 0px 0px; 181 | } -------------------------------------------------------------------------------- /ref/test case/test.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --main-bg-color: darkorange; 3 | } 4 | 5 | .Container 6 | { 7 | height: 200px; 8 | overflow-x: auto; 9 | } 10 | .Content 11 | { 12 | height: 300px; 13 | } 14 | 15 | .Flipped 16 | { 17 | background-color: var(--main-bg-color); 18 | direction: rtl; 19 | } 20 | .Content 21 | { 22 | direction: ltr; 23 | } 24 | -------------------------------------------------------------------------------- /ref/test case/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Here is the Normal one

8 |
9 |
I'm in Content and I'm very long
10 |
11 | 12 |

And here is the Flipped one

13 |
14 |
I'm in Content and I'm very long
15 |
16 | 17 | -------------------------------------------------------------------------------- /ref/untitled.html: -------------------------------------------------------------------------------- 1 | 2 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /wiki/libExporting.md: -------------------------------------------------------------------------------- 1 | # Exporter 2 | Currently only ".stl" files can be exported in Iris Web Viewer. There are some things to be aware of how the files are exported as well. 3 | 4 | ## STL 5 | STL files are often used for 3D printing which makes them very common and are a useful file extension. Iris can export ASCII stl files which are then saved to the users download folder. 6 | 7 | ### Notes 8 | * STL files only specify one normal per face, therefore the exported Normal for each face is the average of all three vertices. This means that if each vertice of a given face has a different normal, the result in the export file will be averaged and shared among each vertex. -------------------------------------------------------------------------------- /wiki/libImporting.md: -------------------------------------------------------------------------------- 1 | # Importers 2 | The method to open files in Iris is by importing them. This can be found in the side bar by clicking 'Menu'. Below each type of importer is noted, although for some files there are a few notes about how the files are imported which you should be aware of when using Iris. 3 | 4 | ## STL 5 | STL is a very common 3D format and was therefore the first format supported by Iris. There are ASCII and Binary file formats, which Iris supports. 6 | 7 | | 'stl' File Format | Status | 8 | |-------------------|--------| 9 | | ASCII | Full | 10 | | Binary | Full | 11 | 12 | ## Notes 13 | Iris has shown some trouble with very large binary stl files, so use with caution. 14 | 15 | ## OBJ 16 | View below the supported flags in an obj file. 17 | 18 | | Flag | Name | Status | 19 | |--------|-------------------|---------| 20 | | v | Vertex | Full | 21 | | vt | UV Coord. | Full | 22 | | vn | Vertex Normal | Full | 23 | | f | Face Indices | Partial | 24 | | mtllib | Material File | Partial | 25 | | usemtl | Sets Material | Partial | 26 | | o, g | Object and Groups | Full | 27 | | | | | 28 | 29 | ### Notes 30 | * Not all flags are supported for 'obj' files as well as 'f' lines which reference more then 4 indices are not supported. 31 | * Not all flags in mtl files are supported by the shader. Currently Diffuse Color and Diffuse Texture are supported. 32 | --------------------------------------------------------------------------------