src/miscallenous.h

changeset 1319
39d7a9642eea
parent 1318
568fcfc6da71
child 1320
bdb4804bc09c
equal deleted inserted replaced
1318:568fcfc6da71 1319:39d7a9642eea
1 /*
2 * LDForge: LDraw parts authoring CAD
3 * Copyright (C) 2013 - 2017 Teemu Piippo
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #pragma once
20 #include <QVector>
21 #include <functional>
22 #include "main.h"
23 #include "basics.h"
24
25 class LDDocument;
26 class QColor;
27 class QAction;
28
29 using ApplyToMatrixFunction = std::function<void (int, double&)>;
30 using ApplyToMatrixConstFunction = std::function<void (int, double)>;
31
32 void applyToMatrix (Matrix& a, ApplyToMatrixFunction func);
33 void applyToMatrix (const Matrix& a, ApplyToMatrixConstFunction func);
34 QString formatFileSize (qint64 size);
35 int gcd (int a, int b);
36 QString joinStrings (QList<StringFormatArg> vals, QString delim = " ");
37 void roundToDecimals (double& value, int decimals);
38 void simplify (int& numer, int& denom);
39
40 /*
41 * Rounds the input value to the nearest multiple of the provided interval.
42 */
43 template<typename T>
44 T roundToInterval(T value, double interval)
45 {
46 return static_cast<T>(round(value / interval) * interval);
47 }

mercurial