diff -r 1a4342d80de7 -r 654661eab7f3 src/utility.h --- a/src/utility.h Wed Jun 08 20:41:21 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * LDForge: LDraw parts authoring CAD - * Copyright (C) 2013 - 2020 Teemu 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 . - */ - -#pragma once -#include "basics.h" - -// http://stackoverflow.com/a/18204188/3629665 -template -inline T rotl10(T x) -{ - return (x << 10) | ((x >> 22) & 0x000000ff); -} - -template -inline T rotl20(T x) -{ - return (x << 20) | ((x >> 12) & 0x000000ff); -} - -inline QString format(const QString& format_string) -{ - return format_string; -} - -template -QString format(const QString& format_string, T&& arg, Rest&&... rest) -{ - return format(format_string.arg(arg), std::forward(rest)...); -} - -inline QString quoted(QString string) -{ - if (string.contains("'")) - { - string.replace("\"", "\\\""); - string = "\"" + string + "\""; - } - else - { - string = "'" + string + "'"; - } - return string; -} - -/** - * @brief Converts the specified vertex to a simple string - * @param vertex vertex to convert - * @return "x y z"-formatted string - */ -inline QString vertexToString(const glm::vec3& vertex) -{ - return format("%1 %2 %3", vertex.x, vertex.y, vertex.z); -} - -inline QString vertexToStringParens(const glm::vec3& vertex) -{ - return format("(%1, %2, %3)", vertex.x, vertex.y, vertex.z); -} - -inline QString transformToString(const glm::mat4& matrix) -{ - return format( - "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12", - matrix[3][0], - matrix[3][1], - matrix[3][2], - matrix[0][0], - matrix[1][0], - matrix[2][0], - matrix[0][1], - matrix[1][1], - matrix[2][1], - matrix[0][2], - matrix[1][2], - matrix[2][2]); -} - -template -constexpr unsigned int qHash(const glm::vec<3, T, Q>& key) -{ - return qHash(key.x) ^ rotl10(qHash(key.y)) ^ rotl20(qHash(key.z)); -}