diff -r 3d8ab0f89102 -r 450827da2376 src/misc.h --- a/src/misc.h Tue Jan 21 01:29:12 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -/* - * LDForge: LDraw parts authoring CAD - * Copyright (C) 2013, 2014 Santeri Piippo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef LDFORGE_MISC_H -#define LDFORGE_MISC_H - -#include -#include "config.h" -#include "main.h" -#include "types.h" - -#define NUM_PRIMES 500 - -class LDDocument; -class QColor; -class QAction; - -// Prime numbers -extern const int g_primes[NUM_PRIMES]; - -// Returns whether a given string represents a floating point number. -bool numeric (const QString& tok); - -// Simplifies the given fraction. -void simplify (int& numer, int& denom); - -void roundToDecimals (double& a, int decimals); - -QString join (initlist vals, QString delim = " "); - -// Grid stuff -struct gridinfo -{ - const char* const name; - float* const confs[4]; -}; - -extern_cfg (Int, grid); -static const int g_NumGrids = 3; -extern const gridinfo g_GridInfo[3]; - -inline const gridinfo& currentGrid() -{ - return g_GridInfo[grid]; -} - -// ============================================================================= -enum ERotationPoint -{ - EObjectOrigin, - EWorldOrigin, - ECustomPoint -}; - -Vertex rotPoint (const LDObjectList& objs); -void configRotationPoint(); - -// ============================================================================= -namespace Grid -{ - enum Type - { - Coarse, - Medium, - Fine - }; - - enum Config - { - X, - Y, - Z, - Angle - }; - - double snap (double value, const Grid::Config axis); -} - -// ----------------------------------------------------------------------------- -// Plural expression -template static inline const char* plural (T n) -{ - return (n != 1) ? "s" : ""; -} - -// ----------------------------------------------------------------------------- -// Templated clamp -template static inline T clamp (T a, T min, T max) -{ - return (a > max) ? max : (a < min) ? min : a; -} - -// Templated minimum -template static inline T min (T a, T b) -{ - return (a < b) ? a : b; -} - -// Templated maximum -template static inline T max (T a, T b) -{ - return (a > b) ? a : b; -} - -// Templated absolute value -template static inline T abs (T a) -{ - return (a >= 0) ? a : -a; -} - -template inline bool isZero (T a) -{ - return abs (a) < 0.0001; -} - -template inline bool isInteger (T a) -{ - return isZero (a - (int) a); -} - -template void removeDuplicates (QList& a) -{ - std::sort (a.begin(), a.end()); - a.erase (std::unique (a.begin(), a.end()), a.end()); -} - -#endif // LDFORGE_MISC_H