#include <mathplot.h>
Public Member Functions | |
mpLayer () | |
virtual | ~mpLayer () |
virtual bool | HasBBox () |
virtual bool | IsInfo () |
virtual double | GetMinX () |
virtual double | GetMaxX () |
virtual double | GetMinY () |
virtual double | GetMaxY () |
virtual void | Plot (wxDC &dc, mpWindow &w)=0 |
wxString | GetName () const |
const wxFont & | GetFont () const |
const wxPen & | GetPen () const |
void | SetContinuity (bool continuity) |
bool | GetContinuity () const |
void | ShowName (bool show) |
void | SetName (wxString name) |
void | SetFont (wxFont &font) |
void | SetPen (wxPen pen) |
void | SetDrawOutsideMargins (bool drawModeOutside) |
bool | GetDrawOutsideMargins () |
wxBitmap | GetColourSquare (int side=16) |
mpLayerType | GetLayerType () |
bool | IsVisible () |
void | SetVisible (bool show) |
const wxBrush & | GetBrush () const |
void | SetBrush (wxBrush brush) |
Protected Attributes | |
wxFont | m_font |
Layer's font. | |
wxPen | m_pen |
Layer's pen. | |
wxBrush | m_brush |
Layer's brush. | |
wxString | m_name |
Layer's name. | |
bool | m_continuous |
Specify if the layer will be plotted as a continuous line or a set of points. | |
bool | m_showName |
States whether the name of the layer must be shown (default is true). | |
bool | m_drawOutsideMargins |
select if the layer should draw only inside margins or over all DC | |
mpLayerType | m_type |
Define layer type, which is assigned by constructor. | |
bool | m_visible |
Toggles layer visibility. |
Plot layer, abstract base class. Any number of mpLayer implementations can be attached to mpWindow. Examples for mpLayer implementations are function graphs, or scale rulers.
For convenience mpLayer defines a name, a font (wxFont), a pen (wxPen), and a continuity property (bool) as class members. The default values at constructor are the default font, a black pen, and continuity set to false (draw separate points). These may or may not be used by implementations.
mpLayer::mpLayer | ( | ) |
virtual mpLayer::~mpLayer | ( | ) | [inline, virtual] |
const wxBrush& mpLayer::GetBrush | ( | ) | const [inline] |
Get brush set for this layer.
wxBitmap mpLayer::GetColourSquare | ( | int | side = 16 |
) |
Get a small square bitmap filled with the colour of the pen used in the layer. Useful to create legends or similar reference to the layers.
side | side length in pixels |
References m_pen.
bool mpLayer::GetContinuity | ( | ) | const [inline] |
Gets the 'continuity' property of the layer.
bool mpLayer::GetDrawOutsideMargins | ( | ) | [inline] |
Get Draw mode: inside or outside margins.
const wxFont& mpLayer::GetFont | ( | ) | const [inline] |
Get font set for this layer.
mpLayerType mpLayer::GetLayerType | ( | ) | [inline] |
Get layer type: a Layer can be of different types: plot lines, axis, info boxes, etc, this method returns the right value.
Referenced by mpInfoLegend::Plot().
virtual double mpLayer::GetMaxX | ( | ) | [inline, virtual] |
Get inclusive right border of bounding box.
Reimplemented in mpFXYVector, mpMovableObject, and mpBitmapLayer.
Referenced by mpWindow::UpdateBBox().
virtual double mpLayer::GetMaxY | ( | ) | [inline, virtual] |
Get inclusive top border of bounding box.
Reimplemented in mpFXYVector, mpMovableObject, and mpBitmapLayer.
Referenced by mpWindow::UpdateBBox().
virtual double mpLayer::GetMinX | ( | ) | [inline, virtual] |
Get inclusive left border of bounding box.
Reimplemented in mpFXYVector, mpMovableObject, and mpBitmapLayer.
Referenced by mpWindow::UpdateBBox().
virtual double mpLayer::GetMinY | ( | ) | [inline, virtual] |
Get inclusive bottom border of bounding box.
Reimplemented in mpFXYVector, mpMovableObject, and mpBitmapLayer.
Referenced by mpWindow::UpdateBBox().
wxString mpLayer::GetName | ( | ) | const [inline] |
const wxPen& mpLayer::GetPen | ( | ) | const [inline] |
virtual bool mpLayer::HasBBox | ( | ) | [inline, virtual] |
Check whether this layer has a bounding box. The default implementation returns TRUE. Override and return FALSE if your mpLayer implementation should be ignored by the calculation of the global bounding box for all layers in a mpWindow.
TRUE | Has bounding box | |
FALSE | Has not bounding box |
Reimplemented in mpInfoLayer, mpScaleX, mpScaleY, mpText, mpMovableObject, and mpBitmapLayer.
Referenced by mpWindow::UpdateBBox().
virtual bool mpLayer::IsInfo | ( | ) | [inline, virtual] |
Check whether the layer is an info box. The default implementation returns FALSE. It is overrided to TRUE for mpInfoLayer class and its derivative. It is necessary to define mouse actions behaviour over info boxes.
Reimplemented in mpInfoLayer.
bool mpLayer::IsVisible | ( | ) | [inline] |
Checks whether the layer is visible or not.
Referenced by mpWindow::IsLayerVisible(), and mpInfoLegend::Plot().
virtual void mpLayer::Plot | ( | wxDC & | dc, | |
mpWindow & | w | |||
) | [pure virtual] |
Plot given view of layer to the given device context. An implementation of this function has to transform layer coordinates to wxDC coordinates based on the view parameters retrievable from the mpWindow passed in w. Note that the public methods of mpWindow: x2p,y2p and p2x,p2y are already provided which transform layer coordinates to DC pixel coordinates, and user code should rely on them for portability and future changes to be applied transparently, instead of implementing the following formulas manually.
The passed device context dc has its coordinate origin set to the top-left corner of the visible area (the default). The coordinate orientation is as shown in the following picture:
(wxDC origin 0,0) x-------------> ascending X ----------------+ | | | | V ascending Y | | | | | | | +-------------------------------------------+ <-- right-bottom corner of the mpWindow visible area.
Note that Y ascends in downward direction, whereas the usual vertical orientation for mathematical plots is vice versa. Thus Y-orientation will be swapped usually, when transforming between wxDC and mpLayer coordinates. This change of coordinates is taken into account in the methods p2x,p2y,x2p,y2p.
Rules for transformation between mpLayer and wxDC coordinates
dc_X = (layer_X - mpWindow::GetPosX()) * mpWindow::GetScaleX() dc_Y = (mpWindow::GetPosY() - layer_Y) * mpWindow::GetScaleY() // swapping Y-orientation layer_X = (dc_X / mpWindow::GetScaleX()) + mpWindow::GetPosX() // scale guaranteed to be not 0 layer_Y = mpWindow::GetPosY() - (dc_Y / mpWindow::GetScaleY()) // swapping Y-orientation
dc | Device context to plot to. | |
w | View to plot. The visible area can be retrieved from this object. |
Implemented in mpInfoLayer, mpInfoCoords, mpInfoLegend, mpFX, mpFY, mpFXY, mpProfile, mpScaleX, mpScaleY, mpText, mpMovableObject, and mpBitmapLayer.
Referenced by mpPrintout::OnPrintPage().
void mpLayer::SetBrush | ( | wxBrush | brush | ) | [inline] |
Set layer brush
brush | brush, will be copied to internal class member |
void mpLayer::SetContinuity | ( | bool | continuity | ) | [inline] |
Set the 'continuity' property of the layer (true:draws a continuous line, false:draws separate points).
void mpLayer::SetDrawOutsideMargins | ( | bool | drawModeOutside | ) | [inline] |
Set Draw mode: inside or outside margins. Default is outside, which allows the layer to draw up to the mpWindow border.
drawModeOutside | The draw mode to be set |
void mpLayer::SetFont | ( | wxFont & | font | ) | [inline] |
Set layer font
font | Font, will be copied to internal class member |
void mpLayer::SetName | ( | wxString | name | ) | [inline] |
Set layer name
name | Name, will be copied to internal class member |
void mpLayer::SetPen | ( | wxPen | pen | ) | [inline] |
Set layer pen
pen | Pen, will be copied to internal class member |
void mpLayer::SetVisible | ( | bool | show | ) | [inline] |
void mpLayer::ShowName | ( | bool | show | ) | [inline] |
Shows or hides the text label with the name of the layer (default is visible).
wxBrush mpLayer::m_brush [protected] |
Layer's brush.
Reimplemented in mpInfoLayer.
bool mpLayer::m_continuous [protected] |
Specify if the layer will be plotted as a continuous line or a set of points.
Referenced by mpMovableObject::Plot(), and mpFXY::Plot().
bool mpLayer::m_drawOutsideMargins [protected] |
select if the layer should draw only inside margins or over all DC
Referenced by mpScaleY::Plot(), mpScaleX::Plot(), mpProfile::Plot(), mpFXY::Plot(), mpFY::Plot(), and mpFX::Plot().
wxFont mpLayer::m_font [protected] |
Layer's font.
Referenced by mpBitmapLayer::Plot(), mpMovableObject::Plot(), mpText::Plot(), mpScaleY::Plot(), mpScaleX::Plot(), mpProfile::Plot(), mpFXY::Plot(), mpFY::Plot(), mpFX::Plot(), mpInfoLegend::Plot(), and mpInfoCoords::Plot().
wxString mpLayer::m_name [protected] |
Layer's name.
Referenced by mpBitmapLayer::Plot(), mpMovableObject::Plot(), mpScaleY::Plot(), mpScaleX::Plot(), mpProfile::Plot(), mpFXY::Plot(), mpFY::Plot(), and mpFX::Plot().
wxPen mpLayer::m_pen [protected] |
Layer's pen.
Referenced by GetColourSquare(), mpMovableObject::Plot(), mpText::Plot(), mpScaleY::Plot(), mpScaleX::Plot(), mpProfile::Plot(), mpFXY::Plot(), mpFY::Plot(), mpFX::Plot(), mpInfoLegend::Plot(), mpInfoCoords::Plot(), and mpInfoLayer::Plot().
bool mpLayer::m_showName [protected] |
States whether the name of the layer must be shown (default is true).
Referenced by mpBitmapLayer::Plot(), mpMovableObject::Plot(), mpFXY::Plot(), mpFY::Plot(), and mpFX::Plot().
mpLayerType mpLayer::m_type [protected] |
Define layer type, which is assigned by constructor.
Referenced by mpInfoLayer::mpInfoLayer().
bool mpLayer::m_visible [protected] |
Toggles layer visibility.
Referenced by mpBitmapLayer::Plot(), mpMovableObject::Plot(), mpText::Plot(), mpScaleY::Plot(), mpScaleX::Plot(), mpProfile::Plot(), mpFXY::Plot(), mpFY::Plot(), mpFX::Plot(), mpInfoLegend::Plot(), mpInfoCoords::Plot(), and mpInfoLayer::Plot().