Todo List
Member AxisModelBase::getRange (bool scaled) const
Really should have separate function, getScaledRange, so at the calling point it would be clear.
Member AxisModelBase::m_first_tick
Maybe it is not needed.
Member 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 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 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).
Member 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).
Member AxisModelLog::nextStep (double cur)
: Change this to an array of good ticks rather than hardcoded in here.
Member AxisModelLog::prevStep (double cur)
Change this to an array of good ticks rather than hardcoded in here.
Class AxisRep2D
Implement minor ticks.
Class AxisRepBase
There is lots of duplicated code in the derived classes that could be moved to the base.
Member AxisRepBase::drawAllXTicks (const AxisModelBase &axisModelX, const AxisModelBase &axisModelY, const TransformBase &transform, ViewBase &view)
Draw lines connecting ticks top and bottom.
Class AxisRepColor
Implement minor ticks.
Member AxisWidget::AxisWidget (QWidget *parent=0, const char *name=0, Qt::WFlags wflags=0)
Replace obsolete QScrollBae constructor with Qt 4 one.
Member AxisWidget::processHighSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.
Member AxisWidget::processLowSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.
Member BFGSFitter::calcBestFit ()
Use if ( x!=x ) to test for nan.
Member BFGSFitter::wolfeStep (const std::vector< double > &x0, const std::vector< double > &p) const
Take out error message and send signal to application.
Member BinnerAxisLinear::BinnerAxisLinear (const BinnerAxisLinear &binner)
Why is width recalculated instead of being copied.
Member BinnerAxisLinear::setRange (const Range &, bool hold_width=true)
Had to put std:: in here for Sun's CC, but not in AxisModelxxx.
Member BinnerAxisLog::getOffset () const
Maybe be able to remove this function and other getOffset functions.
Member BinnerAxisLog::setConstWid ()
Remove this function in favor of calcWidthParm.
Member BinningProjector::execute ()
Is there away to avoid implementing this empty method.
Member BinningProjector::setBinWidth (hippodraw::Axes::Type axis, double width)
Derived classes that re-implement this member function do so with only difference being the assert.
Member Bins1DHist::setBinContents (const DataSource *ntuple)
The underflow and overflow bins do not get archived, thus don't get restored.
Member Bins1DProfile::accumulate (double x, double y, double wt=1.0, double dummy=0.0)
Add weight argument.
Member Bins1DProfile::setBinContents (const DataSource *ntuple)
Needs implementation when static projectors are implemented.
Member Bins2DBase::m_num_bins
Do we need this?.
Member 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.
Member Bins2DProfile::fillDataSource (DataSource *ntuple) const

The error on the value has needs to be tested.

The scaling needs to be tested.

Member Bins2DProfile::setBinContents (const DataSource *ntuple)
Needs implementation when static projector is implemented.
Member 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 CanvasView::exportTextTuple (const std::string &suffix)

Report any error conditions.

One error condition is saving on top of existing file.

Member CanvasView::setIntervalEnabled (bool yes=true)
Move this method and others that use PlotterBase to a controller.
Class CanvasWindow

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

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

Respond to Page Up and Page Down keys.

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.

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

Member CanvasWindow::allowClose ()
bring the window up front before showing message box.
Member CanvasWindow::CanvasWindow (QWidget *parent=0, const char *name=0, Qt::WFlags fl=Qt::WType_TopLevel)
This is the only place where know we are using Qt XML support.
Member CanvasWindow::CanvasWindow (const CanvasWindow &)
Probably should remove this method or make it private.
Member CanvasWindow::filePrint ()

Add the `.ps' subscript to the file name if missing.

Add the `.ps' subscript to the file name if missing.

