Attention une mise à jour du serveur va être effectuée le lundi 17 mai entre 13h et 13h30. Cette mise à jour va générer une interruption du service de quelques minutes.

Commit 84de97b6 authored by Robin Tissot's avatar Robin Tissot

Allows to edit overlapping regions by disabling cycling on drag.

parent 963dc6e9
......@@ -875,8 +875,6 @@ export class Segmenter {
// this.raster.position = view.center;
// this.img.style.display = 'hidden';
tool.onMouseDown = this.onMouseDown.bind(this);
// hide the tooltip on leaving the area
this.canvas.addEventListener('mouseleave', function() {
this.tooltip.style.display = 'none';
......@@ -884,6 +882,8 @@ export class Segmenter {
this.tool = tool;
this.tool.activate();
this.resetToolEvents();
this.loaded = true;
}
......@@ -960,14 +960,31 @@ export class Segmenter {
region.polygonPath.onMouseDown = function(event) {
if (event.event.ctrlKey ||
this.spliting ||
this.selecting ||
// this.selecting ||
isRightClick(event.event) ||
this.mode != 'regions') return;
this.selecting = region;
// if what we are clicking on is already selected,
// check there isn't something below
if (region.selected) {
let hit;
for (let i=0; i<this.regions.length; i++) {
if (this.regions[i] != region) {
hit = this.regions[i].polygonPath.hitTest(event.point);
if (hit) {
this.selecting = this.regions[i];
break;
}
}
}
if (!hit) this.selecting = region;
} else {
this.selecting = region;
}
var dragging = region.polygonPath.getNearestLocation(event.point).segment;
this.tool.onMouseDrag = function(event) {
this.selecting = false;
this.selecting = region;
if (!event.event.shiftKey) {
this.movePointInView(dragging.point, event.delta);
}
......@@ -986,6 +1003,7 @@ export class Segmenter {
}
}
this.tool.onMouseUp = function(event) {
this.onMouseUp(event);
this.resetToolEvents();
this.updateRegionsFromCanvas();
}.bind(this);
......@@ -1008,6 +1026,7 @@ export class Segmenter {
this.mode != 'lines' ||
this.selecting) return;
this.selecting = line;
var hit = line.baselinePath.hitTest(event.point, {
segments: true,
tolerance: 20
......@@ -1031,6 +1050,7 @@ export class Segmenter {
}.bind(this);
this.tool.onMouseUp = function(event) {
this.onMouseUp(event);
this.resetToolEvents();
line.updateDataFromCanvas();
}.bind(this);
......@@ -1099,6 +1119,7 @@ export class Segmenter {
}.bind(this);
this.tool.onMouseUp = function(event) {
this.onMouseUp(event);
this.resetToolEvents();
line.updateDataFromCanvas();
}.bind(this);
......@@ -1120,9 +1141,9 @@ export class Segmenter {
resetToolEvents() {
this.tool.onMouseDown = this.onMouseDown.bind(this);
this.tool.onMouseUp = null; //this.onMouseUp.bind(this);
this.tool.onMouseDrag = this.onMouseDrag.bind(this);
this.tool.onMouseMove = null;
this.tool.onMouseUp = null;
}
attachTooltip(obj, target) {
......@@ -1205,39 +1226,14 @@ export class Segmenter {
onMouseDown(event) {
if (isRightClick(event.event)) return;
if (this.selecting) {
if (this.mode == 'regions') {
// if what we are selecting is already selected, check there isn't something below
for (let i=0; i<this.regions.length; i++) {
if (this.selecting.selected && this.regions[i] != this.selecting) {
let hit = this.regions[i].polygonPath.hitTest(event.point);
if (hit) {
this.selecting = this.regions[i];
break;
}
}
}
}
// selection
if (event.event.shiftKey) {
this.selecting.toggleSelect();
this.startLassoSelection(event);
} else {
this.selecting.select();
this.purgeSelection(this.selecting);
}
this.trigger('baseline-editor:selection', {target: this.selecting, selection: this.selection});
this.selecting = null;
} else {
if (!this.selecting) {
if (event.event.ctrlKey) return;
if (this.spliting) {
this.startCuter(event);
} else if (event.event.shiftKey) {
// lasso selection tool
this.startLassoSelection(event);
} else if (this.hasSelection()) {
this.purgeSelection();
} else if (this.mode == 'regions') {
} else if (this.mode == 'regions') {
this.startNewRegion(event);
} else { // mode = 'lines'
// create a new line
......@@ -1246,6 +1242,23 @@ export class Segmenter {
}
}
onMouseUp(event) {
if (this.selecting) {
// selection
if (event.event.shiftKey) {
this.selecting.toggleSelect();
this.startLassoSelection(event);
} else {
this.selecting.select();
this.purgeSelection(this.selecting);
}
this.trigger('baseline-editor:selection', {target: this.selecting, selection: this.selection});
this.selecting = null;
} else if (this.hasSelection()) {
this.purgeSelection();
}
}
getRegionsAt(pt) {
// returns all the regions that contains the given point pt
return this.regions.filter(r => r.polygonPath.contains(pt));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment