forked from KiCad/kicad-source-mirror
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsch_marker.h
145 lines (110 loc) · 4.85 KB
/
sch_marker.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2004-2021 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef TYPE_SCH_MARKER_H_
#define TYPE_SCH_MARKER_H_
#include <erc/erc_item.h>
#include <sch_item.h>
#include <marker_base.h>
class SCH_MARKER : public SCH_ITEM, public MARKER_BASE
{
public:
SCH_MARKER( std::shared_ptr<ERC_ITEM> aItem, const VECTOR2I& aPos );
~SCH_MARKER();
// Do not create a copy constructor. The one generated by the compiler is adequate.
static inline bool ClassOf( const EDA_ITEM* aItem )
{
return aItem && SCH_MARKER_T == aItem->Type();
}
wxString GetClass() const override
{
return wxT( "SCH_MARKER" );
}
const KIID GetUUID() const override { return m_Uuid; }
void SwapData( SCH_ITEM* aItem ) override;
wxString SerializeToString() const;
static SCH_MARKER* DeserializeFromString( const SCH_SHEET_LIST& aSheetList, const wxString& data );
void ViewGetLayers( int aLayers[], int& aCount ) const override;
SCH_LAYER_ID GetColorLayer() const;
SEVERITY GetSeverity() const override;
void Print( const SCH_RENDER_SETTINGS* aSettings, int aUnit, int aBodyStyle,
const VECTOR2I& aOffset, bool aForceNoFill, bool aDimmed ) override;
void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override
{
// SCH_MARKERs should not be plotted. However, SCH_ITEM will fail an assertion if we
// do not confirm this by locally implementing a no-op Plot().
}
BOX2I const GetBoundingBox() const override;
// Geometric transforms (used in block operations):
void Move( const VECTOR2I& aMoveVector ) override
{
m_Pos += aMoveVector;
}
void MirrorHorizontally( int aCenter ) override;
void MirrorVertically( int aCenter ) override;
void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
/**
* Compare DRC marker main and auxiliary text against search string.
*
* @param[in] aSearchData is the criteria to search against.
* @param[in] aAuxData is the optional data required for the search or NULL if not used.
* @return True if the DRC main or auxiliary text matches the search criteria.
*/
bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxDat ) const override;
void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override
{
return wxString( _( "ERC Marker" ) );
}
BITMAPS GetMenuImage() const override;
VECTOR2I GetPosition() const override { return m_Pos; }
void SetPosition( const VECTOR2I& aPosition ) override { m_Pos = aPosition; }
bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
EDA_ITEM* Clone() const override;
/**
* Sets this marker as a legacy artifact. Legacy markers are those deserialized from a file
* version < 20230121
*/
void SetIsLegacyMarker( bool isLegacyMarker = true ) { m_isLegacyMarker = isLegacyMarker; }
/**
* Determines if this marker is legacy (i.e. does not store sheet paths for specific errors)
* @return True if marker deserialized from a file version < 20230121
*/
bool IsLegacyMarker() const { return m_isLegacyMarker; }
double Similarity( const SCH_ITEM& aOther ) const override
{
return 0.0;
}
bool operator==( const SCH_ITEM& aOther ) const override
{
return false;
}
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const override;
#endif
protected:
KIGFX::COLOR4D getColor() const override;
bool m_isLegacyMarker; /// True if marker was deserialized from a file version < 20230121
};
#endif // TYPE_SCH_MARKER_H_