pcbnew: implement GetEffectiveShape() for tracks/vias/arcs/texts
This commit is contained in:
parent
6358995ff8
commit
f6ea753968
|
@ -245,6 +245,12 @@ void TEXTE_PCB::SwapData( BOARD_ITEM* aImage )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<SHAPE> TEXTE_PCB::GetEffectiveShape( PCB_LAYER_ID aLayer ) const
|
||||||
|
{
|
||||||
|
return GetEffectiveTextShape();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct TEXTE_PCB_DESC
|
static struct TEXTE_PCB_DESC
|
||||||
{
|
{
|
||||||
TEXTE_PCB_DESC()
|
TEXTE_PCB_DESC()
|
||||||
|
|
|
@ -127,6 +127,9 @@ public:
|
||||||
void TransformShapeWithClearanceToPolygonSet(
|
void TransformShapeWithClearanceToPolygonSet(
|
||||||
SHAPE_POLY_SET& aCornerBuffer, int aClearanceValue, int aError = ARC_HIGH_DEF ) const;
|
SHAPE_POLY_SET& aCornerBuffer, int aClearanceValue, int aError = ARC_HIGH_DEF ) const;
|
||||||
|
|
||||||
|
// @copydoc BOARD_ITEM::GetEffectiveShape
|
||||||
|
virtual std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER ) const override;
|
||||||
|
|
||||||
wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
|
wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
|
||||||
|
|
||||||
BITMAP_DEF GetMenuImage() const override;
|
BITMAP_DEF GetMenuImage() const override;
|
||||||
|
|
|
@ -453,6 +453,12 @@ wxString TEXTE_MODULE::GetShownText( int aDepth ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<SHAPE> TEXTE_MODULE::GetEffectiveShape( PCB_LAYER_ID aLayer ) const
|
||||||
|
{
|
||||||
|
return GetEffectiveTextShape();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct TEXTE_MODULE_DESC
|
static struct TEXTE_MODULE_DESC
|
||||||
{
|
{
|
||||||
TEXTE_MODULE_DESC()
|
TEXTE_MODULE_DESC()
|
||||||
|
|
|
@ -41,7 +41,7 @@ class EDA_RECT;
|
||||||
class MODULE;
|
class MODULE;
|
||||||
class MSG_PANEL_ITEM;
|
class MSG_PANEL_ITEM;
|
||||||
class PCB_BASE_FRAME;
|
class PCB_BASE_FRAME;
|
||||||
|
class SHAPE;
|
||||||
|
|
||||||
#define UMBILICAL_COLOR LIGHTBLUE
|
#define UMBILICAL_COLOR LIGHTBLUE
|
||||||
|
|
||||||
|
@ -208,6 +208,9 @@ public:
|
||||||
return TextHitTest( aRect, aContained, aAccuracy );
|
return TextHitTest( aRect, aContained, aAccuracy );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @copydoc BOARD_ITEM::GetEffectiveShape
|
||||||
|
virtual std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER ) const override;
|
||||||
|
|
||||||
wxString GetClass() const override
|
wxString GetClass() const override
|
||||||
{
|
{
|
||||||
return wxT( "MTEXT" );
|
return wxT( "MTEXT" );
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
#include <settings/color_settings.h>
|
#include <settings/color_settings.h>
|
||||||
#include <settings/settings_manager.h>
|
#include <settings/settings_manager.h>
|
||||||
|
|
||||||
|
#include <geometry/shape_segment.h>
|
||||||
|
#include <geometry/shape_circle.h>
|
||||||
|
#include <geometry/shape_arc.h>
|
||||||
|
|
||||||
TRACK::TRACK( BOARD_ITEM* aParent, KICAD_T idtype ) :
|
TRACK::TRACK( BOARD_ITEM* aParent, KICAD_T idtype ) :
|
||||||
BOARD_CONNECTED_ITEM( aParent, idtype )
|
BOARD_CONNECTED_ITEM( aParent, idtype )
|
||||||
|
@ -1024,6 +1027,33 @@ bool TRACK::cmp_tracks::operator() ( const TRACK* a, const TRACK* b ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<SHAPE> TRACK::GetEffectiveShape( PCB_LAYER_ID aLayer ) const
|
||||||
|
{
|
||||||
|
std::shared_ptr<SHAPE_SEGMENT> shape( new SHAPE_SEGMENT( m_Start, m_End, m_Width ) );
|
||||||
|
|
||||||
|
return shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<SHAPE> VIA::GetEffectiveShape( PCB_LAYER_ID aLayer ) const
|
||||||
|
{
|
||||||
|
// fixme: pad stack support (depending on aLayer )
|
||||||
|
std::shared_ptr<SHAPE_CIRCLE> shape( new SHAPE_CIRCLE( m_Start, m_Width / 2 ) );
|
||||||
|
|
||||||
|
return shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<SHAPE> ARC::GetEffectiveShape( PCB_LAYER_ID aLayer ) const
|
||||||
|
{
|
||||||
|
std::shared_ptr<SHAPE_ARC> shape( new SHAPE_ARC( GetStart(), GetMid(), GetEnd(),
|
||||||
|
GetWidth() ) );
|
||||||
|
|
||||||
|
return shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
wxString TRACK::ShowState( int stateBits )
|
wxString TRACK::ShowState( int stateBits )
|
||||||
|
|
|
@ -167,6 +167,10 @@ public:
|
||||||
void TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuffer, PCB_LAYER_ID aLayer,
|
void TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuffer, PCB_LAYER_ID aLayer,
|
||||||
int aClearanceValue, int aError = ARC_HIGH_DEF,
|
int aClearanceValue, int aError = ARC_HIGH_DEF,
|
||||||
bool ignoreLineWidth = false ) const override;
|
bool ignoreLineWidth = false ) const override;
|
||||||
|
|
||||||
|
// @copydoc BOARD_ITEM::GetEffectiveShape
|
||||||
|
virtual std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER ) const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IsPointOnEnds
|
* Function IsPointOnEnds
|
||||||
* returns STARTPOINT if point if near (dist = min_dist) start point, ENDPOINT if
|
* returns STARTPOINT if point if near (dist = min_dist) start point, ENDPOINT if
|
||||||
|
|
Loading…
Reference in New Issue