You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
4.5 KiB

14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
  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-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. #ifndef ZONES_H_
  25. #define ZONES_H_
  26. #include <wx/translation.h>
  27. // Default values in mils for parameters in ZONE
  28. #define ZONE_THERMAL_RELIEF_GAP_MIL 20 // default value for ZONE_SETTINGS::m_ThermalReliefGap
  29. #define ZONE_THERMAL_RELIEF_COPPER_WIDTH_MIL 20 // default value for ZONE_SETTINGS::m_ThermalReliefCopperBridge
  30. #define ZONE_THICKNESS_MIL 10 // default value for ZONE_SETTINGS::m_ZoneMinThickness
  31. #define ZONE_THICKNESS_MIN_VALUE_MIL 1 // minimum acceptable value for ZONE_SETTINGS::m_ZoneMinThickness
  32. #define ZONE_CLEARANCE_MIL 20 // default value for ZONE_SETTINGS::m_ZoneClearance
  33. #define ZONE_CLEARANCE_MAX_VALUE_MIL 500 // maximum acceptable value for ZONE_SETTINGS::m_ZoneClearance
  34. #define ZONE_BORDER_HATCH_DIST_MIL 20 // default distance between hatches to draw hatched outlines
  35. #define ZONE_BORDER_HATCH_MINDIST_MM 0.1 // min distance between hatches to draw hatched outlines
  36. #define ZONE_BORDER_HATCH_MAXDIST_MM 2.0 // min distance between hatches to draw hatched outlines
  37. #define ZONE_EXPORT_VALUES 1004 // Copper zone dialog reports wxID_OK, wxID_CANCEL or
  38. // ZONE_EXPORT_VALUES
  39. /// How pads are covered by copper in zone
  40. enum class ZONE_CONNECTION
  41. {
  42. INHERITED = -1,
  43. NONE, ///< Pads are not covered
  44. THERMAL, ///< Use thermal relief for pads
  45. FULL, ///< pads are covered by copper
  46. THT_THERMAL ///< Thermal relief only for THT pads
  47. };
  48. inline wxString PrintZoneConnection( ZONE_CONNECTION aConnection )
  49. {
  50. switch( aConnection )
  51. {
  52. default:
  53. case ZONE_CONNECTION::INHERITED: return _( "inherited" );
  54. case ZONE_CONNECTION::NONE: return _( "none" );
  55. case ZONE_CONNECTION::THERMAL: return _( "thermal reliefs" );
  56. case ZONE_CONNECTION::FULL: return _( "solid" );
  57. case ZONE_CONNECTION::THT_THERMAL: return _( "thermal reliefs for PTH" );
  58. }
  59. }
  60. class ZONE;
  61. class ZONE_SETTINGS;
  62. class PCB_BASE_FRAME;
  63. /**
  64. * Function InvokeNonCopperZonesEditor
  65. * invokes up a modal dialog window for non-copper zone editing.
  66. *
  67. * @param aParent is the PCB_BASE_FRAME calling parent window for the modal dialog,
  68. * and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
  69. * @param aSettings points to the ZONE_SETTINGS to edit.
  70. * @return int - tells if user aborted, changed only one zone, or all of them.
  71. */
  72. int InvokeNonCopperZonesEditor( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aSettings );
  73. /**
  74. * Function InvokeCopperZonesEditor
  75. * invokes up a modal dialog window for copper zone editing.
  76. *
  77. * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
  78. * and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
  79. * @param aSettings points to the ZONE_SETTINGS to edit.
  80. * @return int - tells if user aborted, changed only one zone, or all of them.
  81. */
  82. int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
  83. /**
  84. * Function InvokeRuleAreaEditor
  85. * invokes up a modal dialog window for copper zone editing.
  86. *
  87. * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
  88. * and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
  89. * @param aSettings points to the ZONE_SETTINGS to edit.
  90. * @return int - tells if user aborted, changed only one zone, or all of them.
  91. */
  92. int InvokeRuleAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
  93. #endif // ZONES_H_