MathPlot
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
mpInfoLegend Class Reference

Implement the legend to be added to the plot This layer allows you to add a legend to describe the plots in the window. More...

#include <mathplot.h>

Inheritance diagram for mpInfoLegend:
Inheritance graph
[legend]
Collaboration diagram for mpInfoLegend:
Collaboration graph
[legend]

Public Types

enum  HitCode : int { HitNone = -1, HitHeader = -2 }
 Return codes for GetLegendHitRegion() if no series was hit.
 

Public Member Functions

 mpInfoLegend ()
 Default constructor.
 
 mpInfoLegend (wxPoint pos, const wxBrush &brush= *wxWHITE_BRUSH, mpLocation location=mpMarginUser)
 Complete constructor, setting initial rectangle and background brush. More...
 
 ~mpInfoLegend ()
 Default destructor.
 
void SetItemMode (mpLegendStyle mode)
 Set item mode (the element on the left of text representing the plot line may be line, square, or line with symbol). More...
 
mpLegendStyle GetItemMode () const
 Get the current legend item drawing mode.
 
void SetItemDirection (mpLegendDirection mode)
 Set item direction (may be vertical or horizontal) More...
 
mpLegendDirection GetItemDirection () const
 Get the current legend item layout direction.
 
void SetNeedUpdate ()
 Mark the legend bitmap as needing regeneration.
 
void ShowDraggedSeries (bool active)
 Set if dragged series shall be shown or hidden. More...
 
bool IsDraggedSeriesShown () const
 Get shown status of dragged series. More...
 
int GetLegendHitRegion (wxPoint mousePos)
 Checks if mouse is inside legend and if it hovers the header or any of the series If a series is hovered, return its index. More...
 
void DrawDraggedSeries (wxDC &dc, mpWindow &w)
 When a series is being dragged, draw a rectangle with its name at the mouse cursor. More...
 
void DrawContent (wxDC &dc, mpWindow &w)
 Draw the content of info legend to plot. More...
 
void RestoreAxisHighlighting (mpWindow &w)
 Clear the dragged series rectangle from the plot and restores axis hovering indication. More...
 
- Public Member Functions inherited from mpInfoLayer
 mpInfoLayer ()
 Default constructor. More...
 
 mpInfoLayer (wxPoint pos, const wxBrush &brush= *wxTRANSPARENT_BRUSH, mpLocation location=mpMarginUser)
 Complete constructor. More...
 
virtual ~mpInfoLayer ()
 Destructor.
 
virtual void SetVisible (bool show)
 Sets layer visibility. More...
 
virtual void UpdateInfo (mpWindow &w, wxEvent &event)
 Update the content of the info box. More...
 
virtual bool HasBBox ()
 mpInfoLayer has not bounding box. More...
 
virtual void ErasePlot (wxDC &, mpWindow &)
 Just delete the bitmap of the info. More...
 
virtual bool Inside (const wxPoint &point)
 Is given point inside the info box rectangle? More...
 
virtual void Move (wxPoint delta, mpWindow &w)
 Move the layer rectangle by given pixel deltas. More...
 
virtual void UpdateReference ()
 Update the rectangle reference point. More...
 
wxPoint GetPosition () const
 Get the position of the upper left corner of the box (in pixels) More...
 
void SetInitialPosition (wxPoint pos)
 Set the position in percent of the upper left corner of the box. More...
 
wxSize GetSize () const
 Get the size of the box (in pixels) More...
 
const wxRect & GetRectangle () const
 Get the current rectangle coordinates. More...
 
void SetLocation (mpLocation location)
 Set the location of the mpInfoLayer box.
 
mpLocation GetLocation () const
 Return the location of the mpInfoLayer box. More...
 
- Public Member Functions inherited from mpLayer
 mpLayer (mpLayerType layerType)
 The base class of all layer objects. More...
 
void SetWindow (mpWindow &w)
 Set the wxWindow handle.
 
mpLayerType GetLayerType () const
 Get layer type: a Layer can be of different types: plot, lines, axis, info boxes, etc. More...
 
int GetLayerSubType () const
 Get layer subtype: each layer type can have several flavors. More...
 
virtual bool IsLayerType (mpLayerType typeOfInterest, int *subtype)
 Set the layer's subtype in caller variable, and return true if the layer is of type "typeOfInterest". More...
 
virtual double GetMinX ()
 Get inclusive left border of bounding box. More...
 
virtual double GetMaxX ()
 Get inclusive right border of bounding box. More...
 
virtual double GetMinY ()
 Get inclusive bottom border of bounding box. More...
 
virtual double GetMaxY ()
 Get inclusive top border of bounding box. 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...
 
void SetBrush (const wxColour &colour, enum wxBrushStyle style=wxBRUSHSTYLE_SOLID)
 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
 Is this layer visible? 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 what we do with the object associated with the layer when we delete the layer. More...
 
bool GetCanDelete (void) const
 Retreive what we do with the object associated with the layer when we delete the layer. More...
 
mpLayerZOrder GetZIndex (void) const
 Get the ZIndex of the plot. More...
 

Public Attributes

