metaemoji xcode project added, added hack to qt to fix window system handle

This commit is contained in:
John Preston 2014-06-20 13:49:22 +04:00
parent e0a364dd0f
commit bfe1ca92b8
6 changed files with 101 additions and 42 deletions

View File

@ -599,6 +599,7 @@
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0; DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.0.0;
@ -633,7 +634,7 @@
"/usr/local/Qt-5.3.0/plugins/imageformats", "/usr/local/Qt-5.3.0/plugins/imageformats",
); );
MACOSX_DEPLOYMENT_TARGET = 10.7; MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ../Mac/DebugIntermediateLang/; OBJROOT = ./../Mac/ReleaseIntermediateLang;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"-pipe", "-pipe",
"-g", "-g",
@ -669,7 +670,7 @@
PRODUCT_NAME = MetaLang; PRODUCT_NAME = MetaLang;
QT_LIBRARY_SUFFIX = ""; QT_LIBRARY_SUFFIX = "";
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ../Mac/ReleaseLang; SYMROOT = ./../Mac;
}; };
name = Release; name = Release;
}; };
@ -683,6 +684,7 @@
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0; DYLIB_COMPATIBILITY_VERSION = 1.0;
@ -719,7 +721,7 @@
"/usr/local/Qt-5.3.0/plugins/imageformats", "/usr/local/Qt-5.3.0/plugins/imageformats",
); );
MACOSX_DEPLOYMENT_TARGET = 10.7; MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ../Mac/DebugIntermediateLang/; OBJROOT = ./../Mac/DebugIntermediateLang;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"-pipe", "-pipe",
@ -756,7 +758,7 @@
PRODUCT_NAME = MetaLang; PRODUCT_NAME = MetaLang;
QT_LIBRARY_SUFFIX = _debug; QT_LIBRARY_SUFFIX = _debug;
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ../Mac/DebugLang; SYMROOT = ./../Mac;
}; };
name = Debug; name = Debug;
}; };
@ -764,7 +766,6 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
@ -779,11 +780,9 @@
"/usr/local/Qt-5.3.0/mkspecs/macx-clang", "/usr/local/Qt-5.3.0/mkspecs/macx-clang",
); );
INSTALL_DIR = ../Mac/ReleaseLang/; INSTALL_DIR = ../Mac/ReleaseLang/;
OBJROOT = ../Mac/ReleaseIntermediateLang;
PRODUCT_NAME = MetaLang; PRODUCT_NAME = MetaLang;
QT_LIBRARY_SUFFIX = ""; QT_LIBRARY_SUFFIX = "";
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ./../Mac;
}; };
name = Release; name = Release;
}; };
@ -791,7 +790,6 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
@ -808,11 +806,9 @@
"/usr/local/Qt-5.3.0/mkspecs/macx-clang", "/usr/local/Qt-5.3.0/mkspecs/macx-clang",
); );
INSTALL_DIR = ../Mac/DebugLang/; INSTALL_DIR = ../Mac/DebugLang/;
OBJROOT = ../Mac/DebugIntermediateLang;
PRODUCT_NAME = MetaLang; PRODUCT_NAME = MetaLang;
QT_LIBRARY_SUFFIX = _debug; QT_LIBRARY_SUFFIX = _debug;
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ./../Mac;
}; };
name = Debug; name = Debug;
}; };

View File

