Make sure legend reflects gain/phase for AC small signal analyses.

Fixes https://gitlab.com/kicad/code/kicad/issues/14301

(cherry picked from commit ec6d709929)
This commit is contained in:
Jeff Young 2023-03-19 23:02:23 +00:00
parent 57aa61f1ba
commit 3afe02ac1f
3 changed files with 33 additions and 12 deletions

View File

@ -344,7 +344,7 @@ void mpInfoLegend::Plot( wxDC& dc, mpWindow& w )
if( layer->GetLayerType() == mpLAYER_PLOT && layer->IsVisible() )
{
label = layer->GetName();
label = layer->GetDisplayName();
dc.GetTextExtent( label, &tmpX, &tmpY );
textX = ( textX > tmpX + baseWidth ) ? textX : tmpX + baseWidth + mpLEGEND_MARGIN;
textY += tmpY;
@ -367,7 +367,7 @@ void mpInfoLegend::Plot( wxDC& dc, mpWindow& w )
if( layer->GetLayerType() == mpLAYER_PLOT && layer->IsVisible() )
{
label = layer->GetName();
label = layer->GetDisplayName();
lpen = layer->GetPen();
dc.GetTextExtent( label, &tmpX, &tmpY );
dc.SetPen( lpen );

View File

@ -105,6 +105,20 @@ public:
SetContinuity( true );
SetDrawOutsideMargins( false );
ShowName( false );
SetName( aName );
}
void SetName( const wxString& aName ) override
{
mpFXYVector::SetName( aName );
if( m_type & SPT_AC_MAG )
m_displayName = aName + _( " (mag)" );
else if( m_type & SPT_AC_PHASE )
m_displayName = aName + _( " (phase)" );
else
m_displayName = aName;
}
/**

View File

@ -237,6 +237,11 @@ public:
*/
const wxString& GetName() const { return m_name; }
const wxString& GetDisplayName() const
{
return m_displayName.IsEmpty() ? m_name : m_displayName;
}
/** Get font set for this layer.
* @return Font
*/
@ -264,7 +269,7 @@ public:
/** Set layer name
* @param name Name, will be copied to internal class member
*/
void SetName( wxString name ) { m_name = name; }
virtual void SetName( const wxString& name ) { m_name = name; }
/** Set layer font
* @param font Font, will be copied to internal class member
@ -311,15 +316,17 @@ public:
protected:
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
wxFont m_font; // !< Layer's font
wxPen m_pen; // !< Layer's pen
wxBrush m_brush; // !< Layer's brush
wxString m_name; // !< Layer's name
wxString m_displayName;
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
DECLARE_DYNAMIC_CLASS( mpLayer )
};