# HG changeset patch # User hertzhaft # Date 1350855558 -7200 # Node ID 20ad0034f1e516cb8bc3b4c6b88e6ce07f81ec2c # Parent 8d6bc18f7145e471f40d35ec0f3ac2699b566b42 more refactoring diff -r 8d6bc18f7145 -r 20ad0034f1e5 webapp/src/main/webapp/jquery/jquery.digilib.regions.js --- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Fri Oct 19 19:19:27 2012 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Sun Oct 21 23:39:18 2012 +0200 @@ -130,8 +130,8 @@ var $overlay = $('
'); $body.append($overlay); bodyRect.adjustDiv($overlay); - var attr = {'class' : cssPrefix+"regionURL"}; - var $regionDiv = addRegionDiv(data, data.userRegions, data.userRegions.length, attr); + var $regionDiv = newRegionDiv(data); + copyRegionAttributes(data, $regionDiv, {'class' : cssPrefix+"regionURL"}); // mousedown handler: start sizing var regionStart = function (evt) { @@ -169,11 +169,11 @@ // clip region clickRect.clipTo(scalerRect); clickRect.adjustDiv($regionDiv); - var region = storeUserRegion(data, $regionDiv); + storeRegionDiv(data, $regionDiv); // fn.redisplay(data); fn.highlightButtons(data, 'defineregion', 0); redisplay(data); - $(data).trigger('newRegion', region); + $(data).trigger('newRegion', [$regionDiv]); return false; }; @@ -191,7 +191,7 @@ var r = data.userRegions.pop(); // no more URL regions to delete if (r == null) return; - var $regionDiv = r.$div; + var $regionDiv = r.$div; // DEPRECATED $regionDiv.remove(); redisplay(data); }, @@ -263,12 +263,11 @@ }, // display region coordinates in an edit line - showRegionCoords : function (data, region) { + showRegionCoords : function (data, $regionDiv) { var $elem = data.$elem; var cssPrefix = data.settings.cssPrefix; - // var infoselector = '#'+cssPrefix+'regionInfo'; - // var $info = fn.find(data, infoselector); - var coords = regionCoordsString(region, ','); + var rect = $regionDiv.data('rect'); + var coords = packCoords(rect, ','); var html = '\
\ \ @@ -295,7 +294,7 @@ // draw a find region from coords and move into view regionFromCoords : function (data, coords) { - var rect = parseCoordsString(data, coords); + var rect = parseCoords(data, coords); if (rect == null) { alert('invalid coordinates: ' + coords); return; @@ -351,24 +350,8 @@ } }; - // store a region div - var storeUserRegion = function (data, $regionDiv) { - var regions = data.userRegions; - var rect = geom.rectangle($regionDiv); - var rectangle = data.imgTrafo.invtransform(rect); - rectangle.$div = $regionDiv; - regions.push(rectangle); - console.debug("storeUserRegion", data.userRegions, "rectangle", rectangle); - return rectangle; - }; - - // open region as detail - var openDetail = function (data, region) { - digilib.actions.zoomArea(data, region); - }; - // make a coords string - var regionCoordsString = function (rect, sep) { + var packCoords = function (rect, sep) { if (sep == null) sep = ','; // comma as default separator return [ fn.cropFloatStr(rect.x), @@ -378,107 +361,8 @@ ].join(sep); }; - // html for later insertion - var regionInfoHTML = function (data) { - var cssPrefix = data.settings.cssPrefix; - var $infoDiv = $('
'); - $infoDiv.append($('
').text('')); - $.each(data.userRegions, function(index, r) { - var coords = regionCoordsString(r, ','); - $infoDiv.append($('
').text('')); - }); - $infoDiv.append($('
').text('')); - return $infoDiv; - }; - - // SVG-style - var regionInfoSVG = function (data) { - var cssPrefix = data.settings.cssPrefix; - var $infoDiv = $('
'); - $.each(data.userRegions, function(index, r) { - var coords = regionCoordsString(r, ' '); - $infoDiv.append($('
').text('"' + coords + '"')); - }); - return $infoDiv; - }; - - // CSV-style - var regionInfoCSV = function (data) { - var cssPrefix = data.settings.cssPrefix; - var $infoDiv = $('
'); - $.each(data.userRegions, function(index, r) { - var coords = regionCoordsString(r, ','); - $infoDiv.append($('
').text(index+1 + ": " + coords)); - }); - return $infoDiv; - }; - - // digilib-style (h,w@x,y) - var regionInfoDigilib = function (data) { - var cssPrefix = data.settings.cssPrefix; - var $infoDiv = $('
'); - $.each(data.userRegions, function(index, r) { - if (r.fromHtml) return; - var coords = r.toString(); - $infoDiv.append($('
').text(coords)); - }); - return $infoDiv; - }; - - // add a region to data.$elem - var addRegionDiv = function (data, regions, index, attributes) { - var settings = data.settings; - var cssPrefix = settings.cssPrefix; - // var nr = regions.length; // we count regions from 1 - var cls = cssPrefix+'region '+cssPrefix+'overlay'; - if (attributes && attributes['class']) { - cls = cls+' '+attributes['class']; - delete attributes['class']; - } - var $regionDiv = $('