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.

60 lines
2.3 KiB

  1. /*
  2. * This program source code file is part of KiCad, a free EDA CAD application.
  3. *
  4. * Copyright (C) 2021 Jean-Pierre Charras jp.charras at wanadoo.fr
  5. * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
  6. *
  7. * This program is free software: you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License as published by the
  9. * Free Software Foundation, either version 3 of the License, or (at your
  10. * option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License along
  18. * with this program. If not, see <http://www.gnu.org/licenses/>.
  19. */
  20. #pragma once
  21. // Default format for coordinates: they are the default values, not the actual values
  22. // defaut format is 3:3 in mm and 2:4 in inch
  23. //
  24. // number of digits in mantissa:
  25. #define FMT_MANTISSA_MM 3
  26. #define FMT_MANTISSA_INCH 4
  27. // number of digits, integer part:
  28. #define FMT_INTEGER_MM 3
  29. #define FMT_INTEGER_INCH 2
  30. /**
  31. * management of default values used to read a Excellon (.nc) drill file
  32. * Some important parameters are not defined in drill files, and some others
  33. * can be missing in poor drill files.
  34. * These default values are used when parameter is not found in file
  35. */
  36. struct EXCELLON_DEFAULTS
  37. {
  38. bool m_UnitsMM; // false = inch, true = mm
  39. bool m_LeadingZero; // True = LZ false = TZ
  40. int m_MmIntegerLen; // number of digits for the integer part of a coordinate in mm
  41. int m_MmMantissaLen; // number of digits for the mantissa part of a coordinate in mm
  42. int m_InchIntegerLen; // number of digits for the integer part of a coordinate in inch
  43. int m_InchMantissaLen; // number of digits for the mantissa part of a coordinate in inch
  44. EXCELLON_DEFAULTS() { ResetToDefaults(); }
  45. void ResetToDefaults()
  46. {
  47. m_UnitsMM = false;
  48. m_LeadingZero = true;
  49. m_MmIntegerLen = FMT_INTEGER_MM;
  50. m_MmMantissaLen = FMT_MANTISSA_MM;
  51. m_InchIntegerLen = FMT_INTEGER_INCH;
  52. m_InchMantissaLen = FMT_MANTISSA_INCH;
  53. }
  54. };