KiCad PCB EDA Suite
class_marker_pcb.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) 2009-2018 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
5  * Copyright (C) 1992-2018 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_MARKER_PCB_H
31 #define CLASS_MARKER_PCB_H
32 
33 
34 #include <class_board_item.h>
35 #include <marker_base.h>
36 #include <drc/drc_item.h>
37 
38 // Coordinates count for the basic shape marker
39 #define MARKER_SHAPE_POINT_COUNT 9
40 
41 class MSG_PANEL_ITEM;
42 
43 
44 class MARKER_PCB : public BOARD_ITEM, public MARKER_BASE
45 {
46 public:
47  MARKER_PCB( DRC_ITEM* aItem, const wxPoint& aPosition );
48 
49  ~MARKER_PCB();
50 
51  static inline bool ClassOf( const EDA_ITEM* aItem )
52  {
53  return aItem && PCB_MARKER_T == aItem->Type();
54  }
55 
56  const KIID GetUUID() const override { return m_Uuid; }
57 
58  wxString Serialize() const;
59 
60  static MARKER_PCB* Deserialize( const wxString& data );
61 
62  void Move(const wxPoint& aMoveVector) override
63  {
64  m_Pos += aMoveVector;
65  }
66 
67  void Rotate( const wxPoint& aRotCentre, double aAngle ) override;
68 
69  void Flip( const wxPoint& aCentre, bool aFlipLeftRight ) override;
70 
71  const wxPoint GetPosition() const override { return m_Pos; }
72  void SetPosition( const wxPoint& aPos ) override { m_Pos = aPos; }
73 
74  bool HitTest( const wxPoint& aPosition, int aAccuracy = 0 ) const override
75  {
76  return HitTestMarker( aPosition, aAccuracy );
77  }
78 
79  bool IsOnLayer( PCB_LAYER_ID aLayer ) const override;
80 
82 
83  void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
84 
85  bool Matches( wxFindReplaceData& aSearchData, void* aAuxData ) override
86  {
87  return BOARD_ITEM::Matches( m_rcItem->GetErrorMessage(), aSearchData );
88  }
89 
90  wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
91 
92  BITMAP_DEF GetMenuImage() const override;
93 
94  const BOX2I ViewBBox() const override;
95 
96  const EDA_RECT GetBoundingBox() const override;
97 
98  void ViewGetLayers( int aLayers[], int& aCount ) const override;
99 
100 #if defined(DEBUG)
101  void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
102 #endif
103 
107  virtual wxString GetClass() const override
108  {
109  return wxT( "MARKER_PCB" );
110  }
111 
112 protected:
113  KIGFX::COLOR4D getColor() const override;
114 };
115 
116 #endif // CLASS_MARKER_PCB_H
EDA_UNITS
Definition: common.h:198
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
const KIID GetUUID() const override
const wxPoint GetPosition() const override
PNG memory record (file in memory).
Definition: bitmap_def.h:29
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
bool Matches(wxFindReplaceData &aSearchData, void *aAuxData) override
Function Matches compares the item against the search criteria in aSearchData.
Classes BOARD_ITEM and BOARD_CONNECTED_ITEM.
MARKER_PCB(DRC_ITEM *aItem, const wxPoint &aPosition)
GAL_LAYER_ID GetColorLayer() const
BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
wxPoint m_Pos
position of the marker
Definition: marker_base.h:59
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
The base class for create windows for drawing purpose.
wxString GetSelectMenuText(EDA_UNITS aUnits) const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
virtual wxString GetClass() const override
Get class name.
RC_ITEM * m_rcItem
Definition: marker_base.h:64
bool IsOnLayer(PCB_LAYER_ID aLayer) const override
Function IsOnLayer tests to see if this object is on the given layer.
Definition: common.h:68
bool HitTestMarker(const wxPoint &aHitPosition, int aAccuracy) const
Tests if the given wxPoint is within the bounds of this object.
Definition: marker_base.cpp:92
PCB_LAYER_ID
A quick note on layer IDs:
KIGFX::COLOR4D getColor() const override
const KIID m_Uuid
Definition: base_struct.h:162
const BOX2I ViewBBox() const override
Function ViewBBox() returns the bounding box of the item covering all its layers.
bool HitTest(const wxPoint &aPosition, int aAccuracy=0) const override
Function HitTest tests if aPosition is contained within or on the bounding box of an item.
class MARKER_PCB, a marker used to show something
Definition: typeinfo.h:99
void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
static MARKER_PCB * Deserialize(const wxString &data)
void Flip(const wxPoint &aCentre, bool aFlipLeftRight) override
Function Flip Flip this object, i.e.
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boards.
Definition: base_struct.h:159
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for displ...
wxString Serialize() const
static bool ClassOf(const EDA_ITEM *aItem)
void ViewGetLayers(int aLayers[], int &aCount) const override
Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on.
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
virtual bool Matches(wxFindReplaceData &aSearchData, void *aAuxData)
Function Matches compares the item against the search criteria in aSearchData.
Definition: base_struct.h:457
void Move(const wxPoint &aMoveVector) override
Function Move move this object.
virtual wxString GetErrorMessage() const
Function GetErrorMessage returns the error message of a RC_ITEM.
Definition: rc_item.cpp:36
void SetPosition(const wxPoint &aPos) override
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99