Todo List

Member hippodraw::PeriodicBinaryTransform::adjustValues (AxisModelBase &model, hippodraw::Axes::Type axes, const Range &limit)
This code is duplicated and should move up the hierarchy.

Member hippodraw::PeriodicBinaryTransform::genTicks (AxisModelBase &axis, hippodraw::Axes::Type axistype)
Handle too many ticks better, rather than doing nothing. See more detailed comment in code.

Do not use sprintf, it cause warnings from VS 8.

Member hippodraw::PeriodicBinaryTransform::setTicks (AxisModelBase &axis_model, hippodraw::Axes::Type axis)
Are the implementations of the functions called, duplicates of what is in the derived classes of LinearTransform?

Member hippodraw::RepBase::color () const
Remove this member in favor of getColor().

Member hippodraw::RepBase::setValueTransform (BinToColor *)
Should have base class that doesn't know about color and BinToColor class should derive from it.

Member hippodraw::AxisModelBase::m_first_tick
Maybe it is not needed.

Member hippodraw::AxisModelBase::getRange (bool scaled) const
Really should have separate function, getScaledRange, so at the calling point it would be clear.

Member hippodraw::AxisModelLinear::calcHigh (int parm, bool dragging=false)
We will have to put a check here to keep it from hitting a length of 0.

Member hippodraw::AxisModelLinear::calcLow (int parm, bool dragging=false)
We will have to put a check here to keep it from hitting a length of 0.

Member hippodraw::AxisModelLog::calcHigh (int parm, bool dragging=false)
Check is in place to keep it from length of 0, but it's fairly hacked (length > 0.0001). This whole topic needs discussion.

Member hippodraw::AxisModelLog::calcLow (int parm, bool dragging=false)
Check is in place to keep it from length of 0, but it's fairly hacked (length > 0.0001). This whole topic needs discussion.

Member hippodraw::AxisModelLog::nextStep (double cur)
: Change this to an array of good ticks rather than hardcoded in here.

Member hippodraw::AxisModelLog::prevStep (double cur)
Change this to an array of good ticks rather than hardcoded in here.

Class AxisRep2D
Implement minor ticks.

Member hippodraw::AxisRepBase::drawAllXTicks (const AxisModelBase &axisModelX, const AxisModelBase &axisModelY, const TransformBase &transform, ViewBase &view)
Draw lines connecting ticks top and bottom. Line should under go transform which might be curved, thus should use something like the function projector.

Class AxisRepBase
There is lots of duplicated code in the derived classes that could be moved to the base.

Class AxisRepColor
Implement minor ticks.

Member hippodraw::AxisWidget::processHighSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.

Member hippodraw::AxisWidget::processLowSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.

Member hippodraw::AxisWidget::AxisWidget (QWidget *parent=0, const char *name=0, Qt::WFlags wflags=0)
Replace obsolete QScrollBae constructor with Qt 4 one.

Member hippodraw::BFGSFitter::calcBestFit ()
Use if ( x!=x ) to test for nan.

Member hippodraw::BFGSFitter::wolfeStep (const std::vector< double > &x0, const std::vector< double > &p) const
Take out error message and send signal to application.

Member hippodraw::BinnerAxisLinear::BinnerAxisLinear (const BinnerAxisLinear &binner)
Why is width recalculated instead of being copied.

Member hippodraw::BinnerAxisLinear::setRange (const Range &, bool hold_width=true)
Had to put std:: in here for Sun's CC, but not in AxisModelxxx. So there must be a better fix.

Member hippodraw::BinnerAxisLog::getOffset () const
Maybe be able to remove this function and other getOffset functions.

Member hippodraw::BinnerAxisLog::setConstWid ()
Remove this function in favor of calcWidthParm.

Member hippodraw::ProjectorBase::m_x_axis
Should be generalized to n-dimensions by having having a vector of AxisModelBase objects.

Member hippodraw::ProjectorBase::m_z_label
Remove when getLabel takes axis argument

Member hippodraw::ProjectorBase::addPointReps ()=0
Why is this in the ProjectorBase and not DataRep ?

Member hippodraw::BinningProjector::execute ()
Is there away to avoid implementing this empty method.

