summaryrefslogtreecommitdiff
path: root/indra/newview/skins
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/skins')
-rw-r--r--indra/newview/skins/default/html/common/equirectangular/default.html22
-rw-r--r--indra/newview/skins/default/html/common/equirectangular/eqr_gen.html149
-rw-r--r--indra/newview/skins/default/textures/textures.xml3
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/360_capture.pngbin0 -> 793 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_360capture.xml124
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml22
-rw-r--r--indra/newview/skins/default/xui/en/floater_toybox.xml12
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml17
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml4
9 files changed, 342 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..855c26c651
--- /dev/null
+++ b/indra/newview/skins/default/html/common/equirectangular/eqr_gen.html
@@ -0,0 +1,149 @@
+<!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 {
+ 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
new file mode 100644
index 0000000000..163cebe29f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/360_capture.png
Binary files differ
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..c2959b9853
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_360capture.xml
@@ -0,0 +1,124 @@
+<?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 Capture"
+ 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">
+ <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="Capture 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>
+ <web_browser top="0"
+ follows="all"
+ bg_opaque_color="0.225 0.225 0.225 1"
+ left="200"
+ width="600"
+ height="380"
+ name="360capture_contents"
+ trusted_content="true" />
+ <text follows="bottom"
+ layout="topleft"
+ name="statusbar"
+ height="17"
+ left="210"
+ top="383"
+ width="600">
+ Click and drag on the image to pan
+ </text>
+</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..52afe9164e 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="Capture 360"
+ 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..ae04a7c2b4 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 Capture</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 panorama 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>