Skip to content

Commit 29079aa

Browse files
author
Cindy Wang
committed
update the region highlight box on on multiple plots and make region parsing to be independent of plot.
1 parent 083b943 commit 29079aa

File tree

7 files changed

+138
-64
lines changed

7 files changed

+138
-64
lines changed

src/firefly/html/demo/ffapi-2images.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,9 @@ <h3>Firefly - new API demo</h3>
237237
};
238238
firefly.showImage('image2_div', req2);
239239

240+
firefly.action.dispatchCreateRegionLayer('region2', 'Region Layer 2', null, ['image; box 200 200 72 72 0 # color=red'], ['image1', 'image2']);
241+
242+
240243
}
241244
}
242245
</script>

src/firefly/html/demo/ffapi-highlevel-test.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,8 @@
235235
/*
236236
'global color=green dashlist=8 3 width=1 font="helvetica 10 normal normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 rotate=0 source=1',
237237
'J2000;point 202.41 47.262 # color=pink text="pt circle 1" point=circle',
238-
'box (100p, 70p, 20p, 20p, 0) #color=red text={IMAGE coordinate - 1}',
239-
'box (100i, 70i, 30i, 30i, 0) #color=orange text={PHYSICAL coordinate -2}',
238+
'box (100p, 70p, 20p, 20p, 0) #color=red text={Physical coordinate - 1}',
239+
'box (100i, 70i, 30i, 30i, 0) #color=orange text={Image coordinate -2}',
240240
'line(202.414796 47.281999 202.423758 47.247072) # color=orange width=10 select=0 text={line 2}',
241241
'text 30p 40p # color=pink text={text test 3} edit=0 highlite=0 font="BRAGGADOCIO 10 normal roman"',
242242
'text 202.437691 47.234228{more text testing 4} # color=purple move=0',

src/firefly/js/visualize/draw/PointDataObj.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ export function makeHighlightPointDataObj(drawObj, cc) {
443443
0.0, ShapeDataObj.UnitType.ARCSEC, false);
444444

445445
makeShapeHighlightRenderOptions( rectObj );
446+
rectObj.isAHighlight = { from: drawObj, plotImageId: cc.plotImageId};
446447
return rectObj;
447448
}
448449

src/firefly/js/visualize/draw/ShapeDataObj.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {TextLocation, Style, DEFAULT_FONT_SIZE} from './DrawingDef.js';
1212
import Point, {makeScreenPt, makeViewPortPt, makeOffsetPt, makeWorldPt, makeImagePt} from '../Point.js';
1313
import {toRegion} from './ShapeToRegion.js';
1414
import {getDrawobjArea, isScreenPtInRegion, makeHighlightShapeDataObj} from './ShapeHighlight.js';
15+
import {makeHighlightPointDataObj, POINT_DATA_OBJ} from './PointDataObj.js';
1516
import CsysConverter from '../CsysConverter.js';
1617
import {has, isNil, get, set} from 'lodash';
1718

@@ -233,6 +234,14 @@ var draw= {
233234
},
234235

235236
draw(drawObj,ctx,drawTextAry,plot,def,vpPtM,onlyAddToPath) {
237+
if (has(drawObj, 'isAHighlight') && drawObj.isAHighlight.plotImageId !== plot.plotImageId) {
238+
var fromObj = get(drawObj.isAHighlight, 'from');
239+
240+
if (fromObj) {
241+
drawObj = (fromObj.type === POINT_DATA_OBJ) ? makeHighlightPointDataObj(fromObj, plot):
242+
makeHighlightShapeDataObj(fromObj, plot, drawObj.isAHighlight.def);
243+
}
244+
}
236245
var drawParams= makeDrawParams(drawObj,def);
237246
drawShape(drawObj,ctx,drawTextAry,plot,drawParams,onlyAddToPath);
238247
},

src/firefly/js/visualize/draw/ShapeHighlight.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,8 @@ export function makeHighlightShapeDataObj(drawObj, cc, def = {}) {
663663
var rectObj = ShapeDataObj.makeRectangleByCenter(wcenter, w, h, ShapeDataObj.UnitType.PIXEL, 0.0, ShapeDataObj.UnitType.ARCSEC, false);
664664

665665
makeShapeHighlightRenderOptions( rectObj );
666+
667+
rectObj.isAHighlight = { from: drawObj, plotImageId: cc.plotImageId, def};
666668
return rectObj;
667669
}
668670

src/firefly/js/visualize/region/RegionDrawer.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,10 @@ function drawRegionAnnulus(regionObj) {
337337
* @param options region properties
338338
* @param propChkAry property cheeck list
339339
* @param a rotation angle
340+
* @param isOnWorld
340341
* @returns {*}
341342
*/
342-
function drawOneBox(w, h, a, wp, options, propChkAry) {
343+
function drawOneBox(w, h, a, wp, options, propChkAry, isOnWorld) {
343344
var unit = regionUnitToDrawObj(w.unit);
344345
var angleUnit = regionUnitToDrawObj(a.unit);
345346
var width, height, angle;
@@ -368,7 +369,7 @@ function drawOneBox(w, h, a, wp, options, propChkAry) {
368369
angleUnit = ShapeDataObj.UnitType.ARCSEC;
369370
}
370371

371-
var dObj = ShapeDataObj.makeRectangleByCenter(wp, width, height, unit, angle, angleUnit, wp.type === Point.W_PT);
372+
var dObj = ShapeDataObj.makeRectangleByCenter(wp, width, height, unit, angle, angleUnit, isOnWorld);
372373

373374
updateDrawobjProp(propChkAry, options, dObj);
374375
return dObj;
@@ -387,7 +388,7 @@ function drawRegionBox(regionObj) {
387388
regionObj.angle,
388389
regionObj.wpAry[0],
389390
regionObj.options,
390-
allProps);
391+
allProps, regionObj.isOnWorld);
391392

392393
dObj.textLoc = DEFAULT_TEXTLOC[RegionType.box.key];
393394
return [dObj];
@@ -406,7 +407,7 @@ function drawRegionBoxAnnulus(regionObj) {
406407
regionObj.angle,
407408
regionObj.wpAry[0],
408409
regionObj.options,
409-
commonProps);
410+
commonProps, regionObj.isOnWorld);
410411
var boxannulusObj = ShapeDataObj.makeBoxAnnulus(regionObj.wpAry[0],
411412
dimAry(regionObj.dimensionAry, firstObj.unitType),
412413
firstObj.unitType,
@@ -419,7 +420,7 @@ function drawRegionBoxAnnulus(regionObj) {
419420
boxannulusObj = Object.assign(boxannulusObj, pick(firstObj, commonProps));
420421

421422
var moreObj = regionObj.dimensionAry.reverse().slice(1).map((d) => {
422-
var nextObj = drawOneBox(d.width, d.height, regionObj.angle, regionObj.wpAry[0], regionObj.options, []);
423+
var nextObj = drawOneBox(d.width, d.height, regionObj.angle, regionObj.wpAry[0], regionObj.options, [], regionObj.isOnWorld);
423424

424425
return Object.assign(nextObj, pick(firstObj, commonProps));
425426
});
@@ -488,9 +489,10 @@ function drawRegionPolygon(regionObj) {
488489
* @param options region properties
489490
* @param propChkAry property cheeck list
490491
* @param a rotation angle
492+
* @param isOnWorld
491493
* @returns {*}
492494
*/
493-
function drawOneEllipse(r1, r2, a, wp, options, propChkAry) {
495+
function drawOneEllipse(r1, r2, a, wp, options, propChkAry, isOnWorld) {
494496
var unit = regionUnitToDrawObj(r1.unit);
495497
var angleUnit = regionUnitToDrawObj(a.unit);
496498
var radius1, radius2, angle;
@@ -508,7 +510,6 @@ function drawOneEllipse(r1, r2, a, wp, options, propChkAry) {
508510
} else {
509511
radius1 = r1.value;
510512
radius2 = r2.value;
511-
// angle = 0.0;
512513
}
513514

514515
// DS9 angle is counterclockwise, canvas angle is clockwise
@@ -519,7 +520,7 @@ function drawOneEllipse(r1, r2, a, wp, options, propChkAry) {
519520
angleUnit = ShapeDataObj.UnitType.ARCSEC;
520521
}
521522

522-
var dObj = ShapeDataObj.makeEllipse(wp, radius1, radius2, unit, angle, angleUnit, wp.type === Point.W_PT);
523+
var dObj = ShapeDataObj.makeEllipse(wp, radius1, radius2, unit, angle, angleUnit, isOnWorld);
523524

524525
updateDrawobjProp(propChkAry, options, dObj);
525526
return dObj;
@@ -538,7 +539,7 @@ function drawRegionEllipse(regionObj) {
538539
regionObj.angle,
539540
regionObj.wpAry[0],
540541
regionObj.options,
541-
allProps);
542+
allProps, regionObj.isOnWorld);
542543

543544
dObj.textLoc = DEFAULT_TEXTLOC[RegionType.ellipse.key];
544545
return [dObj];
@@ -556,7 +557,7 @@ function drawRegionEllipseAnnulus(regionObj) {
556557
regionObj.angle,
557558
regionObj.wpAry[0],
558559
regionObj.options,
559-
commonProps);
560+
commonProps, regionObj.isOnWorld);
560561
var ellipseannObj = ShapeDataObj.makeEllipseAnnulus(regionObj.wpAry[0],
561562
dimAry(regionObj.dimensionAry, firstObj.unitType),
562563
firstObj.unitType,
@@ -569,7 +570,7 @@ function drawRegionEllipseAnnulus(regionObj) {
569570
ellipseannObj = Object.assign(ellipseannObj, pick(firstObj, commonProps));
570571

571572
var moreObj = regionObj.dimensionAry.reverse().slice(1).map((d) => {
572-
var nextObj = drawOneEllipse(d.width, d.height, regionObj.angle, regionObj.wpAry[0], regionObj.options, []);
573+
var nextObj = drawOneEllipse(d.width, d.height, regionObj.angle, regionObj.wpAry[0], regionObj.options, [], regionObj.isOnWorld);
573574

574575
return Object.assign(nextObj, pick(firstObj, commonProps));
575576
});

0 commit comments

Comments
 (0)