do not include <ciso646> with C++20
This commit is contained in:
parent
62f468b57b
commit
c8844853b5
|
@ -30,9 +30,13 @@
|
||||||
|
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <ciso646>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
||||||
#include "../vmisc/defglobal.h"
|
#include "../vmisc/defglobal.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,16 +36,18 @@
|
||||||
#include "../vgeometry/vlayoutplacelabel.h"
|
#include "../vgeometry/vlayoutplacelabel.h"
|
||||||
#include "../vlayout/vlayoutpiecepath.h"
|
#include "../vlayout/vlayoutpiecepath.h"
|
||||||
#include "../vlayout/vtextmanager.h"
|
#include "../vlayout/vtextmanager.h"
|
||||||
|
#include "../vmisc/compatibility.h"
|
||||||
#include "../vmisc/vcommonsettings.h"
|
#include "../vmisc/vcommonsettings.h"
|
||||||
#include "../vpatterndb/floatItemData/floatitemdef.h"
|
#include "../vpatterndb/floatItemData/floatitemdef.h"
|
||||||
#include "compatibility.h"
|
#include "../vwidgets/vpiecegrainline.h"
|
||||||
#include "svgfont/vsvgfont.h"
|
|
||||||
#include "vpiecegrainline.h"
|
|
||||||
#include "vplayoutliterals.h"
|
#include "vplayoutliterals.h"
|
||||||
#include <QFont>
|
#include <QFont>
|
||||||
#include <QXmlStreamAttributes>
|
#include <QXmlStreamAttributes>
|
||||||
#include <Qt>
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
QT_WARNING_PUSH
|
QT_WARNING_PUSH
|
||||||
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
|
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
|
||||||
|
|
|
@ -29,15 +29,19 @@
|
||||||
#ifndef VPLAYOUTFILEWRITER_H
|
#ifndef VPLAYOUTFILEWRITER_H
|
||||||
#define VPLAYOUTFILEWRITER_H
|
#define VPLAYOUTFILEWRITER_H
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
#include <QLocale>
|
#include <QLocale>
|
||||||
#include <QXmlStreamWriter>
|
#include <QXmlStreamWriter>
|
||||||
#include <QCoreApplication>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <ciso646>
|
|
||||||
|
|
||||||
#include "../vmisc/literals.h"
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../layout/layoutdef.h"
|
#include "../layout/layoutdef.h"
|
||||||
#include "../qmuparser/qmudef.h"
|
#include "../qmuparser/qmudef.h"
|
||||||
|
#include "../vmisc/literals.h"
|
||||||
|
|
||||||
class VPLayout;
|
class VPLayout;
|
||||||
class VPSheet;
|
class VPSheet;
|
||||||
|
@ -53,8 +57,8 @@ class VPLayoutFileWriter : public QXmlStreamWriter
|
||||||
Q_DECLARE_TR_FUNCTIONS(VPLayoutFileWriter) // NOLINT
|
Q_DECLARE_TR_FUNCTIONS(VPLayoutFileWriter) // NOLINT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VPLayoutFileWriter()= default;
|
VPLayoutFileWriter() = default;
|
||||||
~VPLayoutFileWriter()= default;
|
~VPLayoutFileWriter() = default;
|
||||||
|
|
||||||
void WriteFile(const VPLayoutPtr &layout, QIODevice *file);
|
void WriteFile(const VPLayoutPtr &layout, QIODevice *file);
|
||||||
|
|
||||||
|
@ -75,20 +79,20 @@ private:
|
||||||
void WriteMargins(const QMarginsF &margins, bool ignore);
|
void WriteMargins(const QMarginsF &margins, bool ignore);
|
||||||
void WriteSize(QSizeF size);
|
void WriteSize(QSizeF size);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T> void SetAttribute(const QString &name, const T &value);
|
||||||
void SetAttribute(const QString &name, const T &value);
|
|
||||||
|
|
||||||
template <size_t N>
|
template <size_t N>
|
||||||
void SetAttribute(const QString &name, const char (&value)[N]); //NOLINT(cppcoreguidelines-avoid-c-arrays) NOLINT(hicpp-avoid-c-arrays) NOLINT(modernize-avoid-c-arrays)
|
void SetAttribute(const QString &name,
|
||||||
|
const char (&value)[N]); // NOLINT(cppcoreguidelines-avoid-c-arrays) NOLINT(hicpp-avoid-c-arrays)
|
||||||
|
// NOLINT(modernize-avoid-c-arrays)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void SetAttributeOrRemoveIf(const QString &name, const T &value,
|
void SetAttributeOrRemoveIf(const QString &name, const T &value,
|
||||||
const std::function<bool(const T&)> &removeCondition);
|
const std::function<bool(const T &)> &removeCondition);
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template<typename T>
|
template <typename T> void VPLayoutFileWriter::SetAttribute(const QString &name, const T &value)
|
||||||
void VPLayoutFileWriter::SetAttribute(const QString &name, const T &value)
|
|
||||||
{
|
{
|
||||||
// See specification for xs:decimal
|
// See specification for xs:decimal
|
||||||
const QLocale locale = QLocale::c();
|
const QLocale locale = QLocale::c();
|
||||||
|
@ -96,29 +100,28 @@ void VPLayoutFileWriter::SetAttribute(const QString &name, const T &value)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <>
|
template <> inline void VPLayoutFileWriter::SetAttribute<QString>(const QString &name, const QString &value)
|
||||||
inline void VPLayoutFileWriter::SetAttribute<QString>(const QString &name, const QString &value)
|
|
||||||
{
|
{
|
||||||
writeAttribute(name, value);
|
writeAttribute(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <>
|
template <> inline void VPLayoutFileWriter::SetAttribute<QChar>(const QString &name, const QChar &value)
|
||||||
inline void VPLayoutFileWriter::SetAttribute<QChar>(const QString &name, const QChar &value)
|
|
||||||
{
|
{
|
||||||
writeAttribute(name, value);
|
writeAttribute(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <>
|
template <> inline void VPLayoutFileWriter::SetAttribute<bool>(const QString &name, const bool &value)
|
||||||
inline void VPLayoutFileWriter::SetAttribute<bool>(const QString &name, const bool &value)
|
|
||||||
{
|
{
|
||||||
writeAttribute(name, value ? trueStr : falseStr);
|
writeAttribute(name, value ? trueStr : falseStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <size_t N>
|
template <size_t N>
|
||||||
inline void VPLayoutFileWriter::SetAttribute(const QString &name, const char (&value)[N]) //NOLINT(cppcoreguidelines-avoid-c-arrays) NOLINT(hicpp-avoid-c-arrays) NOLINT(modernize-avoid-c-arrays)
|
inline void VPLayoutFileWriter::SetAttribute(
|
||||||
|
const QString &name, const char (&value)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays)
|
||||||
|
// NOLINT(hicpp-avoid-c-arrays) NOLINT(modernize-avoid-c-arrays)
|
||||||
{
|
{
|
||||||
writeAttribute(name, QString(value));
|
writeAttribute(name, QString(value));
|
||||||
}
|
}
|
||||||
|
@ -126,7 +129,7 @@ inline void VPLayoutFileWriter::SetAttribute(const QString &name, const char (&v
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline void VPLayoutFileWriter::SetAttributeOrRemoveIf(const QString &name, const T &value,
|
inline void VPLayoutFileWriter::SetAttributeOrRemoveIf(const QString &name, const T &value,
|
||||||
const std::function<bool(const T&)> &removeCondition)
|
const std::function<bool(const T &)> &removeCondition)
|
||||||
{
|
{
|
||||||
if (not removeCondition(value))
|
if (not removeCondition(value))
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,11 @@
|
||||||
|
|
||||||
#include "dialogdatetimeformats.h"
|
#include "dialogdatetimeformats.h"
|
||||||
#include "ui_dialogdatetimeformats.h"
|
#include "ui_dialogdatetimeformats.h"
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogDateTimeFormats::DialogDateTimeFormats(const QDate &date, const QStringList &predefinedFormats,
|
DialogDateTimeFormats::DialogDateTimeFormats(const QDate &date, const QStringList &predefinedFormats,
|
||||||
|
@ -69,7 +73,7 @@ auto DialogDateTimeFormats::GetFormats() const -> QStringList
|
||||||
{
|
{
|
||||||
QStringList formats;
|
QStringList formats;
|
||||||
|
|
||||||
for (int i=0; i<ui->listWidget->count(); ++i)
|
for (int i = 0; i < ui->listWidget->count(); ++i)
|
||||||
{
|
{
|
||||||
if (const QListWidgetItem *lineItem = ui->listWidget->item(i))
|
if (const QListWidgetItem *lineItem = ui->listWidget->item(i))
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,11 @@
|
||||||
|
|
||||||
#include "dialogknownmaterials.h"
|
#include "dialogknownmaterials.h"
|
||||||
#include "ui_dialogknownmaterials.h"
|
#include "ui_dialogknownmaterials.h"
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogKnownMaterials::DialogKnownMaterials(QWidget *parent)
|
DialogKnownMaterials::DialogKnownMaterials(QWidget *parent)
|
||||||
|
@ -80,7 +84,7 @@ auto DialogKnownMaterials::GetList() const -> QStringList
|
||||||
{
|
{
|
||||||
QStringList list;
|
QStringList list;
|
||||||
|
|
||||||
for (int i=0; i<ui->listWidget->count(); ++i)
|
for (int i = 0; i < ui->listWidget->count(); ++i)
|
||||||
{
|
{
|
||||||
if (const QListWidgetItem *item = ui->listWidget->item(i))
|
if (const QListWidgetItem *item = ui->listWidget->item(i))
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,11 @@
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QSvgRenderer>
|
#include <QSvgRenderer>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../vmisc/compatibility.h"
|
#include "../vmisc/compatibility.h"
|
||||||
|
|
||||||
|
@ -72,7 +76,7 @@ auto MimeTypeFromByteArray(const QByteArray &data) -> QMimeType
|
||||||
QSet<QString> aliases = ConvertToSet<QString>(mime.aliases());
|
QSet<QString> aliases = ConvertToSet<QString>(mime.aliases());
|
||||||
aliases.insert(mime.name());
|
aliases.insert(mime.name());
|
||||||
|
|
||||||
QSet<QString> gzipMime {"application/gzip", "application/x-gzip"};
|
QSet<QString> gzipMime{"application/gzip", "application/x-gzip"};
|
||||||
|
|
||||||
if (gzipMime.contains(aliases))
|
if (gzipMime.contains(aliases))
|
||||||
{
|
{
|
||||||
|
@ -92,7 +96,7 @@ auto PrepareImageFilters() -> QString
|
||||||
const QList<QByteArray> supportedFormats = QImageReader::supportedImageFormats();
|
const QList<QByteArray> supportedFormats = QImageReader::supportedImageFormats();
|
||||||
const QSet<QString> filterFormats{"bmp", "jpeg", "jpg", "png", "svg", "svgz", "tif", "tiff", "webp"};
|
const QSet<QString> filterFormats{"bmp", "jpeg", "jpg", "png", "svg", "svgz", "tif", "tiff", "webp"};
|
||||||
QStringList sufixes;
|
QStringList sufixes;
|
||||||
for (const auto& format : supportedFormats)
|
for (const auto &format : supportedFormats)
|
||||||
{
|
{
|
||||||
if (filterFormats.contains(format))
|
if (filterFormats.contains(format))
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,20 +27,24 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#include "vbackgroundpatternimage.h"
|
#include "vbackgroundpatternimage.h"
|
||||||
|
|
||||||
#include "utils.h"
|
|
||||||
#include "../vmisc/compatibility.h"
|
#include "../vmisc/compatibility.h"
|
||||||
#include "../vmisc/defglobal.h"
|
#include "../vmisc/defglobal.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
#include <QMimeType>
|
#include <QBuffer>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QMimeDatabase>
|
|
||||||
#include <QPixmap>
|
|
||||||
#include <QBuffer>
|
|
||||||
#include <QImageReader>
|
#include <QImageReader>
|
||||||
#include <ciso646>
|
#include <QMimeDatabase>
|
||||||
|
#include <QMimeType>
|
||||||
|
#include <QPixmap>
|
||||||
#include <QSvgRenderer>
|
#include <QSvgRenderer>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
const QString VBackgroundPatternImage::brokenImage = QStringLiteral("://icon/svg/broken_path.svg");
|
const QString VBackgroundPatternImage::brokenImage = QStringLiteral("://icon/svg/broken_path.svg");
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
@ -57,7 +61,7 @@ auto ScaleRasterImage(const QImage &image) -> QSize
|
||||||
const double ratioX = PrintDPI / (image.dotsPerMeterX() / 100. * 2.54);
|
const double ratioX = PrintDPI / (image.dotsPerMeterX() / 100. * 2.54);
|
||||||
const double ratioY = PrintDPI / (image.dotsPerMeterY() / 100. * 2.54);
|
const double ratioY = PrintDPI / (image.dotsPerMeterY() / 100. * 2.54);
|
||||||
const QSize imageSize = image.size();
|
const QSize imageSize = image.size();
|
||||||
return {qRound(imageSize.width()*ratioX), qRound(imageSize.height()*ratioY)};
|
return {qRound(imageSize.width() * ratioX), qRound(imageSize.height() * ratioY)};
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -65,7 +69,7 @@ auto ScaleVectorImage(const QSvgRenderer &renderer) -> QSize
|
||||||
{
|
{
|
||||||
const QSize imageSize = renderer.defaultSize();
|
const QSize imageSize = renderer.defaultSize();
|
||||||
constexpr double ratio = PrintDPI / 90.;
|
constexpr double ratio = PrintDPI / 90.;
|
||||||
return {qRound(imageSize.width()*ratio), qRound(imageSize.height()*ratio)};
|
return {qRound(imageSize.width() * ratio), qRound(imageSize.height() * ratio)};
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
|
@ -27,22 +27,25 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#include "vpatternimage.h"
|
#include "vpatternimage.h"
|
||||||
|
|
||||||
|
#include <QBuffer>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QFile>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QImageReader>
|
#include <QImageReader>
|
||||||
#include <QMimeDatabase>
|
#include <QMimeDatabase>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QRegularExpressionMatch>
|
#include <QRegularExpressionMatch>
|
||||||
#include <QSvgRenderer>
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QBuffer>
|
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QFile>
|
#include <QSvgRenderer>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "utils.h"
|
|
||||||
#include "../vmisc/compatibility.h"
|
#include "../vmisc/compatibility.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VPatternImage::FromFile(const QString &fileName) -> VPatternImage
|
auto VPatternImage::FromFile(const QString &fileName) -> VPatternImage
|
||||||
|
@ -148,7 +151,7 @@ auto VPatternImage::GetPixmap(int width, int height) const -> QPixmap
|
||||||
QImage image = imageReader.read();
|
QImage image = imageReader.read();
|
||||||
if (image.isNull())
|
if (image.isNull())
|
||||||
{
|
{
|
||||||
qCritical()<< tr("Couldn't read the image. Error: %1").arg(imageReader.errorString());
|
qCritical() << tr("Couldn't read the image. Error: %1").arg(imageReader.errorString());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,51 +34,51 @@
|
||||||
#define QT_DO_PRAGMA(text) _Pragma(#text)
|
#define QT_DO_PRAGMA(text) _Pragma(#text)
|
||||||
#if defined(Q_CC_INTEL) && defined(Q_CC_MSVC)
|
#if defined(Q_CC_INTEL) && defined(Q_CC_MSVC)
|
||||||
/* icl.exe: Intel compiler on Windows */
|
/* icl.exe: Intel compiler on Windows */
|
||||||
# undef QT_DO_PRAGMA /* not needed */
|
#undef QT_DO_PRAGMA /* not needed */
|
||||||
# define QT_WARNING_PUSH __pragma(warning(push))
|
#define QT_WARNING_PUSH __pragma(warning(push))
|
||||||
# define QT_WARNING_POP __pragma(warning(pop))
|
#define QT_WARNING_POP __pragma(warning(pop))
|
||||||
# define QT_WARNING_DISABLE_MSVC(number)
|
#define QT_WARNING_DISABLE_MSVC(number)
|
||||||
# define QT_WARNING_DISABLE_INTEL(number) __pragma(warning(disable: number))
|
#define QT_WARNING_DISABLE_INTEL(number) __pragma(warning(disable : number))
|
||||||
# define QT_WARNING_DISABLE_CLANG(text)
|
#define QT_WARNING_DISABLE_CLANG(text)
|
||||||
# define QT_WARNING_DISABLE_GCC(text)
|
#define QT_WARNING_DISABLE_GCC(text)
|
||||||
#elif defined(Q_CC_INTEL)
|
#elif defined(Q_CC_INTEL)
|
||||||
/* icc: Intel compiler on Linux or OS X */
|
/* icc: Intel compiler on Linux or OS X */
|
||||||
# define QT_WARNING_PUSH QT_DO_PRAGMA(warning(push))
|
#define QT_WARNING_PUSH QT_DO_PRAGMA(warning(push))
|
||||||
# define QT_WARNING_POP QT_DO_PRAGMA(warning(pop))
|
#define QT_WARNING_POP QT_DO_PRAGMA(warning(pop))
|
||||||
# define QT_WARNING_DISABLE_INTEL(number) QT_DO_PRAGMA(warning(disable: number))
|
#define QT_WARNING_DISABLE_INTEL(number) QT_DO_PRAGMA(warning(disable : number))
|
||||||
# define QT_WARNING_DISABLE_MSVC(number)
|
#define QT_WARNING_DISABLE_MSVC(number)
|
||||||
# define QT_WARNING_DISABLE_CLANG(text)
|
#define QT_WARNING_DISABLE_CLANG(text)
|
||||||
# define QT_WARNING_DISABLE_GCC(text)
|
#define QT_WARNING_DISABLE_GCC(text)
|
||||||
#elif defined(Q_CC_MSVC) && _MSC_VER >= 1500
|
#elif defined(Q_CC_MSVC) && _MSC_VER >= 1500
|
||||||
# undef QT_DO_PRAGMA /* not needed */
|
#undef QT_DO_PRAGMA /* not needed */
|
||||||
# define QT_WARNING_PUSH __pragma(warning(push))
|
#define QT_WARNING_PUSH __pragma(warning(push))
|
||||||
# define QT_WARNING_POP __pragma(warning(pop))
|
#define QT_WARNING_POP __pragma(warning(pop))
|
||||||
# define QT_WARNING_DISABLE_MSVC(number) __pragma(warning(disable: number))
|
#define QT_WARNING_DISABLE_MSVC(number) __pragma(warning(disable : number))
|
||||||
# define QT_WARNING_DISABLE_INTEL(number)
|
#define QT_WARNING_DISABLE_INTEL(number)
|
||||||
# define QT_WARNING_DISABLE_CLANG(text)
|
#define QT_WARNING_DISABLE_CLANG(text)
|
||||||
# define QT_WARNING_DISABLE_GCC(text)
|
#define QT_WARNING_DISABLE_GCC(text)
|
||||||
#elif defined(Q_CC_CLANG)
|
#elif defined(Q_CC_CLANG)
|
||||||
# define QT_WARNING_PUSH QT_DO_PRAGMA(clang diagnostic push)
|
#define QT_WARNING_PUSH QT_DO_PRAGMA(clang diagnostic push)
|
||||||
# define QT_WARNING_POP QT_DO_PRAGMA(clang diagnostic pop)
|
#define QT_WARNING_POP QT_DO_PRAGMA(clang diagnostic pop)
|
||||||
# define QT_WARNING_DISABLE_CLANG(text) QT_DO_PRAGMA(clang diagnostic ignored text)
|
#define QT_WARNING_DISABLE_CLANG(text) QT_DO_PRAGMA(clang diagnostic ignored text)
|
||||||
# define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text)// GCC directives work in Clang too
|
#define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text) // GCC directives work in Clang too
|
||||||
# define QT_WARNING_DISABLE_INTEL(number)
|
#define QT_WARNING_DISABLE_INTEL(number)
|
||||||
# define QT_WARNING_DISABLE_MSVC(number)
|
#define QT_WARNING_DISABLE_MSVC(number)
|
||||||
#elif defined(Q_CC_GNU) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
|
#elif defined(Q_CC_GNU) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
|
||||||
# define QT_WARNING_PUSH QT_DO_PRAGMA(GCC diagnostic push)
|
#define QT_WARNING_PUSH QT_DO_PRAGMA(GCC diagnostic push)
|
||||||
# define QT_WARNING_POP QT_DO_PRAGMA(GCC diagnostic pop)
|
#define QT_WARNING_POP QT_DO_PRAGMA(GCC diagnostic pop)
|
||||||
# define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text)
|
#define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text)
|
||||||
# define QT_WARNING_DISABLE_CLANG(text)
|
#define QT_WARNING_DISABLE_CLANG(text)
|
||||||
# define QT_WARNING_DISABLE_INTEL(number)
|
#define QT_WARNING_DISABLE_INTEL(number)
|
||||||
# define QT_WARNING_DISABLE_MSVC(number)
|
#define QT_WARNING_DISABLE_MSVC(number)
|
||||||
#else // All other compilers, GCC < 4.6 and MSVC < 2008
|
#else // All other compilers, GCC < 4.6 and MSVC < 2008
|
||||||
# define QT_WARNING_DISABLE_GCC(text)
|
#define QT_WARNING_DISABLE_GCC(text)
|
||||||
# define QT_WARNING_PUSH
|
#define QT_WARNING_PUSH
|
||||||
# define QT_WARNING_POP
|
#define QT_WARNING_POP
|
||||||
# define QT_WARNING_DISABLE_INTEL(number)
|
#define QT_WARNING_DISABLE_INTEL(number)
|
||||||
# define QT_WARNING_DISABLE_MSVC(number)
|
#define QT_WARNING_DISABLE_MSVC(number)
|
||||||
# define QT_WARNING_DISABLE_CLANG(text)
|
#define QT_WARNING_DISABLE_CLANG(text)
|
||||||
# define QT_WARNING_DISABLE_GCC(text)
|
#define QT_WARNING_DISABLE_GCC(text)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||||
|
@ -100,7 +100,10 @@
|
||||||
QT_WARNING_PUSH
|
QT_WARNING_PUSH
|
||||||
QT_WARNING_DISABLE_GCC("-Wattributes")
|
QT_WARNING_DISABLE_GCC("-Wattributes")
|
||||||
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
class QLocale;
|
class QLocale;
|
||||||
class QChar;
|
class QChar;
|
||||||
|
@ -126,22 +129,22 @@ QMUPARSERSHARED_EXPORT auto LocaleDecimalPoint(const QLocale &locale) -> QChar;
|
||||||
QMUPARSERSHARED_EXPORT auto LocaleGroupSeparator(const QLocale &locale) -> QChar;
|
QMUPARSERSHARED_EXPORT auto LocaleGroupSeparator(const QLocale &locale) -> QChar;
|
||||||
|
|
||||||
#define INIT_LOCALE_VARIABLES(locale) \
|
#define INIT_LOCALE_VARIABLES(locale) \
|
||||||
const QChar positiveSign = LocalePositiveSign((locale)); \
|
const QChar positiveSign = LocalePositiveSign((locale)); \
|
||||||
const QChar negativeSign = LocaleNegativeSign((locale)); \
|
const QChar negativeSign = LocaleNegativeSign((locale)); \
|
||||||
const QChar sign0 = LocaleSign0((locale)); \
|
const QChar sign0 = LocaleSign0((locale)); \
|
||||||
const QChar sign1 = LocaleSign1((locale)); \
|
const QChar sign1 = LocaleSign1((locale)); \
|
||||||
const QChar sign2 = LocaleSign2((locale)); \
|
const QChar sign2 = LocaleSign2((locale)); \
|
||||||
const QChar sign3 = LocaleSign3((locale)); \
|
const QChar sign3 = LocaleSign3((locale)); \
|
||||||
const QChar sign4 = LocaleSign4((locale)); \
|
const QChar sign4 = LocaleSign4((locale)); \
|
||||||
const QChar sign5 = LocaleSign5((locale)); \
|
const QChar sign5 = LocaleSign5((locale)); \
|
||||||
const QChar sign6 = LocaleSign6((locale)); \
|
const QChar sign6 = LocaleSign6((locale)); \
|
||||||
const QChar sign7 = LocaleSign7((locale)); \
|
const QChar sign7 = LocaleSign7((locale)); \
|
||||||
const QChar sign8 = LocaleSign8((locale)); \
|
const QChar sign8 = LocaleSign8((locale)); \
|
||||||
const QChar sign9 = LocaleSign9((locale)); \
|
const QChar sign9 = LocaleSign9((locale)); \
|
||||||
const QChar expUpper = LocaleExpUpper((locale)); \
|
const QChar expUpper = LocaleExpUpper((locale)); \
|
||||||
const QChar expLower = LocaleExpLower((locale)); \
|
const QChar expLower = LocaleExpLower((locale)); \
|
||||||
const QChar decimalPoint = LocaleDecimalPoint((locale)); \
|
const QChar decimalPoint = LocaleDecimalPoint((locale)); \
|
||||||
const QChar groupSeparator = LocaleGroupSeparator((locale));
|
const QChar groupSeparator = LocaleGroupSeparator((locale));
|
||||||
|
|
||||||
QMUPARSERSHARED_EXPORT auto NameRegExp() -> QString;
|
QMUPARSERSHARED_EXPORT auto NameRegExp() -> QString;
|
||||||
|
|
||||||
|
@ -150,12 +153,12 @@ QT_WARNING_POP
|
||||||
Q_REQUIRED_RESULT static inline auto QmuFuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
Q_REQUIRED_RESULT static inline auto QmuFuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
||||||
static inline auto QmuFuzzyComparePossibleNulls(double p1, double p2) -> bool
|
static inline auto QmuFuzzyComparePossibleNulls(double p1, double p2) -> bool
|
||||||
{
|
{
|
||||||
if(qFuzzyIsNull(p1))
|
if (qFuzzyIsNull(p1))
|
||||||
{
|
{
|
||||||
return qFuzzyIsNull(p2);
|
return qFuzzyIsNull(p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(qFuzzyIsNull(p2))
|
if (qFuzzyIsNull(p2))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,13 @@
|
||||||
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <locale>
|
|
||||||
#include <ciso646>
|
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
#include <locale>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __INTEL_COMPILER
|
#ifdef __INTEL_COMPILER
|
||||||
#include "qmuparserfixes.h"
|
#include "qmuparserfixes.h"
|
||||||
|
@ -42,60 +46,60 @@
|
||||||
#define QMUP_VERSION_DATE "20191030; GC"
|
#define QMUP_VERSION_DATE "20191030; GC"
|
||||||
|
|
||||||
// Detect whether the compiler supports C++11 noexcept exception specifications.
|
// Detect whether the compiler supports C++11 noexcept exception specifications.
|
||||||
# if defined(__clang__)
|
#if defined(__clang__)
|
||||||
# if __has_feature(cxx_noexcept)
|
#if __has_feature(cxx_noexcept)
|
||||||
# define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // Clang 3.0 and above have noexcept
|
#define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // Clang 3.0 and above have noexcept
|
||||||
# endif
|
#endif
|
||||||
# elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
# define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // GCC 4.7 and following have noexcept
|
#define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // GCC 4.7 and following have noexcept
|
||||||
# endif
|
#endif
|
||||||
# elif defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026
|
#elif defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026
|
||||||
# define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // Visual Studio 2015 and following have noexcept
|
#define QMUP_NOEXCEPT_EXPR(x) noexcept(x) // Visual Studio 2015 and following have noexcept
|
||||||
# else
|
#else
|
||||||
# define QMUP_NOEXCEPT_EXPR(x)
|
#define QMUP_NOEXCEPT_EXPR(x)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
#ifndef __has_cpp_attribute
|
#ifndef __has_cpp_attribute
|
||||||
# define __has_cpp_attribute(x) 0
|
#define __has_cpp_attribute(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
|
||||||
#ifndef QT_HAS_CPP_ATTRIBUTE
|
#ifndef QT_HAS_CPP_ATTRIBUTE
|
||||||
#ifdef __has_cpp_attribute
|
#ifdef __has_cpp_attribute
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
#define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
||||||
#else
|
#else
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) 0
|
#define QT_HAS_CPP_ATTRIBUTE(x) 0
|
||||||
#endif
|
#endif
|
||||||
#endif // QT_HAS_CPP_ATTRIBUTE
|
#endif // QT_HAS_CPP_ATTRIBUTE
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[clang::fallthrough]]
|
#define Q_FALLTHROUGH() [[clang::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
#define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[fallthrough]]
|
#define Q_FALLTHROUGH() [[fallthrough]]
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef Q_FALLTHROUGH
|
#ifndef Q_FALLTHROUGH
|
||||||
# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
#if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
||||||
# define Q_FALLTHROUGH() __attribute__((fallthrough))
|
#define Q_FALLTHROUGH() __attribute__((fallthrough))
|
||||||
# else
|
#else
|
||||||
# define Q_FALLTHROUGH() (void)0
|
#define Q_FALLTHROUGH() (void)0
|
||||||
#endif
|
#endif
|
||||||
#endif // defined(__cplusplus)
|
#endif // defined(__cplusplus)
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
|
||||||
/** @brief If this macro is defined mathematical exceptions (div by zero) will be thrown as exceptions. */
|
/** @brief If this macro is defined mathematical exceptions (div by zero) will be thrown as exceptions. */
|
||||||
//#define QMUP_MATH_EXCEPTIONS
|
// #define QMUP_MATH_EXCEPTIONS
|
||||||
|
|
||||||
/** @brief Activate this option in order to compile with OpenMP support.
|
/** @brief Activate this option in order to compile with OpenMP support.
|
||||||
|
|
||||||
OpenMP is used only in the bulk mode it may increase the performance a bit.
|
OpenMP is used only in the bulk mode it may increase the performance a bit.
|
||||||
*/
|
*/
|
||||||
//#define QMUP_USE_OPENMP
|
// #define QMUP_USE_OPENMP
|
||||||
|
|
||||||
/** @brief Definition of the basic parser string type. */
|
/** @brief Definition of the basic parser string type. */
|
||||||
#define QMUP_STRING_TYPE std::wstring
|
#define QMUP_STRING_TYPE std::wstring
|
||||||
|
@ -164,7 +168,7 @@ enum ECmdCode
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/** @brief Types internally used by the parser.
|
/** @brief Types internally used by the parser.
|
||||||
*/
|
*/
|
||||||
enum ETypeCode
|
enum ETypeCode
|
||||||
{
|
{
|
||||||
tpSTR = 0, ///< String type (Function arguments and constants only, no string variables)
|
tpSTR = 0, ///< String type (Function arguments and constants only, no string variables)
|
||||||
|
@ -222,12 +226,12 @@ typedef QMUP_STRING_TYPE string_type;
|
||||||
typedef string_type::value_type char_type;
|
typedef string_type::value_type char_type;
|
||||||
|
|
||||||
/** @brief Typedef for easily using stringstream that respect the parser stringtype. */
|
/** @brief Typedef for easily using stringstream that respect the parser stringtype. */
|
||||||
typedef std::basic_stringstream < char_type, std::char_traits<char_type>, std::allocator<char_type> > stringstream_type;
|
typedef std::basic_stringstream<char_type, std::char_traits<char_type>, std::allocator<char_type>> stringstream_type;
|
||||||
|
|
||||||
// Data container types
|
// Data container types
|
||||||
|
|
||||||
/** @brief Type used for storing variables. */
|
/** @brief Type used for storing variables. */
|
||||||
typedef std::map<QString, qreal*> varmap_type;
|
typedef std::map<QString, qreal *> varmap_type;
|
||||||
|
|
||||||
/** @brief Type used for storing constants. */
|
/** @brief Type used for storing constants. */
|
||||||
typedef std::map<QString, qreal> valmap_type;
|
typedef std::map<QString, qreal> valmap_type;
|
||||||
|
@ -238,92 +242,92 @@ typedef std::map<QString, qmusizetype> strmap_type;
|
||||||
// Parser callbacks
|
// Parser callbacks
|
||||||
|
|
||||||
/** @brief Callback type used for functions without arguments. */
|
/** @brief Callback type used for functions without arguments. */
|
||||||
typedef qreal ( *generic_fun_type ) ();
|
typedef qreal (*generic_fun_type)();
|
||||||
|
|
||||||
/** @brief Callback type used for functions without arguments. */
|
/** @brief Callback type used for functions without arguments. */
|
||||||
typedef qreal ( *fun_type0 ) ();
|
typedef qreal (*fun_type0)();
|
||||||
|
|
||||||
/** @brief Callback type used for functions with a single arguments. */
|
/** @brief Callback type used for functions with a single arguments. */
|
||||||
typedef qreal ( *fun_type1 ) ( qreal );
|
typedef qreal (*fun_type1)(qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with two arguments. */
|
/** @brief Callback type used for functions with two arguments. */
|
||||||
typedef qreal ( *fun_type2 ) ( qreal, qreal );
|
typedef qreal (*fun_type2)(qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with three arguments. */
|
/** @brief Callback type used for functions with three arguments. */
|
||||||
typedef qreal ( *fun_type3 ) ( qreal, qreal, qreal );
|
typedef qreal (*fun_type3)(qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with four arguments. */
|
/** @brief Callback type used for functions with four arguments. */
|
||||||
typedef qreal ( *fun_type4 ) ( qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type4)(qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type5 ) ( qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type5)(qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type6 ) ( qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type6)(qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type7 ) ( qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type7)(qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type8 ) ( qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type8)(qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type9 ) ( qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type9)(qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *fun_type10 ) ( qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*fun_type10)(qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions without arguments. */
|
/** @brief Callback type used for functions without arguments. */
|
||||||
typedef qreal ( *bulkfun_type0 ) ( int, int );
|
typedef qreal (*bulkfun_type0)(int, int);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with a single arguments. */
|
/** @brief Callback type used for functions with a single arguments. */
|
||||||
typedef qreal ( *bulkfun_type1 ) ( int, int, qreal );
|
typedef qreal (*bulkfun_type1)(int, int, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with two arguments. */
|
/** @brief Callback type used for functions with two arguments. */
|
||||||
typedef qreal ( *bulkfun_type2 ) ( int, int, qreal, qreal );
|
typedef qreal (*bulkfun_type2)(int, int, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with three arguments. */
|
/** @brief Callback type used for functions with three arguments. */
|
||||||
typedef qreal ( *bulkfun_type3 ) ( int, int, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type3)(int, int, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with four arguments. */
|
/** @brief Callback type used for functions with four arguments. */
|
||||||
typedef qreal ( *bulkfun_type4 ) ( int, int, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type4)(int, int, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type5 ) ( int, int, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type5)(int, int, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type6 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type6)(int, int, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type7 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type7)(int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type8 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type8)(int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type9 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type9)(int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with five arguments. */
|
/** @brief Callback type used for functions with five arguments. */
|
||||||
typedef qreal ( *bulkfun_type10 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal );
|
typedef qreal (*bulkfun_type10)(int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions with a variable argument list. */
|
/** @brief Callback type used for functions with a variable argument list. */
|
||||||
typedef qreal ( *multfun_type ) ( const qreal*, qmusizetype );
|
typedef qreal (*multfun_type)(const qreal *, qmusizetype);
|
||||||
|
|
||||||
/** @brief Callback type used for functions taking a string as an argument. */
|
/** @brief Callback type used for functions taking a string as an argument. */
|
||||||
typedef qreal ( *strfun_type1 ) ( const QString & );
|
typedef qreal (*strfun_type1)(const QString &);
|
||||||
|
|
||||||
/** @brief Callback type used for functions taking a string and a value as arguments. */
|
/** @brief Callback type used for functions taking a string and a value as arguments. */
|
||||||
typedef qreal ( *strfun_type2 ) ( const QString &, qreal );
|
typedef qreal (*strfun_type2)(const QString &, qreal);
|
||||||
|
|
||||||
/** @brief Callback type used for functions taking a string and two values as arguments. */
|
/** @brief Callback type used for functions taking a string and two values as arguments. */
|
||||||
typedef qreal ( *strfun_type3 ) ( const QString &, qreal, qreal );
|
typedef qreal (*strfun_type3)(const QString &, qreal, qreal);
|
||||||
|
|
||||||
/** @brief Callback used for functions that identify values in a string. */
|
/** @brief Callback used for functions that identify values in a string. */
|
||||||
typedef int ( *identfun_type ) ( const QString &sExpr, qmusizetype *nPos, qreal *fVal, const QLocale &locale,
|
typedef int (*identfun_type)(const QString &sExpr, qmusizetype *nPos, qreal *fVal, const QLocale &locale, bool cNumbers,
|
||||||
bool cNumbers, const QChar &decimal, const QChar &thousand );
|
const QChar &decimal, const QChar &thousand);
|
||||||
|
|
||||||
/** @brief Callback used for variable creation factory functions. */
|
/** @brief Callback used for variable creation factory functions. */
|
||||||
typedef qreal* ( *facfun_type ) ( const QString &, void* );
|
typedef qreal *(*facfun_type)(const QString &, void *);
|
||||||
} // end of namespace
|
} // namespace qmu
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,14 +29,27 @@
|
||||||
#ifndef DXFDEF_H
|
#ifndef DXFDEF_H
|
||||||
#define DXFDEF_H
|
#define DXFDEF_H
|
||||||
|
|
||||||
#include <QtGlobal>
|
|
||||||
#include <ciso646>
|
|
||||||
#include <QtCore/qcontainerfwd.h>
|
#include <QtCore/qcontainerfwd.h>
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
enum class VarMeasurement : quint8 { English=0, Metric=1 };
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//Default drawing units for AutoCAD DesignCenter blocks:
|
enum class VarMeasurement : quint8
|
||||||
enum class VarInsunits : quint8 { Inches=1, Millimeters=4, Centimeters=5 };
|
{
|
||||||
|
English = 0,
|
||||||
|
Metric = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
// Default drawing units for AutoCAD DesignCenter blocks:
|
||||||
|
enum class VarInsunits : quint8
|
||||||
|
{
|
||||||
|
Inches = 1,
|
||||||
|
Millimeters = 4,
|
||||||
|
Centimeters = 5
|
||||||
|
};
|
||||||
|
|
||||||
// Helps mark end of string. See VDxfEngine::drawTextItem for more details
|
// Helps mark end of string. See VDxfEngine::drawTextItem for more details
|
||||||
extern const QString endStringPlaceholder;
|
extern const QString endStringPlaceholder;
|
||||||
|
@ -44,7 +57,7 @@ extern const QString endStringPlaceholder;
|
||||||
Q_REQUIRED_RESULT static inline auto DL_FuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
Q_REQUIRED_RESULT static inline auto DL_FuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
||||||
static inline auto DL_FuzzyComparePossibleNulls(double p1, double p2) -> bool
|
static inline auto DL_FuzzyComparePossibleNulls(double p1, double p2) -> bool
|
||||||
{
|
{
|
||||||
if(qFuzzyIsNull(p1))
|
if (qFuzzyIsNull(p1))
|
||||||
{
|
{
|
||||||
return qFuzzyIsNull(p2);
|
return qFuzzyIsNull(p2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,69 +15,73 @@
|
||||||
|
|
||||||
#define DRW_VERSION "0.6.3"
|
#define DRW_VERSION "0.6.3"
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <list>
|
|
||||||
#include <cmath>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <ciso646>
|
#include <cmath>
|
||||||
|
#include <list>
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DRW_ASSERTS
|
#ifdef DRW_ASSERTS
|
||||||
# define drw_assert(a) assert(a)
|
#define drw_assert(a) assert(a)
|
||||||
#else
|
#else
|
||||||
# define drw_assert(a)
|
#define drw_assert(a)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define UTF8STRING std::string
|
#define UTF8STRING std::string
|
||||||
#define DRW_UNUSED(x) (void)x
|
#define DRW_UNUSED(x) (void)x
|
||||||
|
|
||||||
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
|
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
|
||||||
# define DRW_WIN
|
#define DRW_WIN
|
||||||
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
|
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
|
||||||
# define DRW_WIN
|
#define DRW_WIN
|
||||||
#elif defined(__MWERKS__) && defined(__INTEL__)
|
#elif defined(__MWERKS__) && defined(__INTEL__)
|
||||||
# define DRW_WIN
|
#define DRW_WIN
|
||||||
#else
|
#else
|
||||||
# define DRW_POSIX
|
#define DRW_POSIX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.141592653589793238462643
|
#define M_PI 3.141592653589793238462643
|
||||||
#endif
|
#endif
|
||||||
#ifndef M_PI_2
|
#ifndef M_PI_2
|
||||||
#define M_PI_2 1.57079632679489661923
|
#define M_PI_2 1.57079632679489661923
|
||||||
#endif
|
#endif
|
||||||
#define M_PIx2 6.283185307179586 // 2*PI
|
#define M_PIx2 6.283185307179586 // 2*PI
|
||||||
#define ARAD 57.29577951308232
|
#define ARAD 57.29577951308232
|
||||||
|
|
||||||
#ifndef __has_cpp_attribute
|
#ifndef __has_cpp_attribute
|
||||||
# define __has_cpp_attribute(x) 0
|
#define __has_cpp_attribute(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
|
||||||
#ifndef QT_HAS_CPP_ATTRIBUTE
|
#ifndef QT_HAS_CPP_ATTRIBUTE
|
||||||
#ifdef __has_cpp_attribute
|
#ifdef __has_cpp_attribute
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
#define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
||||||
#else
|
#else
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) 0
|
#define QT_HAS_CPP_ATTRIBUTE(x) 0
|
||||||
#endif
|
#endif
|
||||||
#endif // QT_HAS_CPP_ATTRIBUTE
|
#endif // QT_HAS_CPP_ATTRIBUTE
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[clang::fallthrough]]
|
#define Q_FALLTHROUGH() [[clang::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
#define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[fallthrough]]
|
#define Q_FALLTHROUGH() [[fallthrough]]
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef Q_FALLTHROUGH
|
#ifndef Q_FALLTHROUGH
|
||||||
# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
#if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
||||||
# define Q_FALLTHROUGH() __attribute__((fallthrough))
|
#define Q_FALLTHROUGH() __attribute__((fallthrough))
|
||||||
# else
|
#else
|
||||||
# define Q_FALLTHROUGH() (void)0
|
#define Q_FALLTHROUGH() (void)0
|
||||||
#endif
|
#endif
|
||||||
#endif // defined(__cplusplus)
|
#endif // defined(__cplusplus)
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
@ -110,10 +114,12 @@ typedef float dfloat32; /* 32 bit floating point */
|
||||||
typedef double ddouble64; /* 64 bit floating point */
|
typedef double ddouble64; /* 64 bit floating point */
|
||||||
typedef long double ddouble80; /* 80 bit floating point */
|
typedef long double ddouble80; /* 80 bit floating point */
|
||||||
|
|
||||||
namespace DRW {
|
namespace DRW
|
||||||
|
{
|
||||||
|
|
||||||
//! Version numbers for the DXF Format.
|
//! Version numbers for the DXF Format.
|
||||||
enum Version {
|
enum Version
|
||||||
|
{
|
||||||
UNKNOWNV, //!< UNKNOWN VERSION.
|
UNKNOWNV, //!< UNKNOWN VERSION.
|
||||||
MC00, //!< DWG Release 1.1
|
MC00, //!< DWG Release 1.1
|
||||||
AC12, //!< DWG Release 1.2
|
AC12, //!< DWG Release 1.2
|
||||||
|
@ -135,46 +141,35 @@ enum Version {
|
||||||
AC1032, //!< AutoCAD 2018/2019/2020 (ACAD 2018)
|
AC1032, //!< AutoCAD 2018/2019/2020 (ACAD 2018)
|
||||||
};
|
};
|
||||||
|
|
||||||
const std::unordered_map< const char*, DRW::Version > dwgVersionStrings {
|
const std::unordered_map<const char *, DRW::Version> dwgVersionStrings{
|
||||||
{ "MC0.0", DRW::MC00 },
|
{"MC0.0", DRW::MC00}, {"AC1.2", DRW::AC12}, {"AC1.4", DRW::AC14}, {"AC1.50", DRW::AC150},
|
||||||
{ "AC1.2", DRW::AC12 },
|
{"AC2.10", DRW::AC210}, {"AC1002", DRW::AC1002}, {"AC1003", DRW::AC1003}, {"AC1004", DRW::AC1004},
|
||||||
{ "AC1.4", DRW::AC14 },
|
{"AC1006", DRW::AC1006}, {"AC1009", DRW::AC1009}, {"AC1012", DRW::AC1012}, {"AC1014", DRW::AC1014},
|
||||||
{ "AC1.50", DRW::AC150 },
|
{"AC1015", DRW::AC1015}, {"AC1018", DRW::AC1018}, {"AC1021", DRW::AC1021}, {"AC1024", DRW::AC1024},
|
||||||
{ "AC2.10", DRW::AC210 },
|
{"AC1027", DRW::AC1027}, {"AC1032", DRW::AC1032},
|
||||||
{ "AC1002", DRW::AC1002 },
|
|
||||||
{ "AC1003", DRW::AC1003 },
|
|
||||||
{ "AC1004", DRW::AC1004 },
|
|
||||||
{ "AC1006", DRW::AC1006 },
|
|
||||||
{ "AC1009", DRW::AC1009 },
|
|
||||||
{ "AC1012", DRW::AC1012 },
|
|
||||||
{ "AC1014", DRW::AC1014 },
|
|
||||||
{ "AC1015", DRW::AC1015 },
|
|
||||||
{ "AC1018", DRW::AC1018 },
|
|
||||||
{ "AC1021", DRW::AC1021 },
|
|
||||||
{ "AC1024", DRW::AC1024 },
|
|
||||||
{ "AC1027", DRW::AC1027 },
|
|
||||||
{ "AC1032", DRW::AC1032 },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum error {
|
enum error
|
||||||
BAD_NONE, /*!< No error. */
|
{
|
||||||
BAD_UNKNOWN, /*!< UNKNOWN. */
|
BAD_NONE, /*!< No error. */
|
||||||
BAD_OPEN, /*!< error opening file. */
|
BAD_UNKNOWN, /*!< UNKNOWN. */
|
||||||
BAD_VERSION, /*!< unsupported version. */
|
BAD_OPEN, /*!< error opening file. */
|
||||||
BAD_READ_METADATA, /*!< error reading matadata. */
|
BAD_VERSION, /*!< unsupported version. */
|
||||||
BAD_READ_FILE_HEADER, /*!< error in file header read process. */
|
BAD_READ_METADATA, /*!< error reading matadata. */
|
||||||
BAD_READ_HEADER, /*!< error in header vars read process. */
|
BAD_READ_FILE_HEADER, /*!< error in file header read process. */
|
||||||
BAD_READ_HANDLES, /*!< error in object map read process. */
|
BAD_READ_HEADER, /*!< error in header vars read process. */
|
||||||
BAD_READ_CLASSES, /*!< error in classes read process. */
|
BAD_READ_HANDLES, /*!< error in object map read process. */
|
||||||
BAD_READ_TABLES, /*!< error in tables read process. */
|
BAD_READ_CLASSES, /*!< error in classes read process. */
|
||||||
BAD_READ_BLOCKS, /*!< error in block read process. */
|
BAD_READ_TABLES, /*!< error in tables read process. */
|
||||||
BAD_READ_ENTITIES, /*!< error in entities read process. */
|
BAD_READ_BLOCKS, /*!< error in block read process. */
|
||||||
BAD_READ_OBJECTS, /*!< error in objects read process. */
|
BAD_READ_ENTITIES, /*!< error in entities read process. */
|
||||||
BAD_READ_SECTION, /*!< error in sections read process. */
|
BAD_READ_OBJECTS, /*!< error in objects read process. */
|
||||||
BAD_CODE_PARSED, /*!< error in any parseCodes() method. */
|
BAD_READ_SECTION, /*!< error in sections read process. */
|
||||||
|
BAD_CODE_PARSED, /*!< error in any parseCodes() method. */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class DebugLevel {
|
enum class DebugLevel
|
||||||
|
{
|
||||||
None,
|
None,
|
||||||
Debug
|
Debug
|
||||||
};
|
};
|
||||||
|
@ -184,18 +179,29 @@ enum class DebugLevel {
|
||||||
*
|
*
|
||||||
* The base class is silent and ignores all debugging.
|
* The base class is silent and ignores all debugging.
|
||||||
*/
|
*/
|
||||||
class DebugPrinter {
|
class DebugPrinter
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
virtual void printS(const std::string &s){(void)s;}
|
virtual void printS(const std::string &s) { (void)s; }
|
||||||
virtual void printI(long long int i){(void)i;}
|
virtual void printI(long long int i) { (void)i; }
|
||||||
virtual void printUI(long long unsigned int i){(void)i;}
|
virtual void printUI(long long unsigned int i) { (void)i; }
|
||||||
virtual void printD(double d){(void)d;}
|
virtual void printD(double d) { (void)d; }
|
||||||
virtual void printH(long long int i){(void)i;}
|
virtual void printH(long long int i) { (void)i; }
|
||||||
virtual void printB(int i){(void)i;}
|
virtual void printB(int i) { (void)i; }
|
||||||
virtual void printHL(int c, int s, int h){(void)c;(void)s;(void)h;}
|
virtual void printHL(int c, int s, int h)
|
||||||
virtual void printPT(double x, double y, double z){(void)x;(void)y;(void)z;}
|
{
|
||||||
DebugPrinter()=default;
|
(void)c;
|
||||||
virtual ~DebugPrinter()=default;
|
(void)s;
|
||||||
|
(void)h;
|
||||||
|
}
|
||||||
|
virtual void printPT(double x, double y, double z)
|
||||||
|
{
|
||||||
|
(void)x;
|
||||||
|
(void)y;
|
||||||
|
(void)z;
|
||||||
|
}
|
||||||
|
DebugPrinter() = default;
|
||||||
|
virtual ~DebugPrinter() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -203,10 +209,11 @@ public:
|
||||||
*
|
*
|
||||||
* Ownership of `printer` is transferred.
|
* Ownership of `printer` is transferred.
|
||||||
*/
|
*/
|
||||||
void setCustomDebugPrinter( DebugPrinter* printer );
|
void setCustomDebugPrinter(DebugPrinter *printer);
|
||||||
|
|
||||||
//! Special codes for colors
|
//! Special codes for colors
|
||||||
enum ColorCodes {
|
enum ColorCodes
|
||||||
|
{
|
||||||
black = 250,
|
black = 250,
|
||||||
green = 3,
|
green = 3,
|
||||||
red = 1,
|
red = 1,
|
||||||
|
@ -228,18 +235,21 @@ enum ColorCodes {
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Spaces
|
//! Spaces
|
||||||
enum Space {
|
enum Space
|
||||||
|
{
|
||||||
ModelSpace = 0,
|
ModelSpace = 0,
|
||||||
PaperSpace = 1
|
PaperSpace = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Special kinds of handles
|
//! Special kinds of handles
|
||||||
enum HandleCodes {
|
enum HandleCodes
|
||||||
|
{
|
||||||
NoHandle = 0
|
NoHandle = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Shadow mode
|
//! Shadow mode
|
||||||
enum ShadowMode {
|
enum ShadowMode
|
||||||
|
{
|
||||||
CastAndReceieveShadows = 0,
|
CastAndReceieveShadows = 0,
|
||||||
CastShadows = 1,
|
CastShadows = 1,
|
||||||
ReceiveShadows = 2,
|
ReceiveShadows = 2,
|
||||||
|
@ -247,17 +257,20 @@ enum ShadowMode {
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Special kinds of materials
|
//! Special kinds of materials
|
||||||
enum MaterialCodes {
|
enum MaterialCodes
|
||||||
|
{
|
||||||
MaterialByLayer = 0
|
MaterialByLayer = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Special kinds of plot styles
|
//! Special kinds of plot styles
|
||||||
enum PlotStyleCodes {
|
enum PlotStyleCodes
|
||||||
|
{
|
||||||
DefaultPlotStyle = 0
|
DefaultPlotStyle = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Special kinds of transparencies
|
//! Special kinds of transparencies
|
||||||
enum TransparencyCodes {
|
enum TransparencyCodes
|
||||||
|
{
|
||||||
Opaque = 0,
|
Opaque = 0,
|
||||||
Transparent = -1
|
Transparent = -1
|
||||||
};
|
};
|
||||||
|
@ -267,7 +280,7 @@ enum TransparencyCodes {
|
||||||
Q_REQUIRED_RESULT static inline auto DRW_FuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
Q_REQUIRED_RESULT static inline auto DRW_FuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
||||||
static inline auto DRW_FuzzyComparePossibleNulls(double p1, double p2) -> bool
|
static inline auto DRW_FuzzyComparePossibleNulls(double p1, double p2) -> bool
|
||||||
{
|
{
|
||||||
if(qFuzzyIsNull(p1))
|
if (qFuzzyIsNull(p1))
|
||||||
{
|
{
|
||||||
return qFuzzyIsNull(p2);
|
return qFuzzyIsNull(p2);
|
||||||
}
|
}
|
||||||
|
@ -286,24 +299,27 @@ static inline auto DRW_FuzzyComparePossibleNulls(double p1, double p2) -> bool
|
||||||
* Class to handle 3D coordinate point
|
* Class to handle 3D coordinate point
|
||||||
* @author Rallaz
|
* @author Rallaz
|
||||||
*/
|
*/
|
||||||
class DRW_Coord {
|
class DRW_Coord
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
DRW_Coord() = default;
|
DRW_Coord() = default;
|
||||||
DRW_Coord(double ix, double iy, double iz)
|
DRW_Coord(double ix, double iy, double iz)
|
||||||
: x(ix),
|
: x(ix),
|
||||||
y(iy),
|
y(iy),
|
||||||
z(iz)
|
z(iz)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
DRW_Coord(const DRW_Coord &data)
|
DRW_Coord(const DRW_Coord &data)
|
||||||
: x(data.x),
|
: x(data.x),
|
||||||
y(data.y),
|
y(data.y),
|
||||||
z(data.z)
|
z(data.z)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
auto operator=(const DRW_Coord &data) -> DRW_Coord &
|
auto operator=(const DRW_Coord &data) -> DRW_Coord &
|
||||||
{
|
{
|
||||||
if ( &data == this )
|
if (&data == this)
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -313,30 +329,32 @@ public:
|
||||||
z = data.z;
|
z = data.z;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
/*!< convert to unitary vector */
|
/*!< convert to unitary vector */
|
||||||
void unitize(){
|
void unitize()
|
||||||
|
{
|
||||||
double dist;
|
double dist;
|
||||||
dist = hypot(hypot(x, y), z);
|
dist = hypot(hypot(x, y), z);
|
||||||
if (dist > 0.0) {
|
if (dist > 0.0)
|
||||||
x= x/dist;
|
{
|
||||||
y= y/dist;
|
x = x / dist;
|
||||||
z= z/dist;
|
y = y / dist;
|
||||||
|
z = z / dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double x {0};
|
double x{0};
|
||||||
double y {0};
|
double y{0};
|
||||||
double z {0};
|
double z{0};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//! Class to handle vertex
|
//! Class to handle vertex
|
||||||
/*!
|
/*!
|
||||||
* Class to handle vertex for lwpolyline entity
|
* Class to handle vertex for lwpolyline entity
|
||||||
* @author Rallaz
|
* @author Rallaz
|
||||||
*/
|
*/
|
||||||
class DRW_Vertex2D {
|
class DRW_Vertex2D
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
DRW_Vertex2D()
|
DRW_Vertex2D()
|
||||||
: x(),
|
: x(),
|
||||||
|
@ -345,7 +363,7 @@ public:
|
||||||
endwidth(0),
|
endwidth(0),
|
||||||
bulge(0)
|
bulge(0)
|
||||||
{
|
{
|
||||||
// eType = DRW::LWPOLYLINE;
|
// eType = DRW::LWPOLYLINE;
|
||||||
}
|
}
|
||||||
DRW_Vertex2D(double sx, double sy, double b = 0.0)
|
DRW_Vertex2D(double sx, double sy, double b = 0.0)
|
||||||
: x(sx),
|
: x(sx),
|
||||||
|
@ -353,7 +371,8 @@ public:
|
||||||
stawidth(0),
|
stawidth(0),
|
||||||
endwidth(0),
|
endwidth(0),
|
||||||
bulge(b)
|
bulge(b)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double x; /*!< x coordinate, code 10 */
|
double x; /*!< x coordinate, code 10 */
|
||||||
|
@ -363,29 +382,31 @@ public:
|
||||||
double bulge; /*!< bulge, code 42 */
|
double bulge; /*!< bulge, code 42 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//! Class to handle header vars
|
//! Class to handle header vars
|
||||||
/*!
|
/*!
|
||||||
* Class to handle header vars
|
* Class to handle header vars
|
||||||
* @author Rallaz
|
* @author Rallaz
|
||||||
*/
|
*/
|
||||||
class DRW_Variant {
|
class DRW_Variant
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
enum TYPE {
|
enum TYPE
|
||||||
|
{
|
||||||
STRING,
|
STRING,
|
||||||
INTEGER,
|
INTEGER,
|
||||||
DOUBLE,
|
DOUBLE,
|
||||||
COORD,
|
COORD,
|
||||||
INVALID
|
INVALID
|
||||||
};
|
};
|
||||||
//TODO: add INT64 support
|
// TODO: add INT64 support
|
||||||
DRW_Variant()
|
DRW_Variant()
|
||||||
: content(),
|
: content(),
|
||||||
type(INVALID),
|
type(INVALID),
|
||||||
code(),
|
code(),
|
||||||
sdata(),
|
sdata(),
|
||||||
vdata()
|
vdata()
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
DRW_Variant(int c, dint32 i)
|
DRW_Variant(int c, dint32 i)
|
||||||
: content(),
|
: content(),
|
||||||
|
@ -404,7 +425,7 @@ public:
|
||||||
sdata(),
|
sdata(),
|
||||||
vdata()
|
vdata()
|
||||||
{
|
{
|
||||||
addInt(static_cast<dint32>(i));//RLZ: verify if work with big numbers
|
addInt(static_cast<dint32>(i)); // RLZ: verify if work with big numbers
|
||||||
}
|
}
|
||||||
|
|
||||||
DRW_Variant(int c, double d)
|
DRW_Variant(int c, double d)
|
||||||
|
@ -437,7 +458,7 @@ public:
|
||||||
addCoord(crd);
|
addCoord(crd);
|
||||||
}
|
}
|
||||||
|
|
||||||
DRW_Variant(const DRW_Variant& d)
|
DRW_Variant(const DRW_Variant &d)
|
||||||
: content(d.content),
|
: content(d.content),
|
||||||
type(d.type),
|
type(d.type),
|
||||||
code(d.code),
|
code(d.code),
|
||||||
|
@ -459,18 +480,56 @@ public:
|
||||||
|
|
||||||
~DRW_Variant() = default;
|
~DRW_Variant() = default;
|
||||||
|
|
||||||
void addString(const UTF8STRING &s) {setType(STRING); sdata = s; content.s = &sdata;}
|
void addString(const UTF8STRING &s)
|
||||||
void addInt(int i) {setType(INTEGER); content.i = i;}
|
{
|
||||||
void addDouble(double d) {setType(DOUBLE); content.d = d;}
|
setType(STRING);
|
||||||
void addCoord() {setType(COORD); vdata.x=0.0; vdata.y=0.0; vdata.z=0.0; content.v = &vdata;}
|
sdata = s;
|
||||||
void addCoord(const DRW_Coord &v) {setType(COORD); vdata = v; content.v = &vdata;}
|
content.s = &sdata;
|
||||||
void setType(TYPE t) { type = t;}
|
}
|
||||||
void setCoordX(double d) { if (type == COORD) vdata.x = d;}
|
void addInt(int i)
|
||||||
void setCoordY(double d) { if (type == COORD) vdata.y = d;}
|
{
|
||||||
void setCoordZ(double d) { if (type == COORD) vdata.z = d;}
|
setType(INTEGER);
|
||||||
|
content.i = i;
|
||||||
|
}
|
||||||
|
void addDouble(double d)
|
||||||
|
{
|
||||||
|
setType(DOUBLE);
|
||||||
|
content.d = d;
|
||||||
|
}
|
||||||
|
void addCoord()
|
||||||
|
{
|
||||||
|
setType(COORD);
|
||||||
|
vdata.x = 0.0;
|
||||||
|
vdata.y = 0.0;
|
||||||
|
vdata.z = 0.0;
|
||||||
|
content.v = &vdata;
|
||||||
|
}
|
||||||
|
void addCoord(const DRW_Coord &v)
|
||||||
|
{
|
||||||
|
setType(COORD);
|
||||||
|
vdata = v;
|
||||||
|
content.v = &vdata;
|
||||||
|
}
|
||||||
|
void setType(TYPE t) { type = t; }
|
||||||
|
void setCoordX(double d)
|
||||||
|
{
|
||||||
|
if (type == COORD)
|
||||||
|
vdata.x = d;
|
||||||
|
}
|
||||||
|
void setCoordY(double d)
|
||||||
|
{
|
||||||
|
if (type == COORD)
|
||||||
|
vdata.y = d;
|
||||||
|
}
|
||||||
|
void setCoordZ(double d)
|
||||||
|
{
|
||||||
|
if (type == COORD)
|
||||||
|
vdata.z = d;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef union {
|
typedef union
|
||||||
|
{
|
||||||
UTF8STRING *s;
|
UTF8STRING *s;
|
||||||
dint32 i;
|
dint32 i;
|
||||||
double d;
|
double d;
|
||||||
|
@ -490,14 +549,16 @@ private:
|
||||||
|
|
||||||
//! Class to convert between line width and integer
|
//! Class to convert between line width and integer
|
||||||
/*!
|
/*!
|
||||||
* Class to convert between line width and integer
|
* Class to convert between line width and integer
|
||||||
* verifing valid values, if value is not valid
|
* verifing valid values, if value is not valid
|
||||||
* returns widthDefault.
|
* returns widthDefault.
|
||||||
* @author Rallaz
|
* @author Rallaz
|
||||||
*/
|
*/
|
||||||
class DRW_LW_Conv{
|
class DRW_LW_Conv
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
enum lineWidth {
|
enum lineWidth
|
||||||
|
{
|
||||||
width00 = 0, /*!< 0.00mm (dxf 0)*/
|
width00 = 0, /*!< 0.00mm (dxf 0)*/
|
||||||
width01 = 1, /*!< 0.05mm (dxf 5)*/
|
width01 = 1, /*!< 0.05mm (dxf 5)*/
|
||||||
width02 = 2, /*!< 0.09mm (dxf 9)*/
|
width02 = 2, /*!< 0.09mm (dxf 9)*/
|
||||||
|
@ -529,7 +590,8 @@ public:
|
||||||
|
|
||||||
static auto lineWidth2dxfInt(lineWidth lw) -> int
|
static auto lineWidth2dxfInt(lineWidth lw) -> int
|
||||||
{
|
{
|
||||||
switch (lw){
|
switch (lw)
|
||||||
|
{
|
||||||
case widthByLayer:
|
case widthByLayer:
|
||||||
return -1;
|
return -1;
|
||||||
case widthByBlock:
|
case widthByBlock:
|
||||||
|
@ -592,8 +654,9 @@ public:
|
||||||
|
|
||||||
static auto dxfInt2lineWidth(int i) -> lineWidth
|
static auto dxfInt2lineWidth(int i) -> lineWidth
|
||||||
{
|
{
|
||||||
if (i<0) {
|
if (i < 0)
|
||||||
if (i==-1)
|
{
|
||||||
|
if (i == -1)
|
||||||
return widthByLayer;
|
return widthByLayer;
|
||||||
if (i == -2)
|
if (i == -2)
|
||||||
return widthByBlock;
|
return widthByBlock;
|
||||||
|
@ -696,7 +759,7 @@ public:
|
||||||
{
|
{
|
||||||
return width23;
|
return width23;
|
||||||
}
|
}
|
||||||
//default by default
|
// default by default
|
||||||
return widthDefault;
|
return widthDefault;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,20 +13,25 @@
|
||||||
#ifndef LIBDXFRW_H
|
#ifndef LIBDXFRW_H
|
||||||
#define LIBDXFRW_H
|
#define LIBDXFRW_H
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include "drw_entities.h"
|
#include "drw_entities.h"
|
||||||
#include "drw_objects.h"
|
|
||||||
#include "drw_header.h"
|
#include "drw_header.h"
|
||||||
#include "drw_interface.h"
|
#include "drw_interface.h"
|
||||||
#include <ciso646>
|
#include "drw_objects.h"
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
class dxfReader;
|
class dxfReader;
|
||||||
class dxfWriter;
|
class dxfWriter;
|
||||||
|
|
||||||
class dxfRW {
|
class dxfRW
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
explicit dxfRW(const char* name);
|
explicit dxfRW(const char *name);
|
||||||
~dxfRW();
|
~dxfRW();
|
||||||
static void setDebug(DRW::DebugLevel lvl);
|
static void setDebug(DRW::DebugLevel lvl);
|
||||||
/// reads the file specified in constructor
|
/// reads the file specified in constructor
|
||||||
|
@ -38,8 +43,8 @@ public:
|
||||||
* @return true for success
|
* @return true for success
|
||||||
*/
|
*/
|
||||||
auto read(DRW_Interface *interface_, bool ext) -> bool;
|
auto read(DRW_Interface *interface_, bool ext) -> bool;
|
||||||
void setBinary(bool b) {binFile = b;}
|
void setBinary(bool b) { binFile = b; }
|
||||||
void AddXSpaceBlock(bool add) {m_xSpaceBlock = add;}
|
void AddXSpaceBlock(bool add) { m_xSpaceBlock = add; }
|
||||||
|
|
||||||
auto write(DRW_Interface *interface_, DRW::Version ver, bool bin) -> bool;
|
auto write(DRW_Interface *interface_, DRW::Version ver, bool bin) -> bool;
|
||||||
auto writeLineType(DRW_LType *ent) -> bool;
|
auto writeLineType(DRW_LType *ent) -> bool;
|
||||||
|
@ -72,7 +77,7 @@ public:
|
||||||
auto writeImage(DRW_Image *ent, const std::string &name) -> DRW_ImageDef *;
|
auto writeImage(DRW_Image *ent, const std::string &name) -> DRW_ImageDef *;
|
||||||
auto writeLeader(DRW_Leader *ent) -> bool;
|
auto writeLeader(DRW_Leader *ent) -> bool;
|
||||||
auto writeDimension(DRW_Dimension *ent) -> bool;
|
auto writeDimension(DRW_Dimension *ent) -> bool;
|
||||||
void setEllipseParts(int parts){elParts = parts;} /*!< set parts number when convert ellipse to polyline */
|
void setEllipseParts(int parts) { elParts = parts; } /*!< set parts number when convert ellipse to polyline */
|
||||||
auto writePlotSettings(DRW_PlotSettings *ent) -> bool;
|
auto writePlotSettings(DRW_PlotSettings *ent) -> bool;
|
||||||
|
|
||||||
auto ErrorString() const -> std::string;
|
auto ErrorString() const -> std::string;
|
||||||
|
@ -135,7 +140,7 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DRW::Version version;
|
DRW::Version version;
|
||||||
DRW::error error {DRW::BAD_NONE};
|
DRW::error error{DRW::BAD_NONE};
|
||||||
std::string fileName;
|
std::string fileName;
|
||||||
std::string codePage;
|
std::string codePage;
|
||||||
bool binFile;
|
bool binFile;
|
||||||
|
@ -144,7 +149,7 @@ private:
|
||||||
dxfWriter *writer;
|
dxfWriter *writer;
|
||||||
DRW_Interface *iface;
|
DRW_Interface *iface;
|
||||||
DRW_Header header;
|
DRW_Header header;
|
||||||
// int section;
|
// int section;
|
||||||
std::string nextentity;
|
std::string nextentity;
|
||||||
int entCount;
|
int entCount;
|
||||||
bool wlayer0;
|
bool wlayer0;
|
||||||
|
@ -152,8 +157,8 @@ private:
|
||||||
bool applyExt;
|
bool applyExt;
|
||||||
bool writingBlock;
|
bool writingBlock;
|
||||||
int elParts; /*!< parts number when convert ellipse to polyline */
|
int elParts; /*!< parts number when convert ellipse to polyline */
|
||||||
std::unordered_map<std::string,int> blockMap;
|
std::unordered_map<std::string, int> blockMap;
|
||||||
std::vector<DRW_ImageDef*> imageDef; /*!< imageDef list */
|
std::vector<DRW_ImageDef *> imageDef; /*!< imageDef list */
|
||||||
|
|
||||||
int currHandle;
|
int currHandle;
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,11 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
||||||
#include "../vmisc/defglobal.h"
|
#include "../vmisc/defglobal.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -32,9 +32,13 @@
|
||||||
#include <QPainterPath>
|
#include <QPainterPath>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QTransform>
|
#include <QTransform>
|
||||||
#include <ciso646>
|
|
||||||
#include <climits>
|
#include <climits>
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
enum class LayoutExportFormats : qint8
|
enum class LayoutExportFormats : qint8
|
||||||
{
|
{
|
||||||
SVG = 0,
|
SVG = 0,
|
||||||
|
|
|
@ -50,7 +50,10 @@
|
||||||
|
|
||||||
template <class T> class QSharedPointer;
|
template <class T> class QSharedPointer;
|
||||||
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
// Backport of relaxed constexpr
|
// Backport of relaxed constexpr
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||||
|
|
|
@ -53,6 +53,11 @@
|
||||||
#include "../vmisc/backport/text.h"
|
#include "../vmisc/backport/text.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
class QPaintDevice;
|
class QPaintDevice;
|
||||||
class QPixmap;
|
class QPixmap;
|
||||||
class QPoint;
|
class QPoint;
|
||||||
|
@ -60,8 +65,6 @@ class QPointF;
|
||||||
class QPolygonF;
|
class QPolygonF;
|
||||||
class QRectF;
|
class QRectF;
|
||||||
|
|
||||||
#include <ciso646>
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
static inline auto svgEngineFeatures() -> QPaintEngine::PaintEngineFeatures
|
static inline auto svgEngineFeatures() -> QPaintEngine::PaintEngineFeatures
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#ifndef VPROPERTY_H
|
#ifndef VPROPERTY_H
|
||||||
#define VPROPERTY_H
|
#define VPROPERTY_H
|
||||||
|
|
||||||
|
|
||||||
#include <QAbstractItemDelegate>
|
#include <QAbstractItemDelegate>
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
@ -32,30 +31,39 @@
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QStyleOptionViewItem>
|
#include <QStyleOptionViewItem>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <Qt>
|
|
||||||
#include <QtGlobal>
|
|
||||||
#include <QtCore/qcontainerfwd.h>
|
#include <QtCore/qcontainerfwd.h>
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
#include "vpropertyexplorer_global.h"
|
#include "vpropertyexplorer_global.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
#include "../vmisc/backport/qoverload.h"
|
#include "../vmisc/backport/qoverload.h"
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "vpropertydef.h"
|
#include "vpropertydef.h"
|
||||||
|
|
||||||
namespace VPE
|
namespace VPE
|
||||||
{
|
{
|
||||||
|
|
||||||
enum class Property : qint8 {Simple, Complex};
|
enum class Property : qint8
|
||||||
|
{
|
||||||
|
Simple,
|
||||||
|
Complex
|
||||||
|
};
|
||||||
|
|
||||||
static const int MyCustomEventType = 1099;
|
static const int MyCustomEventType = 1099;
|
||||||
|
|
||||||
class VPROPERTYEXPLORERSHARED_EXPORT UserChangeEvent : public QEvent
|
class VPROPERTYEXPLORERSHARED_EXPORT UserChangeEvent : public QEvent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UserChangeEvent() : QEvent(static_cast<QEvent::Type>(MyCustomEventType)) {}
|
UserChangeEvent()
|
||||||
|
: QEvent(static_cast<QEvent::Type>(MyCustomEventType))
|
||||||
|
{
|
||||||
|
}
|
||||||
virtual ~UserChangeEvent() override;
|
virtual ~UserChangeEvent() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,6 +76,7 @@ QT_WARNING_DISABLE_GCC("-Wsuggest-final-methods")
|
||||||
class VPROPERTYEXPLORERSHARED_EXPORT VProperty : public QObject
|
class VPROPERTYEXPLORERSHARED_EXPORT VProperty : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum DPC_DisplayColumn
|
enum DPC_DisplayColumn
|
||||||
{
|
{
|
||||||
|
@ -76,7 +85,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Standard constructor, takes a name and a parent property as argument
|
//! Standard constructor, takes a name and a parent property as argument
|
||||||
explicit VProperty(const QString& name,
|
explicit VProperty(const QString &name,
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||||
QMetaType::Type type = QMetaType::QString);
|
QMetaType::Type type = QMetaType::QString);
|
||||||
#else
|
#else
|
||||||
|
@ -122,7 +131,7 @@ public:
|
||||||
virtual auto flags(int column = DPC_Name) const -> Qt::ItemFlags;
|
virtual auto flags(int column = DPC_Name) const -> Qt::ItemFlags;
|
||||||
|
|
||||||
//! Sets the value of the property
|
//! Sets the value of the property
|
||||||
virtual void setValue(const QVariant& value);
|
virtual void setValue(const QVariant &value);
|
||||||
|
|
||||||
//! Returns the value of the property as a QVariant
|
//! Returns the value of the property as a QVariant
|
||||||
virtual auto getValue() const -> QVariant;
|
virtual auto getValue() const -> QVariant;
|
||||||
|
@ -131,7 +140,7 @@ public:
|
||||||
virtual auto serialize() const -> QString;
|
virtual auto serialize() const -> QString;
|
||||||
|
|
||||||
//! Deserializes the value from a string
|
//! Deserializes the value from a string
|
||||||
virtual void deserialize(const QString& value);
|
virtual void deserialize(const QString &value);
|
||||||
|
|
||||||
// The following functions are experimental and not yet implemented.
|
// The following functions are experimental and not yet implemented.
|
||||||
/*//! Returns a pointer to the data stored and handled by this property. In most cases this function shouldn't be
|
/*//! Returns a pointer to the data stored and handled by this property. In most cases this function shouldn't be
|
||||||
|
@ -146,13 +155,13 @@ public:
|
||||||
virtual bool setDataPointer(void* pointer);*/
|
virtual bool setDataPointer(void* pointer);*/
|
||||||
|
|
||||||
//! Sets the name of the property
|
//! Sets the name of the property
|
||||||
virtual void setName(const QString& name);
|
virtual void setName(const QString &name);
|
||||||
|
|
||||||
//! Gets the name of the property
|
//! Gets the name of the property
|
||||||
virtual auto getName() const -> QString;
|
virtual auto getName() const -> QString;
|
||||||
|
|
||||||
//! Sets the name of the property
|
//! Sets the name of the property
|
||||||
virtual void setDescription(const QString& desc);
|
virtual void setDescription(const QString &desc);
|
||||||
|
|
||||||
//! Gets the name of the property
|
//! Gets the name of the property
|
||||||
virtual auto getDescription() const -> QString;
|
virtual auto getDescription() const -> QString;
|
||||||
|
@ -176,10 +185,10 @@ public:
|
||||||
virtual auto getParent() const -> VProperty *;
|
virtual auto getParent() const -> VProperty *;
|
||||||
|
|
||||||
//! Sets the parent of this property
|
//! Sets the parent of this property
|
||||||
virtual void setParent(VProperty* parent);
|
virtual void setParent(VProperty *parent);
|
||||||
|
|
||||||
//! Removes a child from the children list, doesn't delete the child!
|
//! Removes a child from the children list, doesn't delete the child!
|
||||||
virtual void removeChild(VProperty* child);
|
virtual void removeChild(VProperty *child);
|
||||||
|
|
||||||
//! Returns the row the child has
|
//! Returns the row the child has
|
||||||
virtual auto getChildRow(VProperty *child) const -> vpesizetype;
|
virtual auto getChildRow(VProperty *child) const -> vpesizetype;
|
||||||
|
@ -195,13 +204,13 @@ public:
|
||||||
|
|
||||||
//! Sets the settings by calling the overloaded setSetting(const QString& key, const QVariant& value) for each item
|
//! Sets the settings by calling the overloaded setSetting(const QString& key, const QVariant& value) for each item
|
||||||
//! in the map.
|
//! in the map.
|
||||||
virtual void setSettings(const QMap<QString, QVariant>& settings);
|
virtual void setSettings(const QMap<QString, QVariant> &settings);
|
||||||
|
|
||||||
//! Get the settings.
|
//! Get the settings.
|
||||||
virtual auto getSettings() const -> QMap<QString, QVariant>;
|
virtual auto getSettings() const -> QMap<QString, QVariant>;
|
||||||
|
|
||||||
//! Sets the settings. This function has to be implemented in a subclass in order to have an effect
|
//! Sets the settings. This function has to be implemented in a subclass in order to have an effect
|
||||||
virtual void setSetting(const QString& key, const QVariant& value);
|
virtual void setSetting(const QString &key, const QVariant &value);
|
||||||
|
|
||||||
//! Get the settings. This function has to be implemented in a subclass in order to have an effect
|
//! Get the settings. This function has to be implemented in a subclass in order to have an effect
|
||||||
virtual auto getSetting(const QString &key) const -> QVariant;
|
virtual auto getSetting(const QString &key) const -> QVariant;
|
||||||
|
@ -228,10 +237,10 @@ signals:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Protected constructor
|
//! Protected constructor
|
||||||
explicit VProperty(VPropertyPrivate* d);
|
explicit VProperty(VPropertyPrivate *d);
|
||||||
|
|
||||||
//! The protected structure holding the member variables (to assure binary compatibility)
|
//! The protected structure holding the member variables (to assure binary compatibility)
|
||||||
VPropertyPrivate* d_ptr;
|
VPropertyPrivate *d_ptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Provide access functions for the d_ptr
|
// Provide access functions for the d_ptr
|
||||||
|
@ -241,6 +250,6 @@ private:
|
||||||
|
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|
||||||
}
|
} // namespace VPE
|
||||||
|
|
||||||
#endif // VPROPERTY_H
|
#endif // VPROPERTY_H
|
||||||
|
|
|
@ -44,7 +44,10 @@
|
||||||
#include "../vlayout/vrawsapoint.h"
|
#include "../vlayout/vrawsapoint.h"
|
||||||
#include "../vlayout/vsapoint.h"
|
#include "../vlayout/vsapoint.h"
|
||||||
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define V_UNUSED __attribute__((unused))
|
#define V_UNUSED __attribute__((unused))
|
||||||
|
@ -81,7 +84,9 @@ class VRawSAPoint;
|
||||||
class AbstractTest : public QObject
|
class AbstractTest : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
public : explicit AbstractTest(QObject *parent = nullptr);
|
|
||||||
|
public:
|
||||||
|
explicit AbstractTest(QObject *parent = nullptr);
|
||||||
|
|
||||||
template <class T> static auto VectorFromJson(const QString &json) -> QVector<T>;
|
template <class T> static auto VectorFromJson(const QString &json) -> QVector<T>;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,11 @@
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QTextLayout>
|
#include <QTextLayout>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VElidedLabel::VElidedLabel(QWidget *parent)
|
VElidedLabel::VElidedLabel(QWidget *parent)
|
||||||
|
@ -71,7 +75,7 @@ void VElidedLabel::paintEvent(QPaintEvent *event)
|
||||||
if (not DrawParagraph(painter, paragraphs.at(i), y, didElide))
|
if (not DrawParagraph(painter, paragraphs.at(i), y, didElide))
|
||||||
{
|
{
|
||||||
// It text has empty strings a user will not see elided string, but we still want to show a tooltip.
|
// It text has empty strings a user will not see elided string, but we still want to show a tooltip.
|
||||||
if (i != paragraphs.size()-1 && !didElide)
|
if (i != paragraphs.size() - 1 && !didElide)
|
||||||
{
|
{
|
||||||
didElide = true;
|
didElide = true;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +94,7 @@ void VElidedLabel::paintEvent(QPaintEvent *event)
|
||||||
// Show a tooltip in case we cannot show a whole text in the widget
|
// Show a tooltip in case we cannot show a whole text in the widget
|
||||||
// Use dumb html tag to separate paragraphs.
|
// Use dumb html tag to separate paragraphs.
|
||||||
QString toolTip;
|
QString toolTip;
|
||||||
for(int i = 0; i < paragraphs.size(); ++i)
|
for (int i = 0; i < paragraphs.size(); ++i)
|
||||||
{
|
{
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,10 +27,13 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#include "vplaintextedit.h"
|
#include "vplaintextedit.h"
|
||||||
|
|
||||||
#include <ciso646>
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPlainTextEdit::VPlainTextEdit(QWidget * parent)
|
VPlainTextEdit::VPlainTextEdit(QWidget *parent)
|
||||||
: QPlainTextEdit(parent),
|
: QPlainTextEdit(parent),
|
||||||
m_highlighter(document())
|
m_highlighter(document())
|
||||||
{
|
{
|
||||||
|
@ -38,7 +41,7 @@ VPlainTextEdit::VPlainTextEdit(QWidget * parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPlainTextEdit::VPlainTextEdit(const QString & text, QWidget * parent)
|
VPlainTextEdit::VPlainTextEdit(const QString &text, QWidget *parent)
|
||||||
: QPlainTextEdit(text, parent),
|
: QPlainTextEdit(text, parent),
|
||||||
m_highlighter(document())
|
m_highlighter(document())
|
||||||
{
|
{
|
||||||
|
@ -54,13 +57,13 @@ VPlainTextEdit::~VPlainTextEdit()
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPlainTextEdit::SetFilter(const QString &filter)
|
void VPlainTextEdit::SetFilter(const QString &filter)
|
||||||
{
|
{
|
||||||
if(m_filter.isEmpty() && not filter.isEmpty())
|
if (m_filter.isEmpty() && not filter.isEmpty())
|
||||||
{
|
{
|
||||||
QTextDocument *doc = document();
|
QTextDocument *doc = document();
|
||||||
m_allLines.clear();
|
m_allLines.clear();
|
||||||
m_allLines.reserve(doc->lineCount());
|
m_allLines.reserve(doc->lineCount());
|
||||||
|
|
||||||
for(int i=0; i < doc->blockCount(); ++i)
|
for (int i = 0; i < doc->blockCount(); ++i)
|
||||||
{
|
{
|
||||||
m_allLines.append(doc->findBlockByNumber(i).text());
|
m_allLines.append(doc->findBlockByNumber(i).text());
|
||||||
}
|
}
|
||||||
|
@ -70,7 +73,7 @@ void VPlainTextEdit::SetFilter(const QString &filter)
|
||||||
|
|
||||||
Filter();
|
Filter();
|
||||||
|
|
||||||
if(m_filter.isEmpty())
|
if (m_filter.isEmpty())
|
||||||
{
|
{
|
||||||
m_allLines.clear();
|
m_allLines.clear();
|
||||||
}
|
}
|
||||||
|
@ -232,9 +235,9 @@ void VPlainTextEdit::CreateParenthesisSelection(int pos, bool match)
|
||||||
void VPlainTextEdit::Filter()
|
void VPlainTextEdit::Filter()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
if(not m_filter.isEmpty())
|
if (not m_filter.isEmpty())
|
||||||
{
|
{
|
||||||
for(auto &line : m_allLines)
|
for (auto &line : m_allLines)
|
||||||
{
|
{
|
||||||
if (line.contains(m_filter))
|
if (line.contains(m_filter))
|
||||||
{
|
{
|
||||||
|
@ -244,7 +247,7 @@ void VPlainTextEdit::Filter()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(auto &line : m_allLines)
|
for (auto &line : m_allLines)
|
||||||
{
|
{
|
||||||
QPlainTextEdit::appendPlainText(line);
|
QPlainTextEdit::appendPlainText(line);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,11 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
||||||
#include "../vmisc/defglobal.h"
|
#include "../vmisc/defglobal.h"
|
||||||
|
|
|
@ -30,11 +30,15 @@
|
||||||
#include "../vmisc/commandoptions.h"
|
#include "../vmisc/commandoptions.h"
|
||||||
|
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
TST_VCommandLine::TST_VCommandLine(QObject *parent)
|
TST_VCommandLine::TST_VCommandLine(QObject *parent)
|
||||||
:QObject(parent)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,15 @@
|
||||||
#include "../vmisc/vlockguard.h"
|
#include "../vmisc/vlockguard.h"
|
||||||
|
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
#include <ciso646>
|
|
||||||
|
// Header <ciso646> is removed in C++20.
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
#include <ciso646> // and, not, or
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
TST_VLockGuard::TST_VLockGuard(QObject *parent)
|
TST_VLockGuard::TST_VLockGuard(QObject *parent)
|
||||||
:QObject(parent)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user