diff options
Diffstat (limited to 'indra/newview/skins')
-rw-r--r-- | indra/newview/skins/default/html/common/equirectangular/default.html | 22 | ||||
-rw-r--r-- | indra/newview/skins/default/html/common/equirectangular/eqr_gen.html | 150 | ||||
-rw-r--r-- | indra/newview/skins/default/textures/textures.xml | 3 | ||||
-rw-r--r-- | indra/newview/skins/default/textures/toolbar_icons/360_capture.png | bin | 0 -> 793 bytes | |||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_360capture.xml | 135 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_snapshot.xml | 22 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_toybox.xml | 12 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 17 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 4 |
9 files changed, 354 insertions, 11 deletions
diff --git a/indra/newview/skins/default/html/common/equirectangular/default.html b/indra/newview/skins/default/html/common/equirectangular/default.html new file mode 100644 index 0000000000..227b306590 --- /dev/null +++ b/indra/newview/skins/default/html/common/equirectangular/default.html @@ -0,0 +1,22 @@ +<html> +<head> +<style> +body { + background-color:#000; + background-image: linear-gradient(white 2px, transparent 2px), + linear-gradient(90deg, white 2px, transparent 2px), + linear-gradient(rgba(255,255,255,.3) 1px, transparent 1px), + linear-gradient(90deg, rgba(255,255,255,.3) 1px, transparent 1px); + background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px; + background-position:-2px -2px, -2px -2px, -1px -1px, -1px -1px; +} +</style> +</head> +<body> +<script> +function start() { +} +document.addEventListener('DOMContentLoaded', start); +</script> +</body> +</html>
\ No newline at end of file diff --git a/indra/newview/skins/default/html/common/equirectangular/eqr_gen.html b/indra/newview/skins/default/html/common/equirectangular/eqr_gen.html new file mode 100644 index 0000000000..2675d37727 --- /dev/null +++ b/indra/newview/skins/default/html/common/equirectangular/eqr_gen.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <style> + body { + background: #333; + padding: 0; + margin: 0; + overflow: hidden; + } + #error_message { + z-index: 2; + background-color: #aa3333; + overflow: hidden; + display: none; + pointer-events:none; + font-family: monospace; + font-size: 3em; + color: white; + border-radius: 1em; + padding: 1em; + position: absolute; + top: 50%; + left: 50%; + margin-right: -50%; + transform: translate(-50%, -50%) + } + #quality_window { + user-select: none; + z-index: 100; + position: absolute; + left: 8px; + top: 8px; + width: auto; + border-radius: 16px; + height: auto; + font-size: 1.5em; + text-align: center; + font-family: monospace; + background-color: rgba(200,200,200,0.35); + color: #000; + padding-left: 16px; + padding-right: 16px; + padding-top: 8px; + padding-bottom: 8px; + } + </style> +</head> +<body> + <script src="js/three.min.js"></script> + <script src="js/OrbitControls.js"></script> + <script src="js/jpeg_encoder_basic.js" type="text/javascript"></script> + <script src="js/CubemapToEquirectangular.js"></script> + <script> + var controls, camera, scene, renderer, equiManaged; + + function init(eqr_width, eqr_height, img_path, camera_fov, initial_heading, overlay_label) { + + camera = new THREE.PerspectiveCamera(camera_fov, window.innerWidth / window.innerHeight, 0.1, 100); + camera.position.x = 0.01; + + scene = new THREE.Scene(); + + renderer = new THREE.WebGLRenderer(); + renderer.autoClear = false; + renderer.setPixelRatio(window.devicePixelRatio); + renderer.setSize(window.innerWidth, window.innerHeight); + + var cubemap_img_js_url = img_path + '/cubemap_img.js'; + var cubemap_image_js = document.createElement('script'); + cubemap_image_js.setAttribute('type', 'text/javascript'); + cubemap_image_js.setAttribute('src', cubemap_img_js_url); + document.getElementsByTagName('head')[0].appendChild(cubemap_image_js); + cubemap_image_js.onload = function () { + document.getElementById("error_message").style.display = 'none' + scene.background = new THREE.CubeTextureLoader().load(cubemap_img_js); + equiManaged = new CubemapToEquirectangular(renderer, true, eqr_width, eqr_height); + }; + cubemap_image_js.onerror = function () { + document.getElementById("error_message").style.display = 'inline-block' + }; + + document.body.appendChild(renderer.domElement); + window.addEventListener('resize', onWindowResize, false); + + controls = new THREE.OrbitControls(camera, renderer.domElement); + controls.autoRotate = true; + controls.autoRotateSpeed = 0.2; + controls.enableZoom = false; + controls.enablePan = false; + controls.enableDamping = true; + controls.dampingFactor = 0.15; + controls.rotateSpeed = -0.5; + + // initial direction the camera faces + // We cannot edit camera rotation directly as the OrbitControls will + // immediately reset it so we need some math to tell the controls + // there to look at initially. Note there is also an offset of π/2 since + // the Viewer and three.js have slightly different coordinate systems + var spherical_target = new THREE.Spherical(1, Math.PI / 2, initial_heading + Math.PI / 2) + var target = new THREE.Vector3().setFromSpherical(spherical_target) + camera.position.set(target.x, target.y, target.z); + controls.update(); + controls.saveState(); + + // update the text that gets passed in from the C++ app for + // the translucent overlay label that tells us what we are seeing + document.getElementById('quality_window').innerHTML = overlay_label; + + animate(); + } + + window.addEventListener( + 'mousedown', + function (event) { + controls.autoRotate = false; + }, + false + ); + + window.addEventListener( + 'dblclick', + function (event) { + controls.autoRotate = true; + }, + false + ); + + function saveAsEqrImage(filename, xmp_details) { + equiManaged.update(camera, scene, filename, xmp_details); + } + + function onWindowResize() { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + renderer.setSize(window.innerWidth, window.innerHeight); + } + + function animate() { + requestAnimationFrame(animate); + controls.update(); + renderer.render(scene, camera); + } + </script> + <div id="error_message">UNABLE TO LOAD EQR IMAGE</div> + <div id="quality_window">Preview Quality</div> +</body> +</html>
\ No newline at end of file diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 03878d9fe7..a36b859b6c 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -131,7 +131,8 @@ with the same filename but different name <texture name="Check_Mark" file_name="icons/check_mark.png" preload="true" /> <texture name="Checker" file_name="checker.png" preload="false" /> - + + <texture name="Command_360_Capture_Icon" file_name="toolbar_icons/360_capture.png" preload="true" /> <texture name="Command_AboutLand_Icon" file_name="toolbar_icons/land.png" preload="true" /> <texture name="Command_Appearance_Icon" file_name="toolbar_icons/appearance.png" preload="true" /> <texture name="Command_Avatar_Icon" file_name="toolbar_icons/avatars.png" preload="true" /> diff --git a/indra/newview/skins/default/textures/toolbar_icons/360_capture.png b/indra/newview/skins/default/textures/toolbar_icons/360_capture.png Binary files differnew file mode 100644 index 0000000000..163cebe29f --- /dev/null +++ b/indra/newview/skins/default/textures/toolbar_icons/360_capture.png diff --git a/indra/newview/skins/default/xui/en/floater_360capture.xml b/indra/newview/skins/default/xui/en/floater_360capture.xml new file mode 100644 index 0000000000..c89489d145 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_360capture.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<floater can_resize="true" + height="400" + layout="topleft" + min_height="300" + min_width="400" + name="360capture" + help_topic="360capture" + save_rect="true" + title="360 SNAPSHOT" + width="800"> + <panel layout="topleft" + background_visible="true" + top="0" + follows="left|bottom|top" + left="0" + width="200" + bg_opaque_color="0.195 0.195 0.195 1" + background_opaque="true" + height="400" + name="ui_panel_left"> + <text + follows="top|left|right" + height="16" + layout="topleft" + left="10" + top="10" + width="100"> + Quality level + </text> + <radio_group + control_name="360QualitySelection" + follows="left|top" + height="94" + layout="topleft" + left_delta="20" + name="360_quality_selection" + top_pad="0" + width="180"> + <radio_item + height="20" + label="Preview (fast)" + layout="topleft" + left="0" + name="preview_quality" + value="128" + tool_tip="Preview quality" + top="0" + width="100" /> + <radio_item + height="20" + label="Medium" + layout="topleft" + left_delta="0" + name="medium_quality" + value="512" + tool_tip="Medium quality" + top_delta="20" + width="100" /> + <radio_item + height="20" + label="High" + layout="topleft" + left_delta="0" + name="high_quality" + value="1024" + tool_tip="High quality" + top_delta="20" + width="100" /> + <radio_item + height="20" + label="Maximum" + layout="topleft" + left_delta="0" + name="maximum_quality" + value="2048" + tool_tip="Maximum quality" + top_delta="20" + width="100" /> + </radio_group> + <check_box control_name="360CaptureHideAvatars" + follows="left|top" + height="15" + label="Hide all avatars" + layout="left" + left="10" + name="360_hide_avatar" + top_delta="0" + width="100"/> + <button follows="left|top" + height="20" + label="Create 360 image" + layout="topleft" + left="10" + name="capture_button" + top_delta="32" + width="180" /> + <button follows="left|top" + height="20" + label="Save as..." + layout="topleft" + left="10" + name="save_local_button" + top_delta="35" + width="180" /> + </panel> + <panel layout="topleft" + background_visible="true" + top="0" + follows="all" + left="200" + width="600" + bg_opaque_color="0.195 0.195 0.195 1" + background_opaque="true" + height="400" + name="ui_panel_right"> + <web_browser top="10" + follows="all" + bg_opaque_color="0.225 0.225 0.225 1" + left="0" + width="590" + height="368" + name="360capture_contents" + trusted_content="true" /> + <text follows="bottom" + layout="topleft" + name="statusbar" + height="17" + left="0" + top="382" + width="590"> + Click and drag on the image to pan + </text> + </panel> +</floater>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 832c2ee7da..f441e3cbd7 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -400,7 +400,7 @@ layout="topleft" name="img_info_border" top_pad="0" - right="-10" + right="-130" follows="left|top|right" left_delta="0"/> <text @@ -411,11 +411,10 @@ height="14" layout="topleft" left="220" - right="-20" halign="left" name="image_res_text" top_delta="5" - width="200"> + width="250"> [WIDTH]px (width) x [HEIGHT]px (height) </text> <text @@ -423,7 +422,7 @@ font="SansSerifSmall" height="14" layout="topleft" - left="-65" + left="-185" length="1" halign="right" name="file_size_label" @@ -432,4 +431,19 @@ width="50"> [SIZE] KB </text> + <text + follows="right|top" + font="SansSerifSmall" + height="14" + layout="topleft" + left="-130" + length="1" + halign="right" + name="360_label" + text_color="0.3 0.82 1 1" + top_delta="0" + type="string" + width="115"> + Take a 360 snapshot + </text> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml index bc19d6e79f..bdc04a8a78 100644 --- a/indra/newview/skins/default/xui/en/floater_toybox.xml +++ b/indra/newview/skins/default/xui/en/floater_toybox.xml @@ -4,7 +4,7 @@ can_dock="false" can_minimize="false" can_resize="false" - height="375" + height="430" help_topic="toybox" layout="topleft" legacy_header_height="18" @@ -45,7 +45,7 @@ Buttons will appear as shown or as icon-only depending on each toolbar's settings. </text> <toolbar - bottom="310" + bottom="365" button_display_mode="icons_with_text" follows="all" left="20" @@ -81,11 +81,11 @@ <panel bevel_style="none" border="true" - bottom="311" + bottom="366" follows="left|bottom|right" left="20" right="-20" - top="311" /> + top="366" /> <button follows="left|bottom|right" height="23" @@ -94,7 +94,7 @@ layout="topleft" left="185" name="btn_clear_all" - top="330" + top="385" width="130"> <button.commit_callback function="Toybox.ClearAll" /> </button> @@ -106,7 +106,7 @@ layout="topleft" left="335" name="btn_restore_defaults" - top="330" + top="385" width="130"> <button.commit_callback function="Toybox.RestoreDefaults" /> </button> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 72cce2208f..24d06722b9 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -733,6 +733,15 @@ function="Floater.Show" parameter="snapshot" /> </menu_item_call> + +<menu_item_call + label="360 snapshot" + name="Capture 360" + shortcut="control|alt|shift|s"> + <menu_item_call.on_click + function="Floater.Show" + parameter="360capture" /> + </menu_item_call> <menu_item_separator/> <menu_item_call label="Place profile" @@ -3427,6 +3436,14 @@ function="World.EnvPreset" <menu_item_call.on_click function="Advanced.DumpRegionObjectCache" /> </menu_item_call> + +<menu_item_call + label="Interest List: Full Update" + name="Interest List: Full Update" + shortcut="alt|shift|I"> + <menu_item_call.on_click + function="Advanced.InterestListFullUpdate" /> + </menu_item_call> </menu> <menu create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index d115e09d5b..db813a56b1 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -4124,6 +4124,8 @@ Try enclosing path to the editor with double quotes. <!-- commands --> + <string +name="Command_360_Capture_Label">360 snapshot</string> <string name="Command_AboutLand_Label">About land</string> <string name="Command_Appearance_Label">Outfits</string> <string name="Command_Avatar_Label">Complete avatars</string> @@ -4154,6 +4156,8 @@ Try enclosing path to the editor with double quotes. <string name="Command_View_Label">Camera controls</string> <string name="Command_Voice_Label">Voice settings</string> + <string +name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string> <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string> <string name="Command_Appearance_Tooltip">Change your avatar</string> <string name="Command_Avatar_Tooltip">Choose a complete avatar</string> |