[Qt] Make it possible to disable libwebp and libjpeg-turbo at build time
Pull less dependencies.
This commit is contained in:
@@ -39,7 +39,6 @@
|
||||
'sources': [
|
||||
'../default/asset_file_source.cpp',
|
||||
'../default/default_file_source.cpp',
|
||||
'../default/jpeg_reader.cpp',
|
||||
'../default/log_stderr.cpp',
|
||||
'../default/mbgl/storage/offline.cpp',
|
||||
'../default/mbgl/storage/offline_database.cpp',
|
||||
@@ -48,7 +47,6 @@
|
||||
'../default/sqlite3.cpp',
|
||||
'../default/string_stdlib.cpp',
|
||||
'../default/thread.cpp',
|
||||
'../default/webp_reader.cpp',
|
||||
'include/qmapbox.hpp',
|
||||
'include/qmapboxgl.hpp',
|
||||
'include/qquickmapboxgl.hpp',
|
||||
@@ -75,7 +73,6 @@
|
||||
'variables': {
|
||||
'cflags': [
|
||||
'<@(boost_cflags)',
|
||||
'<@(libjpeg-turbo_cflags)',
|
||||
'<@(nunicode_cflags)',
|
||||
'<@(opengl_cflags)',
|
||||
'<@(qt_core_cflags)',
|
||||
@@ -83,25 +80,20 @@
|
||||
'<@(qt_network_cflags)',
|
||||
'<@(rapidjson_cflags)',
|
||||
'<@(sqlite_cflags)',
|
||||
'<@(webp_cflags)',
|
||||
'-fPIC',
|
||||
],
|
||||
'ldflags': [
|
||||
'<@(libjpeg-turbo_ldflags)',
|
||||
'<@(nunicode_ldflags)',
|
||||
'<@(opengl_ldflags)',
|
||||
'<@(qt_core_ldflags)',
|
||||
'<@(qt_gui_ldflags)',
|
||||
'<@(qt_network_ldflags)',
|
||||
'<@(sqlite_ldflags)',
|
||||
'<@(webp_ldflags)',
|
||||
'<@(zlib_ldflags)',
|
||||
],
|
||||
'libraries': [
|
||||
'<@(nunicode_static_libs)',
|
||||
'<@(sqlite_static_libs)',
|
||||
'<@(libjpeg-turbo_static_libs)',
|
||||
'<@(webp_static_libs)',
|
||||
'<@(zlib_static_libs)',
|
||||
],
|
||||
},
|
||||
@@ -114,6 +106,26 @@
|
||||
],
|
||||
|
||||
'conditions': [
|
||||
['<(qt_image_decoders) == 0', {
|
||||
'sources': [
|
||||
'../default/jpeg_reader.cpp',
|
||||
'../default/webp_reader.cpp',
|
||||
],
|
||||
'variables': {
|
||||
'cflags': [
|
||||
'<@(libjpeg-turbo_cflags)',
|
||||
'<@(webp_cflags)',
|
||||
],
|
||||
'ldflags': [
|
||||
'<@(libjpeg-turbo_ldflags)',
|
||||
'<@(webp_ldflags)',
|
||||
],
|
||||
'libraries': [
|
||||
'<@(libjpeg-turbo_static_libs)',
|
||||
'<@(webp_static_libs)',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['<(qt_version_major) == 4', {
|
||||
'variables': {
|
||||
'cflags': [
|
||||
|
||||
@@ -35,6 +35,7 @@ function print_qt_flags {
|
||||
|
||||
QT_VERSION_MAJOR=$(qmake -query QT_VERSION | cut -d. -f1)
|
||||
CONFIG+=" 'qt_version_major%': ['${QT_VERSION_MAJOR}'],"$LN
|
||||
CONFIG+=" 'qt_image_decoders%': [0],"$LN
|
||||
|
||||
CONFIG+=" 'qt_core_cflags%': $(quote_flags $(mason cflags Qt system "QtCore")),"$LN
|
||||
CONFIG+=" 'qt_gui_cflags%': $(quote_flags $(mason cflags Qt system "QtGui")),"$LN
|
||||
|
||||
@@ -19,14 +19,16 @@ std::string encodePNG(const PremultipliedImage& pre) {
|
||||
return std::string(array.constData(), array.size());
|
||||
}
|
||||
|
||||
#if !defined(QT_IMAGE_DECODERS)
|
||||
PremultipliedImage decodeJPEG(const uint8_t*, size_t);
|
||||
PremultipliedImage decodeWebP(const uint8_t*, size_t);
|
||||
#endif
|
||||
|
||||
PremultipliedImage decodeImage(const std::string& string) {
|
||||
const uint8_t* data = reinterpret_cast<const uint8_t*>(string.data());
|
||||
const size_t size = string.size();
|
||||
|
||||
// FIXME: Use Qt WebP decoder plugin.
|
||||
#if !defined(QT_IMAGE_DECODERS)
|
||||
if (size >= 12) {
|
||||
uint32_t riff_magic = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
|
||||
uint32_t webp_magic = (data[8] << 24) | (data[9] << 16) | (data[10] << 8) | data[11];
|
||||
@@ -35,13 +37,13 @@ PremultipliedImage decodeImage(const std::string& string) {
|
||||
}
|
||||
}
|
||||
|
||||
// Use libjpeg-turbo rather than the built-in version of libjpeg.
|
||||
if (size >= 2) {
|
||||
uint16_t magic = ((data[0] << 8) | data[1]) & 0xffff;
|
||||
if (magic == 0xFFD8) {
|
||||
return decodeJPEG(data, size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
QImage image =
|
||||
QImage::fromData(data, size)
|
||||
|
||||
@@ -153,12 +153,12 @@ std::string canonicalizeTileURL(const std::string& url, SourceType type, uint16_
|
||||
auto tileset = url.substr(tilesetStartIdx, tilesetEndIdx - tilesetStartIdx);
|
||||
auto extension = url.substr(extensionIdx + 1, queryIdx - extensionIdx - 1);
|
||||
|
||||
#if !defined(__ANDROID__) && !defined(__APPLE__)
|
||||
#if !defined(__ANDROID__) && !defined(__APPLE__) && !defined(QT_IMAGE_DECODERS)
|
||||
// Replace PNG with WebP.
|
||||
if (extension == "png") {
|
||||
extension = "webp";
|
||||
}
|
||||
#endif // !defined(__ANDROID__) && !defined(__APPLE__)
|
||||
#endif // !defined(__ANDROID__) && !defined(__APPLE__) && !defined(QT_IMAGE_DECODERS)
|
||||
|
||||
std::string result = "mapbox://tiles/" + tileset + "/{z}/{x}/{y}";
|
||||
|
||||
|
||||
@@ -78,13 +78,13 @@ TEST(Image, JPEGTile) {
|
||||
EXPECT_EQ(256, image.height);
|
||||
}
|
||||
|
||||
#if !defined(__ANDROID__) && !defined(__APPLE__)
|
||||
#if !defined(__ANDROID__) && !defined(__APPLE__) && !defined(QT_IMAGE_DECODERS)
|
||||
TEST(Image, WebPTile) {
|
||||
PremultipliedImage image = decodeImage(util::read_file("test/fixtures/image/tile.webp"));
|
||||
EXPECT_EQ(256, image.width);
|
||||
EXPECT_EQ(256, image.height);
|
||||
}
|
||||
#endif // !defined(__ANDROID__) && !defined(__APPLE__)
|
||||
#endif // !defined(__ANDROID__) && !defined(__APPLE__) && !defined(QT_IMAGE_DECODERS)
|
||||
|
||||
TEST(Image, Premultiply) {
|
||||
UnassociatedImage rgba { 1, 1 };
|
||||
|
||||
Reference in New Issue
Block a user