1 // This file is part of Heimer. 2 // Copyright (C) 2019 Jussi Lind <jussi.lind@iki.fi> 3 // 4 // Heimer is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // Heimer is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with Heimer. If not, see <http://www.gnu.org/licenses/>. 15 16 #include "grid.hpp" 17 18 #include <cmath> 19 Grid()20Grid::Grid() 21 { 22 } 23 setSize(int size)24void Grid::setSize(int size) 25 { 26 m_size = size; 27 } 28 size() const29int Grid::size() const 30 { 31 return m_size; 32 } 33 snapToGrid(QPointF in) const34QPointF Grid::snapToGrid(QPointF in) const 35 { 36 if (!m_size) { 37 return in; 38 } 39 40 return { 41 static_cast<double>(std::round(in.x() / m_size) * m_size), 42 static_cast<double>(std::round(in.y() / m_size) * m_size) 43 }; 44 } 45