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.

69 lines
2.9 KiB

4 years ago
  1. /**
  2. * @file zones_functions_for_undo_redo.h
  3. */
  4. /*
  5. * This program source code file is part of KiCad, a free EDA CAD application.
  6. *
  7. * Copyright (C) 2009 Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
  8. * Copyright (C) 2007 KiCad Developers, see change_log.txt for contributors.
  9. *
  10. * This program is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU General Public License
  12. * as published by the Free Software Foundation; either version 2
  13. * of the License, or (at your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, you may find one here:
  22. * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
  23. * or you may search the http://www.gnu.org website for the version 2 license,
  24. * or you may write to the Free Software Foundation, Inc.,
  25. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
  26. */
  27. /* These functions are relative to undo redo function, when zones are involved.
  28. *
  29. * When a zone outline is modified (or created) this zone, or others zones on the same layer
  30. * and with the same netcode can change or can be deleted due to the fact overlapping zones are
  31. * merged. Also, when a zone outline is modified by adding a cutout area, this zone can be
  32. * converted to more than one area, if the outline is break to 2 or more outlines and therefore
  33. * new zones are created
  34. *
  35. * Due to the complexity of potential changes, and the fact there are only few zones in a board,
  36. * and a zone has only few segments outlines, the more easy way to undo redo changes is to make
  37. * a copy of all zones that can be changed and see after zone editing or creation what zones that
  38. * are really modified, and ones they are modified (changes, deletion or addition)
  39. */
  40. #ifndef ZONES_FUNCTIONS_TO_UNDO_REDO_H
  41. #define ZONES_FUNCTIONS_TO_UNDO_REDO_H
  42. /**
  43. * Function SaveCopyOfZones
  44. * creates a copy of zones having a given netcode on a given layer,
  45. * and fill a pick list with pickers to handle these copies
  46. * @param aPickList = the pick list
  47. * @param aPcb = the Board
  48. */
  49. void SaveCopyOfZones(PICKED_ITEMS_LIST & aPickList, BOARD* aPcb );
  50. /**
  51. * Function UpdateCopyOfZonesList
  52. * check a pick list to remove zones identical to their copies
  53. * and set the type of operation in picker (DELETED, CHANGED)
  54. * @param aPickList = the main pick list
  55. * @param aAuxiliaryList = the list of deleted or added (new created) items after calculations
  56. * @param aPcb = the Board
  57. */
  58. void UpdateCopyOfZonesList( PICKED_ITEMS_LIST& aPickList, PICKED_ITEMS_LIST& aAuxiliaryList,
  59. BOARD* aPcb );
  60. #endif // ZONES_FUNCTIONS_TO_UNDO_REDO_H