'use strict';
AIA.controller("TileViewListController", ["$scope", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout", "DA", "Modules", "$routeParams", "DataService", "ModuleService",
function ($scope, $rootScope, $compile, $http, $log, $location, $timeout, DA, Modules, $routeParam, DataService,ModuleService) {
$rootScope.OpenedTileData=[];
$scope.loadForModuleById = function (moduleId) {
$scope.moduleId = moduleId;
console.log('loadForModuleById is called')
$rootScope.moduleName = Modules[moduleId].Name;
var promise = ModuleService.loadModuleDataBasedOnModuleName($scope.moduleName)
.then(
function (result) {
$scope.moduleLandingData = result;
console.log(JSON.stringify(result, null, 4));
},
function (error) {
// handle errors here
console.log(' error: ' + error.statusText);
}
)
}
$scope.openModuleItemView = function (event) {
//0. Get selected Image Id
var moduleItemDataToBeSaved = event.target.id;
//1.Filter selected module ietem data and get the pushed opened moduile array object
$rootScope.OpenedTileData = ModuleService.GetOpenedTileData(moduleItemDataToBeSaved, $scope.moduleLandingData);
//2. Pick the image name to create a source to open
$rootScope.imageName = $rootScope.OpenedTileData[3];
$rootScope.OpenItemImagePath = "../../../content/images/aa/images/" + $rootScope.OpenedTileData[3];
//3. Navigate to the Module-item-view
var u = $location.url();
$location.url('/module-item-view');
}
$scope.openModuleItem = function ()
{
//1. create a jsPanel and load the module item view
$.jsPanel({
id: 'aaImagePanel',
selector: '.aaBodyView',
theme: 'success',
currentController: 'TileViewListController',
parentSlug: 'tile-view',
ajax: {
url: 'app/views/aa/atlas-anatomy-detail.html'
},
//title: localStorage.getItem("currentViewTitle"),
position: {
top: 70,
left: 1,
},
size: { width: $(window).outerWidth() - 10, height: $(window).outerHeight() - 110 },
});
console.log('jsPanel loaded aaImagePanel exist= ' + document.getElementById('aaImagePanel'))
//0.3
var aaViewElement = angular.element(document.getElementById("aaDetailPageDiv"));
$timeout(function () {
$compile(aaViewElement.contents())($scope);
alert('aaView val: ' + document.getElementById('aaDetailPageDiv'));
//console.log('html is compiled' + document.getElementById('daView'))
if (document.getElementById('aaDetailPageDiv') != null) {
////0.4 added some stylesheets
$('#aaBodyView').css("height", $(window).outerHeight());
$('#aaBodyView').css("width", $(window).outerWidth());
$scope.currentTitleFromJson = localStorage.getItem("currentViewTitle");
$("#modItemImage").attr('src', $rootScope.OpenItemImagePath);
//$('#aaBodyView').css("height", $(window).outerHeight());
//$('#aaBodyView').css("width", $(window).outerWidth());
}
}, 250);
}
angular.element(document).ready(function (e) {
$("#aaImagePanel").resize(function () {
$("#imageDiv").scrollLeft($rootScope.CanvasDivLeftPosition);
$("#imageDiv").scrollTop($rootScope.CanvasDivTopPosition);
});
})
$scope.loadSearchDataForBodyView = function () {
console.log('loadSearchDataForBodyView');
var currentBodyViewId = localStorage.getItem("currentBodyViewId");
var searchWorker = new Worker('search-wp.js');
//push workers in array to further used the refernece to delete the workers
$scope.runningSearchWorkers.push({ 'workerName': searchWorker })
//console.log('for bodyRegionId = ' + bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"))
//searchWorker.postMessage({
// 'currentBodyViewId': currentBodyViewId,
//})
searchWorker.postMessage({
'currentBodyViewId': 1,
})
searchWorker.onmessage = function (e) {
//console.log('callback searchWorker , time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"));
$rootScope.TermNumberData = e.data.TermNumberData,
$rootScope.VocabTermData = e.data.VocabTermData,
$scope.vocabTermTxt = e.data.vocabTermTxt
$scope.VocabTermTxt = new jinqJs()
.from($scope.vocabTermTxt)
.distinct('_TermText', '_ActualTermNumber')
.orderBy([{ field: '_TermText', sort: 'asc' }])
.select('_ActualTermNumber', '_TermText', '_cdId');
console.log('JlinqActivity , time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"));
if ($scope.runningSearchWorkers != null || $scope.runningSearchWorkers != undefined) {
var workerCount = $scope.runningSearchWorkers.length;
if (workerCount > 0) {
for (var i = workerCount - 1; i >= 0; i--) {
var runningWorker = $scope.runningSearchWorkers[i].workerName;
runningWorker.terminate();
$scope.runningSearchWorkers.splice(i, 1);
// workerCount--;
}
}
}
}
}
$scope.loadBodyViewData = function (currentVoid) {
console.log('caller of worker sending currentVoid: ' + currentVoid);
var bodyViewWorker = new Worker('body-view-wp.js');
//push workers in array to further used the refernece to delete the workers
$scope.runningBodyViewWorkers.push({ 'workerName': bodyViewWorker })
bodyViewWorker.postMessage({
'currentViewId': currentVoid
});
bodyViewWorker.onmessage = function (e) {
//console.log('callback in extr');
$rootScope.BodyRegionData = e.data.bodyRegionData;
$rootScope.bgartData = e.data.bodyArtData;
$rootScope.BodyLayerData = e.data.bodyLayerData;
var dataLength = $rootScope.BodyLayerData.Layers.DataLayer.length;
//set max for LayerNumber input
$rootScope.totalLayers = dataLength - 1;
// debugger
$('#txtLayerNumber').attr('max', $rootScope.totalLayers);
$('#layerChangeSlider').slider("option", "max", $rootScope.totalLayers);
$scope.isBodylayerdataLoaded = true;
$scope.LoadDefaultLayerImage();
}
bodyViewWorker.onerror = function (e) {
alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message);
};
}
//Code for displaying NavigatorImage for BodyView
$scope.LoadBodyViewNavigatorImage = function () {
console.log('insideLoadBodyViewNavigatorImage')
var NavigatorManJsonPath = '~/../content/data/json/da/da_dat_orient_image.json';
$http({ method: 'GET', url: NavigatorManJsonPath })
.success(function (data) {
$scope.NavigatorData = data;
$scope.skinTone = $rootScope.globalSetting.ethnicity;
var navigatorManData = new jinqJs()
.from($scope.NavigatorData.Navigtor.ViewOrientation)
.where("_ViewOrientationId == " + $rootScope.currentBodyViewId)
.select();
if ((navigatorManData != null || navigatorManData != undefined) && (navigatorManData.length > 0)) {
var imageInfoForNavigator = new jinqJs()
.from(navigatorManData[0].ImageInfo)
.where("_Ethnicity == " + $scope.skinTone)
.select();
}
else {
console.log('NAVIGATOR.DATA.NOT.FOUND FOR BODY VIEW: ' + $rootScope.currentBodyViewId);
}
if (imageInfoForNavigator != null || imageInfoForNavigator != undefined) {
$scope.navigatorImage = imageInfoForNavigator;
var navImageModesty;
if (($scope.navigatorImage != null || $scope.navigatorImage != undefined) && ($scope.navigatorImage.length > 0)) {
angular.forEach($scope.navigatorImage, function (value, key) {
if (value._HaveModesty === $rootScope.globalSetting.modesty) {
navImageModesty = value._ImageName;
}
})
}
if (typeof (navImageModesty) === "undefined" || navImageModesty === null) {
navImageModesty = $scope.navigatorImage[0]._ImageName;
}
$scope.navimgsrc = "~/../content/images/DA/ethnicity/body-views/" + $scope.voId + '/' + $scope.skinTone + '/navigator_images/' + navImageModesty;
$('#navigatorDiv').css('visibility', 'visible');
$('#containment - wrapper').css('visibility', 'visible');
}
else {
console.log('NAVIGATOR.IMAGE.NOT.FOUND FOR BODY VIEW: ' + $rootScope.currentBodyViewId);
}
})
.error(function (data, status, headers, config) {
//1.
console.log('DATA.NOT.LOADED FOR:' + NavigatorManJsonPath + ', ERROR: ' + data);
//2.
// $scope.LoadBodyViewNavigatorImage()
});
}
$scope.LoadDefaultLayerImage = function () {
console.log('inside LoadDefaultLayerImage')
$rootScope.isNormalMode = true;
$scope.layerNumber = 0;
$scope.skinTone = $rootScope.globalSetting.ethnicity;
//viewOrientationId is to pic coordinates of view and void is to pic iamge name from resopective json
$rootScope.viewOrientationId = $rootScope.voId;
if ($rootScope.voId == 5) {
$rootScope.viewOrientationId = 1;
}
else if ($rootScope.voId == 6) {
$rootScope.viewOrientationId = 2;
}
else if ($rootScope.voId == 7) {
$rootScope.viewOrientationId = 3;
}
else if ($rootScope.voId == 8) {
$rootScope.viewOrientationId = 4;
}
else if ($rootScope.voId == 9) {
$rootScope.viewOrientationId = 5;
}
else if ($rootScope.voId == 10) {
$rootScope.viewOrientationId = 6;
}
else if ($rootScope.voId == 11) {
$rootScope.viewOrientationId = 5;
}
else if ($rootScope.voId == 12) {
$rootScope.viewOrientationId = 6;
}
//TODO
//$scope.CalculateImageCordinates($rootScope.viewOrientationId);
$scope.CalculateImageCordinates(1);
};
//calculate coordinates for body region images
$scope.CalculateImageCordinates = function (viewOrientationId) {
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
$scope.modestyImageInfo = [];
// annotation toolbar canvas
if ($("#canvasDiv").find("canvas[id='canvasPaint']").length == 0) {
$("#canvasDiv").append('');
$scope.BindCanvasDrawingListners();
// $rootScope.FreeStylePaint();
}
$scope.terminateCurrentlyRunningWPs();
var drawnBodyRegionCount = [];
if ($rootScope.MaskCanvasData != null || $rootScope.MaskCanvasData != undefined) {
var n = $rootScope.MaskCanvasData.length;
if (n > 0) {
for (var i = n - 1; i >= 0; i--) {
$rootScope.MaskCanvasData.splice(i, 1);
// workerCount--;
}
$rootScope.MaskCanvasData = null;
$rootScope.MaskCanvasData = [];
}
}
//set height of canvas div and left tool bar as per window size
$rootScope.BodyRegionCordinatesData = []; // create an empty array
$('#daBodyview').css('width', '100%');
var canvasDIvHeight = parseInt($('#daImagePanel').outerHeight()) - 104;
$('#canvasDiv').css('height', canvasDIvHeight);
$('#leftToolBar').css('height', $('#daImagePanel').outerHeight())
//calculate image coordinates and draw image
var bodyRegionCoordinates = $rootScope.BodyRegionData.BodyRegionViews;
// var viewOrientationId = String($rootScope.voId);
$scope.bodyRegionCoordinates = new jinqJs()
.from($rootScope.BodyRegionData.BodyRegionViews.BodyRegionCordinates)
.where('_ViewOrientationId == ' + viewOrientationId)
.select();
console.log('viewOrientationId= ' + viewOrientationId + ', $scope.bodyRegionCoordinates length= ' + $scope.bodyRegionCoordinates.length)
// if ($rootScope.voId == 9 || $rootScope.voId == 11) {
$scope.bagartDetails = new jinqJs()
.from($rootScope.bgartData.BackgroundArts.BackgroundArtDetail)
.where('_ViewOrientationId == ' + viewOrientationId)
.select();
if ($scope.ColoredImageSRC != null && $scope.ColoredImageSRC.length > 0) {
$scope.ColoredImageSRC = null;
$scope.ColoredImageSRC = [];
$scope.flushCanvas();
}
else {
$scope.ColoredImageSRC = [];
}
if ($scope.bodyRegionCoordinates != null || $scope.bodyRegionCoordinates != undefined) {
angular.forEach($scope.bodyRegionCoordinates, function (value, key) {
if (value._HaveMirrorImage == 'Y') {
//DrawMirroredImage
//0. Scaling as per default zoom
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue);
//1.Get image source
var src = $scope.GetImageSource(value._BodyRegionId);
$scope.imageSource = src;
//2.Draw mirror image
$scope.DrawMirroredImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N');
// debugger;
$rootScope.BodyRegionCordinatesData.push(
{
"bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth),
"X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'Yes'
}
);
//3.GetMaskImageSource
var maskImageSrc = $scope.GetMaskImageSource($scope.imageSource);
// debugger;
//4 Draw Mask Mirror Image
$scope.DrawMirroredImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskImageSrc, value._BodyRegionId, 'Y');
//Draw Normal Image
//0. Scaling as per default zoom
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, 0);
//1.Draw body region which have mirror image
$scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N');
$scope.BodyRegionCordinatesData.push(
{
"bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth),
"X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'No'
}
);
//2.Draw body region for mask image
$scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskImageSrc, value._BodyRegionId, 'Y');
}
else {
//0.Scaling as per default zoom
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue);
//1.Get image source
if (value._IsPrimary == 'N') {
var src = $scope.GetBackgroundImgSource(value._BodyRegionId);
$scope.imageSource = src;
}
else {
var src = $scope.GetImageSource(value._BodyRegionId);
$scope.imageSource = src;
}
//2.Draw body region which don't have mirror image
$scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N');
$scope.BodyRegionCordinatesData.push(
{
"bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth),
"X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'No'
}
);
//3.GetMaskImageSource
var maskSRC = $scope.GetMaskImageSource($scope.imageSource);
//4.Draw body region for mask image
$scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskSRC, value._BodyRegionId, 'Y');
//draw figLeaf for modesty
$scope.figLaefImageName;
$scope.figLaefX;
$scope.figLaefY;
var gender;
if (localStorage.getItem("genderId") == 'Female') {
gender = 'F';
}
else {
gender = 'M';
}
if (((localStorage.getItem("genderId") == 'Female') && (value._BodyRegionId == 2)) || (value._BodyRegionId == 3)) {
if ($scope.bagartDetails != null || $scope.bagartDetails != undefined) {
var dtlOfBr = new jinqJs()
.from($scope.bagartDetails)
.where('_BodyRegionId == ' + value._BodyRegionId)
.select();
if (dtlOfBr != null || dtlOfBr != undefined) {
var dtlOfGender = new jinqJs()
.from(dtlOfBr)
.where('_Gender == ' + gender)
.select();
if (dtlOfGender != null || dtlOfGender != undefined) {
var dtlOfSktn = new jinqJs()
.from(dtlOfGender)
.where('_Skintone == +')
.select();
//multiple conditions are not working in where clause of JinQ so need multiple filtered variables
if ((dtlOfSktn != null || dtlOfSktn != undefined) && (dtlOfSktn.length > 0)) {
if ((parseInt(dtlOfSktn[0]._lns) <= parseInt($scope.layerNumber)) && (parseInt(dtlOfSktn[0]._lne) > parseInt($scope.layerNumber)) && (dtlOfSktn[0]._isfr == 'Y')) {
$scope.figLaefImageName = dtlOfSktn[0]._ImageId;
//$scope.figLaefX = filtereddata[0]._X;
//$scope.figLaefY = filtereddata[0]._Y;
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue);
var src = "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/0/" + value._BodyRegionId + "/" + $scope.figLaefImageName;
$scope.DrawImage(rectangle.scaledHeight, rectangle.scaledWidth, rectangle.scaledX, rectangle.scaledY, src, 'modestyImg' + value._BodyRegionId, 'N')
}
}
}
}
}
}
}
});
//$rootScope.isLoading = false;
//$('#spinner').css('visibility', 'hidden');
}
if (($rootScope.globalSetting.modesty == 'Y')) {
if ($('.modestyImg') != null) {
$('.modestyImg').css('visibility', 'visible');
}
}
//set scrollbars on canvas and hide loading label
// debugger;
// var isiOSSafari = (navigator.userAgent.match(/like Mac OS X/i)) ? true : false;
var isiOSSafari = (navigator.userAgent.match(/iPad/i)) ? true : false;
//set scrollbars on canvas and hide loading label
$('#daLoaderLabel').css('visibility', 'hidden')
$('#canvasDiv').css('overflow', 'scroll')
if (isiOSSafari) {
$('#canvasDiv').scrollLeft($('#canvasDiv').width() + 150)
}
else {
$('#canvasDiv').scrollLeft($('#canvasDiv').width() / 2)
}
// $('#canvasDiv').scrollLeft($scope.imageHorizontlScrollPosition)
$('#canvasDiv').scrollTop(50)
var abc = $rootScope.BodyRegionCordinatesData;
//debugger;
$('#layerChangeSlider').slider("option", "value", parseInt($rootScope.totalLayers) - parseInt($scope.layerNumber));
// $('#spinner').css('visibility', 'hidden');
$rootScope.isLoading = false;
//Dated:16-07-2016 Issue #4957 :While selecting the Zoom-in\Zoom-out button scroll should be go on top.
// #4976 :While changing gender male to female scroll bar is going on top.
var canvasDiv = document.getElementById('canvasDiv');
if (canvasDiv != null || canvasDiv != undefined) {
canvasDiv.scrollTop = 0;
//Navigator Code for dynamically calculating the height and width of Dragable Div on Navigator Image
var dragdivh = Math.floor(($('#canvasDiv').height() / $('#canvasDiv')[0].scrollHeight) * 119) //119px is the height of the image
if ($('#canvasDiv')[0].scrollWidth > $('#canvasDiv')[0].clientWidth) {
var dragdivw = 42
$scope.dragdivleft = 21;
$scope.dragdivtop = 0;
$scope.dragdivposition = {
"left": 21,
"top": 0
};
}
else {
var dragdivw = 83;
$scope.dragdivleft = 0;
$scope.dragdivtop = 0;
$scope.dragdivposition = {
"left": 0,
"top": 0
};
}
}
$('#draggable').css('width', dragdivw);
$('#draggable').css('height', dragdivh)
}
function scaleRectangle(x, y, height, width, mirrorValue) {
var nzoom = $scope.zoomInOut;
var existingZoon = 100;
var X = 0;
var scaledY = 0;
var scaledHeight = 0;
var scaledWidth = 0;
if (mirrorValue != 0) {
var mirroredX = parseInt(mirrorValue) + parseInt(x);
var newX = (mirroredX * nzoom);
mirroredX = (newX / existingZoon);
X = mirroredX;
}
else {
var newX = (x * nzoom);
X = (newX / existingZoon);
}
var newY = (y * nzoom);
var Y = (newY / existingZoon);
var newHeight = (height * nzoom);
var ht = (newHeight / existingZoon);
var newWidth = (width * nzoom);
var wt = (newWidth / existingZoon);
return {
scaledX: X,
scaledY: Y,
scaledHeight: ht,
scaledWidth: wt
}
}
$scope.GetMaskImageSource = function (src) {
if (src != null || src != undefined) {
if (src.match('.png')) {
var mciImage = src.replace('.png', '_mci.png')
}
else {
var mciImage = src.replace('.jpg', '_mci.png')
}
return mciImage;
}
else {
console.log('IMAGE.SOURCE.NOLT.FOUND');
}
}
$scope.GetImageSource = function (bodyRegionId) {
var dataLength = $rootScope.BodyLayerData.Layers.DataLayer.length;
// $('#layerChangeSlider').slider("option", "value",parseInt($rootScope.totalLayers)-parseInt($scope.layerNumber));
$scope.one = 1;
if ($rootScope.isListManagerSelected == true) {
$scope.layerNumber = $('#txtlayerNumber').val();
}
$scope.userInput = parseInt($scope.layerNumber);
$scope.skinTone = $rootScope.globalSetting.ethnicity;
var SelectedLayerData = [];
SelectedLayerData = $rootScope.BodyLayerData.Layers.DataLayer[dataLength - $scope.userInput - 1];
if ((SelectedLayerData != null || SelectedLayerData != undefined))
if ($scope.layerNumber == 0) {
console.log('lNo: ' + $scope.layerNumber + ' and BodyRegion.length: ' + SelectedLayerData.BodyRegion.length);
if (SelectedLayerData.BodyRegion.length > 0) {
for (var z = 0; z < SelectedLayerData.BodyRegion.length; z++) {
var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId;
var bodyRegionSkinTone = SelectedLayerData.BodyRegion[z].Image._SkintTone;
if ($rootScope.viewOrientationId == 3 && bodyRegionId == 1) {
console.log('$rootScope.voId: ' + $rootScope.voId);
if (bodyRegion == bodyRegionId && bodyRegionSkinTone == 'W') {
//TODO
//return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/W/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + 1 + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/W/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
}
}
else {
if (bodyRegion == bodyRegionId && bodyRegionSkinTone == $scope.skinTone) {
//TODO
//return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + $scope.skinTone + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" +1 + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + $scope.skinTone + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
}
}
}
}
}
else {
// debugger;
//below 4 bodyviews have only single body region
if (($rootScope.voId == '9') || ($rootScope.voId == '11') || ($rootScope.voId == '10') || ($rootScope.voId == '12')) {
var bodyRegion = SelectedLayerData.BodyRegion._BodyRegionId;
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion.Image._ImageName;
}
else // it is for other body view which have multiple body regions and layer no > 0
{
// debugger;
if (SelectedLayerData.BodyRegion.length > 0) {
for (var z = 0; z <= SelectedLayerData.BodyRegion.length; z++) {
var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId;
if (bodyRegion == bodyRegionId) {
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
}
}
}
}
}
}
$scope.GetBackgroundImgSource = function (bodyRegionId) {
var selectedGender;
if (localStorage.getItem("genderId") == "Male") {
selectedGender = 'M';
}
else {
selectedGender = 'F';
}
//filter data based on bodyRegion
$scope.bagartBodyRegionDetails = new jinqJs()
.from($scope.bagartDetails)
.where('_BodyRegionId == ' + bodyRegionId)
.select();
if ($scope.bagartBodyRegionDetails != null || $scope.bagartBodyRegionDetails != undefined) {
//filter bodyRegion data basd on skintone
$scope.skinTone = $rootScope.globalSetting.ethnicity
$scope.bagartDetailsOnSktn = new jinqJs()
.from($scope.bagartBodyRegionDetails)
.where('_Skintone == ' + $scope.skinTone)
.select();
if ($scope.bagartDetailsOnSktn != null || $scope.bagartDetailsOnSktn != undefined) {
//only brid=2 is having different male,female image, other bodr region have common images for male, female
if (bodyRegionId == 2) {
for (var z = 0; z <= $scope.bagartDetailsOnSktn.length; z++) {
var gender = $scope.bagartDetailsOnSktn[z]._Gender;
if (gender == selectedGender) {
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/0/" + bodyRegionId + "/" + $scope.skinTone + "/" + $scope.bagartDetailsOnSktn[z]._ImageId;
}
}
}
else {
return "content/images/DA/" + $scope.zoomInOut + "/body-views/" + $rootScope.voId + "/layers/0/" + bodyRegionId + "/" + $scope.skinTone + "/" + $scope.bagartDetailsOnSktn[0]._ImageId;
}
}
}
}
$scope.DrawMirroredImage = function (h, w, x, y, src, bodyRegionId, isMaskImage) {
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
var FlipedImgCanvas = document.createElement('canvas');
FlipedImgCanvas.height = h;
FlipedImgCanvas.width = w;
FlipedImgCanvas.setAttribute("data-IsMirrored", "Y")
FlipedImgCanvas.style.position = "absolute";
FlipedImgCanvas.style.left = x + "px";
FlipedImgCanvas.style.top = y + "px";
if (isMaskImage == 'Y') {
FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR_mci';
FlipedImgCanvas.style.visibility = 'hidden';
}
else {
FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR';
if ($rootScope.isExtract == true) {
FlipedImgCanvas.style.visibility = 'visible'
}
else {
if ($rootScope.isHighLight == true && $rootScope.isZoomed == false) {
FlipedImgCanvas.style.visibility = 'hidden';
}
}
}
FlipedImgCanvas.addEventListener('click', function (evt) {
//to get correct data on multihighlight highlight
if ($scope.isLayerChange == true) {
$scope.isLayerChange = false;
}
if (evt.ctrlKey) {
$rootScope.multiAnnotationIsON = true;
}
else {
if (($rootScope.previousHighlightList != null || $rootScope.previousHighlightList != undefined) && ($rootScope.previousHighlightList.length > 0)) {
$rootScope.previousHighlightList = [];
}
$rootScope.multiAnnotationIsON = false;
}
//get mouse coordinate of mirror image click
var mousePos = $scope.getMousePos(evt);
var context = FlipedImgCanvas.getContext("2d");
var canvasId = context.canvas.getAttribute('id');
var mirrorCanvasX = context.canvas.offsetLeft;
var mirrorCanvasWidth = context.canvas.clientWidth;
var maskCanvasId = (canvasId.replace('_MR', '')) + '_mci';
var maskCanvas = document.getElementById(maskCanvasId);
var maskCanvasContext = maskCanvas.getContext("2d");
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135);
var mirrorXOnNormalImage = parseInt(maskCanvasContext.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage);
var actulalX = mirrorXOnNormalImage
var actualY = mousePos.y + verticalScrollPosition
var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - parseInt(maskCanvasContext.canvas.offsetLeft)), Math.round(actualY - y), 1, 1);
pixelData.data[0] = pixelData.data[0] - 9;
pixelData.data[1] = pixelData.data[1] - 9;
pixelData.data[2] = pixelData.data[2] - 9
var Red;
var Green;
var Blue;
var zero = "0";
if ((pixelData.data[0]).toString().length != 2) {
Red = zero.concat((pixelData.data[0]).toString())
}
else {
Red = (pixelData.data[0]).toString()
}
if ((pixelData.data[1]).toString().length != 2) {
Green = zero.concat((pixelData.data[1]).toString())
}
else {
Green = (pixelData.data[1]).toString()
}
if ((pixelData.data[2]).toString().length != 2) {
Blue = zero.concat((pixelData.data[2]).toString())
}
else {
Blue = (pixelData.data[2]).toString()
}
var RGBColor = (Red + Green + Blue);
$rootScope.previousHighlightList.push(RGBColor);
if ($rootScope.isHighLight) {
if ($scope.machedIcolorInBodyRegion != null || $scope.machedIcolorInBodyRegion != undefined) {
if ($scope.machedIcolorInBodyRegion.length > 0) {
if ($rootScope.multiAnnotationIsON == false) {
for (var i = 0; i < $scope.machedIcolorInBodyRegion.length; i++) {
var bodyRegionId = $scope.machedIcolorInBodyRegion[i];
var grayCanvasID = 'imageCanvas' + bodyRegionId;
var grayCanvas = document.getElementById(grayCanvasID);
var grayCanvasContext = grayCanvas.getContext("2d");
if ($rootScope.grayImageDataList[bodyRegionId - 1] != null || $rootScope.grayImageDataList[bodyRegionId - 1] != undefined) {
var grayImageData = $rootScope.grayImageDataList[bodyRegionId - 1];
grayCanvasContext.putImageData(grayImageData, 0, 0);
}
// for mirrored canvas
if (bodyRegionId == 4 || bodyRegionId == 5 || bodyRegionId == 6) {
var grayCanvasID = 'imageCanvas' + bodyRegionId + '_MR';
var grayCanvasMR = document.getElementById(grayCanvasID);
var grayCanvasContextMR = grayCanvasMR.getContext("2d");
if ($rootScope.grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) {
var grayImageDataMR = $rootScope.grayImageMRDataList[bodyRegionId];
grayCanvasContextMR.putImageData(grayImageDataMR, 0, 0);
}
}
}
}
}
}
// $rootScope.previousHighlightList.push(RGBColor);
$scope.highLightBodyBasedOnIcolor(RGBColor);
}
//if ($rootScope.isNormalMode == true) {
// $rootScope.previousHighlightList.push(RGBColor);
//}
//extarct clicked body part is extarct button is already enabled.
// debugger;
if ($rootScope.isExtract == true) {
$scope.enableExtract(false);
}
var annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
if ($('#speechBubbleTrns').length > 0)
$('#speechBubbleTrns').remove();
if ($rootScope.multiAnnotationIsON == true) {
// $scope.createDynamicSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top);
$scope.MultiLanguageAnnationArray = [];
$scope.MultiLanguageAnnationArray.push(annotationText);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
else {
if ($('#dot').length > 0) {
$('#dot').remove();
}
if ($('#sppeachBubble').length > 0) {
$('#sppeachBubble').remove();
// $scope.createDynamicSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top);
$scope.MultiLanguageAnnationArray = [];
$scope.MultiLanguageAnnationArray.push(annotationText);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
else {
// $scope.createDynamicSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top);
$scope.MultiLanguageAnnationArray = [];
$scope.MultiLanguageAnnationArray.push(annotationText);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
}
}, false);
FlipedImgCanvas.addEventListener('mousedown', function (evt) {
//alert('mousedown')
}, false);
FlipedImgCanvas.addEventListener('mouseup', function (evt) {
//alert('mouseup')
}, false);
var context = FlipedImgCanvas.getContext("2d");
var PI = Math.PI;
var PI2 = PI * 2;
var cw, ch, imgW, imgH, mouseX, mouseY;
var scaleFactor = 1.00;
//$scaler = $("#scaler");
//$scaler.val(scaleFactor);
//$scaler.hide();
var img = new Image();
img.onload = start;
// img.src = "~/../content/images/" + src;;
img.src = src;
function start() {
context.save();
context.translate(w, 0);
context.scale(-1, 1);
context.drawImage(img, 0, 0);
context.restore();
if (isMaskImage == 'N') {
$scope.ColoredImageSRC.push(
{
"bodyRegionId": bodyRegionId, "SRC": src,
"Height": h,
"Width": w,
"x": x,
"y": y,
"haveMirror": 'true'
}
);
//-NIKI-for solving extarct issue 8286
var imageCanvas = document.getElementById('imageCanvas' + bodyRegionId + '_MR');
if (imageCanvas != null || imageCanvas != undefined) {
var width = imageCanvas.width;
var ht = imageCanvas.height;
var coloredCanvasContext = imageCanvas.getContext("2d");
var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht);
var coloredImageDataVar = coloredImageData;
$rootScope.coloredImageMRCanvasList[parseInt(bodyRegionId)] = coloredImageDataVar;
}
//
// console.log('$rootScope.isListManagerSelected= ' + $rootScope.isListManagerSelected + ' length= ' + $scope.ColoredImageSRC.length)
if (($scope.ColoredImageSRC != null || $scope.ColoredImageSRC != undefined)) {
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) {
$scope.isEligibleForHighlight = true;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) {
$scope.isEligibleForHighlight = true;
}
else if (($rootScope.viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) {
$scope.isEligibleForHighlight = true;
}
else if (($rootScope.viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) {
$scope.isEligibleForHighlight = true;
}
else {
$scope.isEligibleForHighlight = false;
}
if ($scope.isEligibleForHighlight == true) {
if ($scope.isExtract == true) {
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
$scope.highLightBody();
}
else if ($rootScope.isHighLight == true || ($rootScope.isListManagerSelected == true) || (($rootScope.isGenderChnage == true) && ($rootScope.isHighLight == true))
|| (($rootScope.isViewChange == true) && ($rootScope.isHighLight == true)) || $rootScope.isHighlightBodyByBodySystem == true) {
console.log('1. $rootScope.isHighLight= ' + $rootScope.isHighLight)
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
//$timeout(function () {
console.log('inside start of flipped. $scope.ColoredImageSRC.length= ' + $scope.ColoredImageSRC.length)
$rootScope.isHighLight = true;
console.log('in FlipedImgCanvas just before highLightBody call');
$scope.highLightBody();
console.log('just after highLightBody call');
//}, 500);
}
}
else {
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
}
}
// console.log('ColoredImageSRC. pushed and length: ' + $scope.ColoredImageSRC.length);
}
if (FlipedImgCanvas.id.match('_mci')) {
var maskImgData = context.getImageData(0, 0, w, h);
$rootScope.MaskCanvasData.push(
{
"bodyRegionId": bodyRegionId,
"canvasId": FlipedImgCanvas.id,
"maskData": maskImgData,
}
);
}
};
if (document.getElementById('canvasDiv') != null)
document.getElementById('canvasDiv').appendChild(FlipedImgCanvas);
}
$scope.DrawImage = function (h, w, x, y, src, bodyRegionId, isMaskImage) {
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
var imgCanvas = document.createElement('canvas');
imgCanvas.height = h;
imgCanvas.width = w;
imgCanvas.setAttribute("data-IsMirrored", "N")
imgCanvas.style.position = "absolute";
imgCanvas.style.left = x + "px";
imgCanvas.style.top = y + "px";
if (isMaskImage == 'Y') {
imgCanvas.style.visibility = 'hidden'
imgCanvas.id = 'imageCanvas' + bodyRegionId + '_mci';
}
else {
imgCanvas.id = 'imageCanvas' + bodyRegionId;
if (bodyRegionId == 3) {
//set z index of hip canavs to fix the issue caused by overlapping of arm canavs on hip canavs.
imgCanvas.style.zIndex = "100";
}
if (bodyRegionId.match('modestyImg')) {
//added class to further access this canavs to show and hide leaf as per modesty seting
imgCanvas.className = 'modestyImg'
imgCanvas.style.visibility = 'hidden'
//set z index to make leaf canvas on top of hip canavs
imgCanvas.style.zIndex = "200";
}
if (($rootScope.voId == 11 || $rootScope.voId == 9) && bodyRegionId == 6) {
imgCanvas.style.zIndex = "500";
}
if ($rootScope.isExtract == true) {
imgCanvas.style.visibility = 'visible'
}
else {
if ($rootScope.isHighLight == true && $rootScope.isZoomed == false) {
imgCanvas.style.visibility = 'hidden';
}
}
}
imgCanvas.addEventListener('click', function (evt) {
if ($scope.isLayerChange == true) {
$scope.isLayerChange = false;
}
if (evt.ctrlKey) {
$rootScope.multiAnnotationIsON = true;
}
else {
if (($rootScope.previousHighlightList != null || $rootScope.previousHighlightList != undefined) && ($rootScope.previousHighlightList.length > 0)) {
$rootScope.previousHighlightList = [];
}
$rootScope.multiAnnotationIsON = false;
}
var annotationText;
var context = imgCanvas.getContext("2d");
var canvasId = context.canvas.getAttribute('id');
var maskCanvasId;
//for leaf canvas
if (canvasId.match('modestyImg')) {
maskCanvasId = canvasId;
}
else {
maskCanvasId = canvasId + '_mci';
}
var maskCanvas = document.getElementById(maskCanvasId);
var maskCanvasContext = maskCanvas.getContext("2d");
var mousePos = $scope.getMousePos(evt);
// alert(mousePos.x + ',' + mousePos.y);
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
//We substracted 135, as the difference between flex and html coordinates for same organ is 135
var actulalX = mousePos.x + horizontlScrollPosition;
var actualY = mousePos.y + verticalScrollPosition;
var RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y);
//Modesty ON
if (maskCanvasId.match('modestyImg') && RGBColor != '000000') {
RGBColor = DA[0].figLeafTermId;
annotationText = $scope.GetAnnotationBasedOnActualTermNo(RGBColor);
}
//Modesty On but clicked somewhre else, we did modesty check because the modesty image covers whole body region so if user will click to
//see the annotation apart from leaf then the actual click will be on modesty canvas, but for annotation er
//
else if (maskCanvasId.match('modestyImg') && RGBColor == '000000') {
//if ($rootScope.voId == 11) {
// maskCanvasId = 'imageCanvas6_mci';
// x = $('#imageCanvas6_mci').left;
// y = $('#imageCanvas6_mci').top;
//}
//else {
bodyRegionId = maskCanvasId.slice(-1);
maskCanvasId = 'imageCanvas' + bodyRegionId + '_mci';
// }
var maskCanvas = document.getElementById(maskCanvasId);
var maskCanvasContext = maskCanvas.getContext("2d");
RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y);
annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
}
else {
RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y);
annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
}
$rootScope.previousHighlightList.push(RGBColor);
if ($rootScope.isHighLight == true) {
if ($scope.machedIcolorInBodyRegion != null || $scope.machedIcolorInBodyRegion != undefined) {
if ($scope.machedIcolorInBodyRegion.length > 0) {
if ($rootScope.multiAnnotationIsON == false) {
for (var i = 0; i < $scope.machedIcolorInBodyRegion.length; i++) {
var bodyRegionId = $scope.machedIcolorInBodyRegion[i];
var grayCanvasID = 'imageCanvas' + bodyRegionId;
var grayCanvas = document.getElementById(grayCanvasID);
var grayCanvasContext = grayCanvas.getContext("2d");
if ($rootScope.grayImageDataList[bodyRegionId - 1] != null || $rootScope.grayImageDataList[bodyRegionId - 1] != undefined) {
var grayImageData = $rootScope.grayImageDataList[bodyRegionId - 1];
grayCanvasContext.putImageData(grayImageData, 0, 0);
}
// for unhighlight the mirrored body region
if (bodyRegionId == 4 || bodyRegionId == 5 || bodyRegionId == 6) {
var grayCanvasID = 'imageCanvas' + bodyRegionId + '_MR';
var grayCanvasMR = document.getElementById(grayCanvasID);
var grayCanvasContextMR = grayCanvasMR.getContext("2d");
if ($rootScope.grayImageMRDataList[bodyRegionId] != null || $rootScope.grayImageMRDataList[bodyRegionId] != undefined) {
var grayImageDataMR = $rootScope.grayImageMRDataList[bodyRegionId];
grayCanvasContextMR.putImageData(grayImageDataMR, 0, 0);
}
}
}
}
}
}
// $rootScope.previousHighlightList.push(RGBColor);
if (maskCanvasId.match('modestyImg') && RGBColor != '000000') { }
else
{
$scope.highLightBodyBasedOnIcolor(RGBColor);
}
}
//if ($rootScope.isNormalMode == true) {
// $rootScope.previousHighlightList.push(RGBColor);
//}
// debugger;
//extarct clisked body part is extarct button is already enabled.
if ($rootScope.isExtract == true) {
$scope.enableExtract(false);
}
if ($('#speechBubbleTrns').length > 0)
$('#speechBubbleTrns').remove();
if ($rootScope.multiAnnotationIsON == true) {
// $scope.createDynamicSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top);
$scope.MultiLanguageAnnationArray = [];
$scope.MultiLanguageAnnationArray.push(annotationText);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
else {
$scope.MultiLanguageAnnationArray = [];
console.log('1. annotationText: ' + annotationText);
if ($('#dot').length > 0) {
$('#dot').remove();
if ($('#sppeachBubble').length > 0) {
$('#sppeachBubble').remove();
}
// $scope.createDynamicSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top);
$scope.MultiLanguageAnnationArray.push(annotationText);
console.log('2. annotationText: ' + annotationText + ' , length: ' + $scope.MultiLanguageAnnationArray.length);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
else {
$scope.MultiLanguageAnnationArray = [];
$scope.MultiLanguageAnnationArray.push(annotationText);
console.log('3. annotationText: ' + annotationText + ' , length: ' + $scope.MultiLanguageAnnationArray.length);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true);
}
}
}, false);
var PI = Math.PI;
var PI2 = PI * 2;
var cw, ch, imgW, imgH, mouseX, mouseY;
var scaleFactor = 1.00;
var context = imgCanvas.getContext('2d');
var img = new Image();
img.onload = start;
img.src = src;
function start() {
context.drawImage(img, 0, 0);
if (isMaskImage == 'N') {
if (bodyRegionId == 'modestyImg3' || bodyRegionId == 'modestyImg2') {
$scope.modestyImageInfo.push(
{
"bodyRegionId": bodyRegionId, "SRC": src,
"Height": h,
"Width": w,
"x": x,
"y": y,
"haveMirror": 'false'
}
);
}
else {
$scope.ColoredImageSRC.push(
{
"bodyRegionId": bodyRegionId, "SRC": src,
"Height": h,
"Width": w,
"x": x,
"y": y,
"haveMirror": 'false'
}
);
//-NIKI-for solving extarct issue 8286
var imageCanvas = document.getElementById('imageCanvas' + bodyRegionId);
if (imageCanvas != null || imageCanvas != undefined) {
var width = imageCanvas.width;
var ht = imageCanvas.height;
var coloredCanvasContext = imageCanvas.getContext("2d");
var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht);
var coloredImageDataVar = coloredImageData;
$rootScope.coloredImageCanvasList[parseInt(bodyRegionId - 1)] = coloredImageDataVar;
}
//
if (($scope.ColoredImageSRC != null || $scope.ColoredImageSRC != undefined)) {
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) {
$scope.isEligibleForHighlight = true;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) {
$scope.isEligibleForHighlight = true;
}
else if (($rootScope.viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) {
$scope.isEligibleForHighlight = true;
}
else if (($rootScope.viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) {
$scope.isEligibleForHighlight = true;
}
else {
$scope.isEligibleForHighlight = false;
}
if ($scope.isEligibleForHighlight == true) {
if ($scope.isExtract == true) {
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
$scope.highLightBody();
}
else if ($rootScope.isHighLight == true || ($rootScope.isListManagerSelected == true) || (($rootScope.isGenderChnage == true) && ($rootScope.isHighLight == true))
|| (($rootScope.isViewChange == true) && ($rootScope.isHighLight == true)) || $scope.isExtract == true || $rootScope.isHighlightBodyByBodySystem == true) {
console.log('2. $rootScope.isHighLight= ' + $rootScope.isHighLight)
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
console.log('inside start of non flipped. $scope.ColoredImageSRC.length= ' + $scope.ColoredImageSRC.length)
$rootScope.isHighLight = true;
console.log('just before highLightBody call');
$scope.highLightBody();
console.log('just after highLightBody call');
}
else {
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
}
}
else {
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
}
}
console.log('ColoredImageSRC. pushed and length: ' + $scope.ColoredImageSRC.length);
}
}
if (imgCanvas.id.match('_mci')) {
var maskImgData = context.getImageData(0, 0, w, h);
$rootScope.MaskCanvasData.push(
{
"bodyRegionId": bodyRegionId,
"canvasId": imgCanvas.id,
"maskData": maskImgData,
}
);
}
};
if (document.getElementById('canvasDiv') != null)
document.getElementById('canvasDiv').appendChild(imgCanvas);
}
$scope.highLightBodyBasedOnIcolor = function (RGBColor) {
//2. Find Actul Term No Based on Icolor.
var ActualTermNo = $scope.getActualTermNumber(RGBColor);
if (ActualTermNo != null) {
//3. Find Term No List Based on ActualTermNo
var TermList = $scope.getTermNumberList(ActualTermNo);
if (TermList != null) {
//4.
$scope.HighlightBodyByTermList(TermList);
}
}
}
$scope.HighlightBodyOnExtract = function () {
console.log(' insode HighlightBodyOnExtract. $rootScope.MaskCanvasData length= ' + $rootScope.MaskCanvasData.length + ', $rootScope.previousHighlightList.length= ' + $rootScope.previousHighlightList.length)
$("#btnExtract").removeClass("btn-black");
$("#btnExtract").addClass("btn-primary");
if ($("#btnNormalMode").hasClass("btn-primary")) {
$("#btnNormalMode").removeClass("btn-primary");
$("#btnNormalMode").addClass("btn-black");
}
if ($("#btnHighLight").hasClass("btn-primary")) {
$("#btnHighLight").removeClass("btn-primary");
$("#btnHighLight").addClass("btn-black");
}
//terminate previous running workers to create space for new workers
$scope.layerNumber = $('#txtlayerNumber').val();
$scope.terminateCurrentlyRunningWPs();
var multiTermList = [];
var CallBackBodyRegion = [];
var selectedAnnotation;
if (($rootScope.previousHighlightList != null || $rootScope.previousHighlightList != undefined) && ($rootScope.previousHighlightList.length > 0) && $rootScope.isListManagerSelected) {
multiTermList = $scope.AllTerms;
angular.forEach($rootScope.previousHighlightList, function (value, key) {
var ActualTermNo = $scope.getActualTermNumber(value);
selectedAnnotation = ActualTermNo;
if (ActualTermNo != null) {
var TermList = $scope.getTermNumberList(ActualTermNo);
if (TermList != null) {
for (var i = 0; i < TermList.length; i++) {
multiTermList.push(TermList[i]);
}
}
}
// to do
});
}
if ($rootScope.isListManagerSelected) {
multiTermList = $scope.AllTerms;
selectedAnnotation = $rootScope.actualTermNumber;
}
else if (($rootScope.previousHighlightList != null || $rootScope.previousHighlightList != undefined) && ($rootScope.previousHighlightList.length > 0)) {
angular.forEach($rootScope.previousHighlightList, function (value, key) {
var ActualTermNo = $scope.getActualTermNumber(value);
selectedAnnotation = ActualTermNo;
if (ActualTermNo != null) {
var TermList = $scope.getTermNumberList(ActualTermNo);
if (TermList != null) {
for (var i = 0; i < TermList.length; i++) {
multiTermList.push(TermList[i]);
}
}
}
// to do
});
}
//get term list to get term coordinates
$scope.TermList = $scope.getTermNumberList(selectedAnnotation);
$scope.termCoordinate = $scope.getTermCoordinate(selectedAnnotation);
$timeout(function () {
var loopLength = 0;
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) {
loopLength = 9;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) {
loopLength = 5;
}
else if (($rootScope.viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) {
loopLength = 4;
}
else if (($rootScope.viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) {
loopLength = 1;
}
if (loopLength !== 0) {
for (var x = 0; x < loopLength; x++) {
if ($rootScope.MaskCanvasData[x] != null || $rootScope.MaskCanvasData[x] != undefined) {
var bodyRegionId = $rootScope.MaskCanvasData[x].bodyRegionId;
var canvasId = $rootScope.MaskCanvasData[x].canvasId;
var maskData = null;
maskData = $rootScope.MaskCanvasData[x].maskData;
var coloredImageDataVar = null;
var grayImageDataVar = null;
var white = null;
if (canvasId.match('_MR')) {
if ($rootScope.coloredImageMRCanvasList[bodyRegionId] != null || $rootScope.coloredImageMRCanvasList[bodyRegionId] != undefined) {
coloredImageDataVar = $rootScope.coloredImageMRCanvasList[bodyRegionId];
}
if ($rootScope.whiteImageMRDataList[bodyRegionId] != null || $rootScope.whiteImageMRDataList[bodyRegionId] != undefined) {
white = $rootScope.whiteImageMRDataList[bodyRegionId];
}
}
else {
if ($rootScope.coloredImageCanvasList[bodyRegionId - 1] != null || $rootScope.coloredImageCanvasList[bodyRegionId - 1] != undefined) {
coloredImageDataVar = $rootScope.coloredImageCanvasList[bodyRegionId - 1];
}
if ($rootScope.whiteImageDataList[bodyRegionId - 1] != null || $rootScope.whiteImageDataList[bodyRegionId - 1] != undefined) {
white = $rootScope.whiteImageDataList[bodyRegionId - 1];
}
}
var worker = new Worker('extract-wp.js');
//push workers in array to further used the refernece to delete the workers
$scope.runningWorkers.push({ 'workerName': worker })
console.log('for BRID = ' + bodyRegionId + ', coloredImageDataVar: ' + coloredImageDataVar + ', maskData= ' + maskData + ', white= ' + white)
if (coloredImageDataVar != null && maskData != null && white != null) {
worker.postMessage({
'termList': multiTermList,
'maskCanvasData': maskData,
'coloredImageData': coloredImageDataVar,
'grayImageData': white,
'bodyRegionId': bodyRegionId,
'canvasId': canvasId
});
}
//}
worker.onmessage = function (e) {
console.log('callback in extract for e.data.bodyRegionId: ' + e.data.bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"));
var updatedData = e.data.value;
var bodyRegionId = e.data.bodyRegionId;
var canvasId = (e.data.canvasId).replace('_mci', '');
//for (var i = 1; i <= updatedData.length; i++) {
var grayCanvasID = canvasId;
// var grayCanvasID = 'imageCanvas' + bodyRegionId;
var grayCanvas = document.getElementById(grayCanvasID);
var grayCanvasContext = grayCanvas.getContext("2d");
grayCanvasContext.putImageData(updatedData, 0, 0);
//to resolve lateral arm black issue in highlight mode
if ($rootScope.viewOrientationId == 5 && (bodyRegionId == 6 || bodyRegionId == 4)) {
var canavsWidth = parseInt(grayCanvas.width);
var canavsHeight = parseInt(grayCanvas.height);
console.log('canavsWidth= ' + canavsWidth + ', canavsHeight= ' + canavsHeight)
var imgData = grayCanvasContext.getImageData(0, 0, canavsWidth, canavsHeight);
var data = imgData.data;
var c = 0;
for (var i = 0; i < data.length; i += 4) {
if (data[i] == data[i + 1] && data[i + 1] == data[i + 2] && data[i + 2] === 0) {
data[i + 3] = 0;
}
}
grayCanvasContext.putImageData(imgData, 0, 0);
}
CallBackBodyRegion.push(bodyRegionId);
$scope.doAligneCanvasWithTerm = false;
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && (CallBackBodyRegion.length == 9)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && (CallBackBodyRegion.length == 5)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '5')) && (CallBackBodyRegion.length == 1)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '6')) && (CallBackBodyRegion.length == 1)) {
$scope.doAligneCanvasWithTerm = true;
}
if ($rootScope.multiAnnotationIsON == true) {
if (canvasId.match('_MR'))
$rootScope.updatedWhiteImageMRDataList[bodyRegionId] = updatedData;
else
$rootScope.updatedWhiteImageDataList[bodyRegionId - 1] = updatedData;
}
else {
if (canvasId.match('_MR'))
$rootScope.whiteImageMRDataList[bodyRegionId] = e.data.value;
else {
if ($rootScope.whiteImageDataList[bodyRegionId - 1] != null || $rootScope.whiteImageDataList[bodyRegionId - 1] != undefined)
$rootScope.whiteImageDataList[bodyRegionId - 1] = e.data.value;
}
}
//if ((CallBackBodyRegion != null || CallBackBodyRegion[i] != undefined) && (CallBackBodyRegion.length > 0)) {
// if (CallBackBodyRegion.length == 6) {
// $rootScope.isLoading = false;
// $('#spinner').css('visibility', 'hidden');
// }
//}
if ($scope.doAligneCanvasWithTerm == true) {
$scope.aligneCanvasWithTerm()
}
// $timeout(function () { $scope.DisableProgressBar() }, 1000);
};
worker.onerror = function (e) {
alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message);
};
}
}
}
}, 500)
}
$scope.HighlightBodyByTermList = function (TermList) {
$scope.layerNumber = $('#txtlayerNumber').val();
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
if ($rootScope.isHighLight == true) {
false;
}
console.log('HighlightBodyByTermList is called');
// $scope.highlightedBR = null;
$scope.highlightedBR = [];
$scope.terminateCurrentlyRunningWPs();
$timeout(function () {
var loopLength = 0;
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) {
loopLength = 9;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) {
loopLength = 5;
}
else if (($rootScope.viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) {
loopLength = 4;
}
else if (($rootScope.viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) {
loopLength = 1;
}
for (var x = 0; x < loopLength; x++) {
if ($rootScope.MaskCanvasData[x] != null || $rootScope.MaskCanvasData[x] != undefined) {
var bodyRegionId = $rootScope.MaskCanvasData[x].bodyRegionId;
var canvasId = $rootScope.MaskCanvasData[x].canvasId;
var maskData = null;
maskData = $rootScope.MaskCanvasData[x].maskData;
var coloredImageDataVar = null;
var grayImageDataVar = null;
var white;
if (canvasId.match('_MR')) {
if ($rootScope.coloredImageMRCanvasList[bodyRegionId] != null || $rootScope.coloredImageMRCanvasList[bodyRegionId] != undefined) {
coloredImageDataVar = $rootScope.coloredImageMRCanvasList[bodyRegionId];
}
if ($rootScope.multiAnnotationIsON == true) {
//on layer change we need the fresh data not the updated one
if ($scope.isLayerChange == true) {
if ($rootScope.grayImageMRDataList[bodyRegionId] != null || $rootScope.grayImageMRDataList[bodyRegionId] != undefined) {
grayImageDataVar = $rootScope.grayImageMRDataList[bodyRegionId];
}
}
else {
if ($rootScope.updatedGrayDataList[bodyRegionId - 1] == null || $rootScope.updatedGrayDataList[bodyRegionId - 1] == undefined) {
if ($rootScope.grayImageMRDataList[bodyRegionId] != null || $rootScope.grayImageMRDataList[bodyRegionId] != undefined) {
grayImageDataVar = $rootScope.grayImageMRDataList[bodyRegionId];
}
}
else {
if ($rootScope.updatedGrayMRDataList[bodyRegionId] != null || $rootScope.updatedGrayMRDataList[bodyRegionId] != undefined) {
grayImageDataVar = $rootScope.updatedGrayMRDataList[bodyRegionId]
}
}
}
}
else {
if ($rootScope.grayImageMRDataList[bodyRegionId] != null || $rootScope.grayImageMRDataList[bodyRegionId] != undefined) {
grayImageDataVar = $rootScope.grayImageMRDataList[bodyRegionId];
}
}
}
else {
if ($rootScope.coloredImageCanvasList[bodyRegionId - 1] != null || $rootScope.coloredImageCanvasList[bodyRegionId - 1] != undefined) {
coloredImageDataVar = $rootScope.coloredImageCanvasList[bodyRegionId - 1];
}
if ($rootScope.multiAnnotationIsON == true) {
//on layer change we need the fresh data not the updated one
if ($scope.isLayerChange == true) {
if ($rootScope.grayImageDataList[bodyRegionId - 1] != null || $rootScope.grayImageDataList[bodyRegionId - 1] != undefined) {
grayImageDataVar = $rootScope.grayImageDataList[bodyRegionId - 1];
}
} else {
// this code is for the case where user first click on normal mode then extract then again highlight then we need to call highlight body in gray mode
//and then highlight the previously selected body regions at the time of normal mode.
if ($rootScope.updatedGrayDataList[bodyRegionId - 1] == null || $rootScope.updatedGrayDataList[bodyRegionId - 1] == undefined) {
if ($rootScope.grayImageDataList[bodyRegionId - 1] != null || $rootScope.grayImageDataList[bodyRegionId - 1] != undefined) {
grayImageDataVar = $rootScope.grayImageDataList[bodyRegionId - 1];
}
}
else {
if ($rootScope.updatedGrayDataList[bodyRegionId - 1] != null || $rootScope.updatedGrayDataList[bodyRegionId - 1] != undefined) {
// for normal case means without interdepency button case.
grayImageDataVar = $rootScope.updatedGrayDataList[bodyRegionId - 1];
}
}
}
}
else
if ($rootScope.grayImageDataList[bodyRegionId - 1] != null || $rootScope.grayImageDataList[bodyRegionId - 1] != undefined) {
grayImageDataVar = $rootScope.grayImageDataList[bodyRegionId - 1];
}
}
var worker = new Worker('term-number-wp.js');
//push workers in array to further used the refernece to delete the workers
$scope.runningWorkers.push({ 'workerName': worker })
// console.log('for bodyRegionId = ' + bodyRegionId+ ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"))
console.log('before worker call BRID: ' + bodyRegionId)
if (grayImageDataVar != null && coloredImageDataVar != null && maskData != null) {
worker.postMessage({
'termList': TermList,
'maskCanvasData': maskData,
'coloredImageData': coloredImageDataVar,
'grayImageData': grayImageDataVar,
'bodyRegionId': bodyRegionId,
'canvasId': canvasId
});
}
worker.onmessage = function (e) {
console.log('callback for e.data.bodyRegionId: ' + e.data.bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"));
var updatedData = e.data.value;
var bodyRegionId = e.data.bodyRegionId;
var canvasId = (e.data.canvasId).replace('_mci', '');
//for (var i = 1; i <= updatedData.length; i++) {
var grayCanvasID = canvasId;
//to do
var grayCanvas = document.getElementById(grayCanvasID);
if (grayCanvas != null) {
var grayCanvasContext = grayCanvas.getContext("2d");
//Niki remove previous data from canvas
var canvasHeight = grayCanvas.height + 'px';
var canvasWidth = grayCanvas.width + 'px';
//alert('height= ' + canvasHeight + ', width= ' + canvasWidth)
grayCanvasContext.clearRect(0, 0, canvasHeight, canvasWidth)
grayCanvasContext.putImageData(updatedData, 0, 0);
$scope.highlightedBR.push({ 'bodyRegionId': bodyRegionId });
}
if (canvasId.match('_MR')) {
$rootScope.updatedGrayMRDataList[bodyRegionId] = updatedData;
//alert('HighlightBodyByTermList, is mutiAnnotation on= ' + $rootScope.multiAnnotationIsON);
//$rootScope.updatedWhiteImageMRDataList[bodyRegionId] = updatedData;
}
else
$rootScope.updatedGrayDataList[bodyRegionId - 1] = updatedData;
//$scope.highlightedBR.push({ 'bodyRegionId': bodyRegionId });
console.log('$scope.highlightedBR.length= ' + $scope.highlightedBR.length)
if ($scope.highlightedBR != null || $scope.highlightedBR != undefined) {
if ((($rootScope.viewOrientationId == '1') || ($rootScope.viewOrientationId == '4')) && ($scope.highlightedBR.length == 9)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '2') || ($rootScope.viewOrientationId == '3')) && ($scope.highlightedBR.length == 5)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '5')) && ($scope.highlightedBR.length == 1)) {
$scope.doAligneCanvasWithTerm = true;
}
else if ((($rootScope.viewOrientationId == '6')) && ($scope.highlightedBR.length == 1)) {
$scope.doAligneCanvasWithTerm = true;
}
if ($scope.doAligneCanvasWithTerm == true) {
if ($rootScope.isListManagerSelected == true)
$scope.aligneCanvasWithTerm();
else if ($rootScope.isHighlightBodyByBodySystem == true || $rootScope.isListManagerSelected == true) {
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
}
else {
var canvasDiv = document.getElementById('canvasDiv');
$('#canvasDiv').scrollTop($scope.imageVerticalScrollPosition);
$('#canvasDiv').scrollLeft($scope.imageHorizontlScrollPosition);
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
//$('#canvasDiv').scrollLeft(newX);
//$('#canvasDiv').scrollTop(newY);
}
// $rootScope.isHighlightBodyByBodySystem = false;
}
}
//
};
worker.onerror = function (e) {
alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message);
};
}
}
}, 100)
}
$scope.createTermListByPreviousTermsAndHighlight = function () {
var multiTermList = [];
angular.forEach($rootScope.previousHighlightList, function (value, key) {
var ActualTermNo = $scope.getActualTermNumber(value);
if (ActualTermNo != null) {
var TermList = $scope.getTermNumberList(ActualTermNo);
if (TermList != null) {
for (var i = 0; i < TermList.length; i++) {
multiTermList.push(TermList[i]);
}
}
}
});
console.log('createTermListByPreviousTermsAndHighlight is called');
if ((multiTermList != undefined || multiTermList != null) && multiTermList.length > 0) {
$timeout(function () { $scope.HighlightBodyByTermList(multiTermList); }, 50);
}
}
$scope.GetRGBColor = function (maskCanvasContext, actulalX, actualY, x, y) {
var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1);
pixelData.data[0] = pixelData.data[0] - 9;
pixelData.data[1] = pixelData.data[1] - 9;
pixelData.data[2] = pixelData.data[2] - 9;
var Red;
var Green;
var Blue;
var zero = "0";
if ((pixelData.data[0]).toString().length != 2) {
Red = zero.concat((pixelData.data[0]).toString())
}
else {
Red = (pixelData.data[0]).toString()
}
if ((pixelData.data[1]).toString().length != 2) {
Green = zero.concat((pixelData.data[1]).toString())
}
else {
Green = (pixelData.data[1]).toString()
}
if ((pixelData.data[2]).toString().length != 2) {
Blue = zero.concat((pixelData.data[2]).toString())
}
else {
Blue = (pixelData.data[2]).toString()
}
var RGBColor = (Red + Green + Blue);
return RGBColor;
}
//get annotation from term number
$scope.GetAnnotationText = function (termNumber) {
var annotationText;
//0
var figLeafTermNo = 5868; // to do declare constant for this
if (parseInt(termNumber) != parseInt(figLeafTermNo)) {
$scope.TermNumber = termNumber;
if ($rootScope.TermNumberData != null || $rootScope.TermNumberData != undefined) {
$scope.matchedTermNoData = new jinqJs()
.from($rootScope.TermNumberData.TermData.Term)
.where('_TermNumber == ' + termNumber)
.select();
if ($scope.matchedTermNoData != null || $scope.matchedTermNoData != undefined) {
//1.
var actualTermNo = 0;
for (var z = 0; z < $scope.matchedTermNoData.length; z++) {
//send actual term no to get the term text.
actualTermNo = $scope.matchedTermNoData[0]._ActualTermNumber;
annotationText = $scope.GetAnnotationBasedOnActualTermNo(actualTermNo);
$rootScope.actualTermNumber = actualTermNo;
break;
};
//2.
}
else {
// send term no to vocab json data to get the text
}
}
}
return annotationText;
}
$scope.GetAnnotationBasedOnActualTermNo = function (actualTermNo) {
var Annotation;
$scope.ActualTermNo = actualTermNo;
if ($rootScope.VocabTermData != null || $rootScope.VocabTermData != undefined) {
$scope.matchedActualTermData = new jinqJs()
.from($rootScope.VocabTermData.VocabTerms.Term)
.where('_ActualTermNumber == ' + actualTermNo)
.select();
if ($scope.matchedActualTermData != null || $scope.matchedActualTermData != undefined) {
for (var z = 0; z <= $scope.matchedActualTermData.length; z++) {
//send actual term no to get the term text.
Annotation = $scope.matchedActualTermData[0]._TermText;
// alert("Annotation : " + Annotation);
break;
};
}
return Annotation;
}
else {
return null;
}
}
//layer change function
$scope.LayerChange = function () {
//if listanager is visisble then close it
// $rootScope.isListManagerSelected = false;
$rootScope.CloseListManager();
$scope.isLayerChange = true;
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
//1.
$scope.terminateCurrentlyRunningWPs();
var canvasDiv = document.getElementById('canvasDiv');
$scope.imageVerticalScrollPosition = canvasDiv.scrollTop;
$scope.imageHorizontlScrollPosition = canvasDiv.scrollLeft;
// $('#daLoaderLabel').css('visibility', 'visible');
if ($scope.isTransparencyActivated) {
//crete temp canavs to store the original data which will be used to chnange the transparency
if (document.getElementById('tempCanvas') != null) {
$('#tempCanvas').remove();
}
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
}
var tempCanvas = document.createElement('canvas');
tempCanvas.id = 'tempCanvas';
$scope.tempCanvas = tempCanvas.id;
tempCanvas.height = $scope.transparencyCanvasHeight;
tempCanvas.width = $scope.transparencyCanvasWidth;
tempCanvas.style.position = "absolute";
tempCanvas.style.left = 200 + 'px';
tempCanvas.style.backgroundColor = "transparent";
tempCanvas.style.visibility = 'hidden';
if (document.getElementById('canvasDiv') != null)
document.getElementById('canvasDiv').appendChild(tempCanvas);
var tCanvas = document.getElementById('transparencyCanvas');
var tCanvasContext = tCanvas.getContext('2d');
var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', ''));
var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', ''));
// var tCanvas = document.getElementById('transparencyCanvas');
if (tCanvas != null) {
clearTransCanvas();
}
var TransparencyBoxStartX = parseInt((tCanvas.style.left).replace('px', ''));
var TransparencyEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', '')));
var TransparencyBoxStartY = parseInt((tCanvas.style.top).replace('px', ''));
var TransparencyBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', ''));
var transparencyBoxBottom = parseInt(TransparencyBoxStartY) + parseInt(tCanvasHeight);
var transparencyBoxRight = parseInt(TransparencyBoxStartX) + parseInt(tCanvasWidth);
var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData;
$.each(BodyRegionDictionary, function (index, value) {
//debugger;
// alert(' $.each(BodyRegionDictionary1')
var bodyRegionRight = parseInt(value.X) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height);
// alert(' $.each(BodyRegionDictionary3. bodyRegionRight: ' + bodyRegionRight + ', bodyRegionBottom: ' + bodyRegionBottom)
if (TransparencyBoxStartX <= bodyRegionRight && value.X <= transparencyBoxRight && TransparencyBoxStartY <= bodyRegionBottom && value.Y <= transparencyBoxBottom) {
//var transNumber = parseInt(document.getElementById("txtTransparencyChange").value);
// debugger;
$scope.layerNumber = parseInt(txtlayerNumber.value);
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, TransparencyBoxStartX, transparencyBoxRight, TransparencyBoxStartY, transparencyBoxBottom, $scope, true, false);
}
})
}
else {
//1. Dated:13-07-2016 Issue #4965 : The layer number should not extend beyond its level through layer text box.
var dataLength = $rootScope.BodyLayerData.Layers.DataLayer.length;
if (parseInt($('#txtlayerNumber').val()) > (dataLength - 1)) {
$('#txtlayerNumber').val(dataLength - 1);
$scope.currentLayerNumber = parseInt(dataLength - 1);
$scope.layerNumber = parseInt(dataLength - 1);
}
else
$scope.currentLayerNumber = parseInt($('#txtlayerNumber').val());
//$scope.isMousUp();
//alert('$scope.currentLayerNumber');
$rootScope.isLoading = true;
$('#spinner').css('visibility', 'visible');
var canDiv = document.getElementById('canvasDiv');
var canDivChildCount = canDiv.childElementCount;
if (canDivChildCount > 0) {
canDiv.innerHTML = '';
}
//2.
$scope.CalculateImageCordinates($rootScope.viewOrientationId);
//3.
$('#canvasDiv').scrollLeft($scope.imageHorizontlScrollPosition)
$('#canvasDiv').scrollTop($scope.imageVerticalScrollPosition)
if ($rootScope.isHighlightBodyByBodySystem) {
$timeout(function () { $scope.DisableProgressBar() }, 20000);
}
else {
$timeout(function () { $scope.DisableProgressBar() }, 2000);
}
}
$('#layerChangeSlider').slider("option", "value", parseInt($rootScope.totalLayers) - parseInt($scope.layerNumber));
}
$rootScope.PreviouslayerNumbr = 0;
$scope.LayerChangeOnMouseUpDown = function (e) {
//'x' button is displaying inside the input box in IE browser.
if (e.currentTarget.id == "incrmntVal") {
//Dissectible Anatomy > Inappropriate Text in Layer Input box.
if ($("#txtlayerNumber").val() == '') {
var layerInputVal = 0;
var layerInputValInc = parseInt(layerInputVal);
$scope.layerNumber = parseInt(layerInputValInc);
$("#txtlayerNumber").val($scope.layerNumber);
// $rootScope.PreviouslayerNumbr = $scope.layerNumber;
}
else {
var layerInputVal = $("#txtlayerNumber").val();
if (layerInputVal != $rootScope.totalLayers) {
var layerInputValInc = parseInt(layerInputVal) + 1;
$scope.layerNumber = parseInt(layerInputValInc);
$("#txtlayerNumber").val($scope.layerNumber);
$rootScope.PreviouslayerNumbr = $scope.layerNumber;
}
}
}
else {
//Dissectible Anatomy > Inappropriate Text in Layer Input box.
if ($("#txtlayerNumber").val() == '') {
var layerInputVal = 0;
var layerInputValDec = parseInt(layerInputVal);
$scope.layerNumber = parseInt(layerInputValDec);
$("#txtlayerNumber").val($scope.layerNumber);
// $rootScope.PreviouslayerNumbr = $scope.layerNumber;
}
else {
var layerInputVal = $("#txtlayerNumber").val();
if (layerInputVal > 0) {
var layerInputValDec = parseInt(layerInputVal) - 1;
$scope.layerNumber = parseInt(layerInputValDec);
$("#txtlayerNumber").val($scope.layerNumber);
$rootScope.PreviouslayerNumbr = $scope.layerNumber;
}
}
}
$scope.LayerChange();
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
}
$scope.DisableProgressBar = function () {
// alert('Disabled wait cursor is called');
if ($rootScope.isHighLight) {
//alert('isHighlight: ' + $scope.isHighLight);
//$('#btnHighLight').removeClass('btn btn-black');
//$('#btnHighLight').addClass('btn-primary');
$("#btnHighLight").addClass("btn-primary");
$("#btnHighLight").removeClass("btn-black");
if (!$("#btnNormalMode").hasClass("btn-black")) {
$("#btnNormalMode").addClass("btn-black");
}
if (!$("#btnExtract").hasClass("btn-black")) {
$("#btnExtract").addClass("btn-black");
}
if ($("#btnExtract").hasClass("btn-primary")) {
$("#btnExtract").removeClass("btn-primary");
}
if ($("#btnNormalMode").hasClass("btn-primary")) {
$("#btnNormalMode").removeClass("btn-primary");
}
console.log('highLightBody call from DisableProgressBar')
// $scope.highLightBody();
}
$rootScope.isLoading = false;
$('#spinner').css('visibility', 'hidden');
//alert('Disabled wait cursor is done.See val :' + $rootScope.isLoading);
}
$scope.changeLayer = function () {
//console.log('changeLayer');
// alert('slide')
}
$('layerChangeSlider').slider().on('slideStop', function (ev) {
var newVal = $('.span2').data('slider').getValue();
if (originalVal != newVal) {
}
});
$scope.getMousePos = function (evt) {
return {
x: Math.round(evt.pageX - $('#canvasDiv').offset().left),
y: Math.round(evt.pageY - $('#canvasDiv').offset().top)
}
}
$scope.createDynamicSpeechBubble = function (event, x, y, isAnnotationForTBox) {
//debugger;
if (isAnnotationForTBox == true) {
//1. In transparency box we shows two annotation at a time, so we need to decide the max length of annotation in btween two annotation because based on that
// we decide the size of speech bubble
$scope.longestAnnotation = $scope.MultiLanguageAnnationArray.reduce(function (firstAnnotation, seconAnnotation) { return firstAnnotation.length > seconAnnotation.length ? firstAnnotation : seconAnnotation; });
//2.
if (event.ctrlKey) {
console.log('ctrl pressed');
$scope.multiAnnotationIsON = true;
//2.1 create unique speech bubbles
$scope.speechBubbleCounter = $scope.speechBubbleCounter + 1;
var id = "speechBubble" + $scope.speechBubbleCounter;
//2.2 Get clicked locationa and find if it is already clicked earlier too on same location
var pointClicked = parseInt(x) + parseInt(y);
var isClickedOnSamePoint = $("#canvasDiv").find("div[id=" + pointClicked + "]").length;
console.log('isClickedOnSamePoint: ' + isClickedOnSamePoint);
// if user has not clciked on smae point then create speech bubble otherwise not
if (isClickedOnSamePoint == 0) {
console.log('not clicked on same point')
$scope.createSpeechBubbleBasedOnAnnotationLength(pointClicked, x, y, id);
$scope.speechbubbleList.push({ xaxis: x, yaxis: y, ids: id });
}
$('.appendDragg').draggable({
drag: function (evt) {
$(this).prev('div').css("display", "none");
var bor_id = $(this).next('div').attr('id');
var sub_id1 = $(this).attr('id');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
if ($scope.speechbubbleList != null || $scope.speechbubbleList != undefined) {
for (var m = 0; m <= $scope.speechbubbleList.length - 1; m++) {
if ($scope.speechbubbleList[m].ids == sub_id1) {
$scope.angle1($scope.speechbubbleList[m].xaxis, $scope.speechbubbleList[m].yaxis, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, bor_id);
break;
}
}
}
},
});
$('.dynCross').on('click', function (evt) {
//$(this).parent().parent().parent().css('display', 'none');
$(this).parent().parent().parent().remove();
});
}
else {
$scope.multiAnnotationIsON = false;
//$(".com").css("display", "none");
//$("#bord").css({ "width": "0px", "display": "none" });
$(".com").remove();
$("#bord").remove();
var sppechBubbleDotHTML = '
'
+ '
'
+ ''
+ '
'
+ '
'
+ '
';
//Issue #7286 :Undefined annotation should not appear
for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) {
var MultipleLanguage = $scope.MultiLanguageAnnationArray[i];
}
if (MultipleLanguage == undefined) {
console.log("No text is found");
} else {
$('#canvasDiv').append(sppechBubbleDotHTML);
if ($scope.MultiLanguageAnnationArray.length > 0) {
for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) {
var MultipleLanguage = $scope.MultiLanguageAnnationArray[i];
$("#sppeachBubble").append("
';
if ($scope.longest_annotationT1.length > $scope.longest_annotationT2.length) {
$("#sppeachBubble_annotation p").remove();
$('#canvasDiv').append(sppechBubbleDotHTML_annotation);
for (var l = 0; l <= $scope.annotationTextArrayT1.length - 1; l++) {
var MultipleLang_annotation_T1 = $scope.annotationTextArrayT1[l];
$("#sppeachBubble_annotation").append("
" + MultipleLang_annotation_T1 + "
");
}
$("#sppeachBubble_annotation").append("");
for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) {
var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k];
$("#sppeachBubble_annotation").append("
");
}
$("#sppeachBubble_annotation").append("");
for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) {
var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k];
$("#sppeachBubble_annotation").append("
";
//Issue #7286 :Undefined annotation should not appear
for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) {
var annotation = $scope.MultiLanguageAnnationArray[i];
}
if (annotation == undefined) {
console.log("No text found");
} else {
$("#canvasDiv").append(sppechBubbleHTML);
for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) {
var annotation = $scope.MultiLanguageAnnationArray[i];
$("#" + id).append("
" + annotation + "
");
}
if ($scope.longestAnnotation.length <= 10) {
$("#" + id).css("width", "100px");
}
else if ($scope.longestAnnotation.length > 10 && $scope.longestAnnotation.length <= 17) {
$("#" + id).css("width", "140px");
}
else if ($scope.longestAnnotation.length > 17 && $scope.longestAnnotation.length <= 26) {
$("#" + id).css("width", "195px");
}
else if ($scope.longestAnnotation.length > 26 && $scope.longestAnnotation.length <= 34) {
$("#" + id).css("width", "248px");
}
else if ($scope.longestAnnotation.length > 34 && $scope.longestAnnotation.length <= 44) {
$("#" + id).css("width", "300px");
}
else if ($scope.longestAnnotation.length > 44 && $scope.longestAnnotation.length <= 54) {
$("#" + id).css("width", "370px");
}
else if ($scope.longestAnnotation.length > 54 && $scope.longestAnnotation.length <= 69) {
$("#" + id).css("width", "450px");
}
else if ($scope.longestAnnotation.length > 69 && $scope.longestAnnotation.length <= 75) {
$("#" + id).css("width", "510px");
}
else {
$("#" + id).css("width", ($scope.longestAnnotation.length) + "%");
}
}
}
$scope.angle1 = function (cx1, cy1, ex1, ey1, id, id2) {
// console.log(cx1 + " " + cy1);
var dy = ey1 - cy1;
var dx = ex1 - cx1;
var theta = 0;
if (dx < 0) {
theta = Math.atan(dy / dx) * (180 / Math.PI);
theta = theta + 180;
}
else if (dy < 0) {
theta = Math.atan(dy / dx) * (180 / Math.PI);
theta = theta + 360;
}
else {
theta = Math.atan(dy / dx) * (180 / Math.PI);
}
var g = Math.sqrt((cx1 - ex1) * (cx1 - ex1) + (cy1 - ey1) * (cy1 - ey1));
var e = cy1;
var f = cx1;
$('#' + id).css({ 'display': 'block', 'width': g + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' });
}
function myFunction(crossId) {
// alert(crossId);
$('#' + crossId).parent().parent().parent().css("display", "none");
}
$scope.angle = function (cx, cy, ex, ey, BoolValues) {
var dy = ey - cy;
var dx = ex - cx;
var theta = 0;
if (dx < 0) {
theta = Math.atan(dy / dx) * (180 / Math.PI);
theta = theta + 180;
}
else if (dy < 0) {
theta = Math.atan(dy / dx) * (180 / Math.PI);
theta = theta + 360;
}
else {
theta = Math.atan(dy / dx) * (180 / Math.PI);
}
var d = Math.sqrt((cx - ex) * (cx - ex) + (cy - ey) * (cy - ey));
var e = cy;
var f = cx;
if (BoolValues == true) {
$("#bord").css({ 'display': 'block', 'width': d + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' });
}
else {
$("#bord_annotation").css({ 'display': 'block', 'width': d + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' });
}
}
$scope.createSpeechBubble = function (event, text, x, y) {
//set z index to make annoation speech buble on top others
$('#canvasDiv').css('cursor', 'pointer');
$('
'
+ '
'
+ '
' + text + '
'
//+'
+ '
').appendTo('#canvasDiv');
$('#speechBubble').on('click', '.BubbleCloseBtn', function (evt) {
$('#speechBubble').css('display', 'none');
});
$('#canvasDiv').attr("data-bubbleid", "speechBubble")
};
$scope.createTransparencyBox = function () {
$scope.isTransparencyBtnClicked = true;
//do not create TBOX if in extarct mode otherwise create
if ($rootScope.isExtract == false) {
$("#btnExtract").addClass("disabled");
//if listanager is visisble then close it
$rootScope.isListManagerSelected = false;
$rootScope.CloseListManager();
// alert('transparencyClicked' + $scope.isTransparencyActivated)
$('#btnTranparency').addClass('tButtonActive');
$('#btnIdentity').removeClass(' btn-primary');
$('#btnIdentity').addClass('btn-black');
var canvasDiv = document.getElementById('canvasDiv');
$scope.verticalScrollPosition = canvasDiv.scrollTop;
$scope.horizontlScrollPosition = canvasDiv.scrollLeft;
var canvasDiv = document.getElementById('canvasDiv');
canvasDiv.addEventListener("mousedown", mouseDownListener);
canvasDiv.addEventListener("mousemove", mouseMoveListener);
canvasDiv.addEventListener("mouseup", mouseUpListener)
}
else {
// console.log("extract button is active");
}
}
function mouseDownListener(e) {
//Dated:18-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected.
var tCanvas = document.getElementById('transparencyCanvas');
if ($('#transparencyScale').css("visibility") == 'visible') {
$('#transparencyScale').css('visibility', 'hidden');
$('#transparencyCanvas').remove();
}
var $container = document.getElementById('canvasDiv');
var $selection = $('
').addClass('rectangle');
document.getElementById("DAView")
$selection.css({
'position': 'absolute',
//'background': 'transparent',
'border': '1px dotted #000'
});
var currentMousePosition = $scope.getMousePos(e);
$scope.TBDrawStartX = currentMousePosition.x;
$scope.TBDrawStartY = currentMousePosition.y;
var actulalX = currentMousePosition.x + $scope.horizontlScrollPosition
var actualY = currentMousePosition.y + $scope.verticalScrollPosition
//alert('$scope.TransparencyBoxStartX in mouseDown: ' + $scope.TransparencyBoxStartX + ' & Y= ' + $scope.TransparencyBoxStartY);
$scope.TransparencyBoxStartX = actulalX;
$scope.TransparencyBoxStartY = actualY
$scope.startX = actulalX;
$scope.startY = actualY;
var tBox = document.getElementById('transparencyCanvas');
if (tBox == null) {
//// canvasDiv.style.cursor = "crosshair";
$selection.css({
'top': actualY,
'left': actulalX,
'width': 0,
'height': 0,
'z-index': 1000
//'background': 'transparent',
});
$selection.appendTo($container);
}
document.getElementById('canvasDiv').removeEventListener("mousedown", mouseDownListener);
//Dated:19-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected.
if ($("#txtlayerNumber").val() != 0) {
$('#layerChangeSlider').slider("option", "value", parseInt($rootScope.totalLayers) - parseInt($scope.currentLayerNumber));
$("#txtlayerNumber").val(parseInt($scope.currentLayerNumber));
}
}
function mouseMoveListener(e) {
var currentMousePosition = $scope.getMousePos(e);
var move_x = currentMousePosition.x + $scope.horizontlScrollPosition,
move_y = currentMousePosition.y + $scope.verticalScrollPosition,
width = move_x - $scope.TransparencyBoxStartX,
height = move_y - $scope.TransparencyBoxStartY,
new_x, new_y;
new_x = (move_x < $scope.TransparencyBoxStartX) ? ($scope.TransparencyBoxStartX - width) : $scope.TransparencyBoxStartX;
new_y = (move_y < $scope.TransparencyBoxStartY) ? ($scope.TransparencyBoxStartY - height) : $scope.TransparencyBoxStartY;
$('.rectangle').css({
'width': width,
'height': height,
//'background': 'transparent'
});
}
function mouseUpListener(e) {
// $selection.remove();
// debugger;
//alert('mouse up');
console.log('MOUSE UP');
$(".com").remove();
$('#dot').remove();
$('#bord').remove();
$('#sppeachBubble').remove();
$scope.currentLayerNumber = parseInt($('#txtlayerNumber').val());
$('.rectangle').remove();
var currentMousePosition = $scope.getMousePos(e);
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
var TransparencyEndX = currentMousePosition.x + horizontlScrollPosition
var TransparencyBoxEndY = currentMousePosition.y + verticalScrollPosition
$scope.isTboxDrwan = true;
$scope.TbEndX = TransparencyEndX;
$scope.TbEndY = TransparencyBoxEndY;
$scope.TransparencyEndX = TransparencyEndX;
$scope.TransparencyBoxEndY = TransparencyBoxEndY;
$scope.layerNumberBeforeTrans = parseInt($('#txtlayerNumber').val());
//draw temp box to store the canvas data with original transparecy
if (document.getElementById('tempCanvas') != null) {
$('#tempCanvas').remove();
}
if (document.getElementById('tempCanvas') == null || document.getElementById('tempCanvas') == undefined) {
var tempCanvas = document.createElement('canvas');
tempCanvas.id = 'tempCanvas';
// $scope.tempCanvas = transparencyCanvas.id;
tempCanvas.height = TransparencyBoxEndY - $scope.startY;
tempCanvas.width = TransparencyEndX - $scope.startX;
tempCanvas.style.position = "absolute";
tempCanvas.style.left = 200 + 'px';
tempCanvas.style.top = 200 + 'px';
tempCanvas.style.backgroundColor = "transparent";
tempCanvas.style.visibility = 'hidden';
tempCanvas.style.border = "black 1px solid";
document.getElementById('canvasDiv').appendChild(tempCanvas);
}
$scope.isTransparencyActivated = true;
var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData;
$scope.IncludedBodyRegions = [];
////debugger;
$.each(BodyRegionDictionary, function (index, value) {
// alert(' $.each(BodyRegionDictionary1')
var transparencyBoxHeight = parseInt(TransparencyBoxEndY) - parseInt($scope.TransparencyBoxStartY);
var transparencyBoxWidth = parseInt(TransparencyEndX) - parseInt($scope.TransparencyBoxStartX);
var transparencyBoxBottom = parseInt($scope.TransparencyBoxStartY) + parseInt(transparencyBoxHeight);
var transparencyBoxRight = parseInt($scope.TransparencyBoxStartX) + parseInt(transparencyBoxWidth);
// alert(' $.each(BodyRegionDictionary2. transparencyBoxHeight: ' + transparencyBoxHeight + ',transparencyBoxBottom: ' + transparencyBoxBottom+', transparencyBoxRight: '+transparencyBoxRight)
var bodyRegionRight = parseInt(value.X) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height);
var transparencyCanvas = document.createElement('canvas');
var tBox = document.getElementById('transparencyCanvas');
if (tBox == null) {
transparencyCanvas.id = 'transparencyCanvas';
$scope.transparencyCanvasId = transparencyCanvas.id;
transparencyCanvas.height = TransparencyBoxEndY - $scope.startY;
transparencyCanvas.width = TransparencyEndX - $scope.startX;
transparencyCanvas.style.position = "absolute";
transparencyCanvas.style.left = $scope.startX + 'px' // x + "px";
transparencyCanvas.style.top = $scope.startY + "px"//y + "px";
transparencyCanvas.style.border = "black 1px solid";
transparencyCanvas.style.backgroundColor = "transparent";
transparencyCanvas.style.zIndex = 200;
// transparencyCanvas.style.visibility = 'hidden';
document.getElementById('canvasDiv').appendChild(transparencyCanvas);
$scope.transparencyChangeCounter = 0;
$('#transparencyCanvas').resizable({ handles: "e,s,se,w,n,ne,nw,sw", stop: function (event, ui) { resizeCanvas(); }, start: function (event, ui) { clearTransCanvas(); } });
$scope.transparencyCanvasHeight = transparencyCanvas.height;
$scope.transparencyCanvasWidth = transparencyCanvas.width;
//bind click listener
transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener);
$(".ui-wrapper").css("z-index", "600");
}
if ($scope.TransparencyBoxStartX <= bodyRegionRight && value.X <= transparencyBoxRight && $scope.TransparencyBoxStartY <= bodyRegionBottom && value.Y <= transparencyBoxBottom) {
if (($rootScope.voId == "9" || $rootScope.voId == "11")) {
if (value.bodyRegionId == "6") {
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false);
}
else {
}
}
else {
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false);
}
}
})
//for modesty
if ($rootScope.isModestyOn == true && $scope.modestyImageInfo.length > 0) {
$.each($scope.modestyImageInfo, function (index, value) {
// alert(' $.each(BodyRegionDictionary1')
var transparencyBoxHeight = parseInt(TransparencyBoxEndY) - parseInt($scope.TransparencyBoxStartY);
var transparencyBoxWidth = parseInt(TransparencyEndX) - parseInt($scope.TransparencyBoxStartX);
var transparencyBoxBottom = parseInt($scope.TransparencyBoxStartY) + parseInt(transparencyBoxHeight);
var transparencyBoxRight = parseInt($scope.TransparencyBoxStartX) + parseInt(transparencyBoxWidth);
// alert(' $.each(BodyRegionDictionary2. transparencyBoxHeight: ' + transparencyBoxHeight + ',transparencyBoxBottom: ' + transparencyBoxBottom+', transparencyBoxRight: '+transparencyBoxRight)
var bodyRegionRight = parseInt(value.x) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.y) + parseInt(value.Height);
if ($scope.TransparencyBoxStartX <= bodyRegionRight && value.x <= transparencyBoxRight && $scope.TransparencyBoxStartY <= bodyRegionBottom && value.y <= transparencyBoxBottom) {
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.x, value.y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false);
}
})
}
//
// $('#transparencyScale').modal('show');
$('#transparencyScale').css('position', 'fixed')
$('#transparencyScale').css('top', $scope.TBDrawStartY - 10)
$('#transparencyScale').css('left', $scope.TBDrawStartX + 130)
$('#transparencyScale').css('visibility', 'visible')
$('#transparencyScale').css("z-index", "100000") //Dated:16-07-2016 Issue#4962:Transparency box should be on top.
document.getElementById('canvasDiv').removeEventListener("mousedown", mouseDownListener);
document.getElementById('canvasDiv').removeEventListener("mousemove", mouseMoveListener);
document.getElementById('canvasDiv').removeEventListener("mouseup", mouseUpListener);
// document.getElementById('canvasDiv').removeEventListener("mousemove", mouseMoveListener);
$('#btnTranparency').removeClass('btn-black');
$('#btnTranparency').addClass('tButtonActive');
//debugger;
// $('#txtlayerNumber').val((parseInt($scope.currentLayerNumber)) + 1);
//Dated:18-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected.
$('#btnTranparency').removeClass('tButtonActive');
$('#btnTranparency').addClass('btn-black');
$('#btnIdentity').removeClass('btn-black');
$('#btnIdentity').addClass('btn-primary');
}
$scope.loadTransparencyImage = function (bodyRegionId, Height, Width, X, Y, IsMirror, TransparencyBoxStartX, TransparencyEndX, TransparencyBoxStartY, TransparencyBoxEndY, scope, isLayerChanged, isTransparencyChanged) {
// debugger;
// else {
var scope1 = angular.element(document.getElementById("DAView")).scope();
var transparencyCanvas = document.getElementById('transparencyCanvas');
TransparencyBoxStartX = parseInt((transparencyCanvas.style.left).replace('px', ''));
TransparencyBoxStartY = parseInt((transparencyCanvas.style.top).replace('px', ''));
TransparencyEndX = parseInt(transparencyCanvas.width) + parseInt(TransparencyBoxStartX);
TransparencyBoxEndY = parseInt(transparencyCanvas.height) + parseInt(TransparencyBoxStartY);
var XforCopyImage = 0;
var YforCopyImage = 0;
var WidthforCopyImage = 0;
var HeightforCopyImage = 0;
var XforTransImage = 0;
var WidthforTransImage = 0;
var HeightforTransImage = 0;
var YforTransImage = 0;
var PreviousBodyRegionHeight = 0;
var PreviousBodyRegionY;
var PreviousBodyRegionWidth;
var PreviousBodyRegionX;
var previousBodyRegionId;
var transparencyTempCanvas;
//X ends outside and start outside of bodyregion
if (TransparencyBoxStartX < X && TransparencyEndX > parseInt(X) + parseInt(Width)) {
XforCopyImage = 0;
WidthforCopyImage = Width;
WidthforTransImage = Width;
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
XforTransImage = 0;
}
else
XforTransImage = parseInt(X) - (parseInt(TransparencyBoxStartX));
// alert('1')
}
else if (TransparencyBoxStartX < X && TransparencyEndX < parseInt(X) + parseInt(Width)) {
XforCopyImage = 0;
WidthforCopyImage = parseInt(TransparencyEndX) - parseInt(X);
WidthforTransImage = parseInt(TransparencyEndX) - parseInt(X);
// alert(' scope.WidthforCopyImage: ' + scope.WidthforCopyImage)
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
XforTransImage = 0;
}
else
XforTransImage = parseInt(X) - (parseInt(TransparencyBoxStartX));
// alert('2')
}
else if (TransparencyBoxStartX > X && TransparencyEndX > parseInt(X) + parseInt(Width)) {
// alert('TransparencyEndX: ' + TransparencyEndX + ', X: ' + X + ', Width: ' + Width + 'scope.TransparencyBoxStartX: ' + scope.TransparencyBoxStartX)
XforCopyImage = parseInt(TransparencyBoxStartX) - parseInt(X);
WidthforCopyImage = parseInt(X) + parseInt(Width) - parseInt(TransparencyBoxStartX);
WidthforTransImage = parseInt(X) + parseInt(Width) - parseInt(TransparencyBoxStartX);
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
XforTransImage = parseInt(TransparencyBoxStartX) - parseInt(X);
}
else
XforTransImage = 0;
// alert('3')
}
else if (TransparencyBoxStartX > X && TransparencyEndX < parseInt(X) + parseInt(Width)) {
// alert('startX inside & endX inside')
XforCopyImage = parseInt(TransparencyBoxStartX) - parseInt(X);//parseInt(X) + parseInt(Width) - parseInt(scope.TransparencyBoxStartX)// scope.TransparencyBoxStartX ;
WidthforCopyImage = parseInt(TransparencyEndX) - parseInt(TransparencyBoxStartX);
WidthforTransImage = parseInt(TransparencyEndX) - parseInt(TransparencyBoxStartX);
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
XforTransImage = parseInt(TransparencyBoxStartX) - parseInt(X);
}
else
XforTransImage = 0;
// alert('4. TransparencyBoxStartX: ' + TransparencyBoxStartX + ',X: ' + parseInt(X) + ',TransparencyEndX: ' + TransparencyEndX + ',XforCopyImage: ' + XforCopyImage)
}
//calculate Y and height for tempTranparency box from where to cut the image
if (TransparencyBoxStartY < Y && TransparencyBoxEndY > parseInt(Y) + parseInt(Height)) {
// alert('start Y outside and end Y outside');
YforCopyImage = 0;
HeightforCopyImage = Height;
HeightforTransImage = Height;
//alert('Y ' + Y)
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
YforTransImage = 0;
}
else
YforTransImage = parseFloat(Y) - parseInt(TransparencyBoxStartY)//parseFloat(Y) - (24.4);
// alert('5')
}
else if (TransparencyBoxStartY < Y && TransparencyBoxEndY < (parseInt(Y) + parseInt(Height))) {
YforCopyImage = 0;
HeightforCopyImage = (parseInt(TransparencyBoxEndY)) - parseInt(Y)//(parseInt(Height) + parseInt(Y)) - (parseInt(TransparencyBoxEndY) - parseInt(scope.TransparencyBoxStartY));
HeightforTransImage = (parseInt(TransparencyBoxEndY)) - parseInt(Y)// - parseInt(scope.TransparencyBoxStartY));
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
YforTransImage = 0;
}
else
YforTransImage = parseFloat(Y) - parseInt(TransparencyBoxStartY);// - (24.4);
}
else if (TransparencyBoxStartY > Y && TransparencyBoxEndY > parseInt(Y) + parseInt(Height)) {
YforCopyImage = parseInt(TransparencyBoxStartY) - parseInt(Y);
HeightforCopyImage = parseInt(Y) + parseInt(Height) - parseInt(TransparencyBoxStartY);
HeightforTransImage = parseInt(Y) + parseInt(Height) - parseInt(TransparencyBoxStartY);
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
YforTransImage = parseInt(TransparencyBoxStartY) - parseInt(Y);
}
else
YforTransImage = 0;
}
else if (TransparencyBoxStartY > Y && TransparencyBoxEndY < parseInt(Y) + parseInt(Height)) {
YforCopyImage = parseInt(TransparencyBoxStartY) - parseInt(Y);
HeightforCopyImage = parseInt(TransparencyBoxEndY) - parseInt(TransparencyBoxStartY);
HeightforTransImage = parseInt(TransparencyBoxEndY) - parseInt(TransparencyBoxStartY);
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
YforTransImage = parseInt(TransparencyBoxStartY) - parseInt(Y);
}
else
YforTransImage = 0;
}
//0. get current layer number
if ($scope.isResized) {
//do nothing
}
else if (isLayerChanged) {
}
else {
var tranparencyLayer;
var currentLayer = $scope.layerNumberBeforeTrans;
if (currentLayer == $rootScope.totalLayers) {
tranparencyLayer = currentLayer;
}
else {
tranparencyLayer = currentLayer + 1;
}
$scope.layerNumber = tranparencyLayer;
}
$('#txtlayerNumber').val($scope.layerNumber);
//dedebugger;
var tranparencyImgSrc;
var tranparencyMaskImgSrc;
//for modesty image
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg')))// == "2" || bodyRegionId == "3")) {
{
var modestyBodyRegionData = new jinqJs()
.from($scope.modestyImageInfo)
.where('bodyRegionId == ' + bodyRegionId)
.select();
tranparencyImgSrc = modestyBodyRegionData[0].SRC;
}
//modesty end
//1. get the image source
else {
tranparencyImgSrc = $scope.GetImageSource(bodyRegionId);
tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc);
}
// var tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc);
// debugger;
var oldCanvas;
if (IsMirror == 'Yes') {
oldCanvas = document.getElementById('transparencyTempCanvas_MR_' + bodyRegionId)
}
else {
oldCanvas = document.getElementById('transparencyTempCanvas_' + bodyRegionId)
}
if (oldCanvas != null) {
document.getElementById('canvasDiv').removeChild(oldCanvas);
}
//remove tempmask canvas
var oldtempTransCanvasMask;
var oldtempTransCanvasMaskMR;
if (IsMirror == 'Yes') {
oldtempTransCanvasMaskMR = document.getElementById('transparencyTempCanvasMask_MR' + bodyRegionId + '_mci');
oldtempTransCanvasMask = document.getElementById('transparencyTempCanvasMask_' + bodyRegionId + '_mci');
if (oldtempTransCanvasMaskMR != null) {
document.getElementById('canvasDiv').removeChild(oldtempTransCanvasMaskMR);
}
}
else {
oldtempTransCanvasMask = document.getElementById('transparencyTempCanvasMask_' + bodyRegionId + '_mci');
}
if (oldtempTransCanvasMask != null) {
document.getElementById('canvasDiv').removeChild(oldtempTransCanvasMask);
}
transparencyTempCanvas = document.createElement('canvas');
var transparencyTempcanavsMask = document.createElement('canvas');
//if mirror then draw mask image for non mirrored body region for annotation
if (IsMirror == 'Yes') {
transparencyTempCanvas.id = 'transparencyTempCanvas_MR_' + bodyRegionId;
transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_MR' + bodyRegionId + '_mci';
}
else {
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
transparencyTempCanvas.id = 'transparencyTempCanvas_' + bodyRegionId;
// transparencyTempCanvas.style.visibility = 'visible';
//transparencyTempCanvas.style.zIndex = '1000'
}
else {
transparencyTempCanvas.id = 'transparencyTempCanvas_' + bodyRegionId;
transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_' + bodyRegionId + '_mci';
}
}
transparencyTempCanvas.height = Height;
transparencyTempCanvas.width = Width;
transparencyTempCanvas.style.position = "absolute";
transparencyTempCanvas.style.left = X + 'px' // x + "px";
transparencyTempCanvas.style.top = Y + "px"//y + "px";
//if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
// transparencyTempCanvas.style.visibility = 'visible';
//}
//else {
transparencyTempCanvas.style.visibility = 'hidden';
// }
//transparencyTempCanvas.style.visibility = 'visible';
// transparencyCanvas.style.zIndex = 4000;
document.getElementById('canvasDiv').appendChild(transparencyTempCanvas);
//create temp mask canvas
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) { }
else {
transparencyTempcanavsMask.height = Height;
transparencyTempcanavsMask.width = Width;
transparencyTempcanavsMask.style.position = "absolute";
transparencyTempcanavsMask.style.left = X + 'px' // x + "px";
transparencyTempcanavsMask.style.top = Y + "px"//y + "px";
transparencyTempcanavsMask.style.visibility = 'hidden';
//transparencyTempCanvas.style.visibility = 'visible';
// transparencyCanvas.style.border = "black 1px solid";
document.getElementById('canvasDiv').appendChild(transparencyTempcanavsMask);
}
//for modesty canvas
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
var modestyTransTempCanvasId = 'tempCanvasModesty_' + bodyRegionId;
var modestyTransCanvasId = 'modestyTransCanavs_' + bodyRegionId;
if (document.getElementById(modestyTransTempCanvasId) != null) {
document.getElementById(modestyTransTempCanvasId).parentNode.removeChild(document.getElementById(modestyTransTempCanvasId));
}
if (document.getElementById(modestyTransTempCanvasId) == null || document.getElementById(modestyTransTempCanvasId) == undefined) {
var tempCanvasModesty = document.createElement('canvas');
tempCanvasModesty.id = modestyTransTempCanvasId;
// $scope.tempCanvas = transparencyCanvas.id;
tempCanvasModesty.height = Height;
tempCanvasModesty.width = Width;
tempCanvasModesty.style.position = "absolute";
tempCanvasModesty.style.left = 10 + 'px';
tempCanvasModesty.style.top = 10 + 'px';
tempCanvasModesty.style.backgroundColor = "transparent";
tempCanvasModesty.style.visibility = 'hidden';
tempCanvasModesty.style.border = "black 1px solid";
document.getElementById('canvasDiv').appendChild(tempCanvasModesty);
}
if (document.getElementById(modestyTransCanvasId) != null) {
document.getElementById(modestyTransCanvasId).parentNode.removeChild(document.getElementById(modestyTransCanvasId));
}
if (document.getElementById(modestyTransCanvasId) == null || document.getElementById(modestyTransCanvasId) == undefined) {
var canvasModesty = document.createElement('canvas');
canvasModesty.id = modestyTransCanvasId;
// $scope.tempCanvas = transparencyCanvas.id;
canvasModesty.height = Height;
canvasModesty.width = Width;
canvasModesty.style.position = "absolute";
canvasModesty.style.left = X + 'px';
canvasModesty.style.top = Y + 'px';
//canvasModesty.style.backgroundColor = "transparent";
canvasModesty.style.visibility = 'visible';
canvasModesty.style.zIndex = '2000';
canvasModesty.addEventListener('click', OnClickModestyTransCanvas);
// tempcanvasModestyCanvasModesty.style.border = "black 1px solid";
document.getElementById('canvasDiv').appendChild(canvasModesty);
}
}
if (tranparencyImgSrc != undefined) {
var tempImg = new Image();
tempImg.onload = function () {
var tempCtx = transparencyTempCanvas.getContext('2d');
if (IsMirror == 'Yes') {
//debugger;
tempCtx.save();
tempCtx.translate(Width, 0);
tempCtx.scale(-1, 1);
tempCtx.drawImage(tempImg, 0, 0);
}
else {
tempCtx.drawImage(tempImg, 0, 0);
}
// debugger;
var tempCanvasID;
if (IsMirror == 'Yes') {
tempCanvasID = 'transparencyTempCanvas_MR_' + bodyRegionId;
}
else {
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
tempCanvasID = 'transparencyTempCanvas_' + bodyRegionId;//bodyRegionId;
}
else
tempCanvasID = 'transparencyTempCanvas_' + bodyRegionId;
}
//check if transparency is activated
var transNumber = $scope.transNumber;//txtTransparencyChange.value;
// debugger;
//this changes the transparency when transparency is already activated and user resizes or chage the layer
var imageD = tempCtx.getImageData(0, 0, Width, Height);
var tempCtx = document.getElementById(tempCanvasID).getContext('2d');
//keep the original image on temp canavs to use it in changing transparency
//if (document.getElementById(modestyTransTempCanvasId) != undefined || document.getElementById(modestyTransTempCanvasId) != null) {
// var contxModesty = document.getElementById(modestyTransTempCanvasId).getContext('2d');
// var tbTempCanvas = document.getElementById(tempCanvasID)
// contx.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage);
//}
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
var modestyTempCanvasId = 'tempCanvasModesty_' + bodyRegionId;
if (document.getElementById(modestyTempCanvasId) != undefined || document.getElementById(modestyTempCanvasId) != null) {
var contxModesty = document.getElementById(modestyTempCanvasId).getContext('2d');
var tbTempCanvas = document.getElementById(tempCanvasID)
contxModesty.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage);
}
}
else {
if (document.getElementById('tempCanvas') != null && document.getElementById('tempCanvas') != undefined) {
var contx = document.getElementById('tempCanvas').getContext('2d');
var tbTempCanvas = document.getElementById(tempCanvasID)
contx.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage);
}
}
// get the image data values
var imageData = imageD.data;
var length = imageData.length;
//change background of image from transparent to white
// set every fourth value to 50
for (var i = 3; i < length; i += 4) {
//NIKITA
if ($scope.voId == "9" || $scope.voId == "11") {
if (imageData[i] == 0) {
}
else {
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
}
else {
if (imageData[i] == 0) {
}
else {
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
}
}
tempCtx.putImageData(imageD, 0, 0);
var ctx;
if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
ctx = document.getElementById(modestyTransCanvasId).getContext('2d');
}
else
ctx = transparencyCanvas.getContext('2d');
var TrtempCanvasID
if (IsMirror == 'Yes') {
TrtempCanvasID = 'transparencyTempCanvas_MR_' + bodyRegionId;
}
else {
//if ($rootScope.isModestyOn == true && (bodyRegionId.match('modestyImg'))) {
// TrtempCanvasID = 'modestyTransparencyTempCanvas_' + bodyRegionId;
//}
//else
TrtempCanvasID = 'transparencyTempCanvas_' + bodyRegionId;
}
var tmpCanvasContext = document.getElementById(TrtempCanvasID);//.getContext('2d');
ctx.drawImage(tmpCanvasContext, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage)
XforCopyImage = 0;
YforCopyImage = 0;
WidthforCopyImage = 0;
HeightforCopyImage = 0;
XforTransImage = 0;
WidthforTransImage = 0;
HeightforTransImage = 0;
YforTransImage = 0;
PreviousBodyRegionHeight = 0;
}
tempImg.src = tranparencyImgSrc;//"http://localhost/AIA/" + tranparencyImgSrc;
}
//mask image code
//draw mask for annotation
var tempMaskImg = new Image();
var tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc);
tempMaskImg.src = tranparencyMaskImgSrc;//"http://localhost/AIA/" + tranparencyMaskImgSrc;
tempMaskImg.onload = function () {
// debugger;
var tempmaskCtx = transparencyTempcanavsMask.getContext('2d');
if (IsMirror == 'Yes') {
//debugger;
tempmaskCtx.save();
tempmaskCtx.translate(Width, 0);
tempmaskCtx.scale(-1, 1);
tempmaskCtx.drawImage(tempMaskImg, 0, 0);
}
else {
tempmaskCtx.drawImage(tempMaskImg, 0, 0);
}
}
PreviousBodyRegionHeight = HeightforTransImage;
PreviousBodyRegionY = YforTransImage;
PreviousBodyRegionWidth = WidthforTransImage;
PreviousBodyRegionX = XforTransImage;
previousBodyRegionId = bodyRegionId;
// $scope.layerNumber = parseInt($scope.layerNumber - 1);
//}
}
$scope.changeTransparency = function () {
//this changes the transparency when user click on transparency scale(we have already set the original
//data on tras canvas irrespective of the trans number, so we can chnage the transparnecy of original data not the manipulated)
// if (isTransparencyChanged == true) {
// var txtTransparencyChange = document.getElementById("txtTransparencyChange");
var transNumber = $scope.transNumber;
var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']");
var modestyTemCanvas = $("canvas[id*='tempCanvasModesty_']");
if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) {
for (var j = 0; j < modestyTransCanvases.length; j++) {
var ctx = document.getElementById(modestyTransCanvases[j].id).getContext('2d');
var imageDa = ctx.getImageData(0, 0, modestyTransCanvases[j].width, modestyTransCanvases[j].height);
//modestyTransCanvases[j].parentNode.removeChild(modestyTransCanvases[j]);
var imageData = imageDa.data;
var length = imageData.length;
// set every fourth value to 50
for (var i = 3; i < length; i += 4) {
//NIKITA
if ($scope.voId == "9" || $scope.voId == "11") {
if (imageData[i] == 0) {
}
else {
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
}
else {
if (imageData[i] == 0) {
}
else
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
// imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
// after the manipulation, reset the data
// imageDa.data = imageData;
// and put the imagedata back to the canvas
//ctx.putImageData(imageDa, XforTransImage, YforTransImage);
ctx.putImageData(imageDa, 0, 0);
}
}
var ctx = document.getElementById('transparencyCanvas').getContext('2d');
// var imageDa = ctx.getImageData(XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage);
var imageDa = ctx.getImageData(0, 0, $scope.transparencyCanvasWidth, $scope.transparencyCanvasHeight);
// get the image data values
var imageData = imageDa.data;
var length = imageData.length;
// set every fourth value to 50
for (var i = 3; i < length; i += 4) {
//NIKITA
if ($scope.voId == "9" || $scope.voId == "11") {
if (imageData[i] == 0) {
}
else {
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
}
else {
if (imageData[i] == 0) {
}
else
imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
// imageData[i] = ((255) * (parseInt(transNumber))) / 100;
}
// after the manipulation, reset the data
// imageDa.data = imageData;
// and put the imagedata back to the canvas
//ctx.putImageData(imageDa, XforTransImage, YforTransImage);
ctx.putImageData(imageDa, 0, 0);
//}
}
function resizeCanvas() {
//debugger;
// alert('reload')
clearTransCanvas();
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
}
var tCanvas = document.getElementById('transparencyCanvas');
var tCanvasContext = tCanvas.getContext('2d');
var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', ''));
var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', ''));
var tBoxStartX = parseInt((tCanvas.style.left).replace('px', ''));
var tBoxEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', '')));
var tBoxStartY = parseInt((tCanvas.style.top).replace('px', ''));
var tBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', ''));
var transparencyBoxBottom = parseInt(tBoxStartY) + parseInt(tCanvasHeight);
var transparencyBoxRight = parseInt(tBoxStartX) + parseInt(tCanvasWidth);
if (tCanvas != null) {
$('#transparencyCanvas').remove();
}
var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']");
if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) {
for (var j = 0; j < modestyTransCanvases.length; j++) {
modestyTransCanvases[j].parentNode.removeChild(modestyTransCanvases[j]);
}
}
var modestyTempCanvases = $("canvas[id*='tempCanvasModesty_']");
if (modestyTempCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) {
for (var j = 0; j < modestyTempCanvases.length; j++) {
modestyTempCanvases[j].parentNode.removeChild(modestyTempCanvases[j]);
}
}
$scope.isResized = true;
if (tCanvasHeight != $scope.transparencyCanvasHeight || tCanvasWidth != $scope.transparencyCanvasWidth) {
var transparencyCanvas = document.createElement('canvas');
transparencyCanvas.id = 'transparencyCanvas';
$scope.transparencyCanvas = tCanvas.id;
transparencyCanvas.height = tCanvasHeight;
transparencyCanvas.width = tCanvasWidth;
transparencyCanvas.style.position = "absolute";
transparencyCanvas.style.left = tCanvas.style.left; // x + "px";
transparencyCanvas.style.top = tCanvas.style.top//y + "px";
transparencyCanvas.style.border = "black 1px solid";
transparencyCanvas.style.zIndex = 200;
document.getElementById('canvasDiv').appendChild(transparencyCanvas);
$('#transparencyCanvas').resizable({ handles: "e,s,se,w,n,ne,nw,sw", stop: function (event, ui) { resizeCanvas(); }, start: function (event, ui) { clearTransCanvas(); } });
$(".ui-wrapper").css("z-index", "600");
//bind click listener
transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener);
}
$scope.transparencyCanvasHeight = tCanvasHeight;
$scope.transparencyCanvasWidth = tCanvasWidth;
// debugger;
//create temp cavas to retain the original anavs data for use in transparency change as
//if u use original canvas data for transprency change then at 0 transparency all data will become transparent and if u increase transparency with this data then the canavs will be blank
if (document.getElementById('tempCanvas') != null) {
$('#tempCanvas').remove();
}
var tempCanvas = document.createElement('canvas');
tempCanvas.id = 'tempCanvas';
$scope.tempCanvas = tempCanvas.id;
tempCanvas.height = $scope.transparencyCanvasHeight;
tempCanvas.width = $scope.transparencyCanvasWidth;
tempCanvas.style.position = "absolute";
tempCanvas.style.left = 200 + 'px';
tempCanvas.style.backgroundColor = "transparent";
tempCanvas.style.visibility = 'hidden';
// tempCanvas.style.border = "black 1px solid";
document.getElementById('canvasDiv').appendChild(tempCanvas);
var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData;
$scope.IncludedBodyRegions = [];
// $scope.layerNo = parseInt(document.getElementById(''))
var counter = 0;
$.each(BodyRegionDictionary, function (index, value) {
var bodyRegionRight = parseInt(value.X) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height);
var TBRight = parseInt((document.getElementById('transparencyCanvas').style.left).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas').style.width).replace('px', ''));
var TBBottom = parseInt((document.getElementById('transparencyCanvas').style.top).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas').style.height).replace('px', ''));
var TBStartX = parseInt((document.getElementById('transparencyCanvas').style.left).replace('px', ''));
var TBStartY = parseInt((document.getElementById('transparencyCanvas').style.top).replace('px', ''));
if (TBStartX <= bodyRegionRight && value.X <= TBRight && TBStartY <= bodyRegionBottom && value.Y <= TBBottom) {
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false);
}
})
//for modesty
if ($rootScope.isModestyOn == true && $scope.modestyImageInfo.length > 0) {
$.each($scope.modestyImageInfo, function (index, value) {
// alert(' $.each(BodyRegionDictionary1')
var bodyRegionRight = parseInt(value.x) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.y) + parseInt(value.Height);
var TBRight = parseInt((document.getElementById('transparencyCanvas').style.left).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas').style.width).replace('px', ''));
var TBBottom = parseInt((document.getElementById('transparencyCanvas').style.top).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas').style.height).replace('px', ''));
var TBStartX = parseInt((document.getElementById('transparencyCanvas').style.left).replace('px', ''));
var TBStartY = parseInt((document.getElementById('transparencyCanvas').style.top).replace('px', ''));
if (TBStartX <= bodyRegionRight && value.x <= TBRight && TBStartY <= bodyRegionBottom && value.y <= TBBottom) {
$scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.x, value.y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false);
}
})
}
// });
//$(".ui-wrapper").css("z-index", "600");
$scope.isResized = false;
}
function TransparencyCanvasClickListener(evt) {
//alert('tb clicked')
// debugger;
var pixelData;
var pixelDataTrans;
var mousePos = $scope.getMousePos(evt);
// alert(mousePos.x + ',' + mousePos.y);
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
//We substracted 135, as the difference between flex and html coordinates for same organ is 135
var actulalX = mousePos.x + horizontlScrollPosition;
var actualY = mousePos.y + verticalScrollPosition //- 135; //+ tomenuBarheight + titleBarheight + searchComboheight;
var clickedBodyRegion;
var x;
var y;
var isMirror;
var width;
var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData;
if ($rootScope.viewOrientationId == 5) {
var clickedBodyRegionData = new jinqJs()
.from(BodyRegionDictionary)
.where('bodyRegionId == 6')
.select();
// clickedBodyRegion = clickedBodyRegionData[0].bodyRegionId;
x = clickedBodyRegionData[0].X;
y = clickedBodyRegionData[0].Y;
width = clickedBodyRegionData[0].Width;
var height = clickedBodyRegionData[0].Height;
isMirror = clickedBodyRegionData[0].IsMirror;
var bodyRegionRight = parseInt(x) + parseInt(width);
var bodyRegionBottom = parseInt(y) + parseInt(height);
if (actulalX <= bodyRegionRight && x <= actulalX && actualY <= bodyRegionBottom && y <= actualY) {
clickedBodyRegion = clickedBodyRegionData[0].bodyRegionId;
x = clickedBodyRegionData[0].X;
y = clickedBodyRegionData[0].Y;
width = clickedBodyRegionData[0].Width;
var height = clickedBodyRegionData[0].Height;
isMirror = clickedBodyRegionData[0].IsMirror;
}
}
else {
$.each(BodyRegionDictionary, function (index, value) {
var bodyRegionRight = parseInt(value.X) + parseInt(value.Width);
var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height);
if (actulalX <= bodyRegionRight && value.X <= actulalX && actualY <= bodyRegionBottom && value.Y <= actualY) {
clickedBodyRegion = value.bodyRegionId;
x = value.X;
y = value.Y;
width = value.Width;
isMirror = value.IsMirror;
return false;
}
})
}
if (isMirror == "Yes") {
var mirrorCanvasX = x;
var mirrorCanvasWidth = width;
var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci';
var clickedCanavs = document.getElementById(clickedCanvasMaskId);
var maskCanvasId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci';
var maskCanvas = document.getElementById(maskCanvasId);
if (maskCanvas != null) {
x = maskCanvas.style.left;
y = maskCanvas.style.top;
var maskCanvasTransId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci';
var maskCanvastrans = document.getElementById(maskCanvasTransId);
var maskCanvasContexttrans = maskCanvastrans.getContext("2d");
getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, maskCanvasContexttrans, clickedBodyRegion, x, y, evt)
}
//if non mirrored canvas does not exist for this irror Body region then draw non mirrored image to get annotation
else if (maskCanvas == null) {
var clickedBodyRegionData = new jinqJs()
.from(BodyRegionDictionary)
.where('bodyRegionId == ' + clickedBodyRegion)
.select();
if (clickedBodyRegionData != null || clickedBodyRegionData != undefined) {
var nomMirroredBodyRegion = new jinqJs()
.from(clickedBodyRegionData)
.where('IsMirror == No')
.select();
var transparencyTempcanavsMask = document.createElement('canvas');
transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci';
transparencyTempcanavsMask.height = nomMirroredBodyRegion[0].Height;
transparencyTempcanavsMask.width = nomMirroredBodyRegion[0].Width;
transparencyTempcanavsMask.style.position = "absolute";
transparencyTempcanavsMask.style.left = nomMirroredBodyRegion[0].X + 'px' // x + "px";
transparencyTempcanavsMask.style.top = nomMirroredBodyRegion[0].Y + "px"//y + "px";
transparencyTempcanavsMask.style.visibility = 'hidden';
document.getElementById('canvasDiv').appendChild(transparencyTempcanavsMask);
var tranparencyImgSrc = $scope.GetImageSource(clickedBodyRegion);
var tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc);
var tempMaskImg = new Image();
tempMaskImg.src = tranparencyMaskImgSrc;
tempMaskImg.onload = function () {
var transparencyTempcanavsMask = document.getElementById(maskCanvasId);
var tempmaskCtx = transparencyTempcanavsMask.getContext('2d');
tempmaskCtx.drawImage(tempMaskImg, 0, 0);
//get x,y of non mirrored canvas for this body region
x = transparencyTempcanavsMask.style.left;
y = transparencyTempcanavsMask.style.top;
getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, tempmaskCtx, clickedBodyRegion, x, y, evt)
}
}
}
}
else {
var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci';
var maskCanvas = document.getElementById(clickedCanvasMaskId);
var maskCanvasContext = maskCanvas.getContext("2d");
//transparecncy canvas
var maskCanvasTransId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci';
var maskCanvastrans = document.getElementById(maskCanvasTransId);
var maskCanvasContexttrans = maskCanvastrans.getContext("2d");
pixelData = maskCanvasContext.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1);
pixelDataTrans = maskCanvasContexttrans.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1);
var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope);
//var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope);
if ($('#speechBubble').length > 0)
$('#speechBubble').remove();
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
// $scope.createSpeechBubbleOnTransparencyBox(evt, annotations.annotationT1, annotations.annotationT2, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotations.annotationT1);
$scope.annotationTextArrayT2.push(annotations.annotationT2);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, false);
}
else
// $scope.createSpeechBubbleOnTransparencyBox(evt, annotations.annotationT1, annotations.annotationT2, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
{
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotations.annotationT1);
$scope.annotationTextArrayT2.push(annotations.annotationT2);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, false);
}
}
}
function OnClickModestyTransCanvas(evt) {
var mousePos = $scope.getMousePos(evt);
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
var actulalX = mousePos.x + horizontlScrollPosition;
var actualY = mousePos.y + verticalScrollPosition;
var canavsX = evt.currentTarget.offsetLeft;
var canvasY = evt.currentTarget.offsetTop;
var canvasId = evt.currentTarget.id;
var canavsContext = document.getElementById(canvasId).getContext('2d');
var RGBColor = $scope.GetRGBColor(canavsContext, actulalX, actualY, canavsX, canvasY);
var annotationText;
//Modesty ON
if (canvasId.match('modestyImg') && RGBColor != '000000') {
RGBColor = DA[0].figLeafTermId;
annotationText = $scope.GetAnnotationBasedOnActualTermNo(RGBColor);
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotationText);
$scope.annotationTextArrayT2.push(annotationText);
}
//Modesty On but clicked somewhre else, we did modesty check because the modesty image covers whole body region so if user will click to
//see the annotation apart from leaf then the actual click will be on modesty canvas, but for annotation er
//
else if (canvasId.match('modestyImg') && RGBColor == '000000') {
var bodyRegionId = canvasId.slice(-1);
var maskCanvasId = 'imageCanvas' + bodyRegionId + '_mci';
var maskCanvas = document.getElementById(maskCanvasId);
var maskCanvasContext = maskCanvas.getContext("2d");
//RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, xcanavsX, canvasY);
//annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
//transparecncy canvas
var maskCanvasTransId = 'transparencyTempCanvasMask_' + bodyRegionId + '_mci';
var maskCanvastrans = document.getElementById(maskCanvasTransId);
var maskCanvasContexttrans = maskCanvastrans.getContext("2d");
var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - canavsX), Math.round(actualY - canvasY), 1, 1);
var pixelDataTrans = maskCanvasContexttrans.getImageData(Math.round(actulalX - canavsX), Math.round(actualY - canvasY), 1, 1);
var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope);
// var maskCanvasId = 'imageCanvas' + bodyRegionId + '_mci';
// var maskCanvas = document.getElementById(maskCanvasId);
// var maskCanvasContext = maskCanvas.getContext("2d");
// RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, xcanavsX, canvasY);
// annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
// createSpeechBubbleOnTransparencyBox(evt, annotations.annotationT1, annotations.annotationT2, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotations.annotationT1);
$scope.annotationTextArrayT2.push(annotations.annotationT2);
}
if ($('#speechBubble').length > 0)
$('#speechBubble').remove();
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
}
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, false);
}
function getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, maskCanvasContexttrans, clickedBodyRegion, x, y, evt) {
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135);
var mirrorXOnNormalImage = parseInt(maskCanvasContexttrans.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage);
var actulalX = mirrorXOnNormalImage
var actualY = mousePos.y + verticalScrollPosition
var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci';
var maskCanvas = document.getElementById(clickedCanvasMaskId);
var maskCanvasContext = maskCanvas.getContext("2d");
var imgX = Math.round(actulalX - parseInt((x).replace('px', '')));
var imgY = Math.round(actualY - parseInt((y).replace('px', '')));
var pixelData = maskCanvasContext.getImageData(imgX, imgY, 1, 1);
//trans layer image data
var pixelDataTrans = maskCanvasContexttrans.getImageData(imgX, imgY, 1, 1);
// console.log('at the time' + pixelData.data[0])
// debugger;
var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope);
if ($('#speechBubble').length > 0)
$('#speechBubble').remove();
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
// createSpeechBubbleOnTransparencyBox(evt, annotations.annotationT1, annotations.annotationT2, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotations.annotationT1);
$scope.annotationTextArrayT2.push(annotations.annotationT2);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, false);
}
else {
$scope.annotationTextArrayT1 = [];
$scope.annotationTextArrayT2 = [];
$scope.annotationTextArrayT1.push(annotations.annotationT1);
$scope.annotationTextArrayT2.push(annotations.annotationT2);
$scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, false);
}
}
function clearTransCanvas() {
var tCanvas = document.getElementById('transparencyCanvas');
if (tCanvas != null) {
var tCanvasContext = tCanvas.getContext('2d');
tCanvasContext.clearRect(0, 0, parseInt(tCanvas.style.width), parseInt(tCanvas.style.height));
}
}
$scope.getAnnotationForTransparencyBox = function (pixelData, pixelDataTrans, scope) {
pixelData.data[0] = pixelData.data[0] - 9;
pixelData.data[1] = pixelData.data[1] - 9;
pixelData.data[2] = pixelData.data[2] - 9;
//trans pixel data
pixelDataTrans.data[0] = pixelDataTrans.data[0] - 9;
pixelDataTrans.data[1] = pixelDataTrans.data[1] - 9;
pixelDataTrans.data[2] = pixelDataTrans.data[2] - 9;
var Red;
var Green;
var Blue;
var zero = "0";
if ((pixelData.data[0]).toString().length != 2) {
Red = zero.concat((pixelData.data[0]).toString())
}
else {
Red = (pixelData.data[0]).toString()
}
if ((pixelData.data[1]).toString().length != 2) {
Green = zero.concat((pixelData.data[1]).toString())
}
else {
Green = (pixelData.data[1]).toString()
}
if ((pixelData.data[2]).toString().length != 2) {
Blue = zero.concat((pixelData.data[2]).toString())
}
else {
Blue = (pixelData.data[2]).toString()
}
var RGBColor = (Red + Green + Blue);
var annotationText1 = $scope.GetAnnotationText(parseInt(RGBColor));
//get annotation for trans canavs
var RedTrans;
var GreenTrans;
var BlueTrans;
var zero = "0";
if ((pixelDataTrans.data[0]).toString().length != 2) {
RedTrans = zero.concat((pixelDataTrans.data[0]).toString())
}
else {
RedTrans = (pixelDataTrans.data[0]).toString()
}
if ((pixelDataTrans.data[1]).toString().length != 2) {
GreenTrans = zero.concat((pixelDataTrans.data[1]).toString())
}
else {
GreenTrans = (pixelDataTrans.data[1]).toString()
}
if ((pixelDataTrans.data[2]).toString().length != 2) {
BlueTrans = zero.concat((pixelDataTrans.data[2]).toString())
}
else {
BlueTrans = (pixelDataTrans.data[2]).toString()
}
var RGBColorTrans = (RedTrans + GreenTrans + BlueTrans);
var annotationText2 = $scope.GetAnnotationText(parseInt(RGBColorTrans));
return {
annotationT1: annotationText1,
annotationT2: annotationText2
}
}
$scope.onTransparencyChange = function (ev, ui) {
//debugger;
// alert('t change')
$scope.transNumber = ui.value;
var tCanvas = document.getElementById('transparencyCanvas');
var tCanvasContext = tCanvas.getContext('2d');
var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', ''));
var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', ''));
var tBoxStartX = parseInt((tCanvas.style.left).replace('px', ''));
var tBoxEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', '')));
var tBoxStartY = parseInt((tCanvas.style.top).replace('px', ''));
var tBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', ''));
var transparencyBoxBottom = parseInt(tBoxStartY) + parseInt(tCanvasHeight);
var transparencyBoxRight = parseInt(tBoxStartX) + parseInt(tCanvasWidth);
//var scope = angular.element(document.getElementById("DAView")).scope();
//scope.$apply(function () {
var arr = [];
$scope.transparencyChangeCounter++;
//before changing the transparency of first canvas, hold the orignal canvas data on temp canvas
//put original data on transcanvas so that it can be used to change transparency properly
var tempCanavs = document.getElementById('tempCanvas');
var tempCanvasContext = tempCanavs.getContext('2d');
var originalTransparencyData = tempCanvasContext.getImageData(0, 0, $scope.transparencyCanvasWidth, $scope.transparencyCanvasHeight);
var ctx = document.getElementById('transparencyCanvas').getContext('2d');
ctx.putImageData(originalTransparencyData, 0, 0);
//for modesty
//for modesty
if ($rootScope.isModestyOn == true && $scope.modestyImageInfo.length > 0) {
$.each($scope.modestyImageInfo, function (index, value) {
var brId = value.bodyRegionId;
var modestyTransTempCanvasId = 'tempCanvasModesty_' + brId;
var modestyTransCanvasId = 'modestyTransCanavs_' + brId;
var tempCanvasContext = document.getElementById(modestyTransTempCanvasId).getContext('2d');
var originalTransparencyData = tempCanvasContext.getImageData(0, 0, value.Width, value.Height);
var ctx = document.getElementById(modestyTransCanvasId).getContext('2d');
ctx.putImageData(originalTransparencyData, 0, 0);
})
}
$scope.changeTransparency();
// });
}
$scope.CloseTransparencyBox = function () {
//To enable extract button
$scope.isTransparencyActivated = false;
$("#btnExtract").removeClass("disabled");
//$('.com_anno').css('display', 'none');
//$('#sppeachBubble_annotation').css('display', 'none');
//$('#dot_annotation').css('display', 'none');
//$('#bord_annotation').css('display', 'none');
$('.com_anno').remove();
$('#sppeachBubble_annotation').remove();
$('#dot_annotation').remove();
$('#bord_annotation').remove();
var tBox = document.getElementById('transparencyCanvas');
if (tBox != null) {
tBox.parentNode.removeChild(tBox)
var elements = document.getElementsByClassName('ui-icon ui-icon-gripsmall-diagonal-se');
while (elements.length > 0) {
elements[0].parentNode.removeChild(elements[0]);
}
//var txtTransparencyChange = document.getElementById("txtTransparencyChange");
//txtTransparencyChange.value = 0;
// document.getElementById('txtLayerNumber').value = 0;
// debugger;
$('#layerChangeSlider').slider("option", "value", parseInt($rootScope.totalLayers) - parseInt($scope.currentLayerNumber));
$("#txtlayerNumber").val(parseInt($scope.currentLayerNumber));
if (document.getElementById('tempCanvas') != null) {
$('#tempCanvas').remove();
}
if ($('#speechBubbleTrns').length > 0) {
$('#speechBubbleTrns').remove();
}
//var scope = angular.element(document.getElementById("DAView")).scope();
//scope.$apply(function () {
// $scope.layerNumber = 0;
// $scope.isTransparencyActivated = false;
//})
var tempCanvases = $("canvas[id*='transparencyTempCanvas']");
for (var i = 0; i < tempCanvases.length; i++) {
tempCanvases[i].parentNode.removeChild(tempCanvases[i]);
}
$('.ui-wrapper').remove();
//$("canvas[name*='transparencyTempCanvas']").nextUntil($("canvas[name*='transparencyTempCanvas']"))
//.remove();
$scope.layerNumber = $scope.currentLayerNumber;
$scope.transNumber = 50;
$(".slider").slider({ value: 50 })
}
var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']");
if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) {
for (var j = 0; j < modestyTransCanvases.length; j++) {
modestyTransCanvases[j].parentNode.removeChild(modestyTransCanvases[j]);
}
}
$('#transparencyScale').css('visibility', 'hidden');
//$scope.isTransparencyActivated = false;
// document.getElementById('btnTranparency').className = 't-transparency'
$('#btnTranparency').removeClass('tButtonActive');
$('#btnTranparency').addClass('btn-black');
$('#btnIdentity').removeClass('btn-black');
$('#btnIdentity').addClass('btn-primary');
document.getElementById('btnTranparency').removeEventListener("click", $scope.createTransparencyBox);
}
$scope.createSpeechBubbleOnTransparencyBox = function (event, text1, text2, x, y) {
$('#canvasDiv').css('cursor', 'pointer');
$('