mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-03-11 06:32:28 +08:00
Compare commits
9 Commits
fix/bug804
...
feature/pr
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f0e3504d1 | |||
| f70b5c0939 | |||
| e674248d94 | |||
| 522564eb72 | |||
| 498b5da2b6 | |||
| 39d46ca94e | |||
| 8813f65345 | |||
| ec12f550af | |||
| 0de4c876af |
2
.gitignore
vendored
2
.gitignore
vendored
@ -46,5 +46,3 @@ DesktopEditor/fontengine/js/common/freetype-2.10.4
|
||||
|
||||
.qtc_clangd
|
||||
Common/3dParty/openssl/openssl/
|
||||
|
||||
msvc_make.bat
|
||||
|
||||
141
Apple/IWork.cpp
141
Apple/IWork.cpp
@ -1,141 +0,0 @@
|
||||
#include "IWork.h"
|
||||
#include "../DesktopEditor/common/File.h"
|
||||
#include "../DesktopEditor/common/Directory.h"
|
||||
|
||||
#include <libetonyek/libetonyek.h>
|
||||
#include <libodfgen/OdtGenerator.hxx>
|
||||
#include <libodfgen/OdsGenerator.hxx>
|
||||
#include <libodfgen/OdpGenerator.hxx>
|
||||
#include <libodfgen/test/StringDocumentHandler.hxx>
|
||||
|
||||
#include <memory>
|
||||
#include <fstream>
|
||||
|
||||
class CIWorkFile_Private
|
||||
{
|
||||
public:
|
||||
std::wstring m_sTempDirectory;
|
||||
|
||||
public:
|
||||
CIWorkFile_Private()
|
||||
{
|
||||
}
|
||||
~CIWorkFile_Private()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
CIWorkFile::CIWorkFile()
|
||||
{
|
||||
m_internal = new CIWorkFile_Private();
|
||||
}
|
||||
|
||||
CIWorkFile::~CIWorkFile()
|
||||
{
|
||||
delete m_internal;
|
||||
}
|
||||
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
#define DATA_TYPE_INPUTFILE std::string
|
||||
#else
|
||||
#define DATA_TYPE_INPUTFILE std::wstring
|
||||
#endif
|
||||
|
||||
bool GetRVNGInputStream(const DATA_TYPE_INPUTFILE& sFile, std::shared_ptr<librevenge::RVNGInputStream>& oRVNGInputStream, libetonyek::EtonyekDocument::Type& oDocumentType)
|
||||
{
|
||||
oRVNGInputStream.reset(new librevenge::RVNGFileStream(sFile.c_str()));
|
||||
|
||||
oDocumentType = libetonyek::EtonyekDocument::TYPE_UNKNOWN;
|
||||
const libetonyek::EtonyekDocument::Confidence confidence = libetonyek::EtonyekDocument::isSupported(oRVNGInputStream.get(), &oDocumentType);
|
||||
|
||||
return libetonyek::EtonyekDocument::CONFIDENCE_NONE != confidence;
|
||||
}
|
||||
|
||||
IWorkFileType CIWorkFile::GetType(const std::wstring& sFile) const
|
||||
{
|
||||
//TODO:: так как на данный момент мы работает только напрямую с файлом, то работа с директорией нам пока не нужна
|
||||
if (NSDirectory::PathIsDirectory(sFile))
|
||||
return IWorkFileType::None;
|
||||
|
||||
std::shared_ptr<librevenge::RVNGInputStream> input;
|
||||
libetonyek::EtonyekDocument::Type oDocumentType;
|
||||
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
std::string sFileA = U_TO_UTF8(sFile);
|
||||
if (!GetRVNGInputStream(sFileA, input, oDocumentType))
|
||||
return IWorkFileType::None;
|
||||
#else
|
||||
if (!GetRVNGInputStream(sFile, input, oDocumentType))
|
||||
return IWorkFileType::None;
|
||||
#endif
|
||||
|
||||
switch (oDocumentType)
|
||||
{
|
||||
case libetonyek::EtonyekDocument::TYPE_PAGES:
|
||||
return IWorkFileType::Pages;
|
||||
case libetonyek::EtonyekDocument::TYPE_NUMBERS:
|
||||
return IWorkFileType::Numbers;
|
||||
case libetonyek::EtonyekDocument::TYPE_KEYNOTE:
|
||||
return IWorkFileType::Keynote;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return IWorkFileType::None;
|
||||
}
|
||||
|
||||
template<class Generator>
|
||||
int Convert(const std::wstring& wsOutputFile, std::shared_ptr<librevenge::RVNGInputStream>& ptrInput, const std::wstring& wsPassword = L"", const std::wstring& wsTempDirectory = L"")
|
||||
{
|
||||
StringDocumentHandler content;
|
||||
Generator generator;
|
||||
generator.addDocumentHandler(&content, ODF_FLAT_XML);
|
||||
|
||||
bool bRes = libetonyek::EtonyekDocument::parse(ptrInput.get(), &generator);
|
||||
if (!bRes)
|
||||
return 1;
|
||||
|
||||
const std::string sOutputFileA = U_TO_UTF8(wsOutputFile);
|
||||
std::ofstream output(sOutputFileA.c_str());
|
||||
output << content.cstr();
|
||||
|
||||
if (output.bad())
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CIWorkFile::Convert2Odf(const std::wstring& sFile, const std::wstring& sOutputFile) const
|
||||
{
|
||||
//TODO:: так как на данный момент мы работает только напрямую с файлом, то работа с директорией нам пока не нужна
|
||||
if (NSDirectory::PathIsDirectory(sFile))
|
||||
return -1;
|
||||
|
||||
std::shared_ptr<librevenge::RVNGInputStream> input;
|
||||
libetonyek::EtonyekDocument::Type oDocumentType;
|
||||
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
std::string sFileA = U_TO_UTF8(sFile);
|
||||
if (!GetRVNGInputStream(sFileA, input, oDocumentType))
|
||||
return -1;
|
||||
#else
|
||||
if (!GetRVNGInputStream(sFile, input, oDocumentType))
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
switch (oDocumentType)
|
||||
{
|
||||
case libetonyek::EtonyekDocument::TYPE_PAGES: return Convert<OdtGenerator>(sOutputFile, input);
|
||||
case libetonyek::EtonyekDocument::TYPE_NUMBERS: return Convert<OdsGenerator>(sOutputFile, input);
|
||||
case libetonyek::EtonyekDocument::TYPE_KEYNOTE: return Convert<OdpGenerator>(sOutputFile, input);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void CIWorkFile::SetTmpDirectory(const std::wstring& sFolder)
|
||||
{
|
||||
m_internal->m_sTempDirectory = sFolder;
|
||||
}
|
||||
@ -1,36 +0,0 @@
|
||||
#ifndef _IWORKFILE_IWORKFILE_H
|
||||
#define _IWORKFILE_IWORKFILE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#ifndef IWORK_USE_DYNAMIC_LIBRARY
|
||||
#define IWORK_FILE_DECL_EXPORT
|
||||
#else
|
||||
#include "../DesktopEditor/common/base_export.h"
|
||||
#define IWORK_FILE_DECL_EXPORT Q_DECL_EXPORT
|
||||
#endif
|
||||
|
||||
enum class IWorkFileType
|
||||
{
|
||||
Pages = 0,
|
||||
Numbers = 1,
|
||||
Keynote = 2,
|
||||
|
||||
None = 255
|
||||
};
|
||||
|
||||
class CIWorkFile_Private;
|
||||
class IWORK_FILE_DECL_EXPORT CIWorkFile
|
||||
{
|
||||
private:
|
||||
CIWorkFile_Private* m_internal;
|
||||
public:
|
||||
CIWorkFile();
|
||||
~CIWorkFile();
|
||||
|
||||
IWorkFileType GetType(const std::wstring& sFile) const;
|
||||
int Convert2Odf(const std::wstring& sFile, const std::wstring& sOutputFile) const;
|
||||
void SetTmpDirectory(const std::wstring& sFolder);
|
||||
};
|
||||
|
||||
#endif // _IWORKFILE_IWORKFILE_H
|
||||
@ -1,46 +0,0 @@
|
||||
QT -= core
|
||||
QT -= gui
|
||||
|
||||
VERSION = 0.0.0.1
|
||||
TARGET = IWorkFile
|
||||
TEMPLATE = lib
|
||||
|
||||
CONFIG += shared
|
||||
CONFIG += plugin
|
||||
|
||||
DEFINES += IWORK_USE_DYNAMIC_LIBRARY
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
ADD_DEPENDENCY(kernel, UnicodeConverter)
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$PWD
|
||||
|
||||
core_android:DEFINES += NOT_USE_PTHREAD_CANCEL USE_FILE32API
|
||||
|
||||
# BOOST
|
||||
CONFIG += core_boost_regex
|
||||
include($$CORE_ROOT_DIR/Common/3dParty/boost/boost.pri)
|
||||
|
||||
# ZLIB
|
||||
CONFIG += build_all_zlib build_zlib_as_sources
|
||||
include($$PWD/../OfficeUtils/OfficeUtils.pri)
|
||||
|
||||
# LIBXML
|
||||
CONFIG += core_static_link_xml_full
|
||||
CONFIG += core_only_libxml
|
||||
include($$PWD/../DesktopEditor/xml/build/qt/libxml2.pri)
|
||||
|
||||
#
|
||||
include($$CORE_ROOT_DIR/Common/3dParty/apple/apple.pri)
|
||||
|
||||
# TEST
|
||||
HEADERS += $$ODF_LIB_ROOT/test/StringDocumentHandler.h
|
||||
SOURCES += $$ODF_LIB_ROOT/test/StringDocumentHandler.cxx
|
||||
|
||||
SOURCES += IWork.cpp
|
||||
|
||||
HEADERS += IWork.h
|
||||
@ -1,45 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2023
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../IWork.h"
|
||||
#include "../../DesktopEditor/common/File.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
CIWorkFile oFile;
|
||||
|
||||
std::wstring sExamplesDir = NSFile::GetProcessDirectory() + L"/../examples";
|
||||
oFile.Convert2Odf(sExamplesDir + L"/new.pages", sExamplesDir + L"/out_new.odt");
|
||||
oFile.Convert2Odf(sExamplesDir + L"/old.pages", sExamplesDir + L"/out_old.odt");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
CONFIG -= qt
|
||||
QT -= core gui
|
||||
|
||||
TARGET = test
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
TEMPLATE = app
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
ADD_DEPENDENCY(UnicodeConverter, kernel, IWorkFile)
|
||||
|
||||
core_linux:include($$PWD/../../Common/3dParty/icu/icu.pri)
|
||||
core_windows:LIBS += -lgdi32 -ladvapi32 -luser32 -lshell32
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
DESTDIR = $$PWD/build
|
||||
1
Common/.gitignore
vendored
1
Common/.gitignore
vendored
@ -1 +0,0 @@
|
||||
**/module.version
|
||||
8
Common/3dParty/apple/.gitignore
vendored
8
Common/3dParty/apple/.gitignore
vendored
@ -1,8 +0,0 @@
|
||||
# Ignore everything in this directory
|
||||
glm
|
||||
mdds
|
||||
librevenge
|
||||
libodfgen
|
||||
libetonyek
|
||||
# Except this file
|
||||
!.gitignore
|
||||
@ -1,36 +0,0 @@
|
||||
INCLUDEPATH += $$PWD
|
||||
|
||||
# LIBREVENGE
|
||||
REVENGE_LIB_ROOT = $$PWD/librevenge
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$REVENGE_LIB_ROOT/inc
|
||||
|
||||
HEADERS += $$files($$REVENGE_LIB_ROOT/inc/*.h, true)
|
||||
HEADERS += $$files($$REVENGE_LIB_ROOT/src/lib/*.h, true)
|
||||
SOURCES += $$files($$REVENGE_LIB_ROOT/src/lib/*.cpp, true)
|
||||
|
||||
# LIBODFGEN
|
||||
ODF_LIB_ROOT = $$PWD/libodfgen
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$ODF_LIB_ROOT/inc
|
||||
|
||||
HEADERS += $$files($$ODF_LIB_ROOT/inc/libodfgen/*.hxx, true)
|
||||
HEADERS += $$files($$ODF_LIB_ROOT/src/*.hxx, true)
|
||||
SOURCES += $$files($$ODF_LIB_ROOT/src/*.cxx, true)
|
||||
|
||||
# LIBETONYEK
|
||||
ETONYEK_LIB_ROOT = $$PWD/libetonyek
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$ETONYEK_LIB_ROOT/inc \
|
||||
$$ETONYEK_LIB_ROOT/src/lib \
|
||||
$$ETONYEK_LIB_ROOT/src/lib/contexts \
|
||||
$$PWD/mdds/include \
|
||||
$$PWD/glm
|
||||
|
||||
HEADERS += $$files($$ETONYEK_LIB_ROOT/inc/libetonyek/*.h, true)
|
||||
HEADERS += $$files($$ETONYEK_LIB_ROOT/src/lib/*.h, true)
|
||||
SOURCES += $$files($$ETONYEK_LIB_ROOT/src/lib/*.cpp, true)
|
||||
|
||||
@ -1,122 +0,0 @@
|
||||
import sys
|
||||
sys.path.append('../../../../build_tools/scripts')
|
||||
import base
|
||||
import os
|
||||
|
||||
if not base.is_dir("glm"):
|
||||
base.cmd("git", ["clone", "https://github.com/g-truc/glm.git"])
|
||||
base.cmd_in_dir("glm", "git", ["checkout", "33b4a621a697a305bc3a7610d290677b96beb181", "--quiet"])
|
||||
base.replaceInFile("./glm/glm/detail/func_common.inl", "vec<L, T, Q> v;", "vec<L, T, Q> v{};")
|
||||
|
||||
if not base.is_dir("mdds"):
|
||||
base.cmd("git", ["clone", "https://github.com/kohei-us/mdds.git"])
|
||||
base.cmd_in_dir("mdds", "git", ["checkout", "0783158939c6ce4b0b1b89e345ab983ccb0f0ad0"], "--quiet")
|
||||
|
||||
fix_cpp_version = "#if __cplusplus < 201703L\n"
|
||||
fix_cpp_version += "#ifndef _MSC_VER\n"
|
||||
fix_cpp_version += "namespace std {\n"
|
||||
fix_cpp_version += " template<bool __v>\n"
|
||||
fix_cpp_version += " using bool_constant = integral_constant<bool, __v>;\n\n"
|
||||
fix_cpp_version += " template <class... _Types>\n"
|
||||
fix_cpp_version += " using void_t = void;\n"
|
||||
fix_cpp_version += "}\n#endif\n"
|
||||
fix_cpp_version += "#endif\n\n"
|
||||
fix_cpp_version += "namespace mdds {"
|
||||
|
||||
base.replaceInFile("./mdds/include/mdds/global.hpp", "namespace mdds {", fix_cpp_version)
|
||||
|
||||
if not base.is_dir("librevenge"):
|
||||
base.cmd("git", ["clone", "https://github.com/Distrotech/librevenge.git"])
|
||||
base.cmd_in_dir("librevenge", "git", ["checkout", "becd044b519ab83893ad6398e3cbb499a7f0aaf4", "--quiet"])
|
||||
|
||||
stat_windows = ""
|
||||
stat_windows += "#if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)\n"
|
||||
stat_windows += "#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)\n"
|
||||
stat_windows += "#endif\n"
|
||||
stat_windows += "#if !defined(S_ISDIR) && defined(S_IFMT) && defined(S_IFDIR)\n"
|
||||
stat_windows += "#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)\n"
|
||||
stat_windows += "#endif\n"
|
||||
|
||||
base.replaceInFile("./librevenge/src/lib/RVNGDirectoryStream.cpp", "#include <librevenge-stream/librevenge-stream.h>",
|
||||
"#include <librevenge-stream/librevenge-stream.h>\n\n" + stat_windows)
|
||||
|
||||
fix_RVNG_H = "explicit RVNGFileStream(const char *filename);\n"
|
||||
fix_RVNG_H += " #if defined(_WIN32) || defined(_WIN64)\n"
|
||||
fix_RVNG_H += " explicit RVNGFileStream(const wchar_t *filename);\n"
|
||||
fix_RVNG_H += " #endif\n"
|
||||
|
||||
base.replaceInFile("./librevenge/inc/librevenge-stream/RVNGStreamImplementation.h", "explicit RVNGFileStream(const char *filename);", fix_RVNG_H)
|
||||
|
||||
fix_RVNG_CPP_include = "#if defined(_WIN32) || defined(_WIN64)\n"
|
||||
fix_RVNG_CPP_include += "#include <sys/stat.h>\n\n"
|
||||
fix_RVNG_CPP_include += "static __inline int wstat(wchar_t const* const _FileName, struct stat* const _Stat)\n"
|
||||
fix_RVNG_CPP_include += "{\n"
|
||||
fix_RVNG_CPP_include += " _STATIC_ASSERT(sizeof(struct stat) == sizeof(struct _stat64i32));\n";
|
||||
fix_RVNG_CPP_include += " return _wstat64i32(_FileName, (struct _stat64i32*)_Stat);\n";
|
||||
fix_RVNG_CPP_include += "}\n"
|
||||
fix_RVNG_CPP_include += "#endif\n\n"
|
||||
fix_RVNG_CPP_include += "namespace librevenge"
|
||||
|
||||
base.replaceInFile("./librevenge/src/lib/RVNGStreamImplementation.cpp", "namespace librevenge", fix_RVNG_CPP_include)
|
||||
|
||||
fix_RVNG_CPP = "#if defined(_WIN32) || defined(_WIN64)\n"
|
||||
fix_RVNG_CPP += "RVNGFileStream::RVNGFileStream(const wchar_t *filename) :\n"
|
||||
fix_RVNG_CPP += " RVNGInputStream(),\n"
|
||||
fix_RVNG_CPP += " d(new RVNGFileStreamPrivate())\n"
|
||||
fix_RVNG_CPP += "{\n"
|
||||
fix_RVNG_CPP += " d->file = _wfopen(filename, L\"rb\");\n"
|
||||
fix_RVNG_CPP += " if (!d->file || ferror(d->file))\n"
|
||||
fix_RVNG_CPP += " {\n"
|
||||
fix_RVNG_CPP += " delete d;\n"
|
||||
fix_RVNG_CPP += " d = 0;\n"
|
||||
fix_RVNG_CPP += " return;\n"
|
||||
fix_RVNG_CPP += " }\n\n"
|
||||
fix_RVNG_CPP += " struct stat status;\n"
|
||||
fix_RVNG_CPP += " const int retval = wstat(filename, &status);\n"
|
||||
fix_RVNG_CPP += " if ((0 != retval) || !S_ISREG(status.st_mode))\n"
|
||||
fix_RVNG_CPP += " {\n"
|
||||
fix_RVNG_CPP += " delete d;\n"
|
||||
fix_RVNG_CPP += " d = 0;\n"
|
||||
fix_RVNG_CPP += " return;\n"
|
||||
fix_RVNG_CPP += " }\n\n"
|
||||
fix_RVNG_CPP += " fseek(d->file, 0, SEEK_END);\n\n"
|
||||
fix_RVNG_CPP += " d->streamSize = (unsigned long) ftell(d->file);\n"
|
||||
fix_RVNG_CPP += " if (d->streamSize == (unsigned long)-1)\n"
|
||||
fix_RVNG_CPP += " d->streamSize = 0;\n"
|
||||
fix_RVNG_CPP += " if (d->streamSize > (std::numeric_limits<unsigned long>::max)() / 2)\n"
|
||||
fix_RVNG_CPP += " d->streamSize = (std::numeric_limits<unsigned long>::max)() / 2;\n"
|
||||
fix_RVNG_CPP += " fseek(d->file, 0, SEEK_SET);\n"
|
||||
fix_RVNG_CPP += "}\n"
|
||||
fix_RVNG_CPP += "#endif\n\n"
|
||||
fix_RVNG_CPP += "RVNGFileStream::~RVNGFileStream()"
|
||||
|
||||
base.replaceInFile("./librevenge/src/lib/RVNGStreamImplementation.cpp", "RVNGFileStream::~RVNGFileStream()", fix_RVNG_CPP)
|
||||
|
||||
if not base.is_dir("libodfgen"):
|
||||
base.cmd("git", ["clone", "https://github.com/Distrotech/libodfgen.git"])
|
||||
base.cmd_in_dir("libodfgen", "git", ["checkout", "8ef8c171ebe3c5daebdce80ee422cf7bb96aa3bc", "--quiet"])
|
||||
|
||||
if not base.is_dir("libetonyek"):
|
||||
base.cmd("git", ["clone", "https://github.com/LibreOffice/libetonyek.git"])
|
||||
base.cmd_in_dir("libetonyek", "git", ["checkout", "cb396b4a9453a457469b62a740d8fb933c9442c3", "--quiet"])
|
||||
|
||||
base.replaceInFile("./libetonyek/src/lib/IWORKTable.cpp", "is_tree_valid", "valid_tree")
|
||||
|
||||
cmd_args = sys.argv[1:]
|
||||
use_gperf = False
|
||||
|
||||
for arg in cmd_args:
|
||||
if '--gperf' == arg:
|
||||
use_gperf = True
|
||||
|
||||
if use_gperf:
|
||||
base_gperf_args = ["--compare-strncmp", "--enum", "--null-strings", "--readonly-tables", "--language", "C++"]
|
||||
base_gperf_files = ["IWORKToken.gperf", "KEY1Token.gperf", "KEY2Token.gperf", "NUM1Token.gperf", "PAG1Token.gperf"]
|
||||
|
||||
for file in base_gperf_files:
|
||||
base.cmd_in_dir("./libetonyek/src/lib", "gperf", base_gperf_args + [file, "--output-file", file[0:file.find(".")] + ".inc"])
|
||||
else:
|
||||
base.copy_dir_content("./headers", "./libetonyek/src/lib")
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,727 +0,0 @@
|
||||
/* C++ code produced by gperf version 3.0.1 */
|
||||
/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ --output-file KEY1Token.inc KEY1Token.gperf */
|
||||
/* Computed positions: -k'1,3,6,9,14,$' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
||||
/* The character set is not based on ISO-646. */
|
||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
||||
#endif
|
||||
|
||||
#line 10 "KEY1Token.gperf"
|
||||
|
||||
#if defined __GNUC__
|
||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||
#endif
|
||||
|
||||
using namespace KEY1Token;
|
||||
#line 18 "KEY1Token.gperf"
|
||||
struct Token
|
||||
{
|
||||
const char *name;
|
||||
int id;
|
||||
};
|
||||
#include <string.h>
|
||||
/* maximum key range = 602, duplicates = 0 */
|
||||
|
||||
class Perfect_Hash
|
||||
{
|
||||
private:
|
||||
static inline unsigned int hash (const char *str, unsigned int len);
|
||||
public:
|
||||
static const struct Token *in_word_set (const char *str, unsigned int len);
|
||||
};
|
||||
|
||||
inline unsigned int
|
||||
Perfect_Hash::hash (register const char *str, register unsigned int len)
|
||||
{
|
||||
static const unsigned short asso_values[] =
|
||||
{
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 220, 612, 0, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 0, 0, 0, 0,
|
||||
0, 0, 10, 612, 612, 612, 0, 612, 30, 15,
|
||||
55, 612, 5, 60, 5, 612, 10, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 0, 612, 20, 165, 115,
|
||||
65, 0, 105, 135, 175, 60, 0, 0, 30, 145,
|
||||
10, 5, 155, 10, 5, 30, 5, 200, 15, 20,
|
||||
0, 190, 0, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
|
||||
612, 612, 612, 612, 612, 612
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
switch (hval)
|
||||
{
|
||||
default:
|
||||
hval += asso_values[(unsigned char)str[13]];
|
||||
/*FALLTHROUGH*/
|
||||
case 13:
|
||||
case 12:
|
||||
case 11:
|
||||
case 10:
|
||||
case 9:
|
||||
hval += asso_values[(unsigned char)str[8]];
|
||||
/*FALLTHROUGH*/
|
||||
case 8:
|
||||
case 7:
|
||||
case 6:
|
||||
hval += asso_values[(unsigned char)str[5]];
|
||||
/*FALLTHROUGH*/
|
||||
case 5:
|
||||
case 4:
|
||||
case 3:
|
||||
hval += asso_values[(unsigned char)str[2]];
|
||||
/*FALLTHROUGH*/
|
||||
case 2:
|
||||
case 1:
|
||||
hval += asso_values[(unsigned char)str[0]];
|
||||
break;
|
||||
}
|
||||
return hval + asso_values[(unsigned char)str[len - 1]];
|
||||
}
|
||||
|
||||
const struct Token *
|
||||
Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
|
||||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 203,
|
||||
MIN_WORD_LENGTH = 1,
|
||||
MAX_WORD_LENGTH = 39,
|
||||
MIN_HASH_VALUE = 10,
|
||||
MAX_HASH_VALUE = 611
|
||||
};
|
||||
|
||||
static const struct Token wordlist[] =
|
||||
{
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 199 "KEY1Token.gperf"
|
||||
{"theme",theme},
|
||||
{(char*)0},
|
||||
#line 211 "KEY1Token.gperf"
|
||||
{"tr",tr},
|
||||
{(char*)0},
|
||||
#line 196 "KEY1Token.gperf"
|
||||
{"text",text},
|
||||
#line 207 "KEY1Token.gperf"
|
||||
{"title",title},
|
||||
{(char*)0},
|
||||
#line 198 "KEY1Token.gperf"
|
||||
{"textbox",textbox},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 65 "KEY1Token.gperf"
|
||||
{"element",element},
|
||||
{(char*)0},
|
||||
#line 132 "KEY1Token.gperf"
|
||||
{"none",none},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 175 "KEY1Token.gperf"
|
||||
{"size",size},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 209 "KEY1Token.gperf"
|
||||
{"tl",tl},
|
||||
{(char*)0},
|
||||
#line 206 "KEY1Token.gperf"
|
||||
{"tile",tile},
|
||||
#line 168 "KEY1Token.gperf"
|
||||
{"serie",serie},
|
||||
{(char*)0},
|
||||
#line 221 "KEY1Token.gperf"
|
||||
{"version",version},
|
||||
{(char*)0},
|
||||
#line 112 "KEY1Token.gperf"
|
||||
{"line",line},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 174 "KEY1Token.gperf"
|
||||
{"showZero",showZero},
|
||||
{(char*)0},
|
||||
#line 133 "KEY1Token.gperf"
|
||||
{"notes",notes},
|
||||
{(char*)0},
|
||||
#line 188 "KEY1Token.gperf"
|
||||
{"stroke-style",stroke_style},
|
||||
{(char*)0},
|
||||
#line 32 "KEY1Token.gperf"
|
||||
{"axes",axes},
|
||||
#line 172 "KEY1Token.gperf"
|
||||
{"shape",shape},
|
||||
{(char*)0},
|
||||
#line 187 "KEY1Token.gperf"
|
||||
{"stroke-color",stroke_color},
|
||||
#line 166 "KEY1Token.gperf"
|
||||
{"sequence",sequence},
|
||||
{(char*)0},
|
||||
#line 183 "KEY1Token.gperf"
|
||||
{"start",start},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 182 "KEY1Token.gperf"
|
||||
{"span",span},
|
||||
#line 185 "KEY1Token.gperf"
|
||||
{"steps",steps},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 93 "KEY1Token.gperf"
|
||||
{"ident",ident},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 134 "KEY1Token.gperf"
|
||||
{"null",null},
|
||||
#line 197 "KEY1Token.gperf"
|
||||
{"text-attributes",text_attributes},
|
||||
{(char*)0},
|
||||
#line 130 "KEY1Token.gperf"
|
||||
{"natural-size",natural_size},
|
||||
{(char*)0},
|
||||
#line 131 "KEY1Token.gperf"
|
||||
{"node",node},
|
||||
#line 111 "KEY1Token.gperf"
|
||||
{"level",level},
|
||||
{(char*)0},
|
||||
#line 225 "KEY1Token.gperf"
|
||||
{"visible",visible},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 95 "KEY1Token.gperf"
|
||||
{"image",image},
|
||||
{(char*)0},
|
||||
#line 171 "KEY1Token.gperf"
|
||||
{"shadow-style",shadow_style},
|
||||
{(char*)0},
|
||||
#line 67 "KEY1Token.gperf"
|
||||
{"end-color",end_color},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 208 "KEY1Token.gperf"
|
||||
{"titleVisible",titleVisible},
|
||||
#line 212 "KEY1Token.gperf"
|
||||
{"tracks-master",tracks_master},
|
||||
#line 53 "KEY1Token.gperf"
|
||||
{"data",data},
|
||||
#line 177 "KEY1Token.gperf"
|
||||
{"slide",slide},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 62 "KEY1Token.gperf"
|
||||
{"div",div},
|
||||
#line 195 "KEY1Token.gperf"
|
||||
{"tail",tail},
|
||||
#line 170 "KEY1Token.gperf"
|
||||
{"seriesDirection",seriesDirection},
|
||||
#line 169 "KEY1Token.gperf"
|
||||
{"series",series},
|
||||
{(char*)0},
|
||||
#line 162 "KEY1Token.gperf"
|
||||
{"relative",relative},
|
||||
#line 60 "KEY1Token.gperf"
|
||||
{"direction",direction},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 27 "KEY1Token.gperf"
|
||||
{"altLineVisible",altLineVisible},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 173 "KEY1Token.gperf"
|
||||
{"showGrid",showGrid},
|
||||
#line 33 "KEY1Token.gperf"
|
||||
{"axis",axis},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 161 "KEY1Token.gperf"
|
||||
{"reference",reference},
|
||||
#line 114 "KEY1Token.gperf"
|
||||
{"line-tail-style",line_tail_style},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 73 "KEY1Token.gperf"
|
||||
{"font",font},
|
||||
{(char*)0},
|
||||
#line 137 "KEY1Token.gperf"
|
||||
{"offset",offset},
|
||||
#line 92 "KEY1Token.gperf"
|
||||
{"id",id},
|
||||
{(char*)0},
|
||||
#line 160 "KEY1Token.gperf"
|
||||
{"rect",rect},
|
||||
#line 180 "KEY1Token.gperf"
|
||||
{"solid",solid},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 66 "KEY1Token.gperf"
|
||||
{"end",end},
|
||||
#line 77 "KEY1Token.gperf"
|
||||
{"font-name",font_name},
|
||||
{(char*)0},
|
||||
#line 159 "KEY1Token.gperf"
|
||||
{"radius",radius},
|
||||
#line 61 "KEY1Token.gperf"
|
||||
{"display-name",display_name},
|
||||
{(char*)0},
|
||||
#line 68 "KEY1Token.gperf"
|
||||
{"file",file},
|
||||
{(char*)0},
|
||||
#line 45 "KEY1Token.gperf"
|
||||
{"center",center},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 109 "KEY1Token.gperf"
|
||||
{"left",left},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 51 "KEY1Token.gperf"
|
||||
{"content",content},
|
||||
#line 64 "KEY1Token.gperf"
|
||||
{"duration",duration},
|
||||
#line 71 "KEY1Token.gperf"
|
||||
{"fill-type",fill_type},
|
||||
#line 163 "KEY1Token.gperf"
|
||||
{"right",right},
|
||||
#line 139 "KEY1Token.gperf"
|
||||
{"orientation",orientation},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 78 "KEY1Token.gperf"
|
||||
{"font-size",font_size},
|
||||
#line 50 "KEY1Token.gperf"
|
||||
{"color",color},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 129 "KEY1Token.gperf"
|
||||
{"name",name},
|
||||
#line 28 "KEY1Token.gperf"
|
||||
{"angle",angle},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 215 "KEY1Token.gperf"
|
||||
{"type",type},
|
||||
#line 52 "KEY1Token.gperf"
|
||||
{"dash-style",dash_style},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 82 "KEY1Token.gperf"
|
||||
{"gradient",gradient},
|
||||
#line 56 "KEY1Token.gperf"
|
||||
{"dataFormatterPrefix",dataFormatterPrefix},
|
||||
#line 54 "KEY1Token.gperf"
|
||||
{"dataFormatterHasThousandsSeparators",dataFormatterHasThousandsSeparators},
|
||||
#line 135 "KEY1Token.gperf"
|
||||
{"number",number},
|
||||
#line 38 "KEY1Token.gperf"
|
||||
{"br",br},
|
||||
#line 222 "KEY1Token.gperf"
|
||||
{"vertical",vertical},
|
||||
#line 57 "KEY1Token.gperf"
|
||||
{"dataFormatterSuffix",dataFormatterSuffix},
|
||||
#line 193 "KEY1Token.gperf"
|
||||
{"table",table},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 24 "KEY1Token.gperf"
|
||||
{"DefaultLegendRelativePosition",DefaultLegendRelativePosition},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 146 "KEY1Token.gperf"
|
||||
{"pattern",pattern},
|
||||
{(char*)0},
|
||||
#line 55 "KEY1Token.gperf"
|
||||
{"dataFormatterNumberOfDecimals",dataFormatterNumberOfDecimals},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 165 "KEY1Token.gperf"
|
||||
{"segment",segment},
|
||||
{(char*)0},
|
||||
#line 59 "KEY1Token.gperf"
|
||||
{"dict",dict},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 153 "KEY1Token.gperf"
|
||||
{"presentation",presentation},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 35 "KEY1Token.gperf"
|
||||
{"bl",bl},
|
||||
#line 126 "KEY1Token.gperf"
|
||||
{"metadata",metadata},
|
||||
{(char*)0},
|
||||
#line 86 "KEY1Token.gperf"
|
||||
{"guide",guide},
|
||||
{(char*)0},
|
||||
#line 181 "KEY1Token.gperf"
|
||||
{"spacing",spacing},
|
||||
#line 120 "KEY1Token.gperf"
|
||||
{"majorTickPositions",majorTickPositions},
|
||||
{(char*)0},
|
||||
#line 70 "KEY1Token.gperf"
|
||||
{"fill-style",fill_style},
|
||||
{(char*)0},
|
||||
#line 118 "KEY1Token.gperf"
|
||||
{"lock-aspect-ratio",lock_aspect_ratio},
|
||||
{(char*)0},
|
||||
#line 44 "KEY1Token.gperf"
|
||||
{"byte-size",byte_size},
|
||||
{(char*)0},
|
||||
#line 40 "KEY1Token.gperf"
|
||||
{"bullet",bullet},
|
||||
#line 25 "KEY1Token.gperf"
|
||||
{"DefaultLegendSize",DefaultLegendSize},
|
||||
#line 128 "KEY1Token.gperf"
|
||||
{"minorTickPositions",minorTickPositions},
|
||||
{(char*)0},
|
||||
#line 202 "KEY1Token.gperf"
|
||||
{"tickLabelsAngle",tickLabelsAngle},
|
||||
#line 127 "KEY1Token.gperf"
|
||||
{"middle",middle},
|
||||
{(char*)0},
|
||||
#line 152 "KEY1Token.gperf"
|
||||
{"pos",pos},
|
||||
#line 155 "KEY1Token.gperf"
|
||||
{"prototype-data",prototype_data},
|
||||
#line 31 "KEY1Token.gperf"
|
||||
{"array",array},
|
||||
{(char*)0},
|
||||
#line 122 "KEY1Token.gperf"
|
||||
{"master-slide",master_slide},
|
||||
#line 117 "KEY1Token.gperf"
|
||||
{"location",location},
|
||||
#line 176 "KEY1Token.gperf"
|
||||
{"size-technique",size_technique},
|
||||
{(char*)0},
|
||||
#line 79 "KEY1Token.gperf"
|
||||
{"font-superscript",font_superscript},
|
||||
#line 138 "KEY1Token.gperf"
|
||||
{"opacity",opacity},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 100 "KEY1Token.gperf"
|
||||
{"interBarGap",interBarGap},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 156 "KEY1Token.gperf"
|
||||
{"prototype-drawables",prototype_drawables},
|
||||
{(char*)0},
|
||||
#line 58 "KEY1Token.gperf"
|
||||
{"description",description},
|
||||
#line 43 "KEY1Token.gperf"
|
||||
{"bullets",bullets},
|
||||
{(char*)0},
|
||||
#line 76 "KEY1Token.gperf"
|
||||
{"font-ligatures",font_ligatures},
|
||||
{(char*)0},
|
||||
#line 191 "KEY1Token.gperf"
|
||||
{"symbol",symbol},
|
||||
#line 154 "KEY1Token.gperf"
|
||||
{"prototype-bullets",prototype_bullets},
|
||||
{(char*)0},
|
||||
#line 194 "KEY1Token.gperf"
|
||||
{"tab-stops",tab_stops},
|
||||
#line 90 "KEY1Token.gperf"
|
||||
{"horizontal",horizontal},
|
||||
{(char*)0},
|
||||
#line 204 "KEY1Token.gperf"
|
||||
{"tickLabelsVisible",tickLabelsVisible},
|
||||
{(char*)0},
|
||||
#line 192 "KEY1Token.gperf"
|
||||
{"symbolFillMode",symbolFillMode},
|
||||
#line 74 "KEY1Token.gperf"
|
||||
{"font-color",font_color},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 124 "KEY1Token.gperf"
|
||||
{"master-slides",master_slides},
|
||||
#line 147 "KEY1Token.gperf"
|
||||
{"pieSliceOffset",pieSliceOffset},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 42 "KEY1Token.gperf"
|
||||
{"bullet-indentation",bullet_indentation},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 87 "KEY1Token.gperf"
|
||||
{"guides",guides},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 88 "KEY1Token.gperf"
|
||||
{"head",head},
|
||||
#line 226 "KEY1Token.gperf"
|
||||
{"width",width},
|
||||
#line 89 "KEY1Token.gperf"
|
||||
{"hidden",hidden},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 46 "KEY1Token.gperf"
|
||||
{"character",character},
|
||||
#line 69 "KEY1Token.gperf"
|
||||
{"fill-color",fill_color},
|
||||
#line 81 "KEY1Token.gperf"
|
||||
{"g",g},
|
||||
#line 75 "KEY1Token.gperf"
|
||||
{"font-kerning",font_kerning},
|
||||
{(char*)0},
|
||||
#line 103 "KEY1Token.gperf"
|
||||
{"justified",justified},
|
||||
{(char*)0},
|
||||
#line 116 "KEY1Token.gperf"
|
||||
{"lineVisible",lineVisible},
|
||||
#line 107 "KEY1Token.gperf"
|
||||
{"labelVisible",labelVisible},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 119 "KEY1Token.gperf"
|
||||
{"locked",locked},
|
||||
#line 189 "KEY1Token.gperf"
|
||||
{"stroke-width",stroke_width},
|
||||
{(char*)0},
|
||||
#line 200 "KEY1Token.gperf"
|
||||
{"thumbnail",thumbnail},
|
||||
#line 201 "KEY1Token.gperf"
|
||||
{"thumbnails",thumbnails},
|
||||
#line 190 "KEY1Token.gperf"
|
||||
{"styles",styles},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 136 "KEY1Token.gperf"
|
||||
{"numberOfPoints",numberOfPoints},
|
||||
#line 49 "KEY1Token.gperf"
|
||||
{"chartFrame",chartFrame},
|
||||
#line 167 "KEY1Token.gperf"
|
||||
{"sequence-bullet-style",sequence_bullet_style},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 214 "KEY1Token.gperf"
|
||||
{"transition-style",transition_style},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 110 "KEY1Token.gperf"
|
||||
{"legend",legend},
|
||||
#line 148 "KEY1Token.gperf"
|
||||
{"pieSlicePercentVisible",pieSlicePercentVisible},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 47 "KEY1Token.gperf"
|
||||
{"character-bullet-style",character_bullet_style},
|
||||
{(char*)0},
|
||||
#line 213 "KEY1Token.gperf"
|
||||
{"transformation",transformation},
|
||||
#line 224 "KEY1Token.gperf"
|
||||
{"visibility",visibility},
|
||||
#line 186 "KEY1Token.gperf"
|
||||
{"string",string},
|
||||
{(char*)0},
|
||||
#line 39 "KEY1Token.gperf"
|
||||
{"buildChunkingStyle",buildChunkingStyle},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 184 "KEY1Token.gperf"
|
||||
{"start-color",start_color},
|
||||
{(char*)0},
|
||||
#line 210 "KEY1Token.gperf"
|
||||
{"top",top},
|
||||
#line 63 "KEY1Token.gperf"
|
||||
{"drawables",drawables},
|
||||
#line 179 "KEY1Token.gperf"
|
||||
{"slide-size",slide_size},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 113 "KEY1Token.gperf"
|
||||
{"line-head-style",line_head_style},
|
||||
#line 157 "KEY1Token.gperf"
|
||||
{"prototype-plugin",prototype_plugin},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 80 "KEY1Token.gperf"
|
||||
{"font-underline",font_underline},
|
||||
{(char*)0},
|
||||
#line 97 "KEY1Token.gperf"
|
||||
{"image-scale",image_scale},
|
||||
{(char*)0},
|
||||
#line 106 "KEY1Token.gperf"
|
||||
{"labelPosition",labelPosition},
|
||||
{(char*)0},
|
||||
#line 96 "KEY1Token.gperf"
|
||||
{"image-data",image_data},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 145 "KEY1Token.gperf"
|
||||
{"path",path},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 34 "KEY1Token.gperf"
|
||||
{"background-fill-style",background_fill_style},
|
||||
#line 158 "KEY1Token.gperf"
|
||||
{"prototype-plugins",prototype_plugins},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 123 "KEY1Token.gperf"
|
||||
{"master-slide-id",master_slide_id},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 178 "KEY1Token.gperf"
|
||||
{"slide-list",slide_list},
|
||||
#line 121 "KEY1Token.gperf"
|
||||
{"marker-type",marker_type},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 91 "KEY1Token.gperf"
|
||||
{"http://developer.apple.com/schemas/APXL",NS_URI_KEY},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 98 "KEY1Token.gperf"
|
||||
{"image-bullet-style",image_bullet_style},
|
||||
#line 30 "KEY1Token.gperf"
|
||||
{"application-version",application_version},
|
||||
{(char*)0},
|
||||
#line 149 "KEY1Token.gperf"
|
||||
{"plugin",plugin},
|
||||
#line 151 "KEY1Token.gperf"
|
||||
{"point_at_top",point_at_top},
|
||||
#line 104 "KEY1Token.gperf"
|
||||
{"key",key},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 29 "KEY1Token.gperf"
|
||||
{"application-name",application_name},
|
||||
{(char*)0},
|
||||
#line 223 "KEY1Token.gperf"
|
||||
{"vertical-alignment",vertical_alignment},
|
||||
#line 83 "KEY1Token.gperf"
|
||||
{"gradient-angle",gradient_angle},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 144 "KEY1Token.gperf"
|
||||
{"paragraph-tail-indent",paragraph_tail_indent},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 142 "KEY1Token.gperf"
|
||||
{"paragraph-first-line-indent",paragraph_first_line_indent},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 72 "KEY1Token.gperf"
|
||||
{"floating-content",floating_content},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 150 "KEY1Token.gperf"
|
||||
{"plugin-data",plugin_data},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 36 "KEY1Token.gperf"
|
||||
{"body",body},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 41 "KEY1Token.gperf"
|
||||
{"bullet-characters",bullet_characters},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 143 "KEY1Token.gperf"
|
||||
{"paragraph-head-indent",paragraph_head_indent},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 99 "KEY1Token.gperf"
|
||||
{"inherited",inherited},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 125 "KEY1Token.gperf"
|
||||
{"match-point",match_point},
|
||||
{(char*)0},
|
||||
#line 216 "KEY1Token.gperf"
|
||||
{"ui-state",ui_state},
|
||||
#line 102 "KEY1Token.gperf"
|
||||
{"is-filled",is_filled},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 115 "KEY1Token.gperf"
|
||||
{"lineOpacity",lineOpacity},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 37 "KEY1Token.gperf"
|
||||
{"bottom",bottom},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 140 "KEY1Token.gperf"
|
||||
{"page-number",page_number},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 205 "KEY1Token.gperf"
|
||||
{"time-stamp",time_stamp},
|
||||
{(char*)0},
|
||||
#line 203 "KEY1Token.gperf"
|
||||
{"tickLabelsOpacity",tickLabelsOpacity},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 94 "KEY1Token.gperf"
|
||||
{"id-ref",id_ref},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 141 "KEY1Token.gperf"
|
||||
{"paragraph-alignment",paragraph_alignment},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 164 "KEY1Token.gperf"
|
||||
{"scale-to-fit",scale_to_fit},
|
||||
{(char*)0},
|
||||
#line 101 "KEY1Token.gperf"
|
||||
{"interSeriesGap",interSeriesGap},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 219 "KEY1Token.gperf"
|
||||
{"userMaximum",userMaximum},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 217 "KEY1Token.gperf"
|
||||
{"useUserMaximum",useUserMaximum},
|
||||
#line 108 "KEY1Token.gperf"
|
||||
{"layerElementsForShadowing",layerElementsForShadowing},
|
||||
{(char*)0},
|
||||
#line 105 "KEY1Token.gperf"
|
||||
{"labelOpacity",labelOpacity},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 48 "KEY1Token.gperf"
|
||||
{"chart-prototype",chart_prototype},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 220 "KEY1Token.gperf"
|
||||
{"userMinimum",userMinimum},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 218 "KEY1Token.gperf"
|
||||
{"useUserMinimum",useUserMinimum},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 26 "KEY1Token.gperf"
|
||||
{"altLineOpacity",altLineOpacity},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 85 "KEY1Token.gperf"
|
||||
{"grow-horizontally",grow_horizontally},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 84 "KEY1Token.gperf"
|
||||
{"gridOpacity",gridOpacity}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
{
|
||||
register int key = hash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
||||
{
|
||||
register const char *s = wordlist[key].name;
|
||||
|
||||
if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
|
||||
return &wordlist[key];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#line 227 "KEY1Token.gperf"
|
||||
|
||||
@ -1,300 +0,0 @@
|
||||
/* C++ code produced by gperf version 3.0.1 */
|
||||
/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ --output-file KEY2Token.inc KEY2Token.gperf */
|
||||
/* Computed positions: -k'1,4,$' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
||||
/* The character set is not based on ISO-646. */
|
||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
||||
#endif
|
||||
|
||||
#line 10 "KEY2Token.gperf"
|
||||
|
||||
#if defined __GNUC__
|
||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||
#endif
|
||||
|
||||
using namespace KEY2Token;
|
||||
#line 18 "KEY2Token.gperf"
|
||||
struct Token
|
||||
{
|
||||
const char *name;
|
||||
int id;
|
||||
};
|
||||
#include <string.h>
|
||||
/* maximum key range = 140, duplicates = 0 */
|
||||
|
||||
class Perfect_Hash
|
||||
{
|
||||
private:
|
||||
static inline unsigned int hash (const char *str, unsigned int len);
|
||||
public:
|
||||
static const struct Token *in_word_set (const char *str, unsigned int len);
|
||||
};
|
||||
|
||||
inline unsigned int
|
||||
Perfect_Hash::hash (register const char *str, register unsigned int len)
|
||||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 5, 65,
|
||||
0, 141, 35, 0, 141, 5, 141, 0, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 0, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 0, 25, 0,
|
||||
15, 0, 55, 10, 10, 5, 141, 15, 20, 0,
|
||||
10, 25, 40, 141, 25, 25, 5, 0, 30, 5,
|
||||
141, 40, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||||
141, 141, 141, 141, 141, 141
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
switch (hval)
|
||||
{
|
||||
default:
|
||||
hval += asso_values[(unsigned char)str[3]];
|
||||
/*FALLTHROUGH*/
|
||||
case 3:
|
||||
case 2:
|
||||
case 1:
|
||||
hval += asso_values[(unsigned char)str[0]];
|
||||
break;
|
||||
}
|
||||
return hval + asso_values[(unsigned char)str[len - 1]];
|
||||
}
|
||||
|
||||
const struct Token *
|
||||
Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
|
||||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 67,
|
||||
MIN_WORD_LENGTH = 1,
|
||||
MAX_WORD_LENGTH = 46,
|
||||
MIN_HASH_VALUE = 1,
|
||||
MAX_HASH_VALUE = 140
|
||||
};
|
||||
|
||||
static const struct Token wordlist[] =
|
||||
{
|
||||
{(char*)0},
|
||||
#line 49 "KEY2Token.gperf"
|
||||
{"c",c},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 65 "KEY2Token.gperf"
|
||||
{"metadata",metadata},
|
||||
#line 89 "KEY2Token.gperf"
|
||||
{"type",type},
|
||||
#line 84 "KEY2Token.gperf"
|
||||
{"theme",theme},
|
||||
#line 58 "KEY2Token.gperf"
|
||||
{"i",i},
|
||||
#line 50 "KEY2Token.gperf"
|
||||
{"comment",comment},
|
||||
#line 41 "KEY2Token.gperf"
|
||||
{"animationType",animationType},
|
||||
#line 66 "KEY2Token.gperf"
|
||||
{"name",name},
|
||||
#line 26 "KEY2Token.gperf"
|
||||
{"2005112100",VERSION_STR_3},
|
||||
{(char*)0},
|
||||
#line 62 "KEY2Token.gperf"
|
||||
{"master-slide",master_slide},
|
||||
{(char*)0},
|
||||
#line 83 "KEY2Token.gperf"
|
||||
{"text",text},
|
||||
#line 85 "KEY2Token.gperf"
|
||||
{"theme-list",theme_list},
|
||||
#line 28 "KEY2Token.gperf"
|
||||
{"92008102400",VERSION_STR_5},
|
||||
{(char*)0},
|
||||
#line 36 "KEY2Token.gperf"
|
||||
{"animationEndOffset",animationEndOffset},
|
||||
{(char*)0},
|
||||
#line 39 "KEY2Token.gperf"
|
||||
{"animationStartOffset",animationStartOffset},
|
||||
#line 27 "KEY2Token.gperf"
|
||||
{"72007061400",VERSION_STR_4},
|
||||
#line 35 "KEY2Token.gperf"
|
||||
{"animationDuration",animationDuration},
|
||||
#line 40 "KEY2Token.gperf"
|
||||
{"animationTimingReferent",animationTimingReferent},
|
||||
#line 73 "KEY2Token.gperf"
|
||||
{"size",size},
|
||||
#line 86 "KEY2Token.gperf"
|
||||
{"title",title},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 55 "KEY2Token.gperf"
|
||||
{"headline",headline},
|
||||
#line 53 "KEY2Token.gperf"
|
||||
{"direction",direction},
|
||||
#line 52 "KEY2Token.gperf"
|
||||
{"depth",depth},
|
||||
#line 78 "KEY2Token.gperf"
|
||||
{"sticky-note",sticky_note},
|
||||
#line 34 "KEY2Token.gperf"
|
||||
{"animationDelayAutomaticWith",animationDelayAutomaticWith},
|
||||
#line 30 "KEY2Token.gperf"
|
||||
{"animationAuto",animationAuto},
|
||||
{(char*)0},
|
||||
#line 67 "KEY2Token.gperf"
|
||||
{"notes",notes},
|
||||
#line 54 "KEY2Token.gperf"
|
||||
{"events",events},
|
||||
#line 42 "KEY2Token.gperf"
|
||||
{"authors",authors},
|
||||
#line 63 "KEY2Token.gperf"
|
||||
{"master-slides",master_slides},
|
||||
#line 70 "KEY2Token.gperf"
|
||||
{"page",page},
|
||||
#line 74 "KEY2Token.gperf"
|
||||
{"slide",slide},
|
||||
#line 80 "KEY2Token.gperf"
|
||||
{"string",string},
|
||||
#line 56 "KEY2Token.gperf"
|
||||
{"headlineParagraphStyle",headlineParagraphStyle},
|
||||
#line 37 "KEY2Token.gperf"
|
||||
{"animationInterchunkAuto",animationInterchunkAuto},
|
||||
{(char*)0},
|
||||
#line 24 "KEY2Token.gperf"
|
||||
{"2004102100",VERSION_STR_2},
|
||||
#line 77 "KEY2Token.gperf"
|
||||
{"slide-style",slide_style},
|
||||
#line 33 "KEY2Token.gperf"
|
||||
{"animationDelayAutmaticAfter",animationDelayAutomaticAfter},
|
||||
#line 61 "KEY2Token.gperf"
|
||||
{"keywords",keywords},
|
||||
#line 32 "KEY2Token.gperf"
|
||||
{"animationDelay",animationDelay},
|
||||
#line 75 "KEY2Token.gperf"
|
||||
{"slide-list",slide_list},
|
||||
{(char*)0},
|
||||
#line 31 "KEY2Token.gperf"
|
||||
{"animationAutoPlay",animationAutoPlay},
|
||||
#line 60 "KEY2Token.gperf"
|
||||
{"key",key},
|
||||
#line 51 "KEY2Token.gperf"
|
||||
{"decimal-number",number},
|
||||
#line 82 "KEY2Token.gperf"
|
||||
{"stylesheet",stylesheet},
|
||||
{(char*)0},
|
||||
#line 79 "KEY2Token.gperf"
|
||||
{"sticky-notes",sticky_notes},
|
||||
#line 29 "KEY2Token.gperf"
|
||||
{"BGBuildDurationProperty",BGBuildDurationProperty},
|
||||
#line 38 "KEY2Token.gperf"
|
||||
{"animationInterchunkDelay",animationInterchunkDelay},
|
||||
#line 45 "KEY2Token.gperf"
|
||||
{"build",build},
|
||||
#line 68 "KEY2Token.gperf"
|
||||
{"number",number},
|
||||
#line 87 "KEY2Token.gperf"
|
||||
{"title-placeholder",title_placeholder},
|
||||
#line 69 "KEY2Token.gperf"
|
||||
{"object-placeholder",object_placeholder},
|
||||
{(char*)0},
|
||||
#line 64 "KEY2Token.gperf"
|
||||
{"master-ref",master_ref},
|
||||
#line 46 "KEY2Token.gperf"
|
||||
{"build-chunk",build_chunk},
|
||||
#line 90 "KEY2Token.gperf"
|
||||
{"version",version},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 25 "KEY2Token.gperf"
|
||||
{"2005092101",COMPATIBLE_VERSION_STR_3,},
|
||||
{(char*)0},
|
||||
#line 48 "KEY2Token.gperf"
|
||||
{"bullets",bullets},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 47 "KEY2Token.gperf"
|
||||
{"build-chunks",build_chunks},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 72 "KEY2Token.gperf"
|
||||
{"presentation",presentation},
|
||||
{(char*)0},
|
||||
#line 76 "KEY2Token.gperf"
|
||||
{"slide-number-placeholder",slide_number_placeholder},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 59 "KEY2Token.gperf"
|
||||
{"info-ref",info_ref},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 57 "KEY2Token.gperf"
|
||||
{"http://developer.apple.com/namespaces/keynote2",NS_URI_KEY},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 88 "KEY2Token.gperf"
|
||||
{"title-placeholder-ref",title_placeholder_ref},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 43 "KEY2Token.gperf"
|
||||
{"body-placeholder",body_placeholder},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 81 "KEY2Token.gperf"
|
||||
{"style-ref",style_ref},
|
||||
{(char*)0},
|
||||
#line 71 "KEY2Token.gperf"
|
||||
{"parent-build-ref",parent_build_ref},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 44 "KEY2Token.gperf"
|
||||
{"body-placeholder-ref",body_placeholder_ref}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
{
|
||||
register int key = hash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
||||
{
|
||||
register const char *s = wordlist[key].name;
|
||||
|
||||
if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
|
||||
return &wordlist[key];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#line 91 "KEY2Token.gperf"
|
||||
|
||||
@ -1,151 +0,0 @@
|
||||
/* C++ code produced by gperf version 3.0.1 */
|
||||
/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ --output-file NUM1Token.inc NUM1Token.gperf */
|
||||
/* Computed positions: -k'$' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
||||
/* The character set is not based on ISO-646. */
|
||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
||||
#endif
|
||||
|
||||
#line 10 "NUM1Token.gperf"
|
||||
|
||||
#if defined __GNUC__
|
||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||
#endif
|
||||
|
||||
using namespace NUM1Token;
|
||||
#line 18 "NUM1Token.gperf"
|
||||
struct Token
|
||||
{
|
||||
const char *name;
|
||||
int id;
|
||||
};
|
||||
#include <string.h>
|
||||
/* maximum key range = 34, duplicates = 0 */
|
||||
|
||||
class Perfect_Hash
|
||||
{
|
||||
private:
|
||||
static inline unsigned int hash (const char *str, unsigned int len);
|
||||
public:
|
||||
static const struct Token *in_word_set (const char *str, unsigned int len);
|
||||
};
|
||||
|
||||
inline unsigned int
|
||||
Perfect_Hash::hash (register const char *str, register unsigned int len)
|
||||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 0, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 0, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
0, 10, 41, 41, 41, 0, 0, 41, 41, 41,
|
||||
41, 5, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
|
||||
41, 41, 41, 41, 41, 41
|
||||
};
|
||||
return len + asso_values[(unsigned char)str[len - 1]];
|
||||
}
|
||||
|
||||
const struct Token *
|
||||
Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
|
||||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 10,
|
||||
MIN_WORD_LENGTH = 7,
|
||||
MAX_WORD_LENGTH = 40,
|
||||
MIN_HASH_VALUE = 7,
|
||||
MAX_HASH_VALUE = 40
|
||||
};
|
||||
|
||||
static const struct Token wordlist[] =
|
||||
{
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 29 "NUM1Token.gperf"
|
||||
{"version",version},
|
||||
#line 25 "NUM1Token.gperf"
|
||||
{"document",document},
|
||||
#line 30 "NUM1Token.gperf"
|
||||
{"workspace",workspace},
|
||||
#line 28 "NUM1Token.gperf"
|
||||
{"stylesheet",stylesheet},
|
||||
#line 24 "NUM1Token.gperf"
|
||||
{"92008102400",VERSION_STR_2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 32 "NUM1Token.gperf"
|
||||
{"workspace-name",workspace_name},
|
||||
#line 33 "NUM1Token.gperf"
|
||||
{"workspace-style",workspace_style},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 27 "NUM1Token.gperf"
|
||||
{"page-info",page_info},
|
||||
#line 31 "NUM1Token.gperf"
|
||||
{"workspace-array",workspace_array},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 26 "NUM1Token.gperf"
|
||||
{"http://developer.apple.com/namespaces/ls",NS_URI_LS}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
{
|
||||
register int key = hash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
||||
{
|
||||
register const char *s = wordlist[key].name;
|
||||
|
||||
if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
|
||||
return &wordlist[key];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#line 34 "NUM1Token.gperf"
|
||||
|
||||
@ -1,209 +0,0 @@
|
||||
/* C++ code produced by gperf version 3.0.1 */
|
||||
/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ --output-file PAG1Token.inc PAG1Token.gperf */
|
||||
/* Computed positions: -k'1,6' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
||||
/* The character set is not based on ISO-646. */
|
||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
||||
#endif
|
||||
|
||||
#line 10 "PAG1Token.gperf"
|
||||
|
||||
#if defined __GNUC__
|
||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||
#endif
|
||||
|
||||
using namespace PAG1Token;
|
||||
#line 18 "PAG1Token.gperf"
|
||||
struct Token
|
||||
{
|
||||
const char *name;
|
||||
int id;
|
||||
};
|
||||
#include <string.h>
|
||||
/* maximum key range = 51, duplicates = 0 */
|
||||
|
||||
class Perfect_Hash
|
||||
{
|
||||
private:
|
||||
static inline unsigned int hash (const char *str, unsigned int len);
|
||||
public:
|
||||
static const struct Token *in_word_set (const char *str, unsigned int len);
|
||||
};
|
||||
|
||||
inline unsigned int
|
||||
Perfect_Hash::hash (register const char *str, register unsigned int len)
|
||||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 25, 55, 0, 55, 10,
|
||||
55, 55, 55, 55, 55, 55, 55, 10, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
5, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 5, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 5, 25, 15,
|
||||
20, 0, 20, 15, 5, 55, 55, 5, 10, 55,
|
||||
0, 15, 5, 55, 0, 0, 0, 55, 5, 10,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 55, 55, 55
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
switch (hval)
|
||||
{
|
||||
default:
|
||||
hval += asso_values[(unsigned char)str[5]];
|
||||
/*FALLTHROUGH*/
|
||||
case 5:
|
||||
case 4:
|
||||
case 3:
|
||||
case 2:
|
||||
case 1:
|
||||
hval += asso_values[(unsigned char)str[0]];
|
||||
break;
|
||||
}
|
||||
return hval;
|
||||
}
|
||||
|
||||
const struct Token *
|
||||
Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
|
||||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 31,
|
||||
MIN_WORD_LENGTH = 4,
|
||||
MAX_WORD_LENGTH = 40,
|
||||
MIN_HASH_VALUE = 4,
|
||||
MAX_HASH_VALUE = 54
|
||||
};
|
||||
|
||||
static const struct Token wordlist[] =
|
||||
{
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 38 "PAG1Token.gperf"
|
||||
{"note",note},
|
||||
#line 49 "PAG1Token.gperf"
|
||||
{"rpage",rpage},
|
||||
#line 39 "PAG1Token.gperf"
|
||||
{"number",number},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 41 "PAG1Token.gperf"
|
||||
{"page",page},
|
||||
#line 52 "PAG1Token.gperf"
|
||||
{"stylesheet",stylesheet},
|
||||
#line 33 "PAG1Token.gperf"
|
||||
{"header",header},
|
||||
#line 51 "PAG1Token.gperf"
|
||||
{"slprint-info",slprint_info},
|
||||
{(char*)0},
|
||||
#line 47 "PAG1Token.gperf"
|
||||
{"prototype",prototype},
|
||||
#line 44 "PAG1Token.gperf"
|
||||
{"page-scale",page_scale},
|
||||
#line 37 "PAG1Token.gperf"
|
||||
{"layout",layout},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 27 "PAG1Token.gperf"
|
||||
{"cell",cell},
|
||||
#line 40 "PAG1Token.gperf"
|
||||
{"order",order},
|
||||
#line 43 "PAG1Token.gperf"
|
||||
{"page-height",page_height},
|
||||
#line 53 "PAG1Token.gperf"
|
||||
{"textbox",textbox},
|
||||
{(char*)0},
|
||||
#line 28 "PAG1Token.gperf"
|
||||
{"date",date},
|
||||
#line 45 "PAG1Token.gperf"
|
||||
{"page-width",page_width},
|
||||
#line 31 "PAG1Token.gperf"
|
||||
{"footer",footer},
|
||||
#line 54 "PAG1Token.gperf"
|
||||
{"version",version},
|
||||
#line 29 "PAG1Token.gperf"
|
||||
{"document",document},
|
||||
#line 26 "PAG1Token.gperf"
|
||||
{"body",body},
|
||||
#line 42 "PAG1Token.gperf"
|
||||
{"page-group",page_group},
|
||||
#line 24 "PAG1Token.gperf"
|
||||
{"92008102400",VERSION_STR_4},
|
||||
#line 25 "PAG1Token.gperf"
|
||||
{"SLCreationDateProperty",SLCreationDateProperty},
|
||||
#line 50 "PAG1Token.gperf"
|
||||
{"section-prototypes",section_prototypes},
|
||||
#line 35 "PAG1Token.gperf"
|
||||
{"kSFWPFootnoteGapProperty",kSFWPFootnoteGapProperty},
|
||||
#line 36 "PAG1Token.gperf"
|
||||
{"kSFWPFootnoteKindProperty",kSFWPFootnoteKindProperty},
|
||||
#line 48 "PAG1Token.gperf"
|
||||
{"publication-info",publication_info},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 46 "PAG1Token.gperf"
|
||||
{"print-info",print_info},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 32 "PAG1Token.gperf"
|
||||
{"footnote",footnote},
|
||||
{(char*)0},
|
||||
#line 34 "PAG1Token.gperf"
|
||||
{"http://developer.apple.com/namespaces/sl",NS_URI_SL},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 30 "PAG1Token.gperf"
|
||||
{"drawables",drawables}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
{
|
||||
register int key = hash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
||||
{
|
||||
register const char *s = wordlist[key].name;
|
||||
|
||||
if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
|
||||
return &wordlist[key];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#line 55 "PAG1Token.gperf"
|
||||
|
||||
@ -4,7 +4,6 @@ CORE_BOOST_LIBS = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX/lib
|
||||
core_ios:CONFIG += disable_enum_constexpr_conversion
|
||||
core_android:CONFIG += disable_enum_constexpr_conversion
|
||||
core_mac:CONFIG += disable_enum_constexpr_conversion
|
||||
core_linux_clang:CONFIG += disable_enum_constexpr_conversion
|
||||
|
||||
core_android {
|
||||
INCLUDEPATH += $$PWD/build/android/include
|
||||
@ -26,21 +25,14 @@ bundle_xcframeworks {
|
||||
}
|
||||
}
|
||||
|
||||
core_win_arm64 {
|
||||
DEFINES += MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS=0
|
||||
}
|
||||
|
||||
core_windows {
|
||||
VS_VERSION=140
|
||||
VS_DEBUG=
|
||||
VS_ARCH=x64
|
||||
core_debug:VS_DEBUG=gd-
|
||||
core_win_32:VS_ARCH=x32
|
||||
core_win_arm64:VS_ARCH=a64
|
||||
vs2019:VS_VERSION=142
|
||||
|
||||
DEFINES += BOOST_USE_WINDOWS_H BOOST_WINAPI_NO_REDECLARATIONS
|
||||
|
||||
BOOST_POSTFIX = -vc$${VS_VERSION}-mt-$${VS_DEBUG}$${VS_ARCH}-1_72
|
||||
|
||||
core_boost_libs:LIBS += -L$$CORE_BOOST_LIBS -llibboost_system$$BOOST_POSTFIX -llibboost_filesystem$$BOOST_POSTFIX
|
||||
|
||||
@ -27,7 +27,7 @@ CLEAN=
|
||||
BOOST_VERSION=1.72.0
|
||||
BOOST_VERSION2=1_72_0
|
||||
MIN_IOS_VERSION=8.0
|
||||
IOS_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="NO" -showsdks | grep iphoneos | \
|
||||
IOS_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="YES" OTHER_CFLAGS="-fembed-bitcode" -showsdks | grep iphoneos | \
|
||||
egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`
|
||||
OSX_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="YES" OTHER_CFLAGS="-fembed-bitcode" -showsdks | grep macosx | \
|
||||
egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`
|
||||
@ -42,7 +42,7 @@ XCODE_ROOT=`xcode-select -print-path`
|
||||
#
|
||||
# Should perhaps also consider/use instead: -BOOST_SP_USE_PTHREADS
|
||||
EXTRA_CPPFLAGS="-DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -g -DNDEBUG \
|
||||
-std=c++11 -stdlib=libc++ -fvisibility=hidden -fvisibility-inlines-hidden"
|
||||
-std=c++11 -stdlib=libc++ -fvisibility=hidden -fvisibility-inlines-hidden -fembed-bitcode"
|
||||
EXTRA_IOS_CPPFLAGS="$EXTRA_CPPFLAGS -mios-version-min=$MIN_IOS_VERSION"
|
||||
EXTRA_OSX_CPPFLAGS="$EXTRA_CPPFLAGS"
|
||||
|
||||
@ -259,17 +259,20 @@ buildBoost()
|
||||
echo Building Boost for iPhone
|
||||
# Install this one so we can copy the headers for the frameworks...
|
||||
./b2 -j16 --build-dir=iphone-build --stagedir=iphone-build/stage \
|
||||
cxxflags="-fembed-bitcode" \
|
||||
--prefix=$PREFIXDIR toolset=darwin architecture=arm target-os=iphone \
|
||||
macosx-version=iphone-${IOS_SDK_VERSION} define=_LITTLE_ENDIAN \
|
||||
link=static stage
|
||||
./b2 -j16 --build-dir=iphone-build --stagedir=iphone-build/stage \
|
||||
--prefix=$PREFIXDIR toolset=darwin architecture=arm \
|
||||
cxxflags="-fembed-bitcode" \
|
||||
target-os=iphone macosx-version=iphone-${IOS_SDK_VERSION} \
|
||||
define=_LITTLE_ENDIAN link=static install
|
||||
doneSection
|
||||
|
||||
echo Building Boost for iPhoneSimulator
|
||||
./b2 -j16 --build-dir=iphonesim-build --stagedir=iphonesim-build/stage \
|
||||
cxxflags="-fembed-bitcode" \
|
||||
toolset=darwin-${IOS_SDK_VERSION}~iphonesim architecture=x86 \
|
||||
target-os=iphone macosx-version=iphonesim-${IOS_SDK_VERSION} \
|
||||
link=static stage
|
||||
|
||||
2
Common/3dParty/brotli/.gitignore
vendored
2
Common/3dParty/brotli/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
brotli/
|
||||
module.version
|
||||
@ -1,9 +0,0 @@
|
||||
SRC_DIR = $$PWD/brotli/c
|
||||
DEFINES += FT_CONFIG_OPTION_USE_BROTLI
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$SRC_DIR/include
|
||||
|
||||
SOURCES += $$files($$SRC_DIR/common/*.c)
|
||||
SOURCES += $$files($$SRC_DIR/dec/*.c)
|
||||
#SOURCES += $$files($$SRC_DIR/enc/*.c)
|
||||
@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append("../../../../build_tools/scripts")
|
||||
import base
|
||||
|
||||
def clear_module():
|
||||
if base.is_dir("brotli"):
|
||||
base.delete_dir_with_access_error("brotli")
|
||||
return
|
||||
|
||||
base.check_module_version("1", clear_module)
|
||||
|
||||
# fetch harfbuzz
|
||||
if not base.is_dir("brotli"):
|
||||
base.cmd("git", ["clone", "https://github.com/google/brotli.git"])
|
||||
os.chdir("brotli")
|
||||
base.cmd("git", ["checkout", "a47d7475063eb223c87632eed806c0070e70da29"])
|
||||
os.chdir("../")
|
||||
@ -78,24 +78,24 @@ function set_ios_cpu_feature() {
|
||||
armv7)
|
||||
export CC="xcrun -sdk iphoneos clang -arch armv7"
|
||||
export CXX="xcrun -sdk iphoneos clang++ -arch armv7"
|
||||
export CFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -isysroot ${sysroot} -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export CFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
;;
|
||||
arm64)
|
||||
export CC="xcrun -sdk iphoneos clang -arch arm64"
|
||||
export CXX="xcrun -sdk iphoneos clang++ -arch arm64"
|
||||
export CFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -isysroot ${sysroot} -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export CFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
;;
|
||||
arm64e)
|
||||
# -march=armv8.3 ???
|
||||
export CC="xcrun -sdk iphoneos clang -arch arm64e"
|
||||
export CXX="xcrun -sdk iphoneos clang++ -arch arm64e"
|
||||
export CFLAGS="-arch arm64e -target aarch64-ios-darwin -Wno-unused-function -fstrict-aliasing -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch arm64e -target aarch64-ios-darwin -isysroot ${sysroot} -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch arm64e -target aarch64-ios-darwin -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export CFLAGS="-arch arm64e -target aarch64-ios-darwin -Wno-unused-function -fstrict-aliasing -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
export LDFLAGS="-arch arm64e -target aarch64-ios-darwin -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
|
||||
export CXXFLAGS="-std=c++11 -arch arm64e -target aarch64-ios-darwin -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
|
||||
;;
|
||||
i386)
|
||||
export CC="xcrun -sdk iphonesimulator clang -arch i386"
|
||||
|
||||
@ -1,818 +0,0 @@
|
||||
// https://android.googlesource.com/platform/external/harfbuzz/+/ics-mr0/contrib/tables/script-properties.h
|
||||
|
||||
/*
|
||||
* https://unicode.org/reports/tr29/
|
||||
|
||||
As far as a user is concerned, the underlying representation of text is not important,
|
||||
but it is important that an editing interface present a uniform implementation of what
|
||||
the user thinks of as characters. Grapheme clusters can be treated as units, by default,
|
||||
for processes such as the formatting of drop caps, as well as the implementation of text
|
||||
selection, arrow key movement or backspacing through text, and so forth. For example,
|
||||
when a grapheme cluster is represented internally by a character sequence consisting of
|
||||
base character + accents, then using the right arrow key would skip from the start of the
|
||||
base character to the end of the last accent.
|
||||
|
||||
This document defines a default specification for grapheme clusters. It may be customized
|
||||
for particular languages, operations, or other situations. For example, arrow key movement
|
||||
could be tailored by language, or could use knowledge specific to particular fonts to move
|
||||
in a more granular manner, in circumstances where it would be useful to edit individual
|
||||
components. This could apply, for example, to the complex editorial requirements for the
|
||||
Northern Thai script Tai Tham (Lanna). Similarly, editing a grapheme cluster element by
|
||||
element may be preferable in some circumstances. For example, on a given system the backspace
|
||||
key might delete by code point, while the delete key may delete an entire cluster.
|
||||
* */
|
||||
|
||||
#include "../../../core/DesktopEditor/common/File.h"
|
||||
#include "../../../core/DesktopEditor/raster/BgraFrame.h"
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
#include FT_OUTLINE_H
|
||||
|
||||
#include <hb-ft.h>
|
||||
#include <hb-ot.h>
|
||||
#include <hb.h>
|
||||
|
||||
class CDrawer
|
||||
{
|
||||
public:
|
||||
CBgraFrame m_oFrame;
|
||||
BYTE *pixels;
|
||||
int width;
|
||||
int height;
|
||||
int pitch;
|
||||
BYTE Rshift;
|
||||
BYTE Gshift;
|
||||
BYTE Bshift;
|
||||
BYTE Ashift;
|
||||
|
||||
public:
|
||||
CDrawer(int w, int h)
|
||||
{
|
||||
width = w;
|
||||
height = h;
|
||||
pitch = 4 * width;
|
||||
m_oFrame.put_Width(width);
|
||||
m_oFrame.put_Height(height);
|
||||
m_oFrame.put_Stride(pitch);
|
||||
|
||||
int size = 4 * width * height;
|
||||
BYTE *pPixels = new BYTE[size];
|
||||
for (int i = 0; i < size; i += 4)
|
||||
{
|
||||
pPixels[i] = 0xFF;
|
||||
pPixels[i + 1] = 0xFF;
|
||||
pPixels[i + 2] = 0xFF;
|
||||
pPixels[i + 3] = 0xFF;
|
||||
}
|
||||
pixels = pPixels;
|
||||
m_oFrame.put_Data(pPixels);
|
||||
|
||||
Bshift = 24;
|
||||
Gshift = 16;
|
||||
Rshift = 8;
|
||||
Ashift = 0;
|
||||
}
|
||||
void Save()
|
||||
{
|
||||
m_oFrame.SaveFile(NSFile::GetProcessDirectory() + L"/output.png", 4);
|
||||
}
|
||||
};
|
||||
|
||||
#define NUM_EXAMPLES 3
|
||||
|
||||
/* fonts */
|
||||
const char *fonts_paths[NUM_EXAMPLES] = {
|
||||
"C:/Windows/Fonts/calibri.ttf",
|
||||
//"C:/Windows/Fonts/arial.ttf",
|
||||
"C:/Users/korol/AppData/Local/Microsoft/Windows/Fonts/ArabicTest.ttf",
|
||||
"C:/Windows/Fonts/simsun.ttc"
|
||||
};
|
||||
|
||||
#define NUM_GLYPH_TYPES 5
|
||||
const char *num_glyph_types[NUM_GLYPH_TYPES] = {"UNCLASSIFIED", "BASE_GLYPH", "LIGATURE", "MARK", "COMPONENT"};
|
||||
|
||||
/* tranlations courtesy of google */
|
||||
const char *texts[NUM_EXAMPLES] = {
|
||||
"fi",
|
||||
"لا لآ لأ لا",
|
||||
"懶惰的姜貓"
|
||||
};
|
||||
|
||||
const hb_direction_t text_directions[NUM_EXAMPLES] = {
|
||||
HB_DIRECTION_LTR,
|
||||
HB_DIRECTION_RTL,
|
||||
HB_DIRECTION_TTB,
|
||||
};
|
||||
|
||||
const int text_skip[NUM_EXAMPLES] = {
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
};
|
||||
|
||||
/* XXX: These are not correct, though it doesn't seem to break anything
|
||||
* regardless of their value. */
|
||||
const char *languages[NUM_EXAMPLES] = {
|
||||
"en",
|
||||
"ar",
|
||||
"ch",
|
||||
};
|
||||
|
||||
const hb_script_t scripts[NUM_EXAMPLES] = {
|
||||
HB_SCRIPT_LATIN,
|
||||
HB_SCRIPT_ARABIC,
|
||||
HB_SCRIPT_HAN,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ENGLISH = 0,
|
||||
ARABIC,
|
||||
CHINESE
|
||||
};
|
||||
|
||||
typedef struct _spanner_baton_t
|
||||
{
|
||||
/* rendering part - assumes 32bpp surface */
|
||||
uint32_t *pixels; // set to the glyph's origin.
|
||||
uint32_t *first_pixel, *last_pixel; // bounds check
|
||||
uint32_t pitch;
|
||||
uint32_t rshift;
|
||||
uint32_t gshift;
|
||||
uint32_t bshift;
|
||||
uint32_t ashift;
|
||||
|
||||
/* sizing part */
|
||||
int min_span_x;
|
||||
int max_span_x;
|
||||
int min_y;
|
||||
int max_y;
|
||||
} spanner_baton_t;
|
||||
|
||||
/* This spanner is write only, suitable for write-only mapped buffers,
|
||||
but can cause dark streaks where glyphs overlap, like in arabic scripts.
|
||||
|
||||
Note how spanners don't clip against surface width - resize the window
|
||||
and see what it leads to. */
|
||||
void spanner_wo(int y, int count, const FT_Span *spans, void *user)
|
||||
{
|
||||
spanner_baton_t *baton = (spanner_baton_t *)user;
|
||||
uint32_t *scanline = baton->pixels - y * ((int)baton->pitch / 4);
|
||||
if (scanline < baton->first_pixel)
|
||||
return;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
uint32_t color = ((spans[i].coverage / 2) << baton->rshift) | ((spans[i].coverage / 2) << baton->gshift) | ((spans[i].coverage / 2) << baton->bshift);
|
||||
|
||||
uint32_t *start = scanline + spans[i].x;
|
||||
if (start + spans[i].len > baton->last_pixel)
|
||||
return;
|
||||
|
||||
for (int x = 0; x < spans[i].len; x++)
|
||||
*start++ = color;
|
||||
}
|
||||
}
|
||||
|
||||
/* This spanner does read/modify/write, trading performance for accuracy.
|
||||
The color here is simply half coverage value in all channels,
|
||||
effectively mid-gray.
|
||||
Suitable for when artifacts mostly do come up and annoy.
|
||||
This might be optimized if one does rmw only for some values of x.
|
||||
But since the whole buffer has to be rw anyway, and the previous value
|
||||
is probably still in the cache, there's little point to. */
|
||||
void spanner_rw(int y, int count, const FT_Span *spans, void *user)
|
||||
{
|
||||
spanner_baton_t *baton = (spanner_baton_t *)user;
|
||||
uint32_t *scanline = baton->pixels - y * ((int)baton->pitch / 4);
|
||||
if (scanline < baton->first_pixel)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
uint32_t color = ((spans[i].coverage / 2) << baton->rshift) | ((spans[i].coverage / 2) << baton->gshift) | ((spans[i].coverage / 2) << baton->bshift);
|
||||
uint32_t *start = scanline + spans[i].x;
|
||||
if (start + spans[i].len > baton->last_pixel)
|
||||
return;
|
||||
|
||||
for (int x = 0; x < spans[i].len; x++)
|
||||
*start++ |= color;
|
||||
}
|
||||
}
|
||||
|
||||
/* This spanner is for obtaining exact bounding box for the string.
|
||||
Unfortunately this can't be done without rendering it (or pretending to).
|
||||
After this runs, we get min and max values of coordinates used.
|
||||
*/
|
||||
void spanner_sizer(int y, int count, const FT_Span *spans, void *user)
|
||||
{
|
||||
spanner_baton_t *baton = (spanner_baton_t *)user;
|
||||
|
||||
if (y < baton->min_y)
|
||||
baton->min_y = y;
|
||||
if (y > baton->max_y)
|
||||
baton->max_y = y;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (spans[i].x + spans[i].len > baton->max_span_x)
|
||||
baton->max_span_x = spans[i].x + spans[i].len;
|
||||
if (spans[i].x < baton->min_span_x)
|
||||
baton->min_span_x = spans[i].x;
|
||||
}
|
||||
}
|
||||
|
||||
FT_SpanFunc spanner = spanner_wo;
|
||||
|
||||
void ftfdump(FT_Face ftf)
|
||||
{
|
||||
for (int i = 0; i < ftf->num_charmaps; i++)
|
||||
{
|
||||
printf(
|
||||
"%d: %s %s %c%c%c%c plat=%hu id=%hu\n", i, ftf->family_name, ftf->style_name, ftf->charmaps[i]->encoding >> 24, (ftf->charmaps[i]->encoding >> 16) & 0xff,
|
||||
(ftf->charmaps[i]->encoding >> 8) & 0xff, (ftf->charmaps[i]->encoding) & 0xff, ftf->charmaps[i]->platform_id, ftf->charmaps[i]->encoding_id);
|
||||
}
|
||||
}
|
||||
|
||||
/* See http://www.microsoft.com/typography/otspec/name.htm
|
||||
for a list of some possible platform-encoding pairs.
|
||||
We're interested in 0-3 aka 3-1 - UCS-2.
|
||||
Otherwise, fail. If a font has some unicode map, but lacks
|
||||
UCS-2 - it is a broken or irrelevant font. What exactly
|
||||
Freetype will select on face load (it promises most wide
|
||||
unicode, and if that will be slower that UCS-2 - left as
|
||||
an excercise to check. */
|
||||
int force_ucs2_charmap(FT_Face ftf)
|
||||
{
|
||||
for (int i = 0; i < ftf->num_charmaps; i++)
|
||||
if (((ftf->charmaps[i]->platform_id == 0) && (ftf->charmaps[i]->encoding_id == 3)) || ((ftf->charmaps[i]->platform_id == 3) && (ftf->charmaps[i]->encoding_id == 1)))
|
||||
return FT_Set_Charmap(ftf, ftf->charmaps[i]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
void hline(CDrawer *s, int min_x, int max_x, int y, uint32_t color)
|
||||
{
|
||||
if (y < 0)
|
||||
y = 0;
|
||||
uint32_t *pix = (uint32_t *)s->pixels + (y * s->pitch) / 4 + min_x;
|
||||
uint32_t *end = (uint32_t *)s->pixels + (y * s->pitch) / 4 + max_x;
|
||||
|
||||
while (pix - 1 != end)
|
||||
*pix++ = color;
|
||||
}
|
||||
|
||||
void vline(CDrawer *s, int min_y, int max_y, int x, uint32_t color)
|
||||
{
|
||||
if (min_y < 0)
|
||||
min_y = 0;
|
||||
|
||||
uint32_t *pix = (uint32_t *)s->pixels + (min_y * s->pitch) / 4 + x;
|
||||
uint32_t *end = (uint32_t *)s->pixels + (max_y * s->pitch) / 4 + x;
|
||||
|
||||
while (pix - s->pitch / 4 != end)
|
||||
{
|
||||
*pix = color;
|
||||
pix += s->pitch / 4;
|
||||
}
|
||||
}
|
||||
|
||||
void assert(const bool &valid)
|
||||
{
|
||||
// TODO:
|
||||
}
|
||||
|
||||
#define MAIN_CC_NO_PRIVATE_API
|
||||
#ifndef MAIN_CC_NO_PRIVATE_API
|
||||
/* Only this part of this mini app uses private API */
|
||||
#include "hb-open-file.hh"
|
||||
#include "hb-ot-layout-gdef-table.hh"
|
||||
#include "hb-ot-layout-gsubgpos.hh"
|
||||
#include "hb-static.cc"
|
||||
|
||||
using namespace OT;
|
||||
|
||||
static void print_layout_info_using_private_api(hb_blob_t *blob)
|
||||
{
|
||||
const char *font_data = hb_blob_get_data(blob, nullptr);
|
||||
hb_blob_t *font_blob = hb_sanitize_context_t().sanitize_blob<OpenTypeFontFile>(blob);
|
||||
const OpenTypeFontFile *sanitized = font_blob->as<OpenTypeFontFile>();
|
||||
if (!font_blob->data)
|
||||
{
|
||||
printf("Sanitization of the file wasn't successful. Exit");
|
||||
exit(1);
|
||||
}
|
||||
const OpenTypeFontFile &ot = *sanitized;
|
||||
|
||||
switch (ot.get_tag())
|
||||
{
|
||||
case OpenTypeFontFile::TrueTypeTag:
|
||||
printf("OpenType font with TrueType outlines\n");
|
||||
break;
|
||||
case OpenTypeFontFile::CFFTag:
|
||||
printf("OpenType font with CFF (Type1) outlines\n");
|
||||
break;
|
||||
case OpenTypeFontFile::TTCTag:
|
||||
printf("TrueType Collection of OpenType fonts\n");
|
||||
break;
|
||||
case OpenTypeFontFile::TrueTag:
|
||||
printf("Obsolete Apple TrueType font\n");
|
||||
break;
|
||||
case OpenTypeFontFile::Typ1Tag:
|
||||
printf("Obsolete Apple Type1 font in SFNT container\n");
|
||||
break;
|
||||
case OpenTypeFontFile::DFontTag:
|
||||
printf("DFont Mac Resource Fork\n");
|
||||
break;
|
||||
default:
|
||||
printf("Unknown font format\n");
|
||||
break;
|
||||
}
|
||||
|
||||
unsigned num_faces = hb_face_count(blob);
|
||||
printf("%d font(s) found in file\n", num_faces);
|
||||
for (unsigned n_font = 0; n_font < num_faces; ++n_font)
|
||||
{
|
||||
const OpenTypeFontFace &font = ot.get_face(n_font);
|
||||
printf("Font %d of %d:\n", n_font, num_faces);
|
||||
|
||||
unsigned num_tables = font.get_table_count();
|
||||
printf(" %d table(s) found in font\n", num_tables);
|
||||
for (unsigned n_table = 0; n_table < num_tables; ++n_table)
|
||||
{
|
||||
const OpenTypeTable &table = font.get_table(n_table);
|
||||
printf(" Table %2d of %2d: %.4s (0x%08x+0x%08x)\n", n_table, num_tables, (const char *)table.tag, (unsigned)table.offset, (unsigned)table.length);
|
||||
|
||||
switch (table.tag)
|
||||
{
|
||||
|
||||
case HB_OT_TAG_GSUB:
|
||||
case HB_OT_TAG_GPOS:
|
||||
{
|
||||
|
||||
const GSUBGPOS &g = *reinterpret_cast<const GSUBGPOS *>(font_data + table.offset);
|
||||
|
||||
unsigned num_scripts = g.get_script_count();
|
||||
printf(" %d script(s) found in table\n", num_scripts);
|
||||
for (unsigned n_script = 0; n_script < num_scripts; ++n_script)
|
||||
{
|
||||
const Script &script = g.get_script(n_script);
|
||||
printf(" Script %2d of %2d: %.4s\n", n_script, num_scripts, (const char *)g.get_script_tag(n_script));
|
||||
|
||||
if (!script.has_default_lang_sys())
|
||||
printf(" No default language system\n");
|
||||
int num_langsys = script.get_lang_sys_count();
|
||||
printf(" %d language system(s) found in script\n", num_langsys);
|
||||
for (int n_langsys = script.has_default_lang_sys() ? -1 : 0; n_langsys < num_langsys; ++n_langsys)
|
||||
{
|
||||
const LangSys &langsys = n_langsys == -1 ? script.get_default_lang_sys() : script.get_lang_sys(n_langsys);
|
||||
if (n_langsys == -1)
|
||||
printf(" Default Language System\n");
|
||||
else
|
||||
printf(" Language System %2d of %2d: %.4s\n", n_langsys, num_langsys, (const char *)script.get_lang_sys_tag(n_langsys));
|
||||
if (!langsys.has_required_feature())
|
||||
printf(" No required feature\n");
|
||||
else
|
||||
printf(" Required feature index: %d\n", langsys.get_required_feature_index());
|
||||
|
||||
unsigned num_features = langsys.get_feature_count();
|
||||
printf(" %d feature(s) found in language system\n", num_features);
|
||||
for (unsigned n_feature = 0; n_feature < num_features; ++n_feature)
|
||||
{
|
||||
printf(" Feature index %2d of %2d: %d\n", n_feature, num_features, langsys.get_feature_index(n_feature));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned num_features = g.get_feature_count();
|
||||
printf(" %d feature(s) found in table\n", num_features);
|
||||
for (unsigned n_feature = 0; n_feature < num_features; ++n_feature)
|
||||
{
|
||||
const Feature &feature = g.get_feature(n_feature);
|
||||
unsigned num_lookups = feature.get_lookup_count();
|
||||
printf(" Feature %2d of %2d: %c%c%c%c\n", n_feature, num_features, HB_UNTAG(g.get_feature_tag(n_feature)));
|
||||
|
||||
printf(" %d lookup(s) found in feature\n", num_lookups);
|
||||
for (unsigned n_lookup = 0; n_lookup < num_lookups; ++n_lookup)
|
||||
{
|
||||
printf(" Lookup index %2d of %2d: %d\n", n_lookup, num_lookups, feature.get_lookup_index(n_lookup));
|
||||
}
|
||||
}
|
||||
|
||||
unsigned num_lookups = g.get_lookup_count();
|
||||
printf(" %d lookup(s) found in table\n", num_lookups);
|
||||
for (unsigned n_lookup = 0; n_lookup < num_lookups; ++n_lookup)
|
||||
{
|
||||
const Lookup &lookup = g.get_lookup(n_lookup);
|
||||
printf(" Lookup %2d of %2d: type %d, props 0x%04X\n", n_lookup, num_lookups, lookup.get_type(), lookup.get_props());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case GDEF::tableTag:
|
||||
{
|
||||
|
||||
const GDEF &gdef = *reinterpret_cast<const GDEF *>(font_data + table.offset);
|
||||
|
||||
printf(" Has %sglyph classes\n", gdef.has_glyph_classes() ? "" : "no ");
|
||||
printf(" Has %smark attachment types\n", gdef.has_mark_attachment_types() ? "" : "no ");
|
||||
printf(" Has %sattach points\n", gdef.has_attach_points() ? "" : "no ");
|
||||
printf(" Has %slig carets\n", gdef.has_lig_carets() ? "" : "no ");
|
||||
printf(" Has %smark sets\n", gdef.has_mark_sets() ? "" : "no ");
|
||||
|
||||
hb_position_t caret_array[16];
|
||||
unsigned int caret_count = 16;
|
||||
|
||||
unsigned int num_carets = gdef.get_lig_carets(nullptr, HB_DIRECTION_LTR, 302, 0, &caret_count, caret_array);
|
||||
int y = 0;
|
||||
++y;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* end of private API use */
|
||||
#endif
|
||||
|
||||
struct hb_feature_test {
|
||||
hb_tag_t tag;
|
||||
uint32_t value;
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// hb_blob_t* blobFileTest = hb_blob_create_from_file("C:/Windows/Fonts/calibri.ttf");
|
||||
// print_layout_info_using_private_api(blobFileTest);
|
||||
|
||||
int ptSize = 40 * 64;
|
||||
int device_hdpi = 72;
|
||||
int device_vdpi = 72;
|
||||
|
||||
/* Init freetype */
|
||||
FT_Library ft_library;
|
||||
assert(!FT_Init_FreeType(&ft_library));
|
||||
|
||||
/* Load our fonts */
|
||||
FT_Face ft_face[NUM_EXAMPLES];
|
||||
assert(!FT_New_Face(ft_library, fonts_paths[0], 0, &ft_face[ENGLISH]));
|
||||
assert(!FT_Set_Char_Size(ft_face[ENGLISH], 0, ptSize, device_hdpi, device_vdpi));
|
||||
ftfdump(ft_face[ENGLISH]); // wonderful world of encodings ...
|
||||
// force_ucs2_charmap(ft_face[ENGLISH]); // which we ignore.
|
||||
|
||||
assert(!FT_New_Face(ft_library, fonts_paths[1], 0, &ft_face[ARABIC]));
|
||||
assert(!FT_Set_Char_Size(ft_face[ARABIC], 0, ptSize, device_hdpi, device_vdpi));
|
||||
ftfdump(ft_face[ARABIC]);
|
||||
// force_ucs2_charmap(ft_face[ARABIC]);
|
||||
|
||||
assert(!FT_New_Face(ft_library, fonts_paths[2], 0, &ft_face[CHINESE]));
|
||||
assert(!FT_Set_Char_Size(ft_face[CHINESE], 0, ptSize, device_hdpi, device_vdpi));
|
||||
ftfdump(ft_face[CHINESE]);
|
||||
// force_ucs2_charmap(ft_face[CHINESE]);
|
||||
|
||||
/* Get our harfbuzz font structs */
|
||||
hb_font_t *hb_ft_font[NUM_EXAMPLES];
|
||||
hb_ft_font[ENGLISH] = hb_ft_font_create(ft_face[ENGLISH], NULL);
|
||||
|
||||
// hb_blob_t* blobFile = hb_blob_create_from_file(sFont1.c_str());
|
||||
// hb_face_t* faceFile = hb_face_create(blobFile, 0);
|
||||
// hb_ft_font[ENGLISH] = hb_font_create(faceFile);
|
||||
|
||||
hb_ft_font[ARABIC] = hb_ft_font_create(ft_face[ARABIC], NULL);
|
||||
hb_ft_font[CHINESE] = hb_ft_font_create(ft_face[CHINESE], NULL);
|
||||
|
||||
hb_ft_font_set_funcs(hb_ft_font[ENGLISH]);
|
||||
hb_ft_font_set_funcs(hb_ft_font[ARABIC]);
|
||||
hb_ft_font_set_funcs(hb_ft_font[CHINESE]);
|
||||
|
||||
/** Setup our SDL window **/
|
||||
int width = 800;
|
||||
int height = 600;
|
||||
int bpp = 32;
|
||||
|
||||
CDrawer oDrawer(width, height);
|
||||
|
||||
/* Create a buffer for harfbuzz to use */
|
||||
hb_buffer_t *buf = hb_buffer_create();
|
||||
for (int i = 0; i < NUM_EXAMPLES; ++i)
|
||||
{
|
||||
if (text_skip[i])
|
||||
continue;
|
||||
|
||||
hb_buffer_set_direction(buf, text_directions[i]); /* or LTR */
|
||||
hb_buffer_set_script(buf, scripts[i]); /* see hb-unicode.h */
|
||||
hb_buffer_set_language(buf, hb_language_from_string(languages[i], strlen(languages[i])));
|
||||
// hb_buffer_set_cluster_level (buf, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES);
|
||||
// hb_buffer_set_cluster_level (buf, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS);
|
||||
hb_buffer_set_cluster_level(buf, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES);
|
||||
|
||||
hb_feature_test features[] {
|
||||
{HB_TAG('r','l','i','g'), 1},
|
||||
{HB_TAG('l','i','g','a'), 0},
|
||||
{HB_TAG('c','l','i','g'), 1},
|
||||
{HB_TAG('h','l','i','g'), 1},
|
||||
{HB_TAG('d','l','i','g'), 1},
|
||||
{HB_TAG('k','e','r','n'), 2},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
int userfeatures_count = 0;
|
||||
hb_feature_t userfeatures[100];
|
||||
|
||||
hb_feature_test* current_feature = features;
|
||||
while (current_feature->tag != 0)
|
||||
{
|
||||
if (current_feature->value != 2)
|
||||
{
|
||||
userfeatures[userfeatures_count].tag = current_feature->tag;
|
||||
userfeatures[userfeatures_count].value = current_feature->value;
|
||||
userfeatures[userfeatures_count].start = HB_FEATURE_GLOBAL_START;
|
||||
userfeatures[userfeatures_count].end = HB_FEATURE_GLOBAL_END;
|
||||
userfeatures_count++;
|
||||
}
|
||||
current_feature++;
|
||||
}
|
||||
|
||||
/* Layout the text */
|
||||
hb_buffer_add_utf8(buf, texts[i], strlen(texts[i]), 0, strlen(texts[i]));
|
||||
|
||||
// detect script by codes
|
||||
hb_buffer_guess_segment_properties(buf);
|
||||
|
||||
// const char*const pHbShapers[] = { "graphite2", "coretext_aat", "ot", "fallback", nullptr };
|
||||
// bool ok = hb_shape_full(hb_ft_font[i], buf, userfeatures, userfeatures_count, pHbShapers);
|
||||
|
||||
hb_shape(hb_ft_font[i], buf, (userfeatures_count != 0) ? userfeatures : NULL, userfeatures_count);
|
||||
|
||||
unsigned int glyph_count;
|
||||
hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count);
|
||||
hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);
|
||||
|
||||
#if 1
|
||||
hb_position_t caret_array[16];
|
||||
unsigned int caret_count = 16;
|
||||
|
||||
unsigned int num_carets = hb_ot_layout_get_ligature_carets(hb_ft_font[i], text_directions[i], glyph_info[0].codepoint, -1, &caret_count, caret_array);
|
||||
#endif
|
||||
|
||||
/* set up rendering via spanners */
|
||||
spanner_baton_t stuffbaton;
|
||||
|
||||
FT_Raster_Params ftr_params;
|
||||
ftr_params.target = 0;
|
||||
ftr_params.flags = FT_RASTER_FLAG_DIRECT | FT_RASTER_FLAG_AA;
|
||||
ftr_params.user = &stuffbaton;
|
||||
ftr_params.black_spans = 0;
|
||||
ftr_params.bit_set = 0;
|
||||
ftr_params.bit_test = 0;
|
||||
|
||||
/* Calculate string bounding box in pixels */
|
||||
ftr_params.gray_spans = spanner_sizer;
|
||||
|
||||
/* See http://www.freetype.org/freetype2/docs/glyphs/glyphs-3.html */
|
||||
|
||||
int max_x = INT_MIN; // largest coordinate a pixel has been set at, or the pen was advanced to.
|
||||
int min_x = INT_MAX; // smallest coordinate a pixel has been set at, or the pen was advanced to.
|
||||
int max_y = INT_MIN; // this is max topside bearing along the string.
|
||||
int min_y = INT_MAX; // this is max value of (height - topbearing) along the string.
|
||||
/* Naturally, the above comments swap their meaning between horizontal and vertical scripts,
|
||||
since the pen changes the axis it is advanced along.
|
||||
However, their differences still make up the bounding box for the string.
|
||||
Also note that all this is in FT coordinate system where y axis points upwards.
|
||||
*/
|
||||
|
||||
int sizer_x = 0;
|
||||
int sizer_y = 0; /* in FT coordinate system. */
|
||||
|
||||
printf("----------------------------------------------------\n");
|
||||
for (unsigned j = 0; j < glyph_count; ++j)
|
||||
{
|
||||
hb_ot_layout_glyph_class_t glyph_type = hb_ot_layout_get_glyph_class(hb_font_get_face(hb_ft_font[i]), glyph_info[j].codepoint);
|
||||
hb_glyph_flags_t glyph_type_flags = hb_glyph_info_get_glyph_flags(&glyph_info[j]);
|
||||
printf(
|
||||
"glyph(%s, flags: %d): gid:%d, cluster:%d, [%d, %d, %d, %d, %d]\n", num_glyph_types[glyph_type], glyph_type_flags, (int)glyph_info[j].codepoint, (int)glyph_info[j].cluster,
|
||||
glyph_pos[j].x_advance, glyph_pos[j].y_advance, glyph_pos[j].x_offset, glyph_pos[j].y_offset, glyph_pos[j].var);
|
||||
}
|
||||
|
||||
FT_Error fterr;
|
||||
for (unsigned j = 0; j < glyph_count; ++j)
|
||||
{
|
||||
if ((fterr = FT_Load_Glyph(ft_face[i], glyph_info[j].codepoint, 0)))
|
||||
{
|
||||
printf("load %08x failed fterr=%d.\n", glyph_info[j].codepoint, fterr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ft_face[i]->glyph->format != FT_GLYPH_FORMAT_OUTLINE)
|
||||
{
|
||||
printf("glyph->format = %4s\n", (char *)&ft_face[i]->glyph->format);
|
||||
}
|
||||
else
|
||||
{
|
||||
int gx = sizer_x + (glyph_pos[j].x_offset / 64);
|
||||
int gy = sizer_y + (glyph_pos[j].y_offset / 64); // note how the sign differs from the rendering pass
|
||||
|
||||
stuffbaton.min_span_x = INT_MAX;
|
||||
stuffbaton.max_span_x = INT_MIN;
|
||||
stuffbaton.min_y = INT_MAX;
|
||||
stuffbaton.max_y = INT_MIN;
|
||||
|
||||
if ((fterr = FT_Outline_Render(ft_library, &ft_face[i]->glyph->outline, &ftr_params)))
|
||||
printf("FT_Outline_Render() failed err=%d\n", fterr);
|
||||
|
||||
if (stuffbaton.min_span_x != INT_MAX)
|
||||
{
|
||||
/* Update values if the spanner was actually called. */
|
||||
if (min_x > stuffbaton.min_span_x + gx)
|
||||
min_x = stuffbaton.min_span_x + gx;
|
||||
|
||||
if (max_x < stuffbaton.max_span_x + gx)
|
||||
max_x = stuffbaton.max_span_x + gx;
|
||||
|
||||
if (min_y > stuffbaton.min_y + gy)
|
||||
min_y = stuffbaton.min_y + gy;
|
||||
|
||||
if (max_y < stuffbaton.max_y + gy)
|
||||
max_y = stuffbaton.max_y + gy;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The spanner wasn't called at all - an empty glyph, like space. */
|
||||
if (min_x > gx)
|
||||
min_x = gx;
|
||||
if (max_x < gx)
|
||||
max_x = gx;
|
||||
if (min_y > gy)
|
||||
min_y = gy;
|
||||
if (max_y < gy)
|
||||
max_y = gy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sizer_x += glyph_pos[j].x_advance / 64;
|
||||
sizer_y += glyph_pos[j].y_advance / 64; // note how the sign differs from the rendering pass
|
||||
}
|
||||
/* Still have to take into account last glyph's advance. Or not? */
|
||||
if (min_x > sizer_x)
|
||||
min_x = sizer_x;
|
||||
if (max_x < sizer_x)
|
||||
max_x = sizer_x;
|
||||
if (min_y > sizer_y)
|
||||
min_y = sizer_y;
|
||||
if (max_y < sizer_y)
|
||||
max_y = sizer_y;
|
||||
|
||||
/* The bounding box */
|
||||
int bbox_w = max_x - min_x;
|
||||
int bbox_h = max_y - min_y;
|
||||
|
||||
/* Two offsets below position the bounding box with respect to the 'origin',
|
||||
which is sort of origin of string's first glyph.
|
||||
|
||||
baseline_offset - offset perpendecular to the baseline to the topmost (horizontal),
|
||||
or leftmost (vertical) pixel drawn.
|
||||
|
||||
baseline_shift - offset along the baseline, from the first drawn glyph's origin
|
||||
to the leftmost (horizontal), or topmost (vertical) pixel drawn.
|
||||
|
||||
Thus those offsets allow positioning the bounding box to fit the rendered string,
|
||||
as they are in fact offsets from the point given to the renderer, to the top left
|
||||
corner of the bounding box.
|
||||
|
||||
NB: baseline is defined as y==0 for horizontal and x==0 for vertical scripts.
|
||||
(0,0) here is where the first glyph's origin ended up after shaping, not taking
|
||||
into account glyph_pos[0].xy_offset (yeah, my head hurts too).
|
||||
*/
|
||||
|
||||
int baseline_offset;
|
||||
int baseline_shift;
|
||||
|
||||
if (HB_DIRECTION_IS_HORIZONTAL(hb_buffer_get_direction(buf)))
|
||||
{
|
||||
baseline_offset = max_y;
|
||||
baseline_shift = min_x;
|
||||
}
|
||||
if (HB_DIRECTION_IS_VERTICAL(hb_buffer_get_direction(buf)))
|
||||
{
|
||||
baseline_offset = min_x;
|
||||
baseline_shift = max_y;
|
||||
}
|
||||
|
||||
/* The pen/baseline start coordinates in window coordinate system
|
||||
- with those text placement in the window is controlled.
|
||||
- note that for RTL scripts pen still goes LTR */
|
||||
int x = 0, y = 50 + i * 75;
|
||||
if (i == ENGLISH)
|
||||
{
|
||||
x = 20;
|
||||
} /* left justify */
|
||||
if (i == ARABIC)
|
||||
{
|
||||
x = width - bbox_w - 20;
|
||||
} /* right justify */
|
||||
if (i == CHINESE)
|
||||
{
|
||||
x = width / 2 - bbox_w / 2;
|
||||
} /* center, and for TTB script h_advance is half-width. */
|
||||
|
||||
/* Draw baseline and the bounding box */
|
||||
/* The below is complicated since we simultaneously
|
||||
convert to the window coordinate system. */
|
||||
int left, right, top, bottom;
|
||||
|
||||
if (HB_DIRECTION_IS_HORIZONTAL(hb_buffer_get_direction(buf)))
|
||||
{
|
||||
/* bounding box in window coordinates without offsets */
|
||||
left = x;
|
||||
right = x + bbox_w;
|
||||
top = y - bbox_h;
|
||||
bottom = y;
|
||||
|
||||
/* apply offsets */
|
||||
left += baseline_shift;
|
||||
right += baseline_shift;
|
||||
top -= baseline_offset - bbox_h;
|
||||
bottom -= baseline_offset - bbox_h;
|
||||
|
||||
/* draw the baseline */
|
||||
hline(&oDrawer, x, x + bbox_w, y, 0x0000ff00);
|
||||
}
|
||||
|
||||
if (HB_DIRECTION_IS_VERTICAL(hb_buffer_get_direction(buf)))
|
||||
{
|
||||
left = x;
|
||||
right = x + bbox_w;
|
||||
top = y;
|
||||
bottom = y + bbox_h;
|
||||
|
||||
left += baseline_offset;
|
||||
right += baseline_offset;
|
||||
top -= baseline_shift;
|
||||
bottom -= baseline_shift;
|
||||
|
||||
vline(&oDrawer, y, y + bbox_h, x, 0x0000ff00);
|
||||
}
|
||||
|
||||
/* +1/-1 are for the bbox borders be the next pixel outside the bbox itself */
|
||||
hline(&oDrawer, left - 1, right + 1, top - 1, 0xffff0000);
|
||||
hline(&oDrawer, left - 1, right + 1, bottom + 1, 0xffff0000);
|
||||
vline(&oDrawer, top - 1, bottom + 1, left - 1, 0xffff0000);
|
||||
vline(&oDrawer, top - 1, bottom + 1, right + 1, 0xffff0000);
|
||||
|
||||
/* set rendering spanner */
|
||||
ftr_params.gray_spans = spanner;
|
||||
|
||||
/* initialize rendering part of the baton */
|
||||
stuffbaton.pixels = NULL;
|
||||
stuffbaton.first_pixel = (uint32_t *)oDrawer.pixels;
|
||||
stuffbaton.last_pixel = (uint32_t *)(((uint8_t *)oDrawer.pixels) + oDrawer.pitch * oDrawer.height);
|
||||
stuffbaton.pitch = oDrawer.pitch;
|
||||
stuffbaton.rshift = oDrawer.Rshift;
|
||||
stuffbaton.gshift = oDrawer.Gshift;
|
||||
stuffbaton.bshift = oDrawer.Bshift;
|
||||
|
||||
/* render */
|
||||
for (unsigned j = 0; j < glyph_count; ++j)
|
||||
{
|
||||
if ((fterr = FT_Load_Glyph(ft_face[i], glyph_info[j].codepoint, 0)))
|
||||
{
|
||||
printf("load %08x failed fterr=%d.\n", glyph_info[j].codepoint, fterr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ft_face[i]->glyph->format != FT_GLYPH_FORMAT_OUTLINE)
|
||||
{
|
||||
printf("glyph->format = %4s\n", (char *)&ft_face[i]->glyph->format);
|
||||
}
|
||||
else
|
||||
{
|
||||
int gx = x + (glyph_pos[j].x_offset / 64);
|
||||
int gy = y - (glyph_pos[j].y_offset / 64);
|
||||
|
||||
stuffbaton.pixels = (uint32_t *)(((uint8_t *)oDrawer.pixels) + gy * oDrawer.pitch) + gx;
|
||||
|
||||
if ((fterr = FT_Outline_Render(ft_library, &ft_face[i]->glyph->outline, &ftr_params)))
|
||||
printf("FT_Outline_Render() failed err=%d\n", fterr);
|
||||
}
|
||||
}
|
||||
|
||||
x += glyph_pos[j].x_advance / 64;
|
||||
y -= glyph_pos[j].y_advance / 64;
|
||||
}
|
||||
|
||||
/* clean up the buffer, but don't kill it just yet */
|
||||
hb_buffer_clear_contents(buf);
|
||||
}
|
||||
|
||||
/* Cleanup */
|
||||
hb_buffer_destroy(buf);
|
||||
for (int i = 0; i < NUM_EXAMPLES; ++i)
|
||||
hb_font_destroy(hb_ft_font[i]);
|
||||
|
||||
FT_Done_FreeType(ft_library);
|
||||
|
||||
oDrawer.Save();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
CONFIG -= qt
|
||||
TARGET = test
|
||||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../../../../core
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
include($$CORE_ROOT_DIR/DesktopEditor/graphics/pro/freetype.pri)
|
||||
include($$CORE_ROOT_DIR/Common/3dParty/harfbuzz/harfbuzz.pri)
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
ADD_DEPENDENCY(UnicodeConverter, kernel, graphics)
|
||||
DESTDIR = $$PWD/build
|
||||
|
||||
|
||||
4
Common/3dParty/heif/.gitignore
vendored
4
Common/3dParty/heif/.gitignore
vendored
@ -1,4 +0,0 @@
|
||||
x265_git
|
||||
libde265
|
||||
libheif
|
||||
ios-cmake
|
||||
@ -1,42 +0,0 @@
|
||||
DEFINES += LIBHEIF_STATIC_BUILD
|
||||
|
||||
HEIF_BUILDS_PLATFORM_PREFIX = $$CORE_BUILDS_PLATFORM_PREFIX
|
||||
core_ios : xcframework_platform_ios_simulator {
|
||||
HEIF_BUILDS_PLATFORM_PREFIX = ios_simulator
|
||||
}
|
||||
|
||||
HEIF_BUILD_PATH = $$PWD/libheif/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$PWD/libheif/libheif/api \
|
||||
$$HEIF_BUILD_PATH # for heif_version.h
|
||||
|
||||
core_windows {
|
||||
core_debug {
|
||||
BUILD_TYPE = Debug
|
||||
} else {
|
||||
BUILD_TYPE = Release
|
||||
}
|
||||
|
||||
LIBS += \
|
||||
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/$$BUILD_TYPE -lx265-static \
|
||||
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265/$$BUILD_TYPE -llibde265 \
|
||||
-L$$HEIF_BUILD_PATH/libheif/$$BUILD_TYPE -lheif
|
||||
}
|
||||
|
||||
core_linux | core_android {
|
||||
# we need to wrap x265 and de265 libraries in `whole-archive` flags to avoid "undefined symbol" errors when later linking with graphics.so
|
||||
LIBS += \
|
||||
-Wl,--whole-archive \
|
||||
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX -lx265 \
|
||||
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265 -lde265 \
|
||||
-Wl,--no-whole-archive \
|
||||
-L$$HEIF_BUILD_PATH/libheif -lheif
|
||||
}
|
||||
|
||||
core_mac | core_ios {
|
||||
LIBS += \
|
||||
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX -lx265 \
|
||||
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265 -lde265 \
|
||||
-L$$HEIF_BUILD_PATH/libheif -lheif
|
||||
}
|
||||
@ -3,8 +3,6 @@ DEPENDPATH += $$PWD
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../../..
|
||||
|
||||
include($$CORE_ROOT_DIR/Common/3dParty/boost/boost.pri)
|
||||
|
||||
css_calculator_without_xhtml {
|
||||
HEADERS += \
|
||||
$$PWD/src/CCssCalculator_Private.h \
|
||||
|
||||
@ -7,26 +7,25 @@
|
||||
#include <iterator>
|
||||
#include <map>
|
||||
|
||||
#include <iostream>
|
||||
#include "../../../../../DesktopEditor/common/File.h"
|
||||
#include "StaticFunctions.h"
|
||||
#include "ConstValues.h"
|
||||
|
||||
#define DEFAULT_FONT_SIZE 12
|
||||
#define DEFAULT_FONT_SIZE 14
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
typedef std::map<std::wstring, std::wstring>::const_iterator styles_iterator;
|
||||
|
||||
CCompiledStyle::CCompiledStyle()
|
||||
: m_nDpi(96), m_UnitMeasure(Point), m_dCoreFontSize(DEFAULT_FONT_SIZE)
|
||||
CCompiledStyle::CCompiledStyle() : m_nDpi(96), m_UnitMeasure(Point)
|
||||
{}
|
||||
|
||||
CCompiledStyle::CCompiledStyle(const CCompiledStyle& oStyle) :
|
||||
m_arParentsStyles(oStyle.m_arParentsStyles), m_sId(oStyle.m_sId),
|
||||
m_nDpi(oStyle.m_nDpi), m_UnitMeasure(oStyle.m_UnitMeasure), m_dCoreFontSize(oStyle.m_dCoreFontSize),
|
||||
m_nDpi(oStyle.m_nDpi), m_UnitMeasure(oStyle.m_UnitMeasure),
|
||||
m_oFont(oStyle.m_oFont), m_oMargin(oStyle.m_oMargin), m_oPadding(oStyle.m_oPadding), m_oBackground(oStyle.m_oBackground),
|
||||
m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay), m_oTransform(oStyle.m_oTransform)
|
||||
{}
|
||||
m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay){}
|
||||
|
||||
CCompiledStyle::~CCompiledStyle()
|
||||
{
|
||||
@ -35,11 +34,6 @@ namespace NSCSS
|
||||
|
||||
CCompiledStyle& CCompiledStyle::operator+= (const CCompiledStyle &oElement)
|
||||
{
|
||||
m_arParentsStyles.insert(oElement.m_arParentsStyles.begin(), oElement.m_arParentsStyles.end());
|
||||
|
||||
if (oElement.Empty())
|
||||
return *this;
|
||||
|
||||
m_oBackground += oElement.m_oBackground;
|
||||
m_oBorder += oElement.m_oBorder;
|
||||
m_oFont += oElement.m_oFont;
|
||||
@ -47,10 +41,6 @@ namespace NSCSS
|
||||
m_oPadding += oElement.m_oPadding;
|
||||
m_oText += oElement.m_oText;
|
||||
m_oDisplay += oElement.m_oDisplay;
|
||||
m_oTransform += oElement.m_oTransform;
|
||||
|
||||
if (!oElement.m_sId.empty())
|
||||
m_sId += L'+' + oElement.m_sId;
|
||||
|
||||
return *this;
|
||||
}
|
||||
@ -70,9 +60,6 @@ namespace NSCSS
|
||||
m_oPadding = oElement.m_oPadding;
|
||||
m_oText = oElement.m_oText;
|
||||
m_oDisplay = oElement.m_oDisplay;
|
||||
m_oTransform = oElement.m_oTransform;
|
||||
|
||||
m_arParentsStyles = oElement.m_arParentsStyles;
|
||||
|
||||
return *this;
|
||||
}
|
||||
@ -85,8 +72,7 @@ namespace NSCSS
|
||||
m_oMargin == oStyle.m_oMargin &&
|
||||
m_oPadding == oStyle.m_oPadding &&
|
||||
m_oText == oStyle.m_oText &&
|
||||
m_oDisplay == oStyle.m_oDisplay &&
|
||||
m_oTransform == oStyle.m_oTransform;
|
||||
m_oDisplay == oStyle.m_oDisplay;
|
||||
}
|
||||
|
||||
void CCompiledStyle::StyleEquation(CCompiledStyle &oFirstStyle, CCompiledStyle &oSecondStyle)
|
||||
@ -98,7 +84,6 @@ namespace NSCSS
|
||||
NSProperties::CText ::Equation(oFirstStyle.m_oText, oSecondStyle.m_oText);
|
||||
NSProperties::CBorder ::Equation(oFirstStyle.m_oBorder, oSecondStyle.m_oBorder);
|
||||
NSProperties::CDisplay ::Equation(oFirstStyle.m_oDisplay, oSecondStyle.m_oDisplay);
|
||||
NSProperties::CTransform ::Equation(oFirstStyle.m_oTransform, oSecondStyle.m_oTransform);
|
||||
}
|
||||
|
||||
void CCompiledStyle::SetDpi(const unsigned short &uiDpi)
|
||||
@ -114,8 +99,7 @@ namespace NSCSS
|
||||
bool CCompiledStyle::Empty() const
|
||||
{
|
||||
return m_oBackground.Empty() && m_oBorder.Empty() && m_oFont.Empty() &&
|
||||
m_oMargin.Empty() && m_oPadding.Empty() && m_oText.Empty() &&
|
||||
m_oDisplay.Empty() && m_oTransform.Empty();
|
||||
m_oMargin.Empty() && m_oPadding.Empty() && m_oText.Empty() && m_oDisplay.Empty();
|
||||
}
|
||||
|
||||
void CCompiledStyle::AddPropSel(const std::wstring& sProperty, const std::wstring& sValue, const unsigned int unLevel, const bool& bHardMode)
|
||||
@ -126,10 +110,7 @@ namespace NSCSS
|
||||
void CCompiledStyle::AddStyle(const std::map<std::wstring, std::wstring>& mStyle, const unsigned int unLevel, const bool& bHardMode)
|
||||
{
|
||||
const bool bIsThereBorder = (m_oBorder.Empty()) ? false : true;
|
||||
const double dParentFontSize = (!m_oFont.GetSize().Empty()) ? m_oFont.GetSize().ToDouble(NSCSS::Point) : DEFAULT_FONT_SIZE;
|
||||
|
||||
if (0 == unLevel)
|
||||
m_dCoreFontSize = dParentFontSize;
|
||||
const double dFontSize = (!m_oFont.GetSize().Empty()) ? m_oFont.GetSize().ToDouble(NSCSS::Point) : DEFAULT_FONT_SIZE;
|
||||
|
||||
for (std::pair<std::wstring, std::wstring> pPropertie : mStyle)
|
||||
{
|
||||
@ -141,15 +122,15 @@ namespace NSCSS
|
||||
CASE(L"font"):
|
||||
{
|
||||
m_oFont.SetValue(pPropertie.second, unLevel, bHardMode);
|
||||
m_oFont.UpdateSize(dParentFontSize, m_dCoreFontSize);
|
||||
m_oFont.UpdateLineHeight(dParentFontSize, m_dCoreFontSize);
|
||||
m_oFont.UpdateSize(dFontSize);
|
||||
m_oFont.UpdateLineHeight(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"font-size"):
|
||||
CASE(L"font-size-adjust"):
|
||||
{
|
||||
m_oFont.SetSize(pPropertie.second, unLevel, bHardMode);
|
||||
m_oFont.UpdateSize(dParentFontSize, m_dCoreFontSize);
|
||||
m_oFont.UpdateSize(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"font-stretch"):
|
||||
@ -189,7 +170,7 @@ namespace NSCSS
|
||||
break;
|
||||
|
||||
m_oMargin.SetValues(pPropertie.second, unLevel, bHardMode);
|
||||
m_oMargin.UpdateAll(dParentFontSize, m_dCoreFontSize);
|
||||
m_oMargin.UpdateAll(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"margin-top"):
|
||||
@ -209,7 +190,7 @@ namespace NSCSS
|
||||
break;
|
||||
|
||||
m_oMargin.SetRight(pPropertie.second, unLevel, bHardMode);
|
||||
m_oMargin.UpdateRight(dParentFontSize, m_dCoreFontSize);
|
||||
m_oMargin.UpdateRight(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"margin-bottom"):
|
||||
@ -219,7 +200,7 @@ namespace NSCSS
|
||||
break;
|
||||
|
||||
m_oMargin.SetBottom(pPropertie.second, unLevel, bHardMode);
|
||||
m_oMargin.UpdateBottom(dParentFontSize, m_dCoreFontSize);
|
||||
m_oMargin.UpdateBottom(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"margin-left"):
|
||||
@ -230,7 +211,7 @@ namespace NSCSS
|
||||
break;
|
||||
|
||||
m_oMargin.SetLeft(pPropertie.second, unLevel, bHardMode);
|
||||
m_oMargin.UpdateLeft(dParentFontSize, m_dCoreFontSize);
|
||||
m_oMargin.UpdateLeft(dFontSize);
|
||||
break;
|
||||
}
|
||||
//PADDING
|
||||
@ -238,35 +219,35 @@ namespace NSCSS
|
||||
CASE(L"mso-padding-alt"):
|
||||
{
|
||||
m_oPadding.SetValues(pPropertie.second, unLevel, bHardMode);
|
||||
m_oPadding.UpdateAll(dParentFontSize, m_dCoreFontSize);
|
||||
m_oPadding.UpdateAll(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"padding-top"):
|
||||
CASE(L"mso-padding-top-alt"):
|
||||
{
|
||||
m_oPadding.SetTop(pPropertie.second, unLevel, bHardMode);
|
||||
m_oPadding.UpdateTop(dParentFontSize, m_dCoreFontSize);
|
||||
m_oPadding.UpdateTop(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"padding-right"):
|
||||
CASE(L"mso-padding-right-alt"):
|
||||
{
|
||||
m_oPadding.SetRight(pPropertie.second, unLevel, bHardMode);
|
||||
m_oPadding.UpdateRight(dParentFontSize, m_dCoreFontSize);
|
||||
m_oPadding.UpdateRight(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"padding-bottom"):
|
||||
CASE(L"mso-padding-bottom-alt"):
|
||||
{
|
||||
m_oPadding.SetBottom(pPropertie.second, unLevel, bHardMode);
|
||||
m_oPadding.UpdateBottom(dParentFontSize, m_dCoreFontSize);
|
||||
m_oPadding.UpdateBottom(dFontSize);
|
||||
break;
|
||||
}
|
||||
CASE(L"padding-left"):
|
||||
CASE(L"mso-padding-left-alt"):
|
||||
{
|
||||
m_oPadding.SetLeft(pPropertie.second, unLevel, bHardMode);
|
||||
m_oPadding.UpdateLeft(dParentFontSize, m_dCoreFontSize);
|
||||
m_oPadding.UpdateLeft(dFontSize);
|
||||
break;
|
||||
}
|
||||
// TEXT
|
||||
@ -320,7 +301,6 @@ namespace NSCSS
|
||||
}
|
||||
//BORDER TOP
|
||||
CASE(L"border-top"):
|
||||
CASE(L"mso-border-top-alt"):
|
||||
{
|
||||
m_oBorder.SetTopSide(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
@ -342,7 +322,6 @@ namespace NSCSS
|
||||
}
|
||||
//BORDER RIGHT
|
||||
CASE(L"border-right"):
|
||||
CASE(L"mso-border-right-alt"):
|
||||
{
|
||||
m_oBorder.SetRightSide(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
@ -364,7 +343,6 @@ namespace NSCSS
|
||||
}
|
||||
//BORDER bottom
|
||||
CASE(L"border-bottom"):
|
||||
CASE(L"mso-border-bottom-alt"):
|
||||
{
|
||||
m_oBorder.SetBottomSide(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
@ -386,7 +364,6 @@ namespace NSCSS
|
||||
}
|
||||
//BORDER LEFT
|
||||
CASE(L"border-left"):
|
||||
CASE(L"mso-border-left-alt"):
|
||||
{
|
||||
m_oBorder.SetLeftSide(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
@ -445,17 +422,6 @@ namespace NSCSS
|
||||
m_oDisplay.SetVAlign(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
}
|
||||
CASE(L"white-space"):
|
||||
{
|
||||
m_oDisplay.SetWhiteSpace(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
}
|
||||
//TRANSFORM
|
||||
CASE(L"transform"):
|
||||
{
|
||||
m_oTransform.SetMatrix(pPropertie.second, unLevel, bHardMode);
|
||||
break;
|
||||
}
|
||||
default: AddOtherStyle(pPropertie, unLevel, bHardMode);
|
||||
}
|
||||
}
|
||||
@ -536,7 +502,7 @@ namespace NSCSS
|
||||
{
|
||||
return m_sId;
|
||||
}
|
||||
|
||||
|
||||
bool CCompiledStyle::HaveThisParent(const std::wstring &wsParentName) const
|
||||
{
|
||||
return m_arParentsStyles.end() != m_arParentsStyles.find(wsParentName);
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#ifndef CCOMPILEDSTYLE_H
|
||||
#define CCOMPILEDSTYLE_H
|
||||
|
||||
#include "CssCalculator_global.h"
|
||||
#include "ConstValues.h"
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
@ -19,7 +22,6 @@ namespace NSCSS
|
||||
unsigned short int m_nDpi;
|
||||
UnitMeasure m_UnitMeasure;
|
||||
|
||||
double m_dCoreFontSize;
|
||||
public:
|
||||
NSProperties::CFont m_oFont;
|
||||
NSProperties::CIndent m_oMargin;
|
||||
@ -28,12 +30,11 @@ namespace NSCSS
|
||||
NSProperties::CText m_oText;
|
||||
NSProperties::CBorder m_oBorder;
|
||||
NSProperties::CDisplay m_oDisplay;
|
||||
NSProperties::CTransform m_oTransform;
|
||||
|
||||
CCompiledStyle();
|
||||
CCompiledStyle(const CCompiledStyle& oStyle);
|
||||
|
||||
virtual ~CCompiledStyle();
|
||||
~CCompiledStyle();
|
||||
|
||||
void SetDpi(const unsigned short& uiDpi);
|
||||
void SetUnitMeasure(const UnitMeasure& enUnitMeasure);
|
||||
|
||||
@ -13,14 +13,14 @@ namespace NSCSS
|
||||
delete m_pInternal;
|
||||
}
|
||||
|
||||
bool CCssCalculator::CalculateCompiledStyle(std::vector<CNode>& arSelectors) const
|
||||
CCompiledStyle CCssCalculator::GetCompiledStyle(const std::vector<CNode> &arSelectors, const bool& bIsSettings, const UnitMeasure& unitMeasure) const
|
||||
{
|
||||
return m_pInternal->CalculateCompiledStyle(arSelectors);
|
||||
return m_pInternal->GetCompiledStyle(arSelectors, bIsSettings, unitMeasure);
|
||||
}
|
||||
|
||||
std::wstring CCssCalculator::CalculateStyleId(const CNode& oNode)
|
||||
bool CCssCalculator::GetCompiledStyle(CCompiledStyle &oStyle, const std::vector<CNode> &arSelectors, const bool &bIsSettings, const UnitMeasure &unitMeasure) const
|
||||
{
|
||||
return m_pInternal->CalculateStyleId(oNode);
|
||||
return m_pInternal->GetCompiledStyle(oStyle, arSelectors, bIsSettings, unitMeasure);
|
||||
}
|
||||
|
||||
bool CCssCalculator::CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors)
|
||||
@ -43,11 +43,26 @@ namespace NSCSS
|
||||
m_pInternal->AddStylesFromFile(wsFileName);
|
||||
}
|
||||
|
||||
void CCssCalculator::SetUnitMeasure(const UnitMeasure& nType)
|
||||
{
|
||||
m_pInternal->SetUnitMeasure(nType);
|
||||
}
|
||||
|
||||
void CCssCalculator::SetDpi(const unsigned short int& nValue)
|
||||
{
|
||||
m_pInternal->SetDpi(nValue);
|
||||
}
|
||||
|
||||
void CCssCalculator::SetBodyTree(const CTree &oTree)
|
||||
{
|
||||
m_pInternal->SetBodyTree(oTree);
|
||||
}
|
||||
|
||||
UnitMeasure CCssCalculator::GetUnitMeasure() const
|
||||
{
|
||||
return m_pInternal->GetUnitMeasure();
|
||||
}
|
||||
|
||||
std::wstring CCssCalculator::GetEncoding() const
|
||||
{
|
||||
return m_pInternal->GetEncoding();
|
||||
@ -58,31 +73,6 @@ namespace NSCSS
|
||||
return m_pInternal->GetDpi();
|
||||
}
|
||||
|
||||
bool CCssCalculator::HaveStylesById(const std::wstring& wsId) const
|
||||
{
|
||||
return m_pInternal->HaveStylesById(wsId);
|
||||
}
|
||||
|
||||
void CCssCalculator::ClearPageData()
|
||||
{
|
||||
m_pInternal->ClearPageData();
|
||||
}
|
||||
|
||||
void CCssCalculator::ClearEmbeddedStyles()
|
||||
{
|
||||
m_pInternal->ClearEmbeddedStyles();
|
||||
}
|
||||
|
||||
void CCssCalculator::ClearAllowedStyleFiles()
|
||||
{
|
||||
m_pInternal->ClearAllowedStyleFiles();
|
||||
}
|
||||
|
||||
void CCssCalculator::ClearStylesFromFile(const std::wstring& wsFilePath)
|
||||
{
|
||||
m_pInternal->ClearStylesFromFile(wsFilePath);
|
||||
}
|
||||
|
||||
void CCssCalculator::Clear()
|
||||
{
|
||||
m_pInternal->Clear();
|
||||
|
||||
@ -2,8 +2,10 @@
|
||||
#define CCSSCALCULATOR_H
|
||||
|
||||
#include "CssCalculator_global.h"
|
||||
#include "StyleProperties.h"
|
||||
#include "CNode.h"
|
||||
#include "CCompiledStyle.h"
|
||||
#include "ConstValues.h"
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
namespace NSCSS
|
||||
@ -17,9 +19,9 @@ namespace NSCSS
|
||||
CCssCalculator();
|
||||
~CCssCalculator();
|
||||
|
||||
bool CalculateCompiledStyle(std::vector<CNode>& arSelectors) const;
|
||||
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point) const;
|
||||
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point) const;
|
||||
|
||||
std::wstring CalculateStyleId(const CNode& oNode);
|
||||
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
|
||||
|
||||
// void AddStyle(const std::vector<std::string>& sSelectors, const std::string& sStyle);
|
||||
@ -27,17 +29,14 @@ namespace NSCSS
|
||||
void AddStyles (const std::wstring& wsStyle);
|
||||
void AddStylesFromFile(const std::wstring& wsFileName);
|
||||
|
||||
void SetUnitMeasure(const UnitMeasure& nType);
|
||||
void SetDpi(const unsigned short int& nValue);
|
||||
void SetBodyTree(const CTree &oTree);
|
||||
|
||||
UnitMeasure GetUnitMeasure() const;
|
||||
std::wstring GetEncoding() const;
|
||||
unsigned short int GetDpi() const;
|
||||
|
||||
bool HaveStylesById(const std::wstring& wsId) const;
|
||||
|
||||
void ClearPageData();
|
||||
void ClearEmbeddedStyles();
|
||||
void ClearAllowedStyleFiles();
|
||||
void ClearStylesFromFile(const std::wstring& wsFilePath);
|
||||
void Clear();
|
||||
};
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -3,9 +3,11 @@
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <list>
|
||||
#include <functional>
|
||||
#include "CElement.h"
|
||||
#include "StyleProperties.h"
|
||||
#include "ConstValues.h"
|
||||
#include "CUnitMeasureConverter.h"
|
||||
#include "../../katana-parser/src/katana.h"
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
@ -14,46 +16,16 @@
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
class CStyleStorage
|
||||
class CCssCalculator_Private
|
||||
{
|
||||
public:
|
||||
CStyleStorage();
|
||||
~CStyleStorage();
|
||||
unsigned short int m_nDpi;
|
||||
unsigned short int m_nCountNodes;
|
||||
UnitMeasure m_UnitMeasure;
|
||||
|
||||
void Clear();
|
||||
std::list<std::wstring> m_arFiles;
|
||||
|
||||
void AddStyles(const std::string& sStyle);
|
||||
void AddStyles(const std::wstring& wsStyle);
|
||||
void AddStylesFromFile(const std::wstring& wsFileName);
|
||||
std::map<std::wstring, CElement*> m_mData;
|
||||
|
||||
void ClearEmbeddedStyles();
|
||||
void ClearDefaultStyles();
|
||||
void ClearAllowedStyleFiles();
|
||||
void ClearStylesFromFile(const std::wstring& wsFileName);
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
void AddPageData(const std::wstring& wsPageName, const std::wstring& wsStyles);
|
||||
void SetPageData(NSProperties::CPage& oPage, const std::map<std::wstring, std::wstring>& mData, unsigned int unLevel, bool bHardMode = false);
|
||||
std::map<std::wstring, std::wstring> GetPageData(const std::wstring& wsPageName);
|
||||
void ClearPageData();
|
||||
#endif
|
||||
|
||||
const CElement* FindElement(const std::wstring& wsSelector) const;
|
||||
const CElement* FindDefaultElement(const std::wstring& wsSelector) const;
|
||||
private:
|
||||
typedef struct
|
||||
{
|
||||
std::wstring m_wsStyleFilepath;
|
||||
std::map<std::wstring, CElement*> m_mStyleData;
|
||||
} TStyleFileData;
|
||||
|
||||
std::set<std::wstring> m_arEmptyStyleFiles;
|
||||
std::set<std::wstring> m_arAllowedStyleFiles;
|
||||
std::vector<TStyleFileData*> m_arStyleFiles;
|
||||
std::map<std::wstring, CElement*> m_mEmbeddedStyleData;
|
||||
std::map<std::wstring, CElement*> m_mDefaultStyleData;
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
typedef struct
|
||||
{
|
||||
std::vector<std::wstring> m_wsNames;
|
||||
@ -61,14 +33,29 @@ namespace NSCSS
|
||||
} TPageData;
|
||||
|
||||
std::vector<TPageData> m_arPageDatas;
|
||||
|
||||
std::map<StatistickElement, unsigned int> *m_mStatictics; // Количество повторений свойств id и style у селекторов
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
std::map<std::vector<CNode>, CCompiledStyle> m_mUsedStyles;
|
||||
|
||||
std::map<std::wstring, std::wstring> GetPageData(const std::wstring& wsPageName);
|
||||
void SetPageData(NSProperties::CPage& oPage, const std::map<std::wstring, std::wstring>& mData, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
std::vector<std::wstring> CalculateAllNodes(const std::vector<CNode>& arSelectors);
|
||||
|
||||
void FindPrevAndKindElements(const CElement* pElement, const std::vector<std::wstring>& arNextNodes, std::vector<CElement*>& arFindedElements, const std::wstring& wsName, const std::vector<std::wstring>& arClasses = {});
|
||||
std::vector<CElement*> FindElements(std::vector<std::wstring>& arNodes, std::vector<std::wstring>& arNextNodes, bool bIsSettings);
|
||||
#endif
|
||||
private:
|
||||
void AddStyles(const std::string& sStyle, std::map<std::wstring, CElement*>& mStyleData);
|
||||
|
||||
void GetStylesheet(const KatanaStylesheet* oStylesheet, std::map<std::wstring, CElement*>& mStyleData);
|
||||
void GetRule(const KatanaRule* oRule, std::map<std::wstring, CElement*>& mStyleData);
|
||||
std::wstring m_sEncoding;
|
||||
|
||||
void GetStyleRule(const KatanaStyleRule* oRule, std::map<std::wstring, CElement*>& mStyleData);
|
||||
void AddPageData(const std::wstring& wsPageName, const std::wstring& wsStyles);
|
||||
|
||||
void GetStylesheet(const KatanaStylesheet* oStylesheet);
|
||||
void GetRule(const KatanaRule* oRule);
|
||||
|
||||
void GetStyleRule(const KatanaStyleRule* oRule);
|
||||
|
||||
std::wstring GetValueList(const KatanaArray* oValues);
|
||||
|
||||
@ -78,63 +65,35 @@ namespace NSCSS
|
||||
std::map<std::wstring, std::wstring> GetDeclarationList(const KatanaArray* oDeclarations) const;
|
||||
std::pair<std::wstring, std::wstring> GetDeclaration(const KatanaDeclaration* oDecl) const;
|
||||
|
||||
void GetOutputData(KatanaOutput* oOutput, std::map<std::wstring, CElement*>& mStyleData);
|
||||
void GetOutputData(KatanaOutput* oOutput);
|
||||
|
||||
const CElement* FindSelectorFromStyleData(const std::wstring& wsSelector, const std::map<std::wstring, CElement*>& mStyleData) const;
|
||||
|
||||
void InitDefaultStyles();
|
||||
};
|
||||
|
||||
class CCssCalculator_Private
|
||||
{
|
||||
unsigned short int m_nDpi;
|
||||
unsigned short int m_nCountNodes;
|
||||
|
||||
CStyleStorage m_oStyleStorage;
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
std::map<std::vector<CNode>, CCompiledStyle> m_mUsedStyles;
|
||||
|
||||
void SetPageData(NSProperties::CPage& oPage, const std::map<std::wstring, std::wstring>& mData, unsigned int unLevel, bool bHardMode = false);
|
||||
std::map<std::wstring, std::wstring> GetPageData(const std::wstring &wsPageName);
|
||||
#endif
|
||||
|
||||
void FindPrevAndKindElements(const CElement* pElement, const std::vector<std::wstring>& arNextNodes, std::vector<const CElement*>& arFindedElements, const std::wstring& wsName, const std::vector<std::wstring>& arClasses = {});
|
||||
|
||||
std::wstring m_sEncoding;
|
||||
public:
|
||||
CCssCalculator_Private();
|
||||
~CCssCalculator_Private();
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
bool CalculateCompiledStyle(std::vector<CNode>& arSelectors);
|
||||
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point);
|
||||
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point);
|
||||
|
||||
std::wstring CalculateStyleId(const CNode& oNode);
|
||||
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
|
||||
|
||||
void ClearPageData();
|
||||
#endif
|
||||
|
||||
std::vector<std::wstring> CalculateAllNodes(const std::vector<CNode>& arSelectors, unsigned int unStart, unsigned int unEnd);
|
||||
std::vector<const CElement*> FindElements(std::vector<std::wstring>& arNodes, std::vector<std::wstring>& arNextNodes);
|
||||
|
||||
void AddStyles(const std::string& sStyle);
|
||||
void AddStyles(const std::wstring& wsStyle);
|
||||
void AddStylesFromFile(const std::wstring& wsFileName);
|
||||
|
||||
void SetUnitMeasure(const UnitMeasure& nType);
|
||||
void SetDpi(unsigned short int nValue);
|
||||
void SetBodyTree(const CTree &oTree);
|
||||
|
||||
UnitMeasure GetUnitMeasure() const;
|
||||
std::wstring GetEncoding() const;
|
||||
unsigned short int GetDpi() const;
|
||||
|
||||
bool HaveStylesById(const std::wstring& wsId) const;
|
||||
const std::map<std::wstring, CElement*>* GetData() const;
|
||||
|
||||
void ClearEmbeddedStyles();
|
||||
void ClearAllowedStyleFiles();
|
||||
void ClearStylesFromFile(const std::wstring& wsFilePath);
|
||||
void Clear();
|
||||
};
|
||||
|
||||
inline bool IsTableElement(const std::wstring& wsNameTag);
|
||||
};
|
||||
}
|
||||
#endif // CCSSCALCULATOR_PRIVATE_H
|
||||
|
||||
@ -9,13 +9,6 @@ namespace NSCSS
|
||||
CElement::CElement()
|
||||
{
|
||||
}
|
||||
|
||||
CElement::CElement(const std::wstring& wsSelector, std::map<std::wstring, std::wstring> mStyle)
|
||||
: m_mStyle(mStyle), m_sSelector(wsSelector), m_sFullSelector(wsSelector)
|
||||
{
|
||||
UpdateWeight();
|
||||
}
|
||||
|
||||
CElement::~CElement()
|
||||
{
|
||||
for (CElement* oElement : m_arPrevElements)
|
||||
@ -25,6 +18,7 @@ namespace NSCSS
|
||||
continue;
|
||||
|
||||
m_mStyle.clear();
|
||||
|
||||
}
|
||||
|
||||
std::wstring CElement::GetSelector() const
|
||||
@ -46,7 +40,6 @@ namespace NSCSS
|
||||
{
|
||||
m_sSelector = sSelector;
|
||||
m_sFullSelector = m_sSelector;
|
||||
UpdateWeight();
|
||||
}
|
||||
|
||||
void NSCSS::CElement::AddPropertie(const std::wstring &sName, const std::wstring& sValue)
|
||||
@ -74,7 +67,6 @@ namespace NSCSS
|
||||
|
||||
m_arPrevElements.push_back(oPrevElement);
|
||||
oPrevElement->m_sFullSelector += L' ' + m_sFullSelector;
|
||||
UpdateWeight();
|
||||
}
|
||||
|
||||
void CElement::AddKinElement(CElement *oKinElement)
|
||||
@ -84,7 +76,6 @@ namespace NSCSS
|
||||
|
||||
m_arKinElements.push_back(oKinElement);
|
||||
oKinElement->m_sFullSelector += m_sFullSelector;
|
||||
oKinElement->UpdateWeight();
|
||||
}
|
||||
|
||||
std::map<std::wstring, std::wstring> CElement::GetStyle() const
|
||||
@ -182,14 +173,14 @@ namespace NSCSS
|
||||
return arElements;
|
||||
}
|
||||
|
||||
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::const_iterator& oNodesBegin, const std::vector<std::wstring>::const_iterator& oNodesEnd) const
|
||||
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::const_reverse_iterator& oNodesRBegin, const std::vector<std::wstring>::const_reverse_iterator& oNodesREnd) const
|
||||
{
|
||||
if (oNodesBegin >= oNodesEnd || m_arPrevElements.empty())
|
||||
if (oNodesRBegin >= oNodesREnd || m_arPrevElements.empty())
|
||||
return std::vector<CElement*>();
|
||||
|
||||
std::vector<CElement*> arElements;
|
||||
|
||||
for (std::vector<std::wstring>::const_iterator iWord = oNodesBegin; iWord != oNodesEnd; ++iWord)
|
||||
for (std::vector<std::wstring>::const_reverse_iterator iWord = oNodesRBegin; iWord != oNodesREnd; ++iWord)
|
||||
{
|
||||
if ((*iWord)[0] == L'.' && ((*iWord).find(L" ") != std::wstring::npos))
|
||||
{
|
||||
@ -201,7 +192,7 @@ namespace NSCSS
|
||||
if (oPrevElement->m_sSelector == wsClass)
|
||||
{
|
||||
arElements.push_back(oPrevElement);
|
||||
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesEnd);
|
||||
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
|
||||
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
|
||||
}
|
||||
}
|
||||
@ -214,8 +205,9 @@ namespace NSCSS
|
||||
if (oPrevElement->m_sSelector == *iWord)
|
||||
{
|
||||
arElements.push_back(oPrevElement);
|
||||
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesEnd);
|
||||
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
|
||||
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
|
||||
// return arElements;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -238,14 +230,11 @@ namespace NSCSS
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void CElement::UpdateWeight()
|
||||
std::vector<unsigned short> CElement::GetWeight()
|
||||
{
|
||||
if (m_arWeight.empty())
|
||||
m_arWeight = NS_STATIC_FUNCTIONS::GetWeightSelector(m_sFullSelector);
|
||||
}
|
||||
|
||||
std::vector<unsigned short> CElement::GetWeight() const
|
||||
{
|
||||
return m_arWeight;
|
||||
}
|
||||
|
||||
|
||||
@ -22,7 +22,6 @@ namespace NSCSS
|
||||
|
||||
public:
|
||||
CElement();
|
||||
CElement(const std::wstring& wsSelector, std::map<std::wstring, std::wstring> mStyle);
|
||||
~CElement();
|
||||
|
||||
std::wstring GetSelector() const;
|
||||
@ -40,13 +39,12 @@ namespace NSCSS
|
||||
std::map<std::wstring, std::wstring> GetFullStyle(const std::vector<CNode>& arSelectors) const;
|
||||
std::map<std::wstring, std::wstring> GetFullStyle(const std::vector<std::wstring>& arNodes) const;
|
||||
std::vector<CElement *> GetNextOfKin(const std::wstring& sName, const std::vector<std::wstring>& arClasses = {}) const;
|
||||
std::vector<CElement *> GetPrevElements(const std::vector<std::wstring>::const_iterator& oNodesBegin, const std::vector<std::wstring>::const_iterator& oNodesEnd) const;
|
||||
std::vector<CElement *> GetPrevElements(const std::vector<std::wstring>::const_reverse_iterator& oNodesRBegin, const std::vector<std::wstring>::const_reverse_iterator& oNodesREnd) const;
|
||||
std::map<std::wstring, std::wstring> GetConvertStyle(const std::vector<CNode>& arNodes) const;
|
||||
|
||||
CElement *FindPrevElement(const std::wstring& sSelector) const;
|
||||
|
||||
void UpdateWeight();
|
||||
std::vector<unsigned short int> GetWeight() const;
|
||||
std::vector<unsigned short int> GetWeight();
|
||||
void IncreasedWeight();
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,83 +1,19 @@
|
||||
#include "CNode.h"
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
#include "CCompiledStyle.h"
|
||||
#endif
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
CNode::CNode()
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
: m_pCompiledStyle(new CCompiledStyle())
|
||||
#endif
|
||||
{}
|
||||
|
||||
CNode::CNode(const CNode& oNode)
|
||||
: m_wsName(oNode.m_wsName), m_wsClass(oNode.m_wsClass), m_wsId(oNode.m_wsId),
|
||||
m_wsStyle(oNode.m_wsStyle), m_mAttributes(oNode.m_mAttributes)
|
||||
{
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
m_pCompiledStyle = new CCompiledStyle(*oNode.m_pCompiledStyle);
|
||||
#endif
|
||||
}
|
||||
|
||||
CNode::CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId)
|
||||
CNode::CNode(std::wstring wsName, std::wstring wsClass, std::wstring wsId)
|
||||
: m_wsName(wsName), m_wsClass(wsClass), m_wsId(wsId)
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
, m_pCompiledStyle(new CCompiledStyle())
|
||||
#endif
|
||||
{}
|
||||
|
||||
CNode::~CNode()
|
||||
{
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
if (nullptr != m_pCompiledStyle)
|
||||
delete m_pCompiledStyle;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CNode::Empty() const
|
||||
{
|
||||
return m_wsName.empty() && m_wsClass.empty() && m_wsId.empty() && m_wsStyle.empty();
|
||||
}
|
||||
|
||||
bool CNode::GetAttributeValue(const std::wstring& wsAttributeName, std::wstring& wsAttributeValue) const
|
||||
{
|
||||
const std::map<std::wstring, std::wstring>::const_iterator itFound{m_mAttributes.find(wsAttributeName)};
|
||||
|
||||
if (m_mAttributes.cend() == itFound)
|
||||
return false;
|
||||
|
||||
wsAttributeValue = itFound->second;
|
||||
return true;
|
||||
}
|
||||
|
||||
std::wstring CNode::GetAttributeValue(const std::wstring& wsAttributeName) const
|
||||
{
|
||||
const std::map<std::wstring, std::wstring>::const_iterator itFound{m_mAttributes.find(wsAttributeName)};
|
||||
return (m_mAttributes.cend() != itFound) ? itFound->second : std::wstring();
|
||||
}
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
void CNode::SetCompiledStyle(CCompiledStyle* pCompiledStyle)
|
||||
{
|
||||
if (nullptr != m_pCompiledStyle)
|
||||
delete m_pCompiledStyle;
|
||||
|
||||
m_pCompiledStyle = new CCompiledStyle();
|
||||
*m_pCompiledStyle = *pCompiledStyle;
|
||||
}
|
||||
#endif
|
||||
|
||||
void CNode::Clear()
|
||||
{
|
||||
m_wsName .clear();
|
||||
m_wsClass .clear();
|
||||
m_wsId .clear();
|
||||
m_wsStyle .clear();
|
||||
m_mAttributes.clear();
|
||||
}
|
||||
|
||||
std::vector<std::wstring> CNode::GetData() const
|
||||
{
|
||||
std::vector<std::wstring> arValues;
|
||||
@ -102,9 +38,6 @@ namespace NSCSS
|
||||
if(m_wsStyle != oNode.m_wsStyle)
|
||||
return m_wsStyle < oNode.m_wsStyle;
|
||||
|
||||
if (m_mAttributes.size() != oNode.m_mAttributes.size())
|
||||
return m_mAttributes.size() < oNode.m_mAttributes.size();
|
||||
|
||||
if (m_mAttributes != oNode.m_mAttributes)
|
||||
return m_mAttributes < oNode.m_mAttributes;
|
||||
|
||||
@ -113,9 +46,10 @@ namespace NSCSS
|
||||
|
||||
bool CNode::operator==(const CNode& oNode) const
|
||||
{
|
||||
return((m_wsName == oNode.m_wsName) &&
|
||||
(m_wsClass == oNode.m_wsClass) &&
|
||||
(m_wsStyle == oNode.m_wsStyle) &&
|
||||
(m_mAttributes == oNode.m_mAttributes));
|
||||
return((m_wsId == oNode.m_wsId) &&
|
||||
(m_wsName == oNode.m_wsName) &&
|
||||
(m_wsClass == oNode.m_wsClass) &&
|
||||
(m_wsStyle == oNode.m_wsStyle) &&
|
||||
(m_mAttributes == oNode.m_mAttributes));
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
class CCompiledStyle;
|
||||
#endif
|
||||
class CNode
|
||||
{
|
||||
public:
|
||||
@ -18,28 +15,13 @@ namespace NSCSS
|
||||
std::wstring m_wsId; // Id тэга
|
||||
std::wstring m_wsStyle; // Стиль тэга
|
||||
std::map<std::wstring, std::wstring> m_mAttributes; // Остальные аттрибуты тэга
|
||||
//TODO:: возможно использование std::wstring излишне
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
CCompiledStyle *m_pCompiledStyle;
|
||||
#endif
|
||||
public:
|
||||
CNode();
|
||||
CNode(const CNode& oNode);
|
||||
CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId);
|
||||
~CNode();
|
||||
CNode(std::wstring wsName, std::wstring wsClass, std::wstring wsId);
|
||||
|
||||
bool Empty() const;
|
||||
|
||||
bool GetAttributeValue(const std::wstring& wsAttributeName, std::wstring& wsAttributeValue) const;
|
||||
std::wstring GetAttributeValue(const std::wstring& wsAttributeName) const;
|
||||
|
||||
#ifdef CSS_CALCULATOR_WITH_XHTML
|
||||
void SetCompiledStyle(CCompiledStyle* pCompiledStyle);
|
||||
#endif
|
||||
|
||||
void Clear();
|
||||
|
||||
std::vector<std::wstring> GetData() const;
|
||||
bool operator< (const CNode& oNode) const;
|
||||
bool operator== (const CNode& oNode) const;
|
||||
|
||||
@ -149,7 +149,7 @@ namespace NSCSS
|
||||
case NSCSS::Millimeter:
|
||||
return dValue * 0.01764;
|
||||
case NSCSS::Inch:
|
||||
return dValue / 1440.;
|
||||
return dValue * 1440.;
|
||||
case NSCSS::Peak:
|
||||
return dValue * 0.004167; // 0.004167 = 6 / 1440
|
||||
default:
|
||||
|
||||
@ -2,6 +2,23 @@
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
bool StatistickElement::operator<(const StatistickElement &oStatistickElement) const
|
||||
{
|
||||
return sValue < oStatistickElement.sValue;
|
||||
}
|
||||
|
||||
void CTree::CountingNumberRepetitions(const CTree &oTree, std::map<StatistickElement, unsigned int> &mStatictics)
|
||||
{
|
||||
if (!oTree.m_oNode.m_wsId.empty())
|
||||
++mStatictics[StatistickElement{StatistickElement::IsId, L'#' + oTree.m_oNode.m_wsId}];
|
||||
if (!oTree.m_oNode.m_wsStyle.empty())
|
||||
++mStatictics[StatistickElement{StatistickElement::IsStyle, oTree.m_oNode.m_wsStyle}];
|
||||
|
||||
if (!oTree.m_arrChild.empty())
|
||||
for (const CTree& oChildren : oTree.m_arrChild)
|
||||
CountingNumberRepetitions(oChildren, mStatictics);
|
||||
}
|
||||
|
||||
namespace NSConstValues
|
||||
{
|
||||
const std::map<std::wstring, std::wstring> COLORS
|
||||
@ -65,7 +82,7 @@ namespace NSCSS
|
||||
{L"gainsboro", L"DCDCDC"}, {L"lightgray", L"D3D3D3"}, {L"silver", L"C0C0C0"},
|
||||
{L"darkgray", L"A9A9A9"}, {L"gray", L"808080"}, {L"dimgray", L"696969"},
|
||||
{L"lightslategray", L"778899"}, {L"slategray", L"708090"}, {L"darkslategray", L"2F4F4F"},
|
||||
{L"black", L"000000"}, {L"grey", L"808080"},
|
||||
{L"black", L"000000"},
|
||||
/* Outdated */
|
||||
{L"windowtext", L"000000"}, {L"transparent", L"000000"}
|
||||
};
|
||||
|
||||
@ -16,6 +16,26 @@ namespace NSCSS
|
||||
ScalingDirectionY = 2
|
||||
} ScalingDirection;
|
||||
|
||||
struct StatistickElement
|
||||
{
|
||||
enum TypeElement
|
||||
{
|
||||
IsStyle = 0,
|
||||
IsId
|
||||
} m_enType;
|
||||
std::wstring sValue;
|
||||
|
||||
bool operator<(const StatistickElement& oStatistickElement) const;
|
||||
};
|
||||
|
||||
struct CTree
|
||||
{
|
||||
NSCSS::CNode m_oNode;
|
||||
std::vector<CTree> m_arrChild;
|
||||
|
||||
static void CountingNumberRepetitions(const CTree &oTree, std::map<StatistickElement, unsigned int> &mStatictics);
|
||||
};
|
||||
|
||||
namespace NSConstValues
|
||||
{
|
||||
extern const std::map<std::wstring, std::wstring> COLORS;
|
||||
@ -69,10 +89,7 @@ namespace NSCSS
|
||||
R_Highlight,
|
||||
R_Shd,
|
||||
R_SmallCaps,
|
||||
R_Kern,
|
||||
R_Vanish,
|
||||
R_Strike,
|
||||
R_VertAlign
|
||||
R_Kern
|
||||
} RunnerProperties;
|
||||
|
||||
typedef enum
|
||||
|
||||
@ -48,6 +48,7 @@ namespace NS_STATIC_FUNCTIONS
|
||||
if (sEncoding.empty())
|
||||
sEncoding = "utf-8";
|
||||
|
||||
|
||||
if (!sEncoding.empty() && sEncoding != "utf-8" && sEncoding != "UTF-8")
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
@ -140,9 +141,7 @@ namespace NS_STATIC_FUNCTIONS
|
||||
|
||||
while (std::wstring::npos != unEnd)
|
||||
{
|
||||
if (unStart != unEnd)
|
||||
arWords.emplace_back(wsLine.data() + unStart, unEnd - unStart + ((bWithSigns) ? 1 : 0));
|
||||
|
||||
arWords.emplace_back(wsLine.data() + unStart, unEnd - unStart + ((bWithSigns) ? 1 : 0));
|
||||
unStart = wsLine.find_first_not_of(wsDelimiters, unEnd);
|
||||
unEnd = wsLine.find_first_of(wsDelimiters, unStart);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -4,49 +4,42 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
|
||||
#include "../../../../DesktopEditor/graphics/Matrix.h"
|
||||
#include "CUnitMeasureConverter.h"
|
||||
|
||||
#include <boost/optional.hpp>
|
||||
#include "boost/blank.hpp"
|
||||
#include <boost/variant2/variant.hpp>
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
namespace NSProperties
|
||||
{
|
||||
#define NEXT_LEVEL UINT_MAX, true
|
||||
|
||||
template<typename T>
|
||||
class CValueBase
|
||||
class CValue
|
||||
{
|
||||
protected:
|
||||
CValueBase()
|
||||
: m_unLevel(0), m_bImportant(false)
|
||||
{}
|
||||
CValueBase(const CValueBase& oValue)
|
||||
: m_oValue(oValue.m_oValue), m_unLevel(oValue.m_unLevel), m_bImportant(oValue.m_bImportant)
|
||||
{}
|
||||
|
||||
CValueBase(const T& oValue, unsigned int unLevel, bool bImportant)
|
||||
: m_oValue(oValue), m_unLevel(unLevel), m_bImportant(bImportant)
|
||||
{}
|
||||
friend class CString;
|
||||
friend class CMatrix;
|
||||
friend class CDigit;
|
||||
friend class CColor;
|
||||
friend class CEnum;
|
||||
|
||||
T m_oValue;
|
||||
unsigned int m_unLevel;
|
||||
bool m_bImportant;
|
||||
public:
|
||||
virtual bool Empty() const = 0;
|
||||
virtual void Clear() = 0;
|
||||
CValue(const T& oValue, unsigned int unLevel, bool bImportant) :
|
||||
m_oValue(oValue), m_unLevel(unLevel), m_bImportant(bImportant)
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) = 0;
|
||||
|
||||
virtual bool Empty() const = 0;
|
||||
virtual void Clear() = 0;
|
||||
virtual int ToInt() const = 0;
|
||||
virtual double ToDouble() const = 0;
|
||||
virtual std::wstring ToWString() const = 0;
|
||||
|
||||
static void Equation(CValueBase &oFirstValue, CValueBase &oSecondValue)
|
||||
static void Equation(CValue &oFirstValue, CValue &oSecondValue)
|
||||
{
|
||||
if (oFirstValue.m_bImportant && !oSecondValue.m_bImportant && oFirstValue.Empty())
|
||||
oSecondValue.Clear();
|
||||
@ -61,39 +54,18 @@ namespace NSCSS
|
||||
}
|
||||
}
|
||||
|
||||
static bool LevelIsSame(const CValueBase& oFirstValue, const CValueBase& oSecondValue)
|
||||
static bool LevelIsSame(const CValue& oFirstValue, const CValue& oSecondValue)
|
||||
{
|
||||
return oFirstValue.m_unLevel == oSecondValue.m_unLevel;
|
||||
}
|
||||
|
||||
friend bool operator==(const CValueBase& oLeftValue, const CValueBase& oRightValue)
|
||||
{
|
||||
if (oLeftValue.Empty() && oRightValue.Empty())
|
||||
return true;
|
||||
bool operator==(const T& oValue) const { return m_oValue == oValue; }
|
||||
bool operator>=(const T& oValue) const { return m_oValue >= oValue; }
|
||||
bool operator<=(const T& oValue) const { return m_oValue <= oValue; }
|
||||
bool operator> (const T& oValue) const { return m_oValue > oValue; }
|
||||
bool operator< (const T& oValue) const { return m_oValue < oValue; }
|
||||
|
||||
if (( oLeftValue.Empty() && !oRightValue.Empty()) ||
|
||||
(!oLeftValue.Empty() && oRightValue.Empty()))
|
||||
return false;
|
||||
|
||||
return oLeftValue.m_oValue == oRightValue.m_oValue;
|
||||
}
|
||||
|
||||
friend bool operator!=(const CValueBase& oLeftValue, const CValueBase& oRightValue)
|
||||
{
|
||||
return !(oLeftValue == oRightValue);
|
||||
}
|
||||
|
||||
bool operator==(const T& oValue) const
|
||||
{
|
||||
return m_oValue == oValue;
|
||||
}
|
||||
|
||||
bool operator!=(const T& oValue) const
|
||||
{
|
||||
return m_oValue != oValue;
|
||||
}
|
||||
|
||||
virtual CValueBase& operator =(const CValueBase& oValue)
|
||||
virtual CValue& operator =(const CValue& oValue)
|
||||
{
|
||||
m_oValue = oValue.m_oValue;
|
||||
m_unLevel = oValue.m_unLevel;
|
||||
@ -102,93 +74,64 @@ namespace NSCSS
|
||||
return *this;
|
||||
}
|
||||
|
||||
virtual CValueBase& operator =(const T& oValue)
|
||||
CValue& operator =(const T& oValue)
|
||||
{
|
||||
m_oValue = oValue;
|
||||
|
||||
//m_oValue = oValue.m_oValue;
|
||||
return *this;
|
||||
}
|
||||
|
||||
virtual CValueBase& operator+=(const CValueBase& oValue)
|
||||
CValue& operator+=(const CValue& oValue)
|
||||
{
|
||||
if (m_unLevel > oValue.m_unLevel || (m_bImportant && !oValue.m_bImportant) || oValue.Empty())
|
||||
return *this;
|
||||
|
||||
*this = oValue;
|
||||
m_oValue = oValue.m_oValue;
|
||||
m_unLevel = oValue.m_unLevel;
|
||||
m_bImportant = oValue.m_bImportant;
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class CValueOptional : public CValueBase<boost::optional<T>>
|
||||
{
|
||||
protected:
|
||||
CValueOptional() = default;
|
||||
|
||||
CValueOptional(const T& oValue, unsigned int unLevel = 0, bool bImportant = false)
|
||||
: CValueBase<boost::optional<T>>(oValue, unLevel, bImportant)
|
||||
{}
|
||||
public:
|
||||
virtual bool Empty() const override
|
||||
bool operator==(const CValue& oValue) const
|
||||
{
|
||||
return !this->m_oValue.has_value();
|
||||
}
|
||||
void Clear() override
|
||||
{
|
||||
this->m_oValue.reset();
|
||||
this->m_unLevel = 0;
|
||||
this->m_bImportant = false;
|
||||
}
|
||||
|
||||
bool operator==(const T& oValue) const
|
||||
{
|
||||
if (!this->m_oValue.has_value())
|
||||
return false;
|
||||
|
||||
return this->m_oValue.value() == oValue;
|
||||
}
|
||||
|
||||
virtual CValueOptional& operator=(const T& oValue)
|
||||
{
|
||||
this->m_oValue = oValue;
|
||||
|
||||
return *this;
|
||||
return m_oValue == oValue.m_oValue;
|
||||
}
|
||||
};
|
||||
|
||||
class CString : public CValueOptional<std::wstring>
|
||||
class CString : public CValue<std::wstring>
|
||||
{
|
||||
public:
|
||||
CString() = default;
|
||||
CString(const std::wstring& wsValue, unsigned int unLevel = 0, bool bImportant = false);
|
||||
CString();
|
||||
CString(const std::wstring& wsValue, unsigned int unLevel, bool bImportant = false);
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) override;
|
||||
bool SetValue(const std::wstring& wsValue, const std::vector<std::wstring>& arValiableValues, unsigned int unLevel, bool bHardMode);
|
||||
bool SetValue(const std::wstring& wsValue, const std::map<std::wstring, std::wstring>& arValiableValues, unsigned int unLevel, bool bHardMode);
|
||||
|
||||
bool Empty() const override;
|
||||
void Clear() override;
|
||||
|
||||
int ToInt() const override;
|
||||
double ToDouble() const override;
|
||||
std::wstring ToWString() const override;
|
||||
|
||||
bool operator==(const wchar_t* pValue) const;
|
||||
bool operator!=(const wchar_t* pValue) const;
|
||||
|
||||
using CValueOptional<std::wstring>::operator=;
|
||||
CString& operator+=(const CString& oString);
|
||||
};
|
||||
|
||||
class CDigit : public CValueOptional<double>
|
||||
class CDigit : public CValue<double>
|
||||
{
|
||||
UnitMeasure m_enUnitMeasure;
|
||||
|
||||
double ConvertValue(double dPrevValue, UnitMeasure enUnitMeasure) const;
|
||||
public:
|
||||
CDigit();
|
||||
CDigit(const double& dValue, unsigned int unLevel = 0, bool bImportant = false);
|
||||
CDigit(double dValue);
|
||||
CDigit(double dValue, unsigned int unLevel, bool bImportant = false);
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true) override;
|
||||
bool SetValue(const CDigit& oValue);
|
||||
bool SetValue(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel = 0, bool bHardMode = true);
|
||||
|
||||
bool Empty() const override;
|
||||
bool Zero() const;
|
||||
void Clear() override;
|
||||
|
||||
@ -204,7 +147,7 @@ namespace NSCSS
|
||||
|
||||
UnitMeasure GetUnitMeasure() const;
|
||||
|
||||
bool operator==(const double& dValue) const;
|
||||
bool operator==(const double& oValue) const;
|
||||
bool operator==(const CDigit& oDigit) const;
|
||||
|
||||
bool operator!=(const double& oValue) const;
|
||||
@ -219,19 +162,11 @@ namespace NSCSS
|
||||
|
||||
CDigit& operator+=(const CDigit& oDigit);
|
||||
CDigit& operator-=(const CDigit& oDigit);
|
||||
CDigit& operator+=(const double& dValue);
|
||||
CDigit& operator-=(const double& dValue);
|
||||
CDigit& operator*=(const double& dValue);
|
||||
CDigit& operator/=(const double& dValue);
|
||||
|
||||
using CValueOptional<double>::operator=;
|
||||
private:
|
||||
UnitMeasure m_enUnitMeasure;
|
||||
|
||||
double ConvertValue(double dPrevValue, UnitMeasure enUnitMeasure) const;
|
||||
|
||||
template <typename Operation>
|
||||
CDigit ApplyOperation(const CDigit& oDigit, Operation operation) const;
|
||||
CDigit& operator+=(double dValue);
|
||||
CDigit& operator-=(double dValue);
|
||||
CDigit& operator*=(double dValue);
|
||||
CDigit& operator/=(double dValue);
|
||||
CDigit& operator =(double dValue);
|
||||
};
|
||||
|
||||
struct TRGB
|
||||
@ -242,107 +177,71 @@ namespace NSCSS
|
||||
|
||||
bool Empty() const;
|
||||
|
||||
int ToInt() const;
|
||||
|
||||
bool operator==(const TRGB& oRGB) const;
|
||||
bool operator!=(const TRGB& oRGB) const;
|
||||
};
|
||||
|
||||
class CURL
|
||||
{
|
||||
public:
|
||||
CURL();
|
||||
|
||||
bool Empty() const;
|
||||
bool LinkToId() const;
|
||||
|
||||
void Clear();
|
||||
|
||||
bool SetValue(const std::wstring& wsValue);
|
||||
std::wstring GetValue() const;
|
||||
|
||||
bool operator==(const CURL& oValue) const;
|
||||
bool operator!=(const CURL& oValue) const;
|
||||
private:
|
||||
std::wstring m_wsValue;
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ColorEmpty,
|
||||
ColorNone,
|
||||
ColorRGB,
|
||||
ColorHEX,
|
||||
ColorUrl,
|
||||
ColorContextStroke,
|
||||
ColorContextFill
|
||||
} EColorType;
|
||||
ColorUrl
|
||||
} ColorType;
|
||||
|
||||
class CColorValue
|
||||
class Q_DECL_EXPORT CColorValue
|
||||
{
|
||||
using color_value = boost::variant2::variant<boost::blank, std::wstring, TRGB, CURL>;
|
||||
protected:
|
||||
EColorType m_eType;
|
||||
public:
|
||||
CColorValue();
|
||||
CColorValue(const CColorValue& oValue);
|
||||
CColorValue(const std::wstring& wsValue);
|
||||
CColorValue(const TRGB& oValue);
|
||||
CColorValue(const CURL& oValue);
|
||||
CColorValue(const CColorValue& oColorValue);
|
||||
~CColorValue();
|
||||
|
||||
EColorType GetType() const;
|
||||
void SetRGB(unsigned char uchR, unsigned char uchG, unsigned char uchB);
|
||||
void SetRGB(const TRGB& oRGB);
|
||||
void SetHEX(const std::wstring& wsValue);
|
||||
void SetUrl(const std::wstring& wsValue);
|
||||
void SetNone();
|
||||
|
||||
bool operator==(const CColorValue& oValue) const;
|
||||
void Clear();
|
||||
|
||||
color_value m_oValue;
|
||||
bool Empty() const;
|
||||
|
||||
ColorType m_enType;
|
||||
void* m_pColor = NULL;
|
||||
|
||||
std::wstring GetColor() const;
|
||||
|
||||
bool operator==(const CColorValue& oColorValue) const;
|
||||
CColorValue& operator= (const CColorValue& oColorValue);
|
||||
};
|
||||
|
||||
class CColorValueContextStroke : public CColorValue
|
||||
{
|
||||
public:
|
||||
CColorValueContextStroke();
|
||||
};
|
||||
|
||||
class CColorValueContextFill : public CColorValue
|
||||
{
|
||||
public:
|
||||
CColorValueContextFill();
|
||||
};
|
||||
|
||||
class CColor : public CValueOptional<CColorValue>
|
||||
class CColor : public CValue<CColorValue>
|
||||
{
|
||||
CDigit m_oOpacity;
|
||||
static TRGB ConvertHEXtoRGB(const std::wstring& wsValue);
|
||||
static std::wstring ConvertRGBtoHEX(const TRGB& oValue);
|
||||
static std::wstring CutURL(const std::wstring& wsValue);
|
||||
void SetEmpty(unsigned int unLevel = 0);
|
||||
public:
|
||||
CColor();
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true) override;
|
||||
bool SetOpacity(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true);
|
||||
|
||||
bool Empty() const override;
|
||||
bool None() const;
|
||||
bool Url() const;
|
||||
void Clear() override;
|
||||
|
||||
EColorType GetType() const;
|
||||
ColorType GetType() const;
|
||||
|
||||
double GetOpacity() const;
|
||||
|
||||
int ToInt() const override;
|
||||
double ToDouble() const override;
|
||||
std::wstring ToWString() const override;
|
||||
std::wstring ToHEX() const;
|
||||
std::wstring EquateToColor(const std::vector<std::pair<TRGB, std::wstring>>& arColors) const;
|
||||
TRGB ToRGB() const;
|
||||
|
||||
static TRGB ConvertHEXtoRGB(const std::wstring& wsValue);
|
||||
static std::wstring ConvertRGBtoHEX(const TRGB& oValue);
|
||||
|
||||
using CValueOptional<CColorValue>::operator=;
|
||||
private:
|
||||
CDigit m_oOpacity;
|
||||
|
||||
void SetEmpty(unsigned int unLevel = 0);
|
||||
void SetRGB(unsigned char uchR, unsigned char uchG, unsigned char uchB);
|
||||
void SetRGB(const TRGB& oRGB);
|
||||
void SetHEX(const std::wstring& wsValue);
|
||||
bool SetUrl(const std::wstring& wsValue);
|
||||
};
|
||||
|
||||
typedef enum
|
||||
@ -358,7 +257,7 @@ namespace NSCSS
|
||||
|
||||
typedef std::vector<std::pair<std::vector<double>, TransformType>> MatrixValues;
|
||||
|
||||
class CMatrix : public CValueBase<MatrixValues>
|
||||
class CMatrix : public CValue<MatrixValues>
|
||||
{
|
||||
std::vector<std::wstring> CutTransforms(const std::wstring& wsValue) const;
|
||||
public:
|
||||
@ -381,41 +280,32 @@ namespace NSCSS
|
||||
void ApplyTranform(Aggplus::CMatrix& oMatrix, Aggplus::MatrixOrder order = Aggplus::MatrixOrderPrepend) const;
|
||||
|
||||
bool operator==(const CMatrix& oMatrix) const;
|
||||
CMatrix& operator+=(const CMatrix& oMatrix);
|
||||
CMatrix& operator-=(const CMatrix& oMatrix);
|
||||
|
||||
using CValueBase<MatrixValues>::operator=;
|
||||
};
|
||||
|
||||
class CEnum : public CValueOptional<int>
|
||||
class CEnum : public CValue<int>
|
||||
{
|
||||
std::map<std::wstring, int> m_mMap;
|
||||
public:
|
||||
CEnum();
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) override;
|
||||
void SetMapping(const std::map<std::wstring, int>& mMap, int nDefaulvalue = -1);
|
||||
|
||||
int ToInt() const override;
|
||||
bool Empty() const override;
|
||||
void Clear() override;
|
||||
|
||||
using CValueOptional<int>::operator=;
|
||||
CEnum &operator =(int nValue);
|
||||
|
||||
bool operator==(int nValue) const;
|
||||
bool operator!=(int nValue) const;
|
||||
|
||||
int ToInt() const override;
|
||||
private:
|
||||
double ToDouble() const override;
|
||||
std::wstring ToWString() const override;
|
||||
|
||||
int m_nDefaultValue;
|
||||
std::map<std::wstring, int> m_mMap;
|
||||
};
|
||||
|
||||
// PROPERTIES
|
||||
typedef enum
|
||||
{
|
||||
Normal,
|
||||
Nowrap,
|
||||
Pre,
|
||||
Pre_Line,
|
||||
Pre_Wrap
|
||||
} EWhiteSpace;
|
||||
|
||||
class CDisplay
|
||||
{
|
||||
public:
|
||||
@ -435,8 +325,6 @@ namespace NSCSS
|
||||
|
||||
bool SetDisplay(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
bool SetWhiteSpace(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
const CDigit& GetX() const;
|
||||
const CDigit& GetY() const;
|
||||
const CDigit& GetWidth() const;
|
||||
@ -447,10 +335,7 @@ namespace NSCSS
|
||||
|
||||
const CString& GetDisplay() const;
|
||||
|
||||
const CEnum& GetWhiteSpace() const;
|
||||
|
||||
bool Empty() const;
|
||||
void Clear();
|
||||
|
||||
CDisplay& operator+=(const CDisplay& oDisplay);
|
||||
bool operator==(const CDisplay& oDisplay) const;
|
||||
@ -464,8 +349,6 @@ namespace NSCSS
|
||||
CString m_oVAlign;
|
||||
|
||||
CString m_oDisplay;
|
||||
|
||||
CEnum m_eWhiteSpace;
|
||||
};
|
||||
|
||||
class CStroke
|
||||
@ -544,7 +427,6 @@ namespace NSCSS
|
||||
{
|
||||
public:
|
||||
CBorderSide();
|
||||
CBorderSide(const CBorderSide& oBorderSide);
|
||||
|
||||
void Clear();
|
||||
|
||||
@ -552,12 +434,9 @@ namespace NSCSS
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidth(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidth(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
void SetNone(unsigned int unLevel, bool bHardMode);
|
||||
|
||||
void Block();
|
||||
void Unblock();
|
||||
|
||||
@ -573,7 +452,6 @@ namespace NSCSS
|
||||
|
||||
CBorderSide& operator+=(const CBorderSide& oBorderSide);
|
||||
bool operator==(const CBorderSide& oBorderSide) const;
|
||||
bool operator!=(const CBorderSide& oBorderSide) const;
|
||||
CBorderSide& operator =(const CBorderSide& oBorderSide);
|
||||
private:
|
||||
CDigit m_oWidth;
|
||||
@ -595,50 +473,39 @@ namespace NSCSS
|
||||
CBorder();
|
||||
|
||||
void Clear();
|
||||
void ClearLeftSide();
|
||||
void ClearTopSide();
|
||||
void ClearRightSide();
|
||||
void ClearBottomSide();
|
||||
|
||||
static void Equation(CBorder &oFirstBorder, CBorder &oSecondBorder);
|
||||
|
||||
bool SetSides(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidth(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidth(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetSides(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidth(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetCollapse(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
//Left Side
|
||||
bool SetLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthLeftSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyleLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColorLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
//Top Side
|
||||
bool SetTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthTopSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyleTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColorTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
//Right Side
|
||||
bool SetRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthRightSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyleRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColorRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
//Bottom Side
|
||||
bool SetBottomSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWidthBottomSide(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStyleBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColorBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
void SetNone(unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
void Block();
|
||||
void Unblock();
|
||||
|
||||
@ -655,7 +522,7 @@ namespace NSCSS
|
||||
|
||||
CBorder& operator+=(const CBorder& oBorder);
|
||||
bool operator==(const CBorder& oBorder) const;
|
||||
bool operator!=(const CBorder& oBorder) const;
|
||||
|
||||
CBorder& operator =(const CBorder& oBorder);
|
||||
private:
|
||||
CBorderSide m_oLeft;
|
||||
@ -696,30 +563,6 @@ namespace NSCSS
|
||||
bool operator==(const TTextDecoration& oTextDecoration) const;
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Baseline,
|
||||
Sub,
|
||||
Super,
|
||||
Percentage,
|
||||
Length
|
||||
} EBaselineShift;
|
||||
|
||||
class CBaselineShift
|
||||
{
|
||||
CEnum m_eType;
|
||||
CDigit m_oValue;
|
||||
public:
|
||||
CBaselineShift();
|
||||
|
||||
bool Empty() const;
|
||||
|
||||
EBaselineShift GetType() const;
|
||||
double GetValue() const;
|
||||
|
||||
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
};
|
||||
|
||||
class CText
|
||||
{
|
||||
public:
|
||||
@ -727,21 +570,15 @@ namespace NSCSS
|
||||
|
||||
static void Equation(CText &oFirstText, CText &oSecondText);
|
||||
|
||||
bool SetIndent (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetAlign (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetDecoration (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColor (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetHighlight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetBaselineShift (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetIndent (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetAlign (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetDecoration(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetColor (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
const CDigit& GetIndent() const;
|
||||
const CString& GetAlign() const;
|
||||
const TTextDecoration& GetDecoration() const;
|
||||
const CColor& GetColor() const;
|
||||
const CColor& GetHighlight() const;
|
||||
|
||||
EBaselineShift GetBaselineShiftType() const;
|
||||
double GetBaselineShiftValue() const;
|
||||
|
||||
bool Empty() const;
|
||||
|
||||
@ -752,12 +589,10 @@ namespace NSCSS
|
||||
CText& operator+=(const CText& oText);
|
||||
bool operator==(const CText& oText) const;
|
||||
private:
|
||||
CBaselineShift m_oBaselineShift;
|
||||
TTextDecoration m_oDecoration;
|
||||
CDigit m_oIndent;
|
||||
CString m_oAlign;
|
||||
CColor m_oColor;
|
||||
CColor m_oHighlight;
|
||||
};
|
||||
|
||||
class CIndent
|
||||
@ -779,26 +614,17 @@ namespace NSCSS
|
||||
bool SetBottom (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetLeft (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
bool SetValues (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetTop (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetRight (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetBottom (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetLeft (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
void UpdateAll (const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateTop (const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateRight (const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateBottom(const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateLeft (const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateAll (double dFontSize);
|
||||
void UpdateTop (double dFontSize);
|
||||
void UpdateRight (double dFontSize);
|
||||
void UpdateBottom(double dFontSize);
|
||||
void UpdateLeft (double dFontSize);
|
||||
|
||||
const CDigit& GetTop () const;
|
||||
const CDigit& GetRight () const;
|
||||
const CDigit& GetBottom() const;
|
||||
const CDigit& GetLeft () const;
|
||||
|
||||
bool GetAfterAutospacing () const;
|
||||
bool GetBeforeAutospacing() const;
|
||||
|
||||
bool Empty() const;
|
||||
bool Zero() const;
|
||||
|
||||
@ -807,7 +633,7 @@ namespace NSCSS
|
||||
bool operator!=(const CIndent& oIndent) const;
|
||||
private:
|
||||
bool SetValues(const std::wstring& wsTopValue, const std::wstring& wsRightValue, const std::wstring& wsBottomValue, const std::wstring& wsLeftValue, unsigned int unLevel, bool bHardMode = false);
|
||||
void UpdateSide(CDigit& oSide, const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateSide(CDigit& oSide, double dFontSize);
|
||||
|
||||
CDigit m_oLeft;
|
||||
CDigit m_oTop;
|
||||
@ -826,7 +652,6 @@ namespace NSCSS
|
||||
|
||||
bool SetValue (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetSize (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetSize (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetLineHeight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetFamily (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetStretch (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
@ -834,8 +659,8 @@ namespace NSCSS
|
||||
bool SetVariant (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetWeight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
void UpdateSize(const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateLineHeight(const double& dParentFontSize, const double& dCoreFontSize);
|
||||
void UpdateSize(double dFontSize);
|
||||
void UpdateLineHeight(double dFontSize);
|
||||
|
||||
void Clear();
|
||||
|
||||
@ -876,12 +701,6 @@ namespace NSCSS
|
||||
bool SetFooter (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetHeader (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
bool SetWidth (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetHeight (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetMargin (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetFooter (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
bool SetHeader (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
|
||||
|
||||
const CDigit& GetWidth() const;
|
||||
const CDigit& GetHeight() const;
|
||||
const CIndent& GetMargin() const;
|
||||
|
||||
@ -22,15 +22,10 @@ namespace NSCSS
|
||||
: m_oStyle(oStyle), m_bIsPStyle(bIsPStyle)
|
||||
{}
|
||||
|
||||
void CStyleUsed::SetFinalId(const std::wstring& wsFinalId)
|
||||
{
|
||||
m_wsFinalId = wsFinalId;
|
||||
}
|
||||
|
||||
bool CheckArrays(const std::vector<std::wstring>& arInitial, const std::set<std::wstring>& arFirst, const std::set<std::wstring>& arSecond)
|
||||
bool CheckArrays(const std::vector<std::wstring>& arInitial, const std::set<std::wstring>& arFirst, const std::set<std::wstring>& arSecond)
|
||||
{
|
||||
std::unordered_set<std::wstring> arInitialSet(arInitial.begin(), arInitial.end());
|
||||
|
||||
|
||||
std::vector<std::wstring> arCommonElements1;
|
||||
std::vector<std::wstring> arCommonElements2;
|
||||
|
||||
@ -62,14 +57,19 @@ namespace NSCSS
|
||||
m_oStyle == oUsedStyle.m_oStyle;
|
||||
}
|
||||
|
||||
std::wstring CStyleUsed::GetId() const
|
||||
std::wstring CStyleUsed::getId()
|
||||
{
|
||||
return m_wsFinalId;
|
||||
if (m_bIsPStyle)
|
||||
return m_oStyle.GetId();
|
||||
|
||||
return m_oStyle.GetId() + L"-c";
|
||||
}
|
||||
|
||||
CDocumentStyle::CDocumentStyle()
|
||||
: m_arStandardStyles(Names_Standard_Styles)
|
||||
{}
|
||||
CDocumentStyle::CDocumentStyle() : m_arStandardStyles(Names_Standard_Styles)
|
||||
{
|
||||
for (const std::wstring& oNameStandardStyle : Names_Standard_Styles)
|
||||
m_arStandardStyles.push_back(oNameStandardStyle + L"-c");
|
||||
}
|
||||
|
||||
CDocumentStyle::~CDocumentStyle()
|
||||
{
|
||||
@ -85,7 +85,7 @@ namespace NSCSS
|
||||
|
||||
std::wstring CDocumentStyle::GetIdAndClear()
|
||||
{
|
||||
const std::wstring sId = m_sId;
|
||||
std::wstring sId = m_sId;
|
||||
Clear();
|
||||
return sId;
|
||||
}
|
||||
@ -110,10 +110,10 @@ namespace NSCSS
|
||||
m_sId = sId;
|
||||
}
|
||||
|
||||
bool CDocumentStyle::CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement)
|
||||
void CDocumentStyle::CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement)
|
||||
{
|
||||
if (arStandartedStyles.empty())
|
||||
return false;
|
||||
return;
|
||||
|
||||
std::vector<std::wstring> arStyles;
|
||||
for (const std::wstring& sStyleName : arStandartedStyles)
|
||||
@ -123,7 +123,7 @@ namespace NSCSS
|
||||
}
|
||||
|
||||
if (arStyles.empty())
|
||||
return false;
|
||||
return;
|
||||
|
||||
std::wstring sId;
|
||||
for (std::vector<std::wstring>::const_reverse_iterator iStyleName = arStyles.rbegin(); iStyleName != arStyles.rend(); ++iStyleName)
|
||||
@ -142,25 +142,18 @@ namespace NSCSS
|
||||
|
||||
oElement.AddBasicProperties(BProperties::B_Name, sId);
|
||||
oElement.AddBasicProperties(BProperties::B_StyleId, sId);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CDocumentStyle::CreateStandardStyle(const std::wstring& sNameStyle, CXmlElement& oElement)
|
||||
void CDocumentStyle::CreateStandardStyle(const std::wstring& sNameStyle, CXmlElement& oElement)
|
||||
{
|
||||
if (std::find(m_arStandardStyles.begin(), m_arStandardStyles.end(), sNameStyle) != m_arStandardStyles.end())
|
||||
{
|
||||
oElement.CreateDefaultElement(sNameStyle);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CDocumentStyle::ConvertStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle)
|
||||
void CDocumentStyle::ConvertStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle)
|
||||
{
|
||||
if (oStyle.GetId().empty())
|
||||
return false;
|
||||
return;
|
||||
|
||||
std::wstring sName = oStyle.GetId();
|
||||
const size_t posPoint = sName.find(L'.');
|
||||
@ -190,25 +183,25 @@ namespace NSCSS
|
||||
for (std::wstring& sParentName : arParentsName)
|
||||
sParentName += L"-c";
|
||||
|
||||
bool bResult{false};
|
||||
|
||||
if (!arParentsName.empty())
|
||||
{
|
||||
bResult = CombineStandardStyles(arParentsName, oParentStyle);
|
||||
CombineStandardStyles(arParentsName, oParentStyle);
|
||||
|
||||
if (!oParentStyle.Empty())
|
||||
{
|
||||
oParentStyle.AddBasicProperties(BProperties::B_BasedOn, L"normal");
|
||||
oParentStyle.AddBasicProperties(BProperties::B_StyleId, oParentStyle.GetStyleId());
|
||||
oParentStyle.AddBasicProperties(BProperties::B_StyleId, L"(" + oParentStyle.GetStyleId() + L")");
|
||||
if (!bIsPStyle)
|
||||
{
|
||||
oParentStyle.AddBasicProperties(BProperties::B_StyleId, oParentStyle.GetStyleId() + L"-c");
|
||||
oParentStyle.AddBasicProperties(BProperties::B_Type, L"character");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CXmlElement oStandardXmlElement;
|
||||
if (std::find(m_arStandardStyles.begin(), m_arStandardStyles.end(), sName) != m_arStandardStyles.end())
|
||||
if (CreateStandardStyle(sName, oStandardXmlElement))
|
||||
bResult = true;
|
||||
CreateStandardStyle(sName, oStandardXmlElement);
|
||||
|
||||
if (oStandardXmlElement.Empty() && !oParentStyle.Empty())
|
||||
{
|
||||
@ -228,7 +221,7 @@ namespace NSCSS
|
||||
if (oStyle.Empty())
|
||||
{
|
||||
m_sId = sParentsStyleID;
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
oElement.AddBasicProperties(BProperties::B_BasedOn, sParentsStyleID);
|
||||
@ -241,7 +234,7 @@ namespace NSCSS
|
||||
if (oStyle.Empty())
|
||||
{
|
||||
m_sId = sStandPlusParent;
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
oElement.AddBasicProperties(BProperties::B_BasedOn, sStandPlusParent);
|
||||
}
|
||||
@ -265,7 +258,7 @@ namespace NSCSS
|
||||
if (oStyle.Empty())
|
||||
{
|
||||
m_sId = sStandPlusParent;
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
oElement.AddBasicProperties(BProperties::B_BasedOn, oTempElement.GetStyleId());
|
||||
}
|
||||
@ -288,7 +281,7 @@ namespace NSCSS
|
||||
if (oStyle.Empty())
|
||||
{
|
||||
m_sId = sStandartStyleID;
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
oElement.AddBasicProperties(BProperties::B_BasedOn, sStandartStyleID);
|
||||
}
|
||||
@ -296,7 +289,7 @@ namespace NSCSS
|
||||
if (oStyle.Empty() && oElement.Empty())
|
||||
{
|
||||
m_sId = L"normal";
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
m_sId = oStyle.GetId();
|
||||
@ -309,25 +302,21 @@ namespace NSCSS
|
||||
oElement.AddBasicProperties(BProperties::B_Name, m_sId);
|
||||
oElement.AddBasicProperties(BProperties::B_Type, bIsPStyle ? L"paragraph" : L"character");
|
||||
oElement.AddBasicProperties(BProperties::B_CustomStyle, L"1");
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
bool CDocumentStyle::SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
|
||||
void CDocumentStyle::SetPStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
|
||||
{
|
||||
bool bResult{false};
|
||||
|
||||
if (!bIsLite)
|
||||
bResult = ConvertStyle(oStyle, oXmlElement, true);
|
||||
ConvertStyle(oStyle, oXmlElement, true);
|
||||
|
||||
if (oStyle.Empty())
|
||||
return bResult;
|
||||
return;
|
||||
|
||||
const bool bInTable{oStyle.HaveThisParent(L"table")};
|
||||
|
||||
std::wstring wsTextAlign{oStyle.m_oText.GetAlign().ToWString()};
|
||||
|
||||
if (wsTextAlign.empty())
|
||||
if (wsTextAlign.empty() && bInTable)
|
||||
wsTextAlign = oStyle.m_oDisplay.GetHAlign().ToWString();
|
||||
|
||||
oXmlElement.AddPropertiesInP(PProperties::P_Jc, wsTextAlign);
|
||||
@ -352,14 +341,12 @@ namespace NSCSS
|
||||
sSpacingValue.reserve(128);
|
||||
|
||||
if (!oStyle.m_oMargin.GetTop().Empty() && !oStyle.m_oMargin.GetTop().Zero())
|
||||
sSpacingValue += L"w:before=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetTop(), NSCSS::Twips)) + L"\" w:beforeAutospacing=\"1\"";
|
||||
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
|
||||
sSpacingValue += L"w:before=\"0\" w:beforeAutospacing=\"1\"";
|
||||
sSpacingValue += L"w:before=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetTop(), NSCSS::Twips)) + L"\" w:beforeAutospacing=\"0\" ";
|
||||
|
||||
if (!oStyle.m_oMargin.GetBottom().Empty() && !oStyle.m_oMargin.GetBottom().Zero())
|
||||
sSpacingValue += L" w:after=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetBottom(), NSCSS::Twips)) + L"\" w:afterAutospacing=\"1\"";
|
||||
sSpacingValue += L"w:after=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetBottom(), NSCSS::Twips)) + L"\" w:afterAutospacing=\"0\" ";
|
||||
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
|
||||
sSpacingValue += L" w:after=\"0\" w:afterAutospacing=\"1\"";
|
||||
sSpacingValue += L"w:after=\"0\" ";
|
||||
|
||||
if (!oStyle.m_oFont.GetLineHeight().Empty() && !oStyle.m_oFont.GetLineHeight().Zero())
|
||||
{
|
||||
@ -369,7 +356,7 @@ namespace NSCSS
|
||||
sSpacingValue += L" w:line=\"" + wsLine + L"\" w:lineRule=\"" + wsLineRule + L"\"";
|
||||
}
|
||||
else if (oStyle.m_oFont.GetLineHeight().Zero() || bInTable)
|
||||
sSpacingValue += L" w:lineRule=\"auto\" w:line=\"240\"";
|
||||
sSpacingValue += L"w:lineRule=\"auto\" w:line=\"240\"";
|
||||
|
||||
if (!sSpacingValue.empty())
|
||||
oXmlElement.AddPropertiesInP(PProperties::P_Spacing, sSpacingValue);
|
||||
@ -401,8 +388,6 @@ namespace NSCSS
|
||||
SetBorderStyle(oStyle, oXmlElement, PProperties::P_LeftBorder);
|
||||
}
|
||||
}
|
||||
|
||||
return bResult || !oXmlElement.Empty();
|
||||
}
|
||||
|
||||
void CDocumentStyle::SetBorderStyle(const CCompiledStyle &oStyle, CXmlElement &oXmlElement, const PProperties &enBorderProperty)
|
||||
@ -483,21 +468,22 @@ namespace NSCSS
|
||||
|
||||
int nSpace{0};
|
||||
|
||||
if (NULL != pPadding && !pPadding->Empty() && !pPadding->Zero())
|
||||
nSpace = pPadding->ToInt(NSCSS::Point);
|
||||
|
||||
return L"w:val=\"" + wsStyle + L"\" w:sz=\"" + std::to_wstring(nWidth) + + L"\" w:space=\"" + std::to_wstring(nSpace) + L"\" w:color=\"" + wsColor + L"\"";
|
||||
}
|
||||
|
||||
bool CDocumentStyle::SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
|
||||
void CDocumentStyle::SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
|
||||
{
|
||||
bool bResult{false};
|
||||
|
||||
if (!bIsLite)
|
||||
bResult = ConvertStyle(oStyle, oXmlElement, false);
|
||||
ConvertStyle(oStyle, oXmlElement, false);
|
||||
|
||||
if (oStyle.Empty() && oXmlElement.Empty())
|
||||
return bResult;
|
||||
return;
|
||||
|
||||
if (!oStyle.m_oFont.GetSize().Empty())
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast<int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. * oStyle.m_oTransform.GetMatrix().GetFinalValue().sy() + 0.5))); // Значения шрифта увеличивает на 2
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast<int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. + 0.5))); // Значения шрифта увеличивает на 2
|
||||
|
||||
if (oStyle.m_oText.GetDecoration().m_oLine.Underline())
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_U, (!oStyle.m_oText.GetDecoration().m_oStyle.Empty()) ? oStyle.m_oText.GetDecoration().m_oStyle.ToWString() : L"single");
|
||||
@ -505,15 +491,17 @@ namespace NSCSS
|
||||
if (!oStyle.m_oBackground.GetColor().Empty() && !oStyle.m_oBackground.GetColor().None() && !oStyle.m_oBackground.GetColor().Url())
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Shd, oStyle.m_oBackground.GetColor().ToWString());
|
||||
|
||||
const std::wstring wsHighlight{oStyle.m_oText.GetHighlight().EquateToColor({{{0, 0, 0}, L"black"}, {{0, 0, 255}, L"blue"}, {{0, 255, 255}, L"cyan"},
|
||||
{{0, 255, 0}, L"green"}, {{255, 0, 255}, L"magenta"}, {{255, 0, 0}, L"red"},
|
||||
{{255, 255, 0}, L"yellow"}, {{255, 255, 255}, L"white"}, {{0, 0, 139}, L"darkBlue"},
|
||||
{{0, 139, 139}, L"darkCyan"}, {{0, 100, 0}, L"darkGreen"}, {{139, 0, 139}, L"darkMagenta"},
|
||||
{{139, 0, 0}, L"darkRed"}, {{128, 128, 0}, L"darkYellow"},{{169, 169, 169}, L"darkGray"},
|
||||
{{211, 211, 211}, L"lightGray"}})};
|
||||
/*
|
||||
const std::wstring wsHighlight{oStyle.m_oBackground.GetColor().EquateToColor({{{0, 0, 0}, L"black"}, {{0, 0, 255}, L"blue"}, {{0, 255, 255}, L"cyan"},
|
||||
{{0, 255, 0}, L"green"}, {{255, 0, 255}, L"magenta"}, {{255, 0, 0}, L"red"},
|
||||
{{255, 255, 0}, L"yellow"}, {{255, 255, 255}, L"white"}, {{0, 0, 139}, L"darkBlue"},
|
||||
{{0, 139, 139}, L"darkCyan"}, {{0, 100, 0}, L"darkGreen"}, {{139, 0, 139}, L"darkMagenta"},
|
||||
{{139, 0, 0}, L"darkRed"}, {{128, 128, 0}, L"darkYellow"},{{169, 169, 169}, L"darkGray"},
|
||||
{{211, 211, 211}, L"lightGray"}})};
|
||||
|
||||
if (L"none" != wsHighlight)
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Highlight, wsHighlight);
|
||||
*/
|
||||
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Color, oStyle.m_oText.GetColor().ToWString());
|
||||
|
||||
@ -524,25 +512,10 @@ namespace NSCSS
|
||||
else if (L"serif" == wsFontFamily)
|
||||
wsFontFamily = L"Times New Roman";
|
||||
|
||||
if (oStyle.m_oDisplay.GetDisplay() == L"none")
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Vanish, L"true");
|
||||
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_RFonts, oStyle.m_oFont.GetFamily().ToWString());
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_I, oStyle.m_oFont.GetStyle().ToWString());
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_B, oStyle.m_oFont.GetWeight().ToWString());
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_SmallCaps, oStyle.m_oFont.GetVariant().ToWString());
|
||||
|
||||
if (oStyle.m_oText.LineThrough())
|
||||
{
|
||||
if (L"double" == oStyle.m_oText.GetDecoration().m_oStyle.ToWString())
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Strike, L"dstrike");
|
||||
else
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Strike, L"strike");
|
||||
}
|
||||
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_VertAlign, oStyle.m_oDisplay.GetVAlign().ToWString());
|
||||
|
||||
return bResult || !oXmlElement.Empty();
|
||||
}
|
||||
|
||||
bool CDocumentStyle::WriteRStyle(const NSCSS::CCompiledStyle& oStyle)
|
||||
@ -550,7 +523,10 @@ namespace NSCSS
|
||||
Clear();
|
||||
|
||||
if(oStyle.GetId().empty())
|
||||
{
|
||||
m_sId = L"normal";
|
||||
return false;
|
||||
}
|
||||
|
||||
CStyleUsed structStyle(oStyle, false);
|
||||
|
||||
@ -558,16 +534,16 @@ namespace NSCSS
|
||||
|
||||
if (oItem != m_arStyleUsed.end())
|
||||
{
|
||||
m_sId = (*oItem).GetId();
|
||||
m_sId = (*oItem).getId();
|
||||
return true;
|
||||
}
|
||||
|
||||
CXmlElement oXmlElement;
|
||||
SetRStyle(oStyle, oXmlElement);
|
||||
|
||||
if (!SetRStyle(oStyle, oXmlElement))
|
||||
if (oXmlElement.Empty())
|
||||
return false;
|
||||
|
||||
structStyle.SetFinalId(m_sId);
|
||||
m_arStyleUsed.push_back(structStyle);
|
||||
m_sStyle += oXmlElement.GetRStyle();
|
||||
|
||||
@ -586,7 +562,7 @@ namespace NSCSS
|
||||
|
||||
if (oXmlElement.Empty())
|
||||
return false;
|
||||
|
||||
|
||||
m_sStyle += oXmlElement.GetPStyle(true);
|
||||
return true;
|
||||
}
|
||||
@ -613,23 +589,26 @@ namespace NSCSS
|
||||
Clear();
|
||||
|
||||
if(oStyle.GetId().empty())
|
||||
return false;
|
||||
{
|
||||
m_sId = L"normal";
|
||||
return true;
|
||||
}
|
||||
|
||||
CStyleUsed structStyle(oStyle, true);
|
||||
std::vector<CStyleUsed>::iterator oItem = std::find(m_arStyleUsed.begin(), m_arStyleUsed.end(), structStyle);
|
||||
|
||||
if (oItem != m_arStyleUsed.end())
|
||||
{
|
||||
m_sId = (*oItem).GetId();
|
||||
m_sId = (*oItem).getId();
|
||||
return true;
|
||||
}
|
||||
|
||||
CXmlElement oXmlElement;
|
||||
SetPStyle(oStyle, oXmlElement);
|
||||
|
||||
if (!SetPStyle(oStyle, oXmlElement))
|
||||
if (oXmlElement.Empty())
|
||||
return false;
|
||||
|
||||
structStyle.SetFinalId(m_sId);
|
||||
m_arStyleUsed.push_back(structStyle);
|
||||
m_sStyle += oXmlElement.GetPStyle();
|
||||
|
||||
|
||||
@ -12,19 +12,16 @@ namespace NSCSS
|
||||
{
|
||||
CCompiledStyle m_oStyle;
|
||||
bool m_bIsPStyle;
|
||||
std::wstring m_wsFinalId;
|
||||
|
||||
public:
|
||||
CStyleUsed(const CCompiledStyle& oStyle, bool bIsPStyle);
|
||||
|
||||
void SetFinalId(const std::wstring& wsFinalId);
|
||||
|
||||
bool operator==(const CStyleUsed& oUsedStyle) const;
|
||||
|
||||
std::wstring GetId() const;
|
||||
std::wstring getId();
|
||||
};
|
||||
|
||||
static const std::vector<std::wstring> Names_Standard_Styles = {L"a", L"a-c", L"li", L"h1", L"h2", L"h3", L"h4", L"h5", L"h6", L"h1-c", L"h2-c", L"h3-c", L"h4-c", L"h5-c", L"h6-c"};
|
||||
static const std::vector<std::wstring> Names_Standard_Styles = {L"a", L"li", L"h1", L"h2", L"h3", L"h4", L"h5", L"h6",L"p", L"div"};
|
||||
|
||||
class CSSCALCULATOR_EXPORT CDocumentStyle
|
||||
{
|
||||
@ -39,12 +36,12 @@ namespace NSCSS
|
||||
std::wstring m_sStyle;
|
||||
std::wstring m_sId;
|
||||
|
||||
bool CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement);
|
||||
bool CreateStandardStyle (const std::wstring& sNameStyle, CXmlElement& oElement);
|
||||
bool ConvertStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle);
|
||||
void CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement);
|
||||
void CreateStandardStyle (const std::wstring& sNameStyle, CXmlElement& oElement);
|
||||
void ConvertStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle);
|
||||
|
||||
bool SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
|
||||
bool SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
|
||||
void SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
|
||||
void SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
|
||||
|
||||
void SetBorderStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, const PProperties& enBorderProperty);
|
||||
public:
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include <cwctype>
|
||||
#include <functional>
|
||||
|
||||
#include <iostream>
|
||||
#include "../ConstValues.h"
|
||||
|
||||
#define DEFAULTFONTNAME L"Times New Roman"
|
||||
@ -26,7 +27,7 @@ CXmlElement::CXmlElement(const std::wstring& sNameDefaultElement)
|
||||
|
||||
bool CXmlElement::Empty() const
|
||||
{
|
||||
return m_mPStyleValues.empty() && m_mRStyleValues.empty() && GetBasedOn().empty();
|
||||
return m_mPStyleValues.empty() && m_mRStyleValues.empty() && m_mBasicValues.find(CSSProperties::BasicProperties::B_BasedOn) == m_mBasicValues.end();
|
||||
}
|
||||
|
||||
void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
@ -34,7 +35,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
if (!Empty())
|
||||
Clear();
|
||||
|
||||
/* if (sNameDefaultElement == L"p")
|
||||
if (sNameDefaultElement == L"p")
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"paragraph");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"p");
|
||||
@ -46,7 +47,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else */if (sNameDefaultElement == L"li")
|
||||
else if (sNameDefaultElement == L"li")
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"paragraph");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"li");
|
||||
@ -66,7 +67,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h1-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"0");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else if (sNameDefaultElement == L"h2")
|
||||
{
|
||||
@ -77,7 +78,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h2-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"1");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else if (sNameDefaultElement == L"h3")
|
||||
{
|
||||
@ -88,7 +89,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h3-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"2");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else if (sNameDefaultElement == L"h4")
|
||||
{
|
||||
@ -99,7 +100,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h4-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"3");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else if (sNameDefaultElement == L"h5")
|
||||
{
|
||||
@ -110,7 +111,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h5-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"4");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
|
||||
}
|
||||
else if (sNameDefaultElement == L"h6")
|
||||
@ -122,13 +123,13 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h6-c");
|
||||
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"5");
|
||||
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
|
||||
}
|
||||
else if (sNameDefaultElement == L"h1-c")
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h1-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 1 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 1 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h1");
|
||||
@ -141,7 +142,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h2-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 2 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 2 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
|
||||
@ -154,7 +155,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h3-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 3 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 3 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
|
||||
@ -167,7 +168,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h4-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 4 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 4 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
|
||||
@ -180,7 +181,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h5-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 5 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 5 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
|
||||
@ -193,7 +194,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h6-c");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 6 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 6 Sign");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
|
||||
@ -202,7 +203,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"15");
|
||||
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
|
||||
}
|
||||
/*else if (sNameDefaultElement == L"div-c")
|
||||
else if (sNameDefaultElement == L"div-c")
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"div-c");
|
||||
@ -218,7 +219,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Div paragraph");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_BasedOn, L"normal");
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"div-c");
|
||||
}*/
|
||||
}
|
||||
else if (sNameDefaultElement == L"a-c")
|
||||
{
|
||||
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
|
||||
@ -472,25 +473,6 @@ std::wstring CXmlElement::ConvertRStyle(bool bIsLite) const
|
||||
sRStyle += L"<w:kern w:val=\"" + oItem.second + L"\"/>";
|
||||
break;
|
||||
}
|
||||
case CSSProperties::RunnerProperties::R_Vanish:
|
||||
{
|
||||
if (oItem.second == L"true")
|
||||
sRStyle += L"<w:vanish/>";
|
||||
break;
|
||||
}
|
||||
case CSSProperties::RunnerProperties::R_Strike:
|
||||
{
|
||||
sRStyle += L"<w:" + oItem.second + L"/>";
|
||||
break;
|
||||
}
|
||||
case CSSProperties::RunnerProperties::R_VertAlign:
|
||||
{
|
||||
if (L"top" == oItem.second)
|
||||
sRStyle += L"<w:vertAlign w:val=\"superscript\"/>";
|
||||
else if (L"bottom" == oItem.second)
|
||||
sRStyle += L"<w:vertAlign w:val=\"subscript\"/>";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -25,5 +25,3 @@ if not base.is_dir("katana-parser"):
|
||||
base.replaceInFileUtf8(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool2 katana_is_html_space(char c);", "static inline bool katana_is_html_space(char c);")
|
||||
base.replaceInFileUtf8(base_directory + "/katana-parser/src/parser.c", "katanaget_text(parser->scanner)", "/*katanaget_text(parser->scanner)*/\"error\"")
|
||||
base.replaceInFileUtf8(base_directory + "/katana-parser/src/parser.c", "#define KATANA_PARSER_STRING(literal) (KatanaParserString){", "#define KATANA_PARSER_STRING(literal) {")
|
||||
# katana may not be able to handle an empty string correctly in some cases (bug#73485)
|
||||
base.replaceInFileUtf8(base_directory + "/katana-parser/src/foundation.c", "size_t len = strlen(str);", "if (NULL == str)\n return;\n size_t len = strlen(str);")
|
||||
|
||||
@ -7,5 +7,4 @@ core_windows:INCLUDEPATH += $$PWD/gumbo-parser/visualc/include
|
||||
HEADERS += $$files($$PWD/gumbo-parser/src/*.h, true) \
|
||||
$$PWD/htmltoxhtml.h
|
||||
|
||||
SOURCES += $$files($$PWD/gumbo-parser/src/*.c, true) \
|
||||
$$PWD/htmltoxhtml.cpp
|
||||
SOURCES += $$files($$PWD/gumbo-parser/src/*.c, true)
|
||||
|
||||
@ -1,657 +0,0 @@
|
||||
#include "htmltoxhtml.h"
|
||||
|
||||
#include <map>
|
||||
#include <cctype>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
#include "gumbo-parser/src/gumbo.h"
|
||||
#include "../../../DesktopEditor/common/File.h"
|
||||
#include "../../../DesktopEditor/common/Directory.h"
|
||||
#include "../../../DesktopEditor/common/StringBuilder.h"
|
||||
#include "../../../UnicodeConverter/UnicodeConverter.h"
|
||||
#include "../../../HtmlFile2/src/StringFinder.h"
|
||||
|
||||
namespace HTML
|
||||
{
|
||||
#if defined(CreateDirectory)
|
||||
#undef CreateDirectory
|
||||
#endif
|
||||
|
||||
static std::string nonbreaking_inline = "|a|abbr|acronym|b|bdo|big|cite|code|dfn|em|font|i|img|kbd|nobr|s|small|span|strike|strong|sub|sup|tt|";
|
||||
static std::string empty_tags = "|area|base|basefont|bgsound|br|command|col|embed|event-source|frame|hr|image|img|input|keygen|link|menuitem|meta|param|source|spacer|track|wbr|";
|
||||
static std::string preserve_whitespace = "|pre|textarea|script|style|";
|
||||
static std::string special_handling = "|html|body|";
|
||||
static std::string treat_like_inline = "|p|";
|
||||
|
||||
static std::vector<std::string> html_tags = {"div","span","a","img","p","h1","h2","h3","h4","h5","h6",
|
||||
"ul", "ol", "li","td","tr","table","thead","tbody","tfoot","th",
|
||||
"br","form","input","button","section","nav","header","footer",
|
||||
"main","figure","figcaption","strong","em","i", "b", "u","pre",
|
||||
"code","blockquote","hr","script","link","meta","style","title",
|
||||
"head","body","html","legend","optgroup","option","select","dl",
|
||||
"dt","dd","time","data","abbr","address","area","base","bdi",
|
||||
"bdo","cite","col","iframe","video","source","track","textarea",
|
||||
"label","fieldset","colgroup","del","ins","details","summary",
|
||||
"dialog","embed","kbd","map","mark","menu","meter","object",
|
||||
"output","param","progress","q","samp","small","sub","sup","var",
|
||||
"wbr","acronym","applet","article","aside","audio","basefont",
|
||||
"bgsound","big","blink","canvas","caption","center","command",
|
||||
"comment","datalist","dfn","dir","font","frame","frameset",
|
||||
"hgroup","isindex","keygen","marquee","nobr","noembed","noframes",
|
||||
"noscript","plaintext","rp","rt","ruby","s","strike","tt","xmp"};
|
||||
|
||||
static std::vector<std::string> unchecked_nodes_new = {"svg"};
|
||||
|
||||
static void replace_all(std::string& s, const std::string& s1, const std::string& s2)
|
||||
{
|
||||
size_t pos = s.find(s1);
|
||||
while(pos != std::string::npos)
|
||||
{
|
||||
s.replace(pos, s1.length(), s2);
|
||||
pos = s.find(s1, pos + s2.length());
|
||||
}
|
||||
}
|
||||
|
||||
static bool NodeIsUnprocessed(const std::string& sTagName)
|
||||
{
|
||||
return "xml" == sTagName;
|
||||
}
|
||||
|
||||
static bool IsUnckeckedNodes(const std::string& sValue)
|
||||
{
|
||||
return unchecked_nodes_new.end() != std::find(unchecked_nodes_new.begin(), unchecked_nodes_new.end(), sValue);
|
||||
}
|
||||
|
||||
static std::string Base64ToString(const std::string& sContent, const std::string& sCharset)
|
||||
{
|
||||
std::string sRes;
|
||||
int nSrcLen = (int)sContent.length();
|
||||
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
|
||||
BYTE* pData = new BYTE[nDecodeLen];
|
||||
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
|
||||
{
|
||||
std::wstring sConvert;
|
||||
if(!sCharset.empty() && NSStringFinder::Equals<std::string>("utf-8", sCharset))
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sConvert = oConverter.toUnicode(reinterpret_cast<char *>(pData), (unsigned)nDecodeLen, sCharset.data());
|
||||
}
|
||||
sRes = sConvert.empty() ? std::string(reinterpret_cast<char *>(pData), nDecodeLen) : U_TO_UTF8(sConvert);
|
||||
}
|
||||
RELEASEARRAYOBJECTS(pData);
|
||||
return sRes;
|
||||
}
|
||||
|
||||
static std::string QuotedPrintableDecode(const std::string& sContent, std::string& sCharset)
|
||||
{
|
||||
NSStringUtils::CStringBuilderA sRes;
|
||||
size_t ip = 0;
|
||||
size_t i = sContent.find('=');
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
size_t nIgnore = 12;
|
||||
std::string charset = sContent.substr(0, nIgnore);
|
||||
if(charset == "=00=00=FE=FF")
|
||||
sCharset = "UTF-32BE";
|
||||
else if(charset == "=FF=FE=00=00")
|
||||
sCharset = "UTF-32LE";
|
||||
else if(charset == "=2B=2F=76=38" || charset == "=2B=2F=76=39" ||
|
||||
charset == "=2B=2F=76=2B" || charset == "=2B=2F=76=2F")
|
||||
sCharset = "UTF-7";
|
||||
else if(charset == "=DD=73=66=73")
|
||||
sCharset = "UTF-EBCDIC";
|
||||
else if(charset == "=84=31=95=33")
|
||||
sCharset = "GB-18030";
|
||||
else
|
||||
{
|
||||
nIgnore -= 3;
|
||||
charset.erase(nIgnore);
|
||||
if(charset == "=EF=BB=BF")
|
||||
sCharset = "UTF-8";
|
||||
else if(charset == "=F7=64=4C")
|
||||
sCharset = "UTF-1";
|
||||
else if(charset == "=0E=FE=FF")
|
||||
sCharset = "SCSU";
|
||||
else if(charset == "=FB=EE=28")
|
||||
sCharset = "BOCU-1";
|
||||
else
|
||||
{
|
||||
nIgnore -= 3;
|
||||
charset.erase(nIgnore);
|
||||
if(charset == "=FE=FF")
|
||||
sCharset = "UTF-16BE";
|
||||
else if(charset == "=FF=FE")
|
||||
sCharset = "UTF-16LE";
|
||||
else
|
||||
nIgnore -= 6;
|
||||
}
|
||||
}
|
||||
|
||||
ip = nIgnore;
|
||||
i = sContent.find('=', ip);
|
||||
}
|
||||
|
||||
while(i != std::string::npos && i + 2 < sContent.length())
|
||||
{
|
||||
sRes.WriteString(sContent.c_str() + ip, i - ip);
|
||||
std::string str = sContent.substr(i + 1, 2);
|
||||
if(str.front() == '\n' || str.front() == '\r')
|
||||
{
|
||||
char ch = str[1];
|
||||
if(ch != '\n' && ch != '\r')
|
||||
sRes.WriteString(&ch, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
char* err;
|
||||
char ch = (int)strtol(str.data(), &err, 16);
|
||||
if(*err)
|
||||
sRes.WriteString('=' + str);
|
||||
else
|
||||
sRes.WriteString(&ch, 1);
|
||||
}
|
||||
ip = i + 3;
|
||||
i = sContent.find('=', ip);
|
||||
}
|
||||
if(ip != std::string::npos)
|
||||
sRes.WriteString(sContent.c_str() + ip);
|
||||
return sRes.GetData();
|
||||
}
|
||||
|
||||
static std::string mhtTohtml(const std::string& sFileContent);
|
||||
|
||||
static void ReadMht(const std::string& sMhtContent, std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
|
||||
{
|
||||
size_t unContentPosition = 0, unCharsetBegin = 0, unCharsetEnd = std::string::npos;
|
||||
|
||||
NSStringFinder::TFoundedData<char> oData;
|
||||
|
||||
// Content-Type
|
||||
oData = NSStringFinder::FindProperty(sMhtContent, "content-type", {":"}, {";", "\\n", "\\r"});
|
||||
const std::string sContentType{oData.m_sValue};
|
||||
|
||||
if (sContentType.empty())
|
||||
return;
|
||||
|
||||
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
|
||||
{
|
||||
oRes.WriteString(mhtTohtml(sMhtContent.substr(oData.m_unEndPosition, sMhtContent.length() - oData.m_unEndPosition)));
|
||||
return;
|
||||
}
|
||||
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetBegin = oData.m_unEndPosition;
|
||||
|
||||
// name
|
||||
// std::string sName = NSStringFinder::FindProperty(sMhtContent, "name", {"="}, {";", "\\n", "\\r"}, 0, unLastPosition);
|
||||
// unContentPosition = std::max(unContentPosition, unLastPosition);
|
||||
|
||||
// Content-Location
|
||||
oData = NSStringFinder::FindProperty(sMhtContent, "content-location", {":"}, {";", "\\n", "\\r"});
|
||||
std::string sContentLocation{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
|
||||
// Content-ID
|
||||
oData = NSStringFinder::FindProperty(sMhtContent, "content-id", {":"}, {";", "\\n", "\\r"});
|
||||
std::string sContentID{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
{
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
|
||||
NSStringFinder::CutInside<std::string>(sContentID, "<", ">");
|
||||
}
|
||||
|
||||
if (sContentLocation.empty() && !sContentID.empty())
|
||||
sContentLocation = "cid:" + sContentID;
|
||||
|
||||
// Content-Transfer-Encoding
|
||||
oData = NSStringFinder::FindProperty(sMhtContent, "content-transfer-encoding", {":"}, {";", "\\n", "\\r"});
|
||||
const std::string sContentEncoding{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
{
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
|
||||
}
|
||||
|
||||
// charset
|
||||
std::string sCharset = "utf-8";
|
||||
|
||||
if (std::string::npos != unCharsetEnd && unCharsetBegin < unCharsetEnd)
|
||||
{
|
||||
sCharset = NSStringFinder::FindProperty(sMhtContent.substr(unCharsetBegin, unCharsetEnd - unCharsetBegin), "charset", {"="}, {";", "\\n", "\\r"}).m_sValue;
|
||||
NSStringFinder::CutInside<std::string>(sCharset, "\"");
|
||||
}
|
||||
|
||||
// Content
|
||||
std::string sContent = sMhtContent.substr(unContentPosition, sMhtContent.length() - unContentPosition);
|
||||
|
||||
// std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
|
||||
// std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
|
||||
// Основной документ
|
||||
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
|
||||
oRes.WriteString(mhtTohtml(sContent));
|
||||
else if ((NSStringFinder::Find(sContentType, "text") /*&& (sExtention.empty() || NSStringFinder::EqualOf(sExtention, {L"htm", L"html", L"xhtml", L"css"}))*/)
|
||||
|| (NSStringFinder::Equals(sContentType, "application/octet-stream") && NSStringFinder::Find(sContentLocation, "css")))
|
||||
{
|
||||
// Стили заключаются в тэг <style>
|
||||
const bool bAddTagStyle = NSStringFinder::Equals(sContentType, "text/css") /*|| NSStringFinder::Equals(sExtention, L"css")*/ || NSStringFinder::Find(sContentLocation, "css");
|
||||
|
||||
if (bAddTagStyle)
|
||||
oRes.WriteString("<style>");
|
||||
|
||||
if (NSStringFinder::Equals(sContentEncoding, "base64"))
|
||||
sContent = Base64ToString(sContent, sCharset);
|
||||
else if (NSStringFinder::EqualOf(sContentEncoding, {"8bit", "7bit"}) || sContentEncoding.empty())
|
||||
{
|
||||
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
|
||||
}
|
||||
}
|
||||
else if (NSStringFinder::Equals(sContentEncoding, "quoted-printable"))
|
||||
{
|
||||
sContent = QuotedPrintableDecode(sContent, sCharset);
|
||||
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
|
||||
}
|
||||
}
|
||||
|
||||
if (NSStringFinder::Equals(sContentType, "text/html"))
|
||||
sContent = U_TO_UTF8(htmlToXhtml(sContent, false));
|
||||
|
||||
oRes.WriteString(sContent);
|
||||
|
||||
if(bAddTagStyle)
|
||||
oRes.WriteString("</style>");
|
||||
}
|
||||
// Картинки
|
||||
else if ((NSStringFinder::Find(sContentType, "image") /*|| NSStringFinder::Equals(sExtention, L"gif")*/ || NSStringFinder::Equals(sContentType, "application/octet-stream")) &&
|
||||
NSStringFinder::Equals(sContentEncoding, "base64"))
|
||||
{
|
||||
// if (NSStringFinder::Equals(sExtention, L"ico") || NSStringFinder::Find(sContentType, "ico"))
|
||||
// sContentType = "image/jpg";
|
||||
// else if(NSStringFinder::Equals(sExtention, L"gif"))
|
||||
// sContentType = "image/gif";
|
||||
int nSrcLen = (int)sContent.length();
|
||||
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
|
||||
BYTE* pData = new BYTE[nDecodeLen];
|
||||
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
|
||||
sRes.insert(std::make_pair(sContentLocation, "data:" + sContentType + ";base64," + sContent));
|
||||
RELEASEARRAYOBJECTS(pData);
|
||||
}
|
||||
}
|
||||
|
||||
static std::string mhtTohtml(const std::string& sFileContent)
|
||||
{
|
||||
std::map<std::string, std::string> sRes;
|
||||
NSStringUtils::CStringBuilderA oRes;
|
||||
|
||||
// Поиск boundary
|
||||
NSStringFinder::TFoundedData<char> oData{NSStringFinder::FindProperty(sFileContent, "boundary", {"="}, {"\\r", "\\n", "\""})};
|
||||
|
||||
size_t nFound{oData.m_unEndPosition};
|
||||
std::string sBoundary{oData.m_sValue};
|
||||
|
||||
if (sBoundary.empty())
|
||||
{
|
||||
size_t nFoundEnd = sFileContent.length();
|
||||
nFound = 0;
|
||||
ReadMht(sFileContent.substr(nFound, nFoundEnd), sRes, oRes);
|
||||
return oRes.GetData();
|
||||
}
|
||||
|
||||
NSStringFinder::CutInside<std::string>(sBoundary, "\"");
|
||||
|
||||
size_t nFoundEnd{nFound};
|
||||
|
||||
sBoundary = "--" + sBoundary;
|
||||
size_t nBoundaryLength = sBoundary.length();
|
||||
|
||||
nFound = sFileContent.find(sBoundary, nFound) + nBoundaryLength;
|
||||
|
||||
// Цикл по boundary
|
||||
while(nFound != std::string::npos)
|
||||
{
|
||||
nFoundEnd = sFileContent.find(sBoundary, nFound + nBoundaryLength);
|
||||
if(nFoundEnd == std::string::npos)
|
||||
break;
|
||||
|
||||
ReadMht(sFileContent.substr(nFound, nFoundEnd - nFound), sRes, oRes);
|
||||
|
||||
nFound = sFileContent.find(sBoundary, nFoundEnd);
|
||||
}
|
||||
|
||||
std::string sFile = oRes.GetData();
|
||||
for(const std::pair<std::string, std::string>& item : sRes)
|
||||
{
|
||||
std::string sName = item.first;
|
||||
size_t found = sFile.find(sName);
|
||||
size_t sfound = sName.rfind('/');
|
||||
if(found == std::string::npos && sfound != std::string::npos)
|
||||
found = sFile.find(sName.erase(0, sfound + 1));
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
size_t fq = sFile.find_last_of("\"\'>=", found);
|
||||
|
||||
if (std::string::npos == fq)
|
||||
break;
|
||||
|
||||
char ch = sFile[fq];
|
||||
if(ch != '\"' && ch != '\'')
|
||||
fq++;
|
||||
size_t tq = sFile.find_first_of("\"\'<> ", found) + 1;
|
||||
|
||||
if (std::string::npos == tq)
|
||||
break;
|
||||
|
||||
if(sFile[tq] != '\"' && sFile[tq] != '\'')
|
||||
tq--;
|
||||
if(ch != '>')
|
||||
{
|
||||
std::string is = '\"' + item.second + '\"';
|
||||
sFile.replace(fq, tq - fq, is);
|
||||
found = sFile.find(sName, fq + is.length());
|
||||
}
|
||||
else
|
||||
found = sFile.find(sName, tq);
|
||||
}
|
||||
}
|
||||
|
||||
return sFile;
|
||||
}
|
||||
|
||||
// Заменяет сущности &,<,> в text
|
||||
static void substitute_xml_entities_into_text(std::string& text)
|
||||
{
|
||||
// replacing & must come first
|
||||
replace_all(text, "&", "&");
|
||||
replace_all(text, "<", "<");
|
||||
replace_all(text, ">", ">");
|
||||
}
|
||||
|
||||
// After running through Gumbo, the values of type "" are replaced with the corresponding code '0x01'
|
||||
// Since the attribute value does not use control characters (value <= 0x09),
|
||||
// then just delete them, otherwise XmlUtils::CXmlLiteReader crashes on them.
|
||||
// bug#73486
|
||||
static void remove_control_symbols(std::string& text)
|
||||
{
|
||||
std::string::iterator itFound = std::find_if(text.begin(), text.end(), [](unsigned char chValue){ return chValue <= 0x09; });
|
||||
|
||||
while (itFound != text.end())
|
||||
{
|
||||
itFound = text.erase(itFound);
|
||||
itFound = std::find_if(itFound, text.end(), [](unsigned char chValue){ return chValue <= 0x09; });
|
||||
}
|
||||
}
|
||||
|
||||
// Заменяет сущности " в text
|
||||
static void substitute_xml_entities_into_attributes(std::string& text)
|
||||
{
|
||||
remove_control_symbols(text);
|
||||
substitute_xml_entities_into_text(text);
|
||||
replace_all(text, "\"", """);
|
||||
}
|
||||
|
||||
static std::string handle_unknown_tag(GumboStringPiece* text)
|
||||
{
|
||||
if (text->data == NULL)
|
||||
return "";
|
||||
GumboStringPiece gsp = *text;
|
||||
gumbo_tag_from_original_text(&gsp);
|
||||
std::string sAtr = std::string(gsp.data, gsp.length);
|
||||
size_t found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}");
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
sAtr.erase(found, 1);
|
||||
found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}", found);
|
||||
}
|
||||
return sAtr;
|
||||
}
|
||||
|
||||
static std::string get_tag_name(GumboNode* node)
|
||||
{
|
||||
std::string tagname = (node->type == GUMBO_NODE_DOCUMENT ? "document" : gumbo_normalized_tagname(node->v.element.tag));
|
||||
if (tagname.empty())
|
||||
tagname = handle_unknown_tag(&node->v.element.original_tag);
|
||||
return tagname;
|
||||
}
|
||||
|
||||
static void build_doctype(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder)
|
||||
{
|
||||
if (node->v.document.has_doctype)
|
||||
{
|
||||
oBuilder.WriteString("<!DOCTYPE ");
|
||||
oBuilder.WriteString(node->v.document.name);
|
||||
std::string pi(node->v.document.public_identifier);
|
||||
remove_control_symbols(pi);
|
||||
if ((node->v.document.public_identifier != NULL) && !pi.empty())
|
||||
{
|
||||
oBuilder.WriteString(" PUBLIC \"");
|
||||
oBuilder.WriteString(pi);
|
||||
oBuilder.WriteString("\" \"");
|
||||
oBuilder.WriteString(node->v.document.system_identifier);
|
||||
oBuilder.WriteString("\"");
|
||||
}
|
||||
oBuilder.WriteString(">");
|
||||
}
|
||||
}
|
||||
|
||||
static void build_attributes(const GumboVector* attribs, NSStringUtils::CStringBuilderA& atts)
|
||||
{
|
||||
std::vector<std::string> arrRepeat;
|
||||
for (size_t i = 0; i < attribs->length; ++i)
|
||||
{
|
||||
GumboAttribute* at = static_cast<GumboAttribute*>(attribs->data[i]);
|
||||
std::string sVal(at->value);
|
||||
std::string sName(at->name);
|
||||
|
||||
remove_control_symbols(sVal);
|
||||
remove_control_symbols(sName);
|
||||
|
||||
atts.WriteString(" ");
|
||||
|
||||
bool bCheck = false;
|
||||
size_t nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}");
|
||||
while(nBad != std::string::npos)
|
||||
{
|
||||
sName.erase(nBad, 1);
|
||||
nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}", nBad);
|
||||
if(sName.empty())
|
||||
break;
|
||||
bCheck = true;
|
||||
}
|
||||
if(sName.empty())
|
||||
continue;
|
||||
while(sName.front() >= '0' && sName.front() <= '9')
|
||||
{
|
||||
sName.erase(0, 1);
|
||||
if(sName.empty())
|
||||
break;
|
||||
bCheck = true;
|
||||
}
|
||||
if(bCheck)
|
||||
{
|
||||
GumboAttribute* check = gumbo_get_attribute(attribs, sName.c_str());
|
||||
if(check || std::find(arrRepeat.begin(), arrRepeat.end(), sName) != arrRepeat.end())
|
||||
continue;
|
||||
else
|
||||
arrRepeat.push_back(sName);
|
||||
}
|
||||
|
||||
if(sName.empty())
|
||||
continue;
|
||||
atts.WriteString(sName);
|
||||
|
||||
// determine original quote character used if it exists
|
||||
std::string qs ="\"";
|
||||
atts.WriteString("=");
|
||||
atts.WriteString(qs);
|
||||
substitute_xml_entities_into_attributes(sVal);
|
||||
atts.WriteString(sVal);
|
||||
atts.WriteString(qs);
|
||||
}
|
||||
}
|
||||
|
||||
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode = true);
|
||||
|
||||
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents, bool bCheckValidNode)
|
||||
{
|
||||
std::string key = "|" + get_tag_name(node) + "|";
|
||||
bool keep_whitespace = preserve_whitespace.find(key) != std::string::npos;
|
||||
bool is_inline = nonbreaking_inline.find(key) != std::string::npos;
|
||||
bool is_like_inline = treat_like_inline.find(key) != std::string::npos;
|
||||
|
||||
GumboVector* children = &node->v.element.children;
|
||||
|
||||
for (size_t i = 0; i < children->length; i++)
|
||||
{
|
||||
GumboNode* child = static_cast<GumboNode*> (children->data[i]);
|
||||
|
||||
if (child->type == GUMBO_NODE_TEXT)
|
||||
{
|
||||
std::string val(child->v.text.text);
|
||||
remove_control_symbols(val);
|
||||
substitute_xml_entities_into_text(val);
|
||||
|
||||
// Избавление от FF
|
||||
size_t found = val.find_first_of("\014");
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
val.erase(found, 1);
|
||||
found = val.find_first_of("\014", found);
|
||||
}
|
||||
|
||||
contents.WriteString(val);
|
||||
}
|
||||
else if ((child->type == GUMBO_NODE_ELEMENT) || (child->type == GUMBO_NODE_TEMPLATE))
|
||||
prettyprint(child, contents, bCheckValidNode);
|
||||
else if (child->type == GUMBO_NODE_WHITESPACE)
|
||||
{
|
||||
if (keep_whitespace || is_inline || is_like_inline)
|
||||
contents.WriteString(child->v.text.text);
|
||||
}
|
||||
else if (child->type != GUMBO_NODE_COMMENT)
|
||||
{
|
||||
// Сообщение об ошибке
|
||||
// Does this actually exist: (child->type == GUMBO_NODE_CDATA)
|
||||
// fprintf(stderr, "unknown element of type: %d\n", child->type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode)
|
||||
{
|
||||
// special case the document node
|
||||
if (node->type == GUMBO_NODE_DOCUMENT)
|
||||
{
|
||||
build_doctype(node, oBuilder);
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string tagname = get_tag_name(node);
|
||||
remove_control_symbols(tagname);
|
||||
|
||||
if (NodeIsUnprocessed(tagname))
|
||||
return;
|
||||
|
||||
if (bCheckValidNode)
|
||||
bCheckValidNode = !IsUnckeckedNodes(tagname);
|
||||
|
||||
if (bCheckValidNode && html_tags.end() == std::find(html_tags.begin(), html_tags.end(), tagname))
|
||||
{
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string close = "";
|
||||
std::string closeTag = "";
|
||||
std::string key = "|" + tagname + "|";
|
||||
bool is_empty_tag = empty_tags.find(key) != std::string::npos;
|
||||
|
||||
// determine closing tag type
|
||||
if (is_empty_tag)
|
||||
close = "/";
|
||||
else
|
||||
closeTag = "</" + tagname + ">";
|
||||
|
||||
// build results
|
||||
oBuilder.WriteString("<" + tagname);
|
||||
|
||||
// build attr string
|
||||
const GumboVector* attribs = &node->v.element.attributes;
|
||||
build_attributes(attribs, oBuilder);
|
||||
oBuilder.WriteString(close + ">");
|
||||
|
||||
// prettyprint your contents
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
oBuilder.WriteString(closeTag);
|
||||
}
|
||||
|
||||
std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert)
|
||||
{
|
||||
if (bNeedConvert)
|
||||
{ // Определение кодировки
|
||||
std::string sEncoding = NSStringFinder::FindProperty(sFileContent, "charset", {"="}, {";", "\\n", "\\r", " ", "\"", "'"}).m_sValue;
|
||||
|
||||
if (sEncoding.empty())
|
||||
sEncoding = NSStringFinder::FindProperty(sFileContent, "encoding", {"="}, {";", "\\n", "\\r", " "}).m_sValue;
|
||||
|
||||
if (!sEncoding.empty() && !NSStringFinder::Equals("utf-8", sEncoding))
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sFileContent = U_TO_UTF8(oConverter.toUnicode(sFileContent, sEncoding.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
// Избавляемся от лишних символов до <...
|
||||
boost::regex oRegex("<[a-zA-Z]");
|
||||
boost::match_results<typename std::string::const_iterator> oResult;
|
||||
|
||||
if (boost::regex_search(sFileContent, oResult, oRegex))
|
||||
sFileContent.erase(0, oResult.position());
|
||||
|
||||
//Избавление от <a ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "a"));
|
||||
//Избавление от <title ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "title"));
|
||||
//Избавление от <script ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "script"));
|
||||
|
||||
// Gumbo
|
||||
GumboOptions options = kGumboDefaultOptions;
|
||||
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
|
||||
|
||||
// prettyprint
|
||||
NSStringUtils::CStringBuilderA oBuilder;
|
||||
prettyprint(output->document, oBuilder);
|
||||
|
||||
// Конвертирование из string utf8 в wstring
|
||||
return UTF8_TO_U(oBuilder.GetData());
|
||||
}
|
||||
|
||||
std::wstring mhtToXhtml(std::string& sFileContent)
|
||||
{
|
||||
sFileContent = mhtTohtml(sFileContent);
|
||||
|
||||
// Gumbo
|
||||
GumboOptions options = kGumboDefaultOptions;
|
||||
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
|
||||
|
||||
// prettyprint
|
||||
NSStringUtils::CStringBuilderA oBuilder;
|
||||
prettyprint(output->document, oBuilder);
|
||||
|
||||
// Конвертирование из string utf8 в wstring
|
||||
return UTF8_TO_U(oBuilder.GetData());
|
||||
}
|
||||
}
|
||||
@ -2,11 +2,628 @@
|
||||
#define HTMLTOXHTML_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <cctype>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
namespace HTML
|
||||
#include "gumbo-parser/src/gumbo.h"
|
||||
#include "../../../DesktopEditor/common/File.h"
|
||||
#include "../../../DesktopEditor/common/Directory.h"
|
||||
#include "../../../DesktopEditor/common/StringBuilder.h"
|
||||
#include "../../../DesktopEditor/xml/include/xmlutils.h"
|
||||
#include "../../../UnicodeConverter/UnicodeConverter.h"
|
||||
#include "../../../HtmlFile2/src/StringFinder.h"
|
||||
|
||||
static std::string nonbreaking_inline = "|a|abbr|acronym|b|bdo|big|cite|code|dfn|em|font|i|img|kbd|nobr|s|small|span|strike|strong|sub|sup|tt|";
|
||||
static std::string empty_tags = "|area|base|basefont|bgsound|br|command|col|embed|event-source|frame|hr|image|img|input|keygen|link|menuitem|meta|param|source|spacer|track|wbr|";
|
||||
static std::string preserve_whitespace = "|pre|textarea|script|style|";
|
||||
static std::string special_handling = "|html|body|";
|
||||
static std::string no_entity_sub = ""; //"|style|";
|
||||
static std::string treat_like_inline = "|p|";
|
||||
|
||||
static std::vector<std::string> html_tags = {"div","span","a","img","p","h1","h2","h3","h4","h5","h6",
|
||||
"ul", "ol", "li","td","tr","table","thead","tbody","tfoot","th",
|
||||
"br","form","input","button","section","nav","header","footer",
|
||||
"main","figure","figcaption","strong","em","i", "b", "u","pre",
|
||||
"code","blockquote","hr","script","link","meta","style","title",
|
||||
"head","body","html","legend","optgroup","option","select","dl",
|
||||
"dt","dd","time","data","abbr","address","area","base","bdi",
|
||||
"bdo","cite","col","iframe","video","source","track","textarea",
|
||||
"label","fieldset","colgroup","del","ins","details","summary",
|
||||
"dialog","embed","kbd","map","mark","menu","meter","object",
|
||||
"output","param","progress","q","samp","small","sub","sup","var",
|
||||
"wbr","acronym","applet","article","aside","audio","basefont",
|
||||
"bgsound","big","blink","canvas","caption","center","command",
|
||||
"comment","datalist","dfn","dir","font","frame","frameset",
|
||||
"hgroup","isindex","keygen","marquee","nobr","noembed","noframes",
|
||||
"noscript","plaintext","rp","rt","ruby","s","strike","tt","xmp"};
|
||||
|
||||
static std::vector<std::string> unchecked_nodes_new = {"svg"};
|
||||
|
||||
static void prettyprint(GumboNode*, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode = true);
|
||||
static std::string mhtTohtml(const std::string &sFileContent);
|
||||
|
||||
// Заменяет в строке s все символы s1 на s2
|
||||
static void replace_all(std::string& s, const std::string& s1, const std::string& s2)
|
||||
{
|
||||
std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert);
|
||||
std::wstring mhtToXhtml(std::string& sFileContent);
|
||||
size_t pos = s.find(s1);
|
||||
while(pos != std::string::npos)
|
||||
{
|
||||
s.replace(pos, s1.length(), s2);
|
||||
pos = s.find(s1, pos + s2.length());
|
||||
}
|
||||
}
|
||||
|
||||
static bool IsUnckeckedNodes(const std::string& sValue)
|
||||
{
|
||||
return unchecked_nodes_new.end() != std::find(unchecked_nodes_new.begin(), unchecked_nodes_new.end(), sValue);
|
||||
}
|
||||
|
||||
static std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert)
|
||||
{
|
||||
if (bNeedConvert)
|
||||
{ // Определение кодировки
|
||||
std::string sEncoding = NSStringFinder::FindPropety(sFileContent, "charset", {"="}, {";", "\\n", "\\r", " ", "\""}).m_sValue;
|
||||
|
||||
if (sEncoding.empty())
|
||||
sEncoding = NSStringFinder::FindPropety(sFileContent, "encoding", {"="}, {";", "\\n", "\\r", " "}).m_sValue;
|
||||
|
||||
if (!sEncoding.empty() && !NSStringFinder::Equals("utf-8", sEncoding))
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sFileContent = U_TO_UTF8(oConverter.toUnicode(sFileContent, sEncoding.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
// Избавляемся от лишних символов до <...
|
||||
boost::regex oRegex("<[a-zA-Z]");
|
||||
boost::match_results<typename std::string::const_iterator> oResult;
|
||||
|
||||
if (boost::regex_search(sFileContent, oResult, oRegex))
|
||||
sFileContent.erase(0, oResult.position());
|
||||
|
||||
//Избавление от <a ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "a"));
|
||||
//Избавление от <title ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "title"));
|
||||
//Избавление от <script ... />
|
||||
while (NSStringFinder::RemoveEmptyTag(sFileContent, "script"));
|
||||
|
||||
// Gumbo
|
||||
GumboOptions options = kGumboDefaultOptions;
|
||||
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
|
||||
|
||||
// prettyprint
|
||||
NSStringUtils::CStringBuilderA oBuilder;
|
||||
prettyprint(output->document, oBuilder);
|
||||
|
||||
// Конвертирование из string utf8 в wstring
|
||||
return UTF8_TO_U(oBuilder.GetData());
|
||||
}
|
||||
|
||||
static std::string Base64ToString(const std::string& sContent, const std::string& sCharset)
|
||||
{
|
||||
std::string sRes;
|
||||
int nSrcLen = (int)sContent.length();
|
||||
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
|
||||
BYTE* pData = new BYTE[nDecodeLen];
|
||||
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
|
||||
{
|
||||
std::wstring sConvert;
|
||||
if(!sCharset.empty() && NSStringFinder::Equals<std::string>("utf-8", sCharset))
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sConvert = oConverter.toUnicode(reinterpret_cast<char *>(pData), (unsigned)nDecodeLen, sCharset.data());
|
||||
}
|
||||
sRes = sConvert.empty() ? std::string(reinterpret_cast<char *>(pData), nDecodeLen) : U_TO_UTF8(sConvert);
|
||||
}
|
||||
RELEASEARRAYOBJECTS(pData);
|
||||
return sRes;
|
||||
}
|
||||
|
||||
static std::string QuotedPrintableDecode(const std::string& sContent, std::string& sCharset)
|
||||
{
|
||||
NSStringUtils::CStringBuilderA sRes;
|
||||
size_t ip = 0;
|
||||
size_t i = sContent.find('=');
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
size_t nIgnore = 12;
|
||||
std::string charset = sContent.substr(0, nIgnore);
|
||||
if(charset == "=00=00=FE=FF")
|
||||
sCharset = "UTF-32BE";
|
||||
else if(charset == "=FF=FE=00=00")
|
||||
sCharset = "UTF-32LE";
|
||||
else if(charset == "=2B=2F=76=38" || charset == "=2B=2F=76=39" ||
|
||||
charset == "=2B=2F=76=2B" || charset == "=2B=2F=76=2F")
|
||||
sCharset = "UTF-7";
|
||||
else if(charset == "=DD=73=66=73")
|
||||
sCharset = "UTF-EBCDIC";
|
||||
else if(charset == "=84=31=95=33")
|
||||
sCharset = "GB-18030";
|
||||
else
|
||||
{
|
||||
nIgnore -= 3;
|
||||
charset.erase(nIgnore);
|
||||
if(charset == "=EF=BB=BF")
|
||||
sCharset = "UTF-8";
|
||||
else if(charset == "=F7=64=4C")
|
||||
sCharset = "UTF-1";
|
||||
else if(charset == "=0E=FE=FF")
|
||||
sCharset = "SCSU";
|
||||
else if(charset == "=FB=EE=28")
|
||||
sCharset = "BOCU-1";
|
||||
else
|
||||
{
|
||||
nIgnore -= 3;
|
||||
charset.erase(nIgnore);
|
||||
if(charset == "=FE=FF")
|
||||
sCharset = "UTF-16BE";
|
||||
else if(charset == "=FF=FE")
|
||||
sCharset = "UTF-16LE";
|
||||
else
|
||||
nIgnore -= 6;
|
||||
}
|
||||
}
|
||||
|
||||
ip = nIgnore;
|
||||
i = sContent.find('=', ip);
|
||||
}
|
||||
|
||||
while(i != std::string::npos && i + 2 < sContent.length())
|
||||
{
|
||||
sRes.WriteString(sContent.c_str() + ip, i - ip);
|
||||
std::string str = sContent.substr(i + 1, 2);
|
||||
if(str.front() == '\n' || str.front() == '\r')
|
||||
{
|
||||
char ch = str[1];
|
||||
if(ch != '\n' && ch != '\r')
|
||||
sRes.WriteString(&ch, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
char* err;
|
||||
char ch = (int)strtol(str.data(), &err, 16);
|
||||
if(*err)
|
||||
sRes.WriteString('=' + str);
|
||||
else
|
||||
sRes.WriteString(&ch, 1);
|
||||
}
|
||||
ip = i + 3;
|
||||
i = sContent.find('=', ip);
|
||||
}
|
||||
if(ip != std::string::npos)
|
||||
sRes.WriteString(sContent.c_str() + ip);
|
||||
return sRes.GetData();
|
||||
}
|
||||
|
||||
static void ReadMht(const std::string& sMhtContent, std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
|
||||
{
|
||||
size_t unContentPosition = 0, unCharsetBegin = 0, unCharsetEnd = std::string::npos;
|
||||
|
||||
NSStringFinder::TFoundedData<char> oData;
|
||||
|
||||
// Content-Type
|
||||
oData = NSStringFinder::FindPropety(sMhtContent, "content-type", {":"}, {";", "\\n", "\\r"});
|
||||
const std::string sContentType{oData.m_sValue};
|
||||
|
||||
if (sContentType.empty())
|
||||
return;
|
||||
|
||||
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
|
||||
{
|
||||
oRes.WriteString(mhtTohtml(sMhtContent.substr(oData.m_unEndPosition, sMhtContent.length() - oData.m_unEndPosition)));
|
||||
return;
|
||||
}
|
||||
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetBegin = oData.m_unEndPosition;
|
||||
|
||||
// name
|
||||
// std::string sName = NSStringFinder::FindPropety(sMhtContent, "name", {"="}, {";", "\\n", "\\r"}, 0, unLastPosition);
|
||||
// unContentPosition = std::max(unContentPosition, unLastPosition);
|
||||
|
||||
// Content-Location
|
||||
oData = NSStringFinder::FindPropety(sMhtContent, "content-location", {":"}, {";", "\\n", "\\r"});
|
||||
std::string sContentLocation{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
|
||||
// Content-ID
|
||||
oData = NSStringFinder::FindPropety(sMhtContent, "content-id", {":"}, {";", "\\n", "\\r"});
|
||||
std::string sContentID{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
{
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
|
||||
NSStringFinder::CutInside<std::string>(sContentID, "<", ">");
|
||||
}
|
||||
|
||||
if (sContentLocation.empty() && !sContentID.empty())
|
||||
sContentLocation = "cid:" + sContentID;
|
||||
|
||||
// Content-Transfer-Encoding
|
||||
oData = NSStringFinder::FindPropety(sMhtContent, "content-transfer-encoding", {":"}, {";", "\\n", "\\r"});
|
||||
const std::string sContentEncoding{oData.m_sValue};
|
||||
|
||||
if (!oData.Empty())
|
||||
{
|
||||
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
|
||||
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
|
||||
}
|
||||
|
||||
// charset
|
||||
std::string sCharset = "utf-8";
|
||||
|
||||
if (std::string::npos != unCharsetEnd && unCharsetBegin < unCharsetEnd)
|
||||
{
|
||||
sCharset = NSStringFinder::FindPropety(sMhtContent.substr(unCharsetBegin, unCharsetEnd - unCharsetBegin), "charset", {"="}, {";", "\\n", "\\r"}).m_sValue;
|
||||
NSStringFinder::CutInside<std::string>(sCharset, "\"");
|
||||
}
|
||||
|
||||
// Content
|
||||
std::string sContent = sMhtContent.substr(unContentPosition, sMhtContent.length() - unContentPosition);
|
||||
|
||||
// std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
|
||||
// std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
|
||||
// Основной документ
|
||||
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
|
||||
oRes.WriteString(mhtTohtml(sContent));
|
||||
else if ((NSStringFinder::Find(sContentType, "text") /*&& (sExtention.empty() || NSStringFinder::EqualOf(sExtention, {L"htm", L"html", L"xhtml", L"css"}))*/)
|
||||
|| (NSStringFinder::Equals(sContentType, "application/octet-stream") && NSStringFinder::Find(sContentLocation, "css")))
|
||||
{
|
||||
// Стили заключаются в тэг <style>
|
||||
const bool bAddTagStyle = NSStringFinder::Equals(sContentType, "text/css") /*|| NSStringFinder::Equals(sExtention, L"css")*/ || NSStringFinder::Find(sContentLocation, "css");
|
||||
|
||||
if (bAddTagStyle)
|
||||
oRes.WriteString("<style>");
|
||||
|
||||
if (NSStringFinder::Equals(sContentEncoding, "base64"))
|
||||
sContent = Base64ToString(sContent, sCharset);
|
||||
else if (NSStringFinder::EqualOf(sContentEncoding, {"8bit", "7bit"}) || sContentEncoding.empty())
|
||||
{
|
||||
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
|
||||
}
|
||||
}
|
||||
else if (NSStringFinder::Equals(sContentEncoding, "quoted-printable"))
|
||||
{
|
||||
sContent = QuotedPrintableDecode(sContent, sCharset);
|
||||
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
|
||||
{
|
||||
NSUnicodeConverter::CUnicodeConverter oConverter;
|
||||
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
|
||||
}
|
||||
}
|
||||
|
||||
if (NSStringFinder::Equals(sContentType, "text/html"))
|
||||
sContent = U_TO_UTF8(htmlToXhtml(sContent, false));
|
||||
|
||||
oRes.WriteString(sContent);
|
||||
|
||||
if(bAddTagStyle)
|
||||
oRes.WriteString("</style>");
|
||||
}
|
||||
// Картинки
|
||||
else if ((NSStringFinder::Find(sContentType, "image") /*|| NSStringFinder::Equals(sExtention, L"gif")*/ || NSStringFinder::Equals(sContentType, "application/octet-stream")) &&
|
||||
NSStringFinder::Equals(sContentEncoding, "base64"))
|
||||
{
|
||||
// if (NSStringFinder::Equals(sExtention, L"ico") || NSStringFinder::Find(sContentType, "ico"))
|
||||
// sContentType = "image/jpg";
|
||||
// else if(NSStringFinder::Equals(sExtention, L"gif"))
|
||||
// sContentType = "image/gif";
|
||||
int nSrcLen = (int)sContent.length();
|
||||
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
|
||||
BYTE* pData = new BYTE[nDecodeLen];
|
||||
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
|
||||
sRes.insert(std::make_pair(sContentLocation, "data:" + sContentType + ";base64," + sContent));
|
||||
RELEASEARRAYOBJECTS(pData);
|
||||
}
|
||||
}
|
||||
|
||||
static std::string mhtTohtml(const std::string& sFileContent)
|
||||
{
|
||||
std::map<std::string, std::string> sRes;
|
||||
NSStringUtils::CStringBuilderA oRes;
|
||||
|
||||
// Поиск boundary
|
||||
NSStringFinder::TFoundedData<char> oData{NSStringFinder::FindPropety(sFileContent, "boundary", {"="}, {"\\r", "\\n", "\""})};
|
||||
|
||||
size_t nFound{oData.m_unEndPosition};
|
||||
std::string sBoundary{oData.m_sValue};
|
||||
|
||||
if (sBoundary.empty())
|
||||
{
|
||||
size_t nFoundEnd = sFileContent.length();
|
||||
nFound = 0;
|
||||
ReadMht(sFileContent.substr(nFound, nFoundEnd), sRes, oRes);
|
||||
return oRes.GetData();
|
||||
}
|
||||
|
||||
NSStringFinder::CutInside<std::string>(sBoundary, "\"");
|
||||
|
||||
size_t nFoundEnd{nFound};
|
||||
|
||||
sBoundary = "--" + sBoundary;
|
||||
size_t nBoundaryLength = sBoundary.length();
|
||||
|
||||
nFound = sFileContent.find(sBoundary, nFound) + nBoundaryLength;
|
||||
|
||||
// Цикл по boundary
|
||||
while(nFound != std::string::npos)
|
||||
{
|
||||
nFoundEnd = sFileContent.find(sBoundary, nFound + nBoundaryLength);
|
||||
if(nFoundEnd == std::string::npos)
|
||||
break;
|
||||
|
||||
ReadMht(sFileContent.substr(nFound, nFoundEnd - nFound), sRes, oRes);
|
||||
|
||||
nFound = sFileContent.find(sBoundary, nFoundEnd);
|
||||
}
|
||||
|
||||
std::string sFile = oRes.GetData();
|
||||
for(const std::pair<std::string, std::string>& item : sRes)
|
||||
{
|
||||
std::string sName = item.first;
|
||||
size_t found = sFile.find(sName);
|
||||
size_t sfound = sName.rfind('/');
|
||||
if(found == std::string::npos && sfound != std::string::npos)
|
||||
found = sFile.find(sName.erase(0, sfound + 1));
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
size_t fq = sFile.find_last_of("\"\'>=", found);
|
||||
|
||||
if (std::string::npos == fq)
|
||||
break;
|
||||
|
||||
char ch = sFile[fq];
|
||||
if(ch != '\"' && ch != '\'')
|
||||
fq++;
|
||||
size_t tq = sFile.find_first_of("\"\'<> ", found) + 1;
|
||||
|
||||
if (std::string::npos == tq)
|
||||
break;
|
||||
|
||||
if(sFile[tq] != '\"' && sFile[tq] != '\'')
|
||||
tq--;
|
||||
if(ch != '>')
|
||||
{
|
||||
std::string is = '\"' + item.second + '\"';
|
||||
sFile.replace(fq, tq - fq, is);
|
||||
found = sFile.find(sName, fq + is.length());
|
||||
}
|
||||
else
|
||||
found = sFile.find(sName, tq);
|
||||
}
|
||||
}
|
||||
|
||||
return sFile;
|
||||
}
|
||||
|
||||
static std::wstring mhtToXhtml(std::string& sFileContent)
|
||||
{
|
||||
sFileContent = mhtTohtml(sFileContent);
|
||||
|
||||
// Gumbo
|
||||
GumboOptions options = kGumboDefaultOptions;
|
||||
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
|
||||
|
||||
// prettyprint
|
||||
NSStringUtils::CStringBuilderA oBuilder;
|
||||
prettyprint(output->document, oBuilder);
|
||||
|
||||
// Конвертирование из string utf8 в wstring
|
||||
return UTF8_TO_U(oBuilder.GetData());
|
||||
}
|
||||
|
||||
// Заменяет сущности &,<,> в text
|
||||
static void substitute_xml_entities_into_text(std::string& text)
|
||||
{
|
||||
// replacing & must come first
|
||||
replace_all(text, "&", "&");
|
||||
replace_all(text, "<", "<");
|
||||
replace_all(text, ">", ">");
|
||||
}
|
||||
|
||||
// Заменяет сущности " в text
|
||||
static void substitute_xml_entities_into_attributes(std::string& text)
|
||||
{
|
||||
substitute_xml_entities_into_text(text);
|
||||
replace_all(text, "\"", """);
|
||||
}
|
||||
|
||||
static std::string handle_unknown_tag(GumboStringPiece* text)
|
||||
{
|
||||
if (text->data == NULL)
|
||||
return "";
|
||||
GumboStringPiece gsp = *text;
|
||||
gumbo_tag_from_original_text(&gsp);
|
||||
std::string sAtr = std::string(gsp.data, gsp.length);
|
||||
size_t found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}");
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
sAtr.erase(found, 1);
|
||||
found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}", found);
|
||||
}
|
||||
return sAtr;
|
||||
}
|
||||
|
||||
static std::string get_tag_name(GumboNode* node)
|
||||
{
|
||||
std::string tagname = (node->type == GUMBO_NODE_DOCUMENT ? "document" : gumbo_normalized_tagname(node->v.element.tag));
|
||||
if (tagname.empty())
|
||||
tagname = handle_unknown_tag(&node->v.element.original_tag);
|
||||
return tagname;
|
||||
}
|
||||
|
||||
static void build_doctype(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder)
|
||||
{
|
||||
if (node->v.document.has_doctype)
|
||||
{
|
||||
oBuilder.WriteString("<!DOCTYPE ");
|
||||
oBuilder.WriteString(node->v.document.name);
|
||||
std::string pi(node->v.document.public_identifier);
|
||||
if ((node->v.document.public_identifier != NULL) && !pi.empty())
|
||||
{
|
||||
oBuilder.WriteString(" PUBLIC \"");
|
||||
oBuilder.WriteString(pi);
|
||||
oBuilder.WriteString("\" \"");
|
||||
oBuilder.WriteString(node->v.document.system_identifier);
|
||||
oBuilder.WriteString("\"");
|
||||
}
|
||||
oBuilder.WriteString(">");
|
||||
}
|
||||
}
|
||||
|
||||
static void build_attributes(const GumboVector* attribs, bool no_entities, NSStringUtils::CStringBuilderA& atts)
|
||||
{
|
||||
std::vector<std::string> arrRepeat;
|
||||
for (size_t i = 0; i < attribs->length; ++i)
|
||||
{
|
||||
GumboAttribute* at = static_cast<GumboAttribute*>(attribs->data[i]);
|
||||
std::string sVal(at->value);
|
||||
std::string sName(at->name);
|
||||
atts.WriteString(" ");
|
||||
|
||||
bool bCheck = false;
|
||||
size_t nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}");
|
||||
while(nBad != std::string::npos)
|
||||
{
|
||||
sName.erase(nBad, 1);
|
||||
nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}", nBad);
|
||||
if(sName.empty())
|
||||
break;
|
||||
bCheck = true;
|
||||
}
|
||||
if(sName.empty())
|
||||
continue;
|
||||
while(sName.front() >= '0' && sName.front() <= '9')
|
||||
{
|
||||
sName.erase(0, 1);
|
||||
if(sName.empty())
|
||||
break;
|
||||
bCheck = true;
|
||||
}
|
||||
if(bCheck)
|
||||
{
|
||||
GumboAttribute* check = gumbo_get_attribute(attribs, sName.c_str());
|
||||
if(check || std::find(arrRepeat.begin(), arrRepeat.end(), sName) != arrRepeat.end())
|
||||
continue;
|
||||
else
|
||||
arrRepeat.push_back(sName);
|
||||
}
|
||||
|
||||
if(sName.empty())
|
||||
continue;
|
||||
atts.WriteString(sName);
|
||||
|
||||
// determine original quote character used if it exists
|
||||
std::string qs ="\"";
|
||||
atts.WriteString("=");
|
||||
atts.WriteString(qs);
|
||||
if(!no_entities)
|
||||
substitute_xml_entities_into_attributes(sVal);
|
||||
atts.WriteString(sVal);
|
||||
atts.WriteString(qs);
|
||||
}
|
||||
}
|
||||
|
||||
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents, bool bCheckValidNode)
|
||||
{
|
||||
std::string key = "|" + get_tag_name(node) + "|";
|
||||
bool no_entity_substitution = no_entity_sub.find(key) != std::string::npos;
|
||||
bool keep_whitespace = preserve_whitespace.find(key) != std::string::npos;
|
||||
bool is_inline = nonbreaking_inline.find(key) != std::string::npos;
|
||||
bool is_like_inline = treat_like_inline.find(key) != std::string::npos;
|
||||
|
||||
GumboVector* children = &node->v.element.children;
|
||||
|
||||
for (size_t i = 0; i < children->length; i++)
|
||||
{
|
||||
GumboNode* child = static_cast<GumboNode*> (children->data[i]);
|
||||
|
||||
if (child->type == GUMBO_NODE_TEXT)
|
||||
{
|
||||
std::string val(child->v.text.text);
|
||||
if(!no_entity_substitution)
|
||||
substitute_xml_entities_into_text(val);
|
||||
|
||||
// Избавление от FF
|
||||
size_t found = val.find_first_of("\014");
|
||||
while(found != std::string::npos)
|
||||
{
|
||||
val.erase(found, 1);
|
||||
found = val.find_first_of("\014", found);
|
||||
}
|
||||
|
||||
contents.WriteString(val);
|
||||
}
|
||||
else if ((child->type == GUMBO_NODE_ELEMENT) || (child->type == GUMBO_NODE_TEMPLATE))
|
||||
prettyprint(child, contents, bCheckValidNode);
|
||||
else if (child->type == GUMBO_NODE_WHITESPACE)
|
||||
{
|
||||
if (keep_whitespace || is_inline || is_like_inline)
|
||||
contents.WriteString(child->v.text.text);
|
||||
}
|
||||
else if (child->type != GUMBO_NODE_COMMENT)
|
||||
{
|
||||
// Сообщение об ошибке
|
||||
// Does this actually exist: (child->type == GUMBO_NODE_CDATA)
|
||||
// fprintf(stderr, "unknown element of type: %d\n", child->type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode)
|
||||
{
|
||||
// special case the document node
|
||||
if (node->type == GUMBO_NODE_DOCUMENT)
|
||||
{
|
||||
build_doctype(node, oBuilder);
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string tagname = get_tag_name(node);
|
||||
|
||||
if (bCheckValidNode)
|
||||
bCheckValidNode = !IsUnckeckedNodes(tagname);
|
||||
|
||||
if (bCheckValidNode && html_tags.end() == std::find(html_tags.begin(), html_tags.end(), tagname))
|
||||
{
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string close = "";
|
||||
std::string closeTag = "";
|
||||
std::string key = "|" + tagname + "|";
|
||||
bool is_empty_tag = empty_tags.find(key) != std::string::npos;
|
||||
bool no_entity_substitution = no_entity_sub.find(key) != std::string::npos;
|
||||
|
||||
// determine closing tag type
|
||||
if (is_empty_tag)
|
||||
close = "/";
|
||||
else
|
||||
closeTag = "</" + tagname + ">";
|
||||
|
||||
// build results
|
||||
oBuilder.WriteString("<" + tagname);
|
||||
|
||||
// build attr string
|
||||
const GumboVector* attribs = &node->v.element.attributes;
|
||||
build_attributes(attribs, no_entity_substitution, oBuilder);
|
||||
oBuilder.WriteString(close + ">");
|
||||
|
||||
// prettyprint your contents
|
||||
prettyprint_contents(node, oBuilder, bCheckValidNode);
|
||||
oBuilder.WriteString(closeTag);
|
||||
}
|
||||
|
||||
#endif // HTMLTOXHTML_H
|
||||
|
||||
1
Common/3dParty/hunspell/.gitignore
vendored
1
Common/3dParty/hunspell/.gitignore
vendored
@ -2,4 +2,3 @@ emsdk/
|
||||
hunspell/
|
||||
deploy/
|
||||
o
|
||||
hunspell.data
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
import subprocess
|
||||
|
||||
curDirectory = os.path.dirname(os.path.realpath(__file__))
|
||||
dictionatiesDirectory = curDirectory + "/../../../../../dictionaries"
|
||||
|
||||
all_dictionaties = {}
|
||||
for dir in glob.glob(dictionatiesDirectory + "/*"):
|
||||
if not os.path.isdir(dir):
|
||||
continue
|
||||
dictionaryName = os.path.basename(dir)
|
||||
configFile = dictionatiesDirectory + "/" + dictionaryName + "/" + dictionaryName + ".json"
|
||||
if not os.path.isfile(configFile):
|
||||
continue
|
||||
isHyphen = False
|
||||
hyphenFile = dictionatiesDirectory + "/" + dictionaryName + "/hyph_" + dictionaryName + ".dic"
|
||||
if os.path.isfile(hyphenFile):
|
||||
isHyphen = True
|
||||
with open(configFile, 'r', encoding='utf-8') as file:
|
||||
data = json.loads(file.read())
|
||||
for lang in data["codes"]:
|
||||
all_dictionaties[str(lang)] = {
|
||||
"name": dictionaryName,
|
||||
"hyphen": isHyphen
|
||||
}
|
||||
|
||||
content = ""
|
||||
content += "#define DictionaryRec_count " + str(len(all_dictionaties)) + "\n"
|
||||
content += "typedef struct {\n"
|
||||
content += " const char* m_name;\n"
|
||||
content += " int m_lang;\n"
|
||||
content += "} DictionaryRec;\n\n"
|
||||
content += "static const DictionaryRec Dictionaries[DictionaryRec_count] = {\n"
|
||||
|
||||
for lang in all_dictionaties:
|
||||
info = all_dictionaties[lang]
|
||||
content += " { \"" + info["name"] + "\", " + str(lang) + " },\n"
|
||||
content += "};\n"
|
||||
|
||||
with open("./records.h", 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
@ -1,73 +0,0 @@
|
||||
#define DictionaryRec_count 65
|
||||
typedef struct {
|
||||
const char* m_name;
|
||||
int m_lang;
|
||||
} DictionaryRec;
|
||||
|
||||
static const DictionaryRec Dictionaries[DictionaryRec_count] = {
|
||||
{ "ar", 1025 },
|
||||
{ "ar", 2049 },
|
||||
{ "ar", 3073 },
|
||||
{ "ar", 4097 },
|
||||
{ "ar", 5121 },
|
||||
{ "ar", 6145 },
|
||||
{ "ar", 7169 },
|
||||
{ "ar", 8193 },
|
||||
{ "ar", 9217 },
|
||||
{ "ar", 10241 },
|
||||
{ "ar", 11265 },
|
||||
{ "ar", 12289 },
|
||||
{ "ar", 13313 },
|
||||
{ "ar", 14337 },
|
||||
{ "ar", 15361 },
|
||||
{ "ar", 16385 },
|
||||
{ "az_Latn_AZ", 1068 },
|
||||
{ "bg_BG", 1026 },
|
||||
{ "ca_ES", 1027 },
|
||||
{ "ca_ES_valencia", 2051 },
|
||||
{ "cs_CZ", 1029 },
|
||||
{ "da_DK", 1030 },
|
||||
{ "de_AT", 3079 },
|
||||
{ "de_CH", 2055 },
|
||||
{ "de_DE", 1031 },
|
||||
{ "el_GR", 1032 },
|
||||
{ "en_AU", 3081 },
|
||||
{ "en_CA", 4105 },
|
||||
{ "en_GB", 2057 },
|
||||
{ "en_US", 1033 },
|
||||
{ "en_ZA", 7177 },
|
||||
{ "es_ES", 3082 },
|
||||
{ "eu_ES", 1069 },
|
||||
{ "fr_FR", 1036 },
|
||||
{ "gl_ES", 1110 },
|
||||
{ "hr_HR", 1050 },
|
||||
{ "hu_HU", 1038 },
|
||||
{ "id_ID", 1057 },
|
||||
{ "it_IT", 1040 },
|
||||
{ "kk_KZ", 1087 },
|
||||
{ "ko_KR", 1042 },
|
||||
{ "lb_LU", 1134 },
|
||||
{ "lt_LT", 1063 },
|
||||
{ "lv_LV", 1062 },
|
||||
{ "mn_MN", 1104 },
|
||||
{ "nb_NO", 1044 },
|
||||
{ "nl_NL", 1043 },
|
||||
{ "nl_NL", 2067 },
|
||||
{ "nn_NO", 2068 },
|
||||
{ "oc_FR", 1154 },
|
||||
{ "pl_PL", 1045 },
|
||||
{ "pt_BR", 1046 },
|
||||
{ "pt_PT", 2070 },
|
||||
{ "ro_RO", 1048 },
|
||||
{ "ru_RU", 1049 },
|
||||
{ "sk_SK", 1051 },
|
||||
{ "sl_SI", 1060 },
|
||||
{ "sr_Cyrl_RS", 10266 },
|
||||
{ "sr_Latn_RS", 9242 },
|
||||
{ "sv_SE", 1053 },
|
||||
{ "tr_TR", 1055 },
|
||||
{ "uk_UA", 1058 },
|
||||
{ "uz_Cyrl_UZ", 2115 },
|
||||
{ "uz_Latn_UZ", 1091 },
|
||||
{ "vi_VN", 1066 },
|
||||
};
|
||||
@ -14,12 +14,6 @@ def get_hunspell(stable_commit):
|
||||
base.replaceInFile("./src/hunspell/csutil.cxx", "void free_utf_tbl() {", "void free_utf_tbl() { \n return;\n")
|
||||
# bug fix, we need to keep this utf table
|
||||
# free_utf_tbl doesnt delete anything so we can destroy hunspell object
|
||||
|
||||
# replace & add defines to easy control of time limits (CUSTOM_LIMIT)
|
||||
default_tl_defines = "#define TIMELIMIT_GLOBAL (CLOCKS_PER_SEC / 4)\n#define TIMELIMIT_SUGGESTION (CLOCKS_PER_SEC / 10)\n#define TIMELIMIT (CLOCKS_PER_SEC / 20)\n"
|
||||
custom_tl_defines_tl = "#define TIMELIMIT_GLOBAL CUSTOM_TIMELIMIT_GLOBAL\n#define TIMELIMIT_SUGGESTION CUSTOM_TIMELIMIT_SUGGESTION\n#define TIMELIMIT CUSTOM_TIMELIMIT\n"
|
||||
tl_defines = "#ifndef CUSTOM_TIMELIMITS\n" + default_tl_defines + "#else\n" + custom_tl_defines_tl + "#endif\n"
|
||||
base.replaceInFile("./src/hunspell/atypes.hxx", default_tl_defines, tl_defines)
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
|
||||
213
Common/3dParty/hunspell/test/dst/az_Latn_AZ.txt
Normal file
213
Common/3dParty/hunspell/test/dst/az_Latn_AZ.txt
Normal file
@ -0,0 +1,213 @@
|
||||
A [Ü, Ha, Ağ, Ac, Ad, Da, Fa, Ah, Ka, Al, An, Na, Qa]
|
||||
qocalmaq [almayacaq, almamaq]
|
||||
Alderaan'ın [Federasiyanın]
|
||||
hamısı
|
||||
həmçinin
|
||||
Və
|
||||
cavab
|
||||
dir
|
||||
incəsənət
|
||||
kimi
|
||||
da
|
||||
uzaq
|
||||
körpə
|
||||
zirzəmi [zəmində]
|
||||
ol
|
||||
olub
|
||||
doğuldu [doğulduğu, doğurduğu]
|
||||
bulvar [bunlar]
|
||||
fasilə
|
||||
nəsllər [nəsillər, nəsnələri, nəslə, nələrlə, səslər]
|
||||
gəlin
|
||||
lakin
|
||||
al
|
||||
ilə
|
||||
Kaliforniya [Kanalizasiya]
|
||||
Kalifornikasiya [Kommunikasiya]
|
||||
bilər
|
||||
kartlar
|
||||
şans
|
||||
Çin
|
||||
çənə [dənə, çəkə, mənə, nənə, sənə, tənə, çənəyə]
|
||||
klublar
|
||||
Cobain []
|
||||
bürc [borc, gürcü]
|
||||
nəzarət
|
||||
qiymət
|
||||
edə bilməzdim [bilməzdim]
|
||||
yaratmaq
|
||||
lənət
|
||||
rəqs
|
||||
saziş
|
||||
sövdələşmələr [məsləhətləşmələr]
|
||||
dağıdıcı
|
||||
almazlar [almanlar, almaz lar, almaz-lar, almaları, marallar, mallara]
|
||||
etməz
|
||||
etməyərik [etmərik, etmədikləri]
|
||||
arzu
|
||||
xülyalar [yalanlar]
|
||||
Şərq
|
||||
kənar
|
||||
kənarları [kənar ları, kənar-ları, kənarına, kənarında, kəlamları, aparılarkən]
|
||||
məmnunluq
|
||||
hamının
|
||||
uzaq
|
||||
peri [şeri, geri, meri, yeri]
|
||||
solğun [dolğun]
|
||||
üz
|
||||
son
|
||||
tap
|
||||
ilk
|
||||
üçün
|
||||
-dan [-dam, -da, -an, -dana, -adan, -nda, -daş, -dən, -dağ, -can, -dad, -din, -lan, -don, -qan, adan, andan]
|
||||
sərhəd
|
||||
qız
|
||||
qızın
|
||||
yaxşı
|
||||
gitara [artaraq]
|
||||
əl
|
||||
hardcore [hardadır]
|
||||
var
|
||||
yoxdur
|
||||
o [od, ol, on, ot, ov, ox, ü, ı]
|
||||
eşitmək
|
||||
ürək
|
||||
O'nun [Onun, Oyununu]
|
||||
ona
|
||||
gizli
|
||||
yüksək
|
||||
ona
|
||||
onun
|
||||
Hollivud [Holland]
|
||||
Mən
|
||||
Mənəm
|
||||
əgər
|
||||
içində
|
||||
məlumat
|
||||
içində
|
||||
dir
|
||||
bu
|
||||
jack [janra]
|
||||
sadəcə
|
||||
kral
|
||||
qohum
|
||||
bilmək
|
||||
qoyulmuş
|
||||
qanun
|
||||
yerləşdirilmək [yerləşdirilməsi, yerləşdirilmiş, yerləşdirilib, yerləşdirildiyini]
|
||||
qurğuşun [quruluşunun]
|
||||
aparmaq
|
||||
yerləşdirilmə [yerləşdirilməsi, yerləşdirilmiş, yerləşdirilib, yerləşdirildiyini]
|
||||
məkan
|
||||
sevmək
|
||||
şans
|
||||
edilmiş
|
||||
adam
|
||||
çox
|
||||
Evlənmək
|
||||
maska [masa, marka]
|
||||
o bilər [bilərlər, bilər]
|
||||
bəlkə də [bəlkə]
|
||||
mənası
|
||||
mən
|
||||
meditasiya [dissertasiya]
|
||||
xatirə
|
||||
ağılın
|
||||
pul
|
||||
mənim
|
||||
heç vaxt [vaxtsa]
|
||||
deyil
|
||||
heç nə [heçə]
|
||||
nömrələr [nömrələri, nömrə lər, nömrə-lər, nömrəli, nömrə]
|
||||
of [od, əf, ol, on, ot, ov, ox, ofis]
|
||||
of [od, əf, ol, on, ot, ov, ox, ofis]
|
||||
üstündə
|
||||
bir
|
||||
yalnız
|
||||
və ya [vəla]
|
||||
nəticə
|
||||
öz
|
||||
Ödə [Də, Ədə, Adə, Edə, Idə, Öndə, Ölə, Önə]
|
||||
Şəftəli [Həftəlik]
|
||||
yerlər
|
||||
oynayır
|
||||
oynamaq
|
||||
əhali
|
||||
porno [sponsor]
|
||||
tərifləmək [təriflər, təklifləri, təkliflərlə, təkliflərə]
|
||||
ehtimal ki [ehtimal]
|
||||
ehtimal
|
||||
psixik [psixi, psixoloji]
|
||||
kraliça [kralı]
|
||||
qaldırmaq
|
||||
qalan
|
||||
hörmət
|
||||
qalxmaq
|
||||
yol
|
||||
xam
|
||||
müqəddəs
|
||||
Xilas et [Xilası]
|
||||
elmi
|
||||
çığırmaq [çağırmaq, çıxarmaq]
|
||||
satılır
|
||||
şəkil
|
||||
xəstələnmək [xəstələnməyi, dəstəklənməsi]
|
||||
gümüşçü [gümüş]
|
||||
dəri
|
||||
əsgər
|
||||
bir şey [şeydir]
|
||||
Mahnı
|
||||
mahnılar
|
||||
qılınclar [qılınc lar, qılınc-lar, qılıncı]
|
||||
büyü [böyüyü]
|
||||
casuslar [ruslar]
|
||||
ulduz
|
||||
Stansiya
|
||||
oğurlamaq [vurğulamaq]
|
||||
daşlar
|
||||
günəş
|
||||
şübhəli
|
||||
İsveç
|
||||
qılınclar [qılınc lar, qılınc-lar, qılıncı]
|
||||
yeniyetmə
|
||||
test
|
||||
dandan [andan, candan, qandan, yandan, danışanda, adından, yanından, canından]
|
||||
bu ki [builki]
|
||||
bu ki [builki]
|
||||
bu
|
||||
onların
|
||||
bu
|
||||
onlar
|
||||
düşünmək
|
||||
bu
|
||||
onlar
|
||||
gel-git [get-gedə]
|
||||
üçün
|
||||
deyilmişəm [deyilmiş əm, deyilmiş-əm, deyilmişdi, deyilmiş, deyilmi, deyiləm]
|
||||
çox
|
||||
cəhd et [cəhdlər]
|
||||
başa düşdüm []
|
||||
qilin [ilin, bilin, dilin]
|
||||
titrəmək [itirməmək, itirmək]
|
||||
mübarizə aparır? []
|
||||
istəyirəm
|
||||
müharibə
|
||||
idi
|
||||
dalğalar [qadağalar, dağlarda, adalar, dağlar]
|
||||
geymək [getmək, getməmək]
|
||||
silahlar
|
||||
yaxşı
|
||||
idarə olunan [olunanlardan]
|
||||
Qərbi [Hərbi, Qəbri, Qərb, Qərbin, Qəbir, Qərbə, Qəlbi]
|
||||
nə
|
||||
arasında
|
||||
qalib gəlmək [qaliblərin]
|
||||
qalib gəlir [qalibləri]
|
||||
ilə
|
||||
qadın
|
||||
dünya
|
||||
səhv
|
||||
siz
|
||||
sizə
|
||||
sənsən [səndən, sən sən, sən-sən, nədənsə, mənsə, sənə, səslənən]
|
||||
sənin
|
||||
212
Common/3dParty/hunspell/test/dst/bg_BG.txt
Normal file
212
Common/3dParty/hunspell/test/dst/bg_BG.txt
Normal file
@ -0,0 +1,212 @@
|
||||
A [А, Е, О, И, В, С, Я, У]
|
||||
остаряване
|
||||
Алдераан [Дерайлиран]
|
||||
всичко
|
||||
също
|
||||
и
|
||||
отговор
|
||||
са
|
||||
изкуство
|
||||
като
|
||||
в
|
||||
далеч
|
||||
бебе
|
||||
мазе
|
||||
бъда
|
||||
било
|
||||
роден
|
||||
булевард
|
||||
почивка
|
||||
породи
|
||||
невеста
|
||||
но
|
||||
купувам
|
||||
от
|
||||
Калифорния
|
||||
Калифорникация [Калифорнийския, Калифорнийка, Калифорния]
|
||||
може
|
||||
карти
|
||||
шанс
|
||||
Китай
|
||||
брадичка
|
||||
клубове
|
||||
Кобейн [Кобен]
|
||||
съзвездие
|
||||
контрол
|
||||
цена
|
||||
не можех [можехме]
|
||||
създаване
|
||||
проклятие
|
||||
танц
|
||||
сделка
|
||||
сделки
|
||||
унищожение
|
||||
диаманти
|
||||
не прави [неправи, неуправии, неправдиви]
|
||||
не правим [непоправим]
|
||||
мечта
|
||||
мечти
|
||||
Изток
|
||||
ръб
|
||||
ръбове
|
||||
екстаз
|
||||
всеки
|
||||
далеч
|
||||
приказка
|
||||
избледнява
|
||||
лица
|
||||
краен
|
||||
намирам
|
||||
първи
|
||||
за
|
||||
от
|
||||
предел
|
||||
момиче
|
||||
момичето
|
||||
добре
|
||||
китара
|
||||
ръка
|
||||
хардкор [хардуер]
|
||||
има
|
||||
няма
|
||||
той
|
||||
чуя
|
||||
сърце
|
||||
той е [той]
|
||||
нейни
|
||||
скрит
|
||||
висок
|
||||
него
|
||||
негов
|
||||
Холивуд
|
||||
аз
|
||||
аз съм [разсъмна]
|
||||
ако
|
||||
в
|
||||
информация
|
||||
вътре
|
||||
е
|
||||
това е [товарен]
|
||||
вале
|
||||
просто
|
||||
крал
|
||||
родственик
|
||||
знам
|
||||
определен
|
||||
закон
|
||||
поставям
|
||||
водя
|
||||
води
|
||||
местоположение
|
||||
обичам
|
||||
късмет
|
||||
направен
|
||||
човек
|
||||
много
|
||||
Ожени се [Брожение]
|
||||
маска
|
||||
май
|
||||
може би [можещи]
|
||||
означава
|
||||
аз
|
||||
медитация
|
||||
спомен
|
||||
ума
|
||||
пари
|
||||
моя
|
||||
никога
|
||||
не
|
||||
нищо
|
||||
числа
|
||||
от
|
||||
изключен
|
||||
на
|
||||
един
|
||||
само
|
||||
или
|
||||
изход
|
||||
свой
|
||||
Плати
|
||||
праскова
|
||||
места
|
||||
играе
|
||||
играя
|
||||
население
|
||||
порно [бурно, орно, порено, опорно, спорно, упорно, порна, парно, порне, поено, порни, потно, торно, морно, горно]
|
||||
похвала
|
||||
вероятно
|
||||
вероятен
|
||||
психичен
|
||||
кралица
|
||||
въздигам
|
||||
останал
|
||||
почит
|
||||
възход
|
||||
път
|
||||
груб
|
||||
светия
|
||||
Спасявам
|
||||
наука
|
||||
крясък
|
||||
продава
|
||||
форма
|
||||
по-болен
|
||||
златар
|
||||
кожа
|
||||
войник
|
||||
някаква
|
||||
Песен
|
||||
песни
|
||||
пикове
|
||||
заклинание
|
||||
шпиони
|
||||
звезда
|
||||
стация [станция, стария, статия, стадия, атестация, стагнация]
|
||||
крада
|
||||
камъни
|
||||
слънце
|
||||
подозрителен
|
||||
Швеция
|
||||
мечове
|
||||
тийнейджър [тинейджър, пейджър]
|
||||
тест
|
||||
отколкото
|
||||
това
|
||||
това е [товарен]
|
||||
на
|
||||
техни
|
||||
тези
|
||||
те с [тесте]
|
||||
мисли
|
||||
този
|
||||
той
|
||||
прилив
|
||||
до
|
||||
каза
|
||||
също
|
||||
опитайте
|
||||
разбрано
|
||||
еднорог [едно рог, еднороден]
|
||||
вибрация
|
||||
водене? [водене, неводен, воден]
|
||||
искам
|
||||
война
|
||||
беше
|
||||
вълни
|
||||
носете
|
||||
оръжия
|
||||
Ами
|
||||
бяха
|
||||
Западна
|
||||
какво
|
||||
докато
|
||||
победа
|
||||
победи
|
||||
със
|
||||
жена
|
||||
свят
|
||||
грешка
|
||||
ти
|
||||
ти би [табиети]
|
||||
ти си [тифуси]
|
||||
вашият
|
||||
112
Common/3dParty/hunspell/test/dst/ca_ES.txt
Normal file
112
Common/3dParty/hunspell/test/dst/ca_ES.txt
Normal file
@ -0,0 +1,112 @@
|
||||
amor
|
||||
llum
|
||||
lluum [lluu, llum, lluus, lluïm, lluu m]
|
||||
esperança
|
||||
espirança [esperança, espirant, espinçadora, espinça, espira]
|
||||
llibertat
|
||||
força
|
||||
forrça [forra, força, forçar]
|
||||
pau
|
||||
somni
|
||||
llibre
|
||||
mar
|
||||
amistat
|
||||
cançó
|
||||
flor
|
||||
cel
|
||||
estrella
|
||||
temps
|
||||
camí
|
||||
vent
|
||||
muntanya
|
||||
mumntanya [muntanya, muntanyà, muntant]
|
||||
riu
|
||||
soroll
|
||||
silenci
|
||||
viatge
|
||||
foc
|
||||
gel
|
||||
paraula
|
||||
vida
|
||||
dia
|
||||
nit
|
||||
tarda
|
||||
matí
|
||||
lluna
|
||||
sol
|
||||
llac
|
||||
marbre
|
||||
ferro
|
||||
sal
|
||||
mel
|
||||
sucre
|
||||
peix
|
||||
ocell
|
||||
oceoll [ocell]
|
||||
joc
|
||||
ritme
|
||||
melodia
|
||||
pintura
|
||||
pentura [puntera, entura, pintura, puntura, ventura, penetrant, apertura, parapent]
|
||||
teatre
|
||||
dansa
|
||||
poema
|
||||
història
|
||||
llegenda
|
||||
mitologia
|
||||
festa
|
||||
música
|
||||
vi
|
||||
cervesa
|
||||
cervessa [cervesa, cer vessa, cer-vessa, cerves sa, cerves-sa, cervesera, cerveseria, cerveser, cessava]
|
||||
formatge
|
||||
pa
|
||||
ciutat
|
||||
poble
|
||||
natura
|
||||
camp
|
||||
bosc
|
||||
platja
|
||||
sorra
|
||||
sorrà
|
||||
pedra
|
||||
ànima
|
||||
cos
|
||||
ment
|
||||
cor
|
||||
somriure
|
||||
somriàre [somriure, somrient]
|
||||
abraçada
|
||||
bes
|
||||
parla
|
||||
oida [oidà, oïda, ioda, odia, aido, oia, oda, oiada, oxida, aida, sida, onda, mida, dida, vida]
|
||||
vista
|
||||
tacte
|
||||
gust
|
||||
olfacte
|
||||
color
|
||||
forma
|
||||
número
|
||||
lletra
|
||||
sistema
|
||||
regla
|
||||
escola
|
||||
universitat
|
||||
univversitat [universitat, universitari, universalitat, universalitzat, universalista]
|
||||
mestre
|
||||
estudiant
|
||||
sabiduria [sabuderia]
|
||||
lliçó
|
||||
pregunta
|
||||
resposta
|
||||
risposta [resposta, disposta, ris posta, ris-posta, risp osta, risp-osta, trasposta, posteritat, riosta, polvorista]
|
||||
dubte
|
||||
certesa
|
||||
veritat
|
||||
mentida
|
||||
promesa
|
||||
secret
|
||||
descoberta
|
||||
descaberta [descoberta, desca berta, desca-berta, descabestrat, descartable, descabota, descarta]
|
||||
aventura
|
||||
destinació
|
||||
212
Common/3dParty/hunspell/test/dst/ca_ES_valencia.txt
Normal file
212
Common/3dParty/hunspell/test/dst/ca_ES_valencia.txt
Normal file
@ -0,0 +1,212 @@
|
||||
A
|
||||
envellir
|
||||
Alderaan [Aldebaran, Aldebrand, Aldeana, Anedera]
|
||||
tot
|
||||
també
|
||||
I
|
||||
resposta
|
||||
és
|
||||
art
|
||||
com
|
||||
a
|
||||
lluny
|
||||
nadó
|
||||
celler
|
||||
ser
|
||||
ha estat [hastat]
|
||||
nat
|
||||
bulevard
|
||||
pausa
|
||||
generacions
|
||||
núvia
|
||||
però
|
||||
comprar
|
||||
amb
|
||||
Califòrnia
|
||||
Californication [Californiana, Californita]
|
||||
pot
|
||||
cartes
|
||||
oportunitat
|
||||
Xina
|
||||
mentó
|
||||
clubs
|
||||
Cobain [Cobai, Cobais, Cobrin, Cob ain, Cob-ain, Cobalamina]
|
||||
signe del zodíac [signé del zodíac, signè del zodíac, sígne del zodíac, sïgne del zodíac, signE del zodíac, Signe del zodíac, sIgne del zodíac, sigNe del zodíac, siGne del zodíac]
|
||||
control
|
||||
preu
|
||||
no podria [nodriria, podriria, nodria]
|
||||
crear
|
||||
maleït
|
||||
ballar
|
||||
acord
|
||||
negocis
|
||||
destructiu
|
||||
diamants
|
||||
no fer [noosfera]
|
||||
no fem [nomenem]
|
||||
desitjar
|
||||
somnis
|
||||
Est
|
||||
vora
|
||||
voreres
|
||||
satisfacció
|
||||
tots
|
||||
llunyà
|
||||
fada
|
||||
pallid [pallis, palli, pallin, pali]
|
||||
cara
|
||||
final
|
||||
trobar
|
||||
primer
|
||||
per
|
||||
de
|
||||
frontera
|
||||
noia
|
||||
la noia [la noïa, la Noia]
|
||||
bé
|
||||
guitarra
|
||||
mà
|
||||
hardcore [recordar]
|
||||
hi ha [hifa]
|
||||
no hi ha [nó hi ha, nò hi ha, nO hi ha, No hi ha]
|
||||
ell
|
||||
sentir
|
||||
cor
|
||||
ell és [estellés]
|
||||
seva
|
||||
secret
|
||||
alt
|
||||
ell
|
||||
seu
|
||||
Hollywood
|
||||
jo
|
||||
sóc
|
||||
si
|
||||
en
|
||||
informació
|
||||
interior
|
||||
és
|
||||
és
|
||||
jack
|
||||
només
|
||||
rei
|
||||
parent
|
||||
saber
|
||||
fixat
|
||||
llei
|
||||
col·locar
|
||||
plom
|
||||
portar
|
||||
col·locació
|
||||
lloc
|
||||
estimar
|
||||
oportunitat
|
||||
fet
|
||||
home
|
||||
molts
|
||||
casar-se
|
||||
màscara
|
||||
podria
|
||||
potser
|
||||
sentit
|
||||
jo
|
||||
meditació
|
||||
memòria
|
||||
ment
|
||||
diners
|
||||
meu
|
||||
mai
|
||||
no
|
||||
res
|
||||
números
|
||||
de
|
||||
fora
|
||||
sobre
|
||||
un
|
||||
només
|
||||
o
|
||||
resultat
|
||||
seu
|
||||
pagar
|
||||
préssec
|
||||
llocs
|
||||
jugar
|
||||
joc
|
||||
població
|
||||
porno
|
||||
elogiar
|
||||
probablement
|
||||
probable
|
||||
psíquic
|
||||
reina
|
||||
elevar
|
||||
restant
|
||||
respecte
|
||||
pujar
|
||||
camí
|
||||
cru
|
||||
sant
|
||||
salvar
|
||||
ciència
|
||||
crit
|
||||
vendre’s [vendre's, vendre]
|
||||
figura
|
||||
malalt
|
||||
joier
|
||||
pell
|
||||
soldat
|
||||
alguna cosa [glucosamina]
|
||||
cançó
|
||||
cançons
|
||||
cims
|
||||
encanteri
|
||||
espies
|
||||
estrella
|
||||
estació
|
||||
robar
|
||||
pedres
|
||||
sol
|
||||
sospitós
|
||||
Suècia
|
||||
espases
|
||||
adolescent
|
||||
prova
|
||||
que
|
||||
que
|
||||
això
|
||||
seu
|
||||
aqueixos
|
||||
ells
|
||||
pensar
|
||||
aqueix
|
||||
ells
|
||||
marees
|
||||
per
|
||||
no he estat [nó he estat, nò he estat, nO he estat, No he estat]
|
||||
molt
|
||||
intentar
|
||||
entendre
|
||||
fer
|
||||
tremolar
|
||||
lluitar
|
||||
desitjar
|
||||
guerra
|
||||
va ser [vaser, serva]
|
||||
ones
|
||||
portar
|
||||
armes
|
||||
bé
|
||||
administrat
|
||||
Oest
|
||||
què
|
||||
entre
|
||||
guanyar
|
||||
guanya
|
||||
amb
|
||||
dona
|
||||
món
|
||||
equivocat
|
||||
tu
|
||||
vostè
|
||||
tu ets [tubets]
|
||||
teu
|
||||
206
Common/3dParty/hunspell/test/dst/cs_CZ.txt
Normal file
206
Common/3dParty/hunspell/test/dst/cs_CZ.txt
Normal file
@ -0,0 +1,206 @@
|
||||
pomaliý [pomalý, pomaličku]
|
||||
šťstný [šťastný]
|
||||
smuutný [smutný, smutnu]
|
||||
horcký [horký, horácký, horecký, horský, hornický, horňácký]
|
||||
studiený [studený, studie]
|
||||
záludnast [záludnost, záludný]
|
||||
náhodillost [nahodilost, náhodnost]
|
||||
úpěnlevý [úpěnlivý, úpletový]
|
||||
rozspačitý [rozpačitý, rozpačitěný]
|
||||
svéhllavý [svéhlavý, svéhlavička]
|
||||
jablko
|
||||
slunce
|
||||
voda
|
||||
dům
|
||||
pták
|
||||
káva
|
||||
chleba
|
||||
květina
|
||||
kniha
|
||||
pes
|
||||
kočka
|
||||
město
|
||||
zelený
|
||||
modrý
|
||||
červený
|
||||
bílý
|
||||
černý
|
||||
velký
|
||||
malý
|
||||
rychlý
|
||||
pomalý
|
||||
šťastný
|
||||
smutný
|
||||
horký
|
||||
studený
|
||||
nový
|
||||
starý
|
||||
hezký
|
||||
ošklivý
|
||||
dobrý
|
||||
špatný
|
||||
zdravý
|
||||
nemocný
|
||||
silný
|
||||
slabý
|
||||
chytrý
|
||||
hloupý
|
||||
pracovat
|
||||
jíst
|
||||
pít
|
||||
spát
|
||||
číst
|
||||
psát
|
||||
mluvit
|
||||
smát se [smát]
|
||||
plakat
|
||||
zpívat
|
||||
hrát
|
||||
tančit
|
||||
učit se [učitele]
|
||||
nakupovat
|
||||
vařit
|
||||
telefonovat
|
||||
dívat se [sedívat]
|
||||
poslouchat
|
||||
chodit
|
||||
běžet
|
||||
létat
|
||||
plavat
|
||||
psát
|
||||
učit se [učitele]
|
||||
dělat
|
||||
mít
|
||||
být
|
||||
jít
|
||||
přijít
|
||||
odejít
|
||||
dát
|
||||
vzít
|
||||
říct
|
||||
vidět
|
||||
slyšet
|
||||
cítit
|
||||
myslet
|
||||
chtít
|
||||
moct
|
||||
muset
|
||||
rád
|
||||
nerad
|
||||
ano
|
||||
ne
|
||||
prosím
|
||||
děkuji
|
||||
na shledanou [shledanou, dohledanou, shledávanou, ohledanou]
|
||||
omlouvám se [omlouvání]
|
||||
sbohem
|
||||
ahoj
|
||||
čau
|
||||
hej
|
||||
jo
|
||||
fakt
|
||||
super
|
||||
blbost
|
||||
paráda
|
||||
no jo [nojo]
|
||||
jasně
|
||||
takže
|
||||
vlastně
|
||||
třeba
|
||||
snad
|
||||
leštěnka
|
||||
pochmurný
|
||||
živelný
|
||||
ponaučení
|
||||
záhada
|
||||
pochybnost
|
||||
nádhera
|
||||
soucit
|
||||
záludnost
|
||||
náhodilost [nahodilost, náhodnost]
|
||||
úpěnlivý
|
||||
rozpačitý
|
||||
svéhlavý
|
||||
marnivost
|
||||
blahodar [blaho dar, blaho-dar, lahoda]
|
||||
rozčarování
|
||||
odchylka
|
||||
přelud
|
||||
vytrvalost
|
||||
neústupnost
|
||||
lehkost
|
||||
souznění
|
||||
rozmarnost
|
||||
roztržitost
|
||||
úskočnost
|
||||
rozkoš
|
||||
marasmus
|
||||
rozpolcenost
|
||||
neúprosnost
|
||||
ztřeštěnost
|
||||
chmurnost
|
||||
okouzlení
|
||||
zářivost
|
||||
vyrovnanost
|
||||
neochvějnost
|
||||
neúcta
|
||||
bizarnost
|
||||
rozmařilost
|
||||
nepochopení
|
||||
nevýslovný
|
||||
pomíjivost
|
||||
beznaděj
|
||||
úzkost
|
||||
odtažitost
|
||||
rozerv [rozerve, rozervi, rozervu, rezerv, rozervat]
|
||||
rozervanost
|
||||
vyčerpanost
|
||||
bezcitnost
|
||||
záludnost
|
||||
nezdolnost
|
||||
rozkošátnost [rozkošnost, rozkošatěnost, rozkošnickost, rozkoktanost]
|
||||
nezdolatelnost
|
||||
rozmarnost
|
||||
živelnost
|
||||
bezútěšnost
|
||||
záhadnost
|
||||
neposkvrnitelnost [nepotiskovatelnost, nepopisovatelnost, nepřemostitelnost, nezvratitelnost]
|
||||
rozkošnělost [rozkošatělost, rozkošnost, rozkošnickost, rozkošatěnost]
|
||||
bezradnost
|
||||
neuchopitelnost
|
||||
pošetilost
|
||||
opojení
|
||||
rozervanost
|
||||
marnost
|
||||
bezstarostnost
|
||||
nevinnost
|
||||
náladovost
|
||||
vyrovnanost
|
||||
ztracenost
|
||||
bezbřehost
|
||||
rozervanost
|
||||
opojení
|
||||
bezradnost
|
||||
neuchopitelnost
|
||||
pošetilost
|
||||
opojení
|
||||
rozervanost
|
||||
marnost
|
||||
bezstarostnost
|
||||
nevinnost
|
||||
náladovost
|
||||
vyrovnanost
|
||||
ztracenost
|
||||
bezbřehost
|
||||
opojení
|
||||
bezradnost
|
||||
neuchopitelnost
|
||||
pošetilost
|
||||
opojení
|
||||
rozervanost
|
||||
marnost
|
||||
bezstarostnost
|
||||
nevinnost
|
||||
náladovost
|
||||
vyrovnanost
|
||||
bezbřehost
|
||||
129
Common/3dParty/hunspell/test/dst/da_DK.txt
Normal file
129
Common/3dParty/hunspell/test/dst/da_DK.txt
Normal file
@ -0,0 +1,129 @@
|
||||
Hej
|
||||
Goddag
|
||||
Tak
|
||||
Ja
|
||||
Nej
|
||||
Måske
|
||||
Mad
|
||||
Vand
|
||||
Hus
|
||||
Bil
|
||||
Tog
|
||||
Cykel
|
||||
Skole
|
||||
Børn
|
||||
Far
|
||||
Mor
|
||||
Søster
|
||||
Bror
|
||||
Hund
|
||||
Kat
|
||||
Fisk
|
||||
Fugl
|
||||
Træ
|
||||
Blomst
|
||||
Græs
|
||||
Sol
|
||||
Måne
|
||||
Himmel
|
||||
Regn
|
||||
Sne
|
||||
Sommer
|
||||
Vinter
|
||||
Forår
|
||||
Efterår
|
||||
Aften
|
||||
Nat
|
||||
Dag
|
||||
Uge
|
||||
Måned
|
||||
År
|
||||
Læse
|
||||
Skrive
|
||||
Tale
|
||||
Lære [Lære, Læres, Lærer, Læren, Læreø, Læreå, læreå]
|
||||
Arbejde
|
||||
Sove
|
||||
Vågne
|
||||
Løbe
|
||||
Gå
|
||||
Sidde
|
||||
Stå
|
||||
Lytte
|
||||
Se
|
||||
Høre [Høre, Høres, Hører, Høreø, Høreå, høreå]
|
||||
Spise
|
||||
Drikke
|
||||
Kød
|
||||
Frugt
|
||||
Grøntsager
|
||||
Ost
|
||||
Brød
|
||||
Vand
|
||||
Juice
|
||||
Kaffe
|
||||
Te
|
||||
Mælk
|
||||
Smør [Smør, Smøre, Smørs, Smør']
|
||||
Æg
|
||||
Salt
|
||||
Peber
|
||||
Sukker
|
||||
Bolle
|
||||
Smørrebrød
|
||||
Køkken
|
||||
Stue
|
||||
Soveværelse
|
||||
Badeværelse
|
||||
Toilet
|
||||
Bord
|
||||
Stol
|
||||
Sofa
|
||||
Lampe
|
||||
Vindue
|
||||
Dør
|
||||
Gulv
|
||||
Loft
|
||||
Væg
|
||||
Sofa
|
||||
Pude
|
||||
Tæppe
|
||||
Badekar
|
||||
Håndvask
|
||||
Spejl
|
||||
Håndklæde
|
||||
Seng
|
||||
Dyne
|
||||
Dynee [Dynes, Dyner, Dyne, Dynen, Dynge, Dynees, Dynete, Dyneel, Dynele, Dyneed, Dyneeg, Dyneem, Dynefe, Dyneve]
|
||||
Pude
|
||||
Pudee [Pudene, Pudre, Puder, Pude, Pudes, Pudse, Puden, Pudet, Pudel]
|
||||
Alarm
|
||||
Alarmm [Alarm, Alarms]
|
||||
Skrivebord
|
||||
Stol
|
||||
Hus
|
||||
Hund
|
||||
Kat
|
||||
Katt [Kett, Katy, Katty, Kate, Kitt, Kata, Kato, Matt, Watt, Kat, Kast, Kats, Takt, Kart, Katte]
|
||||
Bil
|
||||
Skole
|
||||
Skolee [Skolie, Skolede, Skoler, Skole, Skoles, Skolen, Skolet, Skolde]
|
||||
Sol
|
||||
Soll [Sol, Sole, Sols, Soli, Sola, Sall, Sold, Solo, Soul]
|
||||
Vand
|
||||
Vandd [Vanda, Vandy, Vandt, Vand, Vands, Vande, Vandr]
|
||||
Mad
|
||||
Madd [Mads, Maud, Mad, Made, Mand]
|
||||
By
|
||||
Barn
|
||||
Barnn [Barni, Baran, Barny, Barn, Baren, Barns, Baron]
|
||||
Tørklæde
|
||||
Skæbne
|
||||
Uafhængighed
|
||||
Kærlighed
|
||||
Kærligheed [Kærlighed, Ærlighed, Hæderlighed, Herlighed, Liderlighed]
|
||||
overbelastning
|
||||
Modstandsbevægelsen
|
||||
Uafhængighedserklæringen
|
||||
Forårssommertemperaturen
|
||||
Stabiliseringsperioden
|
||||
131
Common/3dParty/hunspell/test/dst/de_AT.txt
Normal file
131
Common/3dParty/hunspell/test/dst/de_AT.txt
Normal file
@ -0,0 +1,131 @@
|
||||
Ägyptologie
|
||||
Ährenamt [Ährensamt, Ährenast, Ährenart, Ährenact, Ährenabt, Ährenakt, Ährenaxt, Ehrenamt, Ohrenamt, -ährenamt, Ährenartig]
|
||||
Ängstlichkeit
|
||||
Äquatoria
|
||||
Abarbeiten
|
||||
Abbild
|
||||
Abbilden
|
||||
Abbildungs [Abbildung, Abbildungs-, Bildungsnah, Unbildung]
|
||||
Abbreviatur
|
||||
Abbrüche
|
||||
Abfassen
|
||||
Abfertigen
|
||||
Abfolge
|
||||
Abfuhr
|
||||
Ableugnen
|
||||
Ablichten
|
||||
Ablöse
|
||||
Absätze
|
||||
Abschnitts
|
||||
Abwechseln
|
||||
Abwehren
|
||||
Aktiv
|
||||
Britannia
|
||||
Browserfenster
|
||||
Budgetieren
|
||||
Bugpartie
|
||||
Bukarester
|
||||
Burgundersoße
|
||||
Butterkrem
|
||||
Button
|
||||
Cabriolet
|
||||
Campanile
|
||||
Canapé
|
||||
Caprice
|
||||
Celsius
|
||||
Chamäleon
|
||||
Charakteristik
|
||||
Chronometer
|
||||
Chronometrie
|
||||
Cölln
|
||||
Connectzustände
|
||||
Cursorspur
|
||||
Däne
|
||||
Dachs
|
||||
Dahindämmern
|
||||
Darbringen
|
||||
Daten
|
||||
Datenbankserver
|
||||
Desktopsystem
|
||||
Detektivfilm
|
||||
Dichtertum
|
||||
Dinosaurier
|
||||
Direktion
|
||||
Diskantgambe
|
||||
Diskothek
|
||||
Druckereicode
|
||||
Kapsel
|
||||
Karausche
|
||||
Katzen
|
||||
Klinge
|
||||
Klinke
|
||||
Kohlrabi
|
||||
Koinzidenz
|
||||
Kolleg
|
||||
Komplott
|
||||
Meereis
|
||||
Mehrphasigkeit
|
||||
Memorieren
|
||||
Messen
|
||||
Methode
|
||||
Metrowaggon
|
||||
Meute
|
||||
Migräne
|
||||
Milieuforschung
|
||||
Mindern
|
||||
Mineralien
|
||||
Mitternacht
|
||||
Mobiliar
|
||||
Mohrrübe
|
||||
Mühelosigkeit
|
||||
Normativität
|
||||
Notifikation
|
||||
Ökonomie
|
||||
Orangeton
|
||||
Osten
|
||||
Subjekt
|
||||
Subsidiarität
|
||||
Subsumieren
|
||||
Tagfalter
|
||||
Speicher
|
||||
Spielzeugsammlung
|
||||
Zahler
|
||||
|
||||
Сложные слова []
|
||||
Zurückgezogenheit
|
||||
Äquipotentialfläche
|
||||
Äußerungsbedeutung
|
||||
Abfassungszeitraum
|
||||
Abgeschlossenheits [Abgeschlossenheit, Abgeschlossenheits-, Unabgeschlossenheit, Aufgeschlossenheit, Abgeschlagenheit, Geschlossenheit]
|
||||
Adjunktionsbeseitigung
|
||||
Anknüpfungsgrundsätze
|
||||
Chiffrierschlüssel
|
||||
Knochenmarktransplantation
|
||||
Bundeskaderathlet
|
||||
Carbonsäurechlorid
|
||||
Cardiazoltherapie
|
||||
Chancenungleichheit
|
||||
Charakterisierungsmöglichkeit
|
||||
Chlorophyllkonzentration
|
||||
Computerspielemarkt
|
||||
Deindustrialisieren
|
||||
Dekodierungsmöglichkeit
|
||||
Kartoffelschälmesser
|
||||
Kernspinresonanztomographie
|
||||
Merkmalskombination
|
||||
Nachbarschaftszentren
|
||||
Opportunitätsprinzip
|
||||
Tiefenstaffelung
|
||||
Tourismusfachmann
|
||||
Sequenzbetrachtung
|
||||
|
||||
Слова с ошибками []
|
||||
Dechifrierprogramm [Dechiffrierprogramm, Liederprogramm]
|
||||
Administratorkenwort [Administratorkennwort, Administratorkonto, Administratorrecht, Distriktadministrator, Distriktsadministrator]
|
||||
Spigeln [Spiegeln]
|
||||
Tätigkeite [Tätigkeit, Tätigkeiten, Untätigkeit, Nagetätigkeit, Mildtätigkeit, Regietätigkeit]
|
||||
Draufgangertum [Draufgängertum, Draufgänger]
|
||||
Abschnit [Abschnitt, Abschritt]
|
||||
Komunikation [Kommunikation, Exkommunikation, Kommunikativ, Kommunikator, Komplikation]
|
||||
Drackereicode [Druckereicode, Dreidecker]
|
||||
Bumeln [Baumeln, Bummeln, Blumen, Brummeln, Bummel]
|
||||
116
Common/3dParty/hunspell/test/dst/de_CH.txt
Normal file
116
Common/3dParty/hunspell/test/dst/de_CH.txt
Normal file
@ -0,0 +1,116 @@
|
||||
Alpinist
|
||||
Alteration
|
||||
Alternative
|
||||
Alumne
|
||||
Amateurfilmer
|
||||
Ambulanz
|
||||
Amtmänner
|
||||
Analogie
|
||||
Analytik
|
||||
Ananas
|
||||
Angabe
|
||||
Ankünfte
|
||||
Dynastie
|
||||
Ebenbürtigkeit
|
||||
Echtheitszertifikat
|
||||
Editionspläne
|
||||
Editor
|
||||
Ehrenamtlichkeit
|
||||
Eigentümerschaft
|
||||
Einbau
|
||||
Eindringling
|
||||
Eingabequittungsbetrieb
|
||||
Einhüllen
|
||||
Einkommen
|
||||
Einloggen
|
||||
Einschließen [Einschliessen, Einschliefen]
|
||||
Einsortier [Einsortier-, Einsorter, Eintortier, Einportier, Einvortier, Einsortiere, Einsortiert, Unsortierter, Unsortiert, Einzusortieren, Sortieren]
|
||||
Elaboration
|
||||
Elementar
|
||||
Entertainer
|
||||
Entkuppeln
|
||||
Entschädigungs [Entschädigung, Entschädigungs-, Entschädigungslos, Entschädigens, Entschädigen]
|
||||
Enumerator
|
||||
Erbringen
|
||||
Erdichten
|
||||
Erfahrenheit
|
||||
Erhalt
|
||||
Erleichtern
|
||||
Ersparnis
|
||||
Erstatten
|
||||
Erzählliteratur
|
||||
Helikopter
|
||||
Helpdesk
|
||||
Herunterladen
|
||||
Hindeuten
|
||||
Hinterlassenschaft
|
||||
Hiob
|
||||
Landesprache [Landessprache, Landesrache, Landsprache, Ladesprache, -landesprache]
|
||||
flexibilität [Flexibilität, -flexibilität, flexibilisiert]
|
||||
floristisch
|
||||
flugbillet [Flugbillet, -flugbillet, flugbereit]
|
||||
heroben
|
||||
herrichten
|
||||
herstellen
|
||||
herübereilen
|
||||
herunterzubücken
|
||||
hie
|
||||
hieraus
|
||||
hilfe [Hilfe, hilf, hilfe-, -hilfe, helfe, hilft, hälfe]
|
||||
himbeere [Himbeere, -himbeere, himbeer-, himbeerrot]
|
||||
justiz [Justiz, justiz-, -justiz, justiziell]
|
||||
kältebeständig
|
||||
kärtchen [Kärtchen, -kärtchen, Gärtchen, Bärtchen, kärglichen]
|
||||
känguru [Känguru, -känguru]
|
||||
kaktusgewächs [Kaktusgewächs, -kaktusgewächs, ausgewechselt]
|
||||
kalligrafie [Kalligrafie, -kalligrafie, kalligrafiere, kalligrafische, kalligrafisch]
|
||||
kamel [Kamel, kamel-, -kamel, kamen, rammel]
|
||||
kampagnendirektor [Kampagnendirektor, -kampagnendirektor, kampagnenartig]
|
||||
kapazitär
|
||||
kapitalist [Kapitalist, -kapitalist, kapital ist, kapital-ist, kapitalistisch, kapitalisierst, kapitalisiert, kapitalstark]
|
||||
karamell [Karamell, karamell-, -karamell, lamellar]
|
||||
kardieren
|
||||
karpfen [Karpfen, -karpfen, krampfen]
|
||||
katalogdaten [Katalogdaten, -katalogdaten, katalogartigen]
|
||||
lyzeum [Lyzeum, -lyzeum]
|
||||
mahagonirot
|
||||
makkaroni [Makkaroni, -makkaroni, marokkanisch]
|
||||
malerausbildung [Malerausbildung, -malerausbildung, ausbildungsreif]
|
||||
management [Management, -management, managen, gemanagt, angemahnt]
|
||||
mangel
|
||||
maniküre
|
||||
manneskraft [Manneskraft, -manneskraft, maskenhaft]
|
||||
mansarde [Mansarde, -mansarde, ansparende]
|
||||
mark [Mark, -mark, merk, park, Sark, Park, Bark, markig]
|
||||
marketingpraktiker [Marketingpraktiker, -marketingpraktiker, marketingorientiert, marketingwirksamer]
|
||||
maschinell
|
||||
massage [Massage, massage-, -massage, massige, Passage, Gassage, passagere]
|
||||
massengutschifffahrt [Massengutschifffahrt, -massengutschifffahrt, maschinenschriftlich]
|
||||
materie [Materie, -materie, materiell, materiefrei, maturiere, mattier]
|
||||
medaille [Medaille, -medaille, medaillenlos]
|
||||
medizinalshampoo [Medizinalshampoo, -medizinalshampoo, sozialmedizinisch]
|
||||
meeresfrüchte [Meeresfrüchte, -meeresfrüchte, Heeresfrüchte, meeresfeuchte, meeresfeucht, früchtereiche, früchtereich]
|
||||
quotient [Quotient, -quotient, quotiert, quotieren, quotiere, quotisieren]
|
||||
salonwagen [Salonwagen, -salonwagen, lossagen]
|
||||
satzeinleitend
|
||||
trilateral
|
||||
tristesse [Tristesse, -tristesse, tristeste, trist esse, trist-esse, triste, rissfeste, stresse, rissfest]
|
||||
tropen [Tropen, tropfen, tropen-, -tropen, trogen, tropenfest]
|
||||
vereisen
|
||||
verfahren
|
||||
verfügungs [verfügungs-, verfügen]
|
||||
verhindern
|
||||
verkäufer [Verkäufer, -verkäufer, verkämpfe, verkaufe, verkupfer]
|
||||
|
||||
Слова с ошибками []
|
||||
Anbindungsystem [Anbindungssystem]
|
||||
Anglistikdocent [Anglistikdozent, Anglistikstudent, Linguistikdozent]
|
||||
Ecco [Echo, Codec]
|
||||
Economclass [Economyclass, Economyklasse]
|
||||
Einverstandnis [Einverständnis, Einverstandanis, Einverstandnils, Einverstandeis, Einverstandnil, Einverstanden, Seinsverständnis, Koranverständnis, Unverständnis]
|
||||
Electrik [Elektrik, Electrabel]
|
||||
Historique [Historisiere, Historie]
|
||||
herüberzurucken [herüberzugucken, herüberzurücken, herüberzulocken, herüberzustrecken, herüberzublicken, herüberzuschicken]
|
||||
kartofel [kartoniere]
|
||||
salade [malade, lade]
|
||||
sanddornbere [versandbereite]
|
||||
211
Common/3dParty/hunspell/test/dst/de_DE.txt
Normal file
211
Common/3dParty/hunspell/test/dst/de_DE.txt
Normal file
@ -0,0 +1,211 @@
|
||||
Hallo
|
||||
Guten Morgen [Morgenläuten, Morgenröten]
|
||||
Danke
|
||||
Bitte
|
||||
Ja
|
||||
Nein
|
||||
Entschuldigung
|
||||
Tschüss
|
||||
Liebe
|
||||
Freund
|
||||
Familie
|
||||
Glück
|
||||
Gesundheit
|
||||
Schule
|
||||
Arbeit
|
||||
Essen
|
||||
Trinken
|
||||
Wasser
|
||||
Brot
|
||||
Käse
|
||||
Fleisch
|
||||
Gemüse
|
||||
Obst
|
||||
Kaffee
|
||||
Tee
|
||||
Milch
|
||||
Zucker
|
||||
Salz
|
||||
Pfeffer
|
||||
Haus
|
||||
Wohnung
|
||||
Bett
|
||||
Stuhl
|
||||
Tisch
|
||||
Sofa
|
||||
Fernseher
|
||||
Telefon
|
||||
Computer
|
||||
Buch
|
||||
Zeitung
|
||||
Schreiben
|
||||
Lesen
|
||||
Hören
|
||||
Sehen
|
||||
Fühlen
|
||||
Laufen
|
||||
Springen
|
||||
Schwimmen
|
||||
Tanzen
|
||||
Singen
|
||||
Lachen
|
||||
Weinen
|
||||
Freude
|
||||
Trauer
|
||||
Angst
|
||||
Mut
|
||||
Liebe
|
||||
Hass
|
||||
Freundschaft
|
||||
Beziehung
|
||||
Familie
|
||||
Eltern
|
||||
Kinder
|
||||
Geschwister
|
||||
Großeltern
|
||||
Onkel
|
||||
Tante
|
||||
Cousin
|
||||
Cousine
|
||||
Ehemann
|
||||
Ehefrau
|
||||
Verlobung
|
||||
Hochzeit
|
||||
Scheidung
|
||||
Geburt
|
||||
Tod
|
||||
Krankheit
|
||||
Arzt
|
||||
Krankenhaus
|
||||
Medikament
|
||||
Apotheke
|
||||
Gesundheit
|
||||
Wohlbefinden
|
||||
Fitness
|
||||
Diät
|
||||
Schlaf
|
||||
Ruhe
|
||||
Entspannung
|
||||
Sport
|
||||
Fußball
|
||||
Tennis
|
||||
Schwimmen
|
||||
Laufen
|
||||
Radfahren
|
||||
Wandern
|
||||
Reisen
|
||||
Urlaub
|
||||
Strand
|
||||
Sonne
|
||||
Meer
|
||||
Komplementär
|
||||
Perspektive
|
||||
Konsens
|
||||
Integrität
|
||||
Konsequenz
|
||||
Authentizität
|
||||
Korrelation
|
||||
Charakteristik
|
||||
Akzeptanz
|
||||
Flexibilität
|
||||
Assoziation
|
||||
Dekomposition
|
||||
Komplexität
|
||||
Positivismus
|
||||
Universalität
|
||||
Stabilität
|
||||
Individualität
|
||||
Konsistenz
|
||||
Konformität
|
||||
Dezentralisierung
|
||||
Kollaboration
|
||||
Partizipation
|
||||
Präzision
|
||||
Transformation
|
||||
Konkurrenz
|
||||
Paradoxie
|
||||
Redundanz
|
||||
Regeneration
|
||||
Integration
|
||||
Isolation
|
||||
Asymmetrie
|
||||
Aggregation
|
||||
Disziplin
|
||||
Resilienz
|
||||
Relevanz
|
||||
Konfusion
|
||||
Komplikation
|
||||
Koordination
|
||||
Harmonie
|
||||
Ineffizienz
|
||||
Konstruktion
|
||||
Konversion
|
||||
Kollusion
|
||||
Gerontologie
|
||||
Differenzierung
|
||||
Dimensionalität
|
||||
Inferenz
|
||||
Fluktuation
|
||||
Kontraktion
|
||||
Rezession
|
||||
Inflation
|
||||
Dekontamination
|
||||
Exzellenz
|
||||
Innovation
|
||||
Isomorphie
|
||||
Konnotation
|
||||
Insuffizienz
|
||||
Konversion
|
||||
Kompensation
|
||||
Koalition
|
||||
Inkongruenz
|
||||
Inkontinenz
|
||||
Kontrahent
|
||||
Konfiskation
|
||||
Konjunktur
|
||||
Aggression
|
||||
Konfrontation
|
||||
Kompatibilität
|
||||
Prognose
|
||||
Akzeleration
|
||||
Konstruktion
|
||||
Diversifikation
|
||||
Prävention
|
||||
Sanktion
|
||||
Indikation
|
||||
Reduktion
|
||||
Konkurrenz
|
||||
Konfiguration
|
||||
Konnotation
|
||||
Rezession
|
||||
Transformation
|
||||
Interaktion
|
||||
Kooperation
|
||||
Innovation
|
||||
Kollision
|
||||
Proklamation
|
||||
Konnotation
|
||||
Konfrontation
|
||||
Disposition
|
||||
Konkordanz
|
||||
Deklamation
|
||||
Kollaboration
|
||||
Isolation
|
||||
Inflation
|
||||
Diversifikation
|
||||
Konnotation
|
||||
Kompensation
|
||||
Diffusion
|
||||
Dekadenz
|
||||
Konserve
|
||||
Deklomotion [Deklamation, Deklination, Deletionsklon]
|
||||
Kolaboration [Kollaboration, Kollaborativ, Elaboration, Korporation, Inkorporation]
|
||||
Isollation [Isolation, Installation, Kollation, Solmisation, Spallation]
|
||||
Infllation [Inflation, Inflationär, Inflammation, Inflationiere, Installation]
|
||||
Divirsifikation [Diversifikation, Ossifikation, Kodifikation, Ratifikation]
|
||||
Konotation [Konnotation, Korotation, Kinotation, Kontotation, Ökonotation, Konnotativ, Annotation, Notation, Konfrontation]
|
||||
Kompenssation [Kompensation]
|
||||
Difusion [Diffusion, Gasdiffusion, Infusion, Diskussion, Fusion]
|
||||
Dekadens [Dekaden, Dekadenz, Dekadent, Dekade, Dekans, Dekagons, Dekkans]
|
||||
Kanzerve [Verwanze]
|
||||
|
||||
123
Common/3dParty/hunspell/test/dst/el_GR.txt
Normal file
123
Common/3dParty/hunspell/test/dst/el_GR.txt
Normal file
@ -0,0 +1,123 @@
|
||||
Αβαντάζ
|
||||
Αβασταγά
|
||||
Αβγάτισες
|
||||
αβέβαιο
|
||||
αβέλτερο
|
||||
αβέλτεροι
|
||||
αβίαστους
|
||||
άβλαβοι
|
||||
αβοκάντο
|
||||
αβράδιαστης
|
||||
άβραστη
|
||||
αβράχυντου
|
||||
άβρεχτα
|
||||
αβρή
|
||||
αβρότης
|
||||
άβυσσον
|
||||
αγαθόν
|
||||
αγαθούς
|
||||
αγάλακτο
|
||||
αγγούρι
|
||||
αγελαδινού
|
||||
αγέρα
|
||||
αγεωμέτρητων
|
||||
αγίνωτοι
|
||||
άγκυρες
|
||||
αγορεύσεις
|
||||
αγόρευσή
|
||||
αγορίνα
|
||||
Αγοριού
|
||||
Αγροληψία
|
||||
Αρμόνια
|
||||
βγαίνοντας
|
||||
βεβαιώσεων
|
||||
διάθεση
|
||||
διαίρεση
|
||||
Διαιρέσου
|
||||
Διαιτολογίου
|
||||
διαψεύσουν
|
||||
διδασκάλισσας
|
||||
ενασκήσεις
|
||||
ενασχόληση
|
||||
ενασχόλησή
|
||||
ενδείξεις
|
||||
ενδεχόμενον
|
||||
ενδιαμέσου
|
||||
Επιστήθιες
|
||||
Επιστημο [Επιστημοσύνη]
|
||||
Επιστολές
|
||||
Επιστολή
|
||||
εύπορους
|
||||
ευρέα
|
||||
ευρημάτων
|
||||
ευρύτητά
|
||||
ευσταθών
|
||||
εύστροφα
|
||||
ευσυνειδησία
|
||||
εύτακτε
|
||||
ευτελείς
|
||||
ευτελίζουν
|
||||
ιδρυτικό
|
||||
ιεροψάλτες
|
||||
Ιζόλα
|
||||
Ιθαγένειάς
|
||||
ικανότατος
|
||||
ιλαρότης
|
||||
κεφαλής
|
||||
κεφαλιάτικες
|
||||
κεφαλωτές
|
||||
κήπε
|
||||
κήπευση
|
||||
Κήρυξής
|
||||
Λεξικογραφιών
|
||||
Λεξιλογικός
|
||||
λεοντή
|
||||
λεοντής
|
||||
ολιγοχρόνιου
|
||||
ολικέ
|
||||
ολικές
|
||||
ολική
|
||||
πελαγώνω
|
||||
πελατών
|
||||
πελάων
|
||||
προστατεύει
|
||||
προστασίας
|
||||
σούρουπου
|
||||
σουρούπωμα
|
||||
σούρτης
|
||||
Σούρωνα
|
||||
Σπαγέτα
|
||||
Σφάλμα
|
||||
Σφάλματά
|
||||
σφικτά
|
||||
σφικτέ
|
||||
σφοδρότητας
|
||||
σφοδρού
|
||||
σφραγίσω
|
||||
σχεδιάζουμε
|
||||
σχεδιάζουν
|
||||
σχηματίσου
|
||||
σχηματίσουμε
|
||||
σχολιάζεσαι
|
||||
Σχολιάζεστε
|
||||
Ενδιαφέροντα
|
||||
|
||||
Слова с ошибками []
|
||||
Αβασiλευτου [Αβασίλευτου, Αβασίλευτο, Αβόλευτου]
|
||||
αγαπούσαv [αγαπούσα, αγαπούσαν, αγαπούσε]
|
||||
βeβαιωμένοι [βεβαιωμένοι, βεβαιωμένο]
|
||||
εvασxόλησης [ενασχόλησης]
|
||||
επιoτολικέ [επιστολικέ, επιστολικό]
|
||||
ιδιωτικοποιήσειc [ιδιωτικοποιήσει, ιδιωτικοποιήσεις, ιδιωτικοποιήσετε, ιδιωτικοποιήσεως, ιδιωτικοποιήσεων, ιδιωτικοποιήστε]
|
||||
λεπταίσθnτη [λεπταίσθητη, λεπταίσθητα, λεπταίσθητε, λεπταίσθητο]
|
||||
πρoστιμάρισμα [προστιμάρισμα, στιμάρισμα]
|
||||
σφάλμαtα [σφάλματα, σφάλμα]
|
||||
προστάτεuε [προστάτευε, προστάτεψε, προστάτευσε, προστάτες, προστάτευα, προστάτευσα]
|
||||
κεxριμπαριού [κεχριμπαριού, κεχριμπαρένιο]
|
||||
διαισθnτικότητες [διαισθητικότητες, διαισθητικότητας, διαισθητικότητα, διαισθητικότης, αισθητικότητες]
|
||||
αγκιστpώσουv [αγκιστρώσουν]
|
||||
αγαθoεργiας [αγαθοεργίας]
|
||||
αβεβαιoτητά [αβεβαιότητά, βεβαιότητά]
|
||||
αγέρεc [αγέρες]
|
||||
διδαxθούμε [διδαχθούμε, διδαχτούμε]
|
||||
εuσταθειώv [ευσταθειών]
|
||||
116
Common/3dParty/hunspell/test/dst/en_AU.txt
Normal file
116
Common/3dParty/hunspell/test/dst/en_AU.txt
Normal file
@ -0,0 +1,116 @@
|
||||
Acknowledge
|
||||
acrophobia
|
||||
adventurousness
|
||||
aeronautics
|
||||
algal
|
||||
Alligator
|
||||
allegation
|
||||
alphabetise
|
||||
Analogy
|
||||
appropriable
|
||||
assembly
|
||||
attempt
|
||||
Average
|
||||
barbecue
|
||||
bathtub
|
||||
begun
|
||||
belongingness
|
||||
Better
|
||||
binary
|
||||
blackberry
|
||||
boatswain
|
||||
bow-tie
|
||||
brambly
|
||||
bright-eyed
|
||||
bubble
|
||||
Calender
|
||||
cancellous
|
||||
cantankerousness
|
||||
carefree
|
||||
categorized [categorised, categorise, categorisation, category, decorticated, cauterised, avant-grist]
|
||||
cellular
|
||||
chaos
|
||||
cheerfulise
|
||||
childlike
|
||||
circumstance
|
||||
close-mouthed
|
||||
Cocoa
|
||||
coherent
|
||||
co-located
|
||||
Colours
|
||||
controversial
|
||||
cottage
|
||||
creditworthiness
|
||||
cut-down
|
||||
dedicated
|
||||
deep-freeze
|
||||
Definitive
|
||||
Designs
|
||||
digital
|
||||
distensible
|
||||
dollar
|
||||
dyslexia
|
||||
Egyptian
|
||||
effectively
|
||||
etiquette
|
||||
excess
|
||||
exotica
|
||||
fairly
|
||||
feedback
|
||||
features
|
||||
figure's
|
||||
fjord
|
||||
forty-seven
|
||||
government
|
||||
haematomata
|
||||
helpless
|
||||
homologous
|
||||
implant
|
||||
Indemnify
|
||||
inexpert
|
||||
interior
|
||||
localises
|
||||
loquaciousness
|
||||
maelstrom
|
||||
mechanizable
|
||||
melodious
|
||||
mezzo-soprano
|
||||
mozzie
|
||||
municipalisation
|
||||
mystifier
|
||||
Neoclassicism
|
||||
newsletter
|
||||
non-professional
|
||||
officiation
|
||||
orientalisation
|
||||
palaeoanthropography
|
||||
parrot
|
||||
pickpocket
|
||||
pioneer
|
||||
cryptanalytic
|
||||
simplifying
|
||||
sommelier
|
||||
spicy
|
||||
steward
|
||||
subcontinental
|
||||
swimwear
|
||||
Technical
|
||||
trajectory
|
||||
wholesomeness
|
||||
Advantageously
|
||||
interindustry
|
||||
red-eye
|
||||
sub-group
|
||||
|
||||
Слова с ошибками []
|
||||
Acredited [Credited, A credited, Accredited, Accredit, Accreted, Creditable, Discredit, Acridity, Aegritude]
|
||||
agressive [aggressive, regressive, digressive, progressive, transgressive, aggressor, expressive]
|
||||
appreciativiness [appreciativeness, appreciatively, appreciative, appreciation, apprehensiveness, operativeness, provocativeness]
|
||||
aritmetical [arithmetical, arithmetica, arithmetic, hermetical, antithetical, paramedical, grammatical]
|
||||
biosyntesized [biosynthesized, nonsynthesised, synthesised, amniocenteses, amniocentesis]
|
||||
lisense [license, senilise, linenise, sensualise, sensise, licence, licensable]
|
||||
paranoa [paranoia, paranoid, paranormal, paragon, panorama, Paringa, parental]
|
||||
fotoelectronic [photoelectronic]
|
||||
semi transparent [semitransparent, transparentise, non-transparent, transparency, semi-permanent, transpiration, superintendence]
|
||||
synonymus [synonyms, synonymous, synonym's, synonym us, synonym-us, synonym, anonymous, synchronous, synoecious, anonymise, unanimous]
|
||||
wordprocessing [word-processing]
|
||||
125
Common/3dParty/hunspell/test/dst/en_CA.txt
Normal file
125
Common/3dParty/hunspell/test/dst/en_CA.txt
Normal file
@ -0,0 +1,125 @@
|
||||
admire
|
||||
admittance
|
||||
aggrandizement
|
||||
Airmen
|
||||
Albatross
|
||||
amateur
|
||||
angling
|
||||
apparatus
|
||||
Architecture
|
||||
assessment
|
||||
attempt's
|
||||
awakening
|
||||
backgrounder
|
||||
Balance's
|
||||
barometric
|
||||
bashfulness
|
||||
beautiful
|
||||
belletristic
|
||||
blatancy
|
||||
bonbon
|
||||
border
|
||||
Bottom
|
||||
bountifulness
|
||||
breakpoints
|
||||
bulkiness
|
||||
businesslike
|
||||
can't
|
||||
cash
|
||||
castle
|
||||
Casual
|
||||
cauliflower
|
||||
celebrity
|
||||
childish
|
||||
chokecherry
|
||||
choreographically
|
||||
chronological
|
||||
classification
|
||||
clearheaded
|
||||
coalesce
|
||||
Coexistence
|
||||
collaborative
|
||||
coloured's
|
||||
concentration
|
||||
draconian
|
||||
drainpipe
|
||||
demonstrativeness
|
||||
dependence
|
||||
dependency
|
||||
dream
|
||||
duplication
|
||||
epidemiological
|
||||
equitable
|
||||
Essence
|
||||
Exemption
|
||||
exonerate
|
||||
fainthearted
|
||||
falsification
|
||||
ferromagnetic
|
||||
flammable
|
||||
fraternization
|
||||
French
|
||||
frontier
|
||||
gadget
|
||||
galleria
|
||||
Gallery
|
||||
gateaux
|
||||
geocache
|
||||
ginger
|
||||
glace
|
||||
glacier
|
||||
globalization
|
||||
hockey
|
||||
holiday
|
||||
housemate
|
||||
intensifier
|
||||
joystick
|
||||
Language
|
||||
leaseholder
|
||||
non-breakable
|
||||
northerly
|
||||
o'clock
|
||||
oeuvre
|
||||
openhandedness
|
||||
oscillation
|
||||
outface
|
||||
outlaw
|
||||
overladen
|
||||
package
|
||||
palazzo
|
||||
panama
|
||||
Paragraphs
|
||||
Parliament
|
||||
particular
|
||||
pasteurization
|
||||
pathogen
|
||||
perception
|
||||
phenomena
|
||||
philanthropically
|
||||
physical
|
||||
populations
|
||||
repugnance
|
||||
request
|
||||
resplendence
|
||||
retroactive
|
||||
rigidity
|
||||
schedule's
|
||||
School
|
||||
scintillation
|
||||
sensibility
|
||||
settlement
|
||||
taxiway
|
||||
bereft
|
||||
|
||||
Слова с ошибками []
|
||||
acomplishment [accomplishment, accomplish, compliment]
|
||||
anihilate [annihilate, annihilator, annihilation]
|
||||
caprise [caprice, cap rise, cap-rise, apprise]
|
||||
chambre [chamber, chambray]
|
||||
etnographically [ethnographically, pornographically, photographically, typographically, topographically]
|
||||
horsmanship [horsemanship, sportsmanship, swordsmanship, marksmanship, showmanship]
|
||||
innundation [inundation, foundation, annunciation, insinuation, intimidation]
|
||||
lemongras [lemongrass, lemonades]
|
||||
omelete [omelette, telemeter]
|
||||
retorical [rhetorical, oratorical, categorical, theoretical, reportorial]
|
||||
shepishness [sheepishness, snappishness, waspishness, impishness, foppishness]
|
||||
122
Common/3dParty/hunspell/test/dst/en_GB.txt
Normal file
122
Common/3dParty/hunspell/test/dst/en_GB.txt
Normal file
@ -0,0 +1,122 @@
|
||||
Abbreviation
|
||||
Acceptability
|
||||
acquirable
|
||||
Addressee
|
||||
afterthought
|
||||
airworthiness
|
||||
all-powerful
|
||||
amateurishness
|
||||
amorphousness
|
||||
anthology
|
||||
Auspiciousness
|
||||
Bibliographer
|
||||
Bilberry
|
||||
birthday
|
||||
bodyguard
|
||||
broadleaved
|
||||
brontosaurus
|
||||
bumptiousness
|
||||
Cabaret
|
||||
Californian
|
||||
calumny
|
||||
cancellation
|
||||
cantonal
|
||||
capitalize
|
||||
careful
|
||||
carry-on
|
||||
casino
|
||||
clown
|
||||
co-ordinate
|
||||
cockleshell
|
||||
decennial
|
||||
deckchair
|
||||
decryption
|
||||
deep-freeze
|
||||
Democracy
|
||||
financial
|
||||
fish-plate
|
||||
Flamenco
|
||||
housing
|
||||
Hybrid
|
||||
hydroelectricity
|
||||
iceboat
|
||||
ichthyology
|
||||
idiomatic
|
||||
ill-humoured
|
||||
imperatrix
|
||||
individuality
|
||||
interocular
|
||||
intrasectoral
|
||||
ironwoods
|
||||
Jolliness
|
||||
Jurisprudent
|
||||
knowledgable
|
||||
kopeks
|
||||
labour-intensive
|
||||
laboratory
|
||||
lake
|
||||
language
|
||||
larynx
|
||||
latching
|
||||
leakiness
|
||||
License
|
||||
licensed
|
||||
licensee
|
||||
life-threatening
|
||||
linguistics
|
||||
long-lived
|
||||
machinable
|
||||
mainsheet
|
||||
Major
|
||||
malleability
|
||||
man-hour
|
||||
Mango
|
||||
ninety-five
|
||||
nobody
|
||||
non-blocking
|
||||
non-judicial
|
||||
nonconforming
|
||||
north-Western
|
||||
nutritiousness
|
||||
quasi-synchronous
|
||||
question
|
||||
racoon [raccoon, racoon's, contra]
|
||||
radish
|
||||
Railway
|
||||
Rarity
|
||||
saucer
|
||||
Save
|
||||
Saying
|
||||
supplely
|
||||
tallish
|
||||
target
|
||||
Taxi
|
||||
teach-in
|
||||
technician
|
||||
ultramodern
|
||||
umbrae
|
||||
uncertainness
|
||||
unconstitutionality
|
||||
washing
|
||||
wasn't
|
||||
waxen
|
||||
weather
|
||||
well-formed
|
||||
what's-his-name
|
||||
whereupon
|
||||
Wi-Fi
|
||||
Wikipedia
|
||||
|
||||
Слова с ошибками []
|
||||
Abstractnes [Abstractness, Abstractedness, Abstracter, Abstraction, Abstracted]
|
||||
advantageusness [advantageousness, advantageous]
|
||||
arhythmical [rhythmical, arrhythmical, a rhythmical, arrhythmic, arrhythmia]
|
||||
autosuggestibility [auto-suggestibility]
|
||||
kaptor [captor]
|
||||
coldshouldering [cold-shouldering]
|
||||
humaneneses [humaneness, humanenesses, humannesses, humanness, humanises, humblenesses]
|
||||
imaginativness [imaginativeness, imaginative, imaginableness, imitativeness]
|
||||
knight-erantry [knight-errantry, straight-eight]
|
||||
magasine [magazine, magnesia, imagine]
|
||||
night-wachman [night-watchman, nightmarish]
|
||||
qualifidly [qualifiedly, qualified, squalidly]
|
||||
218
Common/3dParty/hunspell/test/dst/en_US.txt
Normal file
218
Common/3dParty/hunspell/test/dst/en_US.txt
Normal file
@ -0,0 +1,218 @@
|
||||
apple
|
||||
banana
|
||||
cat
|
||||
dog
|
||||
egg
|
||||
fish
|
||||
gold
|
||||
house
|
||||
ice
|
||||
juice
|
||||
kite
|
||||
lion
|
||||
mouse
|
||||
night
|
||||
orange
|
||||
pencil
|
||||
queen
|
||||
rabbit
|
||||
sun
|
||||
tea
|
||||
umbrella
|
||||
vase
|
||||
watch
|
||||
xylophone
|
||||
yellow
|
||||
zebra
|
||||
arrow
|
||||
book
|
||||
cake
|
||||
car
|
||||
day
|
||||
elephant
|
||||
flower
|
||||
hat
|
||||
island
|
||||
jelly
|
||||
king
|
||||
lamp
|
||||
moon
|
||||
nose
|
||||
owl
|
||||
pink
|
||||
quilt
|
||||
radio
|
||||
sunflower
|
||||
tree
|
||||
unicorn
|
||||
violin
|
||||
water
|
||||
xylophone
|
||||
yellow
|
||||
zoo
|
||||
apple juice [applesauce]
|
||||
blue
|
||||
calculator
|
||||
desk
|
||||
elephant
|
||||
fire
|
||||
goat
|
||||
hat
|
||||
ice cream [creamer]
|
||||
jacket
|
||||
key
|
||||
lemon
|
||||
map
|
||||
notebook
|
||||
owl
|
||||
pear
|
||||
quilt
|
||||
rose
|
||||
soccer
|
||||
table
|
||||
umbrella
|
||||
vegetable
|
||||
whale
|
||||
xylophone
|
||||
yellow
|
||||
zebra
|
||||
apple pie [pineapple]
|
||||
beach
|
||||
computer
|
||||
drum
|
||||
elephant
|
||||
goat cheese [headcheese]
|
||||
hat
|
||||
ice skate [cheapskate]
|
||||
juice box [jukebox]
|
||||
kite festival [quite festival]
|
||||
lemonade
|
||||
mountain
|
||||
notebook paper []
|
||||
orange juice [orangeade]
|
||||
pizza
|
||||
queen bee [quin bee, queen bi, keen bee, ween bee]
|
||||
rainbow
|
||||
snow
|
||||
turtle
|
||||
umbrella hat [umbrella]
|
||||
valley
|
||||
Aberration
|
||||
Absolution
|
||||
Acquiesce
|
||||
Adumbrate
|
||||
Aesthete
|
||||
Altruistic
|
||||
Ambivalent
|
||||
Anomalous
|
||||
Antediluvian
|
||||
Antipathy
|
||||
Aphorism
|
||||
Apocryphal
|
||||
Apostasy
|
||||
Apparition
|
||||
Arduous
|
||||
Assiduous
|
||||
Audacious
|
||||
Austere
|
||||
Autonomy
|
||||
Avaricious
|
||||
Axiomatic
|
||||
Baleful
|
||||
Bellicose
|
||||
Belligerent
|
||||
Bereft
|
||||
Bilious
|
||||
Bombastic
|
||||
Cacophony
|
||||
Capricious
|
||||
Cartography
|
||||
Castigate
|
||||
Clandestine
|
||||
Coalesce
|
||||
Cogent
|
||||
Cognizant
|
||||
Colloquy
|
||||
Concomitant
|
||||
Confabulate
|
||||
Congenial
|
||||
Conundrum
|
||||
Copious
|
||||
Corpulent
|
||||
Coven
|
||||
Credulous
|
||||
Culpable
|
||||
Dearth
|
||||
Debilitate
|
||||
Deleterious
|
||||
Denigrate
|
||||
Despondent
|
||||
Diatribe
|
||||
Dilapidated
|
||||
Disparage
|
||||
Dissemble
|
||||
Dissonance
|
||||
Duplicity
|
||||
Ebullient
|
||||
Egregious
|
||||
Ephemeral
|
||||
Equanimity
|
||||
Esoteric
|
||||
Euphemism
|
||||
Evanescent
|
||||
Exacerbate
|
||||
Exhort
|
||||
Expatriate
|
||||
Extol
|
||||
Facetious
|
||||
Fatuous
|
||||
Feckless
|
||||
Felicitous
|
||||
Feral
|
||||
Fervent
|
||||
Fetter
|
||||
Flummox
|
||||
Fractious
|
||||
Garrulous
|
||||
Hegemony
|
||||
Iconoclast
|
||||
Idiosyncrasy
|
||||
Ignominious
|
||||
Impecunious
|
||||
Ineffable
|
||||
Inexorable
|
||||
Inscrutable
|
||||
Insidious
|
||||
Intrepid
|
||||
Intransigent
|
||||
Invective
|
||||
Irascible
|
||||
Juxtapose
|
||||
Kowtow
|
||||
Languid
|
||||
Lassitude
|
||||
Lurid
|
||||
Malinger
|
||||
Maudlin
|
||||
Mawkish
|
||||
Mendacious
|
||||
Metaphysical
|
||||
Antransigent [Intransigent, Intransigence, Transient, Intransitive, Transcendent]
|
||||
Inwective [Infective, Invective, Ineffective, Instinctive, Inactive]
|
||||
Iracible [Irascible, Acquirable]
|
||||
Juxtopose [Juxtapose, Juxtaposition]
|
||||
Kovtow [Kowtow, Kowloon]
|
||||
Langued [Languid, Languished]
|
||||
Lasitude [Lassitude, Latitude]
|
||||
Larid [Arid, L arid, La rid, La-rid, Laird, Lard, Laid, Lurid]
|
||||
Mallinger [Malinger, Salinger, Lingering, Lingerer, Germinal]
|
||||
Haudlin [Maudlin, Handling]
|
||||
Mavkish [Mawkish, Mavis]
|
||||
Mendocious [Mendacious, Mendocino]
|
||||
Mitaphysical [Metaphysical, Physicality, Physical]
|
||||
timeline [time line, time-line, timberline]
|
||||
rollout [roll out, roll-out, rollover]
|
||||
workshopped [work shopped, work-shopped, works hopped, works-hopped, workshop]
|
||||
deliverables [deliverable, deliverable s, deliverers, deliberative, desirable]
|
||||
|
||||
|
||||
114
Common/3dParty/hunspell/test/dst/en_ZA.txt
Normal file
114
Common/3dParty/hunspell/test/dst/en_ZA.txt
Normal file
@ -0,0 +1,114 @@
|
||||
Acceptably
|
||||
Achievement
|
||||
administrate
|
||||
all-day
|
||||
amount
|
||||
average
|
||||
bilayer
|
||||
blasé
|
||||
boutique
|
||||
breezy
|
||||
byers
|
||||
cabdriver
|
||||
carefree
|
||||
categorised
|
||||
Chameleon
|
||||
cheerful
|
||||
chronology
|
||||
cliché
|
||||
cooling-off
|
||||
courage
|
||||
crudités
|
||||
decorates
|
||||
dooryard
|
||||
débâcle
|
||||
electromotive
|
||||
equalled
|
||||
Exotica
|
||||
fellow-traveller
|
||||
forests
|
||||
full-timer
|
||||
graded
|
||||
habitué
|
||||
haven't
|
||||
hide-and-seek
|
||||
home-building
|
||||
interaxial
|
||||
kingdom
|
||||
largeness
|
||||
long-distance
|
||||
Majority
|
||||
manoeuvre
|
||||
Matrix
|
||||
metier
|
||||
mightn't
|
||||
multidisciplinary
|
||||
night-time
|
||||
officio
|
||||
old-style
|
||||
organize
|
||||
overaggressive
|
||||
packing
|
||||
parenthesis
|
||||
pince-nez
|
||||
Plaint
|
||||
play-act
|
||||
policy-making
|
||||
Preheat
|
||||
prohibit
|
||||
puzzle
|
||||
queue
|
||||
quite
|
||||
re-enact
|
||||
reason
|
||||
ready-made
|
||||
renewal
|
||||
resize
|
||||
rooihout
|
||||
scampi
|
||||
schoolteacher
|
||||
sea-green
|
||||
shop-boy
|
||||
sidebar
|
||||
skyscraper
|
||||
soundless
|
||||
spelling
|
||||
stakeout
|
||||
synchronizing
|
||||
take-off
|
||||
Thereof
|
||||
Trademark
|
||||
transportable
|
||||
treatment
|
||||
tweeness
|
||||
under-age
|
||||
unmake
|
||||
Variate
|
||||
Visitant
|
||||
volume
|
||||
webmaster
|
||||
well-prepared
|
||||
window
|
||||
yesteryear
|
||||
first-aid
|
||||
Hydrant
|
||||
inconstant
|
||||
network
|
||||
northernmost
|
||||
nowhere
|
||||
souvenir
|
||||
telecommunicate
|
||||
|
||||
Слова с ошибками []
|
||||
afordable [fordable, affordable, a fordable, formidable, recordable, foreseeable, adorable, avoidable, avoidably]
|
||||
anthropologie [anthropology, anthropologies]
|
||||
bagage [baggage, bag age, bag-age, Babbage, garbage, bagged, bagel, bakgat, ribcage]
|
||||
comparatif [comparative, comparator, compatriot, comparable, comparability, comparably]
|
||||
flammeble [flammable, flamelike, lamentable, blameless, flamed, flammability, flamboyance]
|
||||
indivizible [indivisible, individualize, indiscernible, divisible, invincible, indefeasible, inadvisability]
|
||||
jetlag [jet-lag]
|
||||
lettrebox [letterbox, treble, storybook, legislature]
|
||||
panoramma [panorama, Panorama, panoramic, paranormal, Panamanian, pentagram, paramagnet]
|
||||
posessor [possessor, possess, assessor, processor, professor, poses, posses]
|
||||
selfdoubt [self-doubt]
|
||||
abandonner [abandoner, abandon, bandoleer, Ndondondwane, Bannerman, abundance, abundant]
|
||||
208
Common/3dParty/hunspell/test/dst/es_ES.txt
Normal file
208
Common/3dParty/hunspell/test/dst/es_ES.txt
Normal file
@ -0,0 +1,208 @@
|
||||
nosotros
|
||||
vosotros
|
||||
ellos
|
||||
ellas
|
||||
aquí
|
||||
allí
|
||||
ahora
|
||||
antes
|
||||
después
|
||||
siempre
|
||||
nunca
|
||||
también
|
||||
solamente
|
||||
verdad
|
||||
mentira
|
||||
bien
|
||||
mal
|
||||
grande
|
||||
pequeño
|
||||
rápido
|
||||
lento
|
||||
nuevo
|
||||
viejo
|
||||
bueno
|
||||
malo
|
||||
feliz
|
||||
triste
|
||||
bonito
|
||||
feo
|
||||
caliente
|
||||
frío
|
||||
dulce
|
||||
amargo
|
||||
fuerte
|
||||
débil
|
||||
cerca
|
||||
lejos
|
||||
fácil
|
||||
difícil
|
||||
cierto
|
||||
falso
|
||||
caro
|
||||
barato
|
||||
limpio
|
||||
sucio
|
||||
fuerte
|
||||
débil
|
||||
alto
|
||||
bajo
|
||||
claro
|
||||
oscuro
|
||||
abierto
|
||||
cerrado
|
||||
joven
|
||||
viejo
|
||||
corto
|
||||
largo
|
||||
alegre
|
||||
tranquilo
|
||||
nervioso
|
||||
amable
|
||||
grosero
|
||||
conocido
|
||||
desconocido
|
||||
cortés
|
||||
rudo
|
||||
agradable
|
||||
desagradable
|
||||
sabroso
|
||||
insípido
|
||||
difícil
|
||||
fácil
|
||||
cansado
|
||||
descansado
|
||||
moderno
|
||||
antiguo
|
||||
último
|
||||
primero
|
||||
posible
|
||||
imposible
|
||||
rápido
|
||||
lento
|
||||
sencillo
|
||||
complicado
|
||||
propio
|
||||
ajeno
|
||||
abierto
|
||||
cerrado
|
||||
amable
|
||||
desagradable
|
||||
seguro
|
||||
inseguro
|
||||
correcto
|
||||
incorrecto
|
||||
dulce
|
||||
amargo
|
||||
Anacoreta
|
||||
Sobrentender
|
||||
Embriaguez
|
||||
Inquebrantable
|
||||
Empedernido
|
||||
Derramamiento
|
||||
Despotricar
|
||||
Escafandra
|
||||
Aletargamiento
|
||||
Estancamiento
|
||||
Descarado
|
||||
Exégesis [Génesis]
|
||||
Contrariedad
|
||||
Espeluznante
|
||||
Conspiración
|
||||
Impedimenta
|
||||
Deglutir
|
||||
Engreído
|
||||
Enmascarado
|
||||
Exterminio
|
||||
Embelesar
|
||||
Permutación [Permutan]
|
||||
Desesperanza
|
||||
Impenetrable
|
||||
Enarbolamiento [Enarbola miento, Enarbola-miento, Enrollamiento, Arrollamiento, Encarcelamiento, Eslabonamiento]
|
||||
Errabundo
|
||||
Deslinde
|
||||
Inefable
|
||||
Soliviantar
|
||||
Embriaguez
|
||||
Perdurable
|
||||
Opulencia
|
||||
Trémulo
|
||||
Desembolso
|
||||
Empedernido
|
||||
Anquilosar
|
||||
Enigmático
|
||||
Inquebrantable
|
||||
Contrincante
|
||||
Desmesurado
|
||||
Vanagloriar
|
||||
Exasperar
|
||||
Desvanecer
|
||||
Perpetuidad
|
||||
Desbaratar
|
||||
Ineficaz
|
||||
Zozobra
|
||||
Elucubración
|
||||
Ineludible
|
||||
Desgarramiento
|
||||
Atestiguar
|
||||
Encascarar [Encascara, Encascaran, Encascaras, Enmascarar, Encascar, Encascar ar, Encascar-ar, Encascabelar, Encascotar, Enmascaran, Enmascara]
|
||||
Desembozar
|
||||
Irreverente
|
||||
Soslayar
|
||||
Despiadado
|
||||
Embaucar
|
||||
Moflete
|
||||
Endilgar
|
||||
Desfalco
|
||||
Embelesamiento
|
||||
Desestimar
|
||||
Enajenación
|
||||
Desavenencia
|
||||
Inexorable
|
||||
Atolladero
|
||||
Egrégoro [Negror]
|
||||
Desafiar
|
||||
Afable
|
||||
Enervar
|
||||
Belicoso
|
||||
Enervar
|
||||
Descacharrante
|
||||
Entramado
|
||||
Inigualable
|
||||
Perplejidad
|
||||
Descabellado
|
||||
Diligencia
|
||||
Enaltecimiento
|
||||
Desvergonzado
|
||||
Arrebato
|
||||
Empatía [Empata, Empate]
|
||||
Endiosar
|
||||
Peripecia
|
||||
Desidia
|
||||
Subversión
|
||||
Desfachatado
|
||||
Desfalco
|
||||
Desvirtuar
|
||||
Errático
|
||||
Desahuciar
|
||||
Envilecimiento
|
||||
Empecinado
|
||||
Estolidez
|
||||
Despropósito
|
||||
Engatusar
|
||||
Culminante
|
||||
Sobrentender
|
||||
Enseñorear
|
||||
Desacato
|
||||
segguro [seguro, seg guro, seg-guro, seguiros, segur]
|
||||
insseguro [inseguro, insegura]
|
||||
correcto
|
||||
incarrecto [incorrecto, insurrecto]
|
||||
dalce [salce, dale, alce, dance, calce, dalle, dulce, d alce, cendal, cebadal, celda]
|
||||
amergo [amero, mergo, amargo, amelgo, a mergo, amorgone]
|
||||
Anasoreta [Anacoreta, Masoreta, Trasfretana, Asotanas, Asotanara]
|
||||
Sobrententter [Sobrestante, Soberanamente, Sobriamente, Soberbiamente]
|
||||
Embreagues [Embregues, Embragues, Embriagues, Embriaguemos, Embragares, Embrague, Embriague]
|
||||
Inquebranttable [Inquebrantable, Quebrantable, Infranqueable, Intransitable]
|
||||
Empidernedo [Empedernido, Empedernecer, Empedernir]
|
||||
|
||||
132
Common/3dParty/hunspell/test/dst/eu_ES.txt
Normal file
132
Common/3dParty/hunspell/test/dst/eu_ES.txt
Normal file
@ -0,0 +1,132 @@
|
||||
Abantza
|
||||
ñabar
|
||||
abasto
|
||||
abegikortasun
|
||||
aberaskeria
|
||||
aberetzar
|
||||
abezedario
|
||||
abialdi
|
||||
Abiatzaile
|
||||
abizari
|
||||
Aboli
|
||||
abonatu
|
||||
absenta
|
||||
absolutibo
|
||||
accelerando
|
||||
adabegitsu
|
||||
adberbio
|
||||
adiaka
|
||||
adierazle
|
||||
adierazkizun
|
||||
adikuntza
|
||||
adin
|
||||
adinaro
|
||||
adineratu
|
||||
adin-txikitasun
|
||||
administratzaile
|
||||
adoleszentzia
|
||||
adopzio
|
||||
adostu
|
||||
aerolabangailu
|
||||
Aeroplano
|
||||
afalordu
|
||||
agente
|
||||
agertezin
|
||||
agiantza
|
||||
agoran
|
||||
arradatze
|
||||
arrakasta
|
||||
Batata
|
||||
baterakuntza
|
||||
baterakor
|
||||
Bateri
|
||||
batuar
|
||||
baud-abiadura
|
||||
batzuenganako
|
||||
batzuengandik
|
||||
batzuengan
|
||||
batzuengatik
|
||||
batzuen
|
||||
baxera
|
||||
berezi
|
||||
berezikeria
|
||||
beritzete
|
||||
beroa
|
||||
Beroate
|
||||
beroatza
|
||||
berorri
|
||||
berrabiatu
|
||||
berra
|
||||
berresgarri
|
||||
berripaper
|
||||
chap
|
||||
dabilzkidake
|
||||
dabilzkie
|
||||
dagitza
|
||||
dagokik
|
||||
dagozkieke
|
||||
erdiondu
|
||||
galdera
|
||||
galtzada
|
||||
garaitiar
|
||||
garantia
|
||||
Garaztaketa
|
||||
garbitasun
|
||||
gastronomiko
|
||||
Gaurgero
|
||||
gaurgoitik
|
||||
legizkie
|
||||
legokizue
|
||||
legozkidake
|
||||
lehenbizi
|
||||
nindoakio
|
||||
publikotasun
|
||||
publizitate
|
||||
subsidiario
|
||||
substantibo
|
||||
sugestio
|
||||
superbalorazio
|
||||
taidun
|
||||
taldeburu
|
||||
Talent
|
||||
Teknografia
|
||||
xantxa
|
||||
xerbitor
|
||||
xerokopia
|
||||
zabaldura
|
||||
Zabalkor
|
||||
Zabaltza
|
||||
zabilzkieken
|
||||
zabilzkio
|
||||
zaharkote
|
||||
zeneritzeketen
|
||||
zenerra
|
||||
zenezagu
|
||||
zengozkigute
|
||||
zeniharduke
|
||||
zenioke
|
||||
zenioketez
|
||||
zeniraute
|
||||
zenizkien
|
||||
zenizkiguke
|
||||
Zintut
|
||||
Zintuzkedan
|
||||
isiltasun
|
||||
|
||||
Слова с ошибками []
|
||||
abriсot [abrikot, abrigo]
|
||||
absenzia [absentzia]
|
||||
addikzio [adikzio, dikzio, adukzio, adizio]
|
||||
administraziozerbizu [administrazio-zerbitzu, administrazio-zuzenbide, administraziopean]
|
||||
bat-bates [bat-batez]
|
||||
bermagari [bermagarri, bermagailuari, bermagailuri, armagaberi, bermaguneari]
|
||||
cataluniar [kataluniar, catalunyar, kataluniera]
|
||||
dakarza [dakartza, dakarna, dakarzu]
|
||||
erdemin [erremin, erdimin, iminerdi]
|
||||
garatienetarikoa [garatuenetarikoa, ugarienetarikoa, gogoratuenetarikoa, argienetarikoa, aberatsenetarikoa]
|
||||
ishil [isil, istil]
|
||||
nindezaguane [nindezaguena, nindezaguan, nindezaguanez, nindezaguanek, nindezaguanen, nindezaguanei, nindezaguana, nindezagunan, nindezagutean, nindezagutenan, nindezaguzue]
|
||||
nintzainaken [nintzainanek, nintzainake, nintzainakeen, nintzainanen, nintzaiakeenen, nintzaiakeen, nintzakenanen, nintzaiekenan]
|
||||
summa [suma, susma, sumoa]
|
||||
technologiko [teknologikoko, teknologiko, terminologiko, etnologikoko]
|
||||
charmant [charmat, xarmant]
|
||||
211
Common/3dParty/hunspell/test/dst/fr_FR.txt
Normal file
211
Common/3dParty/hunspell/test/dst/fr_FR.txt
Normal file
@ -0,0 +1,211 @@
|
||||
Bonjour
|
||||
Merci
|
||||
Oui
|
||||
Non
|
||||
S'il
|
||||
Excusez-moi
|
||||
Pardon
|
||||
Bien
|
||||
Mal
|
||||
Grosse
|
||||
Petit
|
||||
Beau
|
||||
Moche
|
||||
Fort
|
||||
Faible
|
||||
Chaud
|
||||
Froid
|
||||
Vite
|
||||
Lent
|
||||
Haut
|
||||
Bas
|
||||
Loin
|
||||
Près
|
||||
Heureux
|
||||
Triste
|
||||
Facile
|
||||
Difficile
|
||||
Simple
|
||||
Compliqué
|
||||
Bon
|
||||
Mauvais
|
||||
Nouveau
|
||||
Vieux
|
||||
Jeune
|
||||
Âgé
|
||||
Bienvenue
|
||||
Amitié
|
||||
Amour
|
||||
Famille
|
||||
Travail
|
||||
Maison
|
||||
Voiture
|
||||
Manger
|
||||
Boire
|
||||
Courir
|
||||
Marcher
|
||||
Nager
|
||||
Chanter
|
||||
Dormir
|
||||
Jouer
|
||||
Parler
|
||||
Écouter
|
||||
Regarder
|
||||
Lire
|
||||
Écrire
|
||||
Acheter
|
||||
Vendre
|
||||
Aller
|
||||
Venir
|
||||
Faire
|
||||
Dire
|
||||
Voir
|
||||
Savoir
|
||||
Apprendre
|
||||
Aimer
|
||||
Détester
|
||||
Partir
|
||||
Rester
|
||||
Arriver
|
||||
Revenir
|
||||
Partager
|
||||
Aider
|
||||
Aimer
|
||||
Ouvrir
|
||||
Fermer
|
||||
Manger
|
||||
Boire
|
||||
Avoir
|
||||
Être
|
||||
Pouvoir
|
||||
Vouloir
|
||||
Devoir
|
||||
Parler
|
||||
Écouter
|
||||
Rire
|
||||
Pleurer
|
||||
Danse
|
||||
Étudier
|
||||
Travailler
|
||||
Voyager
|
||||
Vivre
|
||||
Connaître
|
||||
Reconnaître
|
||||
Voyager
|
||||
Exister
|
||||
Choisir
|
||||
Donner
|
||||
Recevoir
|
||||
Aimer
|
||||
Oser
|
||||
Phénoménologie
|
||||
Électroencéphalographie
|
||||
Parallélépipède
|
||||
Anticonstitutionnellement
|
||||
Transsubstantiation
|
||||
Éclectisme
|
||||
Anachronisme
|
||||
Catéchuménat
|
||||
Démagogie
|
||||
Fructueux
|
||||
Ineffable
|
||||
Hypothèque
|
||||
Propriété
|
||||
Procrastination
|
||||
Complaisance
|
||||
Réminiscence
|
||||
Éthique
|
||||
Équinoxe
|
||||
Exponentiel
|
||||
Hétérogénéité
|
||||
Imbroglio
|
||||
Incorrigible
|
||||
Maelström
|
||||
Métaphysique
|
||||
Protagoniste
|
||||
Subliminal
|
||||
Verrouillage
|
||||
Volumétrique
|
||||
Énigmatique
|
||||
Époustouflant
|
||||
Immatériel
|
||||
Infini
|
||||
Polyglotte
|
||||
Recrudescence
|
||||
Prophylactique
|
||||
Symbiotique
|
||||
Vestibulaire
|
||||
Épistémologie
|
||||
Faramineux
|
||||
Géopolitique
|
||||
Hypnotique
|
||||
Inamovible
|
||||
Intemporel
|
||||
Labyrinthe
|
||||
Pacifiste
|
||||
Quémandeur
|
||||
Soporifique
|
||||
Ubuesque
|
||||
Volumineux
|
||||
Effervescence
|
||||
Électrophorèse
|
||||
Paradoxe
|
||||
Prorata
|
||||
Quadrupède
|
||||
Sarcophage
|
||||
Trigonométrie
|
||||
Vaccinologie [Carcinologie, Actinologie, Vaccinogène, Accidentologie]
|
||||
Xenophobe [Xénophobe, Technophobe]
|
||||
Zéphyr
|
||||
Génétique
|
||||
Labyrintique [Labyrinthique]
|
||||
Mégalo
|
||||
Nostalgie
|
||||
Omniprésent
|
||||
Pangramme
|
||||
Périlleux
|
||||
Quinquennat
|
||||
Rémunération
|
||||
Scolopendre
|
||||
Tautologique
|
||||
Utopiste
|
||||
Vexatoire
|
||||
Wolof
|
||||
Xanthine
|
||||
Yacht
|
||||
Zanzibar
|
||||
Axiomatique
|
||||
Chronométrer
|
||||
Dilettante
|
||||
Énervement
|
||||
Facétieux
|
||||
Générique
|
||||
Harmonique
|
||||
Illusoire
|
||||
Juridique
|
||||
Kabbaliste
|
||||
Longetivité [Longévité]
|
||||
Médiane
|
||||
Néologisme
|
||||
Oxygène
|
||||
Patronymique
|
||||
Quotidien
|
||||
Rétorique [Rétorque, Rhétorique, Rotorique, Ré torique, Ré-torique, Météorique, Torique, Théorétique, Théorique]
|
||||
Sémantique
|
||||
Tautologie
|
||||
Utopique
|
||||
Vaccinologie [Carcinologie, Actinologie, Vaccinogène, Accidentologie]
|
||||
Xénophobie
|
||||
Yachting
|
||||
Zoroastrisme
|
||||
Voager [Viager, Voyager, Ouvrager]
|
||||
Exisster [Exister]
|
||||
Chaiser [Chaires, Chaise, Chaisier, Chaises, Chasser, Chaise r, Chamoiser, Tchadiser]
|
||||
Doner [Toner, Zoner, Donner, Drone, Doser, Doter, Dorer, Douer, Doler, Doper, Dîner]
|
||||
Resevoir [Redevoir, Recevoir, Revoir, Reversoir, Ivoire, Voire]
|
||||
Aimmer [Aimer]
|
||||
Osero [Oser, Osera, Oser o, Rosser, Roeser, Rose]
|
||||
Phénoménollogie [Phénoménologie]
|
||||
Électraencéphallographie []
|
||||
Parallélépepède [Parallélépipède]
|
||||
|
||||
120
Common/3dParty/hunspell/test/dst/gl_ES.txt
Normal file
120
Common/3dParty/hunspell/test/dst/gl_ES.txt
Normal file
@ -0,0 +1,120 @@
|
||||
ola
|
||||
tipo
|
||||
Si
|
||||
non
|
||||
nonnr [nono]
|
||||
comida
|
||||
comidaa [comídaa, comidas, comida, comidan]
|
||||
auga
|
||||
augaa [áugaa, augas, auga, augaba, augada, augala, augara, augar]
|
||||
casa
|
||||
coche
|
||||
cochee [coches, coche, chochee, cachee, checo]
|
||||
un tren [oin tren]
|
||||
bicicleta
|
||||
escola
|
||||
escolaa [escóraa, escoala, escolas, escola, escálaa, escolla, escolma, escolar, escolta]
|
||||
niños
|
||||
pai
|
||||
paii [paio, pai, pii, aii, pali, pais]
|
||||
nai
|
||||
naii [nai, nii, aii, naif, nais, nazi]
|
||||
irmá
|
||||
irmán
|
||||
cachorro
|
||||
gato
|
||||
gatoo [gato, atoo, gateo, gatos]
|
||||
peixe
|
||||
peixee [peidee, peixes, peixe, peitee]
|
||||
aves
|
||||
avess [aveas, avesa, aves, avesas, avesos, vesas, aveso, aveces, escave]
|
||||
árbore
|
||||
flor
|
||||
herba
|
||||
o sol [ou sol]
|
||||
lúa
|
||||
o ceo [ou ceo, o ceou]
|
||||
chuvia
|
||||
neve
|
||||
vexa
|
||||
inverno
|
||||
primavera
|
||||
outono
|
||||
noite
|
||||
noite
|
||||
día
|
||||
unha semana [semanalmente]
|
||||
mes
|
||||
ano
|
||||
para ler [parable]
|
||||
escribir
|
||||
fala
|
||||
ensinar
|
||||
traballo
|
||||
durmir
|
||||
durmir
|
||||
correr
|
||||
vai
|
||||
senta
|
||||
estado
|
||||
para escoitar [parasitario]
|
||||
vexa
|
||||
escoita
|
||||
hai
|
||||
beber
|
||||
carne
|
||||
furtas
|
||||
verduras
|
||||
queixo
|
||||
pan
|
||||
auga
|
||||
zume
|
||||
café
|
||||
té
|
||||
leite
|
||||
aceite
|
||||
ovo
|
||||
sal
|
||||
impacienta
|
||||
azucre
|
||||
un bocadillo [oin bocadillo]
|
||||
cociña
|
||||
sala de estar [sala dei estar]
|
||||
dormitorio
|
||||
baño
|
||||
batela
|
||||
sofá
|
||||
lámpada
|
||||
fiestra
|
||||
a porta [aporta, portara, portador, porta]
|
||||
piso
|
||||
teito
|
||||
parede
|
||||
sofá
|
||||
alfombra
|
||||
baño
|
||||
afundir
|
||||
espello
|
||||
toalla
|
||||
cama
|
||||
manta
|
||||
almofada
|
||||
reloxo de alarma [riloxo de alarma, ríloxo de alarma, reiloxo de alarma, reloxo dei alarma, relouxo de alarma, reloxou de alarma, relollo de alarma]
|
||||
escritorio
|
||||
cadeira
|
||||
marabilloso
|
||||
adverbio
|
||||
obviamente
|
||||
Dominante
|
||||
residenciais
|
||||
convidado
|
||||
perigo
|
||||
cuestión
|
||||
deporte
|
||||
mina
|
||||
cordeiro
|
||||
cabeza
|
||||
tratar
|
||||
avogado
|
||||
intelixente
|
||||
guapo
|
||||
215
Common/3dParty/hunspell/test/dst/hr_HR.txt
Normal file
215
Common/3dParty/hunspell/test/dst/hr_HR.txt
Normal file
@ -0,0 +1,215 @@
|
||||
boliestan [bolestan, obijestan]
|
||||
jyak [jak]
|
||||
slaby [slabu, slab, slaba, slabe, slabi, slabo]
|
||||
pameetan [pametan, pametna, napamet]
|
||||
gllup [glup]
|
||||
bezuspješhno [bezuspješno, bezuspješnih, bezuspješan, bezuspješna]
|
||||
besimeni [besi meni, besi-meni, bezimeni, besanim]
|
||||
bezuzban [bezuman, bezuba]
|
||||
blagastanje [blagostanje, blaga stanje, blaga-stanje, blagostanja, blistanje, oblaganje]
|
||||
bljeskovica [bljeskovima, bljeskovi, bljeskova, bljeskalica, bljeskavi]
|
||||
jabuka
|
||||
sunce
|
||||
voda
|
||||
kuća
|
||||
ptica
|
||||
kava
|
||||
kruh
|
||||
cvijet
|
||||
knjiga
|
||||
pas
|
||||
mačka
|
||||
grad
|
||||
zelen
|
||||
plav
|
||||
crven
|
||||
bijel
|
||||
crn
|
||||
velik
|
||||
malen
|
||||
brz
|
||||
spor
|
||||
sretan
|
||||
tužan
|
||||
vruć
|
||||
hladan
|
||||
nov
|
||||
star
|
||||
lijep
|
||||
ružan
|
||||
dobar
|
||||
loš
|
||||
zdrav
|
||||
bolestan
|
||||
jak
|
||||
slab
|
||||
pametan
|
||||
glup
|
||||
raditi
|
||||
jesti
|
||||
piti
|
||||
spavati
|
||||
čitati
|
||||
pisati
|
||||
govoriti
|
||||
smijati se [smijati]
|
||||
plakati
|
||||
pjevati
|
||||
igrati
|
||||
plesati
|
||||
učiti se [učiti]
|
||||
kupovati
|
||||
kuhati
|
||||
telefonirati
|
||||
gledati
|
||||
slušati
|
||||
hodati
|
||||
trčati
|
||||
letjeti
|
||||
plivati
|
||||
čitati
|
||||
pisati
|
||||
raditi
|
||||
imati
|
||||
biti
|
||||
ići
|
||||
doći
|
||||
otići
|
||||
dati
|
||||
uzeti
|
||||
reći
|
||||
vidjeti
|
||||
čuti
|
||||
osjetiti
|
||||
misliti
|
||||
htjeti
|
||||
moći
|
||||
morati
|
||||
rado
|
||||
nerado
|
||||
da
|
||||
ne
|
||||
molim
|
||||
hvala
|
||||
doviđenja
|
||||
oprosti
|
||||
zbogom
|
||||
zdravo
|
||||
čau [ča, ču, čađu, čaju, čamu, času, čađ, čaj, čak, čar, čas, ča u]
|
||||
ej
|
||||
da
|
||||
baš
|
||||
super
|
||||
glupost
|
||||
fantastično
|
||||
jasno
|
||||
tako
|
||||
zapravo
|
||||
možda
|
||||
lako
|
||||
teško
|
||||
prozračnost
|
||||
usplahirenost
|
||||
neoblomivost [neslomivom]
|
||||
prezir
|
||||
proigranost [prostranost, programiranosti, razigranosti, pristranost]
|
||||
uznemirenost
|
||||
besprijekornost
|
||||
besprizornost [besprizornom, besprizornoj, besprijekornost, besprizorni]
|
||||
nepredvidivost
|
||||
beznadnost
|
||||
promašenost [promašenosti, promašen, osiromašenom, raspršenost]
|
||||
protivljenje
|
||||
neizreciv
|
||||
bezizlaznost
|
||||
neuspjelost [neuspjeloj, neuspješnost, neuspjelog, neuspjelom]
|
||||
zbunjenost
|
||||
neodlučnost
|
||||
protivština
|
||||
nepovratnost [nepovratnoj, nepovratnom, nepovratna, nepovratnima]
|
||||
bezduhovitost [bez duhovitost, bez-duhovitost, duhovitostu, duhovitosti, duhovitosta, duhovitost]
|
||||
ravnodušnost
|
||||
prolaznost
|
||||
neobaveznost [neobaveznosti, neobaveznom, neobaveznoj, neobavezna, neobavezni]
|
||||
bezbrižnost
|
||||
nepovratnost [nepovratnoj, nepovratnom, nepovratna, nepovratnima]
|
||||
promašenost [promašenosti, promašen, osiromašenom, raspršenost]
|
||||
neprepoznatljivost [neprepoznatljivosti, ne prepoznatljivost, ne-prepoznatljivost, prepoznatljivosti, prepoznatljivost, neprepoznatljiva, neraspoznatljivosti]
|
||||
neukrotivost [neukrotivog, neukrotiv, neučtivost, neotuđivosti]
|
||||
bezobzirnost
|
||||
nevinost
|
||||
nestalnost
|
||||
nepostojanost
|
||||
bezizlaznost
|
||||
nepovratnost [nepovratnoj, nepovratnom, nepovratna, nepovratnima]
|
||||
prolaznost
|
||||
neodgovornost
|
||||
bezbrižnost
|
||||
nevolja
|
||||
nezadovoljstvo
|
||||
prolaznost
|
||||
bezuspješno
|
||||
bezimeni
|
||||
bezuzdan [bez uzdan, bez-uzdan, bezdan, bezdušan, beznadan]
|
||||
blagostanje
|
||||
bljeskavica [bljeskalica, bljeskavima, bljeska vica, bljeska-vica, bljeskavi, bljeskalici, bljeskava, bljeskalicu]
|
||||
boren [borne, obrne, bore, oboren, borbena]
|
||||
carovnija [otrovnija, darovnica]
|
||||
crpeža [crteža]
|
||||
dostojanstvo
|
||||
duhovitost
|
||||
egzaltacija
|
||||
gorkoća [gorkoga, gorkošću]
|
||||
histerija
|
||||
idila
|
||||
ironija
|
||||
izdaja
|
||||
janjetina
|
||||
kajanje
|
||||
kavana
|
||||
krhotina
|
||||
ljepljivost
|
||||
lukavstvo
|
||||
magnutizam [zategnutima, zamahnutima, izdignutima, vagnutima]
|
||||
melankolija
|
||||
misticizam
|
||||
naivnost
|
||||
nelagoda
|
||||
neraspoloženje
|
||||
obmana
|
||||
okrutnost
|
||||
opojenost [opojnost, obojenost, opojenoj, popunjenost, podvojenost, opčinjenost]
|
||||
prezir
|
||||
propast
|
||||
ravnodušnost
|
||||
sjenka
|
||||
skitnica
|
||||
spletka
|
||||
stid
|
||||
sudbina
|
||||
susret
|
||||
sudbina
|
||||
šapat
|
||||
tišina
|
||||
trepet
|
||||
utopija
|
||||
uzaludnost
|
||||
veličanstvo
|
||||
zaborav
|
||||
zanesenost
|
||||
zanos
|
||||
zavjera
|
||||
zbunjenost
|
||||
zluradost [zluradosti, zlu radost, zlu-radost, zlurad]
|
||||
zloslutnost [zloslutnoj, zloslutnom, zloslutnu, zloslutna]
|
||||
žargon
|
||||
žártva [žrtva]
|
||||
šaptanje
|
||||
čarobnost
|
||||
dileme
|
||||
hodočasće [hodočaste, hodočašće]
|
||||
lebdjeti
|
||||
iznimka
|
||||
preobilje [preobilne, preoblikuje]
|
||||
probuditi se [probuditi]
|
||||
surov
|
||||
114
Common/3dParty/hunspell/test/dst/hu_HU.txt
Normal file
114
Common/3dParty/hunspell/test/dst/hu_HU.txt
Normal file
@ -0,0 +1,114 @@
|
||||
Szorzótábla
|
||||
Réges-régen
|
||||
normálméret
|
||||
nemeslelkűség
|
||||
mindegyik
|
||||
milliós
|
||||
Mikroflóra
|
||||
Mezőgazdaságigép
|
||||
meséskönyv
|
||||
mennyiség
|
||||
Memória
|
||||
kártya
|
||||
kuráre
|
||||
Kurzor
|
||||
jégkorong
|
||||
jellemesség
|
||||
Javak
|
||||
irányzás
|
||||
iromány
|
||||
Inkluzíve
|
||||
hűtőedény
|
||||
hőmérséklet
|
||||
hír
|
||||
hétszázas
|
||||
hátrány
|
||||
háromszáz
|
||||
Hintó
|
||||
generátor
|
||||
gavallérság
|
||||
explozíva
|
||||
eső
|
||||
esdeklés
|
||||
epilógus
|
||||
Energia
|
||||
Előélet
|
||||
előterjesztés
|
||||
előnézet
|
||||
elvonás
|
||||
elszigetelés
|
||||
ellátmány
|
||||
Elevátor
|
||||
egynémelykor
|
||||
egyenlőség
|
||||
eddzenek
|
||||
dzsungel
|
||||
ananász
|
||||
akvárium
|
||||
Szépül
|
||||
Sztorizik
|
||||
szobroz
|
||||
szimbolizál
|
||||
szemlélődik
|
||||
sugdolózik
|
||||
majmol
|
||||
Macskáz
|
||||
Létesít
|
||||
Lokalizálódik
|
||||
litografál
|
||||
levelesedik
|
||||
lepet
|
||||
közömbösít
|
||||
kételkedik
|
||||
kivirágoz
|
||||
kerekez
|
||||
kedvez
|
||||
járkál
|
||||
jegyzőkönyvez
|
||||
iskolázik
|
||||
individualizál
|
||||
csendesít
|
||||
borsoz
|
||||
billentet
|
||||
bajmolódik
|
||||
anyagozik
|
||||
alkonyodik
|
||||
Aktualizál
|
||||
színes
|
||||
szemelt
|
||||
lassú
|
||||
hatékony
|
||||
hasznos
|
||||
gyúlékony
|
||||
gyári
|
||||
abszurd
|
||||
örökjog
|
||||
öregkor
|
||||
ömlő
|
||||
Zászlaj [Zászlajú, Zászlaja, Zászlai, Zászlóalj]
|
||||
Zseblámpa
|
||||
regényirodalom
|
||||
realitás
|
||||
raktárhelyiség
|
||||
pötty
|
||||
pótlék
|
||||
pótdíj
|
||||
pályafutás
|
||||
Promóció
|
||||
Processzus
|
||||
poloska
|
||||
pernye
|
||||
pediáter
|
||||
parancsnoklás
|
||||
|
||||
Слова с ошибками []
|
||||
sponzorálás [szponzorálás, szponzorál, zongorálás]
|
||||
mihamarábiak [mihamarábbiak, mihamarabbiak, mihamarábbi, hamarábbiak, mihamarább]
|
||||
idohatár [időhatár]
|
||||
hypnotizmus [hipnotizmus, nepotizmus]
|
||||
departement [département]
|
||||
légiesul [légiesül, légiósul]
|
||||
kutagat [kutatgat, kutazgat, kutasat, kutakat, kutadat, kutamat, kútagát, kútágat, kútágát, kutat]
|
||||
költségtakkarékos [költségtakarékos, költségtakarékkos, költséghatékony]
|
||||
redukzió [redukció, redukáló]
|
||||
pilanatfelvétel [pillanatfelvétel, pialantfelvétel, adatfelvétel]
|
||||
121
Common/3dParty/hunspell/test/dst/id_ID.txt
Normal file
121
Common/3dParty/hunspell/test/dst/id_ID.txt
Normal file
@ -0,0 +1,121 @@
|
||||
acang-acang
|
||||
Adiksi
|
||||
Adventisius
|
||||
Advokat
|
||||
afirmatif
|
||||
agroindustry [agroindustri, nonindustri]
|
||||
agrisilvikultur
|
||||
akhir-akhir
|
||||
akomodatif
|
||||
aksi
|
||||
aljabar
|
||||
anggul
|
||||
anotasi
|
||||
antusiasme
|
||||
apoteker
|
||||
bahagia
|
||||
bakat
|
||||
bangkang
|
||||
Bankir
|
||||
Barikade
|
||||
bebaru
|
||||
belar
|
||||
beleid
|
||||
bencana
|
||||
bentangur
|
||||
beritawan
|
||||
besuk
|
||||
bilingualisme
|
||||
Cecak
|
||||
Celempong
|
||||
cencawan
|
||||
cengkar
|
||||
ceremai
|
||||
cermin
|
||||
cudang
|
||||
Dampal
|
||||
dampan
|
||||
dansa
|
||||
datung
|
||||
debitur
|
||||
defensi
|
||||
defisit
|
||||
demper
|
||||
dendang
|
||||
Derivasi
|
||||
Desember
|
||||
deskripsi
|
||||
diskotek
|
||||
diskusi
|
||||
distansi
|
||||
dragon
|
||||
dramatisasi
|
||||
Eksamen
|
||||
Eksistensi
|
||||
eksperimen
|
||||
ekstensifikasi
|
||||
ekuitas
|
||||
elektron
|
||||
gelut
|
||||
Geofisikawan
|
||||
Gerbang
|
||||
gerempang
|
||||
influenza
|
||||
Informasi
|
||||
Inisiator
|
||||
insekta
|
||||
institusional
|
||||
instruksional
|
||||
jelajah
|
||||
Kamrad
|
||||
Kapilaritas
|
||||
kapster
|
||||
kardiovaskular
|
||||
karismatik
|
||||
keranjingan
|
||||
komunal
|
||||
Limitatif
|
||||
Linguistik
|
||||
lintang
|
||||
masabodoh [masa bodoh, masa-bodoh, mastodon]
|
||||
matematikus
|
||||
medisinal
|
||||
Melankolia
|
||||
Memorabilia
|
||||
nasional
|
||||
nasionisme
|
||||
Panen
|
||||
pangkek
|
||||
peranti
|
||||
perian
|
||||
persekusi
|
||||
perunjung
|
||||
regenerasi
|
||||
reglementer
|
||||
robotika
|
||||
runjang
|
||||
Sabtu
|
||||
Simbang
|
||||
simpati
|
||||
tebing
|
||||
topi
|
||||
Unggal
|
||||
unsuri
|
||||
urbanisasi
|
||||
variabel
|
||||
wahana
|
||||
warganegara [warga negara, warga-negara, negarawan, antarnegara, mancanegara, waranggana]
|
||||
|
||||
Слова с ошибками []
|
||||
Abonement [Abonemen, Bombardemen]
|
||||
Abcente [Absente, Centet]
|
||||
ambivalan [ambivalen, ambilan, ambalan]
|
||||
bakteriostatic [bakteriostatik, bakteriolisis]
|
||||
cekaw [cekat, cekak, cekau, cekam, cekal, cekah, kacek]
|
||||
darmavisata [darmawisata, darmatirta, mandataris]
|
||||
declarasi [deklarasi, deflagrasi]
|
||||
duplex [dupleks]
|
||||
ecozona [ekozona, eco zona, eco-zona]
|
||||
gempur-mengempur [gempur-menggempur, gempul-gempul]
|
||||
jejengok [jejengkok, jengkeng]
|
||||
transitive [transitif, transvetisme, transit, transisi]
|
||||
200
Common/3dParty/hunspell/test/dst/it_IT.txt
Normal file
200
Common/3dParty/hunspell/test/dst/it_IT.txt
Normal file
@ -0,0 +1,200 @@
|
||||
Ciao
|
||||
Ciaoo [Ciao, Ciano, Ciao o, Ciocia]
|
||||
Buongiorno
|
||||
Buonasera
|
||||
Buonassera [Buonasera, Buon assera, Buon-assera, Buonalbergo]
|
||||
Grazie
|
||||
Prego
|
||||
Arrivederci
|
||||
Buonanotte
|
||||
Scusa
|
||||
Per favore [Favorevole]
|
||||
Amore
|
||||
Amico
|
||||
Famiglia
|
||||
Casa
|
||||
Città
|
||||
Strada
|
||||
Montagna
|
||||
Montaga [Montagna, Montata, Montana, Montala, Montava, Montaggi, Montaguto, Montano, Montato]
|
||||
Mare
|
||||
Sole
|
||||
Luna
|
||||
Stelle
|
||||
Giorno
|
||||
Notte
|
||||
Colazione
|
||||
Clazione [Colazione, Coazione, Cl azione, Cl-azione, Clonazione, Collazione, Clorazione, Chelazione]
|
||||
Pranzo
|
||||
Cena
|
||||
Acqua
|
||||
Vino
|
||||
Caffè
|
||||
Pane
|
||||
Formaggio
|
||||
Pasta
|
||||
Pizza
|
||||
Gelato
|
||||
Dolce
|
||||
Salato
|
||||
Frutta
|
||||
Verdura
|
||||
Carne
|
||||
Pesce
|
||||
Pollo
|
||||
Uovo
|
||||
Sale
|
||||
Pepe
|
||||
Olio
|
||||
Burro
|
||||
Zucchero
|
||||
Latte
|
||||
Yogurt
|
||||
Insalata
|
||||
Zuppa
|
||||
Bistecca
|
||||
Prosciutto
|
||||
Parmigiano
|
||||
Biscotti
|
||||
Cioccolato
|
||||
Spagggrhetti [Spaghetti, Spaghetteria]
|
||||
Spaghetti
|
||||
Lasagne
|
||||
Risotto
|
||||
Gnocchi
|
||||
Penne
|
||||
Ravioli
|
||||
Cannelloni
|
||||
Pesto
|
||||
Caprese
|
||||
Limoncello
|
||||
Espresso
|
||||
Cappuccino
|
||||
Tiramisù
|
||||
Panna cotta [Panbiscotto]
|
||||
Cannoli
|
||||
Panettone
|
||||
Brioche
|
||||
Focaccia
|
||||
Foacdccia [Focaccia]
|
||||
Crostini
|
||||
Arancini
|
||||
Antipasto
|
||||
Primo piatto [Rimpiattato, Primariato, Rimpiatto, Rimpatriato]
|
||||
Secondo piatto [Attosecondo]
|
||||
Contorno
|
||||
Pane tostato [Tostapane]
|
||||
Marmellata
|
||||
Accoglienza
|
||||
Affascinante
|
||||
Aggressività
|
||||
Alleviare
|
||||
Appassionato
|
||||
Armonioso
|
||||
Autonomia
|
||||
Autovfnomia [Autonomia, Autotomia]
|
||||
Barbarie
|
||||
Beneficiare
|
||||
Bizzarro
|
||||
Burocrazia
|
||||
Cambiamento
|
||||
Capriccioso
|
||||
Cautela
|
||||
Commemorare
|
||||
Comportamento
|
||||
Conseguenza
|
||||
Controverso
|
||||
Coraggioso
|
||||
Debolezza
|
||||
Decisivo
|
||||
Delizioso
|
||||
Desiderare
|
||||
Destrezza
|
||||
Determinato
|
||||
Determin [Determina, Determini, Determino, Determinò, Termine]
|
||||
Difficoltà
|
||||
Disponibilità
|
||||
Divertimento
|
||||
Eccentrico
|
||||
Efficienza
|
||||
Elettrizzante
|
||||
Emergere
|
||||
Empatia
|
||||
Energia
|
||||
Equilibrio
|
||||
Esperienza
|
||||
Fantastico
|
||||
Fenomenale
|
||||
Generosità
|
||||
Gratitudine
|
||||
Immaginazione
|
||||
Impressionante
|
||||
Impressiante [Impressi ante, Impressi-ante, Impressionante, Impressionate, Imprestante, Impressioniste]
|
||||
Indipendenza
|
||||
Ingenuità
|
||||
Innovazione
|
||||
Intelligenza
|
||||
Intensità
|
||||
Intrigante
|
||||
Ispirazione
|
||||
Instabilità
|
||||
Irresistibile
|
||||
Leggenda
|
||||
Libertà
|
||||
Luminoso
|
||||
Magistrale
|
||||
Malinconia
|
||||
Meraviglioso
|
||||
Metamorfosi
|
||||
Miracolo
|
||||
Misterioso
|
||||
Nostalgia
|
||||
Opportunità
|
||||
Originalità
|
||||
Passione
|
||||
Pericoloso
|
||||
Prestigioso
|
||||
Prodigioso
|
||||
Prospettiva
|
||||
Raffinato
|
||||
Rafinato [Raffinato, Rapinato, Affinato, Trainato, Raffrenato, Raffilato]
|
||||
Ricchezza
|
||||
Rispettoso
|
||||
Sensibilità
|
||||
Sorprendente
|
||||
Spontaneità
|
||||
Spontaneita [Spontaneità, Spontaneista]
|
||||
Stravagante
|
||||
Suggestivo
|
||||
Surreale
|
||||
Tenerezza
|
||||
Trasformazione
|
||||
Unicità
|
||||
Vibrante
|
||||
Vittoria
|
||||
Volontà
|
||||
Amicizia
|
||||
Avventura
|
||||
Bellezza
|
||||
Calma
|
||||
Danza
|
||||
Eleganza
|
||||
Felicità
|
||||
Gioia
|
||||
Incanto
|
||||
Magia
|
||||
Natura
|
||||
Odore
|
||||
Passatempo
|
||||
Quotidiano
|
||||
Relax
|
||||
Serenità
|
||||
Tesoro
|
||||
Umorismo
|
||||
Vacanza
|
||||
Zelo
|
||||
Avventuriero
|
||||
Speranza
|
||||
Risate
|
||||
Armonia
|
||||
Incanto
|
||||
209
Common/3dParty/hunspell/test/dst/kk_KZ.txt
Normal file
209
Common/3dParty/hunspell/test/dst/kk_KZ.txt
Normal file
@ -0,0 +1,209 @@
|
||||
сөз
|
||||
адам
|
||||
қала
|
||||
тау
|
||||
ауа
|
||||
су
|
||||
аспан
|
||||
жер
|
||||
бала
|
||||
ата
|
||||
ана
|
||||
тамақ
|
||||
кітап
|
||||
ұстаз
|
||||
оқу
|
||||
тұтыну
|
||||
тыныш
|
||||
тұз
|
||||
ауру
|
||||
денсаулық
|
||||
топ
|
||||
маусым
|
||||
төс
|
||||
көз
|
||||
жүрек
|
||||
сарғыш
|
||||
көп
|
||||
аз
|
||||
ертең
|
||||
түн
|
||||
түс
|
||||
жас
|
||||
қара
|
||||
ақ
|
||||
көк
|
||||
қызыл
|
||||
шай
|
||||
салт
|
||||
ыстық
|
||||
суық
|
||||
қазақ
|
||||
жеті
|
||||
он
|
||||
жүз
|
||||
мың
|
||||
бір
|
||||
екі
|
||||
үш
|
||||
төрт
|
||||
бес
|
||||
алты
|
||||
жеті
|
||||
сегіз
|
||||
тоғыз
|
||||
он
|
||||
бақша
|
||||
бұлақ
|
||||
қиыр
|
||||
досым
|
||||
ақша
|
||||
патша
|
||||
таң
|
||||
кеш
|
||||
тауар
|
||||
күн
|
||||
апат
|
||||
риза
|
||||
ауырсыну
|
||||
орман
|
||||
жаңбыр
|
||||
бауыр
|
||||
жел
|
||||
тұман
|
||||
үй
|
||||
бұлақ
|
||||
көше
|
||||
айнала
|
||||
шайыр
|
||||
тағам
|
||||
сусын
|
||||
топ
|
||||
бас
|
||||
әрекет
|
||||
тіл
|
||||
кеме
|
||||
сиыр
|
||||
қой
|
||||
ешкі
|
||||
шөп
|
||||
ит
|
||||
тұқым
|
||||
қарындаш
|
||||
апа
|
||||
ана
|
||||
әке
|
||||
дала
|
||||
тарлау
|
||||
дәуір
|
||||
таңдай
|
||||
жыл
|
||||
басқарушылар
|
||||
басқарушшылар [басқарушылар, басқарушы, басқармасылар, басқаруғалар, бақылаушыларлар]
|
||||
жауапкер
|
||||
ерекшеліктерімендерге
|
||||
тұмылдырықтатқыздан
|
||||
білімділігінге
|
||||
білімдарды
|
||||
алалықсыздар
|
||||
айырмашылықтарын
|
||||
тұрақтандырып
|
||||
сылтауратқандарыңызды
|
||||
қолдар
|
||||
байланысқадан
|
||||
жетілдірілген
|
||||
зарарсыздандырады
|
||||
ескеріп
|
||||
ескеріпп [ескеріп, ескеріпі, ескеріле]
|
||||
міндеттемелеріндерге
|
||||
кезеңдердің
|
||||
себепсіздік
|
||||
біреудейлер
|
||||
беделілерің
|
||||
кездестіріңіз
|
||||
шектердің
|
||||
көңіл
|
||||
көңл [көң, көл, көңіл, көңі]
|
||||
мол
|
||||
алайда
|
||||
мәселе
|
||||
мәселеу [мәселе, мәселең, мәселен, мәселес, мәпелеу, мәуелеу, мәселем, мә селеу, селеу]
|
||||
сендің
|
||||
келер
|
||||
келерр [келер, керлер, келері, кереле, еркеле, кермеле, келекеле]
|
||||
кәне
|
||||
көпір
|
||||
күндіз
|
||||
сана
|
||||
белгілер
|
||||
дайын
|
||||
ез
|
||||
қайшы
|
||||
саф
|
||||
рең
|
||||
шақ
|
||||
үміткер
|
||||
бақыт
|
||||
бақытт [бақыт, бақытта, бақытты, бақырт, бақыты]
|
||||
республика
|
||||
консервациялау
|
||||
мемлекеттік
|
||||
тағатсыздан
|
||||
адамда
|
||||
бәрі
|
||||
бең
|
||||
беңр [бең, бер]
|
||||
жасағанда
|
||||
жасағоанда [жасағанда, жасалғанда, жасасқанда, жасаманда, жасақанда]
|
||||
жабайылық
|
||||
заманда
|
||||
көшірдік
|
||||
мерейі
|
||||
Мерейій [Мерейі, Мерейің, Мерейім, Мерейлі, Мерей, Мейір]
|
||||
мөлшерсіздікк [мөлшерсіздік, өлшемсіздік, мөлшерсіз, өлшеусіздік]
|
||||
мөлшерсіздік
|
||||
пенді
|
||||
тылда
|
||||
мәртебесімен
|
||||
аппаратпен
|
||||
тегінді
|
||||
кездеме
|
||||
ересектік
|
||||
көңілсіздік
|
||||
тәуекелсіздік
|
||||
қанағатсыздық
|
||||
ғаділетсіздік
|
||||
сайдақы
|
||||
басым
|
||||
тәжікеден
|
||||
тұрғын
|
||||
қонақ
|
||||
қауіпсіздік
|
||||
қадірсіздік
|
||||
білгішсінбейсіңдер
|
||||
талқандас
|
||||
кешікті
|
||||
қоздырғышы
|
||||
бас
|
||||
емдейсіңдер
|
||||
құқылы
|
||||
тақылет
|
||||
әдемі
|
||||
көткеншектейсіңдер
|
||||
әжет
|
||||
қайтар
|
||||
белсену
|
||||
түсінбеймін
|
||||
жағымсыздық
|
||||
сыздар
|
||||
мәртебесі
|
||||
тұрғыны
|
||||
мезгіл
|
||||
әлбетте
|
||||
барысын
|
||||
оқылған
|
||||
безге
|
||||
жаса
|
||||
аламаңдайсыңдар
|
||||
кереметті
|
||||
епетейсіздік
|
||||
157
Common/3dParty/hunspell/test/dst/ko_KR.txt
Normal file
157
Common/3dParty/hunspell/test/dst/ko_KR.txt
Normal file
@ -0,0 +1,157 @@
|
||||
안녕하세요
|
||||
감사합니다
|
||||
사랑해요
|
||||
미안합니다
|
||||
음식
|
||||
친구
|
||||
가방
|
||||
집
|
||||
학교
|
||||
컴퓨터
|
||||
물
|
||||
밥
|
||||
책
|
||||
산
|
||||
바다
|
||||
날씨
|
||||
일
|
||||
노래
|
||||
치킨
|
||||
반찬
|
||||
꽃
|
||||
숙제
|
||||
가족
|
||||
아이
|
||||
게임
|
||||
영화
|
||||
생일
|
||||
시간
|
||||
동물
|
||||
여행
|
||||
차
|
||||
쇼핑
|
||||
추천
|
||||
대화
|
||||
전화
|
||||
사진
|
||||
운동
|
||||
잠
|
||||
병원
|
||||
음료수
|
||||
능력
|
||||
주말
|
||||
전자기기
|
||||
고양이
|
||||
강아지
|
||||
바나나
|
||||
가을
|
||||
겨울
|
||||
봄
|
||||
여름
|
||||
옷
|
||||
신발
|
||||
지하철
|
||||
택시
|
||||
버스
|
||||
비행기
|
||||
샴푸
|
||||
브러시
|
||||
삼계탕
|
||||
국수
|
||||
불고기
|
||||
된장
|
||||
김치
|
||||
먹다
|
||||
마시다
|
||||
보다
|
||||
듣다
|
||||
놀다
|
||||
하다
|
||||
가다
|
||||
오다
|
||||
서다
|
||||
늦다
|
||||
일어나다
|
||||
자다
|
||||
빨갛다
|
||||
파랗다
|
||||
노랗다
|
||||
녹색
|
||||
보라색
|
||||
맛있다
|
||||
시원하다
|
||||
덥다
|
||||
추운
|
||||
기분
|
||||
슬프다
|
||||
즐겁다
|
||||
정신이
|
||||
바쁘다
|
||||
참새
|
||||
나비
|
||||
병아리
|
||||
돌
|
||||
물고기
|
||||
향신료
|
||||
시장
|
||||
기차
|
||||
공원
|
||||
해변
|
||||
지갑
|
||||
병원
|
||||
대학
|
||||
교통
|
||||
공항
|
||||
천재
|
||||
연구
|
||||
일본
|
||||
중국
|
||||
사업
|
||||
지식
|
||||
성격
|
||||
자금
|
||||
기술
|
||||
정부
|
||||
전략
|
||||
협력
|
||||
혁신
|
||||
경제
|
||||
철학
|
||||
신체
|
||||
영감
|
||||
현상
|
||||
역사
|
||||
태양
|
||||
설명
|
||||
사회
|
||||
환경
|
||||
자연
|
||||
현실
|
||||
존경
|
||||
정확
|
||||
장애
|
||||
낙관
|
||||
발전
|
||||
절망
|
||||
일상
|
||||
소멸
|
||||
도전
|
||||
반복
|
||||
포기
|
||||
파괴
|
||||
혁혹 [현혹, 혈족]
|
||||
소외 [쇠오, 소아, 시외, 소오, 소에, 소의, 소와, 소요, 소유, 소위, 소야, 소되, 소뇌, 소 외, 소외감]
|
||||
식민지
|
||||
혐오
|
||||
출산
|
||||
행복
|
||||
불평
|
||||
판매
|
||||
위험
|
||||
안녕하ㅎ요 [안녕하다]
|
||||
감사합ㅅ다 [감사하다, 감사하여가다, 감사해가다]
|
||||
사랑ㄱ해요 [사랑해요, 사랑해내요]
|
||||
미안ㅎ합니다 [미안합니다, 미안한체합니다, 미안할만합니다, 미안해갑니다, 미안하여갑니다]
|
||||
친ㅔ구 [친구]
|
||||
가ㅎ방 [가방, 감방]
|
||||
|
||||
118
Common/3dParty/hunspell/test/dst/lb_LU.txt
Normal file
118
Common/3dParty/hunspell/test/dst/lb_LU.txt
Normal file
@ -0,0 +1,118 @@
|
||||
Aarbecht
|
||||
Aarbechtszäitorganisatioun
|
||||
Aartgenoss
|
||||
Abenteuer
|
||||
abrëll [Abrëll, brëll]
|
||||
absence [Absence]
|
||||
Abusives
|
||||
Abzebillercher
|
||||
Acquéreur
|
||||
Adjointeë
|
||||
Affischéiertes
|
||||
Airbussen
|
||||
Alldeegleches
|
||||
Angschtzoustä
|
||||
Basketballspiller
|
||||
Baufirme
|
||||
bauren [Bauren, bauen, brauen]
|
||||
bekanntes
|
||||
Beleg
|
||||
Berodung
|
||||
Bewältegung
|
||||
Datentransfer
|
||||
Dateschutz
|
||||
Decisives
|
||||
Donneschden
|
||||
Drangsaléiertes
|
||||
Dränk
|
||||
Giischtgen
|
||||
Grondlag
|
||||
grondreegel [Grondreegel, grondleeënd]
|
||||
Géies
|
||||
Handelsdag
|
||||
hausaufgab [Hausaufgab, ausbaufäheg]
|
||||
hierschtdag [Hierschtdag, hierarchescht]
|
||||
Häerzi
|
||||
Industriell
|
||||
Infrastrukturelles
|
||||
Interessi
|
||||
Internetfore
|
||||
Intervall
|
||||
Kamell
|
||||
Kantoner
|
||||
Karamell
|
||||
Klenges
|
||||
Nopeschhaus
|
||||
Motors
|
||||
Muer
|
||||
Muerenter
|
||||
Musek
|
||||
Nettoverméige
|
||||
niess [miess, Niess, iess, giess, Siess, Fiess]
|
||||
Protektioun
|
||||
Prouf
|
||||
Provisioun
|
||||
Prozessor
|
||||
Präis
|
||||
Präsens
|
||||
Sanitäres
|
||||
Schauspiller
|
||||
Schema
|
||||
Taxatioun
|
||||
Telefonsgespréich
|
||||
termingrë [Termingrë, verminnte]
|
||||
terrass [Terrass, zerrass]
|
||||
Textdatei
|
||||
Textsprooch
|
||||
Titulaire
|
||||
Titel
|
||||
erausféieren
|
||||
erausjoe
|
||||
gëeicht
|
||||
onglécklecherweis
|
||||
unzesammelen
|
||||
unzespille
|
||||
Approvisionnement
|
||||
|
||||
Сложные слова []
|
||||
Aktiegesellschaft
|
||||
Aktivitéitsdéclaratioun
|
||||
Alarmstëmmung
|
||||
Allgemengverständleches
|
||||
Bankenoperatioun
|
||||
Bensinsreserven
|
||||
Besteierungsofkommes
|
||||
Diskriminéierungsmoossnam
|
||||
Dokumentatiounsaarbecht
|
||||
Haaptrecommandatioun
|
||||
Héchstgeschwindegkeet
|
||||
Héichproblematesches
|
||||
Hëllefsdéngscht
|
||||
Integratiounsméisseges
|
||||
Iwwersetzungsprogramm
|
||||
Kapitaliséierungsdimensioun
|
||||
Museksinstrument
|
||||
Publicitéitsmarché
|
||||
Transportproblem
|
||||
|
||||
Слова с ошибками []
|
||||
Abonnnement [Abonnement, Joresabonnement, Abonnenti, Abonnent, Agebonnent]
|
||||
Accomodéiertes [Accommodéiertes, Accommodéiert, Accordéiertes, Accommodéiers]
|
||||
Agrarcenter [Agrarzenter, Agrozenter]
|
||||
Begrennung [Begrënnung, Begrenzung, Benennung, Verbrennung, Begrenzen, Trennung]
|
||||
Berodunszentren [Berodungszentren, Berodungszentre, Berodungszentr, Berodungszenter]
|
||||
Deeluung [Deelung, Andeelung, Opdeelung, Verdeelung, Zelldeelung]
|
||||
Dialogue [Dialoge, Dialog]
|
||||
Dictaten [Diktaten, Dichten]
|
||||
Inspektor
|
||||
Iwereileges [Iwwereileges, Iwwereilegtes, Iwwereileg, Iwwerfälleges]
|
||||
Pedagogik
|
||||
Televisionschaîn [Televisiounschaîn, Televisiounsgeschäft]
|
||||
Bechäftegungsméiglechkeet [Beschäftegungsméiglechkeet]
|
||||
Gläicheetspolitik [Gläichheetspolitik, Sécherheetspolitik, Gesondheetspolitik, Geschäftspolitik, Dechetspolitik]
|
||||
Musekheichschoul [Musekhéichschoul, Museksschoul]
|
||||
Satelliten [Satellitten, Satellitte, Satellit]
|
||||
Addressbichelchen [Adressbichelchen, Reklammbichelchen]
|
||||
Aarbechtsfield [Aarbechtsfeld, Aarbechtsgefier, Aarbechtsblieder, Aarbechtsatelier, Aarbechtsalldag]
|
||||
|
||||
|
||||
127
Common/3dParty/hunspell/test/dst/lt_LT.txt
Normal file
127
Common/3dParty/hunspell/test/dst/lt_LT.txt
Normal file
@ -0,0 +1,127 @@
|
||||
Abstraktus
|
||||
šachmatai
|
||||
žadintoja
|
||||
agurkas
|
||||
Aikštė
|
||||
Akinukai
|
||||
akmuo
|
||||
šakoti
|
||||
aktualinti
|
||||
aktorius
|
||||
šalinis
|
||||
šaltinis
|
||||
bernystė
|
||||
beskuo
|
||||
būgnelis
|
||||
Bilietas
|
||||
bilingvizmas
|
||||
daržavietė
|
||||
Darbadienis
|
||||
Darbas
|
||||
darbuotoja
|
||||
dargi
|
||||
daržinė
|
||||
daugintoja
|
||||
Daugiaveiksmis
|
||||
delnė
|
||||
įdelnis
|
||||
detalizuoti
|
||||
šerdelė
|
||||
erdvėti
|
||||
šeriškas
|
||||
šeštadienis
|
||||
etiketas
|
||||
Evoliucija
|
||||
fabrikantė
|
||||
Fantastika
|
||||
Fenomenas
|
||||
fikusas
|
||||
gaudinėti
|
||||
gausėja
|
||||
gūbrinti
|
||||
geležis
|
||||
geležtė
|
||||
gelsvis
|
||||
geranoris
|
||||
Gertys
|
||||
gerviukas
|
||||
giesmininkė
|
||||
Gikas
|
||||
Goža
|
||||
griaustinis
|
||||
grįžinys
|
||||
gėrioja
|
||||
griozdas
|
||||
grizijo
|
||||
gryčia
|
||||
grožėja
|
||||
grįžti
|
||||
grupė
|
||||
gąstauti
|
||||
Jaukas
|
||||
jodinėjo
|
||||
jodyti
|
||||
keturnagis
|
||||
Kiaušina
|
||||
Kiaurymė
|
||||
kiausta
|
||||
kietakaktis
|
||||
ūkiškas
|
||||
kilimėlis
|
||||
kilometrinis
|
||||
ūkininkaitė
|
||||
ūkinis
|
||||
krykti
|
||||
lapuotis
|
||||
laukas
|
||||
laupti
|
||||
laužtė
|
||||
Maudulys
|
||||
Maumedis
|
||||
mažutėlis
|
||||
mazgotuvė
|
||||
mechanikė
|
||||
medeinė
|
||||
medikamentinis
|
||||
meduolinis
|
||||
Nūdien
|
||||
nebrendėlė
|
||||
Negu
|
||||
neiginys
|
||||
parudenys
|
||||
pasakotojas
|
||||
pasausė
|
||||
pasieninis
|
||||
paskyriui
|
||||
paslapčiom
|
||||
Pasodas
|
||||
Pat
|
||||
Pataikūniškas
|
||||
patarška
|
||||
patentinis
|
||||
proskyna
|
||||
protekiniais
|
||||
provizoriškas
|
||||
rėkčioti
|
||||
rūmas
|
||||
rodyklinis
|
||||
Romanistas
|
||||
Skylmatis
|
||||
Skyriklis
|
||||
skolininkas
|
||||
skraidžioja
|
||||
skruzdėda
|
||||
skėtrus
|
||||
|
||||
Слова с ошибками []
|
||||
Abbreviatūra [Abreviatūra, Klaviatūra]
|
||||
alpinismas [alpinsimas, alpinimas, alpinistas, alpinizmas, alpinistinis, alpinistini, alpinamas, alpinariumas]
|
||||
amortizacia [amortizacija, amortizacini, amortizavo, amortizuoti]
|
||||
daugiamžis [daugiaamžis, daugiaamži, daugiamatis, daugiametis, daugiažiedis]
|
||||
deziderativinis [dezideratyvinis, dezideratyvini, prezidentinis, rezidentinis]
|
||||
generazija [generacija, energija]
|
||||
keturiasdešimtūkstantas [keturiasdešimttūkstantas, keturiasdešimttūkstanta, aštuoniasdešimttūkstantas, šešiasdešimttūkstantas, aštuoniasdešimttūkstanta]
|
||||
krivuluoja [krivuliuoja, kreivuliuoja, kultivuoja]
|
||||
Šnaukstai [Šnaukštai, Niaukstai, Šniauktai, Šniaukštai, Auksintai]
|
||||
pazintinis [pažintinis, parazitinis, pantinis, patentinis, panteistinis]
|
||||
progresa [progresai, progresas, progreso, progrese, progresu, progresą, progresų, progresavo, progresija]
|
||||
205
Common/3dParty/hunspell/test/dst/lv_LV.txt
Normal file
205
Common/3dParty/hunspell/test/dst/lv_LV.txt
Normal file
@ -0,0 +1,205 @@
|
||||
Sveiks
|
||||
Sveikks [Sveiks, Sveikas, Sveikās, Sveikts, Sveikus, Sveikos, Sveikt, Saveiks, Ieveiks, Veiks]
|
||||
Labrīt
|
||||
Lbrīt [Larīt, Lorīt, Labrīt]
|
||||
Paldies
|
||||
Paldiess [Paldies, Paliess, Palaidies]
|
||||
Lūdzu
|
||||
Luzu [Lizu, Ludzu, Auzu, Zuzu, Guzu, Lauzu, Lupu, Lubu, Lugu, Lūzu, Luču]
|
||||
Atvainojiet
|
||||
Atvainvfojiet [Atvaimanājiet]
|
||||
Prieks
|
||||
Perieks [Peries, Prieks, Persiks]
|
||||
Draugs
|
||||
Dravfugs [Draugs]
|
||||
Ģimene
|
||||
Gimene [Ķimene, Ģimene]
|
||||
Māja
|
||||
Maja [Maija, Paja, Raja, Laja, Maža, Maka, Mija, Mana, Masa, Māja, Mata, Maša, Maza, Mala]
|
||||
Pilsēta
|
||||
Pilseta [Pilsēta, Pil seta, Pil-seta, Piebilsta]
|
||||
Ceļš
|
||||
Ceļšs [Ceļš, Ceļošs, Ceļas, Ceļus, Ceļos]
|
||||
Kalns
|
||||
Jūra
|
||||
Sauls [Auls, Kauls, Rauls, Pauls, Salus, Sauks, Sals, Saules, Sakuls, Saulēs, Saguls, Sulas, Salsu, Sauli, Sauss]
|
||||
Mēness
|
||||
Zvaigznes
|
||||
Diena
|
||||
Nakts
|
||||
Brokastis
|
||||
Pusdienas
|
||||
Vakariņas
|
||||
Vīns
|
||||
Kafija
|
||||
Maize
|
||||
Siers
|
||||
Makaroni
|
||||
Pica
|
||||
Saldējums
|
||||
Deserts
|
||||
Sāļš
|
||||
Augļi
|
||||
Dārzeņi
|
||||
Gaļa
|
||||
Zivis
|
||||
Vistas
|
||||
Ola
|
||||
Sāls
|
||||
Pipari
|
||||
Eļļa
|
||||
Sviests
|
||||
Cukurs
|
||||
Piens
|
||||
Jogurts
|
||||
Salāti
|
||||
Zupa
|
||||
Salds
|
||||
Šokolāde
|
||||
Spageti
|
||||
Rīsi
|
||||
Kakao
|
||||
Biezpiens
|
||||
Kūka
|
||||
Tēja
|
||||
Karalis
|
||||
Zelts
|
||||
Ezis
|
||||
Tulpe
|
||||
Lācis
|
||||
Kaķis
|
||||
Suns
|
||||
Putns
|
||||
Vārna
|
||||
Zaķis
|
||||
Pele
|
||||
Ābols
|
||||
Aita
|
||||
Zirgs
|
||||
Lauva
|
||||
Pūķis
|
||||
Lasis
|
||||
Vilks
|
||||
Vējš
|
||||
Uguns
|
||||
Ūdens
|
||||
Zeme
|
||||
Debesis
|
||||
Saule
|
||||
Rūpniecība
|
||||
Aizkustinošs
|
||||
Izdzīvošana
|
||||
Nepieciešamība
|
||||
Atbildība
|
||||
Lieliski
|
||||
Apmierināts
|
||||
Neparasts
|
||||
Izglītība
|
||||
Sarežģīts
|
||||
Atsevišķs
|
||||
Pamatots
|
||||
Organizācija
|
||||
Sadarbība
|
||||
Efektīvs
|
||||
Daudzveidīgs
|
||||
Novērtēt
|
||||
Pārsteidzošs
|
||||
Inovatīvs
|
||||
Vērtība
|
||||
Aizraujošs
|
||||
Nopietns
|
||||
Komunikācija
|
||||
Māksla
|
||||
Dzīvība
|
||||
Ekskluzīvs
|
||||
Tehnoloģijas
|
||||
Rezultāts
|
||||
Atbalsts
|
||||
Nodrošinātība
|
||||
Pārbaudīt
|
||||
Radošs
|
||||
Sociāls
|
||||
Izteiksmīgs
|
||||
Brīvība
|
||||
Pieredze
|
||||
Ietekme
|
||||
Pārmaiņas
|
||||
Drosmīgs
|
||||
Racionāls
|
||||
Empātija
|
||||
Izpratne
|
||||
Risinājums
|
||||
Iespējas
|
||||
Atklāts
|
||||
Vadošais
|
||||
Eksperimentāls
|
||||
Neatkarība
|
||||
Tīrība
|
||||
Samierināšanās
|
||||
Motivācija
|
||||
Harmonija
|
||||
Dinamisks
|
||||
Iedvesma
|
||||
Izglītojošs
|
||||
Komplicēts
|
||||
Pieejamība
|
||||
Sadarbība
|
||||
Tūlītējs
|
||||
Saprotams
|
||||
Neizsakāms
|
||||
Lieliskums
|
||||
Inovācijas
|
||||
Aizrautība
|
||||
Pārdomas
|
||||
Sapratne
|
||||
Rezultatīvs
|
||||
Iespējams
|
||||
Pārbaude
|
||||
Sociālais
|
||||
Izteiksme
|
||||
Brīvība
|
||||
Pieredzējis
|
||||
Ietekmīgs
|
||||
Pārmaiņu
|
||||
Racionāla
|
||||
Izpratni
|
||||
Risinājumi
|
||||
Iespējams
|
||||
Atklāta
|
||||
Vadošā
|
||||
Eksperimentāla
|
||||
Neatkarība
|
||||
Tīra
|
||||
Motivējošs
|
||||
Harmonisks
|
||||
Dinamika
|
||||
Iedvesmojošs
|
||||
Spēks
|
||||
Mīlestība
|
||||
Pasaule
|
||||
Daba
|
||||
Skaistums
|
||||
Miers
|
||||
Sapnis
|
||||
Prieks
|
||||
Rītausma
|
||||
Brīnums
|
||||
Izcils
|
||||
Saikne
|
||||
Dzirksts
|
||||
Pārmaiņas
|
||||
Atbalsts
|
||||
Izcilība
|
||||
Satriecošs
|
||||
Dzīvīgums
|
||||
Pārveidošana
|
||||
Uzdrīkstēšanās
|
||||
Uzticamība
|
||||
Ieguldījums
|
||||
Vērtība
|
||||
Līdzsvars
|
||||
Saskaņa
|
||||
Izsmalcinātība
|
||||
Pateicība
|
||||
Atzinība
|
||||
Pārsteigums
|
||||
103
Common/3dParty/hunspell/test/dst/mn_MN.txt
Normal file
103
Common/3dParty/hunspell/test/dst/mn_MN.txt
Normal file
@ -0,0 +1,103 @@
|
||||
Баатар
|
||||
Багаа
|
||||
Базар
|
||||
Барра
|
||||
Бат-Очир
|
||||
Баттуул
|
||||
Батхэсэн
|
||||
Баярмаа
|
||||
Билгэх
|
||||
Бор
|
||||
Бөөнцагаан
|
||||
Бүрэнхайрхан
|
||||
Бямбагар
|
||||
Бэх
|
||||
Гарам
|
||||
Гантиг
|
||||
Гурвантэс
|
||||
Гүр
|
||||
Гэрэлтуяа
|
||||
Давст
|
||||
Дангаа
|
||||
Дансран
|
||||
Дарь-Эх
|
||||
Дөргөн
|
||||
Дундбүрд
|
||||
Дэмүүл
|
||||
Дэлгэрцэцэг
|
||||
Жавзан
|
||||
Жарантай
|
||||
Заглул
|
||||
Зүүнхөвөө
|
||||
Кир
|
||||
Корона
|
||||
Лүн
|
||||
Лха
|
||||
Лхаваан
|
||||
Майхан
|
||||
Манлай
|
||||
Мөндөөхөө
|
||||
Мөнхөт
|
||||
Мөрөн
|
||||
Мөнххаан
|
||||
Мөст
|
||||
Мэгэд
|
||||
Мухар
|
||||
Найдалмаа
|
||||
Найтингейл
|
||||
Налайх
|
||||
Нарантуул
|
||||
Намтай
|
||||
Насантогтох
|
||||
Номин
|
||||
Нямсамбуу
|
||||
Нэүдэй
|
||||
Орог
|
||||
Очир
|
||||
Өнөржаргал
|
||||
Өөдөс
|
||||
Өргөн
|
||||
Паган
|
||||
Пас
|
||||
Пүрэвдорж
|
||||
Пүрэвхүү
|
||||
Сайнаа
|
||||
Сайхандулаан
|
||||
Сундуй
|
||||
Сэлх
|
||||
Сүүж
|
||||
Сээр
|
||||
Тайван
|
||||
Тарав
|
||||
Тогтуун
|
||||
Төрболд
|
||||
Төхөм
|
||||
Төмөр
|
||||
Түргэн
|
||||
Түшиг
|
||||
Түгтөмөр
|
||||
Түшиг
|
||||
Удвал
|
||||
Улиастай
|
||||
Улаандэл
|
||||
гүедэцгээчих
|
||||
дэвхэрлүүлсхийчих
|
||||
дэвхэлцгээчих
|
||||
дэвшигдүүлгэчих
|
||||
дэвшилцчих
|
||||
дэвээ
|
||||
дэггүйчүүд
|
||||
наламгардуулалц
|
||||
налбаруулзна
|
||||
|
||||
Слова с ошибками []
|
||||
Батарчулуун [Баатарчулуун, Батар чулуун, Батарч улуун]
|
||||
Баруунхарааа [Баруунхарааг, Баруунхараа, Баруунхараагаа, Баруунхараад]
|
||||
Даважаргал [Даваажаргал]
|
||||
Дөрволжин [Дөрвөлжин]
|
||||
Мягмараран [Мягмараар, Мягмарнаран]
|
||||
Оюунтулхуур [Унтуурхуул]
|
||||
оторчилсхилгэ [оторчилсхийлгэ, оторчилсхийчих, оторчилсхий, отогчилсхийлгэ, хорчилсхийлгэ]
|
||||
Асрамжлулгацгаачих [Асрамжлуулгацгаачих]
|
||||
гүентүүлгэцгэээ [гүентүүлгэцгээе, гүентүүлгэцгээ, гүентүүлгэцгээгээ, гүентүүлгэцгээж, гүентүүлгэцгээн, гүентүүлгэцгээнэ, гүентүүлгэцгээв, гүентүүлгэцгээг, гүентүүлгэцгээх, гүентүүлгэцгээм]
|
||||
наладаадуулга [налдаадуулга, наадалдуулгаа, наадалдуулга, налдаадуулцгаа, наадамдуулгаа]
|
||||
113
Common/3dParty/hunspell/test/dst/nb_NO.txt
Normal file
113
Common/3dParty/hunspell/test/dst/nb_NO.txt
Normal file
@ -0,0 +1,113 @@
|
||||
Bahamasøyene
|
||||
Festarrangement
|
||||
Festarrangemang [Festarrangement, Festarrangør, Fellesarrangement, Storarrangementa]
|
||||
Festival
|
||||
festligheta
|
||||
festnummer
|
||||
forhandlernett
|
||||
forgylle
|
||||
fotballstyre
|
||||
Fotgå
|
||||
fotoamatørene
|
||||
Fotogalleri
|
||||
fotokopiere
|
||||
generalkostnadene
|
||||
generaltabbe
|
||||
generøs
|
||||
Generell
|
||||
genmodifisertst
|
||||
handlingsresymeet
|
||||
hardhet
|
||||
Harmfull
|
||||
hastighetsregulering
|
||||
havbanke
|
||||
havforskningsundersøkelsene
|
||||
informasjonsutveksling
|
||||
Infrarødest
|
||||
kaffeautomat
|
||||
kaldslig
|
||||
kalenderåra
|
||||
kjekk
|
||||
kjendisstoffa
|
||||
kjærlighetslyrikk
|
||||
kjøkken
|
||||
Kontantautomat
|
||||
kontantlån
|
||||
kontrahere
|
||||
kontraheringsplikt
|
||||
Låskasse
|
||||
læregutt
|
||||
læreprosess
|
||||
Museums
|
||||
museumssamling
|
||||
musikkorps
|
||||
myggstikka
|
||||
myndighetsaldere
|
||||
omløpstider
|
||||
omregn
|
||||
områdeplan
|
||||
omriss
|
||||
omsetningsgjeld
|
||||
omsjaltning
|
||||
omsetningsvolumer
|
||||
omslutning
|
||||
omslyngning
|
||||
omsonst
|
||||
omstendeligheta
|
||||
Omstart
|
||||
Omstreifende
|
||||
Omsyn
|
||||
omtåketheta
|
||||
oppdagelse
|
||||
oppbygning
|
||||
oppebære
|
||||
oppfølgingsapparat
|
||||
oppgjørsbank
|
||||
oppgjørsblankett
|
||||
opphøringene
|
||||
partisipere
|
||||
randverdi
|
||||
rapportskriver
|
||||
rasjonalisering
|
||||
Rate
|
||||
selsak
|
||||
selskapsinntekt
|
||||
selskapsoverskudd
|
||||
selvbetjeningene
|
||||
snabbingene
|
||||
Snadderene
|
||||
Sytti
|
||||
søkekriterium
|
||||
søkemulighetene
|
||||
søkeargumenter
|
||||
søkingen
|
||||
søkne
|
||||
sølvlaga
|
||||
sørlandsk
|
||||
søtningene
|
||||
tabellrad
|
||||
Tabellkolonne
|
||||
Takhalm
|
||||
taksene
|
||||
takseringssystema
|
||||
tal
|
||||
trolsk
|
||||
trosinnholdene
|
||||
utfoldelsesmuligheta
|
||||
Utformingsmetode
|
||||
Utgift
|
||||
vekstfaktor
|
||||
vekstforhold
|
||||
|
||||
Слова с ошибками []
|
||||
Arbeidstagerorganisasion [Arbeidstagerorganisasjon, Arbeidstakerorganisasjon, Arbeidsgiverorganisasjon, Sosialarbeiderorganisasjon, Arbeiderorganisasjon]
|
||||
festsprel [festsprell, festsprek, festsprelt, festspell, feltprest, fengselsprest]
|
||||
forhandlingsdirektor [forhandlingsdirektør, forhandlingssekretær, forhandlingstekniskere, forhandlingstaktiskere, forhandlingskontor]
|
||||
handlingforløpa [handlingsforløpa, handling forløpa, handling-forløpa, handlingsforløp, lønnsforhandlinga, lønnsforhandling, forhandlingspart]
|
||||
kjempeflinktt [kjempeflinkt, kjempeflinkest, kjempeflink, kjempeflott, kjempefint]
|
||||
lanetilbud [lånetilbud, langetilbud, landetilbud, linetilbud, laketilbud, langtilbud, lagetilbud, landtilbud, danetilbud, lunetilbud, vanetilbud, fanetilbud, banetilbud, hanetilbud, kantinetilbud]
|
||||
omraming [omramming, omringing, omringning, ramming, omring]
|
||||
omsvøpssfull [omsvøpsfull, omsvøpslaus]
|
||||
raportmateriale [rapportmateriale, kartmaterialer, kartmateriale, programmateriale, skrapmateriale]
|
||||
serstilt [særstilt, ser stilt, ser-stilt, seerstilt, tverrstilt, storstilt, lederstil, stiliser]
|
||||
taksamst [takksamst, takksamt, takksam, samletakst, samstav]
|
||||
115
Common/3dParty/hunspell/test/dst/nl_NL.txt
Normal file
115
Common/3dParty/hunspell/test/dst/nl_NL.txt
Normal file
@ -0,0 +1,115 @@
|
||||
Advertentie
|
||||
Advocate
|
||||
affirmatie
|
||||
afgevaardigd
|
||||
afneemster
|
||||
allerbekendst
|
||||
alternatieveling
|
||||
annulering
|
||||
anticycloon
|
||||
Backtrackroute [Jacktrackroute, Backtrackrouten, Baktrackroute, Backtrackroute-, Backtrack-route, Back-trackroute, Backtrackroutes]
|
||||
Bearbeiden
|
||||
becijfer
|
||||
bediening
|
||||
bedrag
|
||||
beduiden
|
||||
beïnvloeding
|
||||
benadeling
|
||||
bepaaldelijk
|
||||
Catalogiseer
|
||||
Catering
|
||||
cellulair
|
||||
classificator
|
||||
collaboreren
|
||||
collectiviteit
|
||||
comfortabel
|
||||
complimenteus
|
||||
contractant
|
||||
correctionaliseren
|
||||
daaraanvolgend
|
||||
dagelijks
|
||||
deelgenoot
|
||||
degelijkheid
|
||||
demarqueren
|
||||
Denotative [Denotatie, Denominatieve]
|
||||
deposant
|
||||
dergelijken
|
||||
detail
|
||||
deugen
|
||||
diakritisch
|
||||
Directioneel
|
||||
dusgenaamd
|
||||
eendrachtigheid
|
||||
Eenzaamheid
|
||||
eersteklascoupé
|
||||
Eigenschap
|
||||
felicitatietelegram
|
||||
centerkanaal [centerkabaal, enterkanaal, centerkanaal-, center-kanaal, callcenter]
|
||||
Chargeer
|
||||
filiaal
|
||||
klare
|
||||
Klassikaal
|
||||
kleinhandel
|
||||
evolutie
|
||||
exemplaar
|
||||
exequiën
|
||||
familiaal
|
||||
fauteuil
|
||||
luister
|
||||
magistratelijk
|
||||
perelaar
|
||||
Permitteren
|
||||
Perseveratie
|
||||
persoonlijk
|
||||
pictogram
|
||||
pixel
|
||||
sloten
|
||||
sluimer
|
||||
sneltoets
|
||||
Soldij
|
||||
Solliciteren
|
||||
zegepraal
|
||||
zelfbeeld
|
||||
zevendaags
|
||||
aangeslotene
|
||||
meermaals
|
||||
expedieert
|
||||
jaargetijden
|
||||
kaderleden
|
||||
Kapitelen
|
||||
|
||||
Сложные слова []
|
||||
avontuurlijkheid
|
||||
bedrijfsmaatschappelijk
|
||||
begrotingstechnisch
|
||||
belangstellingssfeer
|
||||
concurrentievoordeel
|
||||
conferentieganger
|
||||
democratisch-liberaal
|
||||
discontoverhoging
|
||||
doctoraatsverhandeling
|
||||
dubbeldeksbus
|
||||
economisch-financieel
|
||||
energiezuinig
|
||||
erkentelijkheid
|
||||
evenwichtigheid
|
||||
klimaatsverandering
|
||||
koffiezetmachine
|
||||
koopmansgebruik
|
||||
maatschapsovereenkomst
|
||||
personeelsconsulent
|
||||
sociaalwetenschappelijk
|
||||
zelfverzekerdheid
|
||||
fondsenwervende
|
||||
|
||||
Слова с ошибками []
|
||||
afficher [affiche, afficheer, affiche-, affiches]
|
||||
algorithme [algoritme, algoritmiek]
|
||||
beeindiging [beëindiging]
|
||||
client [cliënt]
|
||||
consnteren [consenteren, contesteren, constateren, consulteren, confronteren]
|
||||
deactivieren [deactiveren, deactiveerde, reactiveren, deactiveert, geactiveerden]
|
||||
deblockering [deblokkering]
|
||||
electrisch [elektrisch]
|
||||
certificat [certificaat, certificatie, certificeert, certificeer, certificeren]
|
||||
sovereiniteit [soevereiniteit, suzereiniteit, sereniteit, universiteit]
|
||||
116
Common/3dParty/hunspell/test/dst/nn_NO.txt
Normal file
116
Common/3dParty/hunspell/test/dst/nn_NO.txt
Normal file
@ -0,0 +1,116 @@
|
||||
Ankeret
|
||||
Anleggsbedrift
|
||||
Annandag
|
||||
annonseavis
|
||||
annuell
|
||||
ansats
|
||||
ansvarsmedviten
|
||||
Antibiotikai
|
||||
apal
|
||||
apoteki
|
||||
apparattavlor
|
||||
appetitt
|
||||
Aprikos
|
||||
arbeidsdokument
|
||||
arbeidsmarknad
|
||||
barndom
|
||||
bastematte
|
||||
bautingi
|
||||
Bedriftsleiar
|
||||
befolkningi
|
||||
begynnarkurs
|
||||
Beheld
|
||||
belastningi
|
||||
beredskapsnivå
|
||||
beredskapsperiode
|
||||
berglandskapi
|
||||
berrfrost
|
||||
beskjedi
|
||||
beskrivingi
|
||||
betalingsoppdrag
|
||||
betalingsplikt
|
||||
bevismateriale
|
||||
bildeband
|
||||
bildebruki
|
||||
bildespråki
|
||||
bildeteksti
|
||||
bilingval
|
||||
billettlukone
|
||||
binær
|
||||
bione
|
||||
bjørkegreini
|
||||
bjørnebæri
|
||||
blenge
|
||||
blokkeringi
|
||||
blomsterbordi
|
||||
blyerts
|
||||
bogen
|
||||
bokstavrekningi
|
||||
bokstavteikni
|
||||
Borddisk
|
||||
effektevaluering
|
||||
elgkalv
|
||||
Elone
|
||||
emballer
|
||||
faktainformasjon
|
||||
familiebedrifti
|
||||
familieterapeut
|
||||
fastbuande
|
||||
Februar
|
||||
feili
|
||||
fisketom
|
||||
hengelåsi
|
||||
istandsetjingi
|
||||
Item
|
||||
jaguar
|
||||
jamlig
|
||||
janen
|
||||
jarnbanestasjon
|
||||
kjende
|
||||
kjentfolki
|
||||
kjæleri
|
||||
kjøledisk
|
||||
kjørety
|
||||
midli
|
||||
Mideftnar
|
||||
midtstrek
|
||||
multiplikasjonstabell
|
||||
museumsdirektør
|
||||
onsdag
|
||||
operasjon
|
||||
operasjonskode
|
||||
opinionsskapingi
|
||||
opningi
|
||||
Personalkonsulent
|
||||
Personligdom
|
||||
persontryggleik
|
||||
petroleumspris
|
||||
redningsaksjon
|
||||
reduksjon
|
||||
refusnik
|
||||
seinst
|
||||
sekretær
|
||||
seljande
|
||||
sendeferd
|
||||
Standpunkt
|
||||
støyisolering
|
||||
støytvis
|
||||
terminoppgåve
|
||||
tidløysone
|
||||
tidsfølgjone
|
||||
Tilbakebetalingstid
|
||||
uprofesjonell
|
||||
upåklageleg
|
||||
|
||||
Слова с ошибками []
|
||||
Anlegsarbeid [Anleggsarbeid, Tvangsarbeid, Grunnlagsarbeid, Føregangsarbeid, Bergingsarbeid]
|
||||
anonse [annonse, nonsens, anse]
|
||||
ansversproblematikk [ansvarsproblematikk, vurderingsproblematikk, ventelisteproblematikk, valdsproblematikk, drivhusproblematikk]
|
||||
barneforteling [barneforteljing, barnefordeling, barneforsking, barnefarforelegg, barnebefolkning, barnebortføring]
|
||||
besoksliste [besøksliste, sortsliste]
|
||||
bilophoggingi [bilopphoggingi, bilopphogging, opphogging]
|
||||
effektivitetskontrol [effektivitetskontroll, effektivitetsforskjell, effektivitetsproblem, effektivitetsnøytral, effektivitetsforbetring]
|
||||
fakturaerklering [fakturaerklæring, faktureringsliste, overfakturering]
|
||||
miljøbyrad [miljøbyråd, miljøby rad, miljøby-rad, miljøbragd]
|
||||
selskapskat [selskap skat, selskap-skat, selskaps kat, selskaps-kat, selskapsskatt, selskapskapital, selskapsrett, selskapstype]
|
||||
cement [sement, dement, centime, cent]
|
||||
108
Common/3dParty/hunspell/test/dst/oc_FR.txt
Normal file
108
Common/3dParty/hunspell/test/dst/oc_FR.txt
Normal file
@ -0,0 +1,108 @@
|
||||
Ajustaira
|
||||
alaguiar
|
||||
alausièr
|
||||
alberguèri
|
||||
alcaloïdic
|
||||
alègrament
|
||||
alenament
|
||||
algorisme
|
||||
Alimentacion
|
||||
allergologia
|
||||
alpèstra
|
||||
amaisament
|
||||
amorteirar
|
||||
analista
|
||||
analogic
|
||||
atucament
|
||||
Audicion
|
||||
auquièr
|
||||
auscultacion
|
||||
auscultar
|
||||
ausèri
|
||||
autenticament
|
||||
brilhant
|
||||
brumós
|
||||
Burgada
|
||||
cabelièira
|
||||
cadeçar
|
||||
Caducèu
|
||||
çaicontra
|
||||
calcièrs
|
||||
Calmar
|
||||
camarilha
|
||||
cambièra
|
||||
canalhariá
|
||||
casse
|
||||
cedar
|
||||
cendrós
|
||||
cèrca
|
||||
cèrtes
|
||||
cestòdes
|
||||
chantièr
|
||||
chartrós
|
||||
Chassís
|
||||
dimensionar
|
||||
diptèrs
|
||||
dirèctament
|
||||
discrecionària
|
||||
discriminar
|
||||
Distraire
|
||||
dòler
|
||||
Enòrme
|
||||
enqueriái
|
||||
espicifòrme
|
||||
esquelèt
|
||||
Esquèrra
|
||||
estetic
|
||||
innocéncia
|
||||
innocentàs
|
||||
Maniquèu
|
||||
mantelejar
|
||||
Nauchièr
|
||||
natièr
|
||||
oxigèn
|
||||
pacanariá
|
||||
pagés
|
||||
pagesiá
|
||||
Primièirament
|
||||
requereguèri
|
||||
requisitòria
|
||||
saumelèri
|
||||
S'autodeterminar
|
||||
sautarèl
|
||||
scientament
|
||||
scientologia
|
||||
secador
|
||||
secretèri
|
||||
sècta
|
||||
sectorial
|
||||
s'efarcimar
|
||||
s'endeven
|
||||
s'engarrar
|
||||
sentimental
|
||||
s'entrepausar
|
||||
shampó
|
||||
sextant
|
||||
sòli
|
||||
Solidament
|
||||
soquèla [soquèla, roquèla]
|
||||
subrejornada
|
||||
suedés
|
||||
utilitària
|
||||
Utilizaire
|
||||
vacàs
|
||||
vaisselèri
|
||||
valiái
|
||||
validament
|
||||
|
||||
Слова с ошибками []
|
||||
albatros [albatròs]
|
||||
amistanza [amistança, amistat, animista]
|
||||
brunonièr [brunhonièr, prunhonièr]
|
||||
carpentier [carpentièr]
|
||||
centrifugation [centrifugacion, centrifugadoira, centrifugador, centrifugar, centrifuga]
|
||||
estelhad [estelhas, estelha, estelhada, estelhar, estelhan, estelhat, estelham, estrelhada, estervelhada, estenalhada, estendalha]
|
||||
primaria [primariá, primària, primarai, primaris, primari, primariam, primacia, primarga]
|
||||
s'embractar [s'embracetar, s'embraceta, s'embodracar, s'embarrassar, embracetar]
|
||||
sosembrançament [sosembrancament, embraçament, asombrament]
|
||||
vascularisacion [vascularizacion, secularizacion, cardiovascular]
|
||||
225
Common/3dParty/hunspell/test/dst/pl_PL.txt
Normal file
225
Common/3dParty/hunspell/test/dst/pl_PL.txt
Normal file
@ -0,0 +1,225 @@
|
||||
dom
|
||||
pies
|
||||
kot
|
||||
auto
|
||||
drzewo
|
||||
książka
|
||||
szkoła
|
||||
przyjaciel
|
||||
mama
|
||||
tata
|
||||
dziecko
|
||||
jabłko
|
||||
czekolada
|
||||
kawa
|
||||
herbata
|
||||
telefon
|
||||
telewizor
|
||||
komputer
|
||||
muzyka
|
||||
sport
|
||||
zdrowie
|
||||
piękno
|
||||
praca
|
||||
miłość
|
||||
szczęście
|
||||
czas
|
||||
pieniądze
|
||||
język
|
||||
kraj
|
||||
miasto
|
||||
zima
|
||||
lato
|
||||
jesień
|
||||
wiosna
|
||||
morze
|
||||
góry
|
||||
jezioro
|
||||
rzeka
|
||||
park
|
||||
zwierzę
|
||||
ptak
|
||||
ryba
|
||||
drewno
|
||||
złoto
|
||||
srebro
|
||||
metal
|
||||
szkło
|
||||
buty
|
||||
sukienka
|
||||
spodnie
|
||||
koszula
|
||||
czapka
|
||||
płaszcz
|
||||
ręka
|
||||
noga
|
||||
oko
|
||||
ucho
|
||||
nos
|
||||
usta
|
||||
ząb
|
||||
głowa
|
||||
serce
|
||||
mózg
|
||||
król
|
||||
królowa
|
||||
książę
|
||||
księżniczka
|
||||
chłopak
|
||||
dziewczyna
|
||||
mężczyzna
|
||||
kobieta
|
||||
staruszek
|
||||
staruszka
|
||||
lekarz
|
||||
pielęgniarka
|
||||
nauczyciel
|
||||
uczennica
|
||||
student
|
||||
studentka
|
||||
kucharz
|
||||
kelner
|
||||
wojna
|
||||
pokój
|
||||
mapa
|
||||
flaga
|
||||
śmiech
|
||||
płacz
|
||||
sen
|
||||
marzenie
|
||||
praca
|
||||
nauka
|
||||
sztuka
|
||||
teatr
|
||||
kino
|
||||
muzeum
|
||||
kaplica
|
||||
kościół
|
||||
zamek
|
||||
most
|
||||
droga
|
||||
|
||||
Сложные слова на польском языке []
|
||||
|
||||
1. konstantynopolitańczykowianeczka [nicejsko-konstantynopolitańskiego]
|
||||
2. niezadogłębienieńskujący []
|
||||
3. antykontraatakujący [finansująco-kontraktujący]
|
||||
4. supersamoobsługiwalnymi [kancelaryjno-archiwalnymi]
|
||||
5. rozpierduchlanoculka [nieporozpierdzielanie]
|
||||
6. nieodezwawiałobyś [nieodprzedmiotawiany]
|
||||
7. przystawieniowy [przedstawieniowy, nieprzystawienie, niepoprzystawianie, nieprzystawianie]
|
||||
8. nieprzeżyciowakościami [nieprzewartościowywaniami, nieprzewartościowaniami]
|
||||
9. nieprzekazywających [nieprzekrzywiających, nieprzejednywających, nieprzywdziewających, nieprzepoczwarzających]
|
||||
10. przeciwzakwaszeniowych [zatokowo-przedsionkowych]
|
||||
11. nieszczęściodrapańskiego [ogrodniczo-pszczelarskiego]
|
||||
12. społeczno-wychowawczyniami [socjalizacyjno-wychowawczymi]
|
||||
13. seledynowo-fioletowymi [mięśniowo-szkieletowymi]
|
||||
14. przeciwdeszczową [przeciwdeszczową, przeciwdeszczowy]
|
||||
15. mikroelektroniczno-kwalitacyjną [reumatologiczno-rehabilitacyjną]
|
||||
16. nieokreślonościowo-losowo-obiektywnie []
|
||||
17. zagubieniecioburakowatej []
|
||||
18. antyneuroleptyzanckim []
|
||||
19. nieupubliczniającymi [nieuwieloznaczniającymi]
|
||||
20. splądrowałbyś [wyeksplorowałbyś]
|
||||
21. konserwowano-spożywczymi [konserwiarsko-zamrażalniczymi]
|
||||
22. ożelośćiowo-miłosnej []
|
||||
23. nieprzyzwoitolicjią [nieprzypieczętowującą]
|
||||
24. nieodporowościę [nieodpoliturowanie]
|
||||
25. rzeszołkofiołkowatymi []
|
||||
26. niezakapiactwuja [niezakatrupiająca]
|
||||
27. nieoszczędniewczelnianków [oszczędnościowo-rozliczeniowa]
|
||||
28. przekształconowaczkołępów []
|
||||
29. rozwińczywianiu [nieporozwiązywaniu]
|
||||
30. nieprzeskakiwalnościami [nieprzewartościowywaniami]
|
||||
31. modernizująco-rewolucyjnego [reumatologiczno-rehabilitacyjnego]
|
||||
32. nadzwyczajnieuzdolnionymi []
|
||||
33. przemocno-wsparciański [warciańsko-odrzańskiemu]
|
||||
34. przepyszno-peltzerowskiego [faszystowsko-hitlerowskiego]
|
||||
35. kwestionowano-wzmocnieniami []
|
||||
36. nieodczynieństwującą [nieodrzeczywistniającą]
|
||||
37. niezasłużonowypasionego []
|
||||
38. likwidującego/zarządzającego [odchudzająco-oczyszczającego]
|
||||
39. szeszcześtoplutowanych [nieprzeinstrumentowanych]
|
||||
40. niewpadkowościowi [wielonarodowościowi]
|
||||
41. antynazizhownemu [niebizantynizowanemu]
|
||||
42. nieuchronnieprzekroczeniowym [oszczędnościowo-rozliczeniowym]
|
||||
43. niezatrawialnieprzyjemnego []
|
||||
44. kardiopulmonologiczno-angiologów [endokrynologiczno-ginekologicznemu]
|
||||
45. gorączkowointensywnościowego [wydolnościowo-sprawnościowego]
|
||||
46. antykonstytucyjnorozpadowego [konstytucyjno-monarchicznego]
|
||||
47. nieobawiamysię/źródleni []
|
||||
48. prerewolucyjnolphillipsowi []
|
||||
49. szóstkaniewygranych [niewykrystalizowywanych]
|
||||
50. nieupadkokogeneracyjnymi [korekcyjno-kompensacyjnymi]
|
||||
51. społeczno-humanitarnarządzaniami []
|
||||
52. nieodziewowiędzy [nieumiędzynarodowienie]
|
||||
53. przemocnochamować []
|
||||
54. społecznosensacyjnosądowym [kompensacyjno-wyrównawczymi]
|
||||
55. przerażającorzymskiego [kobylińsko-borzymskiego]
|
||||
56. nieprzemontowanych/zamuzowych []
|
||||
57. referendumkonstytucyjno-reformujące []
|
||||
58. niezniesłowiałszymi [niezesłowiańszczonymi]
|
||||
59. niebohaterystycznymi [charakterystyczniejszymi]
|
||||
60. produktodenarodowomenopauzalem []
|
||||
61. odrywającopierdolca [niedopierdzielająca]
|
||||
62. niegotowożywione [żywieniowo-noclegowi]
|
||||
63. niepostronnynarodzonemu [kilkudziesięciostronicowemu]
|
||||
64. przedniaautochtonicznym [urbanistyczno-architektonicznym]
|
||||
65. nadciągniono-wchodzących []
|
||||
66. promocjostworczym [czteromocarstwowym]
|
||||
67. niezapowiadającychkoalicji []
|
||||
68. bezgłupinczłapie []
|
||||
69. wyomjaził []
|
||||
70. wagotonizacyjno-radiofonizowanego []
|
||||
71. gospodarczo-zasadotwórczej [organizacyjno-gospodarczej]
|
||||
72. skrupulatno-rzeźniczobardziej []
|
||||
73. samokiedy-konstytucyjnej [konstytucyjno-monarchicznej]
|
||||
74. niedomętnością [nieumiejętnością]
|
||||
75. nieoszustamiwykorzystana []
|
||||
76. przeprowadzonoświeckie [nieprzeprojektowywanie]
|
||||
77. nieuniknionaobowiązkowo-plastycznej []
|
||||
78. poduszkowo-nicościowych [porządkowo-czystościowych]
|
||||
79. niepowodzeńbutmizeryjewego []
|
||||
80. skojarzeniowocolorowymi [wypoczynkowo-szkoleniowymi]
|
||||
81. przytułkamiwciągarkowych []
|
||||
82. wchodziłoprzeciwniepowszechny []
|
||||
83. karaublicznociągana [publiczno-prywatnego]
|
||||
84. przedpolitycznilubelskim [hemolityczno-mocznicowemu]
|
||||
85. niezapowiedziano-date-expanded []
|
||||
86. licznościłodziennej [termiczno-wilgotnościowej]
|
||||
87. niezawinieniomatołek []
|
||||
88. pakujączwobilardowego []
|
||||
89. rewersdopisek []
|
||||
90. przeprosinoworadosną [nieprzeprojektowywaną]
|
||||
91. nieakceptacyjnoprospekcyjnymi [adaptacyjno-rehabilitacyjnymi]
|
||||
92. jedniżużytym [nienadużytymi]
|
||||
93. ainikopciksemilitechnikowany []
|
||||
94. motszynopiszącym [niewspółtowarzyszącym]
|
||||
95. nieprzerejestrowanasezonowanie []
|
||||
96. słupotartackimoblikiem []
|
||||
97. nieodbieraniemniedostępności []
|
||||
98. dorozwinięcówkobiet []
|
||||
99. szybopojabytesłowickiego []
|
||||
100. przystępnoracjmujacych []
|
||||
|
||||
Слова с ошибками []
|
||||
|
||||
jedniiżużytym [nienadużytymi]
|
||||
|
||||
wiomjaził [jaziowy]
|
||||
|
||||
niezzniesłoowiałszymi [niezesłowiańszczonymi, niezesłowiańszczanymi, niezesłowiańszczającymi, najniesłowniejszymi]
|
||||
|
||||
superrsammoobsługiwalnymi [muzealno-archiwalnymi]
|
||||
|
||||
przemoocnochamować [przeprogramować]
|
||||
|
||||
staruszzka [staruszka, staruszeczka, staruszek, staroruska, starszaka]
|
||||
|
||||
tiatr [tiar, titr, tatr, teatr, wiatr, otiatra, otiatria, tristia]
|
||||
|
||||
woina [wpina, wona, wina, wozina, dwoina, wolina, wonna, wcina, toina, wodna, doina, wolna, wojna, wgina, woźna]
|
||||
|
||||
teleffon [telefon, telef fon, telef-fon, telefoto]
|
||||
|
||||
zołoto [złoto, gołoto, hołoto, Gołoto, Hołoto, zołotnik]
|
||||
108
Common/3dParty/hunspell/test/dst/pt_BR.txt
Normal file
108
Common/3dParty/hunspell/test/dst/pt_BR.txt
Normal file
@ -0,0 +1,108 @@
|
||||
que
|
||||
eu
|
||||
não
|
||||
de
|
||||
você
|
||||
para
|
||||
ele
|
||||
se
|
||||
é
|
||||
um
|
||||
sim
|
||||
por
|
||||
isso
|
||||
em
|
||||
uma
|
||||
uuma [u uma, uma, usma, suma, numa, ruma, duma, puma, fuma, juma]
|
||||
está
|
||||
como
|
||||
com
|
||||
bem
|
||||
na
|
||||
me
|
||||
mas
|
||||
do
|
||||
era
|
||||
quando
|
||||
então
|
||||
tudo
|
||||
tydo [tudo, tido, todo]
|
||||
aqui
|
||||
disse
|
||||
estava
|
||||
esâtava [estava, tavares]
|
||||
lá
|
||||
fazer
|
||||
vai
|
||||
sobre
|
||||
vamos
|
||||
homem
|
||||
hollmem [homem-gol]
|
||||
bom
|
||||
ok [o k, o, k, oó, os, oi, oc, ou, om, oh]
|
||||
agora
|
||||
coisa
|
||||
coissa [coisca, coiça, coisas, coisa, cossa, comissa, cisosa, cissoa, cossai]
|
||||
quero
|
||||
foi
|
||||
meu
|
||||
seu
|
||||
só
|
||||
eles
|
||||
as
|
||||
posso
|
||||
pocso [posso, poco, poso, psoco, poiso, pouso, pocho]
|
||||
estou
|
||||
mais
|
||||
mim
|
||||
certo
|
||||
dizer
|
||||
dizdizerr [dizer]
|
||||
os
|
||||
no
|
||||
sei
|
||||
ela
|
||||
vocês
|
||||
sua
|
||||
todos
|
||||
sabe
|
||||
minha
|
||||
alguma
|
||||
algyyma [amalgama]
|
||||
casa
|
||||
muito
|
||||
oh
|
||||
quallquer [qualquer, alquerque, malquerer, alqueria, alquermes]
|
||||
qualquer
|
||||
da
|
||||
estamos
|
||||
até
|
||||
onde
|
||||
onede [enode, onde, monede, neode, onere, olede, nedendo]
|
||||
ao
|
||||
tenho
|
||||
nós
|
||||
tem
|
||||
tinha
|
||||
tiinha [tinão ha, tiazinha, toinha, tinha, tirinha, tidinha, tipinha, tianha, tainha]
|
||||
quê
|
||||
ir
|
||||
ou
|
||||
pode
|
||||
quer
|
||||
vou
|
||||
seus
|
||||
dia
|
||||
estão
|
||||
nos
|
||||
cabeça
|
||||
quem
|
||||
anos
|
||||
depois
|
||||
sou
|
||||
vez
|
||||
vá
|
||||
fez
|
||||
irmão
|
||||
câmera
|
||||
câmeara [cameara, cameará, câmera, câmara, acâmera, comeara]
|
||||
135
Common/3dParty/hunspell/test/dst/pt_PT.txt
Normal file
135
Common/3dParty/hunspell/test/dst/pt_PT.txt
Normal file
@ -0,0 +1,135 @@
|
||||
pan [pana, pane, pano, pen, par, pai, pau, paz, San, Van, Dan, pança]
|
||||
manteiga
|
||||
menteiga [manteiga, antigamente]
|
||||
queijo
|
||||
salchichón [salsicha]
|
||||
saуlchichón []
|
||||
óleo
|
||||
pimenta
|
||||
pimmenta [pimenta, pigmenta, pimenteira, pavimenta, implementa, impiamente]
|
||||
sal
|
||||
baga
|
||||
mel
|
||||
geléia [geleia]
|
||||
cogumelo
|
||||
cebola
|
||||
cóbola [cebola]
|
||||
banana
|
||||
cenoura
|
||||
pêra [pera, para, pira, pura]
|
||||
beterraba
|
||||
frutas
|
||||
melão
|
||||
melancia
|
||||
bolo
|
||||
chocolate
|
||||
carne
|
||||
batatas
|
||||
salada
|
||||
salóda [salda, salada, salsada]
|
||||
tomate
|
||||
pepino
|
||||
pipino [pepino, pi pino, pi-pino, pipi no, pipi-no, filipino, pino]
|
||||
col [cola, cole, colo, coa, cal, coe, cor, rol, sol, coo, com]
|
||||
mingau [mingua, mingai, minga, mingar, mingas, mingou, mingam]
|
||||
sopa
|
||||
sanduíche
|
||||
refrigerante
|
||||
refrigarante [refrigerante, refrigerar, intrigante]
|
||||
água
|
||||
café
|
||||
chá
|
||||
leite
|
||||
suco
|
||||
scuco [suco, cuco, cucos]
|
||||
maçã
|
||||
uvas
|
||||
laranja
|
||||
abacaxi
|
||||
adacaxi [abacaxi, cacada]
|
||||
damasco
|
||||
demasco [damasco, demarco, remasco, de masco, de-masco, descasco]
|
||||
açucar [açúcar, açucara, açucare, açucaro, açudar]
|
||||
arroz
|
||||
macarrão
|
||||
res [rés, ser, ares, reis, ires, ores, dres, rei, ris, ses, rãs, rês]
|
||||
porco
|
||||
frango
|
||||
costeleta
|
||||
cãsteleta [costeleta, chapeleta]
|
||||
limão
|
||||
ervilha
|
||||
pão
|
||||
peixe
|
||||
caramelo
|
||||
sorvete
|
||||
nogueira
|
||||
ovo
|
||||
pêssego
|
||||
xícara
|
||||
xíícara [xícara, caraíba]
|
||||
vidro
|
||||
prato
|
||||
colher
|
||||
garfo
|
||||
faca
|
||||
pires
|
||||
garrafa
|
||||
guardanapo
|
||||
café da manhã [ssafé da manhã]
|
||||
almoço
|
||||
jantar
|
||||
avião
|
||||
carro
|
||||
bonde
|
||||
ônibus [ónibus]
|
||||
trem
|
||||
bicicleta
|
||||
janeiro
|
||||
fevereiro
|
||||
fevíreiro [fevereiro, ferreiro]
|
||||
março
|
||||
abril
|
||||
maio
|
||||
junho
|
||||
julho
|
||||
agosto
|
||||
setembro
|
||||
setembra [setembro, seteara]
|
||||
outubro
|
||||
novembro
|
||||
dezembro
|
||||
desembro [desmembro, dezembro, deslumbro, setembro, desdobro]
|
||||
caneta
|
||||
livro
|
||||
xadrez
|
||||
telefone
|
||||
relógio
|
||||
pente
|
||||
televisão
|
||||
ferro
|
||||
sabão
|
||||
rádio
|
||||
bolsa
|
||||
cartão
|
||||
mala
|
||||
presente
|
||||
câmera [câmara, comera]
|
||||
computador
|
||||
camputador [computador, captador]
|
||||
filme
|
||||
flor
|
||||
vaso
|
||||
quadro
|
||||
lenço
|
||||
bola
|
||||
balão
|
||||
brinquedo
|
||||
brinqueedo [brinquedo, branqueado]
|
||||
conta
|
||||
sobre
|
||||
papel
|
||||
pepel [papel, repele, pele]
|
||||
jornal
|
||||
letra
|
||||
bilhete
|
||||
210
Common/3dParty/hunspell/test/dst/ro_RO.txt
Normal file
210
Common/3dParty/hunspell/test/dst/ro_RO.txt
Normal file
@ -0,0 +1,210 @@
|
||||
casă
|
||||
copil
|
||||
carte
|
||||
masă
|
||||
școală
|
||||
lumină
|
||||
apă
|
||||
munte
|
||||
soare
|
||||
lună
|
||||
pâine
|
||||
fruct
|
||||
floare
|
||||
stradă
|
||||
mașină
|
||||
aer
|
||||
timp
|
||||
zi
|
||||
noapte
|
||||
nor
|
||||
vânt
|
||||
ochi
|
||||
gură
|
||||
nas
|
||||
mână
|
||||
picior
|
||||
inimă
|
||||
sânge
|
||||
cap
|
||||
ureche
|
||||
voce
|
||||
melodie
|
||||
culoare
|
||||
formă
|
||||
linie
|
||||
cerc
|
||||
dreptunghi
|
||||
cercetare
|
||||
știință
|
||||
limbă
|
||||
frază
|
||||
literă
|
||||
cifră
|
||||
număr
|
||||
sunet
|
||||
zgomot
|
||||
telefon
|
||||
internet
|
||||
computer
|
||||
program
|
||||
ecran
|
||||
tastatură
|
||||
mouse
|
||||
joc
|
||||
sport
|
||||
muzică
|
||||
artă
|
||||
film
|
||||
televizor
|
||||
radio
|
||||
planetă
|
||||
stea
|
||||
univers
|
||||
galaxie
|
||||
atom
|
||||
moleculă
|
||||
substanță
|
||||
energie
|
||||
lumină
|
||||
căldură
|
||||
frig
|
||||
aparat
|
||||
instrument
|
||||
mașinărie
|
||||
unelte
|
||||
hrană
|
||||
băutură
|
||||
haine
|
||||
pantofi
|
||||
păr
|
||||
piele
|
||||
ochelari
|
||||
ceas
|
||||
bijuterie
|
||||
pământ
|
||||
apă
|
||||
aer
|
||||
foc
|
||||
metal
|
||||
lemn
|
||||
piatră
|
||||
hârtie
|
||||
cerneală
|
||||
pix
|
||||
carte
|
||||
cadru
|
||||
tablou
|
||||
sculptură
|
||||
model
|
||||
formă
|
||||
anticonstituționalitate [anti constituționalitate, anti-constituționalitate, anticonstituționali tate, anticonstituționali-tate, anticonstituționale, neconstituționalitate, anticonstituțională, constituționalitate]
|
||||
dezvoltare
|
||||
inexpugnabil
|
||||
nefast
|
||||
concomitent
|
||||
antiseptic
|
||||
recalcitrant
|
||||
perseverență
|
||||
extravagant
|
||||
inexorabil
|
||||
colosal
|
||||
plauzibil
|
||||
efervescent
|
||||
perspicacitate
|
||||
superfluu [superfluă, superfulger]
|
||||
subversiv
|
||||
incoruptibil
|
||||
inefabil
|
||||
hiperbolic
|
||||
indefectibil [indestructibil, indefinibil]
|
||||
peremptoriu
|
||||
ambivalent
|
||||
paradoxal
|
||||
heterogen [eterogen, heterogonie]
|
||||
indiferent
|
||||
periferic
|
||||
subliminal
|
||||
ultraviolet
|
||||
indeferent [indiferent, interferent, deferent, inaderent, independent]
|
||||
conglomerație
|
||||
circumstanțial
|
||||
contraproducător [contra producător, contra-producător, contraproductivă, contraproductiv, neproducător]
|
||||
conglomerat
|
||||
insurmontabil
|
||||
intransigent
|
||||
insidios
|
||||
inerent
|
||||
consternant
|
||||
ambiguitate
|
||||
inerție
|
||||
inconsolabil
|
||||
oniric
|
||||
remarcabil
|
||||
repudiat
|
||||
subiectiv
|
||||
periculos
|
||||
infatigabil
|
||||
abnegare
|
||||
exuberant
|
||||
facet [face, falet, facem]
|
||||
represiune
|
||||
implacabil
|
||||
indiferent
|
||||
infatigabil
|
||||
insolit
|
||||
intempestiv
|
||||
incandescent
|
||||
letargic
|
||||
magistral
|
||||
magnanim [magnaliu]
|
||||
nefast
|
||||
oblivial [bolivian]
|
||||
oportun
|
||||
periculos
|
||||
plutitor
|
||||
propice
|
||||
reprobabil
|
||||
risipitor
|
||||
robust
|
||||
salutar
|
||||
simetric
|
||||
solicitant
|
||||
stringent
|
||||
sufocant
|
||||
superficial
|
||||
tranzitoriu
|
||||
tributar
|
||||
trivial
|
||||
umilitor
|
||||
unic
|
||||
vehement
|
||||
vernal
|
||||
vicios
|
||||
victorios
|
||||
vindicativ
|
||||
virtuos
|
||||
vizibil
|
||||
volatil
|
||||
vorace
|
||||
vulnerabil
|
||||
xenofob
|
||||
xerofil
|
||||
yonder [pondere]
|
||||
yang
|
||||
yodel [model]
|
||||
zonal
|
||||
zodiac
|
||||
zoon [ozon, zono, zoom, zoo, zon, zobon, zovon, zvon, zoo n]
|
||||
zoomorf
|
||||
zurbagiu
|
||||
Caaă [Casă, Cară, Cată, Cală, Cană, Cauă, Camă, Capă, Cadă, Cață, Cază, Cavă, Cașă]
|
||||
Soaare [Soare, Sotare, Solare, Sonare, Somare, Soțioare]
|
||||
Cartr [Carte, Cart, Carter, Carta, Carto, Cartu, Cartă]
|
||||
Appă [Papă, Apă, Arpă, Aptă]
|
||||
Coopil [Copil, Copilo, Copiilor]
|
||||
Frumoss [Frumos, Frumos s, Frumoasă]
|
||||
Feriсire [Fericire, Rereferire, Ferire]
|
||||
Prietenn [Prieten, Prieteni, Prietena, Prietene, Prieteno, Prietenu, Prietenă, Prieten n, Prietinie, Prietin, Pretenție]
|
||||
Muziică [Muzică, Muzic, Muică]
|
||||
Exeplu [Exemplu]
|
||||
197
Common/3dParty/hunspell/test/dst/ru_RU.txt
Normal file
197
Common/3dParty/hunspell/test/dst/ru_RU.txt
Normal file
@ -0,0 +1,197 @@
|
||||
должен
|
||||
доллжен [должен, доложен]
|
||||
наш
|
||||
думаю
|
||||
думмаю [думаю]
|
||||
свою
|
||||
сам
|
||||
всем
|
||||
ни
|
||||
нас
|
||||
пока
|
||||
этом
|
||||
этой
|
||||
ваша
|
||||
всеми
|
||||
возьми
|
||||
моей
|
||||
сама
|
||||
вся
|
||||
день
|
||||
само
|
||||
всей
|
||||
бывает
|
||||
себе
|
||||
пойду
|
||||
куда
|
||||
ими
|
||||
твоей
|
||||
всю
|
||||
своего
|
||||
твой
|
||||
пусть
|
||||
ним
|
||||
про
|
||||
точно
|
||||
иметь
|
||||
которые
|
||||
тогда
|
||||
сюда
|
||||
наше
|
||||
самой
|
||||
взять
|
||||
наверное
|
||||
домой
|
||||
совсем
|
||||
те
|
||||
тобой
|
||||
наверно
|
||||
что-то
|
||||
будто
|
||||
твои
|
||||
пути
|
||||
дома
|
||||
такие
|
||||
тех
|
||||
такое
|
||||
его
|
||||
самой
|
||||
вашей
|
||||
наверное
|
||||
мои
|
||||
например
|
||||
типа
|
||||
значит
|
||||
люблю
|
||||
минут
|
||||
пор
|
||||
случае
|
||||
искусство
|
||||
лучше
|
||||
того
|
||||
такому
|
||||
ждать
|
||||
видеть
|
||||
мною
|
||||
ждал
|
||||
имя
|
||||
важно
|
||||
чего-то
|
||||
самому
|
||||
обычно
|
||||
представляет
|
||||
мечтать
|
||||
стало
|
||||
помните
|
||||
взять
|
||||
моих
|
||||
самим
|
||||
своим
|
||||
вообще
|
||||
самими
|
||||
здесь
|
||||
обратно
|
||||
сразу
|
||||
таким
|
||||
ежели
|
||||
наоборот
|
||||
куда
|
||||
таков
|
||||
мечтает
|
||||
значит
|
||||
покажи
|
||||
такими
|
||||
кстати
|
||||
почти
|
||||
всякий
|
||||
научит
|
||||
вдоль
|
||||
тогдашний
|
||||
толком
|
||||
занимает
|
||||
Аквапланирование
|
||||
Барокамера
|
||||
Библиографирование
|
||||
Биосинтез
|
||||
Взаимодействующий
|
||||
Вибраторный
|
||||
Виртуальность
|
||||
Вооруженность
|
||||
Господствующий
|
||||
Десантно-штурмовой
|
||||
Диагностировать
|
||||
Дипломатический
|
||||
Дисгармония
|
||||
Дискриминационный
|
||||
Достопримечательный
|
||||
Жизнеустройство
|
||||
Интернациональный
|
||||
Инфицированный
|
||||
Кальцинировать
|
||||
Ключичный
|
||||
Коннотация
|
||||
Лиловатый
|
||||
Люминесцентный
|
||||
Метрополитен
|
||||
Многоплановый
|
||||
Модернизировать
|
||||
Наивысший
|
||||
Наименее
|
||||
Неопределенный
|
||||
Нераскрытый
|
||||
Неоднократный
|
||||
Неохотно
|
||||
Непостижимый
|
||||
Неусыпный
|
||||
Обезьяноподобный
|
||||
Обзавестись
|
||||
Оптический
|
||||
Оптимизировать
|
||||
Осуществиться
|
||||
Очистительный
|
||||
Парафинировать
|
||||
Переключатель
|
||||
Пограничный
|
||||
Подготовительный
|
||||
Подрядчик
|
||||
Полиморфный
|
||||
Почитать
|
||||
Преисполниться
|
||||
Преподаватель
|
||||
Преследователь
|
||||
Прирожденный
|
||||
Проектирование
|
||||
Профанация
|
||||
Разграничительный
|
||||
Распоряжающийся
|
||||
Реконструктивный
|
||||
Революционный
|
||||
Рентгенологический
|
||||
Рискованный
|
||||
Роскошествовать
|
||||
Самоунижение
|
||||
Сверхъестественный
|
||||
Светочувствительный
|
||||
Семантика
|
||||
Сингулярность
|
||||
Совершенствовать
|
||||
Соединительный
|
||||
Сосуществование
|
||||
Спорообразующий
|
||||
Стационарный
|
||||
Столовая
|
||||
Сторицей
|
||||
Сцепной
|
||||
Трансформирующий
|
||||
Триумвират
|
||||
Укротитель
|
||||
Универсальный
|
||||
Федеративный
|
||||
Хронометраж
|
||||
Целостность
|
||||
Криумвират [Триумвират]
|
||||
Укратитель [Укротитель]
|
||||
Универссальный [Универсальный]
|
||||
Фидиративный []
|
||||
Хранометраж [Хронометраж]
|
||||
Целосность [Целостность]
|
||||
205
Common/3dParty/hunspell/test/dst/sk_SK.txt
Normal file
205
Common/3dParty/hunspell/test/dst/sk_SK.txt
Normal file
@ -0,0 +1,205 @@
|
||||
hiša [šiša, Riša, Miša, hi ša, hi-ša]
|
||||
pes
|
||||
mačka
|
||||
avto [atto, asto, auto, zavito]
|
||||
drevo
|
||||
knjiga [kvadriga]
|
||||
šola [šila, šoka, šla, švola, škola, šosa, vola, šora, rola, kola, mola, dola, šopa, pola, hola]
|
||||
prijatelj [prijatej, prijate, prijatie]
|
||||
mama
|
||||
oče [očne, otče, toče, očke, koče, moče, očeš, oči, one, ose, oke, oje, obe, očí, očú]
|
||||
otrok
|
||||
jabolko [jablko]
|
||||
čokolada [čokoláda]
|
||||
kava
|
||||
čaj
|
||||
telefon [telefón, telefot]
|
||||
televizija [televízia]
|
||||
računalnik [račianski]
|
||||
glasba [glasnosť]
|
||||
šport
|
||||
zdravje [zdravej, zdravie, zdravte, zdravme, zdrav je, zdrav-je]
|
||||
lepota [pelota, slepota, lopota, lehota, klepotať, epoleta, poleptať]
|
||||
delo
|
||||
ljubezen [lezeniu]
|
||||
sreča [srnča, skeča, smeča]
|
||||
čas
|
||||
denar [denár, nedar]
|
||||
jezik [veziko]
|
||||
država [držiava, držala, dŕžava, dĺžava]
|
||||
mesto
|
||||
zima
|
||||
poletje [polejte, poleje, poletuje, polje]
|
||||
jesen [jeseň, jesne, nesej, jeden, jesene, jeseni, jesení]
|
||||
pomlad [omlad, poklad, p omlad, pomlka]
|
||||
morje [morke, more, moje, morte, morme, mor je, mor-je, morčej]
|
||||
gore [hore, gofre, nore, kore, more, zore, bore, šore, Nore, Tore, Lore, Zore, gágore]
|
||||
jezero [jazero, je zero, je-zero, zero]
|
||||
reka [areka, rieka, rekta, repka, rezka, raka, roka, rekt, seka, reva, veka, deka, repa, reku, ruka]
|
||||
park
|
||||
žival [žuval, živa, živel, živil, rival, ži val, ži-val, živ al, živ-al, živa l, žičieval]
|
||||
ptica [pica, pätica, psica, štica]
|
||||
riba [rabi, roba, ria, iba, raba, ribi, ryba, rúba, róba, Tiba, r iba, babri]
|
||||
les
|
||||
zlato
|
||||
srebro [rebro, s rebro, striebro]
|
||||
kovina [okovina, krovina, ovinka, konina, novina, korina, rovina, kozina, košina, kofina, rakovina, kávovina]
|
||||
steklo [šteklo, seklo, stekalo, stieklo, stenklo, streklo, stoklo, steblo, stĺklo]
|
||||
čevlji [nevlhči]
|
||||
obleka
|
||||
hlače [hláče, tlače, hlase, hlave, hlade, plače]
|
||||
srajca [rajca, krajca, s rajca]
|
||||
kapa
|
||||
plašč [plaš, plač, plaší, plaš č]
|
||||
roka
|
||||
noga [noha, nota, nosa, nova, nora, loga, koga, doga, joga, noža, noša, noxa, Toga, neogab]
|
||||
oko
|
||||
uho [ujo, ho, tuho, uhor, uhol, uhlo, ucho, uhoľ, uňho, hou, oho, uto, uhm, cho, uhú]
|
||||
nos
|
||||
ustnice [ustrice, kapustnice]
|
||||
zob
|
||||
glava [hlava, Ilava, Slava]
|
||||
srce [drce, srnce, srdce, srne, srde, síce, súce]
|
||||
možgani [moganie]
|
||||
kralj [kraj, kraal]
|
||||
kraljica [kraslica]
|
||||
princ
|
||||
princesa
|
||||
fant
|
||||
dekle [deke, dele, pekle, de kle, de-kle, debakle]
|
||||
moški [košmi, kamoši]
|
||||
ženska [ženská, ženiska, žensky, ženskí, ženský, ženskú, ženské]
|
||||
starec
|
||||
starka [starká, straka, statka, starla, stara, ostarka, staríka, starca, starkí, starký, starkú, starké]
|
||||
zdravnik [zdrav nik, zdrav-nik, zdravenia]
|
||||
medicinska sestra [medicínska sestra]
|
||||
učitelj [učitelík]
|
||||
učenka [učeníka, učenia, učenca, utečenka]
|
||||
študent
|
||||
študentka
|
||||
kuhar [kurare]
|
||||
natakar [katakana, katarakta, katarakt]
|
||||
vojna
|
||||
mir [mri, mor, mi, mira, mire, mier, emir, miri, miru, mar, air, mer, min, sir, mil]
|
||||
zemljevid [zemediel]
|
||||
zastava [zástava, zastáva, zastav, zastavia, zastaval, zastavaj, zastavať, zostava, zastala, zastaví]
|
||||
smeh [sneh, smej, sme, steh, smer, smel, smeč, smeť, sme h]
|
||||
jok [koj, kok, joj, jol, ojok, jak, jot, tok, sok, vok, rok, lok, mok, dok, job]
|
||||
spanje [spanie]
|
||||
sanje [sane, saje, sanuje, banje]
|
||||
delo
|
||||
učenje [učenej, učene, učenie]
|
||||
umetnost [etnosti]
|
||||
gledališče [nepojedali]
|
||||
kino
|
||||
muzej [mušej, muzeálnej]
|
||||
kapela
|
||||
cerkev
|
||||
grad [grád, gard, hrad, graf, rad, grand, gram, gray, úrad, Arad]
|
||||
most
|
||||
cesta
|
||||
|
||||
Сложные слова []
|
||||
|
||||
1. Neparlamentarna [parlamentarizmus]
|
||||
2. Samozadosten [rozradostene]
|
||||
3. Nepristranski [protistranícki]
|
||||
4. Pretirano [pretrénovanosti]
|
||||
5. Nepredušno [nepriedušnosť]
|
||||
6. Nesreča []
|
||||
7. Razpršeno [zhoršenou]
|
||||
8. Nesprejemljiv [nesprejazdňujeme]
|
||||
9. Prekomeren [rekompenzovať]
|
||||
10. Prostovoljstvo [sprostredkovateľstvo]
|
||||
11. Izolirati []
|
||||
12. Trmast []
|
||||
13. Brezpogojno []
|
||||
14. Neodvisnost [neodôvodnenosti]
|
||||
15. Skupnost [ústupnosti]
|
||||
16. Neizvedljiv []
|
||||
17. Nelegitimen [nelegitimizuje]
|
||||
18. Nevzdržen []
|
||||
19. Preobremenjenost []
|
||||
20. Ogrevalni sistem []
|
||||
21. Preoblikovati [aplikovateľnosti]
|
||||
22. Nezaslišano [nezasluhujúci]
|
||||
23. Neugoden []
|
||||
24. Prezasedenost [prezamestnanosť]
|
||||
25. Nesreča []
|
||||
26. Neupravičeno [nenapraviteľnosť]
|
||||
27. Mednaroden [mŕtvonarodeným]
|
||||
28. Kompatibilnost [najkompatibilnejšom]
|
||||
29. Neuspeh [neusporte]
|
||||
30. Neobvladljiv []
|
||||
31. Neskončen [neskončenej]
|
||||
32. Neprimeren [neprimeranie]
|
||||
33. Amortizacija [amortizovaných]
|
||||
34. Koncentracija [dekoncentrácia]
|
||||
35. Cirkulacija [recirkulácia]
|
||||
36. Obremenitev [odbremenenie]
|
||||
37. Gromozanski []
|
||||
38. Simbol []
|
||||
39. Vinjeta []
|
||||
40. Digitalizacija [digitalizovaný]
|
||||
41. Funkcionalnost [funkcionalistické]
|
||||
42. Rentabilnost [nerentabilnosti]
|
||||
43. Ekshibicionizem [exhibicionizmus]
|
||||
44. Frustracija [frustrujúci]
|
||||
45. Neprilagodljiv []
|
||||
46. Severnoameriški []
|
||||
47. Ekskluzivnost []
|
||||
48. Preverjanje [preverovanej]
|
||||
49. Celoživljenjsko []
|
||||
50. Privlačnost [neprivlastňovala]
|
||||
51. Periferija [periferický]
|
||||
52. Sokrivda [dokrivkať]
|
||||
53. Kompromis [kompromisník]
|
||||
54. Strpnost [ostrovtipnosť]
|
||||
55. Racionalizacija [zracionalizovania]
|
||||
56. Birokracija [gerontokracia]
|
||||
57. Odraslost [odrastenými]
|
||||
58. Stabilnost [nestabilnosti]
|
||||
59. Nepredvidljivost [najnepredstaviteľnejšou]
|
||||
60. Razkošje []
|
||||
61. Smrtnost [úmrtnostným]
|
||||
62. Obveščenost [presvedčenosti]
|
||||
63. Produktivnost [neproduktívnosti]
|
||||
64. Neugodje []
|
||||
65. Zapletenost [zakrpatenosti]
|
||||
66. Hegemonija []
|
||||
67. Umetnost [menostatikum]
|
||||
68. Tranzicija [tranzitivita]
|
||||
69. Individualnost [individualisticky]
|
||||
70. Kontaminacija [kontaminantmi]
|
||||
71. Inkubacija []
|
||||
72. Prikrito [prikrátko]
|
||||
73. Etnični [Letničie]
|
||||
74. Sovražnost [samovražednosť]
|
||||
75. Atraktivnost [abstraktnosti]
|
||||
76. Nestrpnost [nepriestupnosti]
|
||||
77. Divergenca [divergencia]
|
||||
78. Digitalna pismenost []
|
||||
79. Stabilizacija [autostabilizácia]
|
||||
80. Raznolikost []
|
||||
|
||||
Слова с ошибками []
|
||||
|
||||
Kontamenacija [Kontaminácia]
|
||||
|
||||
Grommozanski [Grobianski]
|
||||
|
||||
Neobvladlliv [Neobkradli]
|
||||
|
||||
Neparlametarna [Neparlamentný, Parlamentárnej, Parlamentne]
|
||||
|
||||
Nevrzdržen [Združene, Zdražene]
|
||||
|
||||
voina [vonia, vina, vojna, voľna, voština]
|
||||
|
||||
muzei [muzeálni]
|
||||
|
||||
ryba
|
||||
|
||||
serebro [se rebro, se-rebro, rebro]
|
||||
|
||||
televiziia [televízia]
|
||||
210
Common/3dParty/hunspell/test/dst/sl_SI.txt
Normal file
210
Common/3dParty/hunspell/test/dst/sl_SI.txt
Normal file
@ -0,0 +1,210 @@
|
||||
Hiša
|
||||
Sonce
|
||||
Miza
|
||||
Stol
|
||||
Ptica
|
||||
Trava
|
||||
Drevo
|
||||
Noč
|
||||
Luna
|
||||
Morje
|
||||
Gora
|
||||
Cvet
|
||||
Riba
|
||||
Rdeča
|
||||
Modra
|
||||
Zelena
|
||||
Rumena
|
||||
Bela
|
||||
Črna
|
||||
Kamen
|
||||
Pes
|
||||
Mačka
|
||||
Roka
|
||||
Noga
|
||||
Glava
|
||||
Oči
|
||||
Uho
|
||||
Nos
|
||||
Usta
|
||||
Jabolko
|
||||
Hruška
|
||||
Sliva
|
||||
Jagoda
|
||||
Malina
|
||||
Lubenica
|
||||
Kruh
|
||||
Mleko
|
||||
Sir
|
||||
Mesnica
|
||||
Sadje
|
||||
Zelenjava
|
||||
Voda
|
||||
Zrak
|
||||
Ogenj
|
||||
Sneg
|
||||
Dež
|
||||
Oblak
|
||||
Veter
|
||||
Zima
|
||||
Poletje
|
||||
Jesen
|
||||
Pomlad
|
||||
Zajec
|
||||
Lisica
|
||||
Volk
|
||||
Medved
|
||||
Lev
|
||||
Tigrica
|
||||
Slon
|
||||
Konj
|
||||
Krava
|
||||
Ovca
|
||||
Piščanec
|
||||
Jajce
|
||||
Mleko
|
||||
Kava
|
||||
Čaj
|
||||
Sok
|
||||
Vino
|
||||
Pivo
|
||||
Hrana
|
||||
Pecivo
|
||||
Testo
|
||||
Marmelada
|
||||
Kruh
|
||||
Sir
|
||||
Olje
|
||||
Sol
|
||||
Poper
|
||||
Sladkor
|
||||
Kava
|
||||
Čaj
|
||||
Vino
|
||||
Pivo
|
||||
Šola
|
||||
Učitelj
|
||||
Učenec
|
||||
Knjiga
|
||||
Pisarna
|
||||
Računalnik
|
||||
Telefon
|
||||
Glasba
|
||||
Slika
|
||||
Film
|
||||
Gledališče
|
||||
Mesto
|
||||
Vas
|
||||
Trg
|
||||
Cesta
|
||||
Reka
|
||||
Avtomatizacija
|
||||
Razvoj
|
||||
Komunikacija
|
||||
Kompjuter [Juterškov]
|
||||
Programiranje
|
||||
Elektronski
|
||||
Inženiring
|
||||
Elektrifikacija
|
||||
Kombinacija
|
||||
Sistem
|
||||
Informacija
|
||||
Univerza
|
||||
Biblioteka
|
||||
Univerzitetni
|
||||
Laboratorij
|
||||
Raziskava
|
||||
Razvojna
|
||||
Inovacija
|
||||
Intelektualni
|
||||
Integriteta
|
||||
Izobraževanje
|
||||
Izvajanje
|
||||
Preverjanje
|
||||
Tehnologija
|
||||
Implementacija
|
||||
Program
|
||||
Sodelovanje
|
||||
Proizvodnja
|
||||
Industrija
|
||||
Organizacija
|
||||
Administracija
|
||||
Proaktivnost [Retroaktivnost, Produktivnosti, Produktivnost, Provokativnost]
|
||||
Kreativnost
|
||||
Projektni
|
||||
Razumevanje
|
||||
Kvaliteta
|
||||
Upravljanje
|
||||
Ocenjevanje
|
||||
Statistika
|
||||
Kompetentnost
|
||||
Konsolidacija
|
||||
Realizacija
|
||||
Kapaciteta
|
||||
Distribucija
|
||||
Kompatibilnost
|
||||
Konceptualizacija [Konceptualizem]
|
||||
Povezava
|
||||
Posodobitev
|
||||
Fleksibilnost
|
||||
Ekonomija
|
||||
Organiziranje
|
||||
Konkurenca
|
||||
Stabilnost
|
||||
Ekologija
|
||||
Osebnost
|
||||
Zavzetost
|
||||
Entuziazem [Entuziast]
|
||||
Motivacija
|
||||
Avtorizacija
|
||||
Kreacija
|
||||
Akumulacija
|
||||
Monotonija
|
||||
Diferenciacija
|
||||
Transformacija
|
||||
Koncentracija
|
||||
Inovativnost
|
||||
Aktivnost
|
||||
Vzpostavljanje
|
||||
Reorganizacija
|
||||
Kategorizacija
|
||||
Partikularnost
|
||||
Homogenost
|
||||
Izjemenost [Izjemnost, Izjemen ost, Izjemen-ost, Zmenjenosti, Izrojenost, Izmišljenost, Izrinjenost]
|
||||
Generalizacija
|
||||
Hierarhija
|
||||
Koordinacija
|
||||
Inspiracija
|
||||
Evaluacija
|
||||
Ustvarjalnost
|
||||
Oblikovanje
|
||||
Kompatibilnost
|
||||
Konkretizacija
|
||||
Proaktivnost [Retroaktivnost, Produktivnosti, Produktivnost, Provokativnost]
|
||||
Identifikacija
|
||||
Kapaciteta
|
||||
Intervencija
|
||||
Konsolidacija
|
||||
Realizacija
|
||||
Eksplozivnost
|
||||
Abstrakcija
|
||||
Individualnost
|
||||
Integracija
|
||||
Segmentacija [Sedimentacija, Sedimentacij, Argumentacija, Alimentacija]
|
||||
Asimilacija
|
||||
Artikulacija [Artikuliranja, Artikulirala, Cirkulacija, Kalkulacija]
|
||||
Kolaboracija
|
||||
Asociacija
|
||||
Stabilizacija
|
||||
Kooperacija
|
||||
Transformacija
|
||||
Hšza [Hrza]
|
||||
Kmojnikacija [Komunikacija]
|
||||
Progrramiranjee [Programiranje, Reprogramiranj, Programiranega, Programiranj]
|
||||
Elektornkski [Elektorski, Elektorkin, Elektronski, Elektorki]
|
||||
Inženeirrng [Inženiring]
|
||||
Izzobraževanjee [Izobraževanje, Izobraževanj, Izobraževanega, Izobraževane]
|
||||
Infomracija [Informacija, Informacij, Rafinacijam]
|
||||
Razvoojnaa [Razvojen]
|
||||
Proizvdonja [Proizvodnja, Proizvajanja, Proizvajanj, Proizvaja]
|
||||
Akitvnostt [Aktivnost]
|
||||
227
Common/3dParty/hunspell/test/dst/sr_Cyrl_RS.txt
Normal file
227
Common/3dParty/hunspell/test/dst/sr_Cyrl_RS.txt
Normal file
@ -0,0 +1,227 @@
|
||||
кућа
|
||||
пас
|
||||
мачка
|
||||
аутомобил
|
||||
дрво
|
||||
књига
|
||||
школа
|
||||
пријатељ
|
||||
мама
|
||||
тата
|
||||
дете
|
||||
јабука
|
||||
чоколада
|
||||
кафа
|
||||
чај
|
||||
телефон
|
||||
телевизија
|
||||
рачунар
|
||||
музика
|
||||
спорт
|
||||
здравље
|
||||
лепота
|
||||
посао
|
||||
љубав
|
||||
срећа
|
||||
време
|
||||
новац
|
||||
језик
|
||||
земља
|
||||
град
|
||||
зима
|
||||
лето
|
||||
јесен
|
||||
пролеће
|
||||
море
|
||||
планине
|
||||
језеро
|
||||
река
|
||||
парк
|
||||
животиња
|
||||
птица
|
||||
риба
|
||||
дрво
|
||||
злато
|
||||
сребро
|
||||
метал
|
||||
стакло
|
||||
ципеле
|
||||
одећа
|
||||
панталоне
|
||||
кошуља
|
||||
капа
|
||||
капут
|
||||
рука
|
||||
нога
|
||||
око
|
||||
уво
|
||||
нос
|
||||
усне
|
||||
зуб
|
||||
глава
|
||||
срце
|
||||
мозак
|
||||
краљ
|
||||
краљица
|
||||
принц
|
||||
принцеза
|
||||
дечак
|
||||
девојчица
|
||||
мушкарац
|
||||
жена
|
||||
старац
|
||||
старица
|
||||
доктор
|
||||
медицинска сестра [војномедицинска]
|
||||
наставник
|
||||
ученик
|
||||
студент
|
||||
студенткиња
|
||||
кувар
|
||||
конобар
|
||||
рат
|
||||
мир
|
||||
мапа
|
||||
застава
|
||||
смех
|
||||
плач
|
||||
сан
|
||||
сањарење
|
||||
посао
|
||||
учење
|
||||
уметност
|
||||
позориште
|
||||
биоскоп
|
||||
музеј
|
||||
црква
|
||||
дворац
|
||||
мост
|
||||
улица
|
||||
пут
|
||||
|
||||
Сложные слова [Словенства]
|
||||
|
||||
Конечно! Вот сто сложных слов на сербском языке на кириллице: []
|
||||
|
||||
1. Контраст [контрастира, контраста, контрастно, контрастна]
|
||||
2. Компликација [компликацијама, компликација, компликације]
|
||||
3. Конструкција [реконструкција, конструкцијама, конструкција, конструкцију]
|
||||
4. Диспропорција [пропорцијалном]
|
||||
5. Корелација [корелацијама, корелација]
|
||||
6. Колаборација [колаборација]
|
||||
7. Консервативан [конзервативан]
|
||||
8. Диференцијација [диференцијације, диференцијацијом, диференцијална, диференцијални]
|
||||
9. Експерименталан [експерименталним, експериментална, експериментални, експерименталне]
|
||||
10. Инвалидитет [инвалидитет]
|
||||
11. Легитиман [нелегитиман]
|
||||
12. Оптимизација [аклиматизација]
|
||||
13. Компетентан [некомпетентан, компетентан]
|
||||
14. Документација [документација, документацијом, документацију, документације]
|
||||
15. Персистентан [асистенткиња]
|
||||
16. Апроксимација [апроксимације]
|
||||
17. Екстраваганција [екстравагантност]
|
||||
18. Катастрафалан [катастрофалан]
|
||||
19. Резервација [резервација]
|
||||
20. Прогресиван [прогресиван]
|
||||
21. Идентификација [идентификација, идентификације]
|
||||
22. Генерација [регенерација, генерација]
|
||||
23. Криминалистички [криминалистички, криминалистичка, криминалистичке]
|
||||
24. Дестабилизација [индустријализација]
|
||||
25. Корумпиран [корумпирана, корумпиран]
|
||||
26. Конфронтација [контаминација]
|
||||
27. Експлозиван [експлозиван]
|
||||
28. Функционалан [функционалности]
|
||||
29. Релевантан [релевантан]
|
||||
30. Квалификација [квалификацијама, дисквалификација, квалификација]
|
||||
31. Акредитација [рехабилитација]
|
||||
32. Петиција [петицијама]
|
||||
33. Каустичан [аутистичан]
|
||||
34. Периодичан [периодичан]
|
||||
35. Контроверзан [контроверзна]
|
||||
36. Гигантски [гигантских]
|
||||
37. Принципијалан [беспринципијелан]
|
||||
38. Управоливост [расположивости]
|
||||
39. Имунизација [имунизација]
|
||||
40. Магнетичан [магнетично]
|
||||
41. Оперативан [оперативан]
|
||||
42. Десант [десантне]
|
||||
43. Хиерархија [хијерархија]
|
||||
44. Феминистички [феминистичког]
|
||||
45. Сегментација [сегментацијом]
|
||||
46. Колоритан [колорисан]
|
||||
47. Деградација [деградација]
|
||||
48. Диверзификација [диверсификацију]
|
||||
49. Казуистички [карикатуристички]
|
||||
50. Реципрочан [реципрочан]
|
||||
51. Манипулативан [манипулативна]
|
||||
52. Екстензиван [екстензивна]
|
||||
53. Колективни [колективни]
|
||||
54. Каузалитет [локалитету]
|
||||
55. Синхронизација [синхронизација]
|
||||
56. Кампања [кампањама]
|
||||
57. Товарни [товарника]
|
||||
58. Хируршки [хируршких]
|
||||
59. Шампионат [шампионати]
|
||||
60. Геостационаран [револуционарност]
|
||||
61. Опустошан [опустошености]
|
||||
62. Клема []
|
||||
63. Стационарни [стационарна]
|
||||
64. Секуларни [секуларних]
|
||||
65. Исегментација [сегментацијом]
|
||||
66. Дебелина [дебелића]
|
||||
67. Прецизан [непрецизан]
|
||||
68. Рафиниран [рафинирани]
|
||||
69. Психолошки [психолошких, психолошки]
|
||||
70. Турбулентан [корпулентан]
|
||||
71. Интегритет [интегритет]
|
||||
72. Идеолошки [идеолошких]
|
||||
73. Манифестација [манифестација]
|
||||
74. Имплицитан [имплицитан]
|
||||
75. Хомогеност [хомогеност]
|
||||
76. Изолација [хидроизолација]
|
||||
77. Хетерогеност []
|
||||
78. Спекулативан [спекулативна]
|
||||
79. Вагу [превагу]
|
||||
80. Математички [математичким, математички]
|
||||
81. Гематолошки [стоматолошки]
|
||||
82. Психијатријски [психијатријске]
|
||||
83. Блокада [блокадама]
|
||||
84. Заплена [заплетена]
|
||||
85. Монопол [монополом]
|
||||
86. Дисидент [дисидентски]
|
||||
87. Екстрадиција [екстрадиција]
|
||||
88. Ревизија [ревизијама]
|
||||
89. Ваидан []
|
||||
90. Колонизација [колонизација]
|
||||
91. Мотивација [мотивација]
|
||||
92. Просек [просектор]
|
||||
93. Ресурс [ресурсу]
|
||||
94. Хуманизам [хуманизам]
|
||||
95. Дравски [Подравских]
|
||||
96. Коалиција [коалиција]
|
||||
97. Картеля [картелима]
|
||||
98. Резолуција [резолуција]
|
||||
99. Менталитет [менталитет]
|
||||
100. Епидемиологија [дијалектологија]
|
||||
|
||||
С ошибками []
|
||||
|
||||
Колонизакаија [Колонизација, Колонизацији, Колонијализам, Колонијализма]
|
||||
|
||||
Епидемиогија [Епидемија, Епидемијом, Демагогија]
|
||||
|
||||
Казуистикаки [Казуистика, Казуистике, Статистика]
|
||||
|
||||
Хуманкзам [Хуманизам, Хуманизма]
|
||||
|
||||
Манитулативан [Манипулативна, Ултимативан, Ултимативни]
|
||||
|
||||
сањваење [сањање]
|
||||
|
||||
утење [хтење, утање, стење, умење, утеше, утече, учење, утехе, утеже, уђење, утезање]
|
||||
|
||||
автомобил [аутомобил, обилатом]
|
||||
|
||||
мекицинска сестра [војномедицинска]
|
||||
|
||||
стукло [стукли, тукло, стукла, стакло, стекло, свукло]
|
||||
173
Common/3dParty/hunspell/test/dst/sr_Latn_RS.txt
Normal file
173
Common/3dParty/hunspell/test/dst/sr_Latn_RS.txt
Normal file
@ -0,0 +1,173 @@
|
||||
ananas
|
||||
anarhistički
|
||||
antidepresiv [depresivan, depresivna, represivan, depresivne]
|
||||
Anđeo
|
||||
avion
|
||||
banana
|
||||
banka
|
||||
belina
|
||||
bespomoćnost
|
||||
bibliotekar
|
||||
bibliaoteikar [bibliotekarka, bibliotekar, biblioteka]
|
||||
brod
|
||||
citat
|
||||
crkva
|
||||
cvet
|
||||
cveće
|
||||
demokratija
|
||||
demackratija [demokratija, demokratizacija, demokratiji, demokratije]
|
||||
demokratizacija
|
||||
Dobrota
|
||||
dom
|
||||
Dragi
|
||||
ekran
|
||||
eksperimentalni
|
||||
eksplozija
|
||||
epidemiologija [epistemologija, ideologija]
|
||||
farmakologija
|
||||
filantropija
|
||||
flaša
|
||||
frizura
|
||||
fudbal [fudbal, fudbala, fudbalu]
|
||||
garaža
|
||||
generalitet
|
||||
geografski
|
||||
globalizam
|
||||
gnezdo
|
||||
grad
|
||||
građanstvo
|
||||
grlo
|
||||
hamburger
|
||||
Harmonija
|
||||
himalaji [Himalaji, malajski]
|
||||
hiperbola
|
||||
hipotermija [hidroterapija]
|
||||
hleb
|
||||
Hrabrost
|
||||
hrana [hrana]
|
||||
Hvala
|
||||
igra
|
||||
igračka
|
||||
individualnost
|
||||
infrastruktura
|
||||
internet
|
||||
inmternet [internet, interne]
|
||||
jabuka
|
||||
jahač
|
||||
jastuk
|
||||
jednakost
|
||||
jubilej
|
||||
jurisprudencija
|
||||
kafa
|
||||
krevet
|
||||
kriminalisticki [kriminalistički, kriminalistika, kriminalistička, kriminalistiku, kriminalističke]
|
||||
kriminalistika
|
||||
kuća
|
||||
kvantitativni
|
||||
lampa
|
||||
latiaratura [mlatarati, rasturati, maturirala, landarati]
|
||||
Lepota
|
||||
lingvistika
|
||||
literatura
|
||||
ljubav
|
||||
Ljubavi
|
||||
ljubavnica
|
||||
Ljubazan
|
||||
Ljubim
|
||||
lubenica
|
||||
majica
|
||||
majka
|
||||
mašina
|
||||
mikroorganizama
|
||||
mikroskopija [mikroskop ija, mikroskop-ija, mikroskopi ja, mikroskopi-ja, mikroskopi, mikroskopska, mikroskopa, mikroskopski]
|
||||
Milost
|
||||
Mir
|
||||
Mirno
|
||||
nacionalizam
|
||||
nedopustiv
|
||||
neurologija
|
||||
novčanik
|
||||
noć
|
||||
nož
|
||||
oktobar
|
||||
okultizam
|
||||
optimističan [optimistička, optimistički, optimističke, optimističku]
|
||||
optimističnost [optimistički, optimističke, optimistička, optimističku]
|
||||
ormar
|
||||
Osoba
|
||||
oči
|
||||
pas
|
||||
peškir
|
||||
planina [planina, planinar, planinac, planinčina, planini, planinčini, planin]
|
||||
poniženje
|
||||
Porodica
|
||||
Prijatelj
|
||||
psihologija
|
||||
psihoterapija
|
||||
Radost
|
||||
računar
|
||||
reka
|
||||
rekonvalescencija
|
||||
reumatologija [dermatologija, hematologija, stomatologija]
|
||||
revolucija
|
||||
sendvič
|
||||
Slatko
|
||||
Sloboda
|
||||
Slobodan
|
||||
Snaga
|
||||
socijalizacija [socijalizam, specijalizacija, specijalizacijom, socijalizma]
|
||||
socijalizam
|
||||
Spreman
|
||||
Sreća
|
||||
Srećan
|
||||
Srećno
|
||||
sunce
|
||||
superiornost
|
||||
Svetlost
|
||||
tata
|
||||
tehnologija
|
||||
telefon
|
||||
telekomunikacije
|
||||
top
|
||||
tradicionalni
|
||||
ulica
|
||||
univerzalnost
|
||||
univerzitet
|
||||
univirzdalnost [univerzalnost]
|
||||
Usmena
|
||||
Znanje
|
||||
usta
|
||||
Vedar
|
||||
vegetarijanstvo
|
||||
velikodušnost
|
||||
voda
|
||||
voz
|
||||
Zabava
|
||||
zavisnost
|
||||
Zdravlje
|
||||
zemlja
|
||||
Zima
|
||||
zjmlja [zemlja]
|
||||
zločinački
|
||||
zoološki
|
||||
Zvezda
|
||||
ćilim
|
||||
čarapa
|
||||
čarobnjak
|
||||
časopis
|
||||
čizme
|
||||
đak
|
||||
đevrek
|
||||
đumbir
|
||||
šešir
|
||||
šišmiš
|
||||
škola
|
||||
šljiva
|
||||
šuma
|
||||
žaba
|
||||
ženskara
|
||||
žirafa
|
||||
život
|
||||
životinjski
|
||||
žurka
|
||||
|
||||
210
Common/3dParty/hunspell/test/dst/sv_SE.txt
Normal file
210
Common/3dParty/hunspell/test/dst/sv_SE.txt
Normal file
@ -0,0 +1,210 @@
|
||||
Hus
|
||||
Sol
|
||||
Mjölk
|
||||
Vatten
|
||||
Fisk
|
||||
Stol
|
||||
Grön
|
||||
Blomma
|
||||
Träd
|
||||
Katt
|
||||
Hund
|
||||
Bok
|
||||
Cykel
|
||||
Kaffe
|
||||
Frukt
|
||||
Kött
|
||||
Fönster
|
||||
Dörr
|
||||
Säng
|
||||
Lampa
|
||||
Bord
|
||||
Hår
|
||||
Ögon
|
||||
Hand
|
||||
Fötter
|
||||
Näsa
|
||||
Mun
|
||||
Öra
|
||||
Huvud
|
||||
Arm
|
||||
Ben
|
||||
Kläder
|
||||
Hatt
|
||||
Skor
|
||||
Väska
|
||||
Papper
|
||||
Penna
|
||||
Skrivbord
|
||||
Telefon
|
||||
Radio
|
||||
Musik
|
||||
Film
|
||||
Teater
|
||||
Konst
|
||||
Sport
|
||||
Spel
|
||||
Resa
|
||||
Bil
|
||||
Tåg
|
||||
Buss
|
||||
Flygplan
|
||||
Båt
|
||||
Stad
|
||||
Land
|
||||
Hav
|
||||
Sjö
|
||||
Flod
|
||||
Berg
|
||||
Dal
|
||||
Park
|
||||
Skog
|
||||
Sjukhus
|
||||
Apotek
|
||||
Skola
|
||||
Universitet
|
||||
Affär
|
||||
Restaurang
|
||||
Café
|
||||
Hotell
|
||||
Turist
|
||||
Vän
|
||||
Familj
|
||||
Mamma
|
||||
Pappa
|
||||
Bror
|
||||
Syster
|
||||
Barn
|
||||
Morfar
|
||||
Mormor
|
||||
Vänster
|
||||
Höger
|
||||
Framåt
|
||||
Bakåt
|
||||
Upp
|
||||
Ner
|
||||
Snäll
|
||||
Osnäll [Snäll, Osäll]
|
||||
Glad
|
||||
Ledsen
|
||||
Trött
|
||||
Stark
|
||||
Svag
|
||||
Tyst
|
||||
Bullrig
|
||||
Ren
|
||||
Smutsig
|
||||
Vacker
|
||||
Ful
|
||||
Liten
|
||||
Stor
|
||||
Komplexitet
|
||||
Oproportionerlig
|
||||
Ovillkorlig
|
||||
Efterklokhet
|
||||
Komplicerad
|
||||
Desorientering
|
||||
Konstellation
|
||||
Otillgänglighet
|
||||
Irreversibel
|
||||
Förlåtelse
|
||||
Overksamhet
|
||||
Indifferent
|
||||
Hierarki
|
||||
Kombinatorik [Kombinatorisk, Kombination]
|
||||
Inkompatibilitet
|
||||
Absorption
|
||||
Konsekvens
|
||||
Verklighetsfrånvänd
|
||||
Retrospektiv
|
||||
Förändringsbarhet [Förändringsbarnet, Förhandlingsbart, Förhandlingsbar]
|
||||
Ambivalens
|
||||
Besvikenhet [Besviken, Besviket]
|
||||
Ineffektivitet
|
||||
Intrikat
|
||||
Dilemma
|
||||
Hesitation
|
||||
Absurditet
|
||||
Kompromisslös
|
||||
Konsolidering
|
||||
Föresats
|
||||
Tillfredsställelse
|
||||
Delegering
|
||||
Rekommendation
|
||||
Detaljrikedom
|
||||
Oanvändbar
|
||||
Stagnation
|
||||
Nostalgi
|
||||
Hemlighetsfull
|
||||
Avsaknad
|
||||
Perseverans [Perseverera, Reverseras, Reversera]
|
||||
Existentialism
|
||||
Repetitivitet [Repetitivt, Receptivitet, Repetitiv, Representativitet]
|
||||
Intolerans
|
||||
Anonymitet
|
||||
Obetydlig
|
||||
Paradox
|
||||
Förvirring
|
||||
Juxtaposition
|
||||
Reflektion
|
||||
Självständighet
|
||||
Kollision
|
||||
Kreativitet
|
||||
Djupgående
|
||||
Abstraktion
|
||||
Eufori
|
||||
Autentisk
|
||||
Insinuation
|
||||
Omöjlig
|
||||
Pessimism
|
||||
Inkonsekvens
|
||||
Revisionism
|
||||
Sensationell
|
||||
Obeveklig
|
||||
Subjektivitet
|
||||
Universalitet
|
||||
Entropi
|
||||
Omvälvande
|
||||
Infiltration
|
||||
Konservativ
|
||||
Atypisk
|
||||
Provokation
|
||||
Konfrontation
|
||||
Anarki
|
||||
Konkurrenskraft
|
||||
Defensivitet [Defensivt, Sensitivitet, Defensiv, Densitet]
|
||||
Nihilism
|
||||
Konklusion
|
||||
Apori [Apor, Apors, Porig]
|
||||
Korrespondens
|
||||
Prioritering
|
||||
Exponentiell
|
||||
Fragmentering
|
||||
Aversion
|
||||
Harmoni
|
||||
Vanmakt
|
||||
Signifikans
|
||||
Katalysator
|
||||
Förlust
|
||||
Enhällighet
|
||||
Ambition
|
||||
Tendens
|
||||
Alienation
|
||||
Artificiell
|
||||
Uppfyllelse
|
||||
Psykosomatisk
|
||||
Virtuos
|
||||
Egensinnig
|
||||
Anpassning
|
||||
Hållbarhet
|
||||
Konstitution
|
||||
Kompleksitet [Komplexitet, Komplementet]
|
||||
Oproporsjonerlig [Oproportionerlig, Proportionerlig]
|
||||
Uvilkorlig [Villkorlig]
|
||||
Etterklokhed [Efterklok]
|
||||
Komplisert [Komplicerat]
|
||||
Desorientering
|
||||
Konstelasjon [Konstellation]
|
||||
Utilgjengelighet [Tillgänglighet]
|
||||
Irreversibel
|
||||
Forlatelse [Förlåtelse]
|
||||
205
Common/3dParty/hunspell/test/dst/tr_TR.txt
Normal file
205
Common/3dParty/hunspell/test/dst/tr_TR.txt
Normal file
@ -0,0 +1,205 @@
|
||||
Akşam
|
||||
Almak
|
||||
Altın
|
||||
Anahtar
|
||||
Anlamak
|
||||
Araba
|
||||
Atmak
|
||||
Ayakkabı
|
||||
Açmak
|
||||
Ağaç
|
||||
Bahçe
|
||||
Bakır
|
||||
Bakkal
|
||||
Bakmak
|
||||
Balık
|
||||
Beyaz
|
||||
Bilgisayar
|
||||
Bilmek
|
||||
Binmek
|
||||
Bulmak
|
||||
Ceket
|
||||
Cevaplamak
|
||||
Deniz
|
||||
Dinlemek
|
||||
Doktor
|
||||
Duyurulmamış
|
||||
Düzenleştirme
|
||||
Düşmek
|
||||
Düşünmek
|
||||
Ekmek
|
||||
Elbise
|
||||
Eldiven
|
||||
Elma
|
||||
Erkek
|
||||
Etek
|
||||
Etmek
|
||||
Ev
|
||||
Eşarp
|
||||
Gelgit
|
||||
Geliştiricilikle
|
||||
Geliştirilebilir
|
||||
Geliştirme
|
||||
Gerçekleştirme
|
||||
Gezmek
|
||||
Geçmek
|
||||
Gitar
|
||||
Gitmek
|
||||
Giymek
|
||||
Gri
|
||||
Gömlek
|
||||
Görülebilirlik
|
||||
Görünümlü
|
||||
Görünüşlü
|
||||
Gözlük
|
||||
Gümüş
|
||||
Günaydın
|
||||
Hareketlendi
|
||||
Hareketlilik
|
||||
Hava
|
||||
Hayalperest
|
||||
Hüzün
|
||||
Kahve
|
||||
Kahverengi
|
||||
Kalabalıklar
|
||||
Kalem
|
||||
Kalkmak
|
||||
Kalmak
|
||||
Kapatmak
|
||||
Kararlılık
|
||||
Kararlılıkla
|
||||
Kararsızlık
|
||||
Kararsızlıkla
|
||||
Karpuz
|
||||
Kedi
|
||||
Kemer
|
||||
Kemdkcer [Kemerler]
|
||||
Kırmızı
|
||||
Kitap
|
||||
Kız
|
||||
Kızgınmak [Kızgın]
|
||||
Koklamak
|
||||
Koalye [Kolye, Kavalye]
|
||||
Kolye
|
||||
Konservatuvar
|
||||
Konuşmak
|
||||
Korkmak
|
||||
Koymak
|
||||
Koşmak
|
||||
Kravat
|
||||
Kullanılabilir
|
||||
Kullanılmış
|
||||
Kullanılmışlık
|
||||
Kullanışlılık
|
||||
Kurumsallaşma
|
||||
Köpek
|
||||
Küpe
|
||||
Kütüphane
|
||||
Mavi
|
||||
Mazbut
|
||||
Melankoli
|
||||
Merdiven
|
||||
Merhaba
|
||||
Merhabalar
|
||||
Meurhaba [Merhaba, Murabaha]
|
||||
Meydan
|
||||
Meyhane
|
||||
Meyve
|
||||
Mor
|
||||
Muhafazakar
|
||||
Muhteşem
|
||||
Mukadderatlarınızdanmışçasına []
|
||||
Muvaffak
|
||||
Muzaffer
|
||||
Muzafferiyet
|
||||
Muzip
|
||||
Mükemmeldik
|
||||
Münasebet
|
||||
Münzevi
|
||||
Müsrif
|
||||
Mütevazi
|
||||
Müteessir
|
||||
Mütercim
|
||||
Mütereddit
|
||||
Mütevazı
|
||||
Müzmin
|
||||
Okul
|
||||
Okumak
|
||||
Otobüs
|
||||
Otoriterlik
|
||||
Oynamak
|
||||
Pantolon
|
||||
Pasta
|
||||
Pembe
|
||||
Pembei [Pembe, Pembeyi, Pembeli, Pembeci, Pembe i, Pembesi, Pemben]
|
||||
Plaj
|
||||
Platin
|
||||
Saat
|
||||
Sandalye
|
||||
Sarı
|
||||
Satmak
|
||||
Sevinmek
|
||||
Sevmek
|
||||
Sıcak
|
||||
Sıradaymışız
|
||||
Siyah
|
||||
Sormak
|
||||
Soymak
|
||||
Soğuk
|
||||
Su
|
||||
Sükûnet [Sükunet, Sünnet]
|
||||
Sürrealist
|
||||
Süt
|
||||
Tabak
|
||||
Tadına bakmak [Alınamamaktadır]
|
||||
Tatlı
|
||||
Tavuk
|
||||
Telefoncu
|
||||
Televizyon
|
||||
Temizlemek
|
||||
Teşekkürler
|
||||
Türkuaz
|
||||
Tuirkuazu [Türkuaz]
|
||||
Turuncu
|
||||
Tutmak
|
||||
Ulaştırılabilir
|
||||
Uygulanabilir
|
||||
Uyumak
|
||||
Uçak
|
||||
Yapmak
|
||||
Yatak
|
||||
Yazmak
|
||||
Yemek
|
||||
Yeşil
|
||||
Yıkanmak
|
||||
Yıldız
|
||||
Yol
|
||||
Yöneltilmezken
|
||||
Yüzme
|
||||
Yüzük
|
||||
Zenginleştirmek
|
||||
Çalışamamıştı
|
||||
Çalışmak
|
||||
Çalışmamıştır
|
||||
Çanta
|
||||
Çay
|
||||
Çıkarmak
|
||||
Çiçek
|
||||
Çorap
|
||||
Özelleştirilmiş
|
||||
Özelleştirme
|
||||
Özgürleştirme
|
||||
Üzülmek
|
||||
İnmek
|
||||
İsteksizlik
|
||||
İsteksizlikle
|
||||
İstikrarlı
|
||||
İstikrarlılık
|
||||
İstisnai
|
||||
İslamiyetle
|
||||
İzlemek
|
||||
İçmek
|
||||
İşbirliği
|
||||
İşitmek
|
||||
Şapka
|
||||
Şemsiye
|
||||
210
Common/3dParty/hunspell/test/dst/uk_UA.txt
Normal file
210
Common/3dParty/hunspell/test/dst/uk_UA.txt
Normal file
@ -0,0 +1,210 @@
|
||||
абдукція
|
||||
абіогенез
|
||||
амбівалентнасть [амбівалентність, амбівалентний, бівалентність, біоеквівалентність, внівалентність]
|
||||
амбівалентність
|
||||
анахранізм [анахронізм, брахманізм, анархізм, нанізм]
|
||||
анахронізм
|
||||
антропогенез
|
||||
антропологія
|
||||
антропоморфізм
|
||||
апатія
|
||||
археологія
|
||||
архетип
|
||||
аскетизм
|
||||
астрономія
|
||||
афект
|
||||
бачити
|
||||
бігти
|
||||
білий
|
||||
біллий [білий, збілілий]
|
||||
біологія
|
||||
бувай
|
||||
будинок
|
||||
будь ласка [будь ласку]
|
||||
бути
|
||||
важко
|
||||
велиикий [великий, великоокий]
|
||||
великий
|
||||
веселка
|
||||
взяти
|
||||
вибачте
|
||||
відчувати
|
||||
вода
|
||||
волюнтаризм
|
||||
втаємниченість
|
||||
вчитися
|
||||
гарний
|
||||
гарячий
|
||||
гегемонія
|
||||
географія
|
||||
герменевтика
|
||||
герменевтика
|
||||
гештальт [штатгальтер]
|
||||
говорити
|
||||
гойдалка
|
||||
готувати
|
||||
грати
|
||||
дати
|
||||
дедукція
|
||||
деконструктивізм [де конструктивізм, де-конструктивізм, конструктивізм, неконструктивно]
|
||||
деконструкція
|
||||
демаркація
|
||||
детермінізм
|
||||
дзвіночок
|
||||
дивитися
|
||||
дисгарммонія [дисгармонія, дисгармоніям, дисгармонійний, фісгармонія]
|
||||
дисгармонія
|
||||
дисфункція
|
||||
дисфункця [дисфункція, дистинкція]
|
||||
дихотомія
|
||||
до побачення [побачення]
|
||||
добрий
|
||||
доктрина
|
||||
думати
|
||||
дурний
|
||||
дурня
|
||||
дякую
|
||||
евфемізм
|
||||
езотерика
|
||||
ей
|
||||
екзистенціалізм
|
||||
екзистенціалізм
|
||||
екзистенцілізм [екзистенціалізм, екзистенціаліст, екзистенція]
|
||||
екзистенція
|
||||
економіка
|
||||
емерджентність
|
||||
ентелехія
|
||||
епістемологія
|
||||
ефемерність
|
||||
ефемерність
|
||||
занепадництво
|
||||
звісно
|
||||
здоровий
|
||||
зелений
|
||||
йти
|
||||
ілюзорність
|
||||
ілюзорність
|
||||
імплікація
|
||||
інвектива
|
||||
індукція
|
||||
інтроспекціїя [інтроспекції, інтроспекція, інтроспекції я, ретроспекція]
|
||||
їсти
|
||||
історія
|
||||
каблучка
|
||||
кава
|
||||
казус
|
||||
калюжа
|
||||
катарсис
|
||||
каченя
|
||||
каштани
|
||||
квітка
|
||||
кішка
|
||||
класно
|
||||
книга
|
||||
когнітивістика [когнітивність, когнітивна]
|
||||
комаха
|
||||
консенсус
|
||||
космогенез [номогенез, екогенез]
|
||||
купувати
|
||||
легко
|
||||
лінгвістика
|
||||
літати
|
||||
маленький
|
||||
марнослів'я
|
||||
математика
|
||||
мати
|
||||
метаморфоза
|
||||
метелик
|
||||
метелиця
|
||||
містифікація
|
||||
місто
|
||||
могти
|
||||
можливо
|
||||
мусити
|
||||
насправді
|
||||
не радий [нерадий, незрадний]
|
||||
незворушність
|
||||
ні
|
||||
нігілізм
|
||||
новий
|
||||
нонсенс
|
||||
ностальгія
|
||||
павучок
|
||||
парадокс
|
||||
пес
|
||||
писати
|
||||
пити
|
||||
піти
|
||||
плавати
|
||||
плакати
|
||||
повільний
|
||||
поганий
|
||||
політологія
|
||||
постмодернізм
|
||||
потворний
|
||||
працювати
|
||||
привіт
|
||||
прийти
|
||||
психоаналіз
|
||||
птах
|
||||
радий
|
||||
ремінісценція
|
||||
рефлексія
|
||||
робити
|
||||
розбурхання [розбухання, розбурханий, розпухання, бурхання]
|
||||
розумний
|
||||
сильний
|
||||
сингулярність
|
||||
синестезія [кінестезія, анестезія]
|
||||
синій
|
||||
синішй [синій, синішай, синішати]
|
||||
синкретизм
|
||||
сказати
|
||||
скатертина
|
||||
слабкий
|
||||
слухати
|
||||
сміятися
|
||||
сніг
|
||||
соліпсизм
|
||||
соломинка
|
||||
сонечко
|
||||
сонце
|
||||
соціологія
|
||||
спати
|
||||
співати
|
||||
справді
|
||||
старий
|
||||
структуралізм
|
||||
сумний
|
||||
так
|
||||
так
|
||||
танцювати
|
||||
телефонувати
|
||||
тож
|
||||
трансцендентність
|
||||
фантастично
|
||||
фаталізм
|
||||
фемінізм
|
||||
феномен
|
||||
феноменологія
|
||||
фізика
|
||||
філософія
|
||||
фрактал
|
||||
хворий
|
||||
хімія
|
||||
хліб
|
||||
хліб
|
||||
ходити
|
||||
холодний
|
||||
хотіти
|
||||
чао [чадо, чан, чат, чар, час, чад, дао, чаш, чай, чаї, чаю]
|
||||
червонй [червоний, червоній, червоно, червона, червоні, червону, червоне, червоню, червонявий]
|
||||
червоний
|
||||
черевики
|
||||
читати
|
||||
чорнй [чорний, чорній, чорно, чорна, чорни, чорні, чорну, чорне, чорню]
|
||||
чорний
|
||||
чути
|
||||
швидкий
|
||||
щасливий
|
||||
яблуко
|
||||
262
Common/3dParty/hunspell/test/dst/uz_Cyrl_UZ.txt
Normal file
262
Common/3dParty/hunspell/test/dst/uz_Cyrl_UZ.txt
Normal file
@ -0,0 +1,262 @@
|
||||
Mарт [Арт, Ғарт, Қарт, Карт, Шарт, Фарт, Варт, Парт, Сарт, Март]
|
||||
Ёз
|
||||
Ём
|
||||
Ёхуд
|
||||
Август
|
||||
Адвакат [Адвокат, Адэкват]
|
||||
Адреси
|
||||
айтган-лирангиз
|
||||
айқин
|
||||
амалга
|
||||
анча
|
||||
Апрел
|
||||
арзонроқ
|
||||
аҳамият [аҳамият, аҳамияти, ҳамият, ҳамжамият]
|
||||
аҳднома
|
||||
бажарилади
|
||||
бажарилди
|
||||
баланд
|
||||
ихтисослан
|
||||
банкрот
|
||||
баҳона
|
||||
Баҳор
|
||||
бераман
|
||||
берасизми
|
||||
беринг
|
||||
бериш
|
||||
бешинчи
|
||||
биз
|
||||
Бизга
|
||||
Бизнинг
|
||||
билан [билан, биланг, билани]
|
||||
Бирор
|
||||
Бозорнинг
|
||||
бор
|
||||
бошқа
|
||||
Бу
|
||||
Бугун
|
||||
будингиз
|
||||
бунга
|
||||
бундай
|
||||
Бухгалтерлик
|
||||
бўлади
|
||||
бўладими
|
||||
бўлиши
|
||||
бўлмаган
|
||||
бўлса
|
||||
бўш
|
||||
бўшайди
|
||||
бўшатасиз
|
||||
вазифасига
|
||||
вазият
|
||||
вариант
|
||||
вақт
|
||||
газетадаги
|
||||
газетадан
|
||||
даромад
|
||||
Декабрь
|
||||
Душанба
|
||||
Эрталаб
|
||||
Етказиб
|
||||
Жисмоний
|
||||
Жуда
|
||||
Жума
|
||||
зарур
|
||||
зиёфат
|
||||
Ижара
|
||||
ижарага
|
||||
икки
|
||||
Илтимос
|
||||
Индинга
|
||||
информатизациялари
|
||||
Иситгич
|
||||
иши
|
||||
ишлатсак
|
||||
Ишхона
|
||||
Июль
|
||||
Июнь
|
||||
Йўқ
|
||||
йил
|
||||
йилдан
|
||||
кам
|
||||
Шинамгина
|
||||
кампанияси
|
||||
келдим
|
||||
келишимдан
|
||||
келмоқчи
|
||||
келсам
|
||||
келтириш
|
||||
керак
|
||||
керакдир
|
||||
керакми
|
||||
кета-ди [кетади, кетарди, кета-чи, кета-кета, дискета]
|
||||
кеч
|
||||
Кеча
|
||||
кечага
|
||||
Кечаси
|
||||
Кечир
|
||||
Кечирдинг
|
||||
кирла
|
||||
кирадими
|
||||
кондиционер
|
||||
коррупциядир
|
||||
кран
|
||||
Куз
|
||||
Кун
|
||||
куни
|
||||
кўрмоқчи
|
||||
кўчиб
|
||||
лойиҳа
|
||||
Май
|
||||
маълумоти
|
||||
маълумотларни
|
||||
Маъмурият
|
||||
маъруза
|
||||
Мен
|
||||
музлатгич
|
||||
мумкин
|
||||
муфмкин [мумкин]
|
||||
мутахассис
|
||||
мушовир
|
||||
муҳим
|
||||
нарса
|
||||
нархи
|
||||
Нархини
|
||||
нақд
|
||||
ўшанақасини
|
||||
неча
|
||||
Номардлик
|
||||
Ноябри
|
||||
интернетдаги
|
||||
ойнаси
|
||||
ойнинг
|
||||
Октябри
|
||||
олдин
|
||||
олдиндан
|
||||
олмаймиз
|
||||
олмоқчи
|
||||
орқали
|
||||
шоти
|
||||
шорти [шоти, орти, ортиш, шотир, корти, форти, шарти, порти, сорти, ширти, торти, борти, шомурти]
|
||||
Оқшом
|
||||
пайдо
|
||||
Панжшанба
|
||||
пулини
|
||||
Раҳмат
|
||||
резюме
|
||||
реклама
|
||||
Салом
|
||||
Сармоядор
|
||||
Сентябрь
|
||||
Сешанба
|
||||
Сиз
|
||||
сизга
|
||||
сизда
|
||||
Сизнинг
|
||||
синган
|
||||
сифатида
|
||||
совуқ
|
||||
софвуқ [совуқ]
|
||||
Солиқларни
|
||||
Статистик
|
||||
сўм
|
||||
тажрибали
|
||||
тайёргарлик
|
||||
тайёрладик
|
||||
тайёрладингизми
|
||||
таклиф
|
||||
талафот
|
||||
талафоти
|
||||
таъминловчилардан
|
||||
танишинг
|
||||
таржимон
|
||||
тарржимон [таржимон, тарраксимон]
|
||||
тахминан
|
||||
ташкил
|
||||
Телефонни
|
||||
технология
|
||||
Безантирани
|
||||
тозалан
|
||||
тозалигига [тозалигига, газтозалагич]
|
||||
Тонгда
|
||||
топширишимиз
|
||||
топшириқ
|
||||
турли
|
||||
турмоқчи
|
||||
тутсак
|
||||
Тушлик
|
||||
ўладиганингиз
|
||||
тўлай
|
||||
тўлаймиз
|
||||
тилдиришинг
|
||||
тўлиқ
|
||||
уйингиз
|
||||
уйни
|
||||
уч
|
||||
учун
|
||||
ўқидим
|
||||
фақат
|
||||
Феврал
|
||||
хабар
|
||||
Хайрли кун [Хайрли кўн]
|
||||
Мотамхонаси
|
||||
хонлик
|
||||
Чек
|
||||
Чоршанба
|
||||
Шанба
|
||||
шарт-номани
|
||||
шартини
|
||||
шартлар
|
||||
шартлари
|
||||
шартни
|
||||
шартнома
|
||||
шахс
|
||||
шовқин
|
||||
Шом
|
||||
Шу
|
||||
эди
|
||||
Эртага
|
||||
Эртадан сўнг [Эртасиганг]
|
||||
Эшитишимга
|
||||
эълон
|
||||
эълонингиз
|
||||
эълонингизни
|
||||
эътироф
|
||||
Юклаш
|
||||
Якшанба
|
||||
Январи
|
||||
Ярим кеча [Яримкеча, Яримчиликча]
|
||||
яхши
|
||||
қабул
|
||||
қаерда
|
||||
Қанақа
|
||||
қаноатманда
|
||||
қанча
|
||||
қачон
|
||||
қизиқарлидир
|
||||
қиламиз
|
||||
қилганим [қилганим, қилганими, қилгандайин]
|
||||
қилдим
|
||||
қилинг
|
||||
қилинди
|
||||
қилишди
|
||||
қиммат
|
||||
қиммати
|
||||
Қимматидан
|
||||
қирқ
|
||||
Қиш
|
||||
қувонарлими
|
||||
қўнғироқ
|
||||
Қўшимча
|
||||
ҳайвонини
|
||||
ҳам
|
||||
ҳамза
|
||||
Ҳар
|
||||
ҳафтага
|
||||
ҳақиқатан
|
||||
ҳисоблаб
|
||||
Ҳозир
|
||||
ҳужжатни
|
||||
Ўтган кун [Ўтган кўн]
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user