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()20 Grid::Grid()
21 {
22 }
23 
setSize(int size)24 void Grid::setSize(int size)
25 {
26     m_size = size;
27 }
28 
size() const29 int Grid::size() const
30 {
31     return m_size;
32 }
33 
snapToGrid(QPointF in) const34 QPointF 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