@ -519,6 +519,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = { 6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 0510;
}; };
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */; buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */;
compatibilityVersion = "Xcode 3.2"; compatibilityVersion = "Xcode 3.2";
@ -591,14 +592,26 @@
339EE1B2CC4FC24589A0EA95 /* Release */ = { 339EE1B2CC4FC24589A0EA95 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ARCHS = x86_64;
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0; DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.0.0;
FRAMEWORK_SEARCH_PATHS = ""; FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore,
@ -621,7 +634,7 @@
"/usr/local/Qt-5.3.0/plugins/imageformats", "/usr/local/Qt-5.3.0/plugins/imageformats",
); );
MACOSX_DEPLOYMENT_TARGET = 10.7; MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ../Mac/DebugIntermediateStyle/; OBJROOT = ./../Mac/ReleaseIntermediateStyle;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"-pipe", "-pipe",
"-g", "-g",
@ -657,15 +670,21 @@
PRODUCT_NAME = MetaStyle; PRODUCT_NAME = MetaStyle;
QT_LIBRARY_SUFFIX = ""; QT_LIBRARY_SUFFIX = "";
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ../Mac/ReleaseStyle; SYMROOT = ./../Mac;
}; };
name = Release; name = Release;
}; };
3AA6C32AC930069E80220CF1 /* Debug */ = { 3AA6C32AC930069E80220CF1 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ARCHS = x86_64;
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0; DYLIB_COMPATIBILITY_VERSION = 1.0;
@ -674,6 +693,12 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore,
@ -696,7 +721,8 @@
"/usr/local/Qt-5.3.0/plugins/imageformats", "/usr/local/Qt-5.3.0/plugins/imageformats",
); );
MACOSX_DEPLOYMENT_TARGET = 10.7; MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ../Mac/DebugIntermediateStyle/; OBJROOT = ./../Mac/DebugIntermediateStyle;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"-pipe", "-pipe",
"-g", "-g",
@ -732,14 +758,14 @@
PRODUCT_NAME = MetaStyle; PRODUCT_NAME = MetaStyle;
QT_LIBRARY_SUFFIX = _debug; QT_LIBRARY_SUFFIX = _debug;
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ../Mac/DebugStyle; SYMROOT = ./../Mac;
}; };
name = Debug; name = Debug;
}; };
6666AA5E688052234F6758D8 /* Release */ = { 6666AA5E688052234F6758D8 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)"; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
@ -754,18 +780,16 @@
"/usr/local/Qt-5.3.0/mkspecs/macx-clang", "/usr/local/Qt-5.3.0/mkspecs/macx-clang",
); );
INSTALL_DIR = ./../Mac/ReleaseStyle/; INSTALL_DIR = ./../Mac/ReleaseStyle/;
OBJROOT = ./../Mac/ReleaseIntermediateStyle;
PRODUCT_NAME = MetaStyle; PRODUCT_NAME = MetaStyle;
QT_LIBRARY_SUFFIX = ""; QT_LIBRARY_SUFFIX = "";
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ./../Mac;
}; };
name = Release; name = Release;
}; };
77418F46922677BB04ED38DD /* Debug */ = { 77418F46922677BB04ED38DD /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)"; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
@ -782,11 +806,9 @@
"/usr/local/Qt-5.3.0/mkspecs/macx-clang", "/usr/local/Qt-5.3.0/mkspecs/macx-clang",
); );
INSTALL_DIR = ./../Mac/DebugStyle/; INSTALL_DIR = ./../Mac/DebugStyle/;
OBJROOT = ./../Mac/DebugIntermediateStyle;
PRODUCT_NAME = MetaStyle; PRODUCT_NAME = MetaStyle;
QT_LIBRARY_SUFFIX = _debug; QT_LIBRARY_SUFFIX = _debug;
SDKROOT = macosx; SDKROOT = macosx;
SYMROOT = ./../Mac;
}; };
name = Debug; name = Debug;
}; };

View File

