MathPlot
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MathPlot::mpFXYVector Class Reference

A class providing graphs functionality for a 2D plot (either continuous or a set of points), from vectors of data. More...

#include <mathplot.h>

Inheritance diagram for MathPlot::mpFXYVector:
Inheritance graph
[legend]
Collaboration diagram for MathPlot::mpFXYVector:
Collaboration graph
[legend]

Public Member Functions

 mpFXYVector (const wxString &name=wxEmptyString, int flags=mpALIGN_NE, bool viewAsBar=false, bool useY2Axis=false)
 
virtual ~mpFXYVector ()
 destrutor
 
void SetData (const std::vector< double > &xs, const std::vector< double > &ys)
 Changes the internal data: the set of points to draw. More...
 
void Clear ()
 Clears all the data, leaving the layer empty. More...
 
virtual int GetSize ()
 Return the number of points in the series We assume that size of m_xs equals size of m_ys.
 
bool AddData (const double x, const double y, bool updatePlot)
 Add data to the internal vector. More...
 
void SetReserve (int reserve)
 Set memory reserved for m_xs and m_ys Note : this does not modify the size of m_xs and m_ys, this is not a resize. More...
 
int GetReserve () const
 Get memory reserved for m_xs and m_ys.
 
- Public Member Functions inherited from MathPlot::mpFXY
 mpFXY (const wxString &name=wxEmptyString, int flags=mpALIGN_NE, bool viewAsBar=false, bool useY2Axis=false)
 
bool DoGetNextXY (double *x, double *y)
 Get function value with log test.
 
void SetViewMode (bool asBar)
 If true, XY series is plotted as bar.
 
int GetBarWidth (void) const
 return the width of the bar
 
bool ViewAsBar (void) const
 return true if XY series is plotted with bar
 
- Public Member Functions inherited from MathPlot::mpFunction
 mpFunction (mpLayerType layerType=mpLAYER_PLOT, const wxString &name=wxEmptyString, bool useY2Axis=false)
 Full constructor.
 
void SetContinuity (bool continuity)
 Set the 'continuity' property of the layer. More...
 
bool GetContinuity () const
 Gets the 'continuity' property of the layer. More...
 
void SetStep (unsigned int step)
 Set step for plot. More...
 
unsigned int GetStep () const
 Get step for plot. More...
 
void SetSymbol (mpSymbol symbol)
 Set symbol. More...
 
mpSymbol GetSymbol () const
 Get symbol. More...
 
void SetSymbolSize (int size)
 Set symbol size. More...
 
int GetSymbolSize () const
 Get symbol size. More...
 
virtual bool DrawSymbol (wxDC &dc, wxCoord x, wxCoord y)
 Draw a symbol in place of point. More...
 
void SetY2Axis (bool _useY2)
 Set use of second Y axis. More...
 
bool GetY2Axis () const
 Is second Y axis selected for this layer? More...
 
- Public Member Functions inherited from MathPlot::mpLayer
 mpLayer (mpLayerType layerType)
 
void SetWindow (mpWindow &w)
 Set the wxWindow handle.
 
virtual bool HasBBox ()
 Check whether this layer has a bounding box. More...
 
virtual void GetBBox (mpFloatRect *m_bound)
 Return the bounding box, ie GetMinX(), GetMaxX(), GetMinY() and GetMaxY() of this mpLayer Here we don't use extra Y2 values.
 
mpLayerType GetLayerType () const
 Get layer type: a Layer can be of different types: plot, lines, axis, info boxes, etc, this method returns the right value. More...
 
int GetLayerSubType () const
 Get layer subtype: each layer type can have several flavors. More...
 
virtual bool IsLayerType (mpLayerType type, int *sub_type)
 Specifies that if the layer is of type "type". More...
 
void Plot (wxDC &dc, mpWindow &w)
 Plot given view of layer to the given device context. More...
 
void SetName (const wxString &name)
 Set layer name. More...
 
const wxString & GetName () const
 Get layer name. More...
 
void SetFont (const wxFont &font)
 Set layer font. More...
 
const wxFont & GetFont () const
 Get font set for this layer. More...
 
void SetFontColour (const wxColour &colour)
 Set layer font foreground colour. More...
 
const wxColour & GetFontColour () const
 Get font foreground colour set for this layer. More...
 
void SetPen (const wxPen &pen)
 Set layer pen. More...
 
const wxPen & GetPen () const
 Get pen set for this layer. More...
 
