KiCad PCB EDA Suite
drc_drilled_hole_tester.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) 2020 KiCad Developers, see change_log.txt for contributors.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, you may find one here:
18  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19  * or you may search the http://www.gnu.org website for the version 2 license,
20  * or you may write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22  */
23 
24 
25 #ifndef DRC_DRILLED_HOLE_TESTER__H
26 #define DRC_DRILLED_HOLE_TESTER__H
27 
28 #include <drc/drc_provider.h>
29 
30 
31 class BOARD;
32 class BOARD_ITEM;
33 
34 
36 {
37 public:
38  DRC_DRILLED_HOLE_TESTER( MARKER_HANDLER aMarkerHandler );
39 
41 
42  bool RunDRC( EDA_UNITS aUnits, BOARD& aBoard ) override;
43 
44 private:
45  bool checkPad( D_PAD* aPad );
46  bool checkVia( VIA* aVia );
47  bool checkMicroVia( VIA* aVia );
48 
49  void addHole( const wxPoint& aLocation, int aRadius, BOARD_ITEM* aOwner );
50  bool checkHoles();
51 
52 private:
53  struct DRILLED_HOLE
54  {
56  int m_drillRadius = 0;
57  BOARD_ITEM* m_owner = nullptr;
58  };
59 
62  std::vector<DRILLED_HOLE> m_holes;
64 
65  wxString m_msg; // Construct only once for performance
66 };
67 
68 #endif // DRC_DRILLED_HOLE_TESTER__H
EDA_UNITS
Definition: common.h:198
void addHole(const wxPoint &aLocation, int aRadius, BOARD_ITEM *aOwner)
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
std::vector< DRILLED_HOLE > m_holes
DRC_TEST_PROVIDER is a base class that represents a DRC "provider" which runs some DRC functions over...
Definition: drc_provider.h:41
bool RunDRC(EDA_UNITS aUnits, BOARD &aBoard) override
Runs this provider against the given PCB with configured options (if any).
std::function< void(MARKER_PCB *)> MARKER_HANDLER
A callable that can handle a single generated PCB_MARKER.
Definition: drc_provider.h:47
BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:180
DRC_DRILLED_HOLE_TESTER(MARKER_HANDLER aMarkerHandler)