@ -17,8 +17,10 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
*/ */
#include "genemoji.h" #include "genemoji.h"
#ifdef Q_OS_WIN
#include <QtCore/QtPlugin> #include <QtCore/QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
#endif
typedef unsigned int uint32; typedef unsigned int uint32;
@ -938,7 +940,7 @@ void writeEmojiCategory(QTextStream &tcpp, uint32 *emojiCategory, uint32 size, c
tcpp << "\t\tstatic QVector<EmojiPtr> v" << name << ";\n"; tcpp << "\t\tstatic QVector<EmojiPtr> v" << name << ";\n";
tcpp << "\t\tif (v" << name << ".isEmpty()) {\n"; tcpp << "\t\tif (v" << name << ".isEmpty()) {\n";
tcpp << "\t\t\tv" << name << ".resize(" << size << ");\n"; tcpp << "\t\t\tv" << name << ".resize(" << size << ");\n";
for (int i = 0; i < size; ++i) { for (uint32 i = 0; i < size; ++i) {
int index = 0; int index = 0;
for (EmojisData::const_iterator j = emojisData.cbegin(), e = emojisData.cend(); j != e; ++j) { for (EmojisData::const_iterator j = emojisData.cbegin(), e = emojisData.cend(); j != e; ++j) {
if (j->code == emojiCategory[i]) { if (j->code == emojiCategory[i]) {
@ -947,7 +949,7 @@ void writeEmojiCategory(QTextStream &tcpp, uint32 *emojiCategory, uint32 size, c
++index; ++index;
} }
if (index == emojisData.size()) { if (index == emojisData.size()) {
throw exception(QString("Could not find emoji from category '%1' with index %2, code %3").arg(name).arg(i).arg(emojiCategory[i]).toUtf8().constData()); throw Exception(QString("Could not find emoji from category '%1' with index %2, code %3").arg(name).arg(i).arg(emojiCategory[i]).toUtf8().constData());
} }
tcpp << "\t\t\tv" << name << "[" << i << "] = &emojis[" << index << "];\n"; tcpp << "\t\t\tv" << name << "[" << i << "] = &emojis[" << index << "];\n";
} }
@ -956,7 +958,7 @@ void writeEmojiCategory(QTextStream &tcpp, uint32 *emojiCategory, uint32 size, c
tcpp << "\t} break;\n\n"; tcpp << "\t} break;\n\n";
} }
bool genEmoji(QString emoji_in, const QString &emoji_out) { bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_png) {
QDir d(emoji_in); QDir d(emoji_in);
if (!d.exists()) { if (!d.exists()) {
cout << "Could not open emoji input dir '" << emoji_in.toUtf8().constData() << "'!\n"; cout << "Could not open emoji input dir '" << emoji_in.toUtf8().constData() << "'!\n";
@ -1012,7 +1014,7 @@ bool genEmoji(QString emoji_in, const QString &emoji_out) {
if (data.code < min1) min1 = data.code; if (data.code < min1) min1 = data.code;
if (data.code > max1) max1 = data.code; if (data.code > max1) max1 = data.code;
} }
} else if (high == 35 || high >= 48 && high < 58) { // digits } else if (high == 35 || (high >= 48 && high < 58)) { // digits
} else { } else {
if (data.code < min2) min2 = data.code; if (data.code < min2) min2 = data.code;
if (data.code > max2) max2 = data.code; if (data.code > max2) max2 = data.code;
@ -1055,7 +1057,8 @@ bool genEmoji(QString emoji_in, const QString &emoji_out) {
cout << "Could not read image '" << name.toUtf8().constData() << "'!\n"; cout << "Could not read image '" << name.toUtf8().constData() << "'!\n";
} }
} }
QString postfix = variantPostfix[variantIndex], emojif = "./SourceFiles/art/emoji" + postfix + ".png"; QString postfix = variantPostfix[variantIndex], emojif = emoji_png + postfix + ".png";
const char *tmp = emojif.toUtf8().constData();
QByteArray emojib; QByteArray emojib;
{ {
QBuffer ebuf(&emojib); QBuffer ebuf(&emojib);
@ -1126,7 +1129,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\
tcpp << "void initEmoji() {\n"; tcpp << "void initEmoji() {\n";
tcpp << "\tEmojiData *toFill = emojis = (EmojiData*)emojisData;\n\n"; tcpp << "\tEmojiData *toFill = emojis = (EmojiData*)emojisData;\n\n";
tcpp << "\tswitch (cScale()) {\n\n"; tcpp << "\tDBIScale emojiForScale = cRetina() ? dbisTwo : cScale();\n\n";
tcpp << "\tswitch (emojiForScale) {\n\n";
for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) { for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) {
int imSize = imSizes[variantIndex]; int imSize = imSizes[variantIndex];
tcpp << "\tcase " << variantNames[variantIndex] << ":\n"; tcpp << "\tcase " << variantNames[variantIndex] << ":\n";
@ -1165,7 +1169,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\
tcpp << "\t\treturn 0;\n"; tcpp << "\t\treturn 0;\n";
tcpp << "\t}\n\n"; tcpp << "\t}\n\n";
tcpp << "\tif (highCode == 35 || highCode >= 48 && highCode < 58) {\n"; // digits tcpp << "\tif (highCode == 35 || (highCode >= 48 && highCode < 58)) {\n"; // digits
tcpp << "\t\tif ((code & 0xFFFF) != 0x20E3) return 0;\n\n"; tcpp << "\t\tif ((code & 0xFFFF) != 0x20E3) return 0;\n\n";
tcpp << "\t\tswitch (code) {\n"; tcpp << "\t\tswitch (code) {\n";
for (; i != e; ++i) { for (; i != e; ++i) {
@ -1194,7 +1198,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\
tcpp << "\tswitch (ch->unicode()) {\n"; tcpp << "\tswitch (ch->unicode()) {\n";
QString tab("\t"); QString tab("\t");
for (int i = 0; i < replacesCount; ++i) { for (uint32 i = 0; i < replacesCount; ++i) {
QString key = QString::fromUtf8(replaces[i].replace); QString key = QString::fromUtf8(replaces[i].replace);
replaceMap[key] = replaces[i].code; replaceMap[key] = replaces[i].code;
} }
@ -1268,8 +1272,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\
} }
if (write_cpp) { if (write_cpp) {
cout << "Emoji updated, writing " << currentRow << " rows, full count " << emojisData.size() << " emojis.\n"; cout << "Emoji updated, writing " << currentRow << " rows, full count " << emojisData.size() << " emojis.\n";
if (!cpp.open(QIODevice::WriteOnly)) throw exception("Could not open style_auto.cpp for writing!"); if (!cpp.open(QIODevice::WriteOnly)) throw Exception("Could not open style_auto.cpp for writing!");
if (cpp.write(cppText) != cppText.size()) throw exception("Could not open style_auto.cpp for writing!"); if (cpp.write(cppText) != cppText.size()) throw Exception("Could not open style_auto.cpp for writing!");
}/**/ }/**/
} catch (exception &e) { } catch (exception &e) {
cout << e.what() << "\n"; cout << e.what() << "\n";

View File

@ -37,19 +37,35 @@ using std::cout;
using std::cerr; using std::cerr;
using std::exception; using std::exception;
bool genEmoji(QString emoji_in, const QString &emoji_out); class Exception : public exception {
public:
Exception(const QString &msg) : _msg(msg) {
}
virtual const char *what() const throw() {
return _msg.toUtf8().constData();
}
virtual ~Exception() throw() {
}
private:
QString _msg;
};
bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_png);
class GenEmoji : public QObject { class GenEmoji : public QObject {
Q_OBJECT Q_OBJECT
public: public:
GenEmoji(const QString &emoji_in, const QString &emoji_out) : QObject(0), GenEmoji(const QString &emoji_in, const QString &emoji_out, const QString &emoji_png) : QObject(0),
_emoji_in(emoji_in), _emoji_out(emoji_out) { _emoji_in(emoji_in), _emoji_out(emoji_out), _emoji_png(emoji_png) {
} }
public slots : public slots :
void run() { void run() {
if (genEmoji(_emoji_in, _emoji_out)) { if (genEmoji(_emoji_in, _emoji_out, _emoji_png)) {
emit finished(); emit finished();
} }
} }
@ -59,5 +75,5 @@ signals:
private: private:
QString _emoji_in, _emoji_out; QString _emoji_in, _emoji_out, _emoji_png;
}; };

View File

@ -18,15 +18,32 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
#include "memain.h" #include "memain.h"
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
QString emoji_in("."), emoji_out("emoji_config.cpp"); QString emoji_in("."), emoji_out("emoji_config.cpp"), emoji_png("./SourceFiles/art/emoji");
for (int i = 0; i < argc; ++i) { for (int i = 0; i < argc; ++i) {
if (string("-emoji_in") == argv[i]) { if (string("-emoji_in") == argv[i]) {
if (++i < argc) emoji_in = argv[i]; if (++i < argc) emoji_in = argv[i];
} else if (string("-emoji_out") == argv[i]) { } else if (string("-emoji_out") == argv[i]) {
if (++i < argc) emoji_out = argv[i]; if (++i < argc) emoji_out = argv[i];
} else if (string("-emoji_png") == argv[i]) {
if (++i < argc) emoji_png = argv[i];
} }
} }
QObject *taskImpl = new GenEmoji(emoji_in, emoji_out); #ifdef Q_OS_MAC
if (QDir(QString()).absolutePath() == "/") {
QString first = argc ? QString::fromLocal8Bit(argv[0]) : QString();
if (!first.isEmpty()) {
QFileInfo info(first);
if (info.exists()) {
QDir result(info.absolutePath() + "/../../..");
QString basePath = result.absolutePath() + '/';
emoji_in = basePath + emoji_in;
emoji_out = basePath + emoji_out;
emoji_png = basePath + emoji_png;
}
}
}
#endif
QObject *taskImpl = new GenEmoji(emoji_in, emoji_out, emoji_png);
QGuiApplication a(argc, argv); QGuiApplication a(argc, argv);

View File

@ -1,4 +1,8 @@
/* /*
Created from emoji config by '/MetaEmoji' project
WARNING! All changes made in this file will be lost!
This file is part of Telegram Desktop, This file is part of Telegram Desktop,
an unofficial desktop messaging app, see https://telegram.org an unofficial desktop messaging app, see https://telegram.org