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 "ResizeBrushesCommand.h" 21 22 #include "View/MapDocumentCommandFacade.h" 23 24 #include <cassert> 25 26 namespace TrenchBroom { 27 namespace View { 28 const Command::CommandType ResizeBrushesCommand::Type = Command::freeType(); 29 resize(const Model::BrushFaceList & faces,const Vec3 & delta)30 ResizeBrushesCommand::Ptr ResizeBrushesCommand::resize(const Model::BrushFaceList& faces, const Vec3& delta) { 31 return Ptr(new ResizeBrushesCommand(faces, delta)); 32 } 33 ResizeBrushesCommand(const Model::BrushFaceList & faces,const Vec3 & delta)34 ResizeBrushesCommand::ResizeBrushesCommand(const Model::BrushFaceList& faces, const Vec3& delta) : 35 DocumentCommand(Type, "Resize Brushes"), 36 m_faces(faces), 37 m_delta(delta) { 38 assert(!m_faces.empty()); 39 } 40 doPerformDo(MapDocumentCommandFacade * document)41 bool ResizeBrushesCommand::doPerformDo(MapDocumentCommandFacade* document) { 42 return document->performResizeBrushes(m_faces, m_delta); 43 } 44 doPerformUndo(MapDocumentCommandFacade * document)45 bool ResizeBrushesCommand::doPerformUndo(MapDocumentCommandFacade* document) { 46 return document->performResizeBrushes(m_faces, -m_delta); 47 } 48 doIsRepeatable(MapDocumentCommandFacade * document) const49 bool ResizeBrushesCommand::doIsRepeatable(MapDocumentCommandFacade* document) const { 50 return false; 51 } 52 doCollateWith(UndoableCommand::Ptr command)53 bool ResizeBrushesCommand::doCollateWith(UndoableCommand::Ptr command) { 54 ResizeBrushesCommand* other = static_cast<ResizeBrushesCommand*>(command.get()); 55 if (m_faces != other->m_faces) 56 return false; 57 58 m_delta += other->m_delta; 59 return true; 60 } 61 } 62 } 63