42#define SCALING_FACTOR schIUScale.mmToIU( 0.15 )
92 std::shared_ptr<ERC_ITEM>
erc = std::static_pointer_cast<ERC_ITEM>(
m_rcItem );
93 wxString sheetSpecificPath, mainItemPath, auxItemPath;
95 if(
erc->IsSheetSpecific() )
96 sheetSpecificPath =
erc->GetSpecificSheetPath().Path().AsString();
98 if(
erc->MainItemHasSheetPath() )
99 mainItemPath =
erc->GetMainItemSheetPath().Path().AsString();
101 if(
erc->AuxItemHasSheetPath() )
102 auxItemPath =
erc->GetAuxItemSheetPath().Path().AsString();
116 if( parent && parent->
IsType( { SCH_SYMBOL_T, SCH_LABEL_T, SCH_SHEET_T } ) )
120 return wxString::Format( wxT(
"%s|%d|%d|%s|%s|%s|%s|%s" ),
133 return wxString::Format( wxT(
"%s|%d|%d|%s|%s|%s|%s|%s" ),
137 m_rcItem->GetMainItemID().AsString(),
138 m_rcItem->GetAuxItemID().AsString(),
146 const wxString& data )
148 wxArrayString props = wxSplit( data,
'|' );
149 VECTOR2I markerPos( (
int) strtol( props[1].c_str(),
nullptr, 10 ),
150 (
int) strtol( props[2].c_str(),
nullptr, 10 ) );
165 if( !props[4].IsEmpty() )
176 if( text_item->GetText() == props[4] )
194 if( text_item->GetText() == props[4] )
202 ercItem->SetItems( uuid );
208 ercItem->SetItems(
KIID( props[3] ) );
213 ercItem->SetItems(
KIID( props[3] ),
KIID( props[4] ) );
216 bool isLegacyMarker =
true;
222 if( props.size() == 8 )
224 isLegacyMarker =
false;
226 if( !props[5].IsEmpty() )
228 KIID_PATH sheetSpecificKiidPath( props[5] );
229 std::optional<SCH_SHEET_PATH> sheetSpecificPath =
232 if( sheetSpecificPath.has_value() )
233 ercItem->SetSheetSpecificPath( sheetSpecificPath.value() );
236 if( !props[6].IsEmpty() )
239 std::optional<SCH_SHEET_PATH> mainItemPath =
242 if( mainItemPath.has_value() )
244 if( props[7].IsEmpty() )
246 ercItem->SetItemsSheetPaths( mainItemPath.value() );
251 std::optional<SCH_SHEET_PATH> auxItemPath =
254 if( auxItemPath.has_value() )
255 ercItem->SetItemsSheetPaths( mainItemPath.value(), auxItemPath.value() );
270void SCH_MARKER::Show(
int nestLevel, std::ostream& os )
const
273 NestedSpace( nestLevel, os ) <<
'<' <<
GetClass().Lower().mb_str() <<
GetPos() <<
"/>\n";
281 wxCHECK2_MSG(
Schematic(),
return {},
"No SCHEMATIC set for SCH_MARKER!" );
284 std::shared_ptr<ERC_ITEM> ercItem = std::static_pointer_cast<ERC_ITEM>(
GetRCItem() );
286 if( ercItem->IsSheetSpecific()
287 && ( ercItem->GetSpecificSheetPath() !=
Schematic()->CurrentSheet() ) )
292 std::vector<int> layers( 2 );
360 aList.emplace_back(
_(
"Type" ),
_(
"Marker" ) );
361 aList.emplace_back(
_(
"Violation" ),
m_rcItem->GetErrorMessage() );
366 aList.emplace_back(
_(
"Severity" ),
_(
"Ignore" ) );
369 aList.emplace_back(
_(
"Severity" ),
_(
"Warning" ) );
372 aList.emplace_back(
_(
"Severity" ),
_(
"Error" ) );
380 aList.emplace_back(
_(
"Drawing Sheet" ), wxEmptyString );
401 aList.emplace_back( mainText, auxText );
405 aList.emplace_back(
_(
"Excluded" ),
m_comment );
BITMAPS
A list of all bitmap identifiers.
The base class for create windows for drawing purpose.
virtual EDA_ITEM * ResolveItem(const KIID &aId, bool aAllowNullptrReturn=false) const
Fetch an item by KIID.
virtual wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const
Return a user-visible description string of this item.
KICAD_T Type() const
Returns the type of object.
virtual bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const
Compare the item against the search criteria in aSearchData.
EDA_ITEM * GetParent() const
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
virtual const wxString & GetText() const
Return the string associated with the text object.
static std::shared_ptr< ERC_ITEM > Create(int aErrorCode)
Constructs an ERC_ITEM for the given error code.
SEVERITY GetSeverity(int aErrorCode) const
A color representation with 4 components: red, green, blue, alpha.
wxString AsString() const
bool HitTestMarker(const VECTOR2I &aHitPosition, int aAccuracy) const
Test if the given VECTOR2I is within the bounds of this object.
std::shared_ptr< RC_ITEM > GetRCItem() const
int m_scalingFactor
Scaling factor to convert corners coordinates to internal units.
wxString m_comment
User supplied comment.
const VECTOR2I & GetPos() const
VECTOR2I m_Pos
Position of the marker.
MARKER_T m_markerType
The type of marker.
bool m_excluded
User has excluded this specific error.
std::shared_ptr< RC_ITEM > m_rcItem
enum MARKER_T GetMarkerType() const
BOX2I m_shapeBoundingBox
Bounding box of the graphic symbol relative to the position of the shape in marker shape units.
MARKER_BASE(int aScalingFactor, std::shared_ptr< RC_ITEM > aItem, MARKER_T aType=MARKER_UNSPEC)
BOX2I GetBoundingBoxMarker() const
Return the orthogonal, bounding box of this object for display purposes.
SCH_ITEM * ResolveItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr, bool aAllowNullptrReturn=false) const
ERC_SETTINGS & ErcSettings() const
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode)
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
bool IsType(const std::vector< KICAD_T > &aScanTypes) const override
Check whether the item is one of the listed types.
SEVERITY GetSeverity() const override
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxDat) const override
Compare DRC marker main and auxiliary text against search string.
wxString GetClass() const override
Return the class name.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
static SCH_MARKER * DeserializeFromString(const SCH_SHEET_LIST &aSheetList, const wxString &data)
bool m_isLegacyMarker
True if marker was deserialized from a file version < 20230121.
void SetIsLegacyMarker(bool isLegacyMarker=true)
Set this marker as a legacy artifact.
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
SCH_LAYER_ID GetColorLayer() const
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
std::vector< int > ViewGetLayers() const override
Return the layers the item is drawn on (which may be more than its "home" layer)
wxString SerializeToString() const
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
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.
KIGFX::COLOR4D getColor() const override
BOX2I const GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
SCH_MARKER(std::shared_ptr< ERC_ITEM > aItem, const VECTOR2I &aPos)
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
std::optional< SCH_SHEET_PATH > GetSheetPathByKIIDPath(const KIID_PATH &aPath, bool aIncludeLastSheet=true) const
Finds a SCH_SHEET_PATH that matches the provided KIID_PATH.
SCH_ITEM * ResolveItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr, bool aAllowNullptrReturn=false) const
Fetch a SCH_ITEM by ID.
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
@ ERCE_UNRESOLVED_VARIABLE
A text variable could not be resolved.
SCH_LAYER_ID
Eeschema drawing layers.
@ LAYER_SELECTION_SHADOWS
Message panel definition file.
#define SCALING_FACTOR
Factor to convert the maker unit shape to internal units:
Functions to provide common constants and other functions to assist in making a consistent UI.
VECTOR2< int32_t > VECTOR2I