Member CanvasWindow::removeDisplay (PlotterBase *plotter)
This method should only be in the CanvasView.
Member CanvasWindow::selectedPlotter ()
This method should go away or return null pointer if multiple plots are selected.
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 ColumnPointRep::ColumnPointRep ()
Could postpone creation of the ErrorBarRep until flag is set to require one.
Member ColumnPointRep::drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should the TransformBase * be const?
Member CompositePlotter::autoScaleZ ()
Determine why is Z axis so different from X and Y?
Member CompositePlotter::m_x_axis
Generalize the containment of axis model to n-dimension.
Member CompositePlotter::m_x_label
The axis labels should be a member of the axis model.
Member CompositePlotter::toUserXY (double mx, double my, bool scaled, double &ux, double &uy) const
Needs to be renamed.
Member ContourPointRep::drawContourTicks (const TransformBase &, ViewBase &, const std::vector< double > &)
This method should be in AxisRepColor class.
Member ContourPointRep::getContour (int i, const TransformBase *transform)
Test contour when low end of range is negative.
Member 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 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 CutPlotter::setAxisBinding (const std::vector< std::string > &bindings)
Shouldn't call autoScale() here.
Member 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.
Member 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 DataRepException
Only QtDisplay uses this class, maybe it could be eliminated.
Member 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.

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 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 DisplayController::getBindingProjector (const PlotterBase *) const
Can replace much of this code by calling getUniqueWithNTupleBindings member function.
Member DisplayController::getLog (const PlotterBase *plotter, Axes::Type axis) const
un-hard code this when we have XYZ transform?
Member DisplayController::setBinner (PlotterBase *plotter, Axes::Type axis)
Remove this function when GUI has separate controls for displaying Log and binning log.
Member DisplayController::setLog (PlotterBase *plotter, Axes::Type axis, bool flag)

This function should go away in favor of one taking string for axis argument.

Check that display can do it.

Member DisplayController::setOffset (PlotterBase *plotter, const std::string &axis, int parm, bool dragging)

Use Axes::convert.

Remove duplicated code compared to DisplayController::setBinWidth.

Member DyHist1DProjector::getAverage (hippodraw::Axes::Type axis) const

Remove duplicated code that is also in NTupleProjector.

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

Fetch the column vector by binding instead of label.

Member EpsView::initPlot (const std::string &filename, double x, double y, double w, double h)
Using std::endl; add '
' and flushes the buffer.
Member EpsView::userToDrawColor (double c) const
Could eliminate userToMargincolor.
Member EpsView::userToDrawX (double x) const
Could eliminated userToMarginX.
Member EpsView::userToDrawY (double x) const
Could eliminate userToInvertedMarginY.
Class FigureEditor

Need ability to group and un-group items.

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

Member FigureEditor::contentsMouseMoveEvent (QMouseEvent *, double aspect)

This implementation depends on parent widget being CanvasWindow, thus making a circular dependency.

The implementation uses QtView, thus should be moved to CanvasView.

The implementation uses QtView, thus should be moved to CanvasView.