mpFunctionm_selectedSeries = nullptr
 the series currently selected/clicked by the user
 
mpOptional_int m_lastHoveredAxisID = -1
 last axis ID that was hovered when dragging series
 

Protected Member Functions

virtual void DoPlot (wxDC &dc, mpWindow &w)
 Plot method. More...
 
- Protected Member Functions inherited from mpInfoLayer
void SetInfoRectangle (mpWindow &w, int width=0, int height=0)
 Compute the dimensions and position of the mpInfoLayer rectangle.
 
- Protected Member Functions inherited from mpLayer
void UpdateContext (wxDC &dc) const
 Initialize the context.
 
virtual bool DoBeforePlot ()
 If we need to do something before plot like reinitialize some parameters ... More...
 
void CheckLog (double *x, double *y, int yAxisID)
 Test if we are in log axis and if true return the log of the values. More...
 

Protected Attributes

mpLegendStyle m_item_mode
 Visual style used for each legend entry.
 
mpLegendDirection m_item_direction
 Layout direction used when arranging legend entries.
 
bool m_showDraggedSeries
 Indicate if series that has been gripped with mouse shall be drawn.
 
wxString m_headerString = wxString::FromUTF8("≡")
 "Hamburger" symbol used for grip the legend
 
- Protected Attributes inherited from mpInfoLayer
wxRect m_dim
 The bounding rectangle of the mpInfoLayer box (may be resized dynamically by the Plot method).
 
wxBitmap * m_info_bmp
 The bitmap that contain the info.
 
wxPoint m_reference
 Holds the reference point for movements.
 
double m_relX
 Box X position relative window, used to rescale the info box position when the window is resized.
 
double m_relY
 Box Y position relative window, used to rescale the info box position when the window is resized.
 
mpLocation m_location
 Location of the box in the margin. Default mpMarginNone = use coordinates.
 
- Protected Attributes inherited from 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_SW for series and mpALIGN_CENTER for scale.
 
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

Implement the legend to be added to the plot This layer allows you to add a legend to describe the plots in the window.

The legend uses the layer name as a label, and displays only layers of type mpLAYER_PLOT.

Constructor & Destructor Documentation

◆ mpInfoLegend()

mpInfoLegend::mpInfoLegend ( wxPoint  pos,
const wxBrush &  brush = *wxWHITE_BRUSH,
mpLocation  location = mpMarginUser 
)

Complete constructor, setting initial rectangle and background brush.

Parameters
posThe initial position in percent of the rectangle.
brushThe wxBrush to be used for box background: default is transparent
locationto place in the margin or free
See also
mpInfoLayer::mpInfoLayer

Member Function Documentation

◆ DoPlot()

void mpInfoLegend::DoPlot ( wxDC &  dc,
mpWindow w 
)
protectedvirtual

Plot method.

Parameters
dcthe device context where to plot
wthe window to plot
See also
mpLayer::Plot

Reimplemented from mpInfoLayer.

◆ DrawContent()

void mpInfoLegend::DrawContent ( wxDC &  dc,
mpWindow w 
)

Draw the content of info legend to plot.

Parameters
dcthe device context where to plot
wParent mpWindow from which to obtain information

◆ DrawDraggedSeries()

void mpInfoLegend::DrawDraggedSeries ( wxDC &  dc,
mpWindow w 
)

When a series is being dragged, draw a rectangle with its name at the mouse cursor.

Will draw directly to dc via Blit to make it responsive, and also makes sure that no dragging tail stays by always storing and restoring a clean background

Parameters
dcthe device context where to plot
wParent mpWindow from which to obtain information

◆ GetLegendHitRegion()

int mpInfoLegend::GetLegendHitRegion ( wxPoint  mousePos)

Checks if mouse is inside legend and if it hovers the header or any of the series If a series is hovered, return its index.

If the header is hovered, return HitHeader, otherwise return HitNone

Parameters
mousePosThe mouse position
Returns
Index of series or header hit. Return -1 if we are outside the legend

◆ IsDraggedSeriesShown()

bool mpInfoLegend::IsDraggedSeriesShown ( ) const
inline

Get shown status of dragged series.

Returns
Indicate if dragged series shall be shown

◆ RestoreAxisHighlighting()

void mpInfoLegend::RestoreAxisHighlighting ( mpWindow w)

Clear the dragged series rectangle from the plot and restores axis hovering indication.

Parameters
wthe window to plot

◆ SetItemDirection()

void mpInfoLegend::SetItemDirection ( mpLegendDirection  mode)
inline

Set item direction (may be vertical or horizontal)

Parameters
modeItem direction mode: mpVertical or mpHorizontal.

◆ SetItemMode()

void mpInfoLegend::SetItemMode ( mpLegendStyle  mode)
inline

Set item mode (the element on the left of text representing the plot line may be line, square, or line with symbol).

Parameters
modeItem draw mode: mpLegendLine, mpLegendSquare, or mpLegendSymbol.

◆ ShowDraggedSeries()

void mpInfoLegend::ShowDraggedSeries ( bool  active)
inline

Set if dragged series shall be shown or hidden.

Parameters
activeSet if shall be shown