A ParallelBands is a layer to plot infinite parallel bands (along X or Y) More...
#include <ParallelBands.h>
Signals | |
void | bandPicked (double min, double max) |
Public Member Functions | |
void | addBand (const Brush &b, const Pen &p=Qt::NoPen) |
void | addBand (double value, const Pen &p=Qt::SolidLine) |
void | addBand (double min, double max, const Brush &b=Qt::SolidPattern, const Pen &p=Qt::NoPen) |
void | addBand (const ParallelBand &b) |
AxisType | axisType () const |
QString | axisTypeString () const |
ParallelBand & | band (int index) |
const ParallelBand & | band (int index) const |
virtual Rect | boundingRect () const |
void | clear () |
int | count () const |
void | operator= (ParallelBands &o) |
ParallelBands (AxisWindow *parent=0) | |
void | removeBand (int index) |
void | setAxisType (AxisType a) |
void | setAxisType (QString t) |
virtual bool | trackRectangle (int, double rx1, double ry1, double rx2, double ry2, Qt::KeyboardModifiers) |
virtual const QString & | xml_tagName () const |
~ParallelBands () | |
Static Public Attributes | |
static const QString | xmlParallelBandsTag = "ParallelBands" |
Protected Member Functions | |
virtual void | paintData (const LayerPainterRequest &lp, QPainter &p, double dotpercm) const |
virtual XMLMember | xml_member (XML_MEMBER_ARGS) |
virtual void | xml_writeChildren (XML_WRITECHILDREN_ARGS) const |
Protected Attributes | |
AxisType | _axisType |
QVector< ParallelBand > | _bands |
Properties | |
QString | axisType |
A ParallelBands is a layer to plot infinite parallel bands (along X or Y)
SciFigs::ParallelBands::ParallelBands | ( | AxisWindow * | parent = 0 | ) |
References _axisType, TRACE, and QGpCoreTools::XAxis.
: GraphContentLayer(parent) { TRACE; _axisType=XAxis; }
void SciFigs::ParallelBands::addBand | ( | const Brush & | b, |
const Pen & | p = Qt::NoPen |
||
) |
Referenced by MonoStation::StationResults::addPeak(), createBands(), HistogramWidget::HistogramWidget(), MagnifierSignal::MagnifierSignal(), MonoStation::AbstractSummary::setAverageValues(), MonoStation::StatisticResults::setBandsPlot(), StatGridAnalyser::setGrid(), MonoStation::StationResults::setT10Layer(), and DinverDCGui::EllipticityViewer::setTarget().
void SciFigs::ParallelBands::addBand | ( | double | value, |
const Pen & | p = Qt::SolidLine |
||
) |
void SciFigs::ParallelBands::addBand | ( | double | min, |
double | max, | ||
const Brush & | b = Qt::SolidPattern , |
||
const Pen & | p = Qt::NoPen |
||
) |
void SciFigs::ParallelBands::addBand | ( | const ParallelBand & | b | ) | [inline] |
{_bands.append(b);}
AxisType SciFigs::ParallelBands::axisType | ( | ) | const [inline] |
{return _axisType;}
QString SciFigs::ParallelBands::axisTypeString | ( | ) | const [inline] |
References QGpCoreTools::XAxis.
ParallelBand& SciFigs::ParallelBands::band | ( | int | index | ) | [inline] |
Referenced by MonoStation::StationResults::comments(), MonoStation::StationResults::highestPeak(), MonoStation::StationResults::lowestPeak(), MonoStation::StationResults::maximumAmplitudePeak(), StatGridAnalyser::on_freqScroll_valueChanged(), StatGridAnalyser::on_rejectBut_clicked(), MonoStation::StationResults::peak(), MonoStation::StationResults::peakMaximum(), MonoStation::StationResults::peakMinimum(), MonoStation::StationResults::printPeaks(), MonoStation::AbstractSummary::setAverageValues(), StatGridAnalyser::setBand(), MonoStation::StatisticResults::setBandsPlot(), Results::setThreshold(), MagnifierSignal::setTime(), and MonoStation::StatisticResults::studentTest().
{return _bands[index];}
const ParallelBand& SciFigs::ParallelBands::band | ( | int | index | ) | const [inline] |
{return _bands[index];}
void SciFigs::ParallelBands::bandPicked | ( | double | min, |
double | max | ||
) | [signal] |
Referenced by trackRectangle().
Rect SciFigs::ParallelBands::boundingRect | ( | ) | const [virtual] |
Implements SciFigs::GraphContentLayer.
References _axisType, _bands, SciFigs::ParallelBand::maximum(), SciFigs::ParallelBand::minimum(), TRACE, and QGpCoreTools::XAxis.
{ TRACE; if(_bands.isEmpty()) return Rect( -1e99, -1e99, 1e99, 1e99); double min=1e99, max=-1e99; QVector<ParallelBand>::const_iterator it=_bands.begin(); for(;it!=_bands.end();++it) { const ParallelBand& b=*it; if(b.minimum()<min) min=b.minimum(); if(b.maximum()<min) min=b.maximum(); if(b.minimum()>max) max=b.minimum(); if(b.maximum()>max) max=b.maximum(); } if(_axisType==XAxis) { return Rect(min, -1e99, max, 1e99); } else { return Rect(-1e99, min, 1e99, max); } }
void SciFigs::ParallelBands::clear | ( | ) |
int SciFigs::ParallelBands::count | ( | ) | const [inline] |
Referenced by MonoStation::StationResults::comments(), createBands(), MonoStation::StationResults::highestPeak(), MonoStation::StationResults::lowestPeak(), MonoStation::StationResults::maximumAmplitudePeak(), MonoStation::StationResults::peakCount(), MonoStation::StationResults::printPeaks(), and MonoStation::StatisticResults::studentTest().
{return _bands.count();}
void SciFigs::ParallelBands::operator= | ( | ParallelBands & | o | ) |
void SciFigs::ParallelBands::paintData | ( | const LayerPainterRequest & | lp, |
QPainter & | p, | ||
double | dotpercm | ||
) | const [protected, virtual] |
Implements SciFigs::GraphContentLayer.
References _axisType, _bands, SciFigs::ParallelBand::brush(), SciFigs::ParallelBand::maximum(), SciFigs::ParallelBand::minimum(), SciFigs::LayerPainterRequest::options(), SciFigs::ParallelBand::pen(), SciFigs::Brush::qbrush(), SciFigs::Pen::qpen(), SciFigs::LayerPainterRequest::size(), SciFigs::LayerPainterRequest::terminated(), TRACE, w, QGpCoreTools::XAxis, SciFigs::GraphContentOptions::xr2s(), SciFigs::GraphContentOptions::xVisMax(), SciFigs::GraphContentOptions::xVisMin(), SciFigs::GraphContentOptions::yr2s(), SciFigs::GraphContentOptions::yVisMax(), and SciFigs::GraphContentOptions::yVisMin().
{ TRACE; const GraphContentOptions& gc=lp.options(); QVector<ParallelBand>::const_iterator it=_bands.begin(); if(_axisType==XAxis) { int h=lp.size().height(); for(;it!=_bands.end();++it) { if(lp.terminated()) return; const ParallelBand& b=*it; double min=b.minimum(); double max=b.maximum(); if(max<=gc.xVisMin()) continue; if(min>=gc.xVisMax()) continue; if(min<gc.xVisMin()) min=gc.xVisMin(); if(max>gc.xVisMax()) max=gc.xVisMax(); p.setPen(b.pen().qpen(dotpercm)); p.setBrush(b.brush().qbrush(dotpercm)); int bleft=gc.xr2s(min); int bwidth=gc.xr2s(max)-bleft; if(bwidth==0) { p.drawLine(bleft, 0, bleft, h); } else { p.drawRect(bleft, 0, bwidth, h); } } } else { int w=lp.size().width(); for(;it!=_bands.end();++it) { if(lp.terminated()) return; const ParallelBand& b=*it; double min=b.minimum(); double max=b.maximum(); if(max<=gc.yVisMin()) continue; if(min>=gc.yVisMax()) continue; if(min<gc.yVisMin()) min=gc.yVisMin(); if(max>gc.yVisMax()) max=gc.yVisMax(); p.setPen(b.pen().qpen(dotpercm)); p.setBrush(b.brush().qbrush(dotpercm)); int btop=gc.yr2s(min); int bheight=gc.yr2s(max)-btop; if(bheight==0) { p.drawLine(0, btop, w, btop); } else { p.drawRect(0, btop, w, bheight); } } } }
void SciFigs::ParallelBands::removeBand | ( | int | index | ) |
Referenced by MonoStation::StationResults::removePeak().
void SciFigs::ParallelBands::setAxisType | ( | AxisType | a | ) |
References _axisType, and TRACE.
Referenced by createBands().
void SciFigs::ParallelBands::setAxisType | ( | QString | t | ) | [inline] |
References setAxisType(), QGpCoreTools::XAxis, and QGpCoreTools::YAxis.
Referenced by setAxisType().
{if(t.contains("X")) setAxisType(XAxis); else setAxisType(YAxis);}
bool SciFigs::ParallelBands::trackRectangle | ( | int | , |
double | rx1, | ||
double | ry1, | ||
double | rx2, | ||
double | ry2, | ||
Qt::KeyboardModifiers | |||
) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _axisType, bandPicked(), TRACE, and QGpCoreTools::XAxis.
{ TRACE; if(_axisType==XAxis) { emit bandPicked(rx1, rx2); } else { emit bandPicked(ry1, ry2); } return true; }
XMLMember SciFigs::ParallelBands::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore (children and properties) support to your class.
From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:
Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):
static const QString tmp("childrenName"); XMLRestoreAttributeIterator it=map.find(tmp); if(it!=map.end()) { // found attribute "childrenName" }
If the map of attributes is not used:
Q_UNUSED(attributes); if(tag=="x1") return XMLMember(0); else if(tag=="y1") return XMLMember(1); else if(tag=="x2") return XMLMember(2); else if(tag=="y2") return XMLMember(3); else return XMLMember(XMLMember::Unknown);
Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.
if(tag=="anInteger") return XMLMember(0); else if(tag=="aString") return XMLMember(1); else if(tag=="aDouble") return XMLMember(2); return AbstractLine::xml_member(tag, attributes, context)+3;
For the arguments of this function use Macro XML_MEMBER_ARGS.
Reimplemented from SciFigs::GraphContentLayer.
References _bands, SciFigs::XMLSciFigs::data(), and TRACE.
virtual const QString& SciFigs::ParallelBands::xml_tagName | ( | ) | const [inline, virtual] |
Reimplemented from SciFigs::GraphContentLayer.
{return xmlParallelBandsTag;}
void SciFigs::ParallelBands::xml_writeChildren | ( | XML_WRITECHILDREN_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
References _bands, SciFigs::XMLSciFigs::data(), and TRACE.
{ TRACE; XMLSciFigs * scifigsContext=static_cast<XMLSciFigs *>(context); if(scifigsContext->data()) { QVector<ParallelBand>::const_iterator it=_bands.begin(); for(;it!=_bands.end();++it) (*it).xml_save(s, context); } }
AxisType SciFigs::ParallelBands::_axisType [protected] |
Referenced by boundingRect(), operator=(), paintData(), ParallelBands(), setAxisType(), and trackRectangle().
QVector<ParallelBand> SciFigs::ParallelBands::_bands [protected] |
Referenced by addBand(), boundingRect(), clear(), operator=(), paintData(), removeBand(), xml_member(), and xml_writeChildren().
const QString SciFigs::ParallelBands::xmlParallelBandsTag = "ParallelBands" [static] |
QString SciFigs::ParallelBands::axisType [read, write] |