-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRandomAddOn.cpp
35 lines (29 loc) · 1.05 KB
/
RandomAddOn.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**********************************************************************
* Provides an interface to QRandomGenerator for QML + JavaScript.
* QRandomGeneratory is a superior source of cryptographically-safe
* random values.
*********************************************************************/
#include <QtQml>
#include <QObject>
#include <QQmlEngine>
#include <QRandomGenerator>
#include "RandomAddOn.hpp"
static RandomAddOn RandomAddOnSingleton;
Q_INVOKABLE quint32 RandomAddOn::randomNumber() {
return QRandomGenerator::global()->generate();
}
Q_INVOKABLE float RandomAddOn::randomFloat() {
return (
(float) QRandomGenerator::global()->generate() /
(float) std::numeric_limits<quint32>::max()
);
}
Q_INVOKABLE QByteArray RandomAddOn::randomHexString() {
QByteArray ba;
ba.setNum(QRandomGenerator::global()->generate(), 16);
return ba;
}
void RandomAddOn::registerSingleton(QQmlEngine *qmlEngine) {
QQmlContext *rootContext = qmlEngine->rootContext();
rootContext->setContextProperty("Random", &RandomAddOnSingleton);
}