<html>
|
<head>
|
<meta http-equiv="X-UA-Compatible" content="IE=9" />
|
<title>Image Comparison Tool</title>
|
<script type="text/javascript" src="range.js"></script>
|
<script type="text/javascript" src="timer.js"></script>
|
<script type="text/javascript" src="slider.js"></script>
|
|
<link type="text/css" rel="StyleSheet" href="slider.css" />
|
<link rel="StyleSheet" href="../Style.css" type="text/css">
|
<style>
|
</style>
|
</head>
|
<body leftmargin="2px" topmargin="2px" marginwidth="0" marginheight="0" style="border: 0px;overflow:hidden;background-color: #151515" id="Body" class="hideUntillTranslated" onload="Init()" onunload="exitTool();">
|
<div id="topDiv">
|
<table cellpadding ="1" cellspacing = "0" border="0" width="100%" >
|
<tr >
|
<td>
|
<select id="List1ID" class="SelectDark" style="width:220px; " ></select>
|
<img style="margin-left:5px;" src=".\images\swipeicon.png" alt="" />
|
<select id="List2ID" class="SelectDark" style="width:220px; " > </select>
|
</td>
|
</tr>
|
<tr id="refreshID">
|
<td>
|
<span id="refresh" onclick="RefreshList();" style="text-decoration:underline;cursor:pointer;" class="i18n s8w">Text_Refresh</span>
|
</td>
|
</tr>
|
|
</table>
|
</div>
|
|
<div id="StartDiv" >
|
<table cellpadding ="3" cellspacing = "0" border="0" width="100%" >
|
<tr>
|
<td align="center" >
|
<button id="StartID" class="MenuButtonSmallWhite MenuButtonLast" onclick="StartSwipe(-1,-1);" > <span class="i18n">Text_StartSwipe</span></button>
|
</td>
|
</tr>
|
</table>
|
</div>
|
|
<div id="SwipeDiv" >
|
<table cellpadding ="3" cellspacing = "0" border="0" width="100%" >
|
<tr>
|
<td style="width:225px;">
|
<!-- <span onclick="selectLayer(1);" style="text-decoration:underline;cursor:pointer;" class="i18n">Text_Select</span> -->
|
<select id="Layer1Mode" class="SelectDark" style="width:170px; " onchange="SetLayerRenderMode(1,-1);">
|
<option class="i18n" value=0 >Text_Texture</option>
|
<option class="i18n" value=32768 >Text_TextureWire</option>
|
<option class="i18n" value=3 >Text_Solid</option>
|
<option class="i18n" value=32771 >Text_SolidWire</option>
|
<option class="i18n" value=2 >Text_Xray</option>
|
</select>
|
|
<!-- <span onclick="selectLayer(2);" style="text-decoration:underline;cursor:pointer;" class="i18n">Text_Select</span> -->
|
<select id="Layer2Mode" class="SelectDark" style="width:170px; margin-left:75px;" onchange="SetLayerRenderMode(2,-1);">
|
<option class="i18n" value=0 >Text_Texture</option>
|
<option class="i18n" value=32768 >Text_TextureWire</option>
|
<option class="i18n" value=3 >Text_Solid</option>
|
<option class="i18n" value=32771 >Text_SolidWire</option>
|
<option class="i18n" value=2 >Text_Xray</option>
|
</select>
|
</td>
|
</tr>
|
<tr>
|
<td style="height:5px"></td>
|
</tr>
|
</table>
|
|
<table cellpadding ="3" cellspacing = "0" border="0" width="100%" >
|
<tr>
|
<td style=" width:80px;" align="center"><button id="FreezeID" style="width: 100%;" class="MenuButtonSmallWhite MenuButtonLast" onclick="Freeze();" ><span class="i18n">Text_Freeze</span></button></td>
|
<td style=" width:300px;" align="left">
|
<div id="SliderID">
|
<span id="gSliderClip" style="display:inline-block; width: 300px;"><input type="text" id="gSliderClipID" /></span></td>
|
</div>
|
<td style="width:35px;" align="left"> <span id="clipSpan" class="s8w" >100%</span></td>
|
<td style="width:35px;" align="center" class="SectionText" onclick="autoPlay(true);" style="cursor:pointer;"><img id="clipIcon" src="Images/autoOff.png" alt="" align="absmiddle"/></td>
|
</tr>
|
</table>
|
</div>
|
|
|
<script src="../jquery/jquery-1.10.2.js" type="text/javascript"></script>
|
<script language="javascript" src="../ToolsCommon71.js"></script>
|
<script language="jscript">
|
|
var SGWorld = new ActiveXObject("TerraExplorerX.SGWorld71");
|
|
var gDebug = false;
|
var gStartSwipe = false;
|
var gLastLevel = 100;
|
var gAutoOnOff = false;
|
var gCliptimeout;
|
var gClipUpdatetimeout;
|
var gClipPosition;
|
var gSliderClip;
|
var gLayer1Visibility = true;
|
var gLayer2Visibility = true;
|
var gLayer1RenderMode;
|
var gLayer2RenderMode;
|
var gFreeze = false;
|
var gInSwipe=false;
|
var gCameraPos;
|
//--------------
|
// Init
|
function Init() {
|
SGWorld.Window.SetInputMode(1, abspath() + "/cursor_wait.cur");
|
|
var ObjectID = "";
|
$("#StartDiv").show();
|
$("#SwipeDiv").hide();
|
RefreshList();
|
|
var Layer1ID = GetParamValue("Layer1ID", "-1");
|
var Layer2ID = GetParamValue("Layer2ID", "-1");
|
if (Layer1ID!="-1" && Layer2ID!="-1")
|
StartSwipe(Layer1ID,Layer2ID)
|
|
SGWorld.AttachEvent("OnFrame", TEOnFrame);
|
SGWorld.Window.SetInputMode(0);
|
|
}
|
//-------------------
|
// RefreshList
|
function RefreshList() {
|
try {
|
|
var viewedIndex = 0;
|
|
$("#List1ID").html("");
|
$("#List2ID").html("");
|
var Layers=[];
|
BuildObjectsList(SGWorld.ProjectTree.RootID, Layers, 38);
|
|
$("#List1ID").append("<option value=-1>" + SGLang.i18n("Text_SelectLayer") + "</option>");
|
$("#List2ID").append("<option value=-1>" + SGLang.i18n("Text_SelectLayer") + "</option>");
|
Layers.forEach (function (val){
|
var layer1Selected="";
|
var layer2Selected="";
|
|
if (checkIntersactionWithCamera (val))
|
{
|
if (viewedIndex==0)
|
layer1Selected = " selected='selected' ";
|
if (viewedIndex==1)
|
layer2Selected = " selected='selected' ";
|
viewedIndex++;
|
}
|
|
var name = SGWorld.ProjectTree.GetItemName (val);
|
$("#List1ID").append("<option value=" + val +layer1Selected+ ">" + name + "</option>");
|
$("#List2ID").append("<option value=" + val +layer2Selected+ ">" + name + "</option>");
|
|
});
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
//----------
|
// checkIntersactionWithCamera
|
function checkIntersactionWithCamera (layer){
|
try {
|
|
var Coord0 = SGWorld.Window.pixelToWorld(10, 10, -1 & ~(128|1024));
|
var Coord1 = SGWorld.Window.pixelToWorld(SGWorld.Window.Rect.Width-10, 10, -1 & ~(128|1024));
|
var Coord2 = SGWorld.Window.pixelToWorld(SGWorld.Window.Rect.Width-10, SGWorld.Window.Rect.Height-10, -1 & ~(128|1024));
|
var Coord3 = SGWorld.Window.pixelToWorld(10, SGWorld.Window.Rect.Height-10, -1 & ~(128|1024));
|
var ring = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([Coord0.Position.x,Coord0.Position.y,Coord0.Position.Altitude,Coord1.Position.x,Coord1.Position.y,Coord1.Position.Altitude,Coord2.Position.x,Coord2.Position.y,Coord2.Position.Altitude,Coord3.Position.x,Coord3.Position.y,Coord3.Position.Altitude]);
|
var geometry = SGWorld.Creator.GeometryCreator.CreatePolygonGeometry (ring,ring);
|
|
var layerObj = SGWorld.Creator.GetObject(layer);
|
var layerRing = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([layerObj.BBox.MinX, layerObj.BBox.MaxY, 0, layerObj.BBox.MaxX, layerObj.BBox.MaxY, 0,layerObj.BBox.MaxX, layerObj.BBox.MinY, 0, layerObj.BBox.MinX, layerObj.BBox.MinY, 0]);
|
layerGeometry = SGWorld.Creator.GeometryCreator.CreatePolygonGeometry (layerRing,layerRing);
|
|
if (layerGeometry.SpatialRelation.Intersects(geometry) == false ) {
|
return false;
|
}
|
}
|
catch (err) { if (gDebug) alert(err.message); return false; }
|
|
return true;
|
}
|
|
//--------------
|
// StartSwipe
|
function StartSwipe(Layer1ID,Layer2ID){
|
try {
|
if (Layer1ID!="-1" ) // If started from another tool - select the correct layers
|
$("#List1ID").val(Layer1ID);
|
if (Layer2ID !="-1")
|
$("#List2ID").val(Layer2ID);
|
|
Layer1ID = $("#List1ID").val();
|
Layer2ID = $("#List2ID").val();
|
|
if (Layer1ID==-1 || Layer2ID==-1 || Layer1ID==Layer2ID) {
|
//// need to display the error message div
|
TEAlert (SGLang.i18n("Text_AlertCaption"), SGLang.i18n("Text_NoMeshSelected"));
|
return;
|
}
|
|
if (checkIntersactionWithCamera (Layer1ID) == false || checkIntersactionWithCamera (Layer2ID) == false){
|
TEAlert (SGLang.i18n("Text_AlertCaption"), SGLang.i18n("Text_NotIntersect"));
|
return;
|
}
|
|
$("#List1ID").attr('unselectable', 'on');
|
$("#List2ID").attr('unselectable', 'on');
|
$("#refreshID").hide();
|
$("#StartDiv").hide();
|
$("#SwipeDiv").show();
|
$('#topDiv').attr('disabled', true);
|
|
gStartSwipe = true;
|
gLayer1Visibility = SGWorld.ProjectTree.GetVisibility (Layer1ID);
|
gLayer2Visibility = SGWorld.ProjectTree.GetVisibility (Layer2ID);
|
gLayer1RenderMode = GetLayerRenderMode(1);
|
SetLayerRenderMode (1,gLayer1RenderMode);
|
gLayer2RenderMode = GetLayerRenderMode(2);
|
SetLayerRenderMode (2,gLayer2RenderMode);
|
gCameraPos = SGWorld.Navigate.GetPosition ();
|
SGWorld.ProjectTree.SetVisibility (Layer1ID,true);
|
SGWorld.ProjectTree.SetVisibility (Layer2ID,true);
|
setTimeout ("relocateCamera();",100); // We need it to overcomae a problem of camera "jump" when we turn on layers
|
|
SGWorld.Analysis.SetCompareGroup(Layer1ID, 1);
|
SGWorld.Analysis.SetCompareGroup(Layer2ID, 2);
|
|
gSliderClip = new Slider(document.getElementById("gSliderClip"), document.getElementById("gSliderClipID"));
|
gSliderClip.setValue(50);
|
gSliderClip.setMinimum(0);
|
gSliderClip.setMaximum(99);
|
gSliderClip.onchange = function () {
|
SetClipTrans(gSliderClip.getValue(), false);
|
};
|
SetClipTrans(gSliderClip.getValue(), true);
|
SGWorld.SetParam(450, 1);
|
|
}
|
catch (e) { if (gDebug) alert(SGLang.i18n("Text_MeshError") + e.message); }
|
}
|
|
//--------------
|
// relocateCamera
|
// We need it to overcomae a problem of camera "jump" when we turn on layers
|
function relocateCamera() {
|
SGWorld.Navigate.SetPosition (gCameraPos);
|
}
|
|
//--------------
|
//
|
function SetClipTrans(level, force) {
|
if (gFreeze) {
|
gSliderClip.setValue(gSliderFreezeValue);
|
return;
|
}
|
if (level == gLastLevel && force == false )
|
return;
|
gLastLevel = level;
|
|
// Clipping
|
try {
|
document.getElementById("clipSpan").innerHTML = level + "%";
|
|
var vertices = [];
|
/***
|
vertices[0] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, 2, 0).Position;
|
vertices[1] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width-2, 2, 0).Position;
|
vertices[2] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width-2, (SGWorld.Window.Rect.Height)-2, 0).Position;
|
vertices[3] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-2, 0).Position;
|
// vertices[0] = vertices[0].Move(500, 0, -90);
|
// vertices[1] = vertices[1].Move(500, 0, -90);
|
// vertices[2] = vertices[2].Move(500, 0, -90);
|
// vertices[3] = vertices[3].Move(500, 0, -90);
|
vertices[4] = vertices[0].Move(1500, 0, 90);
|
vertices[5] = vertices[1].Move(1500, 0, 90);
|
vertices[6] = vertices[2].Move(1500, 0, 90);
|
vertices[7] = vertices[3].Move(1500, 0, 90);
|
***/
|
|
|
//var LeftPos = SGWorld.Window.PixelToWorld(1, (SGWorld.Window.Rect.Height)-1, 0).Position;
|
var boxWidth = Math.max(2000, SGWorld.Navigate.GetPosition(0).Altitude*40); // 1000;//LeftPos.DistanceTo(RightPos)*10;
|
//var boxYaw = SGWorld.Navigate.GetPosition().Yaw+90;
|
var Pos = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-10, 0).Position;
|
var Pos1 = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-50, 0).Position;
|
var boxYaw = Pos.AimTo(Pos1).Yaw;
|
//var boxYaw = SGWorld.Navigate.GetPosition().Yaw+90;
|
Pos = Pos.Move (boxWidth,boxYaw ,0);
|
Pos = Pos.Move (boxWidth/4,0,-90);
|
vertices[0] = Pos;
|
Pos = Pos.Move(boxWidth, boxYaw+90 , 0);
|
vertices[1] = Pos;
|
Pos = Pos.Move(boxWidth*2, boxYaw + 180, 0);
|
vertices[2] = Pos;
|
Pos = Pos.Move(boxWidth, boxYaw+270, 0);
|
vertices[3] = Pos;
|
|
vertices[4] = vertices[0].Move(boxWidth, 0, 90);
|
vertices[5] = vertices[1].Move(boxWidth, 0, 90);
|
vertices[6] = vertices[2].Move(boxWidth, 0, 90);
|
vertices[7] = vertices[3].Move(boxWidth, 0, 90);
|
|
var BoxGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry(vertices);
|
SGWorld.Analysis.ShowCompareBox(BoxGeometry, false, "#ffffffff");
|
//SGWorld.Creator.CreatePolyline (BoxGeometry,542346, 3);
|
|
gClipPosition = SGWorld.Navigate.GetPosition();
|
clearTimeout(gClipUpdatetimeout);
|
///gClipUpdatetimeout = setTimeout("checkClipUpdate()", 20);
|
gInSwipe=true;
|
}
|
catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message); }
|
}
|
//--------------
|
//
|
function checkClipUpdate() {
|
var currPosition = SGWorld.Navigate.GetPosition()
|
if (currPosition.IsEqual(gClipPosition) == false) {
|
SetClipTrans(gLastLevel, true);
|
}
|
// else {
|
// clearTimeout(gClipUpdatetimeout);
|
// gClipUpdatetimeout = setTimeout("checkClipUpdate()", 20);
|
// }
|
}
|
|
function TEOnFrame()
|
{
|
if (gInSwipe)
|
checkClipUpdate();
|
}
|
//--------------
|
// selectLayer
|
function selectLayer(index) {
|
try {
|
var Layer1ID = $("#List1ID").val();
|
var Layer2ID = $("#List2ID").val();
|
|
if (index==1 && Layer1ID!=-1)
|
SGWorld.ProjectTree.SelectItem (Layer1ID);
|
if (index==2 && Layer2ID!=-1)
|
SGWorld.ProjectTree.SelectItem (Layer2ID);
|
}
|
catch (e) {if (gDebug) alert(SGLang.i18n("Text3") + e.message); }
|
}
|
var gSliderFreezeValue=0;
|
//--------------
|
//
|
function Freeze() {
|
if (gFreeze){
|
gFreeze = !gFreeze;
|
$('#SliderID').on();
|
$("#FreezeID").css( "background-color", "#ffffff" );
|
SetClipTrans(gSliderClip.getValue(), true);
|
}
|
else {
|
$("#FreezeID").css( "background-color", "#0CC2DE" );
|
gSliderFreezeValue = gSliderClip.getValue();
|
gFreeze = !gFreeze;
|
}
|
}
|
//--------------
|
//
|
function autoPlay(fromClick) {
|
//debugger
|
if (fromClick) {
|
gAutoOnOff = !gAutoOnOff;
|
}
|
|
if (gAutoOnOff) {
|
document.getElementById("clipIcon").src = "Images/autoOn.png";
|
var a = gSliderClip.getValue();
|
a = (a + 2) % 101;
|
gSliderClip.setValue(a);
|
|
gCliptimeout = setTimeout("autoPlay(false)", 20);
|
|
}
|
else {
|
document.getElementById("clipIcon").src = "Images/autoOff.png";
|
clearTimeout(gCliptimeout);
|
}
|
}
|
|
//--------------
|
// GetLayerRenderMode
|
function GetLayerRenderMode (layerIndex){
|
LayerID = (layerIndex==1)?$("#List1ID").val():Layer2ID = $("#List2ID").val();
|
var obj = SGWorld.Creator.GetObject(LayerID);
|
return obj.DisplayStyle;
|
}
|
//--------------
|
// SetLayerRenderMode
|
function SetLayerRenderMode (layerIndex,forceValue){
|
var Layer = (layerIndex==1)?$("#List1ID"):$("#List2ID");
|
var modeID = (layerIndex==1)?$("#Layer1Mode"):$("#Layer2Mode");
|
var LayerID= Layer.val();
|
var obj = SGWorld.Creator.GetObject(LayerID);
|
var renderMode ;
|
if (forceValue==-1)
|
renderMode = (layerIndex==1)?$("#Layer1Mode").val():$("#Layer2Mode").val();
|
else{
|
renderMode=forceValue;
|
modeID.val(renderMode).change();
|
}
|
obj.DisplayStyle=renderMode;
|
}
|
//--------------
|
// exitTool
|
function exitTool() {
|
try {
|
if (gStartSwipe){
|
var Layer1ID = $("#List1ID").val();
|
var Layer2ID = $("#List2ID").val();
|
|
if (Layer1ID != -1) {
|
SGWorld.ProjectTree.SetVisibility (Layer1ID,gLayer1Visibility);
|
SetLayerRenderMode (1,gLayer1RenderMode);
|
SGWorld.Analysis.SetCompareGroup(Layer1ID, 0);
|
}
|
if (Layer2ID != -1) {
|
SGWorld.ProjectTree.SetVisibility (Layer2ID,gLayer2Visibility);
|
SetLayerRenderMode (2,gLayer2RenderMode);
|
SGWorld.Analysis.SetCompareGroup(Layer2ID, 0);
|
}
|
SGWorld.Analysis.HideCompareBox();
|
SGWorld.SetParam(450, 0);
|
SGWorld.DetachEvent("OnFrame", TEOnFrame);
|
|
}
|
SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text8"));
|
}
|
catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message);}
|
}
|
|
</script>
|
|
</body>
|
</html>
|
|
|
|
|
<!--Sig:000000407NQtd2hdjORvG.thlSAqQAzFU6ZpexE8bfZM7CZX.7XgRrWwRxejIjA1ftkAJGvsQJw5ILar4EneN37YT.DeXSJJ-->
|