Member FigureEditor::hide (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.
Member 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 FigureEditor::remove (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.
Member FitsController::closeFile (const std::string &name)
Why is this commented out?
Member 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 FitsNTuple::fillShape (std::vector< intptr_t > &shape, unsigned int index) const
Need to make sure that the shape has been set.
Member FitsNTuple::notifyObservers () const
remove this method when Observable is exposed to Python.
Member FLT_EQUAL (double x, double y)
Should have this function in one place instead of duplicating it where needed.
Member 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 FunctionProjector::clone ()
To be implemented.
Member FunctionProjector::FunctionProjector (const FunctionProjector &)
To be implemented.
Member FunctionProjector::m_fitter
Decide if FunctionProjector or the FunctionRep should be the owner of the Fitter.
Member FunctionProjector::valueRange () const
Return value range of function.
Member HiNTupleXML::getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear().
Member Hist1DProjImp::setRange (hippodraw::Axes::Type, bool)
Should not be changing the AxisModelBase Range.
Member 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 Hist2DProjImp::setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.
Class Inspector

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

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

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

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.

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.

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

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.

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

In transform tabbed panel, use QDial instead of QSlider.

Member Inspector::newPlotError (const std::exception &e)
Should something be done with the exception, like deleting it?
Member Inspector::summaryNew ()
This method should get the strings from the factory.
Member 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 Inspector::updatePlotTab ()
Should move implementation of updating the m_point_stack to a separate method.
Member LinearTransform::genTicks (AxisModelBase &)
Handle too many ticks better, rather than doing nothing.
Class ListDialog
Write a FileIconProvider so that QFileDialog can highlight known file types.
Class ListTuple
Could implement addRow()
Member ListTuple::addColumn (const std::string &label, boost::python::list seq)
Should not have duplicated code from NTuple class.
Member ListTuple::getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.
Member ListTuple::notifyObservers () const
remove this method when Observable is exposed to Python.
Member LMFitter::calcAlpha ()
Should probably move this implementation into the FCN.
Member LogTransform::genTicks (AxisModelBase &)

This is an ugly way to display scientific notation.

Use C++ stringstream insted of sprintf().

Member LogTransform::nextStep (double current, AxisModelBase &axis)
: Change this to an array of good ticks rather than hardcoded in here.
Member LogTransform::prevStep (double current, AxisModelBase &axis)
Change this to an array of good ticks rather than hardcoded in here.
Member Map1Projector::setYErrorOption (bool enable)
Remove this and setX`errorOption() in favor of passing as argument string with name of axis option.
Member Map2Projector::setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.
Member Map2Projector::setYErrorOption (bool enable)
Remove duplication of code in this method with setXErrorOption.
Member Map3Projector::valueRange () const
This method doesn't seem to be used yet is needed to satisfy pure virtual function in the base class.
Member MeshProjector::setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.
Member 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 NTupleController::writeNTupleToFile (DataSource *source, const std::string &filename)
Define return codes for why the file was not written.
Member NTupleProjector::getNTuple () const
Should be changed to getDatSource().
Member NTupleProjector::getNTuple ()
Should be changed to getDatSource().
Member NTupleXML::createChildren3D (XmlElement *tag, const DataSource &ntuple)
Why is this called with a DataSource argument.
Member NTupleXML::getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear().
Member NumArrayTuple::addColumn (const std::string &label, boost::python::numeric::array array)
Should not have duplicated code from NTuple class.
Member NumArrayTuple::getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.
Member NumArrayTuple::notifyObservers () const
remove this method when Observable is exposed to Python.
Member 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 ObserverWrap::ObserverWrap (PyObject *self)
This method and others may not be needed.
Member PeriodicBinaryTransform::adjustValues (AxisModelBase &model, hippodraw::Axes::Type axes, const Range &limit)
This code is duplicated and should move up the hierarchy.
Member PeriodicBinaryTransform::genTicks (AxisModelBase &axis, hippodraw::Axes::Type axistype)

Handle too many ticks better, rather than doing nothing.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Member 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 PlotterBase::getProjector (int i) const
Remove this method when no longer used.
Member PlotterBase::getRange (Axes::Type axis, bool scaled) const
In the future, keep a list of the axis rather than hardwired them.
Member PlotterBase::removeDataRep (DataRep *)
Remove this and the addDataRep member functions from this class.
Member PlotterBase::setErrorDisplay (Axes::Type axis, bool)=0
Remove this function when no longer in use.
Member 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 Profile2DProjector::execute ()
Implement accumulations with weight.
Member Profile2DProjector::getPosOn (hippodraw::Axes::Type axis) const
Seems to be duplicated code here.
Member Profile2DProjector::setBinWidth (hippodraw::Axes::Type axis, double v)

Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.

Avoid duplicated code in Hist2DProjector.

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

Change design: this method is identical to one in Hist2DProjector.

use Axes::convert.

Member Profile2DProjector::setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.
Member ProfileProjector::changedNTuple ()
This implementation is the same as the Hist1DProjector.
Member ProjectorBase::addPointReps ()=0
Why is this in the ProjectorBase and not DataRep ?
Member ProjectorBase::getAverage (Axes::Type axis) const

this should be computed externally with the iterators

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Member ProjectorBase::getPosOn (Axes::Type) const =0
Resolve if this method should be here.
Member ProjectorBase::getZAfterTransform (TransformBase *transform)
This is the only method in all the classes of this directory that needs a heder file from transform directory.
Member ProjectorBase::getZLabel () const
Change to fetch labels by AxesType or its replacement.
Member ProjectorBase::m_x_axis
Should be generalized to n-dimensions by having having a vector of AxisModelBase objects.
Member ProjectorBase::m_z_label
Remove when getLabel takes axis argument
Member ProjectorBase::valueRange () const =0
Resolve if this method should be here.
Member 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 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 QtView::drawShape (QPainter &)
This method could be removed.
Member 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 QtView::ensureOffScrSize (int osw, int osh)
It still does a fair amount of flickering, need to look at this further.
Member 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 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.

The draw triangle methods have duplicated code which could be removed.

The draw triangle methods have duplicated code which could be removed.

The draw triangle methods have duplicated code which could be removed.

The draw triangle methods have duplicated code which could be removed.

Member 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.

Should style and color arguments be used?

Member QtViewImp::QtViewImp (PlotterBase *plotter)
Lots more methods could be protected.
Member 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 QtXmlElement::fillNodeList (const std::string &tagName, std::list< XmlElement * > &nodeList) const
This needs to return only immediate children with given name.
Member QtXmlElement::QtXmlElement (const QDomElement &)
Remove this method.
Member Rect::isInBounds (double x1, double y1) const
Use if ( x!=1 ) to est for nan.
Member Rect::isInDepth (double z1) const

The multicative factor the implementation might be considered a kludge.

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 RepBase::color () const
Remove this member in favor of getColor().
Member RepBase::setValueTransform (BinToColor *)
Should have base class that doesn't know about color and BinToColor class should derive from it.
Member RootController::willDelete (const Observable *obs)
This method does get called with obs != RootNTuple, find out why.
Member RootNTuple::getRow (unsigned int i) const
Could bypass calling valueAt if performance is shown to be an issue.
Member RootNTuple::initBranches ()
If the name contains '[]' it should be removed.
Member RootNTuple::notifyObservers () const
remove this method when Observable is exposed to Python.
Member RootNTuple::smartExpandRootNTuple (const std::string &column) const
Replace use of ostrstream with String::convert
Class SaveAsImageEvent
This class can go away.
Class St1DHistogram
Decide how this class helps or is the implementation of AIDA Histogram1D.
Member StHist1DProjector::dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.
Member StHist1DProjector::getPosOn (hippodraw::Axes::Type axis) const

Return positive value from the binner.

Redesign to avoid duplicated code with Hist1DProjector.

Member StHist1DProjector::StHist1DProjector (const StHist1DProjector &projector)
Extra data members need to be copied.
Member StHist2DProjector::dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.
Member 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.
Member StHist2DProjector::StHist2DProjector (const StHist2DProjector &projector)
Extra data members need to be copied.
Class SymbolPointRep
Could add diamond.
Member SymbolPointRep::drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should transform be const in this method.
Member SymbolPointRep::transformPoints (const TransformBase &transform, ViewBase &view)
The ViewBase object is not used, so why is it in interface.
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 TextPlotter::createNTuple () const
Returns something, if we can think what.
Member TextPlotter::errorDisplay (hippodraw::Axes::Type axis) const
Implement TextRep that can display errors.
Member 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 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 UnaryTransform::transform (double &x) const =0
implement concrete cases of single variable transformation.
Member VariableMesh::setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil".
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 WindowController::aboutToClose (CanvasWindow *window)
If only one window remains, informs that window to disable the close button.
Member WindowController::WindowController ()
Had to make this public for boost.python. Maybe there is a better way.
Member XYPlot::setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil".
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.

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


Generated for HippoDraw Class Library by doxygen