void SetBrush (const wxBrush &brush)
 Set layer brush. More...
 
const wxBrush & GetBrush () const
 Get brush set for this layer. More...
 
void SetShowName (bool show)
 Set Name visibility. More...
 
bool GetShowName () const
 Get Name visibility. More...
 
void SetDrawOutsideMargins (bool drawModeOutside)
 Set Draw mode: inside or outside margins. More...
 
bool GetDrawOutsideMargins () const
 Get Draw mode: inside or outside margins. More...
 
wxBitmap GetColourSquare (int side=16)
 Get a small square bitmap filled with the colour of the pen used in the layer. More...
 
bool IsVisible () const
 Checks whether the layer is visible or not. More...
 
virtual void SetVisible (bool show)
 Sets layer visibility. More...
 
bool IsTractable () const
 Checks whether the layer is tractable or not. More...
 
virtual void SetTractable (bool track)
 Sets layer tractability. More...
 
void SetAlign (int align)
 Set X/Y alignment. More...
 
int GetAlign () const
 Get X/Y alignment. More...
 
void SetCanDelete (bool canDelete)
 Set CanDelete for plot. More...
 
bool GetCanDelete (void) const
 Get CanDelete for plot. More...
 
mpLayerZOrder GetZIndex (void) const
 Get the ZIndex of the plot. More...
 

Protected Member Functions

void Rewind ()
 Rewind value enumeration with mpFXY::GetNextXY. More...
 
virtual bool GetNextXY (double *x, double *y)
 Get locus value for next N. More...
 
void DrawAddedPoint (double x, double y)
 Draw the point added if there is in bound. More...
 
virtual double GetMinX ()
 Returns the actual minimum X data (loaded in SetData).
 
virtual double GetMinY ()
 Returns the actual minimum Y data (loaded in SetData).
 
virtual double GetMaxX ()
 Returns the actual maximum X data (loaded in SetData).
 
virtual double GetMaxY ()
 Returns the actual maximum Y data (loaded in SetData).
 
- Protected Member Functions inherited from MathPlot::mpFXY
virtual void DoPlot (wxDC &dc, mpWindow &w)
 Layer plot handler. More...
 
void UpdateViewBoundary (wxCoord xnew, wxCoord ynew)
 Update label positioning data. More...
 
 wxDECLARE_DYNAMIC_CLASS (mpFXY)
 
- Protected Member Functions inherited from MathPlot::mpFunction
 wxDECLARE_DYNAMIC_CLASS (mpFunction)
 
- Protected Member Functions inherited from MathPlot::mpLayer
void UpdateContext (wxDC &dc) const
 Initialize the context.
 
virtual void DoBeforePlot ()
 If we need to do something before plot like reinitialize some parameters ...
 
void CheckLog (double *x, double *y)
 Test if we are in log axis and if true return the log of the values.
 

Protected Attributes

std::vector< double > m_xs
 The internal copy of the set of data to draw.
 
std::vector< double > m_ys
 
int m_reserveXY
 Memory reserved for m_xs and m_ys. More...
 
size_t m_index
 The internal counter for the "GetNextXY" interface.
 
double m_minX
 Loaded at SetData.
 
double m_maxX
 
double m_minY
 
double m_maxY
 
double m_lastX
 
double m_lastY
 
- Protected Attributes inherited from MathPlot::mpFXY
wxCoord maxDrawX
 
wxCoord minDrawX
 
wxCoord maxDrawY
 
wxCoord minDrawY
 
double m_deltaX
 
double m_deltaY
 
int m_BarWidth
 
bool m_ViewAsBar = false
 
bool m_CanDelete = true
 
- Protected Attributes inherited from MathPlot::mpFunction
bool m_continuous
 Specify if the layer will be plotted as a continuous line or a set of points. Default false.
 
mpSymbol m_symbol
 A symbol for the plot in place of point. Default mpNone.
 
int m_symbolSize
 Size of the symbol. Default 6.
 
int m_symbolSize2
 Size of the symbol div 2.
 
unsigned int m_step
 Step to get point to be draw. Default : 1.
 
bool m_UseY2Axis
 Use Y2 axis. This second axis must exist.
 
- Protected Attributes inherited from MathPlot::mpLayer
const mpLayerType m_type
 Layer type mpLAYER_*.
 
mpWindowm_win
 The wxWindow handle.
 