Member hippodraw::ProjectorBase::getAverage (Axes::Type axis) const
this should be computed externally with the iterators

Member hippodraw::ProjectorBase::getAverage (Axes::Type axis) const
Resolve if this method should be done exterior to the projector class by a functor using iterators.

Member hippodraw::ProjectorBase::getPosOn (Axes::Type) const=0
Resolve if this method should be here.

Member hippodraw::ProjectorBase::getZAfterTransform (TransformBase *transform)
This is the only method in all the classes of this directory that needs a heder file from transform directory. Is there a better way?

Member hippodraw::ProjectorBase::getZLabel () const
Change to fetch labels by AxesType or its replacement.

Member hippodraw::BinningProjector::setBinWidth (hippodraw::Axes::Type axis, double width)
Derived classes that re-implement this member function do so with only difference being the assert. Redesigned to avoid duplication of code.

Member hippodraw::ProjectorBase::valueRange () const=0
Resolve if this method should be here.

Member hippodraw::Bins1DHist::setBinContents (const DataSource *ntuple)
The underflow and overflow bins do not get archived, thus don't get restored. Also the moments.

Member hippodraw::Bins1DProfile::accumulate (double x, double y, double wt=1.0, double dummy=0.0)
Add weight argument.

Member hippodraw::Bins1DProfile::setBinContents (const DataSource *ntuple)
Needs implementation when static projectors are implemented.

Member hippodraw::Bins2DBase::m_num_bins
Do we need this?.

Member hippodraw::Bins2DBase::resize (int nx, int ny)
It is possible that this method will get called before both the range and the bin width are final and therefore the number of bins could be excessive. Thus it would be better to postpone the resizing until needed.

Member hippodraw::Bins2DProfile::fillDataSource (DataSource *ntuple) const
The error on the value has needs to be tested.

The scaling needs to be tested.

Member hippodraw::Bins2DProfile::setBinContents (const DataSource *ntuple)
Needs implementation when static projector is implemented.

Member hippodraw::BinToUsrDefinedScale::doubleToColor (double value, Color &color) const
This is copy of member function of same name in BinToColorSaleMovingBrkPt.

Class CanvasView
Should implemented method hasSelectedViews() since in a number of places the implementation calls selectedViews only to ask if vector is empty.

Member hippodraw::FigureEditor::contentsMouseMoveEvent (QMouseEvent *, double aspect)
This implementation depends on parent widget being CanvasWindow, thus making a circular dependency. There ought to be a way to fix it. Or at least depend only on QMainWindow.

Member hippodraw::FigureEditor::contentsMouseMoveEvent (QMouseEvent *, double aspect)
The implementation uses QtView, thus should be moved to CanvasView.

Member hippodraw::CanvasView::exportTextTuple (const std::string &suffix)
Report any error conditions.

One error condition is saving on top of existing file.

