KiCad PCB EDA Suite
sch_sheet_pin.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
5  * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
25 #ifndef _SCH_SHEEET_PIN_H_
26 #define _SCH_SHEEET_PIN_H_
27 
28 #include <sch_text.h>
29 
30 class KIID;
31 class LINE_READER;
32 class SCH_SHEET;
33 
34 
45 enum class SHEET_SIDE
46 {
47  LEFT = 0,
48  RIGHT,
49  TOP,
50  BOTTOM,
51  UNDEFINED
52 };
53 
54 
66 {
67 public:
68  SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos = wxPoint( 0, 0 ),
69  const wxString& text = wxEmptyString );
70 
71  // Do not create a copy constructor. The one generated by the compiler is adequate.
72 
74 
75  static inline bool ClassOf( const EDA_ITEM* aItem )
76  {
77  return aItem && SCH_SHEET_PIN_T == aItem->Type();
78  }
79 
80  wxString GetClass() const override
81  {
82  return wxT( "SCH_SHEET_PIN" );
83  }
84 
85  bool operator ==( const SCH_SHEET_PIN* aPin ) const;
86 
88  {
89  switch( aSide )
90  {
95  default: return SHEET_SIDE::UNDEFINED;
96  }
97  }
98 
105  bool IsMovableFromAnchorPoint() const override { return true; }
106 
107  void Print( const RENDER_SETTINGS* aSettings, const wxPoint& aOffset ) override;
108 
115  void CreateGraphicShape( const RENDER_SETTINGS* aSettings,
116  std::vector <wxPoint>& aPoints, const wxPoint& aPos ) const override;
117 
118  void SwapData( SCH_ITEM* aItem ) override;
119 
120  int GetPenWidth() const override;
121 
127  int GetNumber() const { return m_number; }
128 
134  void SetNumber( int aNumber );
135 
136  void SetSide( SHEET_SIDE aEdge );
137 
138  SHEET_SIDE GetSide() const;
139 
144  void ConstrainOnEdge( wxPoint Pos );
145 
152  SCH_SHEET* GetParent() const { return (SCH_SHEET*) m_parent; }
153 
154 #if defined(DEBUG)
155  void Show( int nestLevel, std::ostream& os ) const override;
156 #endif
157 
158  // Geometric transforms (used in block operations):
159 
160  void Move( const wxPoint& aMoveVector ) override
161  {
162  Offset( aMoveVector );
163  }
164 
165  void MirrorVertically( int aCenter ) override;
166  void MirrorHorizontally( int aCenter ) override;
167  void Rotate( const wxPoint& aCenter ) override;
168 
169  bool Matches( const wxFindReplaceData& aSearchData, void* aAuxData ) const override
170  {
171  return SCH_ITEM::Matches( GetText(), aSearchData );
172  }
173 
174  bool Replace( const wxFindReplaceData& aSearchData, void* aAuxData = nullptr ) override
175  {
176  return EDA_TEXT::Replace( aSearchData );
177  }
178 
179  bool IsReplaceable() const override { return true; }
180 
181  void GetEndPoints( std::vector< DANGLING_END_ITEM >& aItemList ) override;
182 
183  bool IsConnectable() const override { return true; }
184 
185  wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
186 
187  BITMAPS GetMenuImage() const override;
188 
189  void SetPosition( const wxPoint& aPosition ) override { ConstrainOnEdge( aPosition ); }
190 
191  bool IsPointClickableAnchor( const wxPoint& aPos ) const override
192  {
193  return m_isDangling && GetPosition() == aPos;
194  }
195 
196  bool HitTest( const wxPoint& aPosition, int aAccuracy = 0 ) const override;
197 
198  EDA_ITEM* Clone() const override;
199 
200 private:
201  int m_number;
202 
207 };
208 
209 #endif // _SCH_SHEEET_PIN_H_
bool Replace(const wxFindReplaceData &aSearchData, void *aAuxData=nullptr) override
Perform a text replace using the find and replace criteria in aSearchData on items that support text ...
bool IsPointClickableAnchor(const wxPoint &aPos) const override
void Offset(const wxPoint &aOffset)
Definition: eda_text.h:273
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:478
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition: richio.h:80
virtual bool Matches(const wxFindReplaceData &aSearchData, void *aAuxData) const
Compare the item against the search criteria in aSearchData.
Definition: eda_item.h:364
static SHEET_SIDE GetOppositeSide(SHEET_SIDE aSide)
Definition: sch_sheet_pin.h:87
SCH_SHEET * GetParent() const
Get the parent sheet object of this sheet pin.
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
SCH_SHEET_PIN(SCH_SHEET *parent, const wxPoint &pos=wxPoint(0, 0), const wxString &text=wxEmptyString)
void SetSide(SHEET_SIDE aEdge)
bool m_isDangling
True if not connected to another object if the object derive from SCH_TEXT supports connections.
Definition: sch_text.h:264
bool Replace(const wxFindReplaceData &aSearchData)
Helper function used in search and replace dialog.
Definition: eda_text.cpp:180
wxString GetClass() const override
Return the class name.
Definition: sch_sheet_pin.h:80
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
bool IsConnectable() const override
bool IsReplaceable() const override
Override this method in any derived object that supports test find and replace.
bool Matches(const wxFindReplaceData &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
bool HitTest(const wxPoint &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void CreateGraphicShape(const RENDER_SETTINGS *aSettings, std::vector< wxPoint > &aPoints, const wxPoint &aPos) const override
Calculate the graphic shape (a polygon) associated to the text.
void Rotate(const wxPoint &aCenter) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
Definition: kiid.h:44
bool IsMovableFromAnchorPoint() const override
Return true for items which are moved with the anchor point at mouse cursor and false for items moved...
SHEET_SIDE GetSide() const
void Print(const RENDER_SETTINGS *aSettings, const wxPoint &aOffset) override
Print a schematic item.
void Move(const wxPoint &aMoveVector) override
Move the item by aMoveVector to a new position.
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:65
int GetNumber() const
Get the sheet label number.
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
void ConstrainOnEdge(wxPoint Pos)
Adjust label position to edge based on proximity to vertical or horizontal edge of the parent sheet.
wxPoint GetPosition() const override
Definition: sch_text.h:241
int GetPenWidth() const override
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:54
EDA_UNITS
Definition: eda_units.h:38
void SetPosition(const wxPoint &aPosition) override
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void SetNumber(int aNumber)
Set the sheet label number.
BITMAPS
A list of all bitmap identifiers.
Definition: bitmaps_list.h:32
void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList) override
Add the schematic item end points to aItemList if the item has end points.
int m_number
Label number use for saving sheet label to file.
bool operator==(const SCH_SHEET_PIN *aPin) const
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:99
void SwapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
wxString GetSelectMenuText(EDA_UNITS aUnits) const override
Return the text to display to be used in the selection clarification context menu when multiple items...
SHEET_SIDE
Define the edge of the sheet that the sheet pin is positioned.
Definition: sch_sheet_pin.h:45
static bool ClassOf(const EDA_ITEM *aItem)
Definition: sch_sheet_pin.h:75
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:182
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:154
SHEET_SIDE m_edge
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:112