13#include <codeanalysis\warnings.h>
17VSWARNING(ALL_CODE_ANALYSIS_WARNINGS)
21CLANGWARNING("-Wlanguage-extension-token")
22CLANGWARNING("-Wmicrosoft-enum-value")
28 class strong_ordering;
41#if QT_VERSION > 0x060000
43#elif QT_VERSION > 0x050000
50Q_DECLARE_METATYPE(
string)
53Q_DECLARE_METATYPE(IVect2)
54Q_DECLARE_METATYPE(FVect2)
55Q_DECLARE_METATYPE(DVect2)
56Q_DECLARE_METATYPE(UVect2)
57Q_DECLARE_METATYPE(DAVect2)
58Q_DECLARE_METATYPE(FAVect2)
59Q_DECLARE_METATYPE(IAVect2)
60Q_DECLARE_METATYPE(UAVect2)
61Q_DECLARE_METATYPE(IVect3)
62Q_DECLARE_METATYPE(FVect3)
63Q_DECLARE_METATYPE(DVect3)
64Q_DECLARE_METATYPE(UVect3)
65Q_DECLARE_METATYPE(DAVect3)
66Q_DECLARE_METATYPE(FAVect3)
67Q_DECLARE_METATYPE(IAVect3)
68Q_DECLARE_METATYPE(UAVect3)
73Q_DECLARE_METATYPE(
Quat2)
74Q_DECLARE_METATYPE(
Quat3)
86 setEncoding(QStringConverter::Encoding::Utf8);
89 BASE_EXPORT ItascaTextStream(
const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly) : QTextStream(array,openMode) {
90 setEncoding(QStringConverter::Encoding::Utf8);
93 BASE_EXPORT ItascaTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite) : QTextStream(array,openMode) {
94 setEncoding(QStringConverter::Encoding::Utf8);
98 setEncoding(QStringConverter::Encoding::Utf8);
101 BASE_EXPORT ItascaTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite) : QTextStream(fileHandle,openMode) {
102 setEncoding(QStringConverter::Encoding::Utf8);
106 setEncoding(QStringConverter::Encoding::Utf8);
122 ds << v.
x() << v.
y();
127 ds >> v.
rx() >> v.
ry();
132 ds << v.
x() << v.
y() << v.
z();
137 ds >> v.
rx() >> v.
ry() >> v.
rz();
153 ds << av.
x() << av.
y() << av.
z();
158 ds >> av.
rx() >> av.
ry() >> av.
rz();
165 ds << v.
x1() << v.
x2() << v.
y1() << v.
y2();
175 ds << v.
x1() << v.
x2() << v.
y1() << v.
y2() << v.
z1() << v.
z2();
217 int w = ds.fieldWidth();
220 ds << qSetFieldWidth(0) <<
"(" << qSetFieldWidth(w) << v.
x();
221 ds << qSetFieldWidth(0) <<
"," << qSetFieldWidth(w) << v.
y();
222 ds << qSetFieldWidth(0) <<
")";
228 int w = ds.fieldWidth();
231 ds << qSetFieldWidth(0) <<
"(" << qSetFieldWidth(w) << v.
x();
232 ds << qSetFieldWidth(0) <<
"," << qSetFieldWidth(w) << v.
y();
233 ds << qSetFieldWidth(0) <<
"," << qSetFieldWidth(w) << v.
z();
234 ds << qSetFieldWidth(0) <<
")";
246 QPoint ret(to<int>(v.
x()),to<int>(v.
y()));
251 QPointF ret(to<qreal>(v.
x()),to<qreal>(v.
y()));
256 DVect2 dv2(to<double>(p.x()),to<double>(p.y()));
261 DVect2 dv2(to<double>(p.width()),to<double>(p.height()));
266 FVect2 fv2(to<float>(p.x()),to<float>(p.y()));
271 IVect2 iv2(to<int32>(p.x()),to<int32>(p.y()));
275inline I64Vect2 toI64Vect2(
const QPoint &p) {
276 I64Vect2 iv2(to<int64>(p.x()),to<int64>(p.y()));
282 UVect2 uv2(to<uint32>(p.x()),to<uint32>(p.y()));
287 DVect2 dv2(to<double>(p.x()),to<double>(p.y()));
292 FVect2 fv2(to<float>(p.x()),to<float>(p.y()));
297 IVect2 iv2(to<int32>(p.x()),to<int32>(p.y()));
302 UVect2 uv2(to<uint32>(p.x()),to<uint32>(p.y()));
309 int type1 =
static_cast<int>(v1.typeId());
310 int type2 =
static_cast<int>(v2.typeId());
312 if (type1 == QMetaType::User)
314 type1 = v1.userType();
315 if (type2 == QMetaType::User)
316 type2 = v2.userType();
321 return type1 == type2;
328QVariant
toQVariant(
const T &t) { QVariant v; v.setValue(t);
return v; }
381struct fmt::formatter<QVariant> :
public fmt::formatter<string> {
382 template <
typename ParseContext>
383 constexpr auto parse(ParseContext &ctx) {
384 return fmt::formatter<string>::parse(ctx);
387 template <
typename FormatContext>
auto format(QVariant
const& val, FormatContext& ctx) {
389 auto type = val.typeId();
390 if (type == QMetaType::Bool)
391 out = base::ts(val.toBool());
392 else if (type == QMetaType::Int)
393 out = base::ts(val.toInt());
394 else if (type == QMetaType::UInt)
395 out = base::ts(val.toUInt());
396 else if (type == QMetaType::LongLong)
397 out = base::ts(val.toLongLong());
398 else if (type == QMetaType::ULongLong)
399 out = base::ts(val.toULongLong());
400 else if (type == QMetaType::Double)
401 out = base::ts(val.toDouble());
402 else if (type == QMetaType::QString)
403 out = base::ts(val.toString());
404 else if (type == QMetaType::QVariantList) {
406 auto list = val.toList();
407 for (
int i=0;i<list.size();++i) {
409 out += base::ts(list[i].toDouble());
412 }
else if (type == qMetaTypeId<IVect2>())
413 out = base::ts(val.value<IVect2 >());
414 else if (type == qMetaTypeId<DVect2>())
415 out = base::ts(val.value<DVect2 >());
416 else if (type == qMetaTypeId<IVect3>())
417 out = base::ts(val.value<IVect3 >());
418 else if (type == qMetaTypeId<DVect3>())
419 out = base::ts(val.value<DVect3 >());
420 else if (type == qMetaTypeId<DAVect2>())
421 out = base::ts(val.value<DAVect2>());
422 else if (type == qMetaTypeId<DAVect3>())
423 out = base::ts(val.value<DAVect3>());
425 throw Exception(
"Unable to format QVariant type {}.", val.typeName());
426 return fmt::formatter<string>::format(out, ctx);
One stop include for all objects defined as part of base interface.
2D Angular vector class.
Definition avect.h:43
T & rz()
Returns a reference to the z component, cannot reference access x or y.
Definition avect.h:81
const T & z() const
Member access - returns the z component of the 2D angular vector.
Definition avect.h:70
3D Angular vector class.
Definition avect.h:176
Class for specifying a particular 2D cartesian axes system, and converting to and from it.
Definition axes.h:21
Class for specifying a particular 3D cartesian axes system, and converting to and from it.
Definition axes.h:121
Class for specifying a particular 2D cartesian axes system, and converting to and from it.
Definition caxes.h:25
Class for specifying a particular 3D cartesian axes system, and converting to and from it.
Definition caxes.h:103
Base exception class for all Itasca code.
Definition baseexception.h:10
2D cartesian region in space.
Definition extent2.h:12
T & ry1()
Access reference to the minimum y extent.
Definition extent2.h:129
T & ry2()
Access reference to the maximum y extent.
Definition extent2.h:131
T & rx1()
Access reference to the minimum x extent.
Definition extent2.h:125
const T & y1() const
Returns the lower y-bound.
Definition extent2.h:37
const T & y2() const
Returns the upper y-bound.
Definition extent2.h:39
const T & x2() const
Returns the upper x-bound.
Definition extent2.h:35
T & rx2()
Access reference to the maximum x extent.
Definition extent2.h:127
const T & x1() const
Returns the lower x-bound.
Definition extent2.h:33
A Class representing a cartesian extent in 3D.
Definition extent3.h:16
const T & z1() const
Returns the lower bound of the extent in the y-direction.
Definition extent3.h:50
const T & x1() const
Returns the lower bound of the extent in the x-direction.
Definition extent3.h:42
const T & y2() const
Returns the upper bound of the extent in the y-direction.
Definition extent3.h:48
T & rz1()
Reference access to the minimum z extent.
Definition extent3.h:174
T & ry1()
Reference access to the minimum y extent.
Definition extent3.h:172
T & ry2()
Reference access to the maximum y extent.
Definition extent3.h:173
T & rx2()
Reference access to the maximum x extent.
Definition extent3.h:171
T & rz2()
Definition extent3.h:175
T & rx1()
Reference access to the minimum x extent.
Definition extent3.h:170
const T & z2() const
Returns the upper bound of the extent in the y-direction.
Definition extent3.h:52
const T & y1() const
Returns the lower bound of the extent in the y-direction.
Definition extent3.h:46
const T & x2() const
Returns the upper bound of the extent in the x-direction.
Definition extent3.h:44
Class for storing an "orientation", or a direction in 2D or 3D space.
Definition orientation.h:50
Class for storing an "orientation", or a direction in 2D or 3D space.
Definition orientation.h:99
2D quaternion-like utility class. In this case only the angle (in radians) is stored as opposed to th...
Definition quat.h:20
3D quaternion utility class.
Definition quat.h:108
A symmetric 2nd order tensor.
Definition symtensor.h:22
A simpler (and slightly faster) version of a QVariant, added for interfaces that do not use Qt.
Definition variant.h:32
2D vector utility class.
Definition vect.h:34
constexpr const T & x() const
X component access.
Definition vect.h:58
T & rx()
Reference access to x-component.
Definition vect.h:64
constexpr const T & y() const
Y component access.
Definition vect.h:60
T & ry()
Reference access to y-component.
Definition vect.h:66
3D vector utility class.
Definition vect.h:163
constexpr const T & y() const
The y-component of the vector.
Definition vect.h:186
T & rx()
Reference access to the x-component of the vector.
Definition vect.h:192
T & ry()
Reference access to the y-component of the vector.
Definition vect.h:194
constexpr const T & x() const
The x-component of the vector.
Definition vect.h:184
constexpr const T & z() const
The z-component of the vector.
Definition vect.h:188
T & rz()
Reference access to the z-component of the vector.
Definition vect.h:196
QDataStream & operator>>(QDataStream &ds, Vector2< T > &v)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition basetoqt.h:126
QPointF toQPointF(const Vector2< T > &v)
Convert a Vector2 to a QPointF.
Definition basetoqt.h:250
BASE_EXPORT bool isDirectoryProtected(const QDir &dir, const QString ®istryString)
Definition basetoqt.cpp:472
BASE_EXPORT QString getInstallDirectory(const QString ®istryString)
Definition basetoqt.cpp:510
BASE_EXPORT bool setCurrentDirectory(const IString &dir)
Definition basetoqt.cpp:553
QPoint toQPoint(const Vector2< T > &v)
Convert a Vector2 to a QPoint.
Definition basetoqt.h:245
QVariant toQVariant(const T &t)
Definition basetoqt.h:328
IVect2 toIVect2(const QPoint &p)
Convert a QPoint to an IVect2.
Definition basetoqt.h:270
UVect2 toUVect2(const QPoint &p)
Convert a QPoint to a UVect2.
Definition basetoqt.h:281
BASE_EXPORT Variant toVariant(const QVariant &v)
Definition basetoqt.cpp:368
BASE_EXPORT QString convertFilePath(const QString &filePath, const QDir &previousDir, const QDir &newDir)
Definition basetoqt.cpp:521
QDataStream & operator<<(QDataStream &ds, const Vector2< T > &v)
Allows a Base type to be written to, or read from, a QDataStream.
Definition basetoqt.h:121
FVect2 toFVect2(const QPoint &p)
Convert a QPoint to an FVect2.
Definition basetoqt.h:265
#define BASE_EXPORT
Definition basedef.h:24
BASE_EXPORT QString getCurrentDirectory()
Definition basetoqt.cpp:558
BASE_EXPORT void initializeQtToBase()
Definition basetoqt.cpp:11
BASE_EXPORT QDir getCurrentDirectoryObject()
Definition basetoqt.cpp:563
bool checkQVariantTypes(const QVariant &v1, const QVariant &v2)
returns true if Variants have the same type
Definition basetoqt.h:307
DVect2 toDVect2(const QPoint &p)
Convert a QPoint to a DVect2.
Definition basetoqt.h:255