mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 10:55:32 +08:00
* seed for random numbers per thread * added function to get all user metatypes as string * added new read file function per path/name * removed DBus operators for pixmap * JSON operators for byte array * util function for JSON string
This commit is contained in:
committed by
Mathew Sutcliffe
parent
19df8a5d71
commit
a725ce2181
@@ -267,13 +267,13 @@ size_t BlackMisc::heapSizeOf(const QMetaObject &metaObject)
|
|||||||
|
|
||||||
size_t BlackMisc::heapSizeOf(const QMetaType &)
|
size_t BlackMisc::heapSizeOf(const QMetaType &)
|
||||||
{
|
{
|
||||||
qDebug() << "heapSizeOf not supported by your compiler toolchain";
|
// qDebug() << "heapSizeOf not supported by your compiler toolchain";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t BlackMisc::heapSizeOf(const QMetaObject &)
|
size_t BlackMisc::heapSizeOf(const QMetaObject &)
|
||||||
{
|
{
|
||||||
qDebug() << "heapSizeOf not supported by your compiler toolchain";
|
// qDebug() << "heapSizeOf not supported by your compiler toolchain";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,14 +281,31 @@ size_t BlackMisc::heapSizeOf(const QMetaObject &)
|
|||||||
|
|
||||||
void BlackMisc::displayAllUserMetatypesTypes(QTextStream &out)
|
void BlackMisc::displayAllUserMetatypesTypes(QTextStream &out)
|
||||||
{
|
{
|
||||||
|
out << getAllUserMetatypesTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BlackMisc::getAllUserMetatypesTypes(const QString &separator)
|
||||||
|
{
|
||||||
|
int fails = 0;
|
||||||
|
QString meta;
|
||||||
for (int mt = QMetaType::User; mt < QMetaType::User + 1000; mt++)
|
for (int mt = QMetaType::User; mt < QMetaType::User + 1000; mt++)
|
||||||
{
|
{
|
||||||
if (!QMetaType::isRegistered(mt)) { continue; }
|
if (!QMetaType::isRegistered(mt))
|
||||||
|
{
|
||||||
|
fails++;
|
||||||
|
// normally a consecutive order of metatypes, we allow a space before we break
|
||||||
|
if (fails > 3) { return meta; }
|
||||||
|
continue;
|
||||||
|
}
|
||||||
QMetaType metaType(mt);
|
QMetaType metaType(mt);
|
||||||
out << "type: " << mt << " name:" << QMetaType::typeName(mt) << " | "
|
meta = meta.
|
||||||
<< QMetaType::sizeOf(mt) << " / " << BlackMisc::heapSizeOf(metaType) << endl;
|
append("type: ").append(QString::number(mt)).
|
||||||
|
append(" name: ").append(QMetaType::typeName(mt)).
|
||||||
|
append(" | ").append(QString::number(QMetaType::sizeOf(mt))).
|
||||||
|
append(" / ").append(QString::number(BlackMisc::heapSizeOf(metaType))).
|
||||||
|
append(separator);
|
||||||
}
|
}
|
||||||
|
return meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &BlackMisc::localHostName()
|
const QString &BlackMisc::localHostName()
|
||||||
@@ -369,12 +386,13 @@ QString BlackMisc::boolToTrueFalse(bool v, bool i18n)
|
|||||||
|
|
||||||
bool BlackMisc::stringToBool(const QString &string)
|
bool BlackMisc::stringToBool(const QString &string)
|
||||||
{
|
{
|
||||||
if (string.isEmpty()) { return false; }
|
QString s(string.trimmed().toLower());
|
||||||
QChar c = string.at(0).toLower();
|
if (s.isEmpty()) { return false; }
|
||||||
|
QChar c = s.at(0);
|
||||||
|
|
||||||
// explicit values
|
// explicit values
|
||||||
if (c == '1' || c == 't' || c == 'y' || c == 'x') { return true; }
|
if (c == '1' || c == 't' || c == 'y' || c == 'x') { return true; }
|
||||||
if (c == '0' || c == 'f' || c == 'n' || c == ' ') { return false; }
|
if (c == '0' || c == 'f' || c == 'n' || c == '_') { return false; }
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -439,7 +457,6 @@ bool BlackMisc::pngByteArrayToPixmapRef(const QByteArray &array, QPixmap &pixmap
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString BlackMisc::pixmapToPngHexString(const QPixmap &pixmap)
|
QString BlackMisc::pixmapToPngHexString(const QPixmap &pixmap)
|
||||||
{
|
{
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
|
|||||||
@@ -35,11 +35,6 @@ inline void initBlackMiscResources()
|
|||||||
// cannot be declared within namespace, see docu
|
// cannot be declared within namespace, see docu
|
||||||
// hence BlackMisc::initResources() calls this inline function
|
// hence BlackMisc::initResources() calls this inline function
|
||||||
Q_INIT_RESOURCE(blackmisc);
|
Q_INIT_RESOURCE(blackmisc);
|
||||||
|
|
||||||
// set seed for random number if ever used
|
|
||||||
// that is needed only once on application startup
|
|
||||||
QTime time = QTime::currentTime();
|
|
||||||
qsrand((uint)time.msec());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Free functions in BlackMisc
|
//! Free functions in BlackMisc
|
||||||
@@ -258,6 +253,9 @@ namespace BlackMisc
|
|||||||
//! \remarks Used in order to debug code, do not remove
|
//! \remarks Used in order to debug code, do not remove
|
||||||
BLACKMISC_EXPORT void displayAllUserMetatypesTypes(QTextStream &out);
|
BLACKMISC_EXPORT void displayAllUserMetatypesTypes(QTextStream &out);
|
||||||
|
|
||||||
|
//! Get all user metatypes
|
||||||
|
BLACKMISC_EXPORT QString getAllUserMetatypesTypes(const QString &separator = "\n");
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Calculate a single hash value based on a list of individual hash values
|
* \brief Calculate a single hash value based on a list of individual hash values
|
||||||
* \param values
|
* \param values
|
||||||
|
|||||||
@@ -131,6 +131,13 @@ namespace BlackMisc
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Convenience function JSON as string
|
||||||
|
QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented) const
|
||||||
|
{
|
||||||
|
QJsonDocument jsonDoc(toJson());
|
||||||
|
return jsonDoc.toJson(format);
|
||||||
|
}
|
||||||
|
|
||||||
//! \copydoc CValueObject::convertFromJson
|
//! \copydoc CValueObject::convertFromJson
|
||||||
void convertFromJson(const QJsonObject &json)
|
void convertFromJson(const QJsonObject &json)
|
||||||
{
|
{
|
||||||
@@ -144,6 +151,12 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Assign from JSON object string
|
||||||
|
void convertFromJson(const QString &jsonString)
|
||||||
|
{
|
||||||
|
convertFromJson(BlackMisc::Json::jsonObjectFromString(jsonString));
|
||||||
|
}
|
||||||
|
|
||||||
//! \copydoc BlackMisc::CValueObject::convertToQString
|
//! \copydoc BlackMisc::CValueObject::convertToQString
|
||||||
QString convertToQString(bool i18n = false) const
|
QString convertToQString(bool i18n = false) const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
/* Copyright (C) 2015
|
|
||||||
* swift project Community / Contributors
|
|
||||||
*
|
|
||||||
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
|
||||||
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
|
||||||
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
|
||||||
* contained in the LICENSE file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "blackmisc/dbus.h"
|
|
||||||
#include "blackmisc/blackmiscfreefunctions.h"
|
|
||||||
|
|
||||||
const QDBusArgument &operator>>(const QDBusArgument &argument, QPixmap &pixmap)
|
|
||||||
{
|
|
||||||
QByteArray ba;
|
|
||||||
argument.beginStructure();
|
|
||||||
argument >> ba;
|
|
||||||
BlackMisc::pngByteArrayToPixmapRef(ba, pixmap);
|
|
||||||
argument.endStructure();
|
|
||||||
return argument;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDBusArgument &operator<<(QDBusArgument &argument, const QPixmap &pixmap)
|
|
||||||
{
|
|
||||||
QByteArray ba;
|
|
||||||
BlackMisc::pixmapToPngByteArray(pixmap, ba);
|
|
||||||
argument.beginStructure();
|
|
||||||
argument << ba;
|
|
||||||
argument.endStructure();
|
|
||||||
return argument;
|
|
||||||
}
|
|
||||||
@@ -21,7 +21,6 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
namespace Mixin
|
namespace Mixin
|
||||||
{
|
{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* CRTP class template which will generate marshalling operators for a derived class with its own marshalling implementation.
|
* CRTP class template which will generate marshalling operators for a derived class with its own marshalling implementation.
|
||||||
*
|
*
|
||||||
@@ -124,14 +123,4 @@ const QDBusArgument &operator >>(const QDBusArgument &arg, E &value)
|
|||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* Non member non-friend streaming for QPixmap
|
|
||||||
*/
|
|
||||||
const QDBusArgument &operator>>(const QDBusArgument &argument, QPixmap &pixmap);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Non member non-friend streaming for QPixmap
|
|
||||||
*/
|
|
||||||
QDBusArgument &operator<<(QDBusArgument &argument, const QPixmap &pixmap);
|
|
||||||
|
|
||||||
#endif // guard
|
#endif // guard
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ namespace BlackMisc
|
|||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CFileUtils::readFileToString(const QString &filePath, const QString &fileName)
|
||||||
|
{
|
||||||
|
return readFileToString(appendFilePaths(filePath, fileName));
|
||||||
|
}
|
||||||
|
|
||||||
bool CFileUtils::writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath)
|
bool CFileUtils::writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath)
|
||||||
{
|
{
|
||||||
if (fileNameAndPath.isEmpty()) { return false; }
|
if (fileNameAndPath.isEmpty()) { return false; }
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ namespace BlackMisc
|
|||||||
//! Read file into string
|
//! Read file into string
|
||||||
static QString readFileToString(const QString &fileNameAndPath);
|
static QString readFileToString(const QString &fileNameAndPath);
|
||||||
|
|
||||||
|
//! Read file into string
|
||||||
|
static QString readFileToString(const QString &filePath, const QString &fileName);
|
||||||
|
|
||||||
//! Write string to text file in background
|
//! Write string to text file in background
|
||||||
static bool writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath);
|
static bool writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath);
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,20 @@ const QJsonValue &operator >>(const QJsonValue &json, QDateTime &value)
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QJsonValue &operator >>(const QJsonValue &json, QPixmap &value)
|
||||||
|
{
|
||||||
|
const QString hex(json.toString());
|
||||||
|
BlackMisc::pngHexStringToPixmapRef(hex, value);
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QJsonValue &operator >>(const QJsonValue &json, QByteArray &value)
|
||||||
|
{
|
||||||
|
const QString hex(json.toString());
|
||||||
|
value = BlackMisc::byteArrayFromHexString(hex);
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
const QJsonValueRef &operator >>(const QJsonValueRef &json, int &value)
|
const QJsonValueRef &operator >>(const QJsonValueRef &json, int &value)
|
||||||
{
|
{
|
||||||
value = json.toInt();
|
value = json.toInt();
|
||||||
@@ -126,10 +140,10 @@ const QJsonValueRef &operator >>(const QJsonValueRef &json, QPixmap &value)
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QJsonValue &operator >>(const QJsonValue &json, QPixmap &value)
|
const QJsonValueRef &operator >>(const QJsonValueRef &json, QByteArray &value)
|
||||||
{
|
{
|
||||||
const QString hex(json.toString());
|
const QString hex(json.toString());
|
||||||
BlackMisc::pngHexStringToPixmapRef(hex, value);
|
value = BlackMisc::byteArrayFromHexString(hex);
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,6 +208,13 @@ QJsonArray &operator<<(QJsonArray &json, const QPixmap &value)
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QJsonArray &operator<<(QJsonArray &json, const QByteArray &value)
|
||||||
|
{
|
||||||
|
QString pm(BlackMisc::byteArrayFromHexString(value));
|
||||||
|
json.append(QJsonValue(pm));
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const int &> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const int &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
@@ -255,6 +276,13 @@ QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QPixma
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QByteArray &> &value)
|
||||||
|
{
|
||||||
|
QString pm(BlackMisc::bytesToHexString(value.second));
|
||||||
|
json.insert(value.first, pm);
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
QJsonObject BlackMisc::Json::jsonObjectFromString(const QString &json)
|
QJsonObject BlackMisc::Json::jsonObjectFromString(const QString &json)
|
||||||
{
|
{
|
||||||
if (json.isEmpty()) { return QJsonObject();}
|
if (json.isEmpty()) { return QJsonObject();}
|
||||||
|
|||||||
@@ -16,12 +16,14 @@
|
|||||||
#include "blackmisc/tuple.h"
|
#include "blackmisc/tuple.h"
|
||||||
#include "blackmisc/inheritance_traits.h"
|
#include "blackmisc/inheritance_traits.h"
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#include <QJsonDocument>
|
||||||
#include <QJsonValue>
|
#include <QJsonValue>
|
||||||
#include <QJsonValueRef>
|
#include <QJsonValueRef>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
#include <QByteArray>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -41,6 +43,7 @@ BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, double &v
|
|||||||
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, bool &value);
|
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, bool &value);
|
||||||
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, QDateTime &value);
|
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, QDateTime &value);
|
||||||
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, QPixmap &value);
|
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, QPixmap &value);
|
||||||
|
BLACKMISC_EXPORT const QJsonValue &operator >>(const QJsonValue &json, QByteArray &value);
|
||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, int &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, int &value);
|
||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, qlonglong &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, qlonglong &value);
|
||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, qulonglong &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, qulonglong &value);
|
||||||
@@ -51,6 +54,7 @@ BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, dou
|
|||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, bool &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, bool &value);
|
||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, QDateTime &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, QDateTime &value);
|
||||||
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, QPixmap &value);
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, QPixmap &value);
|
||||||
|
BLACKMISC_EXPORT const QJsonValueRef &operator >>(const QJsonValueRef &json, QByteArray &value);
|
||||||
|
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
@@ -98,6 +102,7 @@ BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const double value);
|
|||||||
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const bool value);
|
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const bool value);
|
||||||
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const QDateTime &value);
|
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const QDateTime &value);
|
||||||
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const QPixmap &value);
|
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const QPixmap &value);
|
||||||
|
BLACKMISC_EXPORT QJsonArray &operator<<(QJsonArray &json, const QByteArray &value);
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
//! \name Streaming operators for QJsonObject (from value)
|
//! \name Streaming operators for QJsonObject (from value)
|
||||||
@@ -113,6 +118,7 @@ BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QStr
|
|||||||
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const bool &> &value);
|
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const bool &> &value);
|
||||||
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QDateTime &> &value);
|
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QDateTime &> &value);
|
||||||
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QPixmap &> &value);
|
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QPixmap &> &value);
|
||||||
|
BLACKMISC_EXPORT QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QByteArray &> &value);
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
namespace BlackMisc
|
namespace BlackMisc
|
||||||
@@ -198,6 +204,13 @@ namespace BlackMisc
|
|||||||
return Json::appendJsonObject(json, baseToJson(static_cast<const BaseOfT<Derived> *>(derived())));
|
return Json::appendJsonObject(json, baseToJson(static_cast<const BaseOfT<Derived> *>(derived())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Convenience function JSON as string
|
||||||
|
QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented) const
|
||||||
|
{
|
||||||
|
QJsonDocument jsonDoc(toJson());
|
||||||
|
return jsonDoc.toJson(format);
|
||||||
|
}
|
||||||
|
|
||||||
//! Assign from JSON object
|
//! Assign from JSON object
|
||||||
void convertFromJson(const QJsonObject &json)
|
void convertFromJson(const QJsonObject &json)
|
||||||
{
|
{
|
||||||
@@ -205,6 +218,12 @@ namespace BlackMisc
|
|||||||
BlackMisc::deserializeJson(json, Private::EncapsulationBreaker::toMetaTuple(*derived()));
|
BlackMisc::deserializeJson(json, Private::EncapsulationBreaker::toMetaTuple(*derived()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Assign from JSON object string
|
||||||
|
void convertFromJson(const QString &jsonString)
|
||||||
|
{
|
||||||
|
convertFromJson(BlackMisc::Json::jsonObjectFromString(jsonString));
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const Derived *derived() const { return static_cast<const Derived *>(this); }
|
const Derived *derived() const { return static_cast<const Derived *>(this); }
|
||||||
Derived *derived() { return static_cast<Derived *>(this); }
|
Derived *derived() { return static_cast<Derived *>(this); }
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "blackmisc/math/mathutils.h"
|
#include "blackmisc/math/mathutils.h"
|
||||||
|
#include <QThreadStorage>
|
||||||
|
#include <QTime>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@@ -77,5 +79,19 @@ namespace BlackMisc
|
|||||||
return (result >= 0.0) ? result : result + 360.0;
|
return (result >= 0.0) ? result : result + 360.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CMathUtils::randomInteger(int low, int high)
|
||||||
|
{
|
||||||
|
static QThreadStorage<uint> seeds;
|
||||||
|
if (!seeds.hasLocalData())
|
||||||
|
{
|
||||||
|
// seed is per thread!
|
||||||
|
uint seed = static_cast<uint>(QTime::currentTime().msec());
|
||||||
|
qsrand(seed);
|
||||||
|
seeds.setLocalData(seed);
|
||||||
|
}
|
||||||
|
int r(qrand());
|
||||||
|
return r % ((high + 1) - low) + low;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -100,10 +100,7 @@ namespace BlackMisc
|
|||||||
static double normalizeDegrees(double degrees);
|
static double normalizeDegrees(double degrees);
|
||||||
|
|
||||||
//! Random number between low and high
|
//! Random number between low and high
|
||||||
static int randomInteger(int low, int high)
|
static int randomInteger(int low, int high);
|
||||||
{
|
|
||||||
return qrand() % ((high + 1) - low) + low;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
namespace BlackMisc
|
namespace BlackMisc
|
||||||
{
|
{
|
||||||
|
|
||||||
CPixmap::CPixmap() = default;
|
CPixmap::CPixmap() = default;
|
||||||
|
|
||||||
CPixmap::CPixmap(const QPixmap &pixmap) : m_pixmap(pixmap), m_hasCachedPixmap(true)
|
CPixmap::CPixmap(const QPixmap &pixmap) : m_pixmap(pixmap), m_hasCachedPixmap(true)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ namespace BlackMisc
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CPixmap, (
|
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CPixmap, (
|
||||||
attr(o.m_array, flags<DisabledForJson>())
|
attr(o.m_array)
|
||||||
))
|
))
|
||||||
Q_DECLARE_METATYPE(BlackMisc::CPixmap)
|
Q_DECLARE_METATYPE(BlackMisc::CPixmap)
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,9 @@ namespace BlackMisc
|
|||||||
//! \copydoc BlackMisc::Mixin::JsonByTuple::toJson
|
//! \copydoc BlackMisc::Mixin::JsonByTuple::toJson
|
||||||
using Mixin::JsonByTuple<Derived>::toJson;
|
using Mixin::JsonByTuple<Derived>::toJson;
|
||||||
|
|
||||||
|
//! \copydoc BlackMisc::Mixin::JsonByTuple::toJsonString
|
||||||
|
using Mixin::JsonByTuple<Derived>::toJsonString;
|
||||||
|
|
||||||
//! \copydoc BlackMisc::Mixin::JsonByTuple::convertFromJson
|
//! \copydoc BlackMisc::Mixin::JsonByTuple::convertFromJson
|
||||||
using Mixin::JsonByTuple<Derived>::convertFromJson;
|
using Mixin::JsonByTuple<Derived>::convertFromJson;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user