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.

110 lines
4.6 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-2022 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. struct CONVERT_SETTINGS;
  28. // Default values in mm for parameters in ZONE_SETTINGS
  29. #define ZONE_THERMAL_RELIEF_GAP_MM 0.5 // ZONE_SETTINGS::m_ThermalReliefGap
  30. #define ZONE_THERMAL_RELIEF_COPPER_WIDTH_MM 0.5 // ZONE_SETTINGS::m_ThermalReliefCopperBridge
  31. #define ZONE_THICKNESS_MM 0.25 // ZONE_SETTINGS::m_ZoneMinThickness
  32. #define ZONE_THICKNESS_MIN_VALUE_MM 0.025 // Minimum for ZONE_SETTINGS::m_ZoneMinThickness
  33. #define ZONE_CLEARANCE_MM 0.5 // ZONE_SETTINGS::m_ZoneClearance
  34. #define ZONE_CLEARANCE_MAX_VALUE_MM 100 // Maximum for ZONE_SETTINGS::m_ZoneClearance
  35. #define ZONE_BORDER_HATCH_DIST_MM 0.5 // ZONE_SETTINGS::m_BorderHatchPitch
  36. #define ZONE_BORDER_HATCH_MINDIST_MM 0.1 // Minimum for ZONE_SETTINGS::m_BorderHatchPitch
  37. #define ZONE_BORDER_HATCH_MAXDIST_MM 2.0 // Maximum for ZONE_SETTINGS::m_BorderHatchPitch
  38. #define ZONE_MANAGER_REPOUR 1005 //Reported if repour option is checked while clicking OK
  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. CONVERT_SETTINGS* aConvertSettings = nullptr );
  74. /**
  75. * Function InvokeCopperZonesEditor
  76. * invokes up a modal dialog window for copper zone editing.
  77. *
  78. * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
  79. * and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
  80. * @param aSettings points to the ZONE_SETTINGS to edit.
  81. * @return int - tells if user aborted, changed only one zone, or all of them.
  82. */
  83. int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings,
  84. CONVERT_SETTINGS* aConvertSettings = nullptr );
  85. /**
  86. * Function InvokeRuleAreaEditor
  87. * invokes up a modal dialog window for copper zone editing.
  88. *
  89. * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
  90. * and it gives access to the BOARD through PCB_BASE_FRAME::GetBoard().
  91. * @param aSettings points to the ZONE_SETTINGS to edit.
  92. * @return int - tells if user aborted, changed only one zone, or all of them.
  93. */
  94. int InvokeRuleAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings,
  95. CONVERT_SETTINGS* aConvertSettings = nullptr );
  96. #endif // ZONES_H_