package jas.hist; import jas.plot.Overlay; import jas.util.xml.HasXMLRepresentation; import java.util.Observable; class JASHist2DScatterData extends JASHist2DHistogramData { JASHist2DScatterData(final DataManager dm, final HasScatterPlotData ds) { super(dm,ds); dataSource = ds; } JASHistStyle createStyle() { return new JASHistScatterPlotStyle(); } boolean hasScatterPlotData() { return dataSource.hasScatterPlotData(); } public void setStyle(final JASHistStyle style) { if (!(style instanceof JASHistScatterPlotStyle)) throw new IllegalArgumentException("Style "+style.getClass()+" is not subclass of JASHistScatterPlotStyle"); if (this.style != null) this.style.deleteObserver(this); this.style = (JASHistScatterPlotStyle) style; this.style.addObserver(this); } Overlay createOverlay() { return new ScatterOverlay(this); } public void update(Observable o, Object arg) { // Dragons: Likely to be called by different thread if (o == dataSource) { parent.update((HistogramUpdate) arg, this); } else if (o == style) { parent.styleUpdate(this); } } void restartImage(final boolean newEnumNeeded) { if (overlay instanceof ScatterOverlay) { ((ScatterOverlay) overlay).restartImage(newEnumNeeded); } } void continueImage() { if (overlay instanceof ScatterOverlay) { ((ScatterOverlay) overlay).continueImage(); } } public JASHistStyle getStyle() { return style; } HasScatterPlotData dataSource; boolean dataChanged, resetSent, onNewAxis; // the data manager uses these flags // static final long serialVersionUID = 0/* ?? */; protected void calcZLimits() { if (((JASHistScatterPlotStyle) style).getDisplayAsScatterPlot()) return; else super.calcZLimits(); } public void writeAsXML(XMLPrintWriter pw, boolean snapshot) { String theXAxisType = pw.convertAxisTypeToString(dataSource.getXAxisType()); String theYAxisType = pw.convertAxisTypeToString(dataSource.getYAxisType()); pw.setAttribute("type","scatter2d"); pw.openTag("data2d"); int xBins = dataSource.getXBins(); double xLow = dataSource.getXMin(); double xHigh = dataSource.getXMax(); int yBins = dataSource.getYBins(); double yLow = dataSource.getYMin(); double yHigh = dataSource.getYMax(); if (snapshot) { double[][][] result = dataSource.rebin(xBins,xLow,xHigh,yBins,yLow,yHigh,true,hurry, style.getShowOverflow()); if (result == null) result = new double[1][xBins][yBins]; double[][] data = result[0]; pw.setAttribute("title",getTitle()); pw.setAttribute("dimensions","2"); pw.openTag("points"); final double[] d = new double[2]; if (dataSource.hasScatterPlotData()) { ScatterEnumeration se = dataSource.startEnumeration(); while (se.getNextPoint(d)) { pw.println(d[0] + "," + d[1]); } } pw.closeTag(); //output the x,y axis attributes pw.printPointDataAxisAttributes("x",theXAxisType);//5 string args pw.printPointDataAxisAttributes("y",theYAxisType); if (dataSource instanceof HasStatistics) { Statistics stats = ((HasStatistics) dataSource).getStatistics(); if (stats != null) { pw.openTag("statistics"); String[] names = stats.getStatisticNames(); for (int i=0; i"); String[] labels = getAxisLabels(); for (int i=0; i < labels.length; i++) { jas.hist.JASHistXMLUtils.writeTabs(pw, (indentLevel + 2)); pw.println(""); } jas.hist.JASHistXMLUtils.writeTabs(pw, (indentLevel + 1)); pw.println(""); } */ String histStyleName = JASHist2DHistogramStyle.getHistStyleName(style.getHistStyle()); pw.setAttribute("histStyle",histStyleName); if (histStyleName.equals("STYLE_COLORMAP")) { pw.setAttribute("colorMapScheme", JASHist2DHistogramStyle.getColorMapSchemeName(style.getColorMapScheme())); } pw.setAttribute("shapeColor", jas.util.ColorConverter.colorToString(style.getShapeColor())); pw.setAttribute("overflowBinColor", jas.util.ColorConverter.colorToString(style.getOverflowBinColor())); pw.setAttribute("startDataColor", jas.util.ColorConverter.colorToString(style.getStartDataColor())); pw.setAttribute("endDataColor", jas.util.ColorConverter.colorToString(style.getEndDataColor())); pw.setAttribute("showOverflow",style.getShowOverflow()); pw.setAttribute("showPlot",style.getShowPlot()); pw.setAttribute("displayAsScatterPlot", ((JASHistScatterPlotStyle) style).getDisplayAsScatterPlot()); pw.setAttribute("dataPointSize" , ((JASHistScatterPlotStyle) style).getDataPointSize()); pw.setAttribute("dataPointStyle" , ((JASHistScatterPlotStyle) style).getDataPointStyle()); pw.setAttribute("dataPointColor",jas.util.ColorConverter.colorToString(((JASHistScatterPlotStyle) style).getDataPointColor())); pw.printTag("style2d"); pw.closeTag(); } }