KiCad PCB EDA Suite
Loading...
Searching...
No Matches
zones_container.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2023 Ethan Chien <[email protected]>
5 * Copyright (C) 2023 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
26#ifndef ZONES_CONTAINER_H
27#define ZONES_CONTAINER_H
28#include "board.h"
29#include <memory>
30#include <unordered_map>
31#include <vector>
32#include <zone.h>
34#include "zone_settings.h"
35
36class MANAGED_ZONE;
37
38
40{
41public:
42 ZONES_CONTAINER( BOARD* board );
43 ~ZONES_CONTAINER() override = default;
44
45 std::vector<std::shared_ptr<MANAGED_ZONE>> GetManagedZones() const
46 {
47 return m_managedZones;
48 }
49
50 std::shared_ptr<ZONE_SETTINGS> GetZoneSettings( ZONE* zone );
56 std::vector<ZONE*>& GetClonedZoneList() { return m_clonedZoneList; }
62 std::vector<ZONE*>& GetOriginalZoneList() { return m_originalZoneList; }
74
75 void OnUserConfirmChange() override;
76
77private:
78 std::unordered_map<ZONE*, std::shared_ptr<ZONE>> m_zonesCloneMap;
79 std::unordered_map<ZONE*, std::shared_ptr<ZONE_SETTINGS>> m_zoneSettings;
80 std::vector<std::shared_ptr<MANAGED_ZONE>> m_managedZones;
81 std::vector<ZONE*> m_clonedZoneList;
82 std::vector<ZONE*> m_originalZoneList;
83};
84
85#endif
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:290
Workaround to keep the original priorities if user didn't change any.
Definition: managed_zone.h:38
std::shared_ptr< ZONE_SETTINGS > GetZoneSettings(ZONE *zone)
std::vector< ZONE * > m_clonedZoneList
std::vector< ZONE * > & GetOriginalZoneList()
Used for restoring the zones in the board after refilling.
void FlushZoneSettingsChange()
Flush the zone settings change to the cloned ones.
bool FlushPriorityChange()
Flush the priority change to the cloned ones.
~ZONES_CONTAINER() override=default
std::unordered_map< ZONE *, std::shared_ptr< ZONE > > m_zonesCloneMap
std::vector< std::shared_ptr< MANAGED_ZONE > > GetManagedZones() const
std::vector< ZONE * > m_originalZoneList
void OnUserConfirmChange() override
std::vector< ZONE * > & GetClonedZoneList()
Adapter for the zone filler ,zones are actually managed the smart ptr.
std::unordered_map< ZONE *, std::shared_ptr< ZONE_SETTINGS > > m_zoneSettings
std::vector< std::shared_ptr< MANAGED_ZONE > > m_managedZones
Classes need post progress after user click OK.
Handle a list of polygons defining a copper zone.
Definition: zone.h:73
Class ZONE_SETTINGS used to handle zones parameters in dialogs.