Member hippodraw::FigureEditor::hide (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.

Member hippodraw::FigureEditor::placeGraphOnSelected (QCanvasRectangle *item)
the rectangle of the a text display should be no bigger than necessary rather than the size of the rectangle of the selected.

Member hippodraw::FigureEditor::remove (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.

Member hippodraw::CanvasView::setIntervalEnabled (bool yes=true)
Move this method and others that use PlotterBase to a controller. This logic is independent of the GUI so should not be here.

Class CanvasWindow
@@ Be able to ask canvas if it is saved from Python.

Class CanvasWindow
Make it a setting if the Inspector window comes up automatically or not.

Class CanvasWindow
Respond to Page Up and Page Down keys.

Class CanvasWindow
Needs something to display on the canvas for values only seen in the Inspector. One example is the name of a DataSource file file. This is so that the document when printed can be more useful as a stand alone.

Class CanvasWindow
Use Qt's network example ftpclient to open files via ftp.

Member hippodraw::CanvasWindow::allowClose ()
bring the window up front before showing message box. Just doing a setActiveWindow() does work.

Member hippodraw::CanvasWindow::filePrint ()
Add the `.ps' subscript to the file name if missing.

Member hippodraw::CanvasWindow::filePrint ()
Add the `.ps' subscript to the file name if missing.

Member hippodraw::CanvasWindow::removeDisplay (PlotterBase *plotter)
This method should only be in the CanvasView.

Member hippodraw::CanvasWindow::selectedPlotter ()
This method should go away or return null pointer if multiple plots are selected.

Member hippodraw::CanvasWindow::CanvasWindow (QWidget *parent=0, const char *name=0, Qt::WFlags fl=QtWType_TopLevel)
This is the only place where know we are using Qt XML support. It would be abstracted to a factory. Should also be in the CanvasView and not this class so it could be used by other windows.

Member hippodraw::CanvasWindow::CanvasWindow (const CanvasWindow &)
Probably should remove this method or make it private.

Member hippodraw::DataRep::preferredRange (Axes::Type axis) const
In asking for the preferred Range, should also tell binning projectors to reset the number of bins so that auto ranging will lead to same results as when plot was initially created.

Class ColorSymbolPointRep
Unlike the class it inherits from, this class doesn't currently support the drawing of error bars. Or, maybe a class that can draw error bars should be a derived class of one that only draws symbols.

Member hippodraw::SymbolPointRep::transformPoints (const TransformBase &transform, ViewBase &view)
The ViewBase object is not used, so why is it in interface.

Member hippodraw::ColumnPointRep::drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should the TransformBase * be const?

Member hippodraw::ColumnPointRep::ColumnPointRep ()
Could postpone creation of the ErrorBarRep until flag is set to require one. However, if postponed, got to remember to set the color.

Member hippodraw::CompositePlotter::m_x_axis
Generalize the containment of axis model to n-dimension.

Member hippodraw::CompositePlotter::m_x_label
The axis labels should be a member of the axis model.

Member hippodraw::CompositePlotter::autoScaleZ ()
Determine why is Z axis so different from X and Y?

Member hippodraw::CompositePlotter::toUserXY (double mx, double my, bool scaled, double &ux, double &uy) const
Needs to be renamed.

Member hippodraw::ContourPointRep::drawContourTicks (const TransformBase &, ViewBase &, const std::vector< double > &)
This method should be in AxisRepColor class.

Member hippodraw::ContourPointRep::getContour (int i, const TransformBase *transform)
Test contour when low end of range is negative.

Member hippodraw::Cut1DPlotter::setCutRangeFull ()
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Member hippodraw::Cut2DPlotter::setCutRangeFull ()
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Member hippodraw::CutPlotter::setAxisBinding (const std::vector< std::string > &bindings)
Shouldn't call autoScale() here. Setting autoscaled to false should be sufficient, but it doesn't work. Need to solve that problem.

Member hippodraw::CutPlotter::setCutRangeFull ()=0
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Class DataRepException
Only QtDisplay uses this class, maybe it could be eliminated.

Member hippodraw::DataRepXML::getTextRepObject (const XmlElement *)
Why is this call with an argument.

Class DataSource
Expand to data types other than double.

Class DisplayController
DisplayController shouldn't need to know about the DataRepFactory. Should probably move methods that use it to DataRepController.

Class DisplayController
Shouldn't const_cast<BinToColor *> the return value from getValueRep() of the plotter object in the setValueBrkPt member function. A member function returning a non const pointer to a BinToColor object should be implemented in the PlotterBase class and that should be used in the setValueBrkPt member function.

Member hippodraw::DisplayController::addDataRep (PlotterBase *plotter, const std::string &name, const DataSource *source, const std::vector< std::string > &bindings) const
If new DataRep is incompatible with exiting Plotter, one could create new plotter type.

Member hippodraw::DisplayController::getBindingProjector (const PlotterBase *) const
Can replace much of this code by calling getUniqueWithNTupleBindings member function.

Member hippodraw::DisplayController::getLog (const PlotterBase *plotter, Axes::Type axis) const
un-hard code this when we have XYZ transform?

Member hippodraw::DisplayController::setBinner (PlotterBase *plotter, Axes::Type axis)
Remove this function when GUI has separate controls for displaying Log and binning log.

Member hippodraw::DisplayController::setLog (PlotterBase *plotter, Axes::Type axis, bool flag)
This function should go away in favor of one taking string for axis argument.

Member hippodraw::DisplayController::setLog (PlotterBase *plotter, Axes::Type axis, bool flag)
Check that display can do it.

Member hippodraw::DisplayController::setOffset (PlotterBase *plotter, const std::string &axis, int parm, bool dragging)
Use Axes::convert.

Member hippodraw::DisplayController::setOffset (PlotterBase *plotter, const std::string &axis, int parm, bool dragging)
Remove duplicated code compared to DisplayController::setBinWidth.

Member hippodraw::DyHist1DProjector::getAverage (hippodraw::Axes::Type axis) const
Remove duplicated code that is also in NTupleProjector.

Fetch the column vector by binding instead of label.

Should be able to reuse global functions instead of implementation here.

Member hippodraw::NTupleProjector::getNTuple ()
Should be changed to getDatSource().

Member hippodraw::NTupleProjector::getNTuple () const
Should be changed to getDatSource().

Member hippodraw::Hist1DProjImp::setRange (hippodraw::Axes::Type, bool)
Should not be changing the AxisModelBase Range.

Member hippodraw::Hist2DProjImp::setBinWidth (hippodraw::Axes::Type axis, double v)
Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.

Member hippodraw::Hist2DProjImp::setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.

Member hippodraw::EpsView::initPlot (const std::string &filename, double x, double y, double w, double h)
Using std::endl; add '
' and flushes the buffer. We don't need to flush the buffer so often, so maybe just '
' should be used.

Member hippodraw::EpsView::userToDrawColor (double c) const
Could eliminate userToMargincolor.

Member hippodraw::EpsView::userToDrawX (double x) const
Could eliminated userToMarginX.

Member hippodraw::EpsView::userToDrawY (double x) const
Could eliminate userToInvertedMarginY.

Class FigureEditor
Need ability to group and un-group items.

Class FigureEditor
add page by adding another standard size page (either A4 or US Letter depending on preferences set somewhere.

Member hippodraw::FitsController::closeFile (const std::string &name)
Why is this commented out?

Member hippodraw::FitsNTuple::addColumn (const std::string &label, const std::vector< double > &column, const std::vector< intptr_t > &shape)
Should check size of column and shape vector are consistent.

Member hippodraw::FitsNTuple::fillShape (std::vector< intptr_t > &shape, unsigned int index) const
Need to make sure that the shape has been set.

Member hippodraw::FitsNTuple::notifyObservers () const
remove this method when Observable is exposed to Python.

Member hippodraw::FunctionBase::derivByParm (int i, double x) const
Provide a numeric method for doing this calculation that will be the default. Derived classes should provide more efficient analytic method if available.

Member hippodraw::FunctionProjector::m_fitter
Decide if FunctionProjector or the FunctionRep should be the owner of the Fitter.

Member hippodraw::FunctionProjector::clone ()
To be implemented.

Member hippodraw::FunctionProjector::valueRange () const
Return value range of function.

Member hippodraw::FunctionProjector::FunctionProjector (const FunctionProjector &)
To be implemented.

Member hippodraw::HiNTupleXML::getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear(). Gcc 2.95.3 is missing this function, while gcc 3.2.1 has it.

Class Inspector
In Stats tabbed panel, should add a feature of a composite text rep that combines the single TextRep objects into a composite.

Class Inspector
When the size of the labels of the function parameters changes, the sliders change as well. GUI bug. low priority to fix.

Class Inspector
In cuts tabbed panel, the upper box gets updated when cut range changed even when it hasn't changed.

Class Inspector
Replace the ComboBox objects in the Cut inspector with lists. Then the user can see in one glance all the cuts on a plot. There usually will not be that many of them.

Class Inspector
For check boxes, should use clicked signal instead of toggled so that the check box can be set to a value without emitting a signal.

Class Inspector
On the Cuts tabbed pane, does the Replace button make sense. What if selected plot has multiple cuts, which one to replace.

Class Inspector
On the Inspector data tabbed panel, should leave the four binding options on all the time and disable the ones that are not used. This way there would be less flicker.

Class Inspector
In Inspector stats tabbed panel, add average Z if plot has Z axis.

Class Inspector
In transform tabbed panel, use QDial instead of QSlider.

Member hippodraw::Inspector::newPlotError (const std::exception &e)
Should something be done with the exception, like deleting it?

Member hippodraw::Inspector::summaryNew ()
This method should get the strings from the factory.

Member hippodraw::Inspector::updateAxisTab ()
Offset slider and text changes behave wildly on when on log scale. For now it is disabled. Should try to fix it.

Member hippodraw::Inspector::updatePlotTab ()
Should move implementation of updating the m_point_stack to a separate method.

Member hippodraw::LinearTransform::genTicks (AxisModelBase &)
Handle too many ticks better, rather than doing nothing. See more detailed comment in code.

Class ListDialog
Write a FileIconProvider so that QFileDialog can highlight known file types.

Class ListTuple
Could implement addRow()

Member hippodraw::ListTuple::addColumn (const std::string &label, boost::python::list seq)
Should not have duplicated code from NTuple class.

Member hippodraw::ListTuple::getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.

Member hippodraw::ListTuple::notifyObservers () const
remove this method when Observable is exposed to Python.

Member hippodraw::LMFitter::calcAlpha ()
Should probably move this implementation into the FCN.

Member hippodraw::LogTransform::genTicks (AxisModelBase &)
This is an ugly way to display scientific notation. Can we improve it?

Use C++ stringstream insted of sprintf().

Member hippodraw::LogTransform::nextStep (double current, AxisModelBase &axis)
: Change this to an array of good ticks rather than hardcoded in here.

Member hippodraw::LogTransform::prevStep (double current, AxisModelBase &axis)
Change this to an array of good ticks rather than hardcoded in here.

Member hippodraw::Map1Projector::setYErrorOption (bool enable)
Remove this and setX`errorOption() in favor of passing as argument string with name of axis option.

Member hippodraw::Map2Projector::setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.

Member hippodraw::Map2Projector::setYErrorOption (bool enable)
Remove duplication of code in this method with setXErrorOption.

Member hippodraw::Map3Projector::valueRange () const
This method doesn't seem to be used yet is needed to satisfy pure virtual function in the base class. Some client should be calling it.

Member hippodraw::MeshProjector::setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.

Member hippodraw::MeshProjector::setYErrorOption (bool enable)
Remove duplication of code in this method with setXErrorOption.

Class NTupleController
This class should probably inherit from DataSource controller as it delegates some member functions to that class and uses it often. However, DataSourceController wants to be singleton, so can we have derived classes of singleton?

Member hippodraw::NTupleController::writeNTupleToFile (DataSource *source, const std::string &filename)
Define return codes for why the file was not written.

Member hippodraw::NTupleXML::createChildren3D (XmlElement *tag, const DataSource &ntuple)
Why is this called with a DataSource argument.

Member hippodraw::NTupleXML::getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear(). Gcc 2.95.3 is missing this function, while gcc 3.2.1 has it.

Member hippodraw::NumArrayTuple::addColumn (const std::string &label, boost::python::numeric::array array)
Should not have duplicated code from NTuple class.

Member hippodraw::NumArrayTuple::getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.

Member hippodraw::NumArrayTuple::notifyObservers () const
remove this method when Observable is exposed to Python.

Member hippodraw::NumArrayTuple::valueAt (unsigned int row, unsigned int column) const
Determine if the Python GIL should also be obtained when using numarray instead of Numeric.

Class Observable
We don't have a copy constructor. Determine if that a problem?

Member hippodraw::ObserverWrap::ObserverWrap (PyObject *self)
This method and others may not be needed.

Member hippodraw::PlotterBase::getProjector (int i) const
Remove this method when no longer used.

Member hippodraw::PlotterBase::getRange (Axes::Type axis, bool scaled) const
In the future, keep a list of the axis rather than hardwired them.

Member hippodraw::PlotterBase::removeDataRep (DataRep *)
Remove this and the addDataRep member functions from this class.

Member hippodraw::PlotterBase::setErrorDisplay (Axes::Type axis, bool)=0
Remove this function when no longer in use.

Member hippodraw::PlotterBaseXML::handleFunction (const XmlElement *element, hippodraw::DataRep *rep)
Should this be handled by FunctionProjectorXML?

Class PointRepBase
This class is too big for the base class. For example, TextRepBase is implementing functions it doesn't have to. Should have a RepBase class.

Class Profile2DProjector
Must of the implementation is the same ash the Hist2DProjector. One should be able to make a BinningProjector class which is the overlap of the current two and differ in only the kind of binner they have.

Member hippodraw::Profile2DProjector::execute ()
Implement accumulations with weight.

Member hippodraw::Profile2DProjector::getPosOn (hippodraw::Axes::Type axis) const
Seems to be duplicated code here.

Member hippodraw::Profile2DProjector::setBinWidth (hippodraw::Axes::Type axis, int parm, bool dragging)
Change design: this method is identical to one in Hist2DProjector.

Member hippodraw::Profile2DProjector::setBinWidth (hippodraw::Axes::Type axis, double v)
Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.

Member hippodraw::Profile2DProjector::setBinWidth (hippodraw::Axes::Type axis, double v)
Avoid duplicated code in Hist2DProjector.

Member hippodraw::Profile2DProjector::setOffset (const std::string &axis, int parm, bool dragging)
Change design: this method is identical to one in Hist2DProjector.

use Axes::convert.

Member hippodraw::Profile2DProjector::setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.

Member hippodraw::ProfileProjector::changedNTuple ()
This implementation is the same as the Hist1DProjector.

Member hippodraw::PyCanvas::saveAsImage (QtDisplay *display, const std::string &filename)
The exception should be thrown from the CanvasView which knows about required suffixes.

Class PyFunctionRep
Could make this a derived class of FunctionRep so that methods that do not need wrapping could be called directly.

Member hippodraw::PyFunctionRep::parameters () const
Enable access to parameters of composite functions via function indexes. Do this for parameters(), setParameters(), and setFixedFlags() methods.

Class QtDisplay
Too may try/catch blocks. All exception inherit from std::exception, so why not put one static function to take care of the exceptions and qApp lock/unlock.

Member hippodraw::QtViewImp::drawPoints (const std::vector< double > &x, const std::vector< double > &y, const std::vector< Color > &colors, hippodraw::Symbol::Type type, float sym_size)
This method has a lot of duplicated code from the one with the same name but only one color. One should remove the duplication.

Member hippodraw::QtViewImp::drawPoints (const std::vector< double > &x, const std::vector< double > &y, const std::vector< Color > &colors, hippodraw::Symbol::Type type, float sym_size)
The draw triangle methods have duplicated code which could be removed.

Member hippodraw::QtViewImp::drawPoints (const std::vector< double > &x, const std::vector< double > &y, hippodraw::Symbol::Type type, float sym_size)
Determine if this member function is no longer needed.

Member hippodraw::RootNTuple::notifyObservers () const
remove this method when Observable is exposed to Python.

Member hippodraw::RootNTuple::smartExpandRootNTuple (const std::string &column) const
Replace use of ostrstream with String::convert

Member hippodraw::QtView::drawShape (QPainter &)
This method could be removed.

Member hippodraw::QtView::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
We may have function like this that takes pointer to member function of QPainter as first argument.

Member hippodraw::QtView::ensureOffScrSize (int osw, int osh)
It still does a fair amount of flickering, need to look at this further.

Member hippodraw::QtViewImp::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
We may have function like this that takes pointer to member function of QPainter as first argument.

Member hippodraw::QtViewImp::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
Should style and color arguments be used?

Member hippodraw::QtViewImp::QtViewImp (PlotterBase *plotter)
Lots more methods could be protected.

Member hippodraw::QtViewWidget::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
We may have function like this that takes pointer to member function of QPainter as first argument.

Member hippodraw::QtXmlElement::QtXmlElement (const QDomElement &)
Remove this method. It was only temporarily here to aid in the transition from the old scheme.

Member hippodraw::QtXmlElement::fillNodeList (const std::string &tagName, std::list< XmlElement * > &nodeList) const
This needs to return only immediate children with given name. Doesn't hurt us yet.

Member hippodraw::Rect::isInBounds (double x1, double y1) const
Use if ( x!=1 ) to est for nan.

Member hippodraw::Rect::isInDepth (double z1) const
The multicative factor the implementation might be considered a kludge. Might there be a better way.

Member hippodraw::Rect::isInDepth (double z1) const
The final solution for the comparison works when the depth is a very small number compared the the values. Is there a better numeric way.

Member hippodraw::RootController::willDelete (const Observable *obs)
This method does get called with obs != RootNTuple, find out why.

Member hippodraw::RootNTuple::getRow (unsigned int i) const
Could bypass calling valueAt if performance is shown to be an issue.

Member hippodraw::RootNTuple::initBranches ()
If the name contains '[]' it should be removed. The '[]' in the title is used to get the dimensions of the variable.

Class SaveAsImageEvent
This class can go away.

Class St1DHistogram
Decide how this class helps or is the implementation of AIDA Histogram1D.

Member hippodraw::StHist1DProjector::StHist1DProjector (const StHist1DProjector &projector)
Extra data members need to be copied.
Note:
Must initialize with the copy constructor of ProjectorBase here, otherise the default constructor will be used. This is because it is a virtual base class of the inherited classes.

Member hippodraw::StHist1DProjector::dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.

Member hippodraw::StHist1DProjector::getPosOn (hippodraw::Axes::Type axis) const
Return positive value from the binner.

Redesign to avoid duplicated code with Hist1DProjector.

Member hippodraw::StHist2DProjector::StHist2DProjector (const StHist2DProjector &projector)
Extra data members need to be copied.
Note:
Must initialize with the copy constructor of ProjectorBase here, otherise the default constructor will be used. This is because it is a virtual base class of the inherited classes.

Member hippodraw::StHist2DProjector::dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.

Member hippodraw::StHist2DProjector::isAxisBinned (const std::string &axis) const
This method could have common implementation with DyHist2DProjector if the static projector initialized it binding options even thought they do not bind to NTuple.

Class SymbolPointRep
Could add diamond.

Member hippodraw::SymbolPointRep::drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should transform be const in this method.

Class TextPlotter
The amount of stuff this class inherits and doesn't use is another sign that the PlotterBase is too heavy. For example, everything dealing with the axes are only needed by the XYPlotter.

Member hippodraw::TextPlotter::createNTuple () const
Returns something, if we can think what.

Member hippodraw::TextPlotter::errorDisplay (hippodraw::Axes::Type axis) const
Implement TextRep that can display errors.

Member hippodraw::TextPlotter::setErrorDisplay (hippodraw::Axes::Type axis, bool)
Implement TextRep that can display errors.

Class TransformBase
When a Coordinate class is implemented, we can replace many functions below with ones that take a Coordinate as an argument.

Member hippodraw::TransformFactory::createTransform (const std::string &name)
Fix it so that more than one white space could be in string.

Check of DISTANCE_DEFECT workaround works or find better way.

Member hippodraw::UnaryTransform::transform (double &x) const=0
implement concrete cases of single variable transformation.

Member hippodraw::VariableMesh::setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil". Should probably have method in projector that gives the answer if error axis is bound.

Class ViewBase
Why doesn't getXXXRect() return reference?

Class WindowController
There are circular references between WindowController and CanvasWindow. Probably, WindowController should be an observer of CanvasWindow or the methods of the WindowController should be static methods of the CanvasWindow.

Member hippodraw::WindowController::aboutToClose (CanvasWindow *window)
If only one window remains, informs that window to disable the close button.

Member hippodraw::WindowController::WindowController ()
Had to make this public for boost.python. Maybe there is a better way.

Member hippodraw::XYPlot::setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil". Should probably have method in projector that gives the answer if error axis is bound.

Class XyPlotter
When multiple DataRep objects are contained by the plotter, one could set the title from one of them.

Class XYZTransformBase
This class should go away.

Class YPlot
Fix a bug in reading a document as the point size does not get restored.

Class YPlot
Allow one to use another column as the error on a value. Don't forget to implement hasErrorDisplay() after doing so.

Member FLT_EQUAL
Should have this function in one place instead of duplicating it where needed. Not sure where it should go, however.

Generated for HippoDraw Class Library by doxygen