Fix build.
This commit is contained in:
parent
5f091344fa
commit
904c18a7f9
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,14 @@
|
||||||
#ifndef DRW_CPTABLES_H
|
#ifndef DRW_CPTABLES_H
|
||||||
#define DRW_CPTABLES_H
|
#define DRW_CPTABLES_H
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
//first entry in all tables are 0x80
|
//first entry in all tables are 0x80
|
||||||
#define CPOFFSET 0x80
|
#define CPOFFSET 0x80
|
||||||
#define CPLENGTHCOMMON 128
|
constexpr int CPLENGTHCOMMON = 128;
|
||||||
|
|
||||||
//Table 874
|
//Table 874
|
||||||
static const int DRW_Table874[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table874 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x00 , //3 #UNDEFINED
|
0x00 , //3 #UNDEFINED
|
||||||
|
@ -138,7 +140,7 @@ static const int DRW_Table874[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1250
|
//Table 1250
|
||||||
static const int DRW_Table1250[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1250 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00, //2 #UNDEFINED
|
0x00, //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -271,7 +273,7 @@ static const int DRW_Table1250[] = {
|
||||||
|
|
||||||
|
|
||||||
//Table 1251
|
//Table 1251
|
||||||
static const int DRW_Table1251[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1251 = {
|
||||||
0x0402, //1 #CYRILLIC CAPITAL LETTER DJE
|
0x0402, //1 #CYRILLIC CAPITAL LETTER DJE
|
||||||
0x0403, //2 #CYRILLIC CAPITAL LETTER GJE
|
0x0403, //2 #CYRILLIC CAPITAL LETTER GJE
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -404,7 +406,7 @@ static const int DRW_Table1251[] = {
|
||||||
|
|
||||||
|
|
||||||
//Table 1252
|
//Table 1252
|
||||||
static const int DRW_Table1252[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1252 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00, //2 #UNDEFINED
|
0x00, //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -536,7 +538,7 @@ static const int DRW_Table1252[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1253
|
//Table 1253
|
||||||
static const int DRW_Table1253[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1253 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -668,7 +670,7 @@ static const int DRW_Table1253[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1254
|
//Table 1254
|
||||||
static const int DRW_Table1254[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1254 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -800,7 +802,7 @@ static const int DRW_Table1254[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1255
|
//Table 1255
|
||||||
static const int DRW_Table1255[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1255 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -932,7 +934,7 @@ static const int DRW_Table1255[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1256
|
//Table 1256
|
||||||
static const int DRW_Table1256[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1256 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x067E, //2 #ARABIC LETTER PEH
|
0x067E, //2 #ARABIC LETTER PEH
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -1064,7 +1066,7 @@ static const int DRW_Table1256[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1257
|
//Table 1257
|
||||||
static const int DRW_Table1257[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1257 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
@ -1196,7 +1198,7 @@ static const int DRW_Table1257[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//Table 1258
|
//Table 1258
|
||||||
static const int DRW_Table1258[] = {
|
static const std::array<int, CPLENGTHCOMMON> DRW_Table1258 = {
|
||||||
0x20AC, //1 #EURO SIGN
|
0x20AC, //1 #EURO SIGN
|
||||||
0x00 , //2 #UNDEFINED
|
0x00 , //2 #UNDEFINED
|
||||||
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
0x201A, //3 #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
|
|
@ -6,8 +6,10 @@
|
||||||
#include "drw_cptable950.h"
|
#include "drw_cptable950.h"
|
||||||
#include "drw_cptables.h"
|
#include "drw_cptables.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QSet>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cstddef>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -15,7 +17,7 @@
|
||||||
|
|
||||||
DRW_TextCodec::DRW_TextCodec()
|
DRW_TextCodec::DRW_TextCodec()
|
||||||
: version(DRW::AC1021),
|
: version(DRW::AC1021),
|
||||||
conv(new DRW_Converter(nullptr, 0))
|
conv(new DRW_Converter())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +100,7 @@ void DRW_TextCodec::setCodePage(const std::string &c, bool dxfFormat)
|
||||||
{
|
{
|
||||||
if (cp == "ANSI_874")
|
if (cp == "ANSI_874")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table874, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table874);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_932")
|
else if (cp == "ANSI_932")
|
||||||
{
|
{
|
||||||
|
@ -106,63 +108,63 @@ void DRW_TextCodec::setCodePage(const std::string &c, bool dxfFormat)
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_936")
|
else if (cp == "ANSI_936")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvDBCSTable>(DRW_Table936, DRW_LeadTable936, DRW_DoubleTable936, CPLENGTH936);
|
conv = std::make_unique<DRW_ConvDBCSTable<CPLENGTH936>>(DRW_LeadTable936, DRW_DoubleTable936);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_949")
|
else if (cp == "ANSI_949")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvDBCSTable>(DRW_Table949, DRW_LeadTable949, DRW_DoubleTable949, CPLENGTH949);
|
conv = std::make_unique<DRW_ConvDBCSTable<CPLENGTH949>>(DRW_LeadTable949, DRW_DoubleTable949);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_950")
|
else if (cp == "ANSI_950")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvDBCSTable>(DRW_Table950, DRW_LeadTable950, DRW_DoubleTable950, CPLENGTH950);
|
conv = std::make_unique<DRW_ConvDBCSTable<CPLENGTH950>>(DRW_LeadTable950, DRW_DoubleTable950);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1250")
|
else if (cp == "ANSI_1250")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1250, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1250);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1251")
|
else if (cp == "ANSI_1251")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1251, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1251);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1253")
|
else if (cp == "ANSI_1253")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1253, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1253);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1254")
|
else if (cp == "ANSI_1254")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1254, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1254);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1255")
|
else if (cp == "ANSI_1255")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1255, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1255);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1256")
|
else if (cp == "ANSI_1256")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1256, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1256);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1257")
|
else if (cp == "ANSI_1257")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1257, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1257);
|
||||||
}
|
}
|
||||||
else if (cp == "ANSI_1258")
|
else if (cp == "ANSI_1258")
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1258, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1258);
|
||||||
}
|
}
|
||||||
else if (cp == "UTF-8")
|
else if (cp == "UTF-8")
|
||||||
{ // DXF older than 2007 are write in win codepages
|
{ // DXF older than 2007 are write in win codepages
|
||||||
cp = "ANSI_1252";
|
cp = "ANSI_1252";
|
||||||
conv = std::make_unique<DRW_Converter>(nullptr, 0);
|
conv = std::make_unique<DRW_Converter>();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_ConvTable>(DRW_Table1252, CPLENGTHCOMMON);
|
conv = std::make_unique<DRW_ConvTable>(DRW_Table1252);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (dxfFormat)
|
if (dxfFormat)
|
||||||
{
|
{
|
||||||
conv = std::make_unique<DRW_Converter>(nullptr, 0); // utf16 to utf8
|
conv = std::make_unique<DRW_Converter>(); // utf16 to utf8
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -187,7 +189,7 @@ auto DRW_TextCodec::correctCodePage(const std::string &s) -> std::string
|
||||||
std::string cp = s;
|
std::string cp = s;
|
||||||
transform(cp.begin(), cp.end(), cp.begin(), toupper);
|
transform(cp.begin(), cp.end(), cp.begin(), toupper);
|
||||||
|
|
||||||
static auto map = QMap<std::string, QSet<std::string>>{
|
static auto map = QMap<std::string, QSet<QString>>{
|
||||||
// Latin/Thai
|
// Latin/Thai
|
||||||
{"ANSI_874", {"ANSI_874", "CP874", "ISO8859-11", "TIS-620"}}, // Central Europe and Eastern Europe
|
{"ANSI_874", {"ANSI_874", "CP874", "ISO8859-11", "TIS-620"}}, // Central Europe and Eastern Europe
|
||||||
{"ANSI_1250", {"ANSI_1250", "CP1250", "ISO8859-2"}}, // Cyrillic script
|
{"ANSI_1250", {"ANSI_1250", "CP1250", "ISO8859-2"}}, // Cyrillic script
|
||||||
|
@ -217,7 +219,8 @@ auto DRW_TextCodec::correctCodePage(const std::string &s) -> std::string
|
||||||
auto i = map.constBegin();
|
auto i = map.constBegin();
|
||||||
while (i != map.constEnd())
|
while (i != map.constEnd())
|
||||||
{
|
{
|
||||||
if (i.value().contains(cp))
|
// TODO: Since Qt 6.1 possible to use std::string instead of QString
|
||||||
|
if (i.value().contains(QString::fromStdString(cp)))
|
||||||
{
|
{
|
||||||
return i.key();
|
return i.key();
|
||||||
}
|
}
|
||||||
|
@ -282,7 +285,7 @@ auto DRW_ConvTable::fromUtf8(const std::string &s) -> std::string
|
||||||
j = i + l;
|
j = i + l;
|
||||||
i = j - 1;
|
i = j - 1;
|
||||||
notFound = true;
|
notFound = true;
|
||||||
for (int k = 0; k < cpLength; k++)
|
for (size_t k = 0; k < table.size(); k++)
|
||||||
{
|
{
|
||||||
if (table[k] == code)
|
if (table[k] == code)
|
||||||
{
|
{
|
||||||
|
@ -432,7 +435,7 @@ auto DRW_Converter::decodeNum(const std::string &s, unsigned int *b) -> int
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto DRW_ConvDBCSTable::fromUtf8(const std::string &s) -> std::string
|
template <size_t DoubleTableSize> auto DRW_ConvDBCSTable<DoubleTableSize>::fromUtf8(const std::string &s) -> std::string
|
||||||
{
|
{
|
||||||
std::string result;
|
std::string result;
|
||||||
bool notFound;
|
bool notFound;
|
||||||
|
@ -451,11 +454,11 @@ auto DRW_ConvDBCSTable::fromUtf8(const std::string &s) -> std::string
|
||||||
j = i + l;
|
j = i + l;
|
||||||
i = j - 1;
|
i = j - 1;
|
||||||
notFound = true;
|
notFound = true;
|
||||||
for (int k = 0; k < cpLength; k++)
|
for (const auto &row : doubleTable)
|
||||||
{
|
{
|
||||||
if (doubleTable[k][1] == code)
|
if (row[1] == code)
|
||||||
{
|
{
|
||||||
int data = doubleTable[k][0];
|
int data = row[0];
|
||||||
char d[3];
|
char d[3];
|
||||||
d[0] = static_cast<char>(data >> 8);
|
d[0] = static_cast<char>(data >> 8);
|
||||||
d[1] = static_cast<char>(data & 0xFF);
|
d[1] = static_cast<char>(data & 0xFF);
|
||||||
|
@ -476,7 +479,7 @@ auto DRW_ConvDBCSTable::fromUtf8(const std::string &s) -> std::string
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto DRW_ConvDBCSTable::toUtf8(const std::string &s) -> std::string
|
template <size_t DoubleTableSize> auto DRW_ConvDBCSTable<DoubleTableSize>::toUtf8(const std::string &s) -> std::string
|
||||||
{
|
{
|
||||||
std::string res;
|
std::string res;
|
||||||
for (auto it = s.begin(); it < s.end(); ++it)
|
for (auto it = s.begin(); it < s.end(); ++it)
|
||||||
|
@ -513,7 +516,7 @@ auto DRW_ConvDBCSTable::toUtf8(const std::string &s) -> std::string
|
||||||
int code = (c << 8) | static_cast<unsigned char>(*it);
|
int code = (c << 8) | static_cast<unsigned char>(*it);
|
||||||
int sta = leadTable[c - 0x81];
|
int sta = leadTable[c - 0x81];
|
||||||
int end = leadTable[c - 0x80];
|
int end = leadTable[c - 0x80];
|
||||||
for (int k = sta; k < end; k++)
|
for (size_t k = static_cast<size_t>(sta); k < static_cast<size_t>(end); k++)
|
||||||
{
|
{
|
||||||
if (doubleTable[k][0] == code)
|
if (doubleTable[k][0] == code)
|
||||||
{
|
{
|
||||||
|
@ -533,11 +536,6 @@ auto DRW_ConvDBCSTable::toUtf8(const std::string &s) -> std::string
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
DRW_Conv932Table::DRW_Conv932Table()
|
|
||||||
: DRW_Converter(DRW_Table932, CPLENGTH932)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
auto DRW_Conv932Table::fromUtf8(const std::string &s) -> std::string
|
auto DRW_Conv932Table::fromUtf8(const std::string &s) -> std::string
|
||||||
{
|
{
|
||||||
std::string result;
|
std::string result;
|
||||||
|
@ -566,11 +564,11 @@ auto DRW_Conv932Table::fromUtf8(const std::string &s) -> std::string
|
||||||
if (notFound &&
|
if (notFound &&
|
||||||
(code < 0xF8 || (code > 0x390 && code < 0x542) || (code > 0x200F && code < 0x9FA1) || code > 0xF928))
|
(code < 0xF8 || (code > 0x390 && code < 0x542) || (code > 0x200F && code < 0x9FA1) || code > 0xF928))
|
||||||
{
|
{
|
||||||
for (int k = 0; k < cpLength; k++)
|
for (const auto &row : DRW_DoubleTable932)
|
||||||
{
|
{
|
||||||
if (DRW_DoubleTable932[k][1] == code)
|
if (row[1] == code)
|
||||||
{
|
{
|
||||||
int data = DRW_DoubleTable932[k][0];
|
int data = row[0];
|
||||||
char d[3];
|
char d[3];
|
||||||
d[0] = static_cast<char>(data >> 8);
|
d[0] = static_cast<char>(data >> 8);
|
||||||
d[1] = static_cast<char>(data & 0xFF);
|
d[1] = static_cast<char>(data & 0xFF);
|
||||||
|
@ -641,7 +639,7 @@ auto DRW_Conv932Table::toUtf8(const std::string &s) -> std::string
|
||||||
}
|
}
|
||||||
if (end > 0)
|
if (end > 0)
|
||||||
{
|
{
|
||||||
for (int k = sta; k < end; k++)
|
for (size_t k = static_cast<size_t>(sta); k < static_cast<size_t>(end); k++)
|
||||||
{
|
{
|
||||||
if (DRW_DoubleTable932[k][0] == code)
|
if (DRW_DoubleTable932[k][0] == code)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "../drw_base.h"
|
#include "../drw_base.h"
|
||||||
#include <QtCore/qcontainerfwd.h>
|
#include <QtCore/qcontainerfwd.h>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
#include <array>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
@ -40,12 +41,9 @@ private:
|
||||||
class DRW_Converter
|
class DRW_Converter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DRW_Converter(const int *t, int l)
|
DRW_Converter() = default;
|
||||||
: table{t},
|
|
||||||
cpLength{l}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
virtual ~DRW_Converter() = default;
|
virtual ~DRW_Converter() = default;
|
||||||
|
|
||||||
virtual auto fromUtf8(const std::string &s) -> std::string { return s; }
|
virtual auto fromUtf8(const std::string &s) -> std::string { return s; }
|
||||||
virtual auto toUtf8(const std::string &s) -> std::string;
|
virtual auto toUtf8(const std::string &s) -> std::string;
|
||||||
|
|
||||||
|
@ -54,56 +52,75 @@ public:
|
||||||
static auto encodeNum(int c) -> std::string;
|
static auto encodeNum(int c) -> std::string;
|
||||||
static auto decodeNum(const std::string &s, unsigned int *b) -> int;
|
static auto decodeNum(const std::string &s, unsigned int *b) -> int;
|
||||||
|
|
||||||
const int *table{nullptr};
|
private:
|
||||||
int cpLength;
|
// cppcheck-suppress unknownMacro
|
||||||
|
Q_DISABLE_COPY_MOVE(DRW_Converter) // NOLINT
|
||||||
};
|
};
|
||||||
|
|
||||||
class DRW_ConvUTF16 : public DRW_Converter
|
class DRW_ConvUTF16 : public DRW_Converter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DRW_ConvUTF16()
|
DRW_ConvUTF16() = default;
|
||||||
: DRW_Converter(nullptr, 0)
|
~DRW_ConvUTF16() override = default;
|
||||||
{
|
|
||||||
}
|
|
||||||
auto fromUtf8(const std::string &s) -> std::string override;
|
|
||||||
auto toUtf8(const std::string &s) -> std::string override;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DRW_ConvTable : public DRW_Converter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
DRW_ConvTable(const int *t, int l)
|
|
||||||
: DRW_Converter(t, l)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
auto fromUtf8(const std::string &s) -> std::string override;
|
|
||||||
auto toUtf8(const std::string &s) -> std::string override;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DRW_ConvDBCSTable : public DRW_Converter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
DRW_ConvDBCSTable(const int *t, const int *lt, const int dt[][2], int l)
|
|
||||||
: DRW_Converter(t, l),
|
|
||||||
leadTable{lt},
|
|
||||||
doubleTable{dt}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
auto fromUtf8(const std::string &s) -> std::string override;
|
auto fromUtf8(const std::string &s) -> std::string override;
|
||||||
auto toUtf8(const std::string &s) -> std::string override;
|
auto toUtf8(const std::string &s) -> std::string override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const int *leadTable{nullptr};
|
// cppcheck-suppress unknownMacro
|
||||||
const int (*doubleTable)[2];
|
Q_DISABLE_COPY_MOVE(DRW_ConvUTF16) // NOLINT
|
||||||
|
};
|
||||||
|
|
||||||
|
class DRW_ConvTable : public DRW_Converter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit DRW_ConvTable(const std::array<int, 128> &t)
|
||||||
|
: table{t}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~DRW_ConvTable() override = default;
|
||||||
|
|
||||||
|
auto fromUtf8(const std::string &s) -> std::string override;
|
||||||
|
auto toUtf8(const std::string &s) -> std::string override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// cppcheck-suppress unknownMacro
|
||||||
|
Q_DISABLE_COPY_MOVE(DRW_ConvTable) // NOLINT
|
||||||
|
const std::array<int, 128> &table;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <size_t DoubleTableSize> class DRW_ConvDBCSTable : public DRW_Converter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DRW_ConvDBCSTable(const std::array<int, 127> <, const std::array<std::array<int, 2>, DoubleTableSize> &dt)
|
||||||
|
: leadTable{lt},
|
||||||
|
doubleTable{dt}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~DRW_ConvDBCSTable() override = default;
|
||||||
|
|
||||||
|
auto fromUtf8(const std::string &s) -> std::string override;
|
||||||
|
auto toUtf8(const std::string &s) -> std::string override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// cppcheck-suppress unknownMacro
|
||||||
|
Q_DISABLE_COPY_MOVE(DRW_ConvDBCSTable) // NOLINT
|
||||||
|
const std::array<int, 127> &leadTable;
|
||||||
|
const std::array<std::array<int, 2>, DoubleTableSize> &doubleTable;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DRW_Conv932Table : public DRW_Converter
|
class DRW_Conv932Table : public DRW_Converter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DRW_Conv932Table();
|
DRW_Conv932Table() = default;
|
||||||
|
~DRW_Conv932Table() override = default;
|
||||||
|
|
||||||
auto fromUtf8(const std::string &s) -> std::string override;
|
auto fromUtf8(const std::string &s) -> std::string override;
|
||||||
auto toUtf8(const std::string &s) -> std::string override;
|
auto toUtf8(const std::string &s) -> std::string override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// cppcheck-suppress unknownMacro
|
||||||
|
Q_DISABLE_COPY_MOVE(DRW_Conv932Table) // NOLINT
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DRW_TEXTCODEC_H
|
#endif // DRW_TEXTCODEC_H
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
|
|
||||||
#include "libdxfrw.h"
|
#include "libdxfrw.h"
|
||||||
#include "intern/drw_dbg.h"
|
#include "intern/drw_dbg.h"
|
||||||
#include "intern/drw_textcodec.h"
|
|
||||||
#include "intern/dxfreader.h"
|
#include "intern/dxfreader.h"
|
||||||
#include "intern/dxfwriter.h"
|
#include "intern/dxfwriter.h"
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
|
@ -34,24 +33,7 @@
|
||||||
};*/
|
};*/
|
||||||
|
|
||||||
dxfRW::dxfRW(const char *name)
|
dxfRW::dxfRW(const char *name)
|
||||||
: version(),
|
: fileName(name)
|
||||||
fileName(name),
|
|
||||||
codePage(),
|
|
||||||
binFile(),
|
|
||||||
reader(nullptr),
|
|
||||||
writer(nullptr),
|
|
||||||
iface(),
|
|
||||||
header(),
|
|
||||||
nextentity(),
|
|
||||||
entCount(),
|
|
||||||
wlayer0(),
|
|
||||||
dimstyleStd(),
|
|
||||||
applyExt(false),
|
|
||||||
writingBlock(),
|
|
||||||
elParts(128), // parts number when convert ellipse to polyline
|
|
||||||
blockMap(),
|
|
||||||
imageDef(),
|
|
||||||
currHandle()
|
|
||||||
{
|
{
|
||||||
DRW_DBGSL(DRW_dbg::Level::None);
|
DRW_DBGSL(DRW_dbg::Level::None);
|
||||||
}
|
}
|
||||||
|
@ -60,8 +42,10 @@ dxfRW::~dxfRW()
|
||||||
{
|
{
|
||||||
delete reader;
|
delete reader;
|
||||||
delete writer;
|
delete writer;
|
||||||
for (std::vector<DRW_ImageDef *>::iterator it = imageDef.begin(); it != imageDef.end(); ++it)
|
for (auto &it : imageDef)
|
||||||
delete *it;
|
{
|
||||||
|
delete it;
|
||||||
|
}
|
||||||
|
|
||||||
imageDef.clear();
|
imageDef.clear();
|
||||||
}
|
}
|
||||||
|
@ -3772,7 +3756,7 @@ auto dxfRW::getError() const -> DRW::error
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto dxfRW::setError(const DRW::error lastError) -> bool
|
auto dxfRW::setError(DRW::error lastError) -> bool
|
||||||
{
|
{
|
||||||
error = lastError;
|
error = lastError;
|
||||||
return (DRW::BAD_NONE == error);
|
return (DRW::BAD_NONE == error);
|
||||||
|
|
|
@ -33,6 +33,7 @@ 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
|
||||||
/*!
|
/*!
|
||||||
|
@ -136,32 +137,32 @@ private:
|
||||||
static auto toHexStr(int n) -> std::string; // RLZ removeme
|
static auto toHexStr(int n) -> std::string; // RLZ removeme
|
||||||
auto writeAppData(const std::list<std::list<DRW_Variant>> &appData) -> bool;
|
auto writeAppData(const std::list<std::list<DRW_Variant>> &appData) -> bool;
|
||||||
|
|
||||||
auto setError(const DRW::error lastError) -> bool;
|
auto setError(DRW::error lastError) -> bool;
|
||||||
|
|
||||||
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{false};
|
||||||
bool m_xSpaceBlock{true};
|
bool m_xSpaceBlock{true};
|
||||||
dxfReader *reader;
|
dxfReader *reader{nullptr};
|
||||||
dxfWriter *writer;
|
dxfWriter *writer{nullptr};
|
||||||
DRW_Interface *iface;
|
DRW_Interface *iface{nullptr};
|
||||||
DRW_Header header;
|
DRW_Header header{};
|
||||||
// int section;
|
// int section;
|
||||||
std::string nextentity;
|
std::string nextentity{};
|
||||||
int entCount;
|
int entCount{};
|
||||||
bool wlayer0;
|
bool wlayer0{};
|
||||||
bool dimstyleStd;
|
bool dimstyleStd{};
|
||||||
bool applyExt;
|
bool applyExt{false};
|
||||||
bool writingBlock;
|
bool writingBlock{};
|
||||||
int elParts; /*!< parts number when convert ellipse to polyline */
|
int elParts{128}; /*!< parts number when convert ellipse to polyline */
|
||||||
std::unordered_map<std::string, int> blockMap;
|
std::unordered_map<std::string, int> blockMap{};
|
||||||
std::unordered_map<std::string, int> textStyleMap;
|
std::unordered_map<std::string, int> textStyleMap{};
|
||||||
std::vector<DRW_ImageDef *> imageDef; /*!< imageDef list */
|
std::vector<DRW_ImageDef *> imageDef{}; /*!< imageDef list */
|
||||||
|
|
||||||
int currHandle;
|
int currHandle{};
|
||||||
|
|
||||||
std::string errorString{};
|
std::string errorString{};
|
||||||
};
|
};
|
||||||
|
|
|
@ -52,7 +52,6 @@ DEFINES += SRCDIR=\\\"$$PWD/\\\"
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
qttestmainlambda.cpp \
|
qttestmainlambda.cpp \
|
||||||
tst_dxf.cpp \
|
|
||||||
tst_vdomdocument.cpp \
|
tst_vdomdocument.cpp \
|
||||||
tst_vposter.cpp \
|
tst_vposter.cpp \
|
||||||
tst_vspline.cpp \
|
tst_vspline.cpp \
|
||||||
|
@ -82,7 +81,6 @@ SOURCES += \
|
||||||
*msvc*:SOURCES += stable.cpp
|
*msvc*:SOURCES += stable.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
tst_dxf.h \
|
|
||||||
tst_vdomdocument.h \
|
tst_vdomdocument.h \
|
||||||
tst_vposter.h \
|
tst_vposter.h \
|
||||||
tst_vspline.h \
|
tst_vspline.h \
|
||||||
|
|
|
@ -25,7 +25,6 @@ VTestApp {
|
||||||
|
|
||||||
files: [
|
files: [
|
||||||
"qttestmainlambda.cpp",
|
"qttestmainlambda.cpp",
|
||||||
"tst_dxf.cpp",
|
|
||||||
"tst_vdomdocument.cpp",
|
"tst_vdomdocument.cpp",
|
||||||
"tst_vposter.cpp",
|
"tst_vposter.cpp",
|
||||||
"tst_vspline.cpp",
|
"tst_vspline.cpp",
|
||||||
|
@ -51,7 +50,6 @@ VTestApp {
|
||||||
"tst_vtranslatevars.cpp",
|
"tst_vtranslatevars.cpp",
|
||||||
"tst_vabstractpiece.cpp",
|
"tst_vabstractpiece.cpp",
|
||||||
"tst_vtooluniondetails.cpp",
|
"tst_vtooluniondetails.cpp",
|
||||||
"tst_dxf.h",
|
|
||||||
"tst_vdomdocument.h",
|
"tst_vdomdocument.h",
|
||||||
"tst_vposter.h",
|
"tst_vposter.h",
|
||||||
"tst_vspline.h",
|
"tst_vspline.h",
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <xercesc/util/PlatformUtils.hpp>
|
#include <xercesc/util/PlatformUtils.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "tst_dxf.h"
|
#include "../vmisc/testvapplication.h"
|
||||||
#include "tst_findpoint.h"
|
#include "tst_findpoint.h"
|
||||||
#include "tst_misc.h"
|
#include "tst_misc.h"
|
||||||
#include "tst_nameregexp.h"
|
#include "tst_nameregexp.h"
|
||||||
|
@ -59,14 +59,10 @@
|
||||||
#include "tst_vtranslatevars.h"
|
#include "tst_vtranslatevars.h"
|
||||||
#include "tst_xsdschema.h"
|
#include "tst_xsdschema.h"
|
||||||
|
|
||||||
#include "../qmuparser/qmudef.h"
|
|
||||||
#include "../vmisc/def.h"
|
|
||||||
#include "../vmisc/testvapplication.h"
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto main(int argc, char **argv) -> int
|
auto main(int argc, char **argv) -> int
|
||||||
{
|
{
|
||||||
Q_INIT_RESOURCE(schema);
|
Q_INIT_RESOURCE(schema); // NOLINT
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||||
XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize();
|
XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize();
|
||||||
|
@ -107,9 +103,9 @@ auto main(int argc, char **argv) -> int
|
||||||
ASSERT_TEST(new TST_ReadVal());
|
ASSERT_TEST(new TST_ReadVal());
|
||||||
ASSERT_TEST(new TST_VTranslateVars());
|
ASSERT_TEST(new TST_VTranslateVars());
|
||||||
ASSERT_TEST(new TST_VToolUnionDetails());
|
ASSERT_TEST(new TST_VToolUnionDetails());
|
||||||
ASSERT_TEST(new TST_DXF());
|
|
||||||
ASSERT_TEST(new TST_XSDShema());
|
ASSERT_TEST(new TST_XSDShema());
|
||||||
ASSERT_TEST(new TST_VSVGPathTokenizer());
|
ASSERT_TEST(new TST_VSVGPathTokenizer());
|
||||||
|
ASSERT_TEST(new TST_VDomDocument());
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,134 +0,0 @@
|
||||||
/************************************************************************
|
|
||||||
**
|
|
||||||
** @file tst_dxf.cpp
|
|
||||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
|
||||||
** @date 15 1, 2020
|
|
||||||
**
|
|
||||||
** @brief
|
|
||||||
** @copyright
|
|
||||||
** This source code is part of the Valentina project, a pattern making
|
|
||||||
** program, whose allow create and modeling patterns of clothing.
|
|
||||||
** Copyright (C) 2020 Valentina project
|
|
||||||
** <https://gitlab.com/smart-pattern/valentina> All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Valentina is free software: you can redistribute it and/or modify
|
|
||||||
** it under the terms of the GNU General Public License as published by
|
|
||||||
** the Free Software Foundation, either version 3 of the License, or
|
|
||||||
** (at your option) any later version.
|
|
||||||
**
|
|
||||||
** Valentina is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
** GNU General Public License for more details.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the GNU General Public License
|
|
||||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
**
|
|
||||||
*************************************************************************/
|
|
||||||
#include "tst_dxf.h"
|
|
||||||
|
|
||||||
#include <QtTest>
|
|
||||||
|
|
||||||
#include "../vmisc/compatibility.h"
|
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
#include "../vdxf/dxfdef.h"
|
|
||||||
#include "../vdxf/libdxfrw/intern/drw_textcodec.h"
|
|
||||||
#include "../vmisc/def.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
#include "../vmisc/vtextcodec.h"
|
|
||||||
#else
|
|
||||||
#include <QTextCodec>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
|
||||||
#include "../vmisc/backport/text.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
auto AvailableCodecs() -> QStringList
|
|
||||||
{
|
|
||||||
QList<QByteArray> codecs = VTextCodec::availableCodecs();
|
|
||||||
QSet<QString> uniqueNames;
|
|
||||||
for (auto &codec : codecs)
|
|
||||||
{
|
|
||||||
uniqueNames.insert(codec);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ConvertToList(uniqueNames);
|
|
||||||
}
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
TST_DXF::TST_DXF(QObject *parent)
|
|
||||||
: QObject(parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void TST_DXF::initTestCase()
|
|
||||||
{
|
|
||||||
QTextStream ts(stdout);
|
|
||||||
ts << QStringLiteral("Available codecs:\n%2.").arg(AvailableCodecs().join(", ")) << Qt::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void TST_DXF::TestCodecPage_data()
|
|
||||||
{
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
QTest::addColumn<QString>("locale");
|
|
||||||
|
|
||||||
QStringList locales = SupportedLocales();
|
|
||||||
|
|
||||||
for (auto &locale : locales)
|
|
||||||
{
|
|
||||||
QTest::newRow(locale.toLatin1()) << locale;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void TST_DXF::TestCodecPage()
|
|
||||||
{
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
QFETCH(QString, locale);
|
|
||||||
|
|
||||||
static QMap<QString, QString> locMap = LocaleMap();
|
|
||||||
locMap.insert("en", "ISO8859-1");
|
|
||||||
locMap.insert("en_US", "ISO8859-1");
|
|
||||||
locMap.insert("en_CA", "ISO8859-1");
|
|
||||||
locMap.insert("en_IN", "ISO8859-1");
|
|
||||||
|
|
||||||
QString language = QLocale(locale).name();
|
|
||||||
QVERIFY(locMap.contains(language));
|
|
||||||
|
|
||||||
QString codePage = locMap.value(language);
|
|
||||||
codePage = codePage.toUpper();
|
|
||||||
QMap<QString, QStringList> codeMap = DRW_TextCodec::DXFCodePageMap();
|
|
||||||
|
|
||||||
QString dxfCodePage;
|
|
||||||
|
|
||||||
auto i = codeMap.constBegin();
|
|
||||||
while (i != codeMap.constEnd())
|
|
||||||
{
|
|
||||||
if (i.value().contains(codePage))
|
|
||||||
{
|
|
||||||
dxfCodePage = i.key();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
QVERIFY(not dxfCodePage.isEmpty());
|
|
||||||
|
|
||||||
VTextCodec *codec = DRW_TextCodec::CodecForName(dxfCodePage);
|
|
||||||
|
|
||||||
QVERIFY2(codec != nullptr, qUtf8Printable(QStringLiteral("No codec for dxf codepage %1 found.").arg(dxfCodePage)));
|
|
||||||
#else
|
|
||||||
QSKIP("No full support for old codecs since Qt6.");
|
|
||||||
#endif
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
/************************************************************************
|
|
||||||
**
|
|
||||||
** @file tst_dxf.h
|
|
||||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
|
||||||
** @date 15 1, 2020
|
|
||||||
**
|
|
||||||
** @brief
|
|
||||||
** @copyright
|
|
||||||
** This source code is part of the Valentina project, a pattern making
|
|
||||||
** program, whose allow create and modeling patterns of clothing.
|
|
||||||
** Copyright (C) 2020 Valentina project
|
|
||||||
** <https://gitlab.com/smart-pattern/valentina> All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Valentina is free software: you can redistribute it and/or modify
|
|
||||||
** it under the terms of the GNU General Public License as published by
|
|
||||||
** the Free Software Foundation, either version 3 of the License, or
|
|
||||||
** (at your option) any later version.
|
|
||||||
**
|
|
||||||
** Valentina is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
** GNU General Public License for more details.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the GNU General Public License
|
|
||||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
**
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef TST_DXF_H
|
|
||||||
#define TST_DXF_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
|
|
||||||
#include "../vmisc/defglobal.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class TST_DXF :public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT // NOLINT
|
|
||||||
public:
|
|
||||||
explicit TST_DXF(QObject *parent = nullptr);
|
|
||||||
~TST_DXF() override = default;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void initTestCase();
|
|
||||||
void TestCodecPage_data();
|
|
||||||
void TestCodecPage();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Q_DISABLE_COPY_MOVE(TST_DXF) // NOLINT
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // TST_DXF_H
|
|
Loading…
Reference in New Issue
Block a user