1 /* 2 Copyright (C) 2010-2014 Kristian Duske 3 4 This file is part of TrenchBroom. 5 6 TrenchBroom is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 TrenchBroom is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #include "BrushSnapshot.h" 21 22 #include "CollectionUtils.h" 23 #include "Model/Brush.h" 24 #include "Model/BrushFace.h" 25 26 namespace TrenchBroom { 27 namespace Model { BrushSnapshot(Brush * brush)28 BrushSnapshot::BrushSnapshot(Brush* brush) : 29 m_brush(brush) { 30 takeSnapshot(brush); 31 } 32 ~BrushSnapshot()33 BrushSnapshot::~BrushSnapshot() { 34 VectorUtils::clearAndDelete(m_faces); 35 } 36 takeSnapshot(Brush * brush)37 void BrushSnapshot::takeSnapshot(Brush* brush) { 38 const BrushFaceList& faces = brush->faces(); 39 BrushFaceList::const_iterator it, end; 40 for (it = faces.begin(), end = faces.end(); it != end; ++it) { 41 BrushFace* face = *it; 42 m_faces.push_back(face->clone()); 43 } 44 } 45 doRestore(const BBox3 & worldBounds)46 void BrushSnapshot::doRestore(const BBox3& worldBounds) { 47 m_brush->setFaces(worldBounds, m_faces); 48 m_faces.clear(); 49 } 50 } 51 } 52