A IrregularGrid2DPlot is a layer to plot a 2D grid whose cells have variable widths and heigths. More...
#include <IrregularGrid2DPlot.h>
Signals | |
void | clicked (int ix, int iy) |
Public Member Functions | |
virtual Rect | boundingRect () const |
virtual QString | coordinateTipInfo (const Point2D &p) const |
const IrregularGrid2D & | grid () const |
IrregularGrid2DPlot (AxisWindow *parent=0) | |
virtual bool | mouseReleaseEvent (QMouseEvent *e, int) |
void | setGrid (const IrregularGrid2D &grid) |
void | setLinearPalette () |
void | setLinearPalette (double minimum) |
void | setLinearPalette (double minimum, double maximum) |
virtual bool | trackRectangle (int, double rx1, double ry1, double rx2, double ry2, Qt::KeyboardModifiers eventState) |
virtual const QString & | xml_tagName () const |
~IrregularGrid2DPlot () | |
Static Public Attributes | |
static const QString | xmlIrregularGrid2DPlotTag = "IrregularGrid2DPlot" |
Protected Member Functions | |
virtual void | paintData (const LayerPainterRequest &lp, QPainter &p, double dotpercm) const |
Protected Attributes | |
IrregularGrid2D | _grid |
A IrregularGrid2DPlot is a layer to plot a 2D grid whose cells have variable widths and heigths.
SciFigs::IrregularGrid2DPlot::IrregularGrid2DPlot | ( | AxisWindow * | parent = 0 | ) |
Rect SciFigs::IrregularGrid2DPlot::boundingRect | ( | ) | const [virtual] |
Implements SciFigs::GraphContentLayer.
References _grid, QGpCoreTools::IrregularGrid2D::bottom(), QGpCoreTools::IrregularGrid2D::left(), QGpCoreTools::IrregularGrid2D::nx(), QGpCoreTools::IrregularGrid2D::ny(), QGpCoreTools::IrregularGrid2D::right(), QGpCoreTools::Rect::setLimits(), QGpCoreTools::IrregularGrid2D::top(), and TRACE.
Referenced by TFAResults::compute(), HistogramWidget::setHistogram(), and MonoStation::AbstractSummary::setLimits().
void SciFigs::IrregularGrid2DPlot::clicked | ( | int | ix, |
int | iy | ||
) | [signal] |
Referenced by mouseReleaseEvent().
QString SciFigs::IrregularGrid2DPlot::coordinateTipInfo | ( | const Point2D & | p | ) | const [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _grid, SciFigs::GraphContentLayer::graph(), QGpCoreTools::IrregularGrid2D::indexOfX(), QGpCoreTools::IrregularGrid2D::indexOfY(), SciFigs::Axis::numberPrecision, SciFigs::Axis::numberType, QGpCoreTools::IrregularGrid2D::nx(), QGpCoreTools::IrregularGrid2D::ny(), str, TRACE, QGpCoreTools::IrregularGrid2D::value(), QGpCoreTools::Point2D::x(), SciFigs::AxisWindow::xAxis(), QGpCoreTools::Point2D::y(), and SciFigs::AxisWindow::yAxis().
{ TRACE; if(_grid.nx()==0 || _grid.ny()==0) return QString::null; int ix=_grid.indexOfX(p.x()); int iy=_grid.indexOfY(p.y()); Axis * xAxis=graph()->xAxis(); Axis * yAxis=graph()->yAxis(); QString str("(%1 ; %2 ; %3)"); str=str.arg(Number::toString(p.x(), xAxis->numberType(), xAxis->numberPrecision()+2) ) .arg(Number::toString(p.y(), yAxis->numberType(), yAxis->numberPrecision()+2) ); if(ix>-1 && ix<_grid.nx() && iy>-1 && iy<_grid.ny()) { return str.arg(_grid.value(ix, iy), 0, 'g'); } else { return str.arg( "NaN"); } }
const IrregularGrid2D& SciFigs::IrregularGrid2DPlot::grid | ( | ) | const [inline] |
Referenced by HistogramWidget::fillGrid(), StatGridAnalyser::gridChanged(), StatGridAnalyser::on_freqScroll_valueChanged(), StatGridAnalyser::on_rejectAllBut_clicked(), StatGridAnalyser::on_rejectBut_clicked(), StatGridAnalyser::on_undoAllBut_clicked(), StatGridAnalyser::on_undoBut_clicked(), HVRotateStation::resultMaxAmplitude(), SpectrumRotateStation::resultMaxAmplitude(), HistogramWidget::select(), setGrid(), HistogramWidget::setHistogram(), and LinearFKActiveResults::stackGrids().
{return _grid;}
bool SciFigs::IrregularGrid2DPlot::mouseReleaseEvent | ( | QMouseEvent * | e, |
int | |||
) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _grid, clicked(), SciFigs::GraphContentLayer::graphContent(), QGpCoreTools::IrregularGrid2D::indexOfX(), QGpCoreTools::IrregularGrid2D::indexOfY(), SciFigs::GraphContent::options(), SciFigs::GraphContentOptions::s2r2D(), TRACE, QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
void SciFigs::IrregularGrid2DPlot::paintData | ( | const LayerPainterRequest & | lp, |
QPainter & | p, | ||
double | dotpercm | ||
) | const [protected, virtual] |
Implements SciFigs::GraphContentLayer.
References _grid, SciFigs::GridPlot::drawGrid2DBlock(), SciFigs::GridPlot::drawGrid2DSmooth(), SciFigs::GridPlot::drawGridLines(), QGpCoreTools::IrregularGrid2D::nx(), QGpCoreTools::IrregularGrid2D::ny(), SciFigs::LayerPainterRequest::options(), SciFigs::GridPlot::palette(), SciFigs::IrregularGrid2DDraw::setCellLimits(), SciFigs::IrregularGrid2DDraw::setCellNodes(), SciFigs::IrregularGrid2DDraw::setVisibleArea(), SciFigs::GridPlot::showGrid(), SciFigs::GridPlot::smooth(), and TRACE.
{ TRACE; if(_grid.nx()<2 || _grid.ny()<2) return; const GraphContentOptions& gc=lp.options(); IrregularGrid2DDraw d; // Get the limit of visible area in terms of grid indexes d.setVisibleArea(_grid, gc); // Create two int vectors containing the x and y of nodes (centers of blocks) d.setCellNodes(_grid, gc); if(smooth()) { if(showGrid()) d.setCellLimits(); drawGrid2DSmooth(_grid, palette(), lp, p, d); } else { d.setCellLimits(); drawGrid2DBlock(_grid, palette(), lp, p, d); } if(showGrid()) { drawGridLines(p, d); } }
void SciFigs::IrregularGrid2DPlot::setGrid | ( | const IrregularGrid2D & | grid | ) |
Set current grid.
References _grid, grid(), and TRACE.
Referenced by TFAResults::compute(), createGrid(), HistogramWidget::fillGrid(), HistogramWidget::initGrid(), SpacSelector::inverse(), HistogramWidget::setHistogram(), MonoStation::AbstractSummary::setSpectrumGridValues(), LinearFKActiveResults::stackGrids(), HVRotateStation::start(), and SpectrumRotateStation::start().
Adjust palette to grid minimum and maximum
References _grid, QGpCoreTools::IrregularGrid2D::maximumValue(), QGpCoreTools::IrregularGrid2D::minimumValue(), and TRACE.
Referenced by TFAResults::compute(), createGrid(), MonoStation::AbstractSummary::setLimits(), setLinearPalette(), and LinearFKActiveResults::stackGrids().
{ TRACE; setLinearPalette(_grid.minimumValue(), _grid.maximumValue()); }
void SciFigs::IrregularGrid2DPlot::setLinearPalette | ( | double | minimum | ) |
Adjust palette to maximum only
References _grid, QGpCoreTools::IrregularGrid2D::maximumValue(), setLinearPalette(), and TRACE.
{ TRACE; setLinearPalette(minimum, _grid.maximumValue()); }
void SciFigs::IrregularGrid2DPlot::setLinearPalette | ( | double | minVal, |
double | maxVal | ||
) | [inline] |
Set a linear scale on palette. Safe for painting threads. For other modification of the palette see setPalette().
Reimplemented from SciFigs::GridPlot.
References SciFigs::GridPlot::setLinearPalette().
{GridPlot::setLinearPalette(minimum, maximum);}
bool SciFigs::IrregularGrid2DPlot::trackRectangle | ( | int | , |
double | rx1, | ||
double | ry1, | ||
double | rx2, | ||
double | ry2, | ||
Qt::KeyboardModifiers | eventState | ||
) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References SciFigs::GridPlot::_fillType, SciFigs::GridPlot::_fillValue, _grid, QGpCoreTools::IrregularGrid2D::coordinates(), SciFigs::GraphContent::deepUpdate(), SciFigs::GraphContentLayer::graphContent(), QGpCoreTools::Rect::includes(), QGpCoreTools::IrregularGrid2D::nx(), QGpCoreTools::IrregularGrid2D::ny(), TRACE, and QGpCoreTools::IrregularGrid2D::valuePointer().
{ TRACE; Rect r(rx1, ry1, rx2, ry2); int nx=_grid.nx(), ny=_grid.ny(); for(int iy=0;iy < ny;iy++ ) { for(int ix=0;ix < nx;ix++ ) { Point2D p=_grid.coordinates(ix, iy); if(r.includes(p, _fillType) ) * _grid.valuePointer(ix, iy)=_fillValue; } } graphContent()->deepUpdate(); return true; }
virtual const QString& SciFigs::IrregularGrid2DPlot::xml_tagName | ( | ) | const [inline, virtual] |
Reimplemented from SciFigs::GridPlot.
{return xmlIrregularGrid2DPlotTag;}
IrregularGrid2D SciFigs::IrregularGrid2DPlot::_grid [protected] |
Referenced by boundingRect(), coordinateTipInfo(), mouseReleaseEvent(), paintData(), setGrid(), setLinearPalette(), and trackRectangle().
const QString SciFigs::IrregularGrid2DPlot::xmlIrregularGrid2DPlotTag = "IrregularGrid2DPlot" [static] |
Referenced by SciFigs::LiveGridLayer::xml_tagName().