KiCad PCB EDA Suite
sch_text.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-2017 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 
30 #ifndef CLASS_TEXT_LABEL_H
31 #define CLASS_TEXT_LABEL_H
32 
33 
34 #include <macros.h>
35 #include <eda_text.h>
36 #include <sch_item_struct.h>
37 
38 
39 class LINE_READER;
41 
42 
43 /* Shape/Type of SCH_HIERLABEL and SCH_GLOBALLABEL
44  * mainly used to handle the graphic associated shape
45  */
52 };
53 
54 
55 extern const char* SheetLabelType[]; /* names of types of labels */
56 
57 
58 class SCH_TEXT : public SCH_ITEM, public EDA_TEXT
59 {
60 protected:
62 
66 
77 
78 public:
79  SCH_TEXT( const wxPoint& pos = wxPoint( 0, 0 ),
80  const wxString& text = wxEmptyString,
81  KICAD_T aType = SCH_TEXT_T );
82 
89  SCH_TEXT( const SCH_TEXT& aText );
90 
91  ~SCH_TEXT() { }
92 
93  virtual wxString GetClass() const override
94  {
95  return wxT( "SCH_TEXT" );
96  }
97 
103  void IncrementLabel( int aIncrement );
104 
115  virtual void SetLabelSpinStyle( int aSpinStyle );
116  int GetLabelSpinStyle() const { return m_spin_style; }
117 
119 
120  void SetShape( PINSHEETLABEL_SHAPE aShape ) { m_shape = aShape; }
121 
128  virtual wxPoint GetSchematicTextOffset() const;
129 
130  virtual void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
131  GR_DRAWMODE draw_mode, COLOR4D Color = COLOR4D::UNSPECIFIED ) override;
132 
140  virtual void CreateGraphicShape( std::vector <wxPoint>& aPoints, const wxPoint& Pos )
141  {
142  aPoints.clear();
143  }
144 
145  virtual void SwapData( SCH_ITEM* aItem ) override;
146 
147  virtual const EDA_RECT GetBoundingBox() const override;
148 
149  virtual int GetPenSize() const override;
150 
151  // Geometric transforms (used in block operations):
152 
153  virtual void Move( const wxPoint& aMoveVector ) override
154  {
155  EDA_TEXT::Offset( aMoveVector );
156  }
157 
158  virtual void MirrorY( int aYaxis_position ) override;
159 
160  virtual void MirrorX( int aXaxis_position ) override;
161 
162  virtual void Rotate( wxPoint aPosition ) override;
163 
164  virtual bool Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint* aFindLocation ) override;
165 
166  virtual bool Replace( wxFindReplaceData& aSearchData, void* aAuxData = NULL ) override
167  {
168  return EDA_ITEM::Replace( aSearchData, m_Text );
169  }
170 
171  virtual bool IsReplaceable() const override { return true; }
172 
173  virtual void GetEndPoints( std::vector< DANGLING_END_ITEM >& aItemList ) override;
174 
175  virtual bool IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemList ) override;
176 
177  virtual bool IsDangling() const override { return m_isDangling; }
178 
179  virtual bool IsSelectStateChanged( const wxRect& aRect ) override;
180 
181  virtual void GetConnectionPoints( std::vector< wxPoint >& aPoints ) const override;
182 
183  virtual bool CanIncrementLabel() const override { return true; }
184 
185  virtual wxString GetSelectMenuText() const override;
186 
187  virtual BITMAP_DEF GetMenuImage() const override;
188 
189  virtual void GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
190  SCH_SHEET_PATH* aSheetPath ) override;
191 
192  virtual wxPoint GetPosition() const override { return EDA_TEXT::GetTextPos(); }
193 
194  virtual void SetPosition( const wxPoint& aPosition ) override { EDA_TEXT::SetTextPos( aPosition ); }
195 
196  virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const override;
197 
198  virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
199  int aAccuracy = 0 ) const override;
200 
201  virtual void Plot( PLOTTER* aPlotter ) override;
202 
203  virtual EDA_ITEM* Clone() const override;
204 
205  void GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList ) override;
206 
207 #if defined(DEBUG)
208  void Show( int nestLevel, std::ostream& os ) const override;
209 #endif
210 };
211 
212 
213 class SCH_LABEL : public SCH_TEXT
214 {
215 public:
216  SCH_LABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
217 
218  // Do not create a copy constructor. The one generated by the compiler is adequate.
219 
221 
222  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
223  GR_DRAWMODE draw_mode, COLOR4D Color = COLOR4D::UNSPECIFIED ) override;
224 
225  wxString GetClass() const override
226  {
227  return wxT( "SCH_LABEL" );
228  }
229 
230  void SetLabelSpinStyle( int aSpinStyle ) override;
231 
232  wxPoint GetSchematicTextOffset() const override;
233 
234  void MirrorX( int aXaxis_position ) override;
235 
236  void Rotate( wxPoint aPosition ) override;
237 
238  const EDA_RECT GetBoundingBox() const override;
239 
240  bool IsConnectable() const override { return true; }
241 
242  wxString GetSelectMenuText() const override;
243 
244  BITMAP_DEF GetMenuImage() const override;
245 
246  bool IsReplaceable() const override { return true; }
247 
248  EDA_ITEM* Clone() const override;
249 
250 private:
251  bool doIsConnected( const wxPoint& aPosition ) const override { return EDA_TEXT::GetTextPos() == aPosition; }
252 };
253 
254 
255 class SCH_GLOBALLABEL : public SCH_TEXT
256 {
257 public:
258  SCH_GLOBALLABEL( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
259 
260  // Do not create a copy constructor. The one generated by the compiler is adequate.
261 
263 
264  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
265  GR_DRAWMODE draw_mode, COLOR4D Color = COLOR4D::UNSPECIFIED ) override;
266 
267  wxString GetClass() const override
268  {
269  return wxT( "SCH_GLOBALLABEL" );
270  }
271 
272  void SetLabelSpinStyle( int aSpinStyle ) override;
273 
274  wxPoint GetSchematicTextOffset() const override;
275 
276  const EDA_RECT GetBoundingBox() const override;
277 
278  void CreateGraphicShape( std::vector <wxPoint>& aPoints, const wxPoint& aPos ) override;
279 
280  void MirrorY( int aYaxis_position ) override;
281 
282  void MirrorX( int aXaxis_position ) override;
283 
284  void Rotate( wxPoint aPosition ) override;
285 
286  bool IsConnectable() const override { return true; }
287 
288  wxString GetSelectMenuText() const override;
289 
290  BITMAP_DEF GetMenuImage() const override;
291 
292  EDA_ITEM* Clone() const override;
293 
294 private:
295  bool doIsConnected( const wxPoint& aPosition ) const override { return EDA_TEXT::GetTextPos() == aPosition; }
296 };
297 
298 
299 class SCH_HIERLABEL : public SCH_TEXT
300 {
301 public:
302  SCH_HIERLABEL( const wxPoint& pos = wxPoint( 0, 0 ),
303  const wxString& text = wxEmptyString,
305 
306  // Do not create a copy constructor. The one generated by the compiler is adequate.
307 
309 
310  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
311  GR_DRAWMODE draw_mode, COLOR4D Color = COLOR4D::UNSPECIFIED ) override;
312 
313  wxString GetClass() const override
314  {
315  return wxT( "SCH_HIERLABEL" );
316  }
317 
318  void SetLabelSpinStyle( int aSpinStyle ) override;
319 
320  wxPoint GetSchematicTextOffset() const override;
321 
322  void CreateGraphicShape( std::vector <wxPoint>& aPoints, const wxPoint& Pos ) override;
323 
324  const EDA_RECT GetBoundingBox() const override;
325 
326  void MirrorY( int aYaxis_position ) override;
327 
328  void MirrorX( int aXaxis_position ) override;
329 
330  void Rotate( wxPoint aPosition ) override;
331 
332  bool IsConnectable() const override { return true; }
333 
334  wxString GetSelectMenuText() const override;
335 
336  BITMAP_DEF GetMenuImage() const override;
337 
338  EDA_ITEM* Clone() const override;
339 
340 private:
341  bool doIsConnected( const wxPoint& aPosition ) const override { return EDA_TEXT::GetTextPos() == aPosition; }
342 };
343 
344 #endif /* CLASS_TEXT_LABEL_H */
wxString GetSelectMenuText() const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
Definition: sch_text.cpp:809
PINSHEETLABEL_SHAPE GetShape() const
Definition: sch_text.h:118
void Offset(const wxPoint &aOffset)
Definition: eda_text.h:229
BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
Definition: sch_text.cpp:817
void SetShape(PINSHEETLABEL_SHAPE aShape)
Definition: sch_text.h:120
Class LINE_READER is an abstract class from which implementation specific LINE_READERs may be derived...
Definition: richio.h:81
virtual bool HitTest(const wxPoint &aPosition, int aAccuracy) const override
Function HitTest tests if aPosition is contained within or on the bounding box of an item...
Definition: sch_text.cpp:538
wxString m_Text
Definition: eda_text.h:346
bool IsReplaceable() const override
Function IsReplaceable.
Definition: sch_text.h:246
virtual bool CanIncrementLabel() const override
Definition: sch_text.h:183
PNG memory record (file in memory).
Definition: bitmap_types.h:38
virtual void Draw(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode, COLOR4D Color=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
Definition: sch_text.cpp:344
virtual bool IsDangling() const override
Definition: sch_text.h:177
const wxPoint & GetTextPos() const
Definition: eda_text.h:224
virtual int GetPenSize() const override
Function GetPenSize virtual pure.
Definition: sch_text.cpp:326
Base schematic object class definition.
bool Replace(wxFindReplaceData &aSearchData, wxString &aText)
Helper function used in search and replace dialog Function Replace performs a text replace on aText u...
SCH_GLOBALLABEL(const wxPoint &pos=wxPoint(0, 0), const wxString &text=wxEmptyString)
Definition: sch_text.cpp:823
virtual bool IsReplaceable() const override
Function IsReplaceable.
Definition: sch_text.h:171
virtual void SetPosition(const wxPoint &aPosition) override
Function SetPosition set the schematic item position to aPosition.
Definition: sch_text.h:194
void GetMsgPanelInfo(std::vector< MSG_PANEL_ITEM > &aList) override
Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for displ...
Definition: sch_text.cpp:606
bool m_isDangling
True if not connected to another object if the object derive from SCH_TEXT supports connections...
Definition: sch_text.h:65
virtual bool Matches(wxFindReplaceData &aSearchData, void *aAuxData, wxPoint *aFindLocation) override
Function Matches compares the item against the search criteria in aSearchData.
Definition: sch_text.cpp:176
virtual void SetLabelSpinStyle(int aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:277
void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
Definition: sch_text.cpp:1431
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:223
int GetLabelSpinStyle() const
Definition: sch_text.h:116
void MirrorX(int aXaxis_position) override
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
Definition: sch_text.cpp:1414
wxPoint GetSchematicTextOffset() const override
Definition: sch_text.cpp:733
Definition of base KiCad text object.
void MirrorX(int aXaxis_position) override
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
Definition: sch_text.cpp:861
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
void MirrorY(int aYaxis_position) override
Function MirrorY mirrors item relative to the Y axis about aYaxis_position.
Definition: sch_text.cpp:1393
virtual void MirrorX(int aXaxis_position) override
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
Definition: sch_text.cpp:217
void Draw(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode, COLOR4D Color=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
Definition: sch_text.cpp:778
BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
Definition: sch_text.cpp:1186
This file contains miscellaneous commonly used macros and functions.
virtual void Move(const wxPoint &aMoveVector) override
Function Move moves the item by aMoveVector to a new position.
Definition: sch_text.h:153
Class NETLIST_OBJECT_LIST is a container holding and owning NETLIST_OBJECTs, which are connected item...
Class EDA_TEXT is a mix-in class (via multiple inheritance) that handles texts such as labels...
Definition: eda_text.h:114
EDA_ITEM * Clone() const override
Function Clone creates a duplicate of this item with linked list members set to NULL.
Definition: sch_text.cpp:727
wxString GetClass() const override
Function GetClass returns the class name.
Definition: sch_text.h:313
virtual EDA_ITEM * Clone() const override
Function Clone creates a duplicate of this item with linked list members set to NULL.
Definition: sch_text.cpp:131
virtual void GetConnectionPoints(std::vector< wxPoint > &aPoints) const override
Function GetConnectionPoints add all the connection points for this item to aPoints.
Definition: sch_text.cpp:459
EDA_ITEM * Clone() const override
Function Clone creates a duplicate of this item with linked list members set to NULL.
Definition: sch_text.cpp:1203
bool doIsConnected(const wxPoint &aPosition) const override
Function doIsConnected provides the object specific test to see if it is connected to aPosition...
Definition: sch_text.h:251
wxPoint GetSchematicTextOffset() const override
Definition: sch_text.cpp:888
void SetLabelSpinStyle(int aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:739
GR_DRAWMODE
Drawmode. Compositing mode plus a flag or two.
Definition: gr_basic.h:41
const char * SheetLabelType[]
Definition: sch_text.cpp:57
virtual wxString GetSelectMenuText() const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
Definition: sch_text.cpp:496
void Draw(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode, COLOR4D Color=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
Definition: sch_text.cpp:1243
void CreateGraphicShape(std::vector< wxPoint > &aPoints, const wxPoint &aPos) override
Calculate the graphic shape (a polygon) associated to the text.
Definition: sch_text.cpp:1016
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: sch_text.cpp:1126
virtual void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList) override
Function GetEndPoints adds the schematic item end points to aItemList if the item has end points...
Definition: sch_text.cpp:382
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: sch_text.cpp:1310
virtual const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: sch_text.cpp:469
Class SCH_SHEET_PATH.
wxString GetClass() const override
Function GetClass returns the class name.
Definition: sch_text.h:225
void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
Definition: sch_text.cpp:768
bool IsConnectable() const override
Function IsConnectable returns true if the schematic item can connect to another schematic item...
Definition: sch_text.h:240
virtual wxPoint GetPosition() const override
Function GetPosition.
Definition: sch_text.h:192
~SCH_LABEL()
Definition: sch_text.h:220
void CreateGraphicShape(std::vector< wxPoint > &aPoints, const wxPoint &Pos) override
Calculate the graphic shape (a polygon) associated to the text.
Definition: sch_text.cpp:1287
Base plotter engine class.
Definition: class_plotter.h:97
void Draw(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode, COLOR4D Color=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
Definition: sch_text.cpp:971
void SetLabelSpinStyle(int aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:1209
PINSHEETLABEL_SHAPE
Definition: sch_text.h:46
virtual void CreateGraphicShape(std::vector< wxPoint > &aPoints, const wxPoint &Pos)
Calculate the graphic shape (a polygon) associated to the text.
Definition: sch_text.h:140
virtual bool IsSelectStateChanged(const wxRect &aRect) override
Function IsSelectStateChanged checks if the selection state of an item inside aRect has changed...
Definition: sch_text.cpp:446
wxString GetClass() const override
Function GetClass returns the class name.
Definition: sch_text.h:267
virtual void Plot(PLOTTER *aPlotter) override
Function Plot plots the schematic item to aPlotter.
Definition: sch_text.cpp:558
bool IsConnectable() const override
Function IsConnectable returns true if the schematic item can connect to another schematic item...
Definition: sch_text.h:286
virtual bool IsDanglingStateChanged(std::vector< DANGLING_END_ITEM > &aItemList) override
Function IsDanglingStateChanged tests the schematic item to aItemList to check if it's dangling state...
Definition: sch_text.cpp:393
virtual void SwapData(SCH_ITEM *aItem) override
Function SwapData swap the internal data structures aItem with the schematic item.
Definition: sch_text.cpp:311
virtual void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
Definition: sch_text.cpp:240
virtual wxString GetClass() const override
Function GetClass returns the class name.
Definition: sch_text.h:93
SCH_TEXT(const wxPoint &pos=wxPoint(0, 0), const wxString &text=wxEmptyString, KICAD_T aType=SCH_TEXT_T)
Definition: sch_text.cpp:107
virtual BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
Definition: sch_text.cpp:504
virtual bool Replace(wxFindReplaceData &aSearchData, void *aAuxData=NULL) override
Function Replace performs a text replace using the find and replace criteria in aSearchData on items ...
Definition: sch_text.h:166
wxString GetSelectMenuText() const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
Definition: sch_text.cpp:1441
Class EDA_RECT handles the component boundary box.
int m_spin_style
The orientation of text and any associated drawing elements of derived objects.
Definition: sch_text.h:76
void MirrorX(int aXaxis_position) override
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
Definition: sch_text.cpp:745
~SCH_TEXT()
Definition: sch_text.h:91
virtual wxPoint GetSchematicTextOffset() const
Definition: sch_text.cpp:143
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:165
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: sch_text.cpp:785
SCH_HIERLABEL(const wxPoint &pos=wxPoint(0, 0), const wxString &text=wxEmptyString, KICAD_T aType=SCH_HIERARCHICAL_LABEL_T)
Definition: sch_text.cpp:1193
wxString GetSelectMenuText() const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
Definition: sch_text.cpp:1178
PINSHEETLABEL_SHAPE m_shape
Definition: sch_text.h:61
EDA_ITEM * Clone() const override
Function Clone creates a duplicate of this item with linked list members set to NULL.
Definition: sch_text.cpp:833
virtual void MirrorY(int aYaxis_position) override
Function MirrorY mirrors item relative to the Y axis about aYaxis_position.
Definition: sch_text.cpp:194
BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
Definition: sch_text.cpp:1449
bool IsConnectable() const override
Function IsConnectable returns true if the schematic item can connect to another schematic item...
Definition: sch_text.h:332
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
Definition: sch_text.cpp:878
SCH_LABEL(const wxPoint &pos=wxPoint(0, 0), const wxString &text=wxEmptyString)
Definition: sch_text.cpp:717
void SetLabelSpinStyle(int aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:937
wxPoint GetSchematicTextOffset() const override
Definition: sch_text.cpp:1362
void MirrorY(int aYaxis_position) override
Function MirrorY mirrors item relative to the Y axis about aYaxis_position.
Definition: sch_text.cpp:839
bool doIsConnected(const wxPoint &aPosition) const override
Function doIsConnected provides the object specific test to see if it is connected to aPosition...
Definition: sch_text.h:295
virtual void GetNetListItem(NETLIST_OBJECT_LIST &aNetListItems, SCH_SHEET_PATH *aSheetPath) override
Function GetNetListItem creates a new NETLIST_OBJECT for the schematic object and adds it to aNetList...
Definition: sch_text.cpp:510
bool doIsConnected(const wxPoint &aPosition) const override
Function doIsConnected provides the object specific test to see if it is connected to aPosition...
Definition: sch_text.h:341
void IncrementLabel(int aIncrement)
Increment the label text, if it ends with a number.
Definition: sch_text.cpp:137
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39