1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2008-2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
5  * Copyright (C) 1992-2012 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 ZONES_H_
26 #define ZONES_H_
27 
28 // Default values in mils for parameters in ZONE
29 #define ZONE_THERMAL_RELIEF_GAP_MIL 20     // default value for ZONE_SETTINGS::m_ThermalReliefGap
30 #define ZONE_THERMAL_RELIEF_COPPER_WIDTH_MIL 20 // default value for ZONE_SETTINGS::m_ThermalReliefCopperBridge
31 #define ZONE_THICKNESS_MIL 10               // default value for ZONE_SETTINGS::m_ZoneMinThickness
32 #define ZONE_THICKNESS_MIN_VALUE_MIL 1      // minimum acceptable value for ZONE_SETTINGS::m_ZoneMinThickness
33 #define ZONE_CLEARANCE_MIL 20               // default value for ZONE_SETTINGS::m_ZoneClearance
34 #define ZONE_CLEARANCE_MAX_VALUE_MIL 500    // maximum acceptable value for ZONE_SETTINGS::m_ZoneClearance
35 
36 
37 #define ZONE_EXPORT_VALUES  1004        // Copper zone dialog reports wxID_OK, wxID_CANCEL or
38                                         // ZONE_EXPORT_VALUES
39 
40 /// How pads are covered by copper in zone
41 enum class ZONE_CONNECTION
42 {
43     INHERITED = -1,
44     NONE,       ///< Pads are not covered
45     THERMAL,    ///< Use thermal relief for pads
46     FULL,       ///< pads are covered by copper
47     THT_THERMAL ///< Thermal relief only for THT pads
48 };
49 
50 class ZONE;
51 class ZONE_SETTINGS;
52 class PCB_BASE_FRAME;
53 
54 /**
55  * Function InvokeNonCopperZonesEditor
56  * invokes up a modal dialog window for non-copper zone editing.
57  *
58  * @param aParent is the PCB_BASE_FRAME calling parent window for the modal dialog,
59  *                and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
60  * @param aSettings points to the ZONE_SETTINGS to edit.
61  * @return int - tells if user aborted, changed only one zone, or all of them.
62  */
63 int InvokeNonCopperZonesEditor( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aSettings );
64 
65 /**
66  * Function InvokeCopperZonesEditor
67  * invokes up a modal dialog window for copper zone editing.
68  *
69  * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
70  *                and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
71  * @param aSettings points to the ZONE_SETTINGS to edit.
72  * @return int - tells if user aborted, changed only one zone, or all of them.
73  */
74 int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
75 
76 /**
77  * Function InvokeRuleAreaEditor
78  * invokes up a modal dialog window for copper zone editing.
79  *
80  * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
81  *                and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
82  * @param aSettings points to the ZONE_SETTINGS to edit.
83  * @return int - tells if user aborted, changed only one zone, or all of them.
84  */
85 int InvokeRuleAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
86 
87 #endif  // ZONES_H_
88