30#include <magic_enum.hpp>
86 if( aStr ==
"single" )
88 else if( aStr ==
"diff_pair" )
90 else if( aStr ==
"diff_pair_skew" )
94 wxFAIL_MSG( wxS(
"Unknown length tuning token" ) );
107 default: wxFAIL;
return "";
114 switch( aRouterMode )
126 if( aStr ==
"default" )
128 else if( aStr ==
"left" )
130 else if( aStr ==
"right" )
134 wxFAIL_MSG( wxS(
"Unknown length-tuning side token" ) );
147 default: wxFAIL;
return "";
154 if( aStr ==
"too_long" )
156 else if( aStr ==
"too_short" )
158 else if( aStr ==
"tuned" )
162 wxFAIL_MSG( wxS(
"Unknown tuning status token" ) );
175 default: wxFAIL;
return "";
187 m_tuningMode( aMode ),
189 m_tuningStatus(
PNS::MEANDER_PLACER_BASE::TUNING_STATUS::TUNED ),
190 m_updateSideFromEnd( false )
192 m_generatorType = GENERATOR_TYPE;
193 m_name = DISPLAY_NAME;
236 std::optional<SHAPE_LINE_CHAIN>& aBaseLine )
312 return SHAPE_LINE_CHAIN();
323 return STRING_ANY_MAP();
340 bool aStatusItemsOnly )
342 std::vector<EDA_ITEM*> previewItems;
349 std::vector<MSG_PANEL_ITEM>& aList )
361#define HITTEST_THRESHOLD_PIXELS 5
constexpr EDA_IU_SCALE pcbIUScale
A base class derived from BOARD_ITEM for items that can be connected and have a net,...
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Information pertinent to a Pcbnew printed circuit board.
The base class for create windows for drawing purpose.
EDIT_POINTS is a VIEW_ITEM that manages EDIT_POINTs and EDIT_LINEs and draws them.
void Register(const wxString &aTypeStr, const wxString &aName, std::function< PCB_GENERATOR *(void)> aCreateFunc)
Associate a type string to display name and create function.
static GENERATORS_MGR & Instance()
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Handle the data for a net.
Common, abstract interface for edit frames.
bool initBaseLines(PNS::ROUTER *aRouter, int aPNSLayer, BOARD *aBoard)
const STRING_ANY_MAP GetProperties() const override
static const wxString DISPLAY_NAME
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
bool initBaseLine(PNS::ROUTER *aRouter, int aPNSLayer, BOARD *aBoard, VECTOR2I &aStart, VECTOR2I &aEnd, NETINFO_ITEM *aNet, std::optional< SHAPE_LINE_CHAIN > &aBaseLine)
PCB_TUNING_PATTERN(BOARD_ITEM *aParent=nullptr, PCB_LAYER_ID aLayer=F_Cu, LENGTH_TUNING_MODE aMode=LENGTH_TUNING_MODE::SINGLE)
bool recoverBaseline(PNS::ROUTER *aRouter)
std::vector< EDA_ITEM * > GetPreviewItems(GENERATOR_TOOL *aTool, PCB_BASE_EDIT_FRAME *aFrame, bool aStatusItemsOnly=false) override
void EditStart(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit) override
static const wxString GENERATOR_TYPE
bool resetToBaseline(GENERATOR_TOOL *aTool, int aPNSLayer, SHAPE_LINE_CHAIN &aBaseLine, bool aPrimary)
bool MakeEditPoints(EDIT_POINTS &points) const override
void SetProperties(const STRING_ANY_MAP &aProps) override
void ViewDraw(int aLayer, KIGFX::VIEW *aView) const override final
Draw the parts of the object belonging to layer aLayer.
void Remove(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit) override
bool UpdateFromEditPoints(EDIT_POINTS &aEditPoints) override
void ShowPropertiesDialog(PCB_BASE_EDIT_FRAME *aEditFrame) override
bool Update(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit) override
bool UpdateEditPoints(EDIT_POINTS &aEditPoints) override
void EditCancel(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit) override
bool removeToBaseline(PNS::ROUTER *aRouter, int aPNSLayer, SHAPE_LINE_CHAIN &aBaseLine)
void EditFinish(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit) override
SHAPE_LINE_CHAIN getOutline() const
static PCB_TUNING_PATTERN * CreateNew(GENERATOR_TOOL *aTool, PCB_BASE_EDIT_FRAME *aFrame, BOARD_CONNECTED_ITEM *aStartItem, LENGTH_TUNING_MODE aMode)
TUNING_STATUS
< Result of the length tuning operation
RAII class that sets an value at construction and resets it to the original value at destruction.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
A name/value tuple with unique names and wxAny values.
a few functions useful in geometry calculations.
PCB_LAYER_ID
A quick note on layer IDs:
static PNS::MEANDER_SIDE sideFromString(const std::string &aStr)
static LENGTH_TUNING_MODE tuningFromString(const std::string &aStr)
static std::string tuningToString(const LENGTH_TUNING_MODE aTuning)
static LENGTH_TUNING_MODE fromPNSMode(PNS::ROUTER_MODE aRouterMode)
static PNS::MEANDER_PLACER_BASE::TUNING_STATUS statusFromString(const std::string &aStr)
static std::string sideToString(const PNS::MEANDER_SIDE aValue)
static std::string statusToString(const PNS::MEANDER_PLACER_BASE::TUNING_STATUS aStatus)
static PNS::LINKED_ITEM * pickSegment(PNS::ROUTER *aRouter, const VECTOR2I &aWhere, int aLayer, VECTOR2I &aPointOut, const SHAPE_LINE_CHAIN &aBaseline=SHAPE_LINE_CHAIN())
static std::optional< PNS::LINE > getPNSLine(const VECTOR2I &aStart, const VECTOR2I &aEnd, PNS::ROUTER *router, int layer, VECTOR2I &aStartOut, VECTOR2I &aEndOut)
Push and Shove diff pair dimensions (gap) settings dialog.
@ PNS_MODE_TUNE_DIFF_PAIR
@ PNS_MODE_TUNE_DIFF_PAIR_SKEW
Class to handle a set of BOARD_ITEMs.
static GENERATORS_MGR::REGISTER< PCB_TUNING_PATTERN > registerMe
SCOPED_SET_RESET< DRAWING_TOOL::MODE > SCOPED_DRAW_MODE
static REGISTER_LEGACY_TUNING_PATTERN< PCB_TUNING_PATTERN > registerMeToo
Static helper to register a generator.
REGISTER_LEGACY_TUNING_PATTERN()
VECTOR2< int32_t > VECTOR2I