int m_subtype
 Layer sub type, set in constructors.
 
wxFont m_font
 Layer's font.
 
wxColour m_fontcolour
 Layer's font foreground colour.
 
wxPen m_pen
 Layer's pen. Default Colour = Black, width = 1, style = wxPENSTYLE_SOLID.
 
wxBrush m_brush
 Layer's brush. Default wxTRANSPARENT_BRUSH.
 
wxString m_name
 Layer's name.
 
bool m_showName
 States whether the name of the layer must be shown. Default : false.
 
bool m_drawOutsideMargins
 Select if the layer should draw only inside margins or over all DC. Default : false.
 
bool m_visible
 Toggles layer visibility. Default : true.
 
bool m_tractable
 Is the layer tractable.
 
int m_flags
 Holds label alignment. Default : mpALIGN_NE.
 
mpRect m_plotBoundaries
 The boundaries for plotting curve calculated by mpWindow.
 
bool m_CanDelete
 Is the layer can be deleted.
 
mpLayerZOrder m_ZIndex
 The index in Z-Order to draw the layer.
 

Detailed Description

A class providing graphs functionality for a 2D plot (either continuous or a set of points), from vectors of data.

This class can be used directly, the user does not need to derive any new class. Simply pass the data as two vectors with the same length containing the X and Y coordinates to the method SetData.

To generate a graph with a set of points, call

layerVar->SetContinuity(false)

or

layerVar->SetContinuity(true)

to render the sequence of coordinates as a continuous line.

(Added: Jose Luis Blanco, AGO-2007)

Constructor & Destructor Documentation

◆ mpFXYVector()

mpFXYVector::mpFXYVector ( const wxString &  name = wxEmptyString,
int  flags = mpALIGN_NE,
bool  viewAsBar = false,
bool  useY2Axis = false 
)
Parameters
nameLabel
flagsLabel alignment, pass one of #mpALIGN_NE, #mpALIGN_NW, #mpALIGN_SW, #mpALIGN_SE.

Member Function Documentation

◆ AddData()

bool mpFXYVector::AddData ( const double  x,
const double  y,
bool  updatePlot 
)

Add data to the internal vector.

This method DOES NOT refresh the mpWindow unless updatePlot = true and the added point is in bound; do it manually by calling UpdateAll() or just Fit() if we want to adjust plot

Parameters
x
y
updatePlot.boolean, set true to update plot. This speed the rendering because just new point is drawing.
Returns
true if limits are changed (and may some refresh)

This method DOES NOT refresh the mpWindow unless updatePlot = true; Do it manually by calling UpdateAll() or just Fit() if we want to adjust plot BEWARE : mpFXYVector layer must be added to the mpWindow layers list for update Plot (logic !)

◆ Clear()

void mpFXYVector::Clear ( )
virtual

Clears all the data, leaving the layer empty.

See also
SetData

Reimplemented from MathPlot::mpFXY.

◆ DrawAddedPoint()

void mpFXYVector::DrawAddedPoint ( double  x,
double  y 
)
protected

Draw the point added if there is in bound.

Draw the newly added point at m_index, optionally drawing the continuous-mode line.

The bounds are already known.

◆ GetNextXY()

bool mpFXYVector::GetNextXY ( double *  x,
double *  y 
)
protectedvirtual

Get locus value for next N.

Overridden in this implementation.

Parameters
xReturns X value
yReturns Y value

Implements MathPlot::mpFXY.

◆ Rewind()

void MathPlot::mpFXYVector::Rewind ( )
inlineprotectedvirtual

Rewind value enumeration with mpFXY::GetNextXY.

Overridden in this implementation.

Implements MathPlot::mpFXY.

◆ SetData()

void mpFXYVector::SetData ( const std::vector< double > &  xs,
const std::vector< double > &  ys 
)

Changes the internal data: the set of points to draw.

Both vectors MUST be of the same length. This method DOES NOT refresh the mpWindow; do it manually.

See also
Clear

◆ SetReserve()

void MathPlot::mpFXYVector::SetReserve ( int  reserve)
inline

Set memory reserved for m_xs and m_ys Note : this does not modify the size of m_xs and m_ys, this is not a resize.

Call Clear() to resize to 0. if capacity is already superior at reserve, do nothing

Member Data Documentation

◆ m_reserveXY

int MathPlot::mpFXYVector::m_reserveXY
protected

Memory reserved for m_xs and m_ys.

Default 1000