| Clazz.declarePackage ("JSV.common"); | |
| Clazz.load (["JSV.common.XYScaleConverter", "java.util.Hashtable", "JU.BS", "$.Lst", "JSV.common.Coordinate", "JSV.dialog.JSVDialog"], "JSV.common.GraphSet", ["java.lang.Boolean", "$.Double", "$.Float", "JU.DF", "$.PT", "JSV.common.Annotation", "$.ColorParameters", "$.ColoredAnnotation", "$.ImageView", "$.Integral", "$.IntegralData", "$.Measurement", "$.MeasurementData", "$.PanelData", "$.Parameters", "$.PeakData", "$.PeakPickEvent", "$.PlotWidget", "$.ScaleData", "$.ScriptToken", "$.Spectrum", "$.ViewData", "JU.Logger"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.gs2dLinkedX = null; | |
| this.gs2dLinkedY = null; | |
| this.cur1D2Locked = false; | |
| this.highlights = null; | |
| this.spectra = null; | |
| this.isSplittable = true; | |
| this.allowStacking = true; | |
| this.annotations = null; | |
| this.selectedSpectrumMeasurements = null; | |
| this.selectedSpectrumIntegrals = null; | |
| this.lastAnnotation = null; | |
| this.pendingMeasurement = null; | |
| this.pendingIntegral = null; | |
| this.graphsTemp = null; | |
| this.widgets = null; | |
| this.isLinked = false; | |
| this.haveSingleYScale = false; | |
| this.iSpectrumMovedTo = 0; | |
| this.iSpectrumClicked = 0; | |
| this.iSpectrumSelected = -1; | |
| this.stackSelected = false; | |
| this.bsSelected = null; | |
| this.viewData = null; | |
| this.reversePlot = false; | |
| this.nSplit = 1; | |
| this.yStackOffsetPercent = 0; | |
| this.showAllStacked = true; | |
| this.viewList = null; | |
| this.imageView = null; | |
| this.pd = null; | |
| this.sticky2Dcursor = false; | |
| this.nSpectra = 0; | |
| this.fracX = 1; | |
| this.fracY = 1; | |
| this.fX0 = 0; | |
| this.fY0 = 0; | |
| this.zoomBox1D = null; | |
| this.zoomBox2D = null; | |
| this.pin1Dx0 = null; | |
| this.pin1Dx1 = null; | |
| this.pin1Dy0 = null; | |
| this.pin1Dy1 = null; | |
| this.pin1Dx01 = null; | |
| this.pin1Dy01 = null; | |
| this.pin2Dx0 = null; | |
| this.pin2Dx1 = null; | |
| this.pin2Dy0 = null; | |
| this.pin2Dy1 = null; | |
| this.pin2Dx01 = null; | |
| this.pin2Dy01 = null; | |
| this.cur2Dx0 = null; | |
| this.cur2Dx1 = null; | |
| this.cur1D2x1 = null; | |
| this.cur1D2x2 = null; | |
| this.cur2Dy = null; | |
| this.xPixel0 = 0; | |
| this.yPixel0 = 0; | |
| this.xPixel1 = 0; | |
| this.yPixel1 = 0; | |
| this.xVArrows = 0; | |
| this.xHArrows = 0; | |
| this.yHArrows = 0; | |
| this.xPixel00 = 0; | |
| this.yPixel00 = 0; | |
| this.xPixel11 = 0; | |
| this.yPixel11 = 0; | |
| this.yPixel000 = 0; | |
| this.xPixels = 0; | |
| this.yPixels = 0; | |
| this.xPixel10 = 0; | |
| this.xPixels0 = 0; | |
| this.allowStackedYScale = true; | |
| this.drawXAxisLeftToRight = false; | |
| this.xAxisLeftToRight = true; | |
| this.iPreviousSpectrumClicked = -1; | |
| this.$haveSelectedSpectrum = false; | |
| this.zoomEnabled = false; | |
| this.currentZoomIndex = 0; | |
| this.lastClickX = NaN; | |
| this.lastPixelX = 2147483647; | |
| this.height = 0; | |
| this.width = 0; | |
| this.right = 0; | |
| this.top = 0; | |
| this.left = 0; | |
| this.bottom = 0; | |
| this.piMouseOver = null; | |
| this.coordTemp = null; | |
| this.FONT_PLAIN = 0; | |
| this.FONT_BOLD = 1; | |
| this.FONT_ITALIC = 2; | |
| this.is2DSpectrum = false; | |
| this.selectedMeasurement = null; | |
| this.selectedIntegral = null; | |
| this.lastXMax = NaN; | |
| this.lastSpecClicked = -1; | |
| this.inPlotMove = false; | |
| this.xPixelMovedTo = -1; | |
| this.xPixelMovedTo2 = -1; | |
| this.yValueMovedTo = 0; | |
| this.xValueMovedTo = 0; | |
| this.haveLeftRightArrows = false; | |
| this.xPixelPlot1 = 0; | |
| this.xPixelPlot0 = 0; | |
| this.yPixelPlot0 = 0; | |
| this.yPixelPlot1 = 0; | |
| this.nextClickForSetPeak = null; | |
| this.closerX = 0; | |
| this.closerY = 0; | |
| this.splitterX = 0; | |
| this.splitterY = 0; | |
| this.mapX = null; | |
| if (!Clazz.isClassDefined ("JSV.common.GraphSet.Highlight")) { | |
| JSV.common.GraphSet.$GraphSet$Highlight$ (); | |
| } | |
| this.triggered = true; | |
| this.lastIntDragX = 0; | |
| this.nextClickMode = 0; | |
| this.dialogs = null; | |
| this.aIntegrationRatios = null; | |
| this.jsvp = null; | |
| this.image2D = null; | |
| this.plotColors = null; | |
| this.g2d = null; | |
| this.gMain = null; | |
| this.COLOR_GREY = -3; | |
| this.COLOR_BLACK = -2; | |
| this.COLOR_INTEGRAL = -1; | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.common, "GraphSet", null, JSV.common.XYScaleConverter); | |
| Clazz.prepareFields (c$, function () { | |
| this.highlights = new JU.Lst (); | |
| this.spectra = new JU.Lst (); | |
| this.graphsTemp = new JU.Lst (); | |
| this.bsSelected = new JU.BS (); | |
| this.coordTemp = new JSV.common.Coordinate (); | |
| this.mapX = new java.util.Hashtable (); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (pd) { | |
| this.pd = pd; | |
| this.jsvp = pd.jsvp; | |
| this.g2d = pd.g2d; | |
| }, "JSV.common.PanelData"); | |
| Clazz.defineMethod (c$, "setSpectrumMovedTo", | |
| function (i) { | |
| return this.iSpectrumMovedTo = i; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setSpectrumClicked", | |
| function (i) { | |
| this.stackSelected = this.showAllStacked; | |
| if (i < 0 || this.iSpectrumClicked != i) { | |
| this.lastClickX = NaN; | |
| this.lastPixelX = 2147483647; | |
| }this.iSpectrumClicked = this.setSpectrumSelected (this.setSpectrumMovedTo (i)); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setSpectrumSelected", | |
| function (i) { | |
| var isNew = (i != this.iSpectrumSelected); | |
| this.iSpectrumSelected = i; | |
| if (isNew) { | |
| this.getCurrentView (); | |
| }return this.iSpectrumSelected; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "closeDialogsExcept", | |
| function (type) { | |
| if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) { | |
| var ad = e.getValue (); | |
| if (Clazz.instanceOf (ad, JSV.dialog.JSVDialog) && (type === JSV.common.Annotation.AType.NONE || ad.getAType () !== type)) (ad).setVisible (false); | |
| } | |
| }, "JSV.common.Annotation.AType"); | |
| Clazz.defineMethod (c$, "dispose", | |
| function () { | |
| this.spectra = null; | |
| this.viewData = null; | |
| this.viewList = null; | |
| this.annotations = null; | |
| this.lastAnnotation = null; | |
| this.pendingMeasurement = null; | |
| this.imageView = null; | |
| this.graphsTemp = null; | |
| this.widgets = null; | |
| this.disposeImage (); | |
| if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) { | |
| var ad = e.getValue (); | |
| if (Clazz.instanceOf (ad, JSV.dialog.JSVDialog)) (ad).dispose (); | |
| } | |
| this.dialogs = null; | |
| }); | |
| Clazz.defineMethod (c$, "isDrawNoSpectra", | |
| function () { | |
| return (this.iSpectrumSelected == -2147483648); | |
| }); | |
| Clazz.defineMethod (c$, "getFixedSelectedSpectrumIndex", | |
| function () { | |
| return Math.max (this.iSpectrumSelected, 0); | |
| }); | |
| Clazz.defineMethod (c$, "getSpectrum", | |
| function () { | |
| return this.getSpectrumAt (this.getFixedSelectedSpectrumIndex ()).getCurrentSubSpectrum (); | |
| }); | |
| Clazz.defineMethod (c$, "getSpectrumAt", | |
| function (index) { | |
| return this.spectra.get (index); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "getSpectrumIndex", | |
| function (spec) { | |
| for (var i = this.spectra.size (); --i >= 0; ) if (this.spectra.get (i) === spec) return i; | |
| return -1; | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "addSpec", | |
| function (spec) { | |
| this.spectra.addLast (spec); | |
| this.nSpectra++; | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "splitStack", | |
| function (doSplit) { | |
| if (doSplit && this.isSplittable) { | |
| this.nSplit = this.nSpectra; | |
| this.showAllStacked = false; | |
| this.setSpectrumClicked (this.iSpectrumSelected); | |
| this.pd.currentSplitPoint = this.iSpectrumSelected; | |
| } else { | |
| this.nSplit = 1; | |
| this.showAllStacked = this.allowStacking && !doSplit; | |
| this.setSpectrumClicked (this.iSpectrumSelected); | |
| }this.stackSelected = false; | |
| JSV.common.GraphSet.setFractionalPositions (this.pd, this.pd.graphSets, JSV.common.PanelData.LinkMode.NONE); | |
| this.pd.setTaintedAll (); | |
| }, "~B"); | |
| Clazz.defineMethod (c$, "setPositionForFrame", | |
| function (iSplit) { | |
| if (iSplit < 0) iSplit = 0; | |
| var marginalHeight = this.height - 50; | |
| this.xPixel00 = Clazz.doubleToInt (this.width * this.fX0); | |
| this.xPixel11 = Clazz.doubleToInt (this.xPixel00 + this.width * this.fracX - 1); | |
| this.xHArrows = this.xPixel00 + 25; | |
| this.xVArrows = this.xPixel11 - Clazz.doubleToInt (this.right / 2); | |
| this.xPixel0 = this.xPixel00 + Clazz.doubleToInt (this.left * (1 - this.fX0)); | |
| this.xPixel10 = this.xPixel1 = this.xPixel11 - this.right; | |
| this.xPixels0 = this.xPixels = this.xPixel1 - this.xPixel0 + 1; | |
| this.yPixel000 = (this.fY0 == 0 ? 25 : 0) + Clazz.doubleToInt (this.height * this.fY0); | |
| this.yPixel00 = this.yPixel000 + Clazz.doubleToInt (marginalHeight * this.fracY * iSplit); | |
| this.yPixel11 = this.yPixel00 + Clazz.doubleToInt (marginalHeight * this.fracY) - 1; | |
| this.yHArrows = this.yPixel11 - 12; | |
| this.yPixel0 = this.yPixel00 + Clazz.doubleToInt (this.top / 2); | |
| this.yPixel1 = this.yPixel11 - Clazz.doubleToInt (this.bottom / 2); | |
| this.yPixels = this.yPixel1 - this.yPixel0 + 1; | |
| if (this.imageView != null && this.is2DSpectrum) { | |
| this.setImageWindow (); | |
| if (this.pd.display1D) { | |
| var widthRatio = (this.pd.display1D ? 1.0 * (this.xPixels0 - this.imageView.xPixels) / this.xPixels0 : 1); | |
| this.xPixels = Clazz.doubleToInt (Math.floor (widthRatio * this.xPixels0 * 0.8)); | |
| this.xPixel1 = this.xPixel0 + this.xPixels - 1; | |
| } else { | |
| this.xPixels = 0; | |
| this.xPixel1 = this.imageView.xPixel0 - 30; | |
| }}}, "~N"); | |
| Clazz.defineMethod (c$, "hasPoint", | |
| function (xPixel, yPixel) { | |
| return (xPixel >= this.xPixel00 && xPixel <= this.xPixel11 && yPixel >= this.yPixel000 && yPixel <= this.yPixel11 * this.nSplit); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isInPlotRegion", | |
| function (xPixel, yPixel) { | |
| return (xPixel >= this.xPixel0 && xPixel <= this.xPixel1 && yPixel >= this.yPixel0 && yPixel <= this.yPixel1); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "getSplitPoint", | |
| function (yPixel) { | |
| return Math.max (0, Math.min ((Clazz.doubleToInt ((yPixel - this.yPixel000) / (this.yPixel11 - this.yPixel00))), this.nSplit - 1)); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "isSplitWidget", | |
| function (xPixel, yPixel) { | |
| return this.isFrameBox (xPixel, yPixel, this.splitterX, this.splitterY); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isCloserWidget", | |
| function (xPixel, yPixel) { | |
| return this.isFrameBox (xPixel, yPixel, this.closerX, this.closerY); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "initGraphSet", | |
| function (startIndex, endIndex) { | |
| if (JSV.common.GraphSet.veryLightGrey == null) JSV.common.GraphSet.veryLightGrey = this.g2d.getColor3 (200, 200, 200); | |
| this.setPlotColors (JSV.common.ColorParameters.defaultPlotColors); | |
| this.xAxisLeftToRight = this.getSpectrumAt (0).shouldDisplayXAxisIncreasing (); | |
| this.setDrawXAxis (); | |
| var startIndices = Clazz.newIntArray (this.nSpectra, 0); | |
| var endIndices = Clazz.newIntArray (this.nSpectra, 0); | |
| this.bsSelected.setBits (0, this.nSpectra); | |
| this.allowStackedYScale = true; | |
| if (endIndex <= 0) endIndex = 2147483647; | |
| this.isSplittable = (this.nSpectra > 1); | |
| this.allowStacking = (this.spectra.get (0).isStackable ()); | |
| this.showAllStacked = this.allowStacking && (this.nSpectra > 1); | |
| for (var i = 0; i < this.nSpectra; i++) { | |
| var iLast = this.spectra.get (i).getXYCoords ().length - 1; | |
| startIndices[i] = JSV.common.Coordinate.intoRange (startIndex, 0, iLast); | |
| endIndices[i] = JSV.common.Coordinate.intoRange (endIndex, 0, iLast); | |
| this.allowStackedYScale = new Boolean (this.allowStackedYScale & (this.spectra.get (i).getYUnits ().equals (this.spectra.get (0).getYUnits ()) && this.spectra.get (i).getUserYFactor () == this.spectra.get (0).getUserYFactor ())).valueOf (); | |
| } | |
| this.getView (0, 0, 0, 0, startIndices, endIndices, null, null); | |
| this.viewList = new JU.Lst (); | |
| this.viewList.addLast (this.viewData); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "getView", | |
| function (x1, x2, y1, y2, startIndices, endIndices, viewScales, yScales) { | |
| var graphs = (this.graphsTemp.size () == 0 ? this.spectra : this.graphsTemp); | |
| var subspecs = this.getSpectrumAt (0).getSubSpectra (); | |
| var dontUseSubspecs = (subspecs == null || subspecs.size () == 2 && subspecs.get (1).isImaginary ()); | |
| var is2D = !this.getSpectrumAt (0).is1D (); | |
| var useFirstSubSpecOnly = false; | |
| if (is2D && useFirstSubSpecOnly || dontUseSubspecs && y1 == y2) { | |
| graphs = this.spectra; | |
| } else if (y1 == y2) { | |
| this.viewData = new JSV.common.ViewData (subspecs, y1, y2, this.getSpectrum ().isContinuous ()); | |
| graphs = null; | |
| }if (graphs != null) { | |
| this.viewData = new JSV.common.ViewData (graphs, y1, y2, startIndices, endIndices, this.getSpectrumAt (0).isContinuous (), is2D); | |
| if (x1 != x2) this.getScale ().setXRange (x1, x2); | |
| }if (viewScales != null) { | |
| JSV.common.ScaleData.copyScaleFactors (viewScales, this.viewData.getScaleData ()); | |
| if (yScales != null) JSV.common.ScaleData.copyYScales (yScales, this.viewData.getScaleData ()); | |
| this.getCurrentView (); | |
| }}, "~N,~N,~N,~N,~A,~A,~A,~A"); | |
| Clazz.defineMethod (c$, "isNearby", | |
| function (a1, a2, c, range) { | |
| var x = a1.getXVal (); | |
| var xp1 = c.toPixelX (x); | |
| var yp1 = this.toPixelY (a1.getYVal ()); | |
| x = a2.getXVal (); | |
| var xp2 = c.toPixelX (x); | |
| var yp2 = this.toPixelY (a2.getYVal ()); | |
| return (Math.abs (xp1 - xp2) + Math.abs (yp1 - yp2) < range); | |
| }, "JSV.common.Coordinate,JSV.common.Coordinate,JSV.common.XYScaleConverter,~N"); | |
| Clazz.defineMethod (c$, "setReversePlot", | |
| function (val) { | |
| this.reversePlot = val; | |
| if (this.reversePlot) this.closeDialogsExcept (JSV.common.Annotation.AType.NONE); | |
| this.setDrawXAxis (); | |
| }, "~B"); | |
| Clazz.defineMethod (c$, "setDrawXAxis", | |
| function () { | |
| this.drawXAxisLeftToRight = new Boolean (this.xAxisLeftToRight ^ this.reversePlot).valueOf (); | |
| for (var i = 0; i < this.spectra.size (); i++) (this.spectra.get (i)).setExportXAxisDirection (this.drawXAxisLeftToRight); | |
| }); | |
| Clazz.defineMethod (c$, "isInTopBar", | |
| function (xPixel, yPixel) { | |
| return (xPixel == this.fixX (xPixel) && yPixel > this.pin1Dx0.yPixel0 - 2 && yPixel < this.pin1Dx0.yPixel1); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isInTopBar2D", | |
| function (xPixel, yPixel) { | |
| return (this.imageView != null && xPixel == this.imageView.fixX (xPixel) && yPixel > this.pin2Dx0.yPixel0 - 2 && yPixel < this.pin2Dx0.yPixel1); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isInRightBar", | |
| function (xPixel, yPixel) { | |
| return (yPixel == this.fixY (yPixel) && xPixel > this.pin1Dy0.xPixel1 && xPixel < this.pin1Dy0.xPixel0 + 2); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isInRightBar2D", | |
| function (xPixel, yPixel) { | |
| return (this.imageView != null && yPixel == this.fixY (yPixel) && xPixel > this.pin2Dy0.xPixel1 && xPixel < this.pin2Dy0.xPixel0 + 2); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "toX0", | |
| function (xPixel) { | |
| return this.viewList.get (0).getScale ().toX0 (this.fixX (xPixel), this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "toY0", | |
| function (yPixel) { | |
| return this.viewList.get (0).getScale ().toY0 (this.fixY (yPixel), this.yPixel0, this.yPixel1); | |
| }, "~N"); | |
| Clazz.overrideMethod (c$, "toX", | |
| function (xPixel) { | |
| if (this.imageView != null && this.imageView.isXWithinRange (xPixel)) return this.imageView.toX (xPixel); | |
| return this.getScale ().toX (this.fixX (xPixel), this.xPixel1, this.drawXAxisLeftToRight); | |
| }, "~N"); | |
| Clazz.overrideMethod (c$, "toY", | |
| function (yPixel) { | |
| return this.getScale ().toY (yPixel, this.yPixel0); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "toPixelX", | |
| function (dx) { | |
| return this.getScale ().toPixelX (dx, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "toPixelY", | |
| function (yVal) { | |
| return this.getScale ().toPixelY (yVal, this.yPixel1); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "toPixelX0", | |
| function (x) { | |
| return this.viewList.get (0).getScale ().toPixelX0 (x, this.xPixel0, this.xPixel1, this.drawXAxisLeftToRight); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "toPixelY0", | |
| function (y) { | |
| return this.fixY (this.viewList.get (0).getScale ().toPixelY0 (y, this.yPixel0, this.yPixel1)); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "fixX", | |
| function (xPixel) { | |
| return JSV.common.Coordinate.intoRange (xPixel, this.xPixel0, this.xPixel1); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "fixY", | |
| function (yPixel) { | |
| return JSV.common.Coordinate.intoRange (yPixel, this.yPixel0, this.yPixel1); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "getXPixel0", | |
| function () { | |
| return this.xPixel0; | |
| }); | |
| Clazz.defineMethod (c$, "getXPixels", | |
| function () { | |
| return this.xPixels; | |
| }); | |
| Clazz.overrideMethod (c$, "getYPixels", | |
| function () { | |
| return this.yPixels; | |
| }); | |
| Clazz.defineMethod (c$, "getScale", | |
| function () { | |
| return this.viewData.getScale (); | |
| }); | |
| Clazz.defineMethod (c$, "toPixelYint", | |
| function (yVal) { | |
| return this.yPixel1 - Clazz.doubleToInt (Double.isNaN (yVal) ? -2147483648 : this.yPixels * yVal); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "findAnnotation2D", | |
| function (xy) { | |
| for (var i = this.annotations.size (); --i >= 0; ) { | |
| var a = this.annotations.get (i); | |
| if (this.isNearby (a, xy, this.imageView, 10)) return a; | |
| } | |
| return null; | |
| }, "JSV.common.Coordinate"); | |
| Clazz.defineMethod (c$, "addAnnotation", | |
| function (annotation, isToggle) { | |
| if (this.annotations == null) this.annotations = new JU.Lst (); | |
| var removed = false; | |
| for (var i = this.annotations.size (); --i >= 0; ) if (annotation.is2D ? this.isNearby (this.annotations.get (i), annotation, this.imageView, 10) : annotation.equals (this.annotations.get (i))) { | |
| removed = true; | |
| this.annotations.removeItemAt (i); | |
| } | |
| if (annotation.text.length > 0 && (!removed || !isToggle)) this.annotations.addLast (annotation); | |
| }, "JSV.common.Annotation,~B"); | |
| Clazz.defineMethod (c$, "setImageWindow", | |
| function () { | |
| this.imageView.setPixelWidthHeight (Clazz.doubleToInt ((this.pd.display1D ? 0.6 : 1) * this.xPixels0), this.yPixels); | |
| this.imageView.setXY0 (this.getSpectrumAt (0), Clazz.doubleToInt (Math.floor (this.xPixel10 - this.imageView.xPixels)), this.yPixel0); | |
| }); | |
| Clazz.defineMethod (c$, "findNearestMaxMin", | |
| function () { | |
| if (this.nSpectra > 1 && this.iSpectrumClicked < 0) return false; | |
| this.xValueMovedTo = this.getSpectrum ().findXForPeakNearest (this.xValueMovedTo); | |
| this.setXPixelMovedTo (this.xValueMovedTo, 1.7976931348623157E308, 0, 0); | |
| return !Double.isNaN (this.xValueMovedTo); | |
| }); | |
| Clazz.defineMethod (c$, "setXPixelMovedTo", | |
| function (x1, x2, xPixel1, xPixel2) { | |
| if (x1 == 1.7976931348623157E308 && x2 == 1.7976931348623157E308) { | |
| this.xPixelMovedTo = xPixel1; | |
| this.xPixelMovedTo2 = xPixel2; | |
| if (this.isLinked && this.sticky2Dcursor) { | |
| this.pd.setlinkedXMove (this, this.toX (this.xPixelMovedTo), false); | |
| }return; | |
| }if (x1 != 1.7976931348623157E308) { | |
| this.xPixelMovedTo = this.toPixelX (x1); | |
| if (this.fixX (this.xPixelMovedTo) != this.xPixelMovedTo) this.xPixelMovedTo = -1; | |
| this.xPixelMovedTo2 = -1; | |
| if (x1 != 1e10) this.setSpectrumClicked (this.getFixedSelectedSpectrumIndex ()); | |
| }if (x2 != 1.7976931348623157E308) { | |
| this.xPixelMovedTo2 = this.toPixelX (x2); | |
| }}, "~N,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "processPendingMeasurement", | |
| function (xPixel, yPixel, clickCount) { | |
| if (!this.isInPlotRegion (xPixel, yPixel) || this.is2dClick (xPixel, yPixel)) { | |
| this.pendingMeasurement = null; | |
| return; | |
| }var x = this.toX (xPixel); | |
| var y = this.toY (yPixel); | |
| var x0 = x; | |
| var m; | |
| switch (clickCount) { | |
| case 0: | |
| this.pendingMeasurement.setPt2 (this.toX (xPixel), this.toY (yPixel)); | |
| break; | |
| case 3: | |
| case 2: | |
| if (this.iSpectrumClicked < 0) return; | |
| var spec = this.spectra.get (this.iSpectrumClicked); | |
| this.setScale (this.iSpectrumClicked); | |
| if (clickCount == 3) { | |
| } else { | |
| m = this.findMeasurement (this.selectedSpectrumMeasurements, xPixel, yPixel, 1); | |
| if (m != null) { | |
| x = m.getXVal (); | |
| y = m.getYVal (); | |
| } else if ((m = this.findMeasurement (this.selectedSpectrumMeasurements, xPixel, yPixel, 2)) != null) { | |
| x = m.getXVal2 (); | |
| y = m.getYVal2 (); | |
| } else { | |
| x = this.getNearestPeak (spec, x, y); | |
| }}this.pendingMeasurement = new JSV.common.Measurement ().setM1 (x, y, spec); | |
| this.pendingMeasurement.setPt2 (x0, y); | |
| this.pd.setTaintedAll (); | |
| this.pd.repaint (); | |
| break; | |
| case 1: | |
| case -2: | |
| case -3: | |
| var isOK = (this.pendingMeasurement != null && this.isVisible (this.getDialog (JSV.common.Annotation.AType.Measurements, -1))); | |
| while (isOK) { | |
| this.setScale (this.getSpectrumIndex (this.pendingMeasurement.spec)); | |
| if (clickCount != 3) { | |
| if (!this.findNearestMaxMin ()) { | |
| isOK = false; | |
| break; | |
| }xPixel = this.xPixelMovedTo; | |
| }x = this.toX (xPixel); | |
| y = this.toY (yPixel); | |
| this.pendingMeasurement.setPt2 (x, y); | |
| if (this.pendingMeasurement.text.length == 0) { | |
| isOK = false; | |
| break; | |
| }this.setMeasurement (this.pendingMeasurement); | |
| if (clickCount != 1) { | |
| isOK = false; | |
| break; | |
| }this.setSpectrumClicked (this.getSpectrumIndex (this.pendingMeasurement.spec)); | |
| this.pendingMeasurement = new JSV.common.Measurement ().setM1 (x, y, this.pendingMeasurement.spec); | |
| break; | |
| } | |
| if (!isOK) this.pendingMeasurement = null; | |
| this.pd.setTaintedAll (); | |
| this.pd.repaint (); | |
| break; | |
| case 5: | |
| if (this.findNearestMaxMin ()) { | |
| var iSpec = this.getFixedSelectedSpectrumIndex (); | |
| if (Double.isNaN (this.lastXMax) || this.lastSpecClicked != iSpec || this.pendingMeasurement == null) { | |
| this.lastXMax = this.xValueMovedTo; | |
| this.lastSpecClicked = iSpec; | |
| this.pendingMeasurement = new JSV.common.Measurement ().setM1 (this.xValueMovedTo, this.yValueMovedTo, this.spectra.get (iSpec)); | |
| } else { | |
| this.pendingMeasurement.setPt2 (this.xValueMovedTo, this.yValueMovedTo); | |
| if (this.pendingMeasurement.text.length > 0) this.setMeasurement (this.pendingMeasurement); | |
| this.pendingMeasurement = null; | |
| this.lastXMax = NaN; | |
| }} else { | |
| this.lastXMax = NaN; | |
| }break; | |
| } | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "checkIntegralNormalizationClick", | |
| function (xPixel, yPixel) { | |
| if (this.selectedSpectrumIntegrals == null) return false; | |
| var integral = this.findMeasurement (this.selectedSpectrumIntegrals, xPixel, yPixel, -5); | |
| if (integral == null) return false; | |
| this.selectedIntegral = integral; | |
| this.pd.normalizeIntegral (); | |
| this.updateDialog (JSV.common.Annotation.AType.Integration, -1); | |
| this.setSpectrumClicked (this.getSpectrumIndex (integral.spec)); | |
| return true; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "getNearestPeak", | |
| function (spec, x, y) { | |
| var x0 = JSV.common.Coordinate.getNearestXWithYAbove (spec.getXYCoords (), x, y, spec.isInverted (), false); | |
| var x1 = JSV.common.Coordinate.getNearestXWithYAbove (spec.getXYCoords (), x, y, spec.isInverted (), true); | |
| return (Double.isNaN (x0) ? x1 : Double.isNaN (x1) ? x0 : Math.abs (x0 - x) < Math.abs (x1 - x) ? x0 : x1); | |
| }, "JSV.common.Spectrum,~N,~N"); | |
| Clazz.defineMethod (c$, "findMeasurement", | |
| function (measurements, xPixel, yPixel, iPt) { | |
| if (measurements == null || measurements.size () == 0) return null; | |
| if (iPt == 0) { | |
| var m = this.findMeasurement (measurements, xPixel, yPixel, -1); | |
| if (m != null || Clazz.instanceOf (measurements.get (0), JSV.common.Integral)) return m; | |
| return this.findMeasurement (measurements, xPixel, yPixel, -2); | |
| }for (var i = measurements.size (); --i >= 0; ) { | |
| var m = measurements.get (i); | |
| var x1; | |
| var x2; | |
| var y1; | |
| var y2; | |
| if (Clazz.instanceOf (m, JSV.common.Integral)) { | |
| x1 = x2 = this.toPixelX (m.getXVal2 ()); | |
| y1 = this.toPixelYint (m.getYVal ()); | |
| y2 = this.toPixelYint (m.getYVal2 ()); | |
| } else { | |
| x1 = this.toPixelX (m.getXVal ()); | |
| x2 = this.toPixelX (m.getXVal2 ()); | |
| y1 = y2 = (iPt == -2 ? this.yPixel1 - 2 : this.toPixelY (m.getYVal ())); | |
| }switch (iPt) { | |
| case 1: | |
| if (Math.abs (xPixel - x1) + Math.abs (yPixel - y1) < 4) return m; | |
| break; | |
| case 2: | |
| if (Math.abs (xPixel - x2) + Math.abs (yPixel - y2) < 4) return m; | |
| break; | |
| case -5: | |
| y1 = y2 = Clazz.doubleToInt ((y1 + y2) / 2); | |
| x2 = x1 + 20; | |
| default: | |
| case -1: | |
| case -2: | |
| if (JSV.common.GraphSet.isOnLine (xPixel, yPixel, x1, y1, x2, y2)) return m; | |
| break; | |
| } | |
| } | |
| return null; | |
| }, "JSV.common.MeasurementData,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "setMeasurement", | |
| function (m) { | |
| var iSpec = this.getSpectrumIndex (m.spec); | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Measurements, iSpec); | |
| if (ad == null) this.addDialog (iSpec, JSV.common.Annotation.AType.Measurements, ad = new JSV.common.MeasurementData (JSV.common.Annotation.AType.Measurements, m.spec)); | |
| ad.getData ().addLast (m.copyM ()); | |
| this.updateDialog (JSV.common.Annotation.AType.Measurements, -1); | |
| }, "JSV.common.Measurement"); | |
| Clazz.defineMethod (c$, "checkArrowUpDownClick", | |
| function (xPixel, yPixel) { | |
| var ok = false; | |
| var f = (this.isArrowClick (xPixel, yPixel, 3) ? JSV.common.GraphSet.RT2 : this.isArrowClick (xPixel, yPixel, 4) ? 1 / JSV.common.GraphSet.RT2 : 0); | |
| if (f != 0) { | |
| if (this.nSplit > 1) this.setSpectrumSelected (this.iSpectrumMovedTo); | |
| if ((this.nSpectra == 1 || this.iSpectrumSelected >= 0) && this.spectra.get (this.getFixedSelectedSpectrumIndex ()).isTransmittance ()) f = 1 / f; | |
| this.viewData.scaleSpectrum (this.imageView == null ? this.iSpectrumSelected : -2, f); | |
| ok = true; | |
| } else if (this.isArrowClick (xPixel, yPixel, -1)) { | |
| this.resetViewCompletely (); | |
| ok = true; | |
| }if (ok) { | |
| if (this.imageView != null) { | |
| this.update2dImage (false); | |
| this.resetPinsFromView (); | |
| }this.pd.setTaintedAll (); | |
| }return ok; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "resetViewCompletely", | |
| function () { | |
| this.clearViews (); | |
| if (this.showAllStacked && !this.stackSelected) this.closeDialogsExcept (JSV.common.Annotation.AType.NONE); | |
| this.viewData.resetScaleFactors (); | |
| this.updateDialogs (); | |
| }); | |
| Clazz.defineMethod (c$, "checkArrowLeftRightClick", | |
| function (xPixel, yPixel) { | |
| if (this.haveLeftRightArrows) { | |
| var dx = (this.isArrowClick (xPixel, yPixel, 1) ? -1 : this.isArrowClick (xPixel, yPixel, 2) ? 1 : 0); | |
| if (dx != 0) { | |
| this.setSpectrumClicked ((this.iSpectrumSelected + dx) % this.nSpectra); | |
| return true; | |
| }if (this.isArrowClick (xPixel, yPixel, 0)) { | |
| if (this.showAllStacked) { | |
| this.showAllStacked = false; | |
| this.setSpectrumClicked (this.getFixedSelectedSpectrumIndex ()); | |
| return true; | |
| }this.showAllStacked = this.allowStacking; | |
| this.setSpectrumSelected (-1); | |
| this.stackSelected = false; | |
| }}return false; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isArrowClick", | |
| function (xPixel, yPixel, type) { | |
| var pt; | |
| switch (type) { | |
| case 3: | |
| case 4: | |
| case -1: | |
| pt = Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2) + (type == 3 ? -1 : type == 4 ? 1 : 0) * 15; | |
| return (Math.abs (this.xVArrows - xPixel) < 10 && Math.abs (pt - yPixel) < 10); | |
| case 1: | |
| case 2: | |
| case 0: | |
| pt = this.xHArrows + (type == 1 ? -1 : type == 2 ? 1 : 0) * 15; | |
| return (Math.abs (pt - xPixel) < 10 && Math.abs (this.yHArrows - yPixel) < 10); | |
| } | |
| return false; | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "setWidgetValueByUser", | |
| function (pw) { | |
| var sval; | |
| if (pw === this.cur2Dy) sval = "" + this.imageView.toSubspectrumIndex (pw.yPixel0); | |
| else if (pw === this.pin1Dx01) sval = "" + Math.min (this.pin1Dx0.getXVal (), this.pin1Dx1.getXVal ()) + " - " + Math.max (this.pin1Dx0.getXVal (), this.pin1Dx1.getXVal ()); | |
| else if (pw === this.pin1Dy01) sval = "" + Math.min (this.pin1Dy0.getYVal (), this.pin1Dy1.getYVal ()) + " - " + Math.max (this.pin1Dy0.getYVal (), this.pin1Dy1.getYVal ()); | |
| else if (pw === this.pin2Dx01) sval = "" + Math.min (this.pin2Dx0.getXVal (), this.pin2Dx1.getXVal ()) + " - " + Math.max (this.pin2Dx0.getXVal (), this.pin2Dx1.getXVal ()); | |
| else if (pw === this.pin2Dy01) sval = "" + Clazz.doubleToInt (Math.min (this.pin2Dy0.getYVal (), this.pin2Dy1.getYVal ())) + " - " + Clazz.doubleToInt (Math.max (this.pin2Dy0.getYVal (), this.pin2Dy1.getYVal ())); | |
| else sval = "" + pw.getValue (); | |
| sval = this.pd.getInput ("New value?", "Set Slider", sval); | |
| if (sval == null) return; | |
| sval = sval.trim (); | |
| try { | |
| if (pw === this.pin1Dx01 || pw === this.pin1Dy01 || pw === this.pin2Dx01 || pw === this.pin2Dy01) { | |
| var pt = sval.indexOf ("-", 1); | |
| if (pt < 0) return; | |
| var val1 = Double.$valueOf (sval.substring (0, pt)).doubleValue (); | |
| var val2 = Double.$valueOf (sval.substring (pt + 1)).doubleValue (); | |
| if (pw === this.pin1Dx01) { | |
| this.doZoom (val1, this.pin1Dy0.getYVal (), val2, this.pin1Dy1.getYVal (), true, false, false, true, true); | |
| } else if (pw === this.pin1Dy01) { | |
| this.doZoom (this.pin1Dx0.getXVal (), val1, this.pin1Dx1.getXVal (), val2, this.imageView == null, this.imageView == null, false, false, true); | |
| } else if (pw === this.pin2Dx01) { | |
| this.imageView.setView0 (this.imageView.toPixelX0 (val1), this.pin2Dy0.yPixel0, this.imageView.toPixelX0 (val2), this.pin2Dy1.yPixel0); | |
| this.doZoom (val1, this.pin1Dy0.getYVal (), val2, this.pin1Dy1.getYVal (), false, false, false, true, true); | |
| } else if (pw === this.pin2Dy01) { | |
| this.imageView.setView0 (this.pin2Dx0.xPixel0, this.imageView.toPixelY0 (val1), this.pin2Dx1.xPixel0, this.imageView.toPixelY0 (val2)); | |
| this.doZoom (this.imageView.toX (this.imageView.xPixel0), this.getScale ().minY, this.imageView.toX (this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale ().maxY, false, false, false, false, true); | |
| }} else { | |
| var val = Double.$valueOf (sval).doubleValue (); | |
| if (pw.isXtype) { | |
| var val2 = (pw === this.pin1Dx0 || pw === this.cur2Dx0 || pw === this.pin2Dx0 ? this.pin1Dx1.getXVal () : this.pin1Dx0.getXVal ()); | |
| this.doZoom (val, 0, val2, 0, !pw.is2D, false, false, true, true); | |
| } else if (pw === this.cur2Dy) { | |
| this.setCurrentSubSpectrum (Clazz.doubleToInt (val)); | |
| } else if (pw === this.pin2Dy0 || pw === this.pin2Dy1) { | |
| var val2 = (pw === this.pin2Dy0 ? this.pin2Dy1.yPixel0 : this.pin2Dy0.yPixel0); | |
| this.imageView.setView0 (this.pin2Dx0.xPixel0, this.imageView.subIndexToPixelY (Clazz.doubleToInt (val)), this.pin2Dx1.xPixel0, val2); | |
| } else { | |
| var val2 = (pw === this.pin1Dy0 ? this.pin1Dy1.getYVal () : this.pin1Dy0.getYVal ()); | |
| this.doZoom (this.pin1Dx0.getXVal (), val, this.pin1Dx1.getXVal (), val2, this.imageView == null, this.imageView == null, false, false, true); | |
| }}} catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| } else { | |
| throw e; | |
| } | |
| } | |
| }, "JSV.common.PlotWidget"); | |
| Clazz.defineMethod (c$, "removeAllHighlights", | |
| function (spec) { | |
| if (spec == null) this.highlights.clear (); | |
| else for (var i = this.highlights.size (); --i >= 0; ) if (this.highlights.get (i).spectrum === spec) this.highlights.removeItemAt (i); | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "setCoordClicked", | |
| function (xPixel, x, y) { | |
| if (y == 0) this.nextClickForSetPeak = null; | |
| if (Double.isNaN (x)) { | |
| this.pd.coordClicked = null; | |
| this.pd.coordsClicked = null; | |
| return null; | |
| }this.pd.coordClicked = new JSV.common.Coordinate ().set (this.lastClickX = x, y); | |
| this.pd.coordsClicked = this.getSpectrum ().getXYCoords (); | |
| this.pd.xPixelClicked = (this.lastPixelX = xPixel); | |
| return this.pd.coordClicked; | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "setWidgets", | |
| function (needNewPins, subIndex, doDraw1DObjects) { | |
| if (needNewPins || this.pin1Dx0 == null) { | |
| if (this.zoomBox1D == null) this.newPins (); | |
| else this.resetPinPositions (); | |
| }this.setDerivedPins (subIndex); | |
| this.setPinSliderPositions (doDraw1DObjects); | |
| }, "~B,~N,~B"); | |
| Clazz.defineMethod (c$, "newPins", | |
| function () { | |
| this.zoomBox1D = new JSV.common.PlotWidget ("zoomBox1D"); | |
| this.pin1Dx0 = new JSV.common.PlotWidget ("pin1Dx0"); | |
| this.pin1Dx1 = new JSV.common.PlotWidget ("pin1Dx1"); | |
| this.pin1Dy0 = new JSV.common.PlotWidget ("pin1Dy0"); | |
| this.pin1Dy1 = new JSV.common.PlotWidget ("pin1Dy1"); | |
| this.pin1Dx01 = new JSV.common.PlotWidget ("pin1Dx01"); | |
| this.pin1Dy01 = new JSV.common.PlotWidget ("pin1Dy01"); | |
| this.cur1D2x1 = new JSV.common.PlotWidget ("cur1D2x1"); | |
| this.cur1D2x1.color = JSV.common.ScriptToken.PEAKTABCOLOR; | |
| this.cur1D2x2 = new JSV.common.PlotWidget ("cur1D2x2"); | |
| this.cur1D2x2.color = JSV.common.ScriptToken.PEAKTABCOLOR; | |
| if (this.imageView != null) { | |
| this.zoomBox2D = new JSV.common.PlotWidget ("zoomBox2D"); | |
| this.pin2Dx0 = new JSV.common.PlotWidget ("pin2Dx0"); | |
| this.pin2Dx1 = new JSV.common.PlotWidget ("pin2Dx1"); | |
| this.pin2Dy0 = new JSV.common.PlotWidget ("pin2Dy0"); | |
| this.pin2Dy1 = new JSV.common.PlotWidget ("pin2Dy1"); | |
| this.pin2Dx01 = new JSV.common.PlotWidget ("pin2Dx01"); | |
| this.pin2Dy01 = new JSV.common.PlotWidget ("pin2Dy01"); | |
| this.cur2Dx0 = new JSV.common.PlotWidget ("cur2Dx0"); | |
| this.cur2Dx1 = new JSV.common.PlotWidget ("cur2Dx1"); | |
| this.cur2Dy = new JSV.common.PlotWidget ("cur2Dy"); | |
| this.pin2Dy0.setY (0, this.imageView.toPixelY0 (0)); | |
| var n = this.getSpectrumAt (0).getSubSpectra ().size (); | |
| this.pin2Dy1.setY (n, this.imageView.toPixelY0 (n)); | |
| }this.setWidgetX (this.pin1Dx0, this.getScale ().minX); | |
| this.setWidgetX (this.pin1Dx1, this.getScale ().maxX); | |
| this.setWidgetY (this.pin1Dy0, this.getScale ().minY); | |
| this.setWidgetY (this.pin1Dy1, this.getScale ().maxY); | |
| this.widgets = Clazz.newArray (-1, [this.zoomBox1D, this.zoomBox2D, this.pin1Dx0, this.pin1Dx01, this.pin1Dx1, this.pin1Dy0, this.pin1Dy01, this.pin1Dy1, this.pin2Dx0, this.pin2Dx01, this.pin2Dx1, this.pin2Dy0, this.pin2Dy01, this.pin2Dy1, this.cur2Dx0, this.cur2Dx1, this.cur2Dy, this.cur1D2x1, this.cur1D2x2]); | |
| }); | |
| Clazz.defineMethod (c$, "setWidgetX", | |
| function (pw, x) { | |
| pw.setX (x, this.toPixelX0 (x)); | |
| }, "JSV.common.PlotWidget,~N"); | |
| Clazz.defineMethod (c$, "setWidgetY", | |
| function (pw, y) { | |
| pw.setY (y, this.toPixelY0 (y)); | |
| }, "JSV.common.PlotWidget,~N"); | |
| Clazz.defineMethod (c$, "resetPinsFromView", | |
| function () { | |
| if (this.pin1Dx0 == null) return; | |
| this.setWidgetX (this.pin1Dx0, this.getScale ().minXOnScale); | |
| this.setWidgetX (this.pin1Dx1, this.getScale ().maxXOnScale); | |
| this.setWidgetY (this.pin1Dy0, this.getScale ().minYOnScale); | |
| this.setWidgetY (this.pin1Dy1, this.getScale ().maxYOnScale); | |
| }); | |
| Clazz.defineMethod (c$, "resetPinPositions", | |
| function () { | |
| this.resetX (this.pin1Dx0); | |
| this.resetY (this.pin1Dy0); | |
| this.resetY (this.pin1Dy1); | |
| if (this.imageView == null) { | |
| if (this.gs2dLinkedX != null) this.resetX (this.cur1D2x1); | |
| if (this.gs2dLinkedY != null) this.resetX (this.cur1D2x2); | |
| } else { | |
| this.pin2Dy0.setY (this.pin2Dy0.getYVal (), this.imageView.toPixelY0 (this.pin2Dy0.getYVal ())); | |
| this.pin2Dy1.setY (this.pin2Dy1.getYVal (), this.imageView.toPixelY0 (this.pin2Dy1.getYVal ())); | |
| }}); | |
| Clazz.defineMethod (c$, "resetX", | |
| function (p) { | |
| this.setWidgetX (p, p.getXVal ()); | |
| }, "JSV.common.PlotWidget"); | |
| Clazz.defineMethod (c$, "resetY", | |
| function (p) { | |
| this.setWidgetY (p, p.getYVal ()); | |
| }, "JSV.common.PlotWidget"); | |
| Clazz.defineMethod (c$, "setPinSliderPositions", | |
| function (doDraw1DObjects) { | |
| this.pin1Dx0.yPixel0 = this.pin1Dx1.yPixel0 = this.pin1Dx01.yPixel0 = this.yPixel0 - 5; | |
| this.pin1Dx0.yPixel1 = this.pin1Dx1.yPixel1 = this.pin1Dx01.yPixel1 = this.yPixel0; | |
| this.cur1D2x1.yPixel1 = this.cur1D2x2.yPixel1 = this.yPixel0 - 5; | |
| this.cur1D2x1.yPixel0 = this.cur1D2x2.yPixel0 = this.yPixel1 + 6; | |
| if (this.imageView == null) { | |
| this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.xPixel1 + 5; | |
| this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.xPixel1; | |
| } else { | |
| this.pin1Dy0.xPixel0 = this.pin1Dy1.xPixel0 = this.pin1Dy01.xPixel0 = this.imageView.xPixel1 + 15; | |
| this.pin1Dy0.xPixel1 = this.pin1Dy1.xPixel1 = this.pin1Dy01.xPixel1 = this.imageView.xPixel1 + 10; | |
| this.pin2Dx0.yPixel0 = this.pin2Dx1.yPixel0 = this.pin2Dx01.yPixel0 = this.yPixel0 - 5; | |
| this.pin2Dx0.yPixel1 = this.pin2Dx1.yPixel1 = this.pin2Dx01.yPixel1 = this.yPixel0; | |
| this.pin2Dy0.xPixel0 = this.pin2Dy1.xPixel0 = this.pin2Dy01.xPixel0 = this.imageView.xPixel1 + 5; | |
| this.pin2Dy0.xPixel1 = this.pin2Dy1.xPixel1 = this.pin2Dy01.xPixel1 = this.imageView.xPixel1; | |
| this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; | |
| this.cur2Dx0.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; | |
| this.cur2Dx0.yPixel0 = this.cur2Dx1.yPixel0 = this.yPixel1 + 6; | |
| this.cur2Dx1.yPixel1 = this.cur2Dx1.yPixel1 = this.yPixel0 - 5; | |
| this.cur2Dy.xPixel0 = (doDraw1DObjects ? Clazz.doubleToInt ((this.xPixel1 + this.imageView.xPixel0) / 2) : this.imageView.xPixel0 - 6); | |
| this.cur2Dy.xPixel1 = this.imageView.xPixel1 + 5; | |
| }}, "~B"); | |
| Clazz.defineMethod (c$, "setDerivedPins", | |
| function (subIndex) { | |
| this.triggered = true; | |
| if (this.gs2dLinkedX != null) this.cur1D2x1.setX (this.cur1D2x1.getXVal (), this.toPixelX (this.cur1D2x1.getXVal ())); | |
| if (this.gs2dLinkedY != null) this.cur1D2x2.setX (this.cur1D2x2.getXVal (), this.toPixelX (this.cur1D2x2.getXVal ())); | |
| this.pin1Dx01.setX (0, Clazz.doubleToInt ((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); | |
| this.pin1Dy01.setY (0, Clazz.doubleToInt ((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2)); | |
| this.pin1Dx01.setEnabled (Math.min (this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) > this.xPixel0 || Math.max (this.pin1Dx0.xPixel0, this.pin1Dx1.xPixel0) < this.xPixel1); | |
| this.pin1Dy01.setEnabled (Math.min (this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) > Math.min (this.toPixelY (this.getScale ().minY), this.toPixelY (this.getScale ().maxY)) || Math.max (this.pin1Dy0.yPixel0, this.pin1Dy1.yPixel0) < Math.max (this.toPixelY (this.getScale ().minY), this.toPixelY (this.getScale ().maxY))); | |
| if (this.imageView == null) return; | |
| var x = this.pin1Dx0.getXVal (); | |
| this.cur2Dx0.setX (x, this.imageView.toPixelX (x)); | |
| x = this.pin1Dx1.getXVal (); | |
| this.cur2Dx1.setX (x, this.imageView.toPixelX (x)); | |
| x = this.imageView.toX (this.imageView.xPixel0); | |
| this.pin2Dx0.setX (x, this.imageView.toPixelX0 (x)); | |
| x = this.imageView.toX (this.imageView.xPixel1); | |
| this.pin2Dx1.setX (x, this.imageView.toPixelX0 (x)); | |
| this.pin2Dx01.setX (0, Clazz.doubleToInt ((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2)); | |
| var y = this.imageView.imageHeight - 1 - this.imageView.yView1; | |
| this.pin2Dy0.setY (y, this.imageView.toPixelY0 (y)); | |
| y = this.imageView.imageHeight - 1 - this.imageView.yView2; | |
| this.pin2Dy1.setY (y, this.imageView.toPixelY0 (y)); | |
| this.pin2Dy01.setY (0, Clazz.doubleToInt ((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2)); | |
| this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = this.imageView.subIndexToPixelY (subIndex); | |
| this.pin2Dx01.setEnabled (Math.min (this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel0) != this.imageView.xPixel0 || Math.max (this.pin2Dx0.xPixel0, this.pin2Dx1.xPixel1) != this.imageView.xPixel1); | |
| this.pin2Dy01.setEnabled (Math.min (this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel0) != this.yPixel0 || Math.max (this.pin2Dy0.yPixel0, this.pin2Dy1.yPixel1) != this.yPixel1); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "doZoom", | |
| function (initX, initY, finalX, finalY, is1D, is1DY, checkRange, checkLinked, addZoom) { | |
| if (initX == finalX) { | |
| initX = this.getScale ().minXOnScale; | |
| finalX = this.getScale ().maxXOnScale; | |
| } else if (this.isLinked && checkLinked) this.pd.doZoomLinked (this, initX, finalX, addZoom, checkRange, is1D); | |
| if (initX > finalX) { | |
| var tempX = initX; | |
| initX = finalX; | |
| finalX = tempX; | |
| }if (initY > finalY) { | |
| var tempY = initY; | |
| initY = finalY; | |
| finalY = tempY; | |
| }var is2DGrayScaleChange = (!is1D && this.imageView != null && (this.imageView.minZ != initY || this.imageView.maxZ != finalY)); | |
| if (!this.zoomEnabled && !is2DGrayScaleChange) return; | |
| if (checkRange) { | |
| if (!this.getScale ().isInRangeX (initX) && !this.getScale ().isInRangeX (finalX)) return; | |
| if (!this.getScale ().isInRangeX (initX)) { | |
| initX = this.getScale ().minX; | |
| } else if (!this.getScale ().isInRangeX (finalX)) { | |
| finalX = this.getScale ().maxX; | |
| }} else { | |
| }this.pd.setTaintedAll (); | |
| var viewScales = this.viewData.getScaleData (); | |
| var startIndices = Clazz.newIntArray (this.nSpectra, 0); | |
| var endIndices = Clazz.newIntArray (this.nSpectra, 0); | |
| this.graphsTemp.clear (); | |
| var subspecs = this.getSpectrumAt (0).getSubSpectra (); | |
| var dontUseSubspecs = (subspecs == null || subspecs.size () == 2); | |
| var is2D = !this.getSpectrumAt (0).is1D (); | |
| if (!is2D && !dontUseSubspecs) { | |
| this.graphsTemp.addLast (this.getSpectrum ()); | |
| if (!JSV.common.ScaleData.setDataPointIndices (this.graphsTemp, initX, finalX, 3, startIndices, endIndices)) return; | |
| } else { | |
| if (!JSV.common.ScaleData.setDataPointIndices (this.spectra, initX, finalX, 3, startIndices, endIndices)) return; | |
| }var y1 = initY; | |
| var y2 = finalY; | |
| var isXOnly = (y1 == y2); | |
| if (isXOnly) { | |
| var f = (!is2DGrayScaleChange && is1D ? f = this.getScale ().spectrumScaleFactor : 1); | |
| if (Math.abs (f - 1) < 0.0001) { | |
| y1 = this.getScale ().minYOnScale; | |
| y2 = this.getScale ().maxYOnScale; | |
| }}var yScales = null; | |
| if (isXOnly || is1DY) { | |
| this.getCurrentView (); | |
| yScales = this.viewData.getNewScales (this.iSpectrumSelected, isXOnly, y1, y2); | |
| }this.getView (initX, finalX, y1, y2, startIndices, endIndices, viewScales, yScales); | |
| this.setXPixelMovedTo (1E10, 1.7976931348623157E308, 0, 0); | |
| this.setWidgetX (this.pin1Dx0, initX); | |
| this.setWidgetX (this.pin1Dx1, finalX); | |
| this.setWidgetY (this.pin1Dy0, y1); | |
| this.setWidgetY (this.pin1Dy1, y2); | |
| if (this.imageView == null) { | |
| this.updateDialogs (); | |
| } else { | |
| var isub = this.getSpectrumAt (0).getSubIndex (); | |
| var ifix = this.imageView.fixSubIndex (isub); | |
| if (ifix != isub) this.setCurrentSubSpectrum (ifix); | |
| if (is2DGrayScaleChange) this.update2dImage (false); | |
| }if (addZoom) this.addCurrentZoom (); | |
| }, "~N,~N,~N,~N,~B,~B,~B,~B,~B"); | |
| Clazz.defineMethod (c$, "updateDialogs", | |
| function () { | |
| this.updateDialog (JSV.common.Annotation.AType.PeakList, -1); | |
| this.updateDialog (JSV.common.Annotation.AType.Measurements, -1); | |
| }); | |
| Clazz.defineMethod (c$, "setCurrentSubSpectrum", | |
| function (i) { | |
| var spec0 = this.getSpectrumAt (0); | |
| i = spec0.setCurrentSubSpectrum (i); | |
| if (spec0.isForcedSubset ()) this.viewData.setXRangeForSubSpectrum (this.getSpectrum ().getXYCoords ()); | |
| this.pd.notifySubSpectrumChange (i, this.getSpectrum ()); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "addCurrentZoom", | |
| function () { | |
| if (this.viewList.size () > this.currentZoomIndex + 1) for (var i = this.viewList.size () - 1; i > this.currentZoomIndex; i--) this.viewList.removeItemAt (i); | |
| this.viewList.addLast (this.viewData); | |
| this.currentZoomIndex++; | |
| }); | |
| Clazz.defineMethod (c$, "setZoomTo", | |
| function (i) { | |
| this.currentZoomIndex = i; | |
| this.viewData = this.viewList.get (i); | |
| this.resetPinsFromView (); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "clearViews", | |
| function () { | |
| if (this.isLinked) { | |
| this.pd.clearLinkViews (this); | |
| }this.setZoom (0, 0, 0, 0); | |
| for (var i = this.viewList.size (); --i >= 1; ) this.viewList.removeItemAt (i); | |
| }); | |
| Clazz.defineMethod (c$, "drawAll", | |
| function (gMain, gFront, gBack, iSplit, needNewPins, doAll) { | |
| this.g2d = this.pd.g2d; | |
| this.gMain = gMain; | |
| var spec0 = this.getSpectrumAt (0); | |
| var subIndex = spec0.getSubIndex (); | |
| this.is2DSpectrum = (!spec0.is1D () && (this.isLinked || this.pd.getBoolean (JSV.common.ScriptToken.DISPLAY2D)) && (this.imageView != null || this.get2DImage (spec0))); | |
| if (this.imageView != null && doAll) { | |
| if (this.pd.isPrinting && this.g2d !== this.pd.g2d0) this.g2d.newGrayScaleImage (gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, this.imageView.getBuffer ()); | |
| if (this.is2DSpectrum) this.setPositionForFrame (iSplit); | |
| this.draw2DImage (); | |
| }var iSelected = (this.stackSelected || !this.showAllStacked ? this.iSpectrumSelected : -1); | |
| var doYScale = (!this.showAllStacked || this.nSpectra == 1 || iSelected >= 0); | |
| var doDraw1DObjects = (this.imageView == null || this.pd.display1D); | |
| var n = (iSelected >= 0 ? 1 : 0); | |
| var iSpectrumForScale = this.getFixedSelectedSpectrumIndex (); | |
| if (doDraw1DObjects && doAll) { | |
| this.fillBox (gMain, this.xPixel0, this.yPixel0, this.xPixel1, this.yPixel1, JSV.common.ScriptToken.PLOTAREACOLOR); | |
| if (iSelected < 0) { | |
| doYScale = true; | |
| for (var i = 0; i < this.nSpectra; i++) if (this.doPlot (i, iSplit)) { | |
| if (n++ == 0) continue; | |
| doYScale = new Boolean (doYScale & this.viewData.areYScalesSame (i - 1, i)).valueOf (); | |
| } | |
| }}var iSpecForFrame = (this.nSpectra == 1 ? 0 : !this.showAllStacked ? this.iSpectrumMovedTo : this.iSpectrumSelected); | |
| var g2 = (gBack === gMain ? gFront : gBack); | |
| if (doAll) { | |
| var addCurrentBox = (this.pd.getCurrentGraphSet () === this && !this.isLinked && (!this.isSplittable || (this.nSplit == 1 || this.pd.currentSplitPoint == iSplit))); | |
| var drawUpDownArrows = (this.zoomEnabled && !this.isDrawNoSpectra () && this.pd.isCurrentGraphSet (this) && this.spectra.get (0).isScalable () && (addCurrentBox || this.nSpectra == 1) && (this.nSplit == 1 || this.pd.currentSplitPoint == this.iSpectrumMovedTo)); | |
| var addSplitBox = this.isSplittable; | |
| this.drawFrame (gMain, iSpecForFrame, addCurrentBox, addSplitBox, drawUpDownArrows); | |
| }if (this.pd.isCurrentGraphSet (this) && iSplit == this.pd.currentSplitPoint && (n < 2 || this.iSpectrumSelected >= 0)) this.$haveSelectedSpectrum = true; | |
| this.haveSingleYScale = (this.showAllStacked && this.nSpectra > 1 ? this.allowStackedYScale && doYScale : true); | |
| if (doDraw1DObjects) { | |
| var yOffsetPixels = Clazz.floatToInt (this.yPixels * (this.yStackOffsetPercent / 100)); | |
| this.haveLeftRightArrows = false; | |
| for (var i = 0, offset = 0; i < this.nSpectra; i++) { | |
| if (!this.doPlot (i, iSplit)) continue; | |
| var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); | |
| var ig = (!this.reversePlot && this.getShowAnnotation (JSV.common.Annotation.AType.Integration, i) && (!this.showAllStacked || this.iSpectrumSelected == i) ? this.getDialog (JSV.common.Annotation.AType.Integration, i).getData () : null); | |
| this.setScale (i); | |
| var spec = this.spectra.get (i); | |
| if (this.nSplit > 1) { | |
| iSpectrumForScale = i; | |
| }var doDrawWidgets = !isGrey && (this.nSplit == 1 || this.showAllStacked || this.iSpectrumSelected == iSplit); | |
| var doDraw1DY = (doDrawWidgets && this.$haveSelectedSpectrum && i == iSpectrumForScale); | |
| if (doDrawWidgets) { | |
| this.resetPinsFromView (); | |
| this.drawWidgets (gFront, g2, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, false); | |
| }if (this.haveSingleYScale && i == iSpectrumForScale && doAll) { | |
| this.drawGrid (gMain); | |
| if (this.pd.isPrinting && this.nSplit > 1) this.drawSpectrumSource (gMain, i); | |
| }if (doDrawWidgets) this.drawWidgets (gFront, g2, subIndex, false, doDraw1DObjects, doDraw1DY, true); | |
| if (!this.isDrawNoSpectra () && (this.nSpectra == 1 || this.iSpectrumSelected >= 0) && (this.haveSingleYScale && i == iSpectrumForScale || this.showAllStacked && this.stackSelected && i == this.iSpectrumSelected)) this.drawHighlightsAndPeakTabs (gFront, g2, i); | |
| if (doAll) { | |
| if (n == 1 && this.iSpectrumSelected < 0 || this.iSpectrumSelected == i && this.pd.isCurrentGraphSet (this)) { | |
| if (this.pd.titleOn && !this.pd.titleDrawn) { | |
| this.pd.drawTitle (gMain, this.height, this.width, this.pd.getDrawTitle (this.pd.isPrinting)); | |
| this.pd.titleDrawn = true; | |
| }}if (this.haveSingleYScale && i == iSpectrumForScale) { | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.YSCALEON)) this.drawYScale (gMain, this); | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.YUNITSON)) this.drawYUnits (gMain); | |
| }}var isContinuous = spec.isContinuous (); | |
| var onSpectrum = ((this.nSplit > 1 ? i == this.iSpectrumMovedTo : this.isLinked || i == iSpectrumForScale) && !this.pd.isPrinting && spec.isContinuous ()); | |
| var hasPendingIntegral = (!isGrey && this.pendingIntegral != null && spec === this.pendingIntegral.spec); | |
| if (doAll || hasPendingIntegral) { | |
| this.drawPlot (hasPendingIntegral && !doAll ? gFront : gMain, i, spec, isContinuous, offset, isGrey, null, onSpectrum, hasPendingIntegral); | |
| }this.drawIntegration (gFront, i, offset, isGrey, ig, isContinuous, onSpectrum); | |
| this.drawMeasurements (gFront, i); | |
| if (this.pendingMeasurement != null && this.pendingMeasurement.spec === spec) this.drawMeasurement (gFront, this.pendingMeasurement); | |
| if (onSpectrum && this.xPixelMovedTo >= 0) { | |
| this.drawSpectrumPointer (gFront, spec, offset, ig); | |
| }if (this.nSpectra > 1 && this.nSplit == 1 && this.pd.isCurrentGraphSet (this) && doAll) { | |
| this.haveLeftRightArrows = true; | |
| if (!this.pd.isPrinting) { | |
| this.setScale (0); | |
| iSpecForFrame = (this.iSpectrumSelected); | |
| if (this.nSpectra != 2) { | |
| this.setPlotColor (gMain, (iSpecForFrame + this.nSpectra - 1) % this.nSpectra); | |
| this.fillArrow (gMain, 1, this.yHArrows, this.xHArrows - 9, true); | |
| this.setCurrentBoxColor (gMain); | |
| this.fillArrow (gMain, 1, this.yHArrows, this.xHArrows - 9, false); | |
| }if (iSpecForFrame >= 0) { | |
| this.setPlotColor (gMain, iSpecForFrame); | |
| this.fillCircle (gMain, this.xHArrows, this.yHArrows, true); | |
| }this.setCurrentBoxColor (gMain); | |
| this.fillCircle (gMain, this.xHArrows, this.yHArrows, false); | |
| this.setPlotColor (gMain, (iSpecForFrame + 1) % this.nSpectra); | |
| this.fillArrow (gMain, 2, this.yHArrows, this.xHArrows + 9, true); | |
| this.setCurrentBoxColor (gMain); | |
| this.fillArrow (gMain, 2, this.yHArrows, this.xHArrows + 9, false); | |
| }}offset -= yOffsetPixels; | |
| } | |
| if (doAll) { | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.XSCALEON)) this.drawXScale (gMain, this); | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.XUNITSON)) this.drawXUnits (gMain); | |
| }} else { | |
| if (doAll) { | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.XSCALEON)) this.drawXScale (gMain, this.imageView); | |
| if (this.pd.getBoolean (JSV.common.ScriptToken.YSCALEON)) this.drawYScale (gMain, this.imageView); | |
| if (subIndex >= 0) this.draw2DUnits (gMain); | |
| }this.drawWidgets (gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, false); | |
| this.drawWidgets (gFront, g2, subIndex, needNewPins, doDraw1DObjects, true, true); | |
| }if (this.annotations != null) this.drawAnnotations (gFront, this.annotations, null); | |
| }, "~O,~O,~O,~N,~B,~B"); | |
| Clazz.defineMethod (c$, "drawSpectrumSource", | |
| function (g, i) { | |
| this.pd.printFilePath (g, this.pd.thisWidth - this.pd.right, this.yPixel0, this.spectra.get (i).getFilePath ()); | |
| }, "~O,~N"); | |
| Clazz.defineMethod (c$, "doPlot", | |
| function (i, iSplit) { | |
| var isGrey = (this.stackSelected && this.iSpectrumSelected >= 0 && this.iSpectrumSelected != i); | |
| var ok = (this.showAllStacked || this.iSpectrumSelected == -1 || this.iSpectrumSelected == i); | |
| return (this.nSplit > 1 ? i == iSplit : ok && (!this.pd.isPrinting || !isGrey)); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "drawSpectrumPointer", | |
| function (gFront, spec, yOffset, ig) { | |
| this.setColorFromToken (gFront, JSV.common.ScriptToken.PEAKTABCOLOR); | |
| var iHandle = this.pd.integralShiftMode; | |
| if (ig != null) { | |
| if ((!this.pd.ctrlPressed || this.pd.isIntegralDrag) && !this.isOnSpectrum (this.pd.mouseX, this.pd.mouseY, -1)) { | |
| ig = null; | |
| } else if (iHandle == 0) { | |
| iHandle = this.getShiftMode (this.pd.mouseX, this.pd.mouseY); | |
| if (iHandle == 0) iHandle = 2147483647; | |
| }}var y0 = this.yValueMovedTo; | |
| this.yValueMovedTo = (ig == null ? spec.getYValueAt (this.xValueMovedTo) : ig.getPercentYValueAt (this.xValueMovedTo)); | |
| this.setCoordStr (this.xValueMovedTo, this.yValueMovedTo); | |
| if (iHandle != 0) { | |
| this.setPlotColor (gFront, iHandle == 2147483647 ? -1 : 0); | |
| if (iHandle < 0 || iHandle == 2147483647) { | |
| this.drawHandle (gFront, this.xPixelPlot1, this.yPixelPlot0, 3, false); | |
| }if (iHandle > 0) { | |
| this.drawHandle (gFront, this.xPixelPlot0, this.yPixelPlot1, 3, false); | |
| }if (iHandle != 2147483647) return; | |
| }if (ig != null) this.g2d.setStrokeBold (gFront, true); | |
| if (Double.isNaN (y0) || this.pendingMeasurement != null) { | |
| this.g2d.drawLine (gFront, this.xPixelMovedTo, this.yPixel0, this.xPixelMovedTo, this.yPixel1); | |
| if (this.xPixelMovedTo2 >= 0) this.g2d.drawLine (gFront, this.xPixelMovedTo2, this.yPixel0, this.xPixelMovedTo2, this.yPixel1); | |
| this.yValueMovedTo = NaN; | |
| } else { | |
| var y = (ig == null ? yOffset + this.toPixelY (this.yValueMovedTo) : this.toPixelYint (this.yValueMovedTo / 100)); | |
| if (y == this.fixY (y)) this.g2d.drawLine (gFront, this.xPixelMovedTo, y - 10, this.xPixelMovedTo, y + 10); | |
| }if (ig != null) this.g2d.setStrokeBold (gFront, false); | |
| }, "~O,JSV.common.Spectrum,~N,JSV.common.IntegralData"); | |
| Clazz.defineMethod (c$, "setScale", | |
| function (i) { | |
| this.viewData.setScale (i, this.xPixels, this.yPixels, this.spectra.get (i).isInverted ()); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "draw2DUnits", | |
| function (g) { | |
| var nucleusX = this.getSpectrumAt (0).nucleusX; | |
| var nucleusY = this.getSpectrumAt (0).nucleusY; | |
| this.setColorFromToken (g, JSV.common.ScriptToken.PLOTCOLOR); | |
| this.drawUnits (g, nucleusX, this.imageView.xPixel1 + 5 * this.pd.scalingFactor, this.yPixel1, 1, 1.0); | |
| this.drawUnits (g, nucleusY, this.imageView.xPixel0 - 5 * this.pd.scalingFactor, this.yPixel0, 1, 0); | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "drawPeakTabs", | |
| function (gFront, g2, spec) { | |
| var list = (this.nSpectra == 1 || this.iSpectrumSelected >= 0 ? spec.getPeakList () : null); | |
| if (list != null && list.size () > 0) { | |
| if (this.piMouseOver != null && this.piMouseOver.spectrum === spec && this.pd.isMouseUp ()) { | |
| this.g2d.setGraphicsColor (g2, this.g2d.getColor4 (240, 240, 240, 140)); | |
| this.drawPeak (g2, this.piMouseOver, 0); | |
| spec.setHighlightedPeak (this.piMouseOver); | |
| } else { | |
| spec.setHighlightedPeak (null); | |
| }this.setColorFromToken (gFront, JSV.common.ScriptToken.PEAKTABCOLOR); | |
| for (var i = list.size (); --i >= 0; ) { | |
| var p = list.get (i); | |
| this.drawPeak (gFront, p, p === spec.getSelectedPeak () ? 14 : 7); | |
| } | |
| }}, "~O,~O,JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "drawPeak", | |
| function (g, pi, tickSize) { | |
| if (this.pd.isPrinting) return; | |
| var xMin = pi.getXMin (); | |
| var xMax = pi.getXMax (); | |
| if (xMin == xMax) return; | |
| this.drawBar (g, pi, xMin, xMax, null, tickSize); | |
| }, "~O,JSV.common.PeakInfo,~N"); | |
| Clazz.defineMethod (c$, "drawWidgets", | |
| function (gFront, gBack, subIndex, needNewPins, doDraw1DObjects, doDraw1DY, postGrid) { | |
| this.setWidgets (needNewPins, subIndex, doDraw1DObjects); | |
| if (this.pd.isPrinting && (this.imageView == null ? !this.cur1D2Locked : this.sticky2Dcursor)) return; | |
| if (!this.pd.isPrinting && !postGrid) { | |
| if (doDraw1DObjects) { | |
| this.fillBox (gFront, this.xPixel0, this.pin1Dx0.yPixel1, this.xPixel1, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); | |
| this.fillBox (gFront, this.pin1Dx0.xPixel0, this.pin1Dx0.yPixel1, this.pin1Dx1.xPixel0, this.pin1Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); | |
| } else { | |
| this.fillBox (gFront, this.imageView.xPixel0, this.pin2Dx0.yPixel1, this.imageView.xPixel1, this.pin2Dx0.yPixel1 + 2, JSV.common.ScriptToken.GRIDCOLOR); | |
| this.fillBox (gFront, this.pin2Dx0.xPixel0, this.pin2Dx0.yPixel1, this.pin2Dx1.xPixel0, this.pin2Dx1.yPixel1 + 2, JSV.common.ScriptToken.PLOTCOLOR); | |
| this.fillBox (gFront, this.pin2Dy0.xPixel1, this.yPixel1, this.pin2Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); | |
| this.fillBox (gFront, this.pin2Dy0.xPixel1, this.pin2Dy0.yPixel1, this.pin2Dy1.xPixel1 + 2, this.pin2Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); | |
| }this.fillBox (gFront, this.pin1Dy0.xPixel1, this.yPixel1, this.pin1Dy1.xPixel1 + 2, this.yPixel0, JSV.common.ScriptToken.GRIDCOLOR); | |
| if (doDraw1DY) this.fillBox (gFront, this.pin1Dy0.xPixel1, this.pin1Dy0.yPixel1, this.pin1Dy1.xPixel1 + 2, this.pin1Dy1.yPixel0, JSV.common.ScriptToken.PLOTCOLOR); | |
| }for (var i = 0; i < this.widgets.length; i++) { | |
| var pw = this.widgets[i]; | |
| if (pw == null || !pw.isPinOrCursor && !this.zoomEnabled) continue; | |
| var isLockedCursor = (pw === this.cur1D2x1 || pw === this.cur1D2x2 || pw === this.cur2Dx0 || pw === this.cur2Dx1 || pw === this.cur2Dy); | |
| if ((pw.isPin || !pw.isPinOrCursor) == postGrid) continue; | |
| if (pw.is2D) { | |
| if (pw === this.cur2Dx0 && !doDraw1DObjects) continue; | |
| } else { | |
| var isPin1Dy = (pw === this.pin1Dy0 || pw === this.pin1Dy1 || pw === this.pin1Dy01); | |
| if ((this.imageView != null && doDraw1DObjects == isPin1Dy) || isPin1Dy && !doDraw1DY || pw === this.cur1D2x1 && this.gs2dLinkedX == null || pw === this.cur1D2x2 && this.gs2dLinkedY == null || pw === this.zoomBox1D && (this.pd.isIntegralDrag || this.pd.integralShiftMode != 0)) { | |
| if (!this.isLinked || this.imageView != null) continue; | |
| }}if (this.pd.isPrinting && !isLockedCursor) continue; | |
| if (pw.isPinOrCursor) { | |
| this.setColorFromToken (gFront, pw.color); | |
| this.g2d.drawLine (gFront, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1); | |
| pw.isVisible = true; | |
| if (pw.isPin) this.drawHandle (gFront, pw.xPixel0, pw.yPixel0, 2, !pw.isEnabled); | |
| } else if (pw.xPixel1 != pw.xPixel0) { | |
| this.fillBox (gBack, pw.xPixel0, pw.yPixel0, pw.xPixel1, pw.yPixel1, pw === this.zoomBox1D && this.pd.shiftPressed ? JSV.common.ScriptToken.ZOOMBOXCOLOR2 : JSV.common.ScriptToken.ZOOMBOXCOLOR); | |
| }} | |
| }, "~O,~O,~N,~B,~B,~B,~B"); | |
| Clazz.defineMethod (c$, "drawBar", | |
| function (g, pi, xMin, xMax, whatColor, tickSize) { | |
| var r = xMax + xMin; | |
| var d = Math.abs (xMax - xMin); | |
| var range = Math.abs (this.toX (this.xPixel1) - this.toX (this.xPixel0)); | |
| if (tickSize > 0 && d > range / 20) { | |
| d = range / 20; | |
| xMin = r / 2 - d; | |
| xMax = r / 2 + d; | |
| }var x1 = this.toPixelX (xMin); | |
| var x2 = this.toPixelX (xMax); | |
| if (x1 > x2) { | |
| var tmp = x1; | |
| x1 = x2; | |
| x2 = tmp; | |
| }x1 = this.fixX (x1); | |
| x2 = this.fixX (x2); | |
| if (x2 - x1 < 3) { | |
| x1 -= 2; | |
| x2 += 2; | |
| }if (pi != null) pi.setPixelRange (x1, x2); | |
| if (tickSize == 0) { | |
| this.fillBox (g, x1, this.yPixel0, x2, this.yPixel0 + this.yPixels, whatColor); | |
| } else { | |
| this.fillBox (g, x1, this.yPixel0 + 2, x2, this.yPixel0 + 5, whatColor); | |
| if (pi != null) { | |
| x1 = Clazz.doubleToInt ((x1 + x2) / 2); | |
| this.fillBox (g, x1 - 1, this.yPixel0 + 2, x1 + 1, this.yPixel0 + 2 + tickSize, whatColor); | |
| }}}, "~O,JSV.common.PeakInfo,~N,~N,JSV.common.ScriptToken,~N"); | |
| Clazz.defineMethod (c$, "drawIntegration", | |
| function (gFront, index, yOffset, isGrey, iData, isContinuous, isSelected) { | |
| if (iData != null) { | |
| if (this.haveIntegralDisplayed (index)) this.drawPlot (gFront, index, this.spectra.get (index), true, yOffset, false, iData, true, false); | |
| this.drawIntegralValues (gFront, index, yOffset); | |
| }var ratios = this.getIntegrationRatios (index); | |
| if (ratios != null) this.drawAnnotations (gFront, ratios, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); | |
| }, "~O,~N,~N,~B,JSV.common.IntegralData,~B,~B"); | |
| Clazz.defineMethod (c$, "getMeasurements", | |
| function (type, iSpec) { | |
| var ad = this.getDialog (type, iSpec); | |
| return (ad == null || ad.getData ().size () == 0 || !ad.getState () ? null : ad.getData ()); | |
| }, "JSV.common.Annotation.AType,~N"); | |
| Clazz.defineMethod (c$, "drawPlot", | |
| function (g, index, spec, isContinuous, yOffset, isGrey, ig, isSelected, hasPendingIntegral) { | |
| var xyCoords = (ig == null ? spec.getXYCoords () : this.getIntegrationGraph (index).getXYCoords ()); | |
| var isIntegral = (ig != null); | |
| var bsDraw = (isIntegral ? ig.getBitSet () : null); | |
| var fillPeaks = (hasPendingIntegral || spec.fillColor != null && isSelected); | |
| var iColor = (isGrey ? -2 : isIntegral ? -1 : !this.allowStacking ? 0 : index); | |
| this.setPlotColor (g, iColor); | |
| var plotOn = true; | |
| var y0 = this.toPixelY (0); | |
| if (isIntegral) fillPeaks = new Boolean (fillPeaks & (y0 == this.fixY (y0))).valueOf (); | |
| else y0 = this.fixY (y0); | |
| var cInt = (isIntegral || fillPeaks ? this.pd.getColor (JSV.common.ScriptToken.INTEGRALPLOTCOLOR) : null); | |
| var cFill = (cInt == null || spec.fillColor == null ? cInt : spec.fillColor); | |
| var iFirst = this.viewData.getStartingPointIndex (index); | |
| var iLast = this.viewData.getEndingPointIndex (index); | |
| if (isContinuous) { | |
| iLast--; | |
| var doLineTo = (isIntegral || this.pendingIntegral != null) && this.g2d.canDoLineTo (); | |
| if (doLineTo) this.g2d.doStroke (g, true); | |
| var isDown = false; | |
| for (var i = iFirst; i <= iLast; i++) { | |
| var point1 = xyCoords[i]; | |
| var point2 = xyCoords[i + 1]; | |
| var y1 = (isIntegral ? this.toPixelYint (point1.getYVal ()) : this.toPixelY (point1.getYVal ())); | |
| if (y1 == -2147483648) continue; | |
| var y2 = (isIntegral ? this.toPixelYint (point2.getYVal ()) : this.toPixelY (point2.getYVal ())); | |
| if (y2 == -2147483648) continue; | |
| var xv1 = point1.getXVal (); | |
| var xv2 = point2.getXVal (); | |
| var x1 = this.toPixelX (xv1); | |
| var x2 = this.toPixelX (xv2); | |
| y1 = this.fixY (yOffset + y1); | |
| y2 = this.fixY (yOffset + y2); | |
| if (isIntegral) { | |
| if (i == iFirst) { | |
| this.xPixelPlot1 = x1; | |
| this.yPixelPlot0 = y1; | |
| }this.xPixelPlot0 = x2; | |
| this.yPixelPlot1 = y2; | |
| }if (x2 == x1 && y1 == y2) continue; | |
| if (fillPeaks && hasPendingIntegral && this.pendingIntegral.overlaps (xv1, xv2)) { | |
| if (cFill != null) { | |
| this.g2d.doStroke (g, false); | |
| this.g2d.setGraphicsColor (g, cFill); | |
| }this.g2d.fillRect (g, Math.min (x1, x2), Math.min (y0, y1), Math.max (1, Math.abs (x2 - x1)), Math.abs (y0 - y1)); | |
| if (cFill != null) { | |
| this.g2d.doStroke (g, false); | |
| this.g2d.doStroke (g, true); | |
| isDown = false; | |
| this.setPlotColor (g, iColor); | |
| }continue; | |
| }if (y1 == y2 && (y1 == this.yPixel0)) { | |
| continue; | |
| }if (bsDraw != null && bsDraw.get (i) != plotOn) { | |
| plotOn = bsDraw.get (i); | |
| if (doLineTo && isDown) { | |
| this.g2d.doStroke (g, false); | |
| this.g2d.doStroke (g, true); | |
| isDown = false; | |
| }if (!this.pd.isPrinting && this.pd.integralShiftMode != 0) this.setPlotColor (g, 0); | |
| else if (plotOn) this.setColorFromToken (g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); | |
| else this.setPlotColor (g, -3); | |
| }if (this.pd.isPrinting && !plotOn) continue; | |
| if (isDown) { | |
| this.g2d.lineTo (g, x2, y2); | |
| } else { | |
| this.g2d.drawLine (g, x1, y1, x2, y2); | |
| isDown = doLineTo; | |
| }} | |
| if (doLineTo) this.g2d.doStroke (g, false); | |
| } else { | |
| for (var i = iFirst; i <= iLast; i++) { | |
| var point = xyCoords[i]; | |
| var y2 = this.toPixelY (point.getYVal ()); | |
| if (y2 == -2147483648) continue; | |
| var x1 = this.toPixelX (point.getXVal ()); | |
| var y1 = this.toPixelY (Math.max (this.getScale ().minYOnScale, 0)); | |
| y1 = this.fixY (yOffset + y1); | |
| y2 = this.fixY (yOffset + y2); | |
| if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; | |
| this.g2d.drawLine (g, x1, y1, x1, y2); | |
| } | |
| if (this.getScale ().isYZeroOnScale ()) { | |
| var y = yOffset + this.toPixelY (this.getScale ().spectrumYRef); | |
| if (y == this.fixY (y)) this.g2d.drawLine (g, this.xPixel1, y, this.xPixel0, y); | |
| }}}, "~O,~N,JSV.common.Spectrum,~B,~N,~B,JSV.common.IntegralData,~B,~B"); | |
| Clazz.defineMethod (c$, "drawFrame", | |
| function (g, iSpec, addCurrentBox, addSplitBox, drawUpDownArrows) { | |
| if (!this.pd.gridOn || this.pd.isPrinting) { | |
| this.setColorFromToken (g, JSV.common.ScriptToken.GRIDCOLOR); | |
| this.g2d.drawRect (g, this.xPixel0, this.yPixel0, this.xPixels, this.yPixels); | |
| if (this.pd.isPrinting) return; | |
| }this.setCurrentBoxColor (g); | |
| if (drawUpDownArrows) { | |
| if (iSpec >= 0) { | |
| this.setPlotColor (g, iSpec); | |
| this.fillArrow (g, 3, this.xVArrows, Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2) - 9, true); | |
| this.fillArrow (g, 4, this.xVArrows, Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2) + 9, true); | |
| this.setCurrentBoxColor (g); | |
| }this.fillArrow (g, 3, this.xVArrows, Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2) - 9, false); | |
| this.fillCircle (g, this.xVArrows, Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2), false); | |
| this.fillArrow (g, 4, this.xVArrows, Clazz.doubleToInt ((this.yPixel00 + this.yPixel11) / 2) + 9, false); | |
| }if (this.imageView != null) return; | |
| if (addCurrentBox) { | |
| var x1 = this.xPixel00 + 10; | |
| var x2 = this.xPixel11 - 10; | |
| var y1 = this.yPixel00 + 1; | |
| var y2 = this.yPixel11 - 2; | |
| this.g2d.drawLine (g, x1, y1, x2, y1); | |
| this.g2d.drawLine (g, x2, y1, x2, y2); | |
| this.g2d.drawLine (g, x1, y2, x2, y2); | |
| this.splitterX = this.closerX = -2147483648; | |
| this.drawBox (g, x2 - 10, y1, x2, y1 + 10, null); | |
| this.g2d.drawLine (g, x2 - 10, y1 + 10, x2, y1); | |
| this.g2d.drawLine (g, x2, y1 + 10, x2 - 10, y1); | |
| this.closerX = x2 - 10; | |
| this.closerY = y1; | |
| if (addSplitBox) { | |
| x2 -= 10; | |
| this.fillBox (g, x2 - 10, y1, x2, y1 + 10, null); | |
| this.splitterX = x2 - 10; | |
| this.splitterY = y1; | |
| }}}, "~O,~N,~B,~B,~B"); | |
| Clazz.defineMethod (c$, "drawGrid", | |
| function (g) { | |
| if (!this.pd.gridOn || this.imageView != null) return; | |
| this.setColorFromToken (g, JSV.common.ScriptToken.GRIDCOLOR); | |
| var lastX; | |
| if (Double.isNaN (this.getScale ().firstX)) { | |
| lastX = this.getScale ().maxXOnScale + this.getScale ().steps[0] / 2; | |
| for (var val = this.getScale ().minXOnScale; val < lastX; val += this.getScale ().steps[0]) { | |
| var x = this.toPixelX (val); | |
| this.g2d.drawLine (g, x, this.yPixel0, x, this.yPixel1); | |
| } | |
| } else { | |
| lastX = this.getScale ().maxXOnScale * 1.0001; | |
| for (var val = this.getScale ().firstX; val <= lastX; val += this.getScale ().steps[0]) { | |
| var x = this.toPixelX (val); | |
| this.g2d.drawLine (g, x, this.yPixel0, x, this.yPixel1); | |
| } | |
| }for (var val = this.getScale ().firstY; val < this.getScale ().maxYOnScale + this.getScale ().steps[1] / 2; val += this.getScale ().steps[1]) { | |
| var y = this.toPixelY (val); | |
| if (y == this.fixY (y)) this.g2d.drawLine (g, this.xPixel0, y, this.xPixel1, y); | |
| } | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "drawXScale", | |
| function (g, c) { | |
| this.setColorFromToken (g, JSV.common.ScriptToken.SCALECOLOR); | |
| if (this.pd.isPrinting) this.g2d.drawLine (g, c.getXPixel0 (), this.yPixel1, c.getXPixel0 () + c.getXPixels () - 1, this.yPixel1); | |
| var precision = this.getScale ().precision[0]; | |
| var font = this.pd.setFont (g, c.getXPixels (), 0, this.pd.isPrinting ? 10 : 12, false); | |
| var y1 = this.yPixel1; | |
| var y2 = this.yPixel1 + 4 * this.pd.scalingFactor; | |
| var y3 = this.yPixel1 + 2 * this.pd.scalingFactor; | |
| var h = font.getHeight (); | |
| var dx = c.toPixelX (this.getScale ().steps[0]) - c.toPixelX (0); | |
| var maxWidth = Math.abs (dx * 0.95); | |
| var firstX = this.getScale ().firstX - this.getScale ().steps[0]; | |
| var lastX = (this.getScale ().maxXOnScale + this.getScale ().steps[0]) * 1.0001; | |
| for (var pass = 0; pass < 2; pass++) { | |
| if (pass == 1) JSV.common.ScaleData.fixScale (this.mapX); | |
| var prevX = 1e10; | |
| for (var val = firstX; val <= lastX; val += this.getScale ().steps[0]) { | |
| var x = c.toPixelX (val); | |
| var d = Double.$valueOf (val); | |
| var s; | |
| switch (pass) { | |
| case 0: | |
| s = JU.DF.formatDecimalDbl (val, precision); | |
| this.mapX.put (d, s); | |
| this.drawTick (g, x, y1, y2, c); | |
| dx = Math.abs (prevX - val); | |
| var ntick = this.getScale ().minorTickCounts[0]; | |
| if (ntick != 0) { | |
| var step = dx / ntick; | |
| for (var i = 1; i < ntick; i++) { | |
| var x1 = val - i * step; | |
| this.drawTick (g, c.toPixelX (x1), y1, y3, c); | |
| } | |
| }prevX = val; | |
| continue; | |
| case 1: | |
| s = this.mapX.get (d); | |
| if (s == null || x != c.fixX (x)) continue; | |
| var w = this.pd.getStringWidth (s); | |
| var n = (x + Clazz.doubleToInt (w / 2) == c.fixX (x + Clazz.doubleToInt (w / 2)) ? 2 : 0); | |
| if (n > 0) this.g2d.drawString (g, s, x - Clazz.doubleToInt (w / n), y2 + h); | |
| val += Math.floor (w / maxWidth) * this.getScale ().steps[0]; | |
| break; | |
| } | |
| } | |
| } | |
| this.mapX.clear (); | |
| }, "~O,JSV.common.XYScaleConverter"); | |
| Clazz.defineMethod (c$, "drawTick", | |
| function (g, x, y1, y2, c) { | |
| if (x == c.fixX (x)) this.g2d.drawLine (g, x, y1, x, y2); | |
| }, "~O,~N,~N,~N,JSV.common.XYScaleConverter"); | |
| Clazz.defineMethod (c$, "drawYScale", | |
| function (g, c) { | |
| var sd = c.getScale (); | |
| var precision = sd.precision[1]; | |
| var font = this.pd.setFont (g, c.getXPixels (), 0, this.pd.isPrinting ? 10 : 12, false); | |
| var h = font.getHeight (); | |
| var max = sd.maxYOnScale + sd.steps[1] / 2; | |
| var yLast = -2147483648; | |
| this.setColorFromToken (g, JSV.common.ScriptToken.SCALECOLOR); | |
| for (var pass = 0; pass < 2; pass++) { | |
| if (pass == 1) JSV.common.ScaleData.fixScale (this.mapX); | |
| for (var val = sd.firstY; val < max; val += sd.steps[1]) { | |
| var d = Double.$valueOf (val); | |
| var x1 = c.getXPixel0 (); | |
| var y = c.toPixelY (val); | |
| if (y != c.fixY (y)) continue; | |
| var s; | |
| if (pass == 0) this.g2d.drawLine (g, x1, y, x1 - 3 * this.pd.scalingFactor, y); | |
| if (Math.abs (y - yLast) <= h) continue; | |
| yLast = y; | |
| switch (pass) { | |
| case 0: | |
| s = JU.DF.formatDecimalDbl (val, precision); | |
| this.mapX.put (d, s); | |
| break; | |
| case 1: | |
| s = this.mapX.get (d); | |
| if (s == null) continue; | |
| if (s.startsWith ("0") && s.contains ("E")) s = "0"; | |
| this.g2d.drawString (g, s, (x1 - 4 * this.pd.scalingFactor - this.pd.getStringWidth (s)), y + Clazz.doubleToInt (h / 3)); | |
| break; | |
| } | |
| } | |
| } | |
| this.mapX.clear (); | |
| }, "~O,JSV.common.XYScaleConverter"); | |
| Clazz.defineMethod (c$, "drawXUnits", | |
| function (g) { | |
| var units = this.spectra.get (0).getAxisLabel (true); | |
| if (units != null) this.drawUnits (g, units, this.xPixel1 + 25 * this.pd.scalingFactor, this.yPixel1 + 5 * this.pd.scalingFactor, 1, 1); | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "drawUnits", | |
| function (g, s, x, y, hOff, vOff) { | |
| this.setColorFromToken (g, JSV.common.ScriptToken.UNITSCOLOR); | |
| this.pd.setFont (g, (this.imageView == null ? this : this.imageView).getXPixels (), 3, 10, false); | |
| this.g2d.drawString (g, s, Clazz.doubleToInt (x - this.pd.getStringWidth (s) * hOff), Clazz.doubleToInt (y + this.pd.getFontHeight () * vOff)); | |
| }, "~O,~S,~N,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "drawYUnits", | |
| function (g) { | |
| var units = this.spectra.get (0).getAxisLabel (false); | |
| if (units != null) this.drawUnits (g, units, (this.pd.isPrinting ? 30 : 5) * this.pd.scalingFactor, this.yPixel0 + (this.pd.isPrinting ? 0 : 5) * this.pd.scalingFactor, 0, -1); | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "drawHighlightsAndPeakTabs", | |
| function (gFront, gBack, iSpec) { | |
| var md = this.getMeasurements (JSV.common.Annotation.AType.PeakList, iSpec); | |
| var spec = this.spectra.get (iSpec); | |
| if (this.pd.isPrinting) { | |
| if (md != null) { | |
| this.setColorFromToken (gFront, JSV.common.ScriptToken.PEAKTABCOLOR); | |
| this.printPeakList (gFront, spec, md); | |
| }return; | |
| }if (md == null) { | |
| for (var i = 0; i < this.highlights.size (); i++) { | |
| var hl = this.highlights.get (i); | |
| if (hl.spectrum === spec) { | |
| this.pd.setHighlightColor (hl.color); | |
| this.drawBar (gBack, null, hl.x1, hl.x2, JSV.common.ScriptToken.HIGHLIGHTCOLOR, 0); | |
| }} | |
| if (this.pd.peakTabsOn) this.drawPeakTabs (gFront, gBack, spec); | |
| }var y; | |
| if (md != null) { | |
| y = (spec.isInverted () ? this.yPixel1 - 10 * this.pd.scalingFactor : this.yPixel0); | |
| this.setColorFromToken (gFront, JSV.common.ScriptToken.PEAKTABCOLOR); | |
| for (var i = md.size (); --i >= 0; ) { | |
| var m = md.get (i); | |
| var x = this.toPixelX (m.getXVal ()); | |
| this.g2d.drawLine (gFront, x, y, x, y + 10 * this.pd.scalingFactor); | |
| } | |
| if (this.isVisible (this.getDialog (JSV.common.Annotation.AType.PeakList, iSpec))) { | |
| y = this.toPixelY ((md).getThresh ()); | |
| if (y == this.fixY (y) && !this.pd.isPrinting) this.g2d.drawLine (gFront, this.xPixel0, y, this.xPixel1, y); | |
| }}}, "~O,~O,~N"); | |
| Clazz.defineMethod (c$, "printPeakList", | |
| function (g, spec, data) { | |
| var sdata = data.getMeasurementListArray (null); | |
| if (sdata.length == 0) return; | |
| this.pd.setFont (g, this.xPixels, 0, 8, false); | |
| var h = this.pd.getFontHeight (); | |
| var xs = Clazz.newIntArray (data.size (), 0); | |
| var xs0 = Clazz.newIntArray (data.size (), 0); | |
| var dx = 0; | |
| var s5 = 5 * this.pd.scalingFactor; | |
| var s10 = 10 * this.pd.scalingFactor; | |
| var s15 = 15 * this.pd.scalingFactor; | |
| var s25 = 25 * this.pd.scalingFactor; | |
| for (var i = 0; i < sdata.length; i++) { | |
| xs0[i] = this.toPixelX (Double.parseDouble (sdata[i][1])); | |
| if (i == 0) { | |
| xs[i] = xs0[i]; | |
| continue; | |
| }xs[i] = Math.max (xs[i - 1] + h, xs0[i] + h); | |
| dx += (xs[i] - xs0[i]); | |
| } | |
| dx /= 2 * sdata.length; | |
| if (xs[0] - dx < this.xPixel0 + s25) dx = xs[0] - (this.xPixel0 + s25); | |
| for (var i = 0; i < sdata.length; i++) xs[i] -= dx; | |
| var inverted = spec.isInverted (); | |
| var y4 = this.pd.getStringWidth ("99.9999"); | |
| var y2 = (sdata[0].length >= 6 ? this.pd.getStringWidth ("99.99") : 0); | |
| var f = (inverted ? -1 : 1); | |
| var y = (inverted ? this.yPixel1 : this.yPixel0) + f * (y2 + y4 + s15); | |
| for (var i = 0; i < sdata.length; i++) { | |
| this.g2d.drawLine (g, xs[i], y, xs[i], y + s5 * f); | |
| this.g2d.drawLine (g, xs[i], y + s5 * f, xs0[i], y + s10 * f); | |
| this.g2d.drawLine (g, xs0[i], y + s10 * f, xs0[i], y + s15 * f); | |
| if (y2 > 0 && sdata[i][4].length > 0) this.g2d.drawLine (g, Clazz.doubleToInt ((xs[i] + xs[i - 1]) / 2), y - y4 + s5, Clazz.doubleToInt ((xs[i] + xs[i - 1]) / 2), y - y4 - s5); | |
| } | |
| y -= f * 2 * this.pd.scalingFactor; | |
| if (y2 > 0) { | |
| this.drawStringRotated (g, -90, xs[0] - s15, y, " ppm"); | |
| this.drawStringRotated (g, -90, xs[0] - s15, y - y4 - s5, " Hz"); | |
| }for (var i = data.size (); --i >= 0; ) { | |
| this.drawStringRotated (g, -90 * f, xs[i] + Clazz.doubleToInt (f * h / 3), y, sdata[i][1]); | |
| if (y2 > 0 && sdata[i][4].length > 0) { | |
| var x = Clazz.doubleToInt ((xs[i] + xs[i - 1]) / 2) + Clazz.doubleToInt (h / 3); | |
| this.drawStringRotated (g, -90, x, y - y4 - s5, sdata[i][4]); | |
| }} | |
| }, "~O,JSV.common.Spectrum,JSV.common.PeakData"); | |
| Clazz.defineMethod (c$, "drawStringRotated", | |
| function (g, angle, x, y, s) { | |
| this.g2d.drawStringRotated (g, s, x, y, angle); | |
| }, "~O,~N,~N,~N,~S"); | |
| Clazz.defineMethod (c$, "drawAnnotations", | |
| function (g, annotations, whatColor) { | |
| this.pd.setFont (g, this.xPixels, 1, 18, false); | |
| for (var i = annotations.size (); --i >= 0; ) { | |
| var note = annotations.get (i); | |
| this.setAnnotationColor (g, note, whatColor); | |
| var c = (note.is2D ? this.imageView : this); | |
| var x = c.toPixelX (note.getXVal ()); | |
| var y = (note.isPixels () ? Clazz.doubleToInt (this.yPixel0 + 10 + 10 * this.pd.scalingFactor - note.getYVal ()) : note.is2D ? this.imageView.subIndexToPixelY (Clazz.doubleToInt (note.getYVal ())) : this.toPixelY (note.getYVal ())); | |
| this.g2d.drawString (g, note.text, x + note.offsetX * this.pd.scalingFactor, y - note.offsetY * this.pd.scalingFactor); | |
| } | |
| }, "~O,JU.Lst,JSV.common.ScriptToken"); | |
| Clazz.defineMethod (c$, "drawIntegralValues", | |
| function (g, iSpec, yOffset) { | |
| var integrals = this.getMeasurements (JSV.common.Annotation.AType.Integration, iSpec); | |
| if (integrals != null) { | |
| if (this.pd.isPrinting) this.pd.setFont (g, this.xPixels, 0, 8, false); | |
| else this.pd.setFont (g, this.xPixels, 1, 12, false); | |
| this.setColorFromToken (g, JSV.common.ScriptToken.INTEGRALPLOTCOLOR); | |
| var h = this.pd.getFontHeight (); | |
| this.g2d.setStrokeBold (g, true); | |
| for (var i = integrals.size (); --i >= 0; ) { | |
| var $in = integrals.get (i); | |
| if ($in.getValue () == 0) continue; | |
| var x = this.toPixelX ($in.getXVal2 ()); | |
| var y1 = yOffset * this.pd.scalingFactor + this.toPixelYint ($in.getYVal ()); | |
| var y2 = yOffset * this.pd.scalingFactor + this.toPixelYint ($in.getYVal2 ()); | |
| if (x != this.fixX (x) || y1 != this.fixY (y1) || y2 != this.fixY (y2)) continue; | |
| if (!this.pd.isPrinting) this.g2d.drawLine (g, x, y1, x, y2); | |
| var s = " " + $in.text; | |
| this.g2d.drawString (g, s, x, Clazz.doubleToInt ((y1 + y2) / 2) + Clazz.doubleToInt (h / 3)); | |
| } | |
| this.g2d.setStrokeBold (g, false); | |
| }if (iSpec == this.getFixedSelectedSpectrumIndex ()) this.selectedSpectrumIntegrals = integrals; | |
| }, "~O,~N,~N"); | |
| Clazz.defineMethod (c$, "drawMeasurements", | |
| function (g, iSpec) { | |
| var md = this.getMeasurements (JSV.common.Annotation.AType.Measurements, iSpec); | |
| if (md != null) for (var i = md.size (); --i >= 0; ) this.drawMeasurement (g, md.get (i)); | |
| if (iSpec == this.getFixedSelectedSpectrumIndex ()) this.selectedSpectrumMeasurements = md; | |
| }, "~O,~N"); | |
| Clazz.defineMethod (c$, "drawMeasurement", | |
| function (g, m) { | |
| if (m.text.length == 0 && m !== this.pendingMeasurement) return; | |
| this.pd.setFont (g, this.xPixels, 1, 12, false); | |
| this.g2d.setGraphicsColor (g, (m === this.pendingMeasurement ? this.pd.getColor (JSV.common.ScriptToken.PEAKTABCOLOR) : this.pd.BLACK)); | |
| var x1 = this.toPixelX (m.getXVal ()); | |
| var y1 = this.toPixelY (m.getYVal ()); | |
| var x2 = this.toPixelX (m.getXVal2 ()); | |
| if (Double.isNaN (m.getXVal ()) || x1 != this.fixX (x1) || x2 != this.fixX (x2)) return; | |
| var drawString = (Math.abs (x1 - x2) >= 2); | |
| var drawBaseLine = this.getScale ().isYZeroOnScale () && m.spec.isHNMR (); | |
| var x = Clazz.doubleToInt ((x1 + x2) / 2); | |
| this.g2d.setStrokeBold (g, true); | |
| if (drawString) this.g2d.drawLine (g, x1, y1, x2, y1); | |
| if (drawBaseLine) this.g2d.drawLine (g, x1 + 1, this.yPixel1 - 1, x2, this.yPixel1 - 1); | |
| this.g2d.setStrokeBold (g, false); | |
| if (drawString) this.g2d.drawString (g, m.text, x + m.offsetX, y1 - m.offsetY); | |
| if (drawBaseLine) { | |
| this.g2d.drawLine (g, x1, this.yPixel1, x1, this.yPixel1 - 6 * this.pd.scalingFactor); | |
| this.g2d.drawLine (g, x2, this.yPixel1, x2, this.yPixel1 - 6 * this.pd.scalingFactor); | |
| }}, "~O,JSV.common.Measurement"); | |
| Clazz.defineMethod (c$, "getPinSelected", | |
| function (xPixel, yPixel) { | |
| if (this.widgets != null) for (var i = 0; i < this.widgets.length; i++) { | |
| if (this.widgets[i] != null && this.widgets[i].isPinOrCursor && this.widgets[i].selected (xPixel, yPixel)) { | |
| return this.widgets[i]; | |
| }} | |
| return null; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "set2DCrossHairs", | |
| function (xPixel, yPixel) { | |
| var x; | |
| if (xPixel == this.imageView.fixX (xPixel) && yPixel == this.fixY (yPixel)) { | |
| this.pin1Dx1.setX (x = this.imageView.toX (xPixel), this.toPixelX (x)); | |
| this.cur2Dx1.setX (x, xPixel); | |
| this.setCurrentSubSpectrum (this.imageView.toSubspectrumIndex (yPixel)); | |
| if (this.isLinked) { | |
| var y = this.imageView.toY (yPixel); | |
| this.pd.set2DCrossHairsLinked (this, x, y, !this.sticky2Dcursor); | |
| }}}, "~N,~N"); | |
| Clazz.defineMethod (c$, "reset2D", | |
| function (isX) { | |
| if (isX) { | |
| this.imageView.setView0 (this.imageView.xPixel0, this.pin2Dy0.yPixel0, this.imageView.xPixel1, this.pin2Dy1.yPixel0); | |
| this.doZoom (0, this.getScale ().minY, 0, this.getScale ().maxY, true, false, false, false, true); | |
| } else { | |
| this.imageView.setView0 (this.pin2Dx0.xPixel0, this.imageView.yPixel0, this.pin2Dx1.xPixel0, this.imageView.yPixel1); | |
| }}, "~B"); | |
| Clazz.defineMethod (c$, "setAnnotationText", | |
| function (a) { | |
| var sval = this.pd.getInput ("New text?", "Set Label", a.text); | |
| if (sval == null) return false; | |
| if (sval.length == 0) this.annotations.removeObj (a); | |
| else a.text = sval; | |
| return true; | |
| }, "JSV.common.Annotation"); | |
| Clazz.defineMethod (c$, "checkIntegral", | |
| function (x1, x2, isFinal) { | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| if (ad == null) return false; | |
| var integral = (ad.getData ()).addIntegralRegion (x1, x2); | |
| if (isFinal && Clazz.instanceOf (ad, JSV.dialog.JSVDialog)) (ad).update (null, 0, 0); | |
| if (Double.isNaN (x2)) return false; | |
| this.pendingIntegral = (isFinal ? null : integral); | |
| this.pd.isIntegralDrag = !isFinal; | |
| this.selectedSpectrumIntegrals = null; | |
| return true; | |
| }, "~N,~N,~B"); | |
| Clazz.defineMethod (c$, "setToolTipForPixels", | |
| function (xPixel, yPixel) { | |
| if (this.iSpectrumMovedTo != this.iSpectrumClicked || this.pd.getCurrentGraphSet () !== this) { | |
| this.pd.setToolTipText ("click spectrum to activate"); | |
| return; | |
| }if (this.isSplitWidget (xPixel, yPixel)) { | |
| this.pd.setToolTipText ("click to " + (this.nSplit > 1 ? "combine" : "split")); | |
| return; | |
| }if (this.isCloserWidget (xPixel, yPixel)) { | |
| this.pd.setToolTipText ("click to close"); | |
| return; | |
| }var pw = this.getPinSelected (xPixel, yPixel); | |
| var precisionX = this.getScale ().precision[0]; | |
| var precisionY = this.getScale ().precision[1]; | |
| if (pw != null) { | |
| if (this.setStartupPinTip ()) return; | |
| var s; | |
| if (pw === this.pin1Dx01 || pw === this.pin2Dx01) { | |
| s = JU.DF.formatDecimalDbl (Math.min (this.pin1Dx0.getXVal (), this.pin1Dx1.getXVal ()), precisionX) + " - " + JU.DF.formatDecimalDbl (Math.max (this.pin1Dx0.getXVal (), this.pin1Dx1.getXVal ()), precisionX); | |
| } else if (pw === this.pin1Dy01) { | |
| s = JU.DF.formatDecimalDbl (Math.min (this.pin1Dy0.getYVal (), this.pin1Dy1.getYVal ()), precisionY) + " - " + JU.DF.formatDecimalDbl (Math.max (this.pin1Dy0.getYVal (), this.pin1Dy1.getYVal ()), precisionY); | |
| } else if (pw === this.cur2Dy) { | |
| var isub = this.imageView.toSubspectrumIndex (pw.yPixel0); | |
| s = this.get2DYLabel (isub, precisionX); | |
| } else if (pw === this.pin2Dy01) { | |
| s = "" + Clazz.doubleToInt (Math.min (this.pin2Dy0.getYVal (), this.pin2Dy1.getYVal ())) + " - " + Clazz.doubleToInt (Math.max (this.pin2Dy0.getYVal (), this.pin2Dy1.getYVal ())); | |
| } else if (pw.isXtype) { | |
| s = JU.DF.formatDecimalDbl (pw.getXVal (), precisionX); | |
| } else if (pw.is2D) { | |
| s = "" + Clazz.doubleToInt (pw.getYVal ()); | |
| } else { | |
| s = JU.DF.formatDecimalDbl (pw.getYVal (), precisionY); | |
| }this.pd.setToolTipText (s); | |
| return; | |
| }var yPt; | |
| if (this.imageView != null) { | |
| if (this.imageView.fixX (xPixel) == xPixel && this.fixY (yPixel) == yPixel) { | |
| var isub = this.imageView.toSubspectrumIndex (yPixel); | |
| var s = "y=" + this.get2DYLabel (isub, precisionX) + " / x=" + JU.DF.formatDecimalDbl (this.imageView.toX (xPixel), precisionX) + " " + this.getSpectrum ().getAxisLabel (true); | |
| this.pd.setToolTipText (s); | |
| this.pd.coordStr = s; | |
| return; | |
| }if (!this.pd.display1D) { | |
| this.pd.setToolTipText (""); | |
| this.pd.coordStr = ""; | |
| return; | |
| }}var xPt = this.toX (this.fixX (xPixel)); | |
| yPt = (this.imageView != null && this.imageView.isXWithinRange (xPixel) ? this.imageView.toSubspectrumIndex (this.fixY (yPixel)) : this.toY (this.fixY (yPixel))); | |
| var xx = this.setCoordStr (xPt, yPt); | |
| var iSpec = this.getFixedSelectedSpectrumIndex (); | |
| if (!this.isInPlotRegion (xPixel, yPixel)) { | |
| yPt = NaN; | |
| } else if (this.nSpectra == 1) { | |
| } else if (this.haveIntegralDisplayed (iSpec)) { | |
| yPt = this.getIntegrationGraph (iSpec).getPercentYValueAt (xPt); | |
| xx += ", " + JU.DF.formatDecimalDbl (yPt, 1); | |
| }this.pd.setToolTipText ((this.selectedIntegral != null ? "click to set value" : this.pendingMeasurement != null || this.selectedMeasurement != null ? (this.pd.hasFocus () ? "Press ESC to delete " + (this.selectedIntegral != null ? "integral, DEL to delete all visible, or N to normalize" : this.pendingMeasurement == null ? "\"" + this.selectedMeasurement.text + "\" or DEL to delete all visible" : "measurement") : "") : Double.isNaN (yPt) ? null : xx)); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isFrameBox", | |
| function (xPixel, yPixel, boxX, boxY) { | |
| return Math.abs (xPixel - (boxX + 5)) < 5 && Math.abs (yPixel - (boxY + 5)) < 5; | |
| }, "~N,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "setCoordStr", | |
| function (xPt, yPt) { | |
| var xx = JU.DF.formatDecimalDbl (xPt, this.getScale ().precision[0]); | |
| this.pd.coordStr = "(" + xx + (this.haveSingleYScale || this.iSpectrumSelected >= 0 ? ", " + JU.DF.formatDecimalDbl (yPt, this.getScale ().precision[1]) : "") + ")"; | |
| return xx; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "setStartupPinTip", | |
| function () { | |
| if (this.pd.startupPinTip == null) return false; | |
| this.pd.setToolTipText (this.pd.startupPinTip); | |
| this.pd.startupPinTip = null; | |
| return true; | |
| }); | |
| Clazz.defineMethod (c$, "get2DYLabel", | |
| function (isub, precision) { | |
| var spec = this.getSpectrumAt (0).getSubSpectra ().get (isub); | |
| return JU.DF.formatDecimalDbl (spec.getY2DPPM (), precision) + " PPM" + (spec.y2DUnits.equals ("HZ") ? " (" + JU.DF.formatDecimalDbl (spec.getY2D (), precision) + " HZ) " : ""); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isOnSpectrum", | |
| function (xPixel, yPixel, index) { | |
| var xyCoords = null; | |
| var isContinuous = true; | |
| var isIntegral = (index < 0); | |
| if (isIntegral) { | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| if (ad == null) return false; | |
| xyCoords = (ad.getData ()).getXYCoords (); | |
| index = this.getFixedSelectedSpectrumIndex (); | |
| } else { | |
| this.setScale (index); | |
| var spec = this.spectra.get (index); | |
| xyCoords = spec.xyCoords; | |
| isContinuous = spec.isContinuous (); | |
| }var yOffset = index * Clazz.floatToInt (this.yPixels * (this.yStackOffsetPercent / 100)); | |
| var ix0 = this.viewData.getStartingPointIndex (index); | |
| var ix1 = this.viewData.getEndingPointIndex (index); | |
| if (isContinuous) { | |
| for (var i = ix0; i < ix1; i++) { | |
| var point1 = xyCoords[i]; | |
| var point2 = xyCoords[i + 1]; | |
| var x1 = this.toPixelX (point1.getXVal ()); | |
| var x2 = this.toPixelX (point2.getXVal ()); | |
| var y1 = (isIntegral ? this.toPixelYint (point1.getYVal ()) : this.toPixelY (point1.getYVal ())); | |
| var y2 = (isIntegral ? this.toPixelYint (point2.getYVal ()) : this.toPixelY (point2.getYVal ())); | |
| if (y1 == -2147483648 || y2 == -2147483648) continue; | |
| y1 = this.fixY (y1) - yOffset; | |
| y2 = this.fixY (y2) - yOffset; | |
| if (JSV.common.GraphSet.isOnLine (xPixel, yPixel, x1, y1, x2, y2)) return true; | |
| } | |
| } else { | |
| for (var i = ix0; i <= ix1; i++) { | |
| var point = xyCoords[i]; | |
| var y2 = this.toPixelY (point.getYVal ()); | |
| if (y2 == -2147483648) continue; | |
| var x1 = this.toPixelX (point.getXVal ()); | |
| var y1 = this.toPixelY (Math.max (this.getScale ().minYOnScale, 0)); | |
| y1 = this.fixY (y1); | |
| y2 = this.fixY (y2); | |
| if (y1 == y2 && (y1 == this.yPixel0 || y1 == this.yPixel1)) continue; | |
| if (JSV.common.GraphSet.isOnLine (xPixel, yPixel, x1, y1, x1, y2)) return true; | |
| } | |
| }return false; | |
| }, "~N,~N,~N"); | |
| c$.distance = Clazz.defineMethod (c$, "distance", | |
| function (dx, dy) { | |
| return Math.sqrt (dx * dx + dy * dy); | |
| }, "~N,~N"); | |
| c$.findCompatibleGraphSet = Clazz.defineMethod (c$, "findCompatibleGraphSet", | |
| function (graphSets, spec) { | |
| for (var i = 0; i < graphSets.size (); i++) if (JSV.common.Spectrum.areXScalesCompatible (spec, graphSets.get (i).getSpectrum (), false, false)) return graphSets.get (i); | |
| return null; | |
| }, "JU.Lst,JSV.common.Spectrum"); | |
| c$.isGoodEvent = Clazz.defineMethod (c$, "isGoodEvent", | |
| function (zOrP, p, asX) { | |
| return (p == null ? (Math.abs (zOrP.xPixel1 - zOrP.xPixel0) > 5 && Math.abs (zOrP.yPixel1 - zOrP.yPixel0) > 5) : asX ? Math.abs (zOrP.xPixel0 - p.xPixel0) > 5 : Math.abs (zOrP.yPixel0 - p.yPixel0) > 5); | |
| }, "JSV.common.PlotWidget,JSV.common.PlotWidget,~B"); | |
| c$.isOnLine = Clazz.defineMethod (c$, "isOnLine", | |
| function (xPixel, yPixel, x1, y1, x2, y2) { | |
| var dx1 = Math.abs (x1 - xPixel); | |
| if (dx1 < 2 && Math.abs (y1 - yPixel) < 2) return true; | |
| var dx2 = x2 - xPixel; | |
| if (Math.abs (dx2) < 2 && Math.abs (y2 - yPixel) < 2) return true; | |
| var dy12 = y1 - y2; | |
| if (Math.abs (dy12) > 2 && (y1 < yPixel) == (y2 < yPixel)) return false; | |
| var dx12 = x1 - x2; | |
| if (Math.abs (dx12) > 2 && (x1 < xPixel) == (x2 < xPixel)) return false; | |
| return (JSV.common.GraphSet.distance (dx1, y1 - yPixel) + JSV.common.GraphSet.distance (dx2, yPixel - y2) < JSV.common.GraphSet.distance (dx12, dy12) + 2); | |
| }, "~N,~N,~N,~N,~N,~N"); | |
| c$.setFractionalPositions = Clazz.defineMethod (c$, "setFractionalPositions", | |
| function (pd, graphSets, linkMode) { | |
| var n = graphSets.size (); | |
| var f = 0; | |
| var n2d = 1; | |
| var gs; | |
| var y = 0; | |
| pd.isLinked = (linkMode !== JSV.common.PanelData.LinkMode.NONE); | |
| if (linkMode === JSV.common.PanelData.LinkMode.NONE) { | |
| for (var i = 0; i < n; i++) { | |
| gs = graphSets.get (i); | |
| f += (gs.getSpectrumAt (0).is1D () ? 1 : n2d) * gs.nSplit; | |
| } | |
| f = 1 / f; | |
| for (var i = 0; i < n; i++) { | |
| gs = graphSets.get (i); | |
| gs.isLinked = false; | |
| var g = (gs.getSpectrumAt (0).is1D () ? f : n2d * f); | |
| gs.fX0 = 0; | |
| gs.fY0 = y; | |
| gs.fracX = 1; | |
| gs.fracY = g; | |
| y += g * gs.nSplit; | |
| } | |
| } else { | |
| var gs2d = null; | |
| var i2d = -1; | |
| if (n == 2 || n == 3) for (var i = 0; i < n; i++) { | |
| gs = graphSets.get (i); | |
| if (!gs.getSpectrum ().is1D ()) { | |
| gs2d = gs; | |
| if (i2d >= 0) i = -2; | |
| i2d = i; | |
| break; | |
| }} | |
| if (i2d == -2 || i2d == -1 && n != 2) { | |
| JSV.common.GraphSet.setFractionalPositions (pd, graphSets, JSV.common.PanelData.LinkMode.NONE); | |
| return; | |
| }for (var i = 0; i < n; i++) { | |
| gs = graphSets.get (i); | |
| gs.isLinked = true; | |
| var s1 = gs.getSpectrumAt (0); | |
| var is1D = s1.is1D (); | |
| if (is1D) { | |
| if (gs2d != null) { | |
| var s2 = gs2d.getSpectrumAt (0); | |
| if (JSV.common.Spectrum.areLinkableX (s1, s2)) gs.gs2dLinkedX = gs2d; | |
| if (JSV.common.Spectrum.areLinkableY (s1, s2)) gs.gs2dLinkedY = gs2d; | |
| }gs.fX0 = 0; | |
| gs.fY0 = y; | |
| gs.fracX = (gs2d == null ? 1 : 0.5); | |
| gs.fracY = (n == 3 || gs2d == null ? 0.5 : 1); | |
| y += 0.5; | |
| } else { | |
| gs.fX0 = 0.5; | |
| gs.fY0 = 0; | |
| gs.fracX = 0.5; | |
| gs.fracY = 1; | |
| }} | |
| }}, "JSV.common.PanelData,JU.Lst,JSV.common.PanelData.LinkMode"); | |
| Clazz.defineMethod (c$, "addAnnotation", | |
| function (args, title) { | |
| if (args.size () == 0 || args.size () == 1 && args.get (0).equalsIgnoreCase ("none")) { | |
| this.annotations = null; | |
| this.lastAnnotation = null; | |
| return null; | |
| }if (args.size () < 4 && this.lastAnnotation == null) this.lastAnnotation = this.getAnnotation ((this.getScale ().maxXOnScale + this.getScale ().minXOnScale) / 2, (this.getScale ().maxYOnScale + this.getScale ().minYOnScale) / 2, title, false, false, 0, 0); | |
| var annotation = this.getAnnotation (args, this.lastAnnotation); | |
| if (annotation == null) return null; | |
| if (this.annotations == null && args.size () == 1 && args.get (0).charAt (0) == '\"') { | |
| var s = annotation.text; | |
| this.getSpectrum ().setTitle (s); | |
| return s; | |
| }this.lastAnnotation = annotation; | |
| this.addAnnotation (annotation, false); | |
| return null; | |
| }, "JU.Lst,~S"); | |
| Clazz.defineMethod (c$, "addHighlight", | |
| function (x1, x2, spec, color) { | |
| if (spec == null) spec = this.getSpectrumAt (0); | |
| var hl = Clazz.innerTypeInstance (JSV.common.GraphSet.Highlight, this, null, x1, x2, spec, (color == null ? this.pd.getColor (JSV.common.ScriptToken.HIGHLIGHTCOLOR) : color)); | |
| if (!this.highlights.contains (hl)) this.highlights.addLast (hl); | |
| }, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); | |
| Clazz.defineMethod (c$, "addPeakHighlight", | |
| function (peakInfo) { | |
| for (var i = this.spectra.size (); --i >= 0; ) { | |
| var spec = this.spectra.get (i); | |
| this.removeAllHighlights (spec); | |
| if (peakInfo == null || peakInfo.isClearAll () || spec !== peakInfo.spectrum) continue; | |
| var peak = peakInfo.toString (); | |
| if (peak == null) { | |
| continue; | |
| }var xMin = JU.PT.getQuotedAttribute (peak, "xMin"); | |
| var xMax = JU.PT.getQuotedAttribute (peak, "xMax"); | |
| if (xMin == null || xMax == null) return; | |
| var x1 = JU.PT.parseFloat (xMin); | |
| var x2 = JU.PT.parseFloat (xMax); | |
| if (Float.isNaN (x1) || Float.isNaN (x2)) return; | |
| this.pd.addHighlight (this, x1, x2, spec, 200, 140, 140, 100); | |
| spec.setSelectedPeak (peakInfo); | |
| if (this.getScale ().isInRangeX (x1) || this.getScale ().isInRangeX (x2) || x1 < this.getScale ().minX && this.getScale ().maxX < x2) { | |
| } else { | |
| this.setZoomTo (0); | |
| }} | |
| }, "JSV.common.PeakInfo"); | |
| Clazz.defineMethod (c$, "advanceSubSpectrum", | |
| function (dir) { | |
| var spec0 = this.getSpectrumAt (0); | |
| var i = spec0.advanceSubSpectrum (dir); | |
| if (spec0.isForcedSubset ()) this.viewData.setXRangeForSubSpectrum (this.getSpectrum ().getXYCoords ()); | |
| this.pd.notifySubSpectrumChange (i, this.getSpectrum ()); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "checkSpectrumClickedEvent", | |
| function (xPixel, yPixel, clickCount) { | |
| if (this.nextClickForSetPeak != null) return false; | |
| if (clickCount > 1 || this.pendingMeasurement != null || !this.isInPlotRegion (xPixel, yPixel)) return false; | |
| if (clickCount == 0) { | |
| var isOnIntegral = this.isOnSpectrum (xPixel, yPixel, -1); | |
| this.pd.integralShiftMode = (isOnIntegral ? this.getShiftMode (xPixel, yPixel) : 0); | |
| this.pd.isIntegralDrag = (this.pd.integralShiftMode == 0 && (isOnIntegral || this.haveIntegralDisplayed (-1) && this.findMeasurement (this.getIntegrationGraph (-1), xPixel, yPixel, 0) != null)); | |
| if (this.pd.integralShiftMode != 0) return false; | |
| }if (!this.showAllStacked) return false; | |
| this.stackSelected = false; | |
| for (var i = 0; i < this.nSpectra; i++) { | |
| if (!this.isOnSpectrum (xPixel, yPixel, i)) continue; | |
| this.setSpectrumClicked (this.iPreviousSpectrumClicked = i); | |
| return false; | |
| } | |
| if (this.isDialogOpen ()) return false; | |
| this.setSpectrumClicked (-1); | |
| return this.stackSelected = false; | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "getShiftMode", | |
| function (xPixel, yPixel) { | |
| return (this.isStartEndIntegral (xPixel, false) ? yPixel : this.isStartEndIntegral (xPixel, true) ? -yPixel : 0); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "isDialogOpen", | |
| function () { | |
| return (this.isVisible (this.getDialog (JSV.common.Annotation.AType.Integration, -1)) || this.isVisible (this.getDialog (JSV.common.Annotation.AType.Measurements, -1)) || this.isVisible (this.getDialog (JSV.common.Annotation.AType.PeakList, -1))); | |
| }); | |
| Clazz.defineMethod (c$, "isStartEndIntegral", | |
| function (xPixel, isEnd) { | |
| return (isEnd ? this.xPixelPlot1 - xPixel < 20 : xPixel - this.xPixelPlot0 < 20); | |
| }, "~N,~B"); | |
| Clazz.defineMethod (c$, "checkWidgetEvent", | |
| function (xPixel, yPixel, isPress) { | |
| if (!this.triggered) return false; | |
| this.triggered = false; | |
| var widget; | |
| if (isPress) { | |
| if (this.pd.clickCount == 2 && this.lastIntDragX != xPixel && !this.is2dClick (xPixel, yPixel)) { | |
| if (this.pendingMeasurement == null) { | |
| if (this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { | |
| this.setSpectrumClicked (this.iPreviousSpectrumClicked); | |
| }this.processPendingMeasurement (xPixel, yPixel, 2); | |
| return true; | |
| }} else if (!this.is2dClick (xPixel, yPixel)) { | |
| if (this.isOnSpectrum (xPixel, yPixel, -1)) { | |
| this.checkIntegral (this.toX (xPixel), NaN, false); | |
| }if (this.lastIntDragX == xPixel) { | |
| this.pd.isIntegralDrag = true; | |
| if (!this.checkIntegral (this.toX (xPixel), this.toX (xPixel), false)) return false; | |
| }}if (this.pendingMeasurement != null) return true; | |
| widget = this.getPinSelected (xPixel, yPixel); | |
| if (widget == null) { | |
| yPixel = this.fixY (yPixel); | |
| if (xPixel < this.xPixel1) { | |
| if (this.pd.shiftPressed) this.setSpectrumClicked (this.iPreviousSpectrumClicked); | |
| xPixel = this.fixX (xPixel); | |
| if (this.zoomBox1D == null) this.newPins (); | |
| this.zoomBox1D.setX (this.toX (xPixel), xPixel); | |
| this.zoomBox1D.yPixel0 = yPixel; | |
| widget = this.zoomBox1D; | |
| } else if (this.imageView != null && xPixel < this.imageView.xPixel1) { | |
| this.zoomBox2D.setX (this.imageView.toX (xPixel), this.imageView.fixX (xPixel)); | |
| this.zoomBox2D.yPixel0 = yPixel; | |
| widget = this.zoomBox2D; | |
| }}this.pd.thisWidget = widget; | |
| return false; | |
| }this.nextClickForSetPeak = null; | |
| widget = this.pd.thisWidget; | |
| if (widget == null) return false; | |
| if (widget === this.zoomBox1D) { | |
| this.zoomBox1D.xPixel1 = this.fixX (xPixel); | |
| this.zoomBox1D.yPixel1 = this.fixY (yPixel); | |
| if (this.pd.isIntegralDrag && this.zoomBox1D.xPixel0 != this.zoomBox1D.xPixel1) { | |
| if ((this.lastIntDragX <= xPixel) != (this.zoomBox1D.xPixel0 <= xPixel)) { | |
| this.zoomBox1D.xPixel0 = this.lastIntDragX; | |
| this.zoomBox1D.xPixel1 = xPixel; | |
| this.zoomBox1D.setXVal (this.toX (this.zoomBox1D.xPixel0)); | |
| }this.lastIntDragX = xPixel; | |
| this.checkIntegral (this.zoomBox1D.getXVal (), this.toX (this.zoomBox1D.xPixel1), false); | |
| }return false; | |
| }if (!this.zoomEnabled) return false; | |
| if (widget === this.zoomBox2D) { | |
| this.zoomBox2D.xPixel1 = this.imageView.fixX (xPixel); | |
| this.zoomBox2D.yPixel1 = this.fixY (yPixel); | |
| return true; | |
| }if (widget === this.cur2Dy) { | |
| yPixel = this.fixY (yPixel); | |
| this.cur2Dy.yPixel0 = this.cur2Dy.yPixel1 = yPixel; | |
| this.setCurrentSubSpectrum (this.imageView.toSubspectrumIndex (yPixel)); | |
| return true; | |
| }if (widget === this.cur2Dx0 || widget === this.cur2Dx1) { | |
| return false; | |
| }if (widget === this.pin1Dx0 || widget === this.pin1Dx1 || widget === this.pin1Dx01) { | |
| xPixel = this.fixX (xPixel); | |
| widget.setX (this.toX0 (xPixel), xPixel); | |
| if (widget === this.pin1Dx01) { | |
| var dp = xPixel - (Clazz.doubleToInt ((this.pin1Dx0.xPixel0 + this.pin1Dx1.xPixel0) / 2)); | |
| var dp1 = (dp < 0 ? dp : dp); | |
| var dp2 = (dp < 0 ? dp : dp); | |
| xPixel = this.pin1Dx0.xPixel0 + dp2; | |
| var xPixel1 = this.pin1Dx1.xPixel0 + dp1; | |
| if (dp == 0 || this.fixX (xPixel) != xPixel || this.fixX (xPixel1) != xPixel1) return true; | |
| this.pin1Dx0.setX (this.toX0 (xPixel), xPixel); | |
| this.pin1Dx1.setX (this.toX0 (xPixel1), xPixel1); | |
| }this.doZoom (this.pin1Dx0.getXVal (), 0, this.pin1Dx1.getXVal (), 0, true, false, false, true, false); | |
| return true; | |
| }if (widget === this.pin1Dy0 || widget === this.pin1Dy1 || widget === this.pin1Dy01) { | |
| yPixel = this.fixY (yPixel); | |
| widget.setY (this.toY0 (yPixel), yPixel); | |
| if (widget === this.pin1Dy01) { | |
| var dp = yPixel - Clazz.doubleToInt ((this.pin1Dy0.yPixel0 + this.pin1Dy1.yPixel0) / 2) + 1; | |
| yPixel = this.pin1Dy0.yPixel0 + dp; | |
| var yPixel1 = this.pin1Dy1.yPixel0 + dp; | |
| var y0 = this.toY0 (yPixel); | |
| var y1 = this.toY0 (yPixel1); | |
| if (Math.min (y0, y1) == this.getScale ().minY || Math.max (y0, y1) == this.getScale ().maxY) return true; | |
| this.pin1Dy0.setY (y0, yPixel); | |
| this.pin1Dy1.setY (y1, yPixel1); | |
| }this.doZoom (0, this.pin1Dy0.getYVal (), 0, this.pin1Dy1.getYVal (), this.imageView == null, this.imageView == null, false, false, false); | |
| return true; | |
| }if (widget === this.pin2Dx0 || widget === this.pin2Dx1 || widget === this.pin2Dx01) { | |
| xPixel = this.imageView.fixX (xPixel); | |
| widget.setX (this.imageView.toX0 (xPixel), xPixel); | |
| if (widget === this.pin2Dx01) { | |
| var dp = xPixel - Clazz.doubleToInt ((this.pin2Dx0.xPixel0 + this.pin2Dx1.xPixel0) / 2) + 1; | |
| xPixel = this.pin2Dx0.xPixel0 + dp; | |
| var xPixel1 = this.pin2Dx1.xPixel0 + dp; | |
| if (this.imageView.fixX (xPixel) != xPixel || this.imageView.fixX (xPixel1) != xPixel1) return true; | |
| this.pin2Dx0.setX (this.imageView.toX0 (xPixel), xPixel); | |
| this.pin2Dx1.setX (this.imageView.toX0 (xPixel1), xPixel1); | |
| }if (!JSV.common.GraphSet.isGoodEvent (this.pin2Dx0, this.pin2Dx1, true)) { | |
| this.reset2D (true); | |
| return true; | |
| }this.imageView.setView0 (this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel0, this.pin2Dy1.yPixel0); | |
| this.doZoom (this.pin2Dx0.getXVal (), this.getScale ().minY, this.pin2Dx1.getXVal (), this.getScale ().maxY, false, false, false, true, false); | |
| return true; | |
| }if (widget === this.pin2Dy0 || widget === this.pin2Dy1 || widget === this.pin2Dy01) { | |
| yPixel = this.fixY (yPixel); | |
| widget.setY (this.imageView.toSubspectrumIndex (yPixel), yPixel); | |
| if (widget === this.pin2Dy01) { | |
| var dp = yPixel - Clazz.doubleToInt ((this.pin2Dy0.yPixel0 + this.pin2Dy1.yPixel0) / 2) + 1; | |
| yPixel = this.pin2Dy0.yPixel0 + dp; | |
| var yPixel1 = this.pin2Dy1.yPixel0 + dp; | |
| if (yPixel != this.fixY (yPixel) || yPixel1 != this.fixY (yPixel1)) return true; | |
| this.pin2Dy0.setY (this.imageView.toSubspectrumIndex (yPixel), yPixel); | |
| this.pin2Dy1.setY (this.imageView.toSubspectrumIndex (yPixel1), yPixel1); | |
| }if (!JSV.common.GraphSet.isGoodEvent (this.pin2Dy0, this.pin2Dy1, false)) { | |
| this.reset2D (false); | |
| return true; | |
| }this.imageView.setView0 (this.pin2Dx0.xPixel0, this.pin2Dy0.yPixel0, this.pin2Dx1.xPixel1, this.pin2Dy1.yPixel1); | |
| return true; | |
| }return false; | |
| }, "~N,~N,~B"); | |
| Clazz.defineMethod (c$, "clearIntegrals", | |
| function () { | |
| this.checkIntegral (NaN, 0, false); | |
| }); | |
| Clazz.defineMethod (c$, "clearMeasurements", | |
| function () { | |
| this.removeDialog (this.getFixedSelectedSpectrumIndex (), JSV.common.Annotation.AType.Measurements); | |
| }); | |
| c$.createGraphSetsAndSetLinkMode = Clazz.defineMethod (c$, "createGraphSetsAndSetLinkMode", | |
| function (pd, jsvp, spectra, startIndex, endIndex, linkMode) { | |
| var graphSets = new JU.Lst (); | |
| for (var i = 0; i < spectra.size (); i++) { | |
| var spec = spectra.get (i); | |
| var graphSet = (linkMode === JSV.common.PanelData.LinkMode.NONE ? JSV.common.GraphSet.findCompatibleGraphSet (graphSets, spec) : null); | |
| if (graphSet == null) graphSets.addLast (graphSet = new JSV.common.GraphSet (jsvp.getPanelData ())); | |
| graphSet.addSpec (spec); | |
| } | |
| JSV.common.GraphSet.setFractionalPositions (pd, graphSets, linkMode); | |
| for (var i = graphSets.size (); --i >= 0; ) { | |
| graphSets.get (i).initGraphSet (startIndex, endIndex); | |
| JU.Logger.info ("JSVGraphSet " + (i + 1) + " nSpectra = " + graphSets.get (i).nSpectra); | |
| } | |
| return graphSets; | |
| }, "JSV.common.PanelData,JSV.api.JSVPanel,JU.Lst,~N,~N,JSV.common.PanelData.LinkMode"); | |
| Clazz.defineMethod (c$, "drawGraphSet", | |
| function (gMain, gFront, gBack, width, height, left, right, top, bottom, isResized, taintedAll) { | |
| this.zoomEnabled = this.pd.getBoolean (JSV.common.ScriptToken.ENABLEZOOM); | |
| this.height = height * this.pd.scalingFactor; | |
| this.width = width * this.pd.scalingFactor; | |
| this.left = left * this.pd.scalingFactor; | |
| this.right = right * this.pd.scalingFactor; | |
| this.top = top * this.pd.scalingFactor; | |
| this.bottom = bottom * this.pd.scalingFactor; | |
| this.$haveSelectedSpectrum = false; | |
| this.selectedSpectrumIntegrals = null; | |
| this.selectedSpectrumMeasurements = null; | |
| if (!this.pd.isPrinting && this.widgets != null) for (var j = 0; j < this.widgets.length; j++) if (this.widgets[j] != null) this.widgets[j].isVisible = false; | |
| for (var iSplit = 0; iSplit < this.nSplit; iSplit++) { | |
| this.setPositionForFrame (iSplit); | |
| this.drawAll (gMain, gFront, gBack, iSplit, isResized || this.nSplit > 1, taintedAll); | |
| } | |
| this.setPositionForFrame (this.nSplit > 1 ? this.pd.currentSplitPoint : 0); | |
| if (this.pd.isPrinting) return; | |
| }, "~O,~O,~O,~N,~N,~N,~N,~N,~N,~B,~B"); | |
| Clazz.defineMethod (c$, "escapeKeyPressed", | |
| function (isDEL) { | |
| if (this.zoomBox1D != null) this.zoomBox1D.xPixel0 = this.zoomBox1D.xPixel1 = 0; | |
| if (this.zoomBox2D != null) this.zoomBox2D.xPixel0 = this.zoomBox2D.xPixel1 = 0; | |
| if (!this.inPlotMove) return; | |
| if (this.pendingMeasurement != null) { | |
| this.pendingMeasurement = null; | |
| return; | |
| }this.pd.thisWidget = null; | |
| this.pendingMeasurement = null; | |
| if (this.selectedSpectrumMeasurements != null && this.selectedMeasurement != null) { | |
| if (isDEL) this.selectedSpectrumMeasurements.clear (this.getScale ().minXOnScale, this.getScale ().maxXOnScale); | |
| else this.selectedSpectrumMeasurements.removeObj (this.selectedMeasurement); | |
| this.selectedMeasurement = null; | |
| this.updateDialog (JSV.common.Annotation.AType.Measurements, -1); | |
| }if (this.selectedSpectrumIntegrals != null && this.selectedIntegral != null) { | |
| if (isDEL) this.selectedSpectrumIntegrals.clear (this.getScale ().minXOnScale, this.getScale ().maxXOnScale); | |
| else this.selectedSpectrumIntegrals.removeObj (this.selectedIntegral); | |
| this.selectedIntegral = null; | |
| this.updateDialog (JSV.common.Annotation.AType.Integration, -1); | |
| }}, "~B"); | |
| c$.findGraphSet = Clazz.defineMethod (c$, "findGraphSet", | |
| function (graphSets, xPixel, yPixel) { | |
| for (var i = graphSets.size (); --i >= 0; ) if (graphSets.get (i).hasPoint (xPixel, yPixel)) return graphSets.get (i); | |
| return null; | |
| }, "JU.Lst,~N,~N"); | |
| Clazz.defineMethod (c$, "findMatchingPeakInfo", | |
| function (pi) { | |
| var pi2 = null; | |
| for (var i = 0; i < this.spectra.size (); i++) if ((pi2 = (this.spectra.get (i)).findMatchingPeakInfo (pi)) != null) break; | |
| return pi2; | |
| }, "JSV.common.PeakInfo"); | |
| Clazz.defineMethod (c$, "getCurrentSpectrumIndex", | |
| function () { | |
| return (this.nSpectra == 1 ? 0 : this.iSpectrumSelected); | |
| }); | |
| Clazz.defineMethod (c$, "getSelectedIntegral", | |
| function () { | |
| return this.selectedIntegral; | |
| }); | |
| Clazz.defineMethod (c$, "getShowAnnotation", | |
| function (type, i) { | |
| var id = this.getDialog (type, i); | |
| return (id != null && id.getState ()); | |
| }, "JSV.common.Annotation.AType,~N"); | |
| Clazz.defineMethod (c$, "hasFileLoaded", | |
| function (filePath) { | |
| for (var i = this.spectra.size (); --i >= 0; ) if (this.spectra.get (i).getFilePathForwardSlash ().equals (filePath)) return true; | |
| return false; | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "haveSelectedSpectrum", | |
| function () { | |
| return this.$haveSelectedSpectrum; | |
| }); | |
| Clazz.defineMethod (c$, "mouseClickedEvent", | |
| function (xPixel, yPixel, clickCount, isControlDown) { | |
| this.selectedMeasurement = null; | |
| this.selectedIntegral = null; | |
| var isNextClick = this.nextClickForSetPeak; | |
| this.nextClickForSetPeak = null; | |
| if (this.checkArrowUpDownClick (xPixel, yPixel) || this.checkArrowLeftRightClick (xPixel, yPixel)) return; | |
| this.lastClickX = NaN; | |
| this.lastPixelX = 2147483647; | |
| if (this.isSplitWidget (xPixel, yPixel)) { | |
| this.splitStack (this.nSplit == 1); | |
| return; | |
| }if (this.isCloserWidget (xPixel, yPixel)) { | |
| this.pd.closeSpectrum (); | |
| return; | |
| }var pw = this.getPinSelected (xPixel, yPixel); | |
| if (pw != null) { | |
| this.setWidgetValueByUser (pw); | |
| return; | |
| }var is2D = this.is2dClick (xPixel, yPixel); | |
| if (clickCount == 2 && this.iSpectrumClicked == -1 && this.iPreviousSpectrumClicked >= 0) { | |
| this.setSpectrumClicked (this.iPreviousSpectrumClicked); | |
| }if (!is2D && isControlDown) { | |
| this.setSpectrumClicked (this.iPreviousSpectrumClicked); | |
| if (this.pendingMeasurement != null) { | |
| this.processPendingMeasurement (xPixel, yPixel, -3); | |
| } else if (this.iSpectrumClicked >= 0) { | |
| this.processPendingMeasurement (xPixel, yPixel, 3); | |
| }return; | |
| }this.lastXMax = NaN; | |
| if (clickCount == 2) { | |
| if (is2D) { | |
| if (this.sticky2Dcursor) { | |
| this.addAnnotation (this.getAnnotation (this.imageView.toX (xPixel), this.imageView.toSubspectrumIndex (yPixel), this.pd.coordStr, false, true, 5, 5), true); | |
| }this.sticky2Dcursor = true; | |
| this.set2DCrossHairs (xPixel, yPixel); | |
| return; | |
| }if (this.isInTopBar (xPixel, yPixel)) { | |
| this.doZoom (this.toX0 (this.xPixel0), 0, this.toX0 (this.xPixel1), 0, true, false, false, true, true); | |
| } else if (this.isInRightBar (xPixel, yPixel)) { | |
| this.doZoom (this.getScale ().minXOnScale, this.viewList.get (0).getScale ().minYOnScale, this.getScale ().maxXOnScale, this.viewList.get (0).getScale ().maxYOnScale, true, true, false, false, false); | |
| } else if (this.isInTopBar2D (xPixel, yPixel)) { | |
| this.reset2D (true); | |
| } else if (this.isInRightBar2D (xPixel, yPixel)) { | |
| this.reset2D (false); | |
| } else if (this.pendingMeasurement != null) { | |
| this.processPendingMeasurement (xPixel, yPixel, -2); | |
| } else if (this.iSpectrumClicked >= 0) { | |
| this.processPendingMeasurement (xPixel, yPixel, 2); | |
| }return; | |
| }if (is2D) { | |
| if (this.annotations != null) { | |
| var xy = new JSV.common.Coordinate ().set (this.imageView.toX (xPixel), this.imageView.toSubspectrumIndex (yPixel)); | |
| var a = this.findAnnotation2D (xy); | |
| if (a != null && this.setAnnotationText (a)) { | |
| return; | |
| }}if (clickCount == 1) this.sticky2Dcursor = false; | |
| this.set2DCrossHairs (xPixel, yPixel); | |
| return; | |
| }if (this.isInPlotRegion (xPixel, yPixel)) { | |
| if (this.selectedSpectrumIntegrals != null && this.checkIntegralNormalizationClick (xPixel, yPixel)) return; | |
| if (this.pendingMeasurement != null) { | |
| this.processPendingMeasurement (xPixel, yPixel, 1); | |
| return; | |
| }this.setCoordClicked (xPixel, this.toX (xPixel), this.toY (yPixel)); | |
| this.updateDialog (JSV.common.Annotation.AType.PeakList, -1); | |
| if (isNextClick != null) { | |
| this.nextClickForSetPeak = isNextClick; | |
| this.shiftSpectrum (4, NaN, NaN); | |
| this.nextClickForSetPeak = null; | |
| return; | |
| }} else { | |
| this.setCoordClicked (0, NaN, 0); | |
| }this.pd.notifyPeakPickedListeners (null); | |
| }, "~N,~N,~N,~B"); | |
| Clazz.defineMethod (c$, "is2dClick", | |
| function (xPixel, yPixel) { | |
| return (this.imageView != null && xPixel == this.imageView.fixX (xPixel) && yPixel == this.fixY (yPixel)); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "updateDialog", | |
| function (type, iSpec) { | |
| var ad = this.getDialog (type, iSpec); | |
| if (ad == null || !this.isVisible (ad)) return; | |
| var xRange = this.toX (this.xPixel1) - this.toX (this.xPixel0); | |
| var yOffset = (this.getSpectrum ().isInverted () ? this.yPixel1 - this.pd.mouseY : this.pd.mouseY - this.yPixel0); | |
| (ad).update (this.pd.coordClicked, xRange, yOffset); | |
| }, "JSV.common.Annotation.AType,~N"); | |
| Clazz.defineMethod (c$, "isVisible", | |
| function (ad) { | |
| return (Clazz.instanceOf (ad, JSV.dialog.JSVDialog) && ad.isVisible ()); | |
| }, "JSV.api.AnnotationData"); | |
| Clazz.defineMethod (c$, "mousePressedEvent", | |
| function (xPixel, yPixel, clickCount) { | |
| this.checkWidgetEvent (xPixel, yPixel, true); | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "mouseReleasedEvent", | |
| function (xPixel, yPixel) { | |
| if (this.pendingMeasurement != null) { | |
| if (Math.abs (this.toPixelX (this.pendingMeasurement.getXVal ()) - xPixel) < 2) this.pendingMeasurement = null; | |
| this.processPendingMeasurement (xPixel, yPixel, -2); | |
| this.setToolTipForPixels (xPixel, yPixel); | |
| return; | |
| }if (this.pd.integralShiftMode != 0) { | |
| this.pd.integralShiftMode = 0; | |
| this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; | |
| return; | |
| }if (this.iSpectrumMovedTo >= 0) this.setScale (this.iSpectrumMovedTo); | |
| var thisWidget = this.pd.thisWidget; | |
| if (this.pd.isIntegralDrag) { | |
| if (JSV.common.GraphSet.isGoodEvent (this.zoomBox1D, null, true)) { | |
| this.checkIntegral (this.toX (this.zoomBox1D.xPixel0), this.toX (this.zoomBox1D.xPixel1), true); | |
| }this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0 = 0; | |
| this.pendingIntegral = null; | |
| this.pd.isIntegralDrag = false; | |
| } else if (thisWidget === this.zoomBox2D) { | |
| if (!JSV.common.GraphSet.isGoodEvent (this.zoomBox2D, null, true)) return; | |
| this.imageView.setZoom (this.zoomBox2D.xPixel0, this.zoomBox2D.yPixel0, this.zoomBox2D.xPixel1, this.zoomBox2D.yPixel1); | |
| this.zoomBox2D.xPixel1 = this.zoomBox2D.xPixel0; | |
| this.doZoom (this.imageView.toX (this.imageView.xPixel0), this.getScale ().minY, this.imageView.toX (this.imageView.xPixel0 + this.imageView.xPixels - 1), this.getScale ().maxY, false, false, false, true, true); | |
| } else if (thisWidget === this.zoomBox1D) { | |
| if (!JSV.common.GraphSet.isGoodEvent (this.zoomBox1D, null, true)) return; | |
| var x1 = this.zoomBox1D.xPixel1; | |
| var doY = (this.pd.shiftPressed); | |
| this.doZoom (this.toX (this.zoomBox1D.xPixel0), (doY ? this.toY (this.zoomBox1D.yPixel0) : 0), this.toX (x1), (doY ? this.toY (this.zoomBox1D.yPixel1) : 0), true, doY, true, true, true); | |
| this.zoomBox1D.xPixel1 = this.zoomBox1D.xPixel0; | |
| } else if (thisWidget === this.pin1Dx0 || thisWidget === this.pin1Dx1 || thisWidget === this.cur2Dx0 || thisWidget === this.cur2Dx1) { | |
| this.addCurrentZoom (); | |
| }}, "~N,~N"); | |
| Clazz.defineMethod (c$, "mouseMovedEvent", | |
| function (xPixel, yPixel) { | |
| if (this.nSpectra > 1) { | |
| var iFrame = this.getSplitPoint (yPixel); | |
| this.setPositionForFrame (iFrame); | |
| this.setSpectrumMovedTo (this.nSplit > 1 ? iFrame : this.iSpectrumSelected); | |
| if (this.iSpectrumMovedTo >= 0) this.setScale (this.iSpectrumMovedTo); | |
| }this.inPlotMove = this.isInPlotRegion (xPixel, yPixel); | |
| this.setXPixelMovedTo (1.7976931348623157E308, 1.7976931348623157E308, (this.inPlotMove ? xPixel : -1), -1); | |
| if (this.inPlotMove) { | |
| this.xValueMovedTo = this.toX (this.xPixelMovedTo); | |
| this.yValueMovedTo = this.getSpectrum ().getYValueAt (this.xValueMovedTo); | |
| }if (this.pd.integralShiftMode != 0) { | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| var xy = (ad.getData ()).getXYCoords (); | |
| var y = xy[this.pd.integralShiftMode > 0 ? xy.length - 1 : 0].getYVal (); | |
| (ad.getData ()).shiftY (this.pd.integralShiftMode, this.toPixelYint (y) + yPixel - (this.pd.integralShiftMode > 0 ? this.yPixelPlot1 : this.yPixelPlot0), this.yPixel0, this.yPixels); | |
| } else if (this.pd.isIntegralDrag) { | |
| } else if (this.pendingMeasurement != null) { | |
| this.processPendingMeasurement (xPixel, yPixel, 0); | |
| this.setToolTipForPixels (xPixel, yPixel); | |
| } else { | |
| this.selectedMeasurement = (this.inPlotMove && this.selectedSpectrumMeasurements != null ? this.findMeasurement (this.selectedSpectrumMeasurements, xPixel, yPixel, 0) : null); | |
| this.selectedIntegral = null; | |
| if (this.inPlotMove && this.selectedSpectrumIntegrals != null && this.selectedMeasurement == null) { | |
| this.selectedIntegral = this.findMeasurement (this.selectedSpectrumIntegrals, xPixel, yPixel, 0); | |
| if (this.selectedIntegral == null) this.selectedIntegral = this.findMeasurement (this.selectedSpectrumIntegrals, xPixel, yPixel, -5); | |
| }this.setToolTipForPixels (xPixel, yPixel); | |
| if (this.imageView == null) { | |
| this.piMouseOver = null; | |
| var iSpec = (this.nSplit > 1 ? this.iSpectrumMovedTo : this.iSpectrumClicked); | |
| if (!this.isDrawNoSpectra () && iSpec >= 0) { | |
| var spec = this.spectra.get (iSpec); | |
| if (spec.getPeakList () != null) { | |
| this.coordTemp.setXVal (this.toX (xPixel)); | |
| this.coordTemp.setYVal (this.toY (yPixel)); | |
| this.piMouseOver = spec.findPeakByCoord (xPixel, this.coordTemp); | |
| }}} else { | |
| if (!this.pd.display1D && this.sticky2Dcursor) { | |
| this.set2DCrossHairs (xPixel, yPixel); | |
| }}}}, "~N,~N"); | |
| Clazz.defineMethod (c$, "nextView", | |
| function () { | |
| if (this.currentZoomIndex + 1 < this.viewList.size ()) this.setZoomTo (this.currentZoomIndex + 1); | |
| }); | |
| Clazz.defineMethod (c$, "previousView", | |
| function () { | |
| if (this.currentZoomIndex > 0) this.setZoomTo (this.currentZoomIndex - 1); | |
| }); | |
| Clazz.defineMethod (c$, "resetView", | |
| function () { | |
| this.setZoomTo (0); | |
| }); | |
| Clazz.defineMethod (c$, "removeAllHighlights", | |
| function () { | |
| this.removeAllHighlights (null); | |
| }); | |
| Clazz.defineMethod (c$, "removeHighlight", | |
| function (index) { | |
| this.highlights.removeItemAt (index); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "removeHighlight", | |
| function (x1, x2) { | |
| for (var i = this.highlights.size (); --i >= 0; ) { | |
| var h = this.highlights.get (i); | |
| if (h.x1 == x1 && h.x2 == x2) this.highlights.removeItemAt (i); | |
| } | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "scaleYBy", | |
| function (factor) { | |
| if (this.imageView == null && !this.zoomEnabled) return; | |
| this.viewData.scaleSpectrum (this.imageView == null ? this.iSpectrumSelected : -2, factor); | |
| if (this.imageView != null) { | |
| this.update2dImage (false); | |
| this.resetPinsFromView (); | |
| }this.pd.refresh (); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "selectSpectrum", | |
| function (filePath, type, model) { | |
| var haveFound = false; | |
| for (var i = this.spectra.size (); --i >= 0; ) if ((filePath == null || this.getSpectrumAt (i).getFilePathForwardSlash ().equals (filePath)) && (this.getSpectrumAt (i).matchesPeakTypeModel (type, model))) { | |
| this.setSpectrumSelected (i); | |
| if (this.nSplit > 1) this.splitStack (true); | |
| haveFound = true; | |
| } | |
| if (this.nSpectra > 1 && !haveFound && this.iSpectrumSelected >= 0 && !this.pd.isCurrentGraphSet (this)) this.setSpectrumSelected (-2147483648); | |
| return haveFound; | |
| }, "~S,~S,~S"); | |
| Clazz.defineMethod (c$, "selectPeakByFileIndex", | |
| function (filePath, index, atomKey) { | |
| var pi; | |
| for (var i = this.spectra.size (); --i >= 0; ) if ((pi = this.getSpectrumAt (i).selectPeakByFileIndex (filePath, index, atomKey)) != null) return pi; | |
| return null; | |
| }, "~S,~S,~S"); | |
| Clazz.defineMethod (c$, "setSelected", | |
| function (i) { | |
| if (i < 0) { | |
| this.bsSelected.clearAll (); | |
| this.setSpectrumClicked (-1); | |
| return; | |
| }this.bsSelected.set (i); | |
| this.setSpectrumClicked ((this.bsSelected.cardinality () == 1 ? i : -1)); | |
| if (this.nSplit > 1 && i >= 0) this.pd.currentSplitPoint = i; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setSelectedIntegral", | |
| function (val) { | |
| var spec = this.selectedIntegral.getSpectrum (); | |
| this.getIntegrationGraph (this.getSpectrumIndex (spec)).setSelectedIntegral (this.selectedIntegral, val); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setShowAnnotation", | |
| function (type, tfToggle) { | |
| var id = this.getDialog (type, -1); | |
| if (id == null) { | |
| if (tfToggle != null && tfToggle !== Boolean.TRUE) return; | |
| if (type === JSV.common.Annotation.AType.PeakList || type === JSV.common.Annotation.AType.Integration || type === JSV.common.Annotation.AType.Measurements) this.pd.showDialog (type); | |
| return; | |
| }if (tfToggle == null) { | |
| if (Clazz.instanceOf (id, JSV.dialog.JSVDialog)) (id).setVisible (!(id).isVisible ()); | |
| else this.pd.showDialog (type); | |
| return; | |
| }var isON = tfToggle.booleanValue (); | |
| if (isON) id.setState (isON); | |
| if (isON || Clazz.instanceOf (id, JSV.dialog.JSVDialog)) this.pd.showDialog (type); | |
| if (!isON && Clazz.instanceOf (id, JSV.dialog.JSVDialog)) (id).setVisible (false); | |
| }, "JSV.common.Annotation.AType,Boolean"); | |
| Clazz.defineMethod (c$, "checkIntegralParams", | |
| function (parameters, value) { | |
| var spec = this.getSpectrum (); | |
| if (!spec.canIntegrate () || this.reversePlot) return false; | |
| var iSpec = this.getFixedSelectedSpectrumIndex (); | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| if (value == null) return true; | |
| switch (JSV.common.IntegralData.IntMode.getMode (value.toUpperCase ())) { | |
| case JSV.common.IntegralData.IntMode.NA: | |
| return false; | |
| case JSV.common.IntegralData.IntMode.CLEAR: | |
| this.integrate (iSpec, null); | |
| this.integrate (iSpec, parameters); | |
| break; | |
| case JSV.common.IntegralData.IntMode.ON: | |
| if (ad == null) this.integrate (iSpec, parameters); | |
| else ad.setState (true); | |
| break; | |
| case JSV.common.IntegralData.IntMode.OFF: | |
| if (ad != null) ad.setState (false); | |
| break; | |
| case JSV.common.IntegralData.IntMode.TOGGLE: | |
| if (ad == null) this.integrate (iSpec, parameters); | |
| else ad.setState (!ad.getState ()); | |
| break; | |
| case JSV.common.IntegralData.IntMode.AUTO: | |
| if (ad == null) { | |
| this.checkIntegralParams (parameters, "ON"); | |
| ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| }if (ad != null) (ad.getData ()).autoIntegrate (); | |
| break; | |
| case JSV.common.IntegralData.IntMode.LIST: | |
| this.pd.showDialog (JSV.common.Annotation.AType.Integration); | |
| break; | |
| case JSV.common.IntegralData.IntMode.MARK: | |
| if (ad == null) { | |
| this.checkIntegralParams (parameters, "ON"); | |
| ad = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| }if (ad != null) (ad.getData ()).addMarks (value.substring (4).trim ()); | |
| break; | |
| case JSV.common.IntegralData.IntMode.MIN: | |
| if (ad != null) { | |
| try { | |
| var val = Double.parseDouble (JSV.common.ScriptToken.getTokens (value).get (1)); | |
| (ad.getData ()).setMinimumIntegral (val); | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| } else { | |
| throw e; | |
| } | |
| } | |
| }break; | |
| case JSV.common.IntegralData.IntMode.UPDATE: | |
| if (ad != null) (ad.getData ()).update (parameters); | |
| } | |
| this.updateDialog (JSV.common.Annotation.AType.Integration, -1); | |
| return true; | |
| }, "JSV.common.Parameters,~S"); | |
| Clazz.defineMethod (c$, "setSpectrum", | |
| function (iSpec, fromSplit) { | |
| if (fromSplit && this.nSplit > 1) { | |
| if (this.nSplit > 1) this.setSpectrumClicked (iSpec); | |
| } else { | |
| this.setSpectrumClicked (iSpec); | |
| this.stackSelected = false; | |
| this.showAllStacked = false; | |
| }if (iSpec >= 0) this.dialogsToFront (this.getSpectrum ()); | |
| }, "~N,~B"); | |
| Clazz.defineMethod (c$, "setSpectrumJDX", | |
| function (spec) { | |
| var pt = this.getFixedSelectedSpectrumIndex (); | |
| this.spectra.removeItemAt (pt); | |
| this.spectra.add (pt, spec); | |
| this.pendingMeasurement = null; | |
| this.clearViews (); | |
| this.viewData.newSpectrum (this.spectra); | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "setZoom", | |
| function (x1, y1, x2, y2) { | |
| this.setZoomTo (0); | |
| if (x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0) { | |
| this.newPins (); | |
| this.imageView = null; | |
| x1 = this.getScale ().minXOnScale; | |
| x2 = this.getScale ().maxXOnScale; | |
| } else { | |
| this.doZoom (x1, y1, x2, y2, true, (y1 != y2), false, true, true); | |
| }}, "~N,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "shiftSpectrum", | |
| function (mode, xOld, xNew) { | |
| var spec = this.getSpectrum (); | |
| if (!spec.isNMR () || !spec.is1D ()) return false; | |
| var ok = null; | |
| var dx = 0; | |
| if (xNew == 1.7976931348623157E308) { | |
| dx = -spec.addSpecShift (0); | |
| } else { | |
| switch (mode) { | |
| case 3: | |
| dx = xNew; | |
| break; | |
| case 1: | |
| case 2: | |
| this.nextClickMode = mode; | |
| if (Double.isNaN (xOld)) { | |
| ok = this.pd.getInput ("Click on " + (mode == 1 ? "or beside a peak to set its chemical shift" : "the spectrum set the chemical shift at that point") + (xNew == -2147483648 ? "" : " to " + xNew) + ".", "Set Reference " + (mode == 1 ? "for Peak" : "at Point"), "OK"); | |
| this.nextClickForSetPeak = ("OK".equals (ok) ? Double.$valueOf (xNew) : null); | |
| return false; | |
| }this.nextClickForSetPeak = null; | |
| case 4: | |
| if (this.nextClickForSetPeak != null) { | |
| xNew = this.nextClickForSetPeak.doubleValue (); | |
| this.nextClickForSetPeak = null; | |
| }if (Double.isNaN (xOld)) xOld = this.lastClickX; | |
| if (this.nextClickMode == 1) xOld = this.getNearestPeak (spec, xOld, this.toY (this.pd.mouseY)); | |
| if (Double.isNaN (xNew)) try { | |
| var s = this.pd.getInput ("New chemical shift (set blank to reset)", "Set Reference", JU.DF.formatDecimalDbl (xOld, this.getScale ().precision[0])).trim (); | |
| if (s.length == 0) xNew = xOld - spec.addSpecShift (0); | |
| else xNew = Double.parseDouble (s); | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| return false; | |
| } else { | |
| throw e; | |
| } | |
| } | |
| dx = xNew - xOld; | |
| break; | |
| } | |
| }if (dx == 0) return false; | |
| spec.addSpecShift (dx); | |
| if (this.annotations != null) for (var i = this.annotations.size (); --i >= 0; ) if (this.annotations.get (i).spec === spec) this.annotations.get (i).addSpecShift (dx); | |
| if (this.dialogs != null) for (var e, $e = this.dialogs.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) if (e.getValue ().getSpectrum () === spec) e.getValue ().setSpecShift (dx); | |
| this.getScale ().addSpecShift (dx); | |
| if (!Double.isNaN (this.lastClickX)) this.lastClickX += dx; | |
| this.updateDialogs (); | |
| this.doZoom (0, this.getScale ().minYOnScale, 0, this.getScale ().maxYOnScale, true, true, false, true, false); | |
| this.pd.setTaintedAll (); | |
| this.pd.repaint (); | |
| return true; | |
| }, "~N,~N,~N"); | |
| Clazz.defineMethod (c$, "toPeak", | |
| function (istep) { | |
| istep *= (this.drawXAxisLeftToRight ? 1 : -1); | |
| if (Double.isNaN (this.lastClickX)) this.lastClickX = this.lastPixelX = 0; | |
| var spec = this.getSpectrum (); | |
| var coord = this.setCoordClicked (this.lastPixelX, this.lastClickX, 0); | |
| var iPeak = spec.setNextPeak (coord, istep); | |
| if (iPeak < 0) return; | |
| var peak = spec.getPeakList ().get (iPeak); | |
| spec.setSelectedPeak (peak); | |
| this.setCoordClicked (peak.getXPixel (), peak.getX (), 0); | |
| this.pd.notifyPeakPickedListeners ( new JSV.common.PeakPickEvent (this.jsvp, this.pd.coordClicked, peak)); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "scaleSelectedBy", | |
| function (f) { | |
| for (var i = this.bsSelected.nextSetBit (0); i >= 0; i = this.bsSelected.nextSetBit (i + 1)) this.viewData.scaleSpectrum (i, f); | |
| }, "~N"); | |
| Clazz.overrideMethod (c$, "toString", | |
| function () { | |
| return "gs: " + this.nSpectra + " " + this.spectra + " " + this.spectra.get (0).getFilePath (); | |
| }); | |
| Clazz.defineMethod (c$, "setXPointer", | |
| function (spec, x) { | |
| if (spec != null) this.setSpectrumClicked (this.getSpectrumIndex (spec)); | |
| this.xValueMovedTo = this.lastClickX = x; | |
| this.lastPixelX = this.toPixelX (x); | |
| this.setXPixelMovedTo (x, 1.7976931348623157E308, 0, 0); | |
| this.yValueMovedTo = NaN; | |
| }, "JSV.common.Spectrum,~N"); | |
| Clazz.defineMethod (c$, "setXPointer2", | |
| function (spec, x) { | |
| if (spec != null) this.setSpectrumClicked (this.getSpectrumIndex (spec)); | |
| this.setXPixelMovedTo (1.7976931348623157E308, x, 0, 0); | |
| }, "JSV.common.Spectrum,~N"); | |
| Clazz.defineMethod (c$, "hasCurrentMeasurement", | |
| function (type) { | |
| return ((type === JSV.common.Annotation.AType.Integration ? this.selectedSpectrumIntegrals : this.selectedSpectrumMeasurements) != null); | |
| }, "JSV.common.Annotation.AType"); | |
| Clazz.defineMethod (c$, "getDialog", | |
| function (type, iSpec) { | |
| if (iSpec == -1) iSpec = this.getCurrentSpectrumIndex (); | |
| return (this.dialogs == null || iSpec < 0 ? null : this.dialogs.get (type + "_" + iSpec)); | |
| }, "JSV.common.Annotation.AType,~N"); | |
| Clazz.defineMethod (c$, "removeDialog", | |
| function (iSpec, type) { | |
| if (this.dialogs != null && iSpec >= 0) this.dialogs.remove (type + "_" + iSpec); | |
| }, "~N,JSV.common.Annotation.AType"); | |
| Clazz.defineMethod (c$, "addDialog", | |
| function (iSpec, type, dialog) { | |
| if (this.dialogs == null) this.dialogs = new java.util.Hashtable (); | |
| var key = type + "_" + iSpec; | |
| dialog.setGraphSetKey (key); | |
| this.dialogs.put (key, dialog); | |
| return dialog; | |
| }, "~N,JSV.common.Annotation.AType,JSV.api.AnnotationData"); | |
| Clazz.defineMethod (c$, "removeDialog", | |
| function (dialog) { | |
| var key = dialog.getGraphSetKey (); | |
| this.dialogs.remove (key); | |
| var data = dialog.getData (); | |
| if (data != null) this.dialogs.put (key, data); | |
| }, "JSV.dialog.JSVDialog"); | |
| Clazz.defineMethod (c$, "getPeakListing", | |
| function (iSpec, p, forceNew) { | |
| if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex (); | |
| if (iSpec < 0) return null; | |
| var dialog = this.getDialog (JSV.common.Annotation.AType.PeakList, -1); | |
| if (dialog == null) { | |
| if (!forceNew) return null; | |
| this.addDialog (iSpec, JSV.common.Annotation.AType.PeakList, dialog = new JSV.common.PeakData (JSV.common.Annotation.AType.PeakList, this.getSpectrum ())); | |
| }(dialog.getData ()).setPeakList (p, -2147483648, this.viewData.getScale ()); | |
| if (Clazz.instanceOf (dialog, JSV.dialog.JSVDialog)) (dialog).setFields (); | |
| return dialog.getData (); | |
| }, "~N,JSV.common.Parameters,~B"); | |
| Clazz.defineMethod (c$, "setPeakListing", | |
| function (tfToggle) { | |
| var dialog = this.getDialog (JSV.common.Annotation.AType.PeakList, -1); | |
| var ad = (Clazz.instanceOf (dialog, JSV.dialog.JSVDialog) ? dialog : null); | |
| var isON = (tfToggle == null ? ad == null || !ad.isVisible () : tfToggle.booleanValue ()); | |
| if (isON) { | |
| this.pd.showDialog (JSV.common.Annotation.AType.PeakList); | |
| } else { | |
| if (Clazz.instanceOf (dialog, JSV.dialog.JSVDialog)) (dialog).setVisible (false); | |
| }}, "Boolean"); | |
| Clazz.defineMethod (c$, "haveIntegralDisplayed", | |
| function (i) { | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, i); | |
| return (ad != null && ad.getState ()); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "getIntegrationGraph", | |
| function (i) { | |
| var ad = this.getDialog (JSV.common.Annotation.AType.Integration, i); | |
| return (ad == null ? null : ad.getData ()); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setIntegrationRatios", | |
| function (value) { | |
| var iSpec = this.getFixedSelectedSpectrumIndex (); | |
| if (this.aIntegrationRatios == null) this.aIntegrationRatios = new Array (this.nSpectra); | |
| this.aIntegrationRatios[iSpec] = JSV.common.IntegralData.getIntegrationRatiosFromString (this.getSpectrum (), value); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "getIntegrationRatios", | |
| function (i) { | |
| return (this.aIntegrationRatios == null ? null : this.aIntegrationRatios[i]); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "integrate", | |
| function (iSpec, parameters) { | |
| var spec = this.getSpectrumAt (iSpec); | |
| if (parameters == null || !spec.canIntegrate ()) { | |
| this.removeDialog (iSpec, JSV.common.Annotation.AType.Integration); | |
| return false; | |
| }this.addDialog (iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData (spec, parameters)); | |
| return true; | |
| }, "~N,JSV.common.Parameters"); | |
| Clazz.defineMethod (c$, "getIntegration", | |
| function (iSpec, p, forceNew) { | |
| if (iSpec < 0) iSpec = this.getCurrentSpectrumIndex (); | |
| if (iSpec < 0) return null; | |
| var dialog = this.getDialog (JSV.common.Annotation.AType.Integration, -1); | |
| if (dialog == null) { | |
| if (!forceNew) return null; | |
| dialog = this.addDialog (iSpec, JSV.common.Annotation.AType.Integration, new JSV.common.IntegralData (this.getSpectrum (), p)); | |
| }return dialog.getData (); | |
| }, "~N,JSV.common.Parameters,~B"); | |
| Clazz.defineMethod (c$, "getMeasurementInfo", | |
| function (type, iSpec) { | |
| var md; | |
| switch (type) { | |
| case JSV.common.Annotation.AType.PeakList: | |
| md = this.getPeakListing (iSpec, null, false); | |
| break; | |
| case JSV.common.Annotation.AType.Integration: | |
| md = this.getIntegration (iSpec, null, false); | |
| break; | |
| default: | |
| return null; | |
| } | |
| if (md == null) return null; | |
| var info = new java.util.Hashtable (); | |
| md.getInfo (info); | |
| return info; | |
| }, "JSV.common.Annotation.AType,~N"); | |
| Clazz.defineMethod (c$, "getInfo", | |
| function (key, iSpec) { | |
| var spectraInfo = new java.util.Hashtable (); | |
| if ("".equals (key)) { | |
| spectraInfo.put ("KEYS", "viewInfo spectra"); | |
| } else if ("viewInfo".equalsIgnoreCase (key)) return this.getScale ().getInfo (spectraInfo); | |
| var specInfo = new JU.Lst (); | |
| spectraInfo.put ("spectra", specInfo); | |
| for (var i = 0; i < this.nSpectra; i++) { | |
| if (iSpec >= 0 && i != iSpec) continue; | |
| var spec = this.spectra.get (i); | |
| var info = spec.getInfo (key); | |
| if (iSpec >= 0 && key != null && (info.size () == 2 || key.equalsIgnoreCase ("id"))) { | |
| if (info.size () == 2) info.remove ("id"); | |
| return info; | |
| }JSV.common.Parameters.putInfo (key, info, "type", spec.getDataType ()); | |
| JSV.common.Parameters.putInfo (key, info, "titleLabel", spec.getTitleLabel ()); | |
| JSV.common.Parameters.putInfo (key, info, "filePath", spec.getFilePath ().$replace ('\\', '/')); | |
| JSV.common.Parameters.putInfo (key, info, "PeakList", (JSV.common.Parameters.isMatch (key, "PeakList") ? this.getMeasurementInfo (JSV.common.Annotation.AType.PeakList, i) : null)); | |
| JSV.common.Parameters.putInfo (key, info, "Integration", (JSV.common.Parameters.isMatch (key, "Integration") ? this.getMeasurementInfo (JSV.common.Annotation.AType.Integration, i) : null)); | |
| if (iSpec >= 0) return info; | |
| specInfo.addLast (info); | |
| } | |
| return spectraInfo; | |
| }, "~S,~N"); | |
| Clazz.defineMethod (c$, "getTitle", | |
| function (forPrinting) { | |
| return (this.nSpectra == 1 || this.iSpectrumSelected >= 0 && (!forPrinting || this.nSplit == 1) ? this.getSpectrum ().getTitle () : null); | |
| }, "~B"); | |
| Clazz.defineMethod (c$, "getCurrentView", | |
| function () { | |
| this.setScale (this.getFixedSelectedSpectrumIndex ()); | |
| return this.viewData.getScale (); | |
| }); | |
| Clazz.defineMethod (c$, "set2DXY", | |
| function (x, y, isLocked) { | |
| var p; | |
| if (this.gs2dLinkedX != null) { | |
| p = this.toPixelX (x); | |
| if (p != this.fixX (p)) { | |
| p = -2147483648; | |
| x = 1.7976931348623157E308; | |
| }this.cur1D2x1.setX (x, p); | |
| }if (this.gs2dLinkedY != null) { | |
| p = this.toPixelX (y); | |
| if (p != this.fixX (p)) { | |
| p = -2147483648; | |
| y = 1.7976931348623157E308; | |
| }this.cur1D2x2.setX (y, p); | |
| }this.cur1D2Locked = isLocked; | |
| }, "~N,~N,~B"); | |
| Clazz.defineMethod (c$, "dialogsToFront", | |
| function (spec) { | |
| if (this.dialogs == null) return; | |
| if (spec == null) spec = this.getSpectrum (); | |
| for (var e, $e = this.dialogs.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) { | |
| var ad = e.getValue (); | |
| if (this.isVisible (ad)) { | |
| if (spec == null) (ad).setVisible (true); | |
| else (ad).setFocus (ad.getSpectrum () === spec); | |
| }} | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "setPlotColors", | |
| function (oColors) { | |
| var colors = oColors; | |
| if (colors.length > this.nSpectra) { | |
| var tmpPlotColors = new Array (this.nSpectra); | |
| System.arraycopy (colors, 0, tmpPlotColors, 0, this.nSpectra); | |
| colors = tmpPlotColors; | |
| } else if (this.nSpectra > colors.length) { | |
| var tmpPlotColors = new Array (this.nSpectra); | |
| var numAdditionColors = this.nSpectra - colors.length; | |
| System.arraycopy (colors, 0, tmpPlotColors, 0, colors.length); | |
| for (var i = 0, j = colors.length; i < numAdditionColors; i++, j++) tmpPlotColors[j] = this.generateRandomColor (); | |
| colors = tmpPlotColors; | |
| }this.plotColors = colors; | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "disposeImage", | |
| function () { | |
| { | |
| if (this.image2D != null) | |
| this.image2D.parentNode.removeChild(this.image2D); | |
| }this.image2D = null; | |
| this.jsvp = null; | |
| this.pd = null; | |
| this.highlights = null; | |
| this.plotColors = null; | |
| }); | |
| Clazz.defineMethod (c$, "generateRandomColor", | |
| function () { | |
| while (true) { | |
| var red = Clazz.doubleToInt (Math.random () * 255); | |
| var green = Clazz.doubleToInt (Math.random () * 255); | |
| var blue = Clazz.doubleToInt (Math.random () * 255); | |
| var randomColor = this.g2d.getColor3 (red, green, blue); | |
| if (randomColor.getRGB () != 0) return randomColor; | |
| } | |
| }); | |
| Clazz.defineMethod (c$, "setPlotColor0", | |
| function (oColor) { | |
| this.plotColors[0] = oColor; | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "getPlotColor", | |
| function (index) { | |
| if (index >= this.plotColors.length) return null; | |
| return this.plotColors[index]; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setColorFromToken", | |
| function (og, whatColor) { | |
| if (whatColor != null) this.g2d.setGraphicsColor (og, whatColor === JSV.common.ScriptToken.PLOTCOLOR ? this.plotColors[0] : this.pd.getColor (whatColor)); | |
| }, "~O,JSV.common.ScriptToken"); | |
| Clazz.defineMethod (c$, "setPlotColor", | |
| function (og, i) { | |
| var c; | |
| switch (i) { | |
| case -3: | |
| c = JSV.common.GraphSet.veryLightGrey; | |
| break; | |
| case -2: | |
| c = this.pd.BLACK; | |
| break; | |
| case -1: | |
| c = this.pd.getColor (JSV.common.ScriptToken.INTEGRALPLOTCOLOR); | |
| break; | |
| default: | |
| c = this.plotColors[i]; | |
| break; | |
| } | |
| this.g2d.setGraphicsColor (og, c); | |
| }, "~O,~N"); | |
| Clazz.defineMethod (c$, "draw2DImage", | |
| function () { | |
| if (this.imageView != null) this.g2d.drawGrayScaleImage (this.gMain, this.image2D, this.imageView.xPixel0, this.imageView.yPixel0, this.imageView.xPixel0 + this.imageView.xPixels - 1, this.imageView.yPixel0 + this.imageView.yPixels - 1, this.imageView.xView1, this.imageView.yView1, this.imageView.xView2, this.imageView.yView2); | |
| }); | |
| Clazz.defineMethod (c$, "get2DImage", | |
| function (spec0) { | |
| this.imageView = new JSV.common.ImageView (); | |
| this.imageView.set (this.viewList.get (0).getScale ()); | |
| if (!this.update2dImage (true)) return false; | |
| this.imageView.resetZoom (); | |
| this.sticky2Dcursor = true; | |
| return true; | |
| }, "JSV.common.Spectrum"); | |
| Clazz.defineMethod (c$, "update2dImage", | |
| function (isCreation) { | |
| this.imageView.set (this.viewData.getScale ()); | |
| var spec = this.getSpectrumAt (0); | |
| var buffer = this.imageView.get2dBuffer (spec, !isCreation); | |
| if (buffer == null) { | |
| this.image2D = null; | |
| this.imageView = null; | |
| return false; | |
| }if (isCreation) { | |
| buffer = this.imageView.adjustView (spec, this.viewData); | |
| this.imageView.resetView (); | |
| }this.image2D = this.g2d.newGrayScaleImage (this.gMain, this.image2D, this.imageView.imageWidth, this.imageView.imageHeight, buffer); | |
| this.setImageWindow (); | |
| return true; | |
| }, "~B"); | |
| Clazz.defineMethod (c$, "getAnnotation", | |
| function (x, y, text, isPixels, is2d, offsetX, offsetY) { | |
| return new JSV.common.ColoredAnnotation ().setCA (x, y, this.getSpectrum (), text, this.pd.BLACK, isPixels, is2d, offsetX, offsetY); | |
| }, "~N,~N,~S,~B,~B,~N,~N"); | |
| Clazz.defineMethod (c$, "getAnnotation", | |
| function (args, lastAnnotation) { | |
| return JSV.common.Annotation.getColoredAnnotation (this.g2d, this.getSpectrum (), args, lastAnnotation); | |
| }, "JU.Lst,JSV.common.Annotation"); | |
| Clazz.defineMethod (c$, "fillBox", | |
| function (g, x0, y0, x1, y1, whatColor) { | |
| this.setColorFromToken (g, whatColor); | |
| this.g2d.fillRect (g, Math.min (x0, x1), Math.min (y0, y1), Math.abs (x0 - x1), Math.abs (y0 - y1)); | |
| }, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); | |
| Clazz.defineMethod (c$, "drawBox", | |
| function (g, x0, y0, x1, y1, whatColor) { | |
| this.setColorFromToken (g, whatColor); | |
| this.g2d.drawRect (g, Math.min (x0, x1), Math.min (y0, y1), Math.abs (x0 - x1) - 1, Math.abs (y0 - y1) - 1); | |
| }, "~O,~N,~N,~N,~N,JSV.common.ScriptToken"); | |
| Clazz.defineMethod (c$, "drawHandle", | |
| function (g, x, y, size, outlineOnly) { | |
| if (outlineOnly) this.g2d.drawRect (g, x - size, y - size, size * 2, size * 2); | |
| else this.g2d.fillRect (g, x - size, y - size, size * 2 + 1, size * 2 + 1); | |
| }, "~O,~N,~N,~N,~B"); | |
| Clazz.defineMethod (c$, "setCurrentBoxColor", | |
| function (g) { | |
| this.g2d.setGraphicsColor (g, this.pd.BLACK); | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "fillArrow", | |
| function (g, type, x, y, doFill) { | |
| var f = 1; | |
| switch (type) { | |
| case 1: | |
| case 3: | |
| f = -1; | |
| break; | |
| } | |
| var axPoints = Clazz.newIntArray (-1, [x - 5, x - 5, x + 5, x + 5, x + 8, x, x - 8]); | |
| var ayPoints = Clazz.newIntArray (-1, [y + 5 * f, y - f, y - f, y + 5 * f, y + 5 * f, y + 10 * f, y + 5 * f]); | |
| switch (type) { | |
| case 1: | |
| case 2: | |
| if (doFill) this.g2d.fillPolygon (g, ayPoints, axPoints, 7); | |
| else this.g2d.drawPolygon (g, ayPoints, axPoints, 7); | |
| break; | |
| case 3: | |
| case 4: | |
| if (doFill) this.g2d.fillPolygon (g, axPoints, ayPoints, 7); | |
| else this.g2d.drawPolygon (g, axPoints, ayPoints, 7); | |
| } | |
| }, "~O,~N,~N,~N,~B"); | |
| Clazz.defineMethod (c$, "fillCircle", | |
| function (g, x, y, doFill) { | |
| if (doFill) this.g2d.fillCircle (g, x - 4, y - 4, 8); | |
| else this.g2d.drawCircle (g, x - 4, y - 4, 8); | |
| }, "~O,~N,~N,~B"); | |
| Clazz.defineMethod (c$, "setAnnotationColor", | |
| function (g, note, whatColor) { | |
| if (whatColor != null) { | |
| this.setColorFromToken (g, whatColor); | |
| return; | |
| }var color = null; | |
| if (Clazz.instanceOf (note, JSV.common.ColoredAnnotation)) color = (note).getColor (); | |
| if (color == null) color = this.pd.BLACK; | |
| this.g2d.setGraphicsColor (g, color); | |
| }, "~O,JSV.common.Annotation,JSV.common.ScriptToken"); | |
| Clazz.defineMethod (c$, "setSolutionColor", | |
| function (vi, isNone, asFitted) { | |
| for (var i = 0; i < this.nSpectra; i++) { | |
| var spec = this.spectra.get (i); | |
| var color = (isNone || !spec.canShowSolutionColor () ? -1 : vi.getColour (spec, asFitted)); | |
| spec.setFillColor (color == -1 ? null : this.pd.vwr.parameters.getColor1 (color)); | |
| } | |
| }, "JSV.api.VisibleInterface,~B,~B"); | |
| Clazz.defineMethod (c$, "setIRMode", | |
| function (mode, type) { | |
| for (var i = 0; i < this.nSpectra; i++) { | |
| var spec = this.spectra.get (i); | |
| if (!spec.dataType.equals (type)) continue; | |
| var spec2 = JSV.common.Spectrum.taConvert (spec, mode); | |
| if (spec2 !== spec) this.pd.setSpecForIRMode (spec2); | |
| } | |
| }, "JSV.common.Spectrum.IRMode,~S"); | |
| Clazz.defineMethod (c$, "getSpectrumCount", | |
| function () { | |
| return 0; | |
| }); | |
| Clazz.defineMethod (c$, "invertYAxis", | |
| function () { | |
| this.viewList.get (0).init (null, 0, 0, this.getSpectrum ().invertYAxis ().isContinuous ()); | |
| this.resetViewCompletely (); | |
| }); | |
| c$.$GraphSet$Highlight$ = function () { | |
| Clazz.pu$h(self.c$); | |
| c$ = Clazz.decorateAsClass (function () { | |
| Clazz.prepareCallback (this, arguments); | |
| this.x1 = 0; | |
| this.x2 = 0; | |
| this.color = null; | |
| this.spectrum = null; | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.common.GraphSet, "Highlight"); | |
| Clazz.overrideMethod (c$, "toString", | |
| function () { | |
| return "highlight " + this.x1 + " " + this.x2 + " " + this.spectrum; | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (a, b, c, d) { | |
| this.x1 = a; | |
| this.x2 = b; | |
| this.color = d; | |
| this.spectrum = c; | |
| }, "~N,~N,JSV.common.Spectrum,javajs.api.GenericColor"); | |
| Clazz.overrideMethod (c$, "equals", | |
| function (a) { | |
| if (!(Clazz.instanceOf (a, JSV.common.GraphSet.Highlight))) return false; | |
| var b = a; | |
| return ((b.x1 == this.x1) && (b.x2 == this.x2)); | |
| }, "~O"); | |
| c$ = Clazz.p0p (); | |
| }; | |
| Clazz.defineStatics (c$, | |
| "ARROW_RESET", -1, | |
| "ARROW_HOME", 0, | |
| "ARROW_LEFT", 1, | |
| "ARROW_RIGHT", 2, | |
| "ARROW_UP", 3, | |
| "ARROW_DOWN", 4); | |
| c$.RT2 = c$.prototype.RT2 = Math.sqrt (2.0); | |
| Clazz.defineStatics (c$, | |
| "veryLightGrey", null, | |
| "minNumOfPointsForZoom", 3, | |
| "MIN_DRAG_PIXELS", 5, | |
| "ONLINE_CUTOFF", 2, | |
| "SHIFT_PEAK", 1, | |
| "SHIFT_SETX", 2, | |
| "SHIFT_X", 3, | |
| "SHIFT_CLICKED", 4); | |
| }); | |