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 #ifndef TrenchBroom_CreateBrushToolController2D 21 #define TrenchBroom_CreateBrushToolController2D 22 23 #include "View/ToolController.h" 24 #include "View/ViewTypes.h" 25 26 namespace TrenchBroom { 27 namespace View { 28 class CreateSimpleBrushTool; 29 class Grid; 30 31 class CreateSimpleBrushToolController2D : public ToolControllerBase<NoPickingPolicy, NoKeyPolicy, NoMousePolicy, RestrictedDragPolicy, RenderPolicy, NoDropPolicy> { 32 private: 33 CreateSimpleBrushTool* m_tool; 34 MapDocumentWPtr m_document; 35 Vec3 m_initialPoint; 36 BBox3 m_bounds; 37 public: 38 CreateSimpleBrushToolController2D(CreateSimpleBrushTool* tool, MapDocumentWPtr document); 39 private: 40 Tool* doGetTool(); 41 42 DragInfo doStartDrag(const InputState& inputState); 43 DragResult doDrag(const InputState& inputState, const Vec3& lastPoint, const Vec3& curPoint); 44 void doEndDrag(const InputState& inputState); 45 void doCancelDrag(); 46 47 void doSetRenderOptions(const InputState& inputState, Renderer::RenderContext& renderContext) const; 48 void doRender(const InputState& inputState, Renderer::RenderContext& renderContext, Renderer::RenderBatch& renderBatch); 49 50 bool doCancel(); 51 private: 52 bool updateBounds(const InputState& inputState, const Vec3& currentPoint); 53 void snapBounds(const InputState& inputState, BBox3& bounds); 54 }; 55 } 56 } 57 58 #endif /* defined(TrenchBroom_CreateBrushToolController2D) */ 59