Giter VIP home page Giter VIP logo

qtpbfimageplugin's People

Contributors

tumic0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

qtpbfimageplugin's Issues

Build ERROE

When I build the project in the windows environment, the following error appears. I don’t know if I downloaded the wrong Zlib or used the wrong problem. The website where I downloaded zlib is http://www.winimage.com/zLibDll
image
image

Q: Is it really necessary to pass the zoom level?

README says:

Due to a major design flaw in the Mapbox vector tiles specification - the zoom is not part of the PBF data - the plugin can not be used "as is", but passing the zoom level is necessary.

But I've tried to use .pbf tiles within other applications (not GPXSee) without any modifications (for passing the zoom level) and everything works as expected. I've also tried to build GPXSee without passing the zoom level to QImageReader and it works as well. Do I miss something?

Wrong marker placement

Steps to reproduce

$ cat << EOF > test.gpx
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="" version="1.1">
  <wpt lat="49.797098" lon="86.567346">
    <name>4436 m</name>
  </wpt>
</gpx>
EOF
$ crudini --set ~/.config/gpxsee/gpxsee.conf Map map MapTiler
$ curl -o ~/.local/share/gpxsee/style/style.json https://raw.githubusercontent.com/openmaptiles/klokantech-terrain-gl-style/master/style.json
$ gpxsee test.gpx

Actual behaviour

scr1
1 - actual summit location
2 - displayed summit location

$ sed -i 's#{name:latin}\\\n##g' ~/.local/share/gpxsee/style/style.json

scr3

Expected behaviour

The marker's position coincides with actual location:
scr2

Configuration

GPXSee: 7.15
QtPBFImagePlugin: 2.0

pbfhandler.cpp#L23 claims support for any and all GZIP files

While debugging an unrelated application which crashed only if this library was installed, a very helpful person pinpointed me at this bug:

You need to actually decompress the first 4 bytes of the GZIP and compare those with the PBF magic before claiming that it supports the file.
Otherwise, it will end up claiming, say, SVGZ images (which are also GZIP files).
Actually, you really need to decompress only the first byte, because the PBF magic is actually only 1 byte (see PBF_MAGIC_MASK).
That, though, also means that this is not a very reliable check and can claim files falsely.
Also, as far as I can tell, a PBF file is just any Google protobuf file and not necessarily a MapBox tile. There is no check anywhere that the protobuf blob is really a MapBox tile.
The check for supported files is way too broad and results in Qt automatically choosing this plugin for images that it it cannot possibly work with.

Some layers are not rendered

I try to use Klokantech Terrain style with GPXSee and here is the result:
scr2
And compare with openmaptiles.github.io/klokantech-terrain-gl-style:
scr1
All layers that use hillshading or contours sources are not rendered.
style.json:

  "sources": {
    "openmaptiles": {
      "type": "vector",
      "url": "https://free.tilehosting.com/data/v3.json?key={key}"
    },
    "hillshading": {
      "type": "raster",
      "url": "https://klokantech.tilehosting.com/data/hillshades.json?key=tXme5cuqgrCqdPoZHqyn",
      "tileSize": 256
    },
    "contours": {
      "type": "vector",
      "url": "https://klokantech.tilehosting.com/data/contours.json?key=tXme5cuqgrCqdPoZHqyn"
    }
},

I guess there is some known QtPBFImagePlugin limitation.

The plugin can cause an abort if the application uses a QCoreApplication

Summary

The PFBImage plugin can cause an abort to happen in Qt if an application is used that creates a QCoreApplication at startup rather than a QGuiApplication or QApplication and the application calls some Qt functions that cause this plugin to be created for example QImage::save().

This is the specific abort
QFontDatabase: Must construct a QGuiApplication before accessing QFontDatabase

Details

This came to light when we received reports that some Fedora 31 users were seeing a crash of one of our utils (mythpreviewgen) that creates a thumbnail image from a video file. It is a command line utility so as per the Qt guidelines it uses QCoreApplication at startup which then goes on to crash with the abort when your plugin is created when we go to save the thumb image with QImage::save().

It looks like all Fedora 31 and possibly 32 get your plugin installed when they blanket install everything whether they need it or not using dnf -y install qt5*

To be clear our util doesn't use or require the PBFImage plugin it gets created automatically by Qt when it loads the list of available QImageReaders.

The affected users can prevent the crash by uninstalling the plugin with
dnf -y remove qt5-qtpbfimageformat

Possible Fix

It would be nice if when asked to create an instance of the plugin it looked to see if the application is using a QCoreApplication and either refuse to be created or changes it's behaviour to avoid the abort.

Upstream Forum Post
For reference the forum post where this problem was first reported is here
Mythpreviewgen Not Happy

memory leak?

I use this code to convert vector tiles to png image:

9-12-453.zip
9-12-453.zip
` QImage *_image = new QImage();

foreach (QString filename, listFiles)
{
QImageReader _reader(filename, QString("0").toLatin1());

_reader.setScaledSize(QSize(256, 256));
if (_reader.read(_image))
{
    _image->save(filename+".png","PNG");

}

}
delete _image;`

the memory occupied by the application is growing...

QPBFImagePlugin memory leak(valgrind log)

==32762== Memcheck, a memory error detector
==32762== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==32762== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==32762== Command: ./pbf2png ../IN/ 6 -O ../OUT/
==32762== Parent PID: 4451
==32762==
==32762==
==32762== HEAP SUMMARY:
==32762== in use at exit: 418,228,472 bytes in 8,382,975 blocks
==32762== total heap usage: 32,701,691 allocs, 24,318,716 frees, 7,042,567,427 bytes allocated
==32762==
==32762== 16 bytes in 1 blocks are possibly lost in loss record 619 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0DF6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C304E: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9A7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762==
==32762== 16 bytes in 1 blocks are possibly lost in loss record 620 of 3,842
==32762== at 0x48356AF: malloc (vg_replace_malloc.c:298)
==32762== by 0x4837DE7: realloc (vg_replace_malloc.c:826)
==32762== by 0x61D996B: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0CE8: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C304E: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9A7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762==
==32762== 16 bytes in 1 blocks are possibly lost in loss record 621 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0DF6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C7E1B: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9B6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762==
==32762== 16 bytes in 1 blocks are possibly lost in loss record 622 of 3,842
==32762== at 0x48356AF: malloc (vg_replace_malloc.c:298)
==32762== by 0x4837DE7: realloc (vg_replace_malloc.c:826)
==32762== by 0x61D996B: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0CE8: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C7E1B: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9B6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762==
==32762== 32 bytes in 1 blocks are possibly lost in loss record 1,661 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E335A: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E337F: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4D1C77: g_param_spec_enum (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xBB0EDF9: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xB4E31DA: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xBB112A8: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xBB121B6: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xBB10312: g_dbus_proxy_new_for_bus (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xB403180: ??? (in /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2404.1)
==32762== by 0xB3FCB2D: ??? (in /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2404.1)
==32762==
==32762== 32 bytes in 2 blocks are possibly lost in loss record 1,662 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0DF6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C30B1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9A7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762==
==32762== 32 bytes in 2 blocks are possibly lost in loss record 1,663 of 3,842
==32762== at 0x48356AF: malloc (vg_replace_malloc.c:298)
==32762== by 0x4837DE7: realloc (vg_replace_malloc.c:826)
==32762== by 0x61D996B: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0CE8: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4038: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C30B1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9A7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762==
==32762== 104 bytes in 2 blocks are possibly lost in loss record 3,061 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E335A: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E337F: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E4EEF: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4CD56A: g_param_spec_internal (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4D2351: g_param_spec_object (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB3A15C6: ??? (in /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2404.1)
==32762== by 0xB4E31DA: g_type_class_ref (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C8CE7: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C9730: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB3A16A4: gdk_display_manager_get (in /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2404.1)
==32762==
==32762== 264 bytes in 2 blocks are possibly lost in loss record 3,456 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E1754: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E40B9: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4C304E: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9A7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762==
==32762== 288 (256 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 3,477 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x8F4C6D4: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762== by 0x8F4CD75: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762== by 0x8F4E2C7: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762== by 0x8F5528B: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762== by 0x9CF9A15: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.8)
==32762== by 0x9CFA4BB: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.8)
==32762== by 0x9CF7F8A: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.8)
==32762== by 0x9CF8E7A: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.8)
==32762== by 0x9CFCA37: XML_ParseBuffer (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.8)
==32762== by 0x8F530FA: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762== by 0x8F53519: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==32762==
==32762== 296 bytes in 2 blocks are possibly lost in loss record 3,484 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E1568: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E40B9: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4CCF9B: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9B1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762==
==32762== 480 bytes in 5 blocks are possibly lost in loss record 3,575 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x61D9918: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E0151: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E02EA: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC8CA: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762== by 0x6180255: dlopen_doit (dlopen.c:66)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762==
==32762== 768 bytes in 24 blocks are possibly lost in loss record 3,654 of 3,842
==32762== at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==32762== by 0x155218D3: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762== by 0x10FBFA: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIterations(QList<QPair<int, int> >::iterator, int, int, void*) (qtconcurrentmapkernel.h:77)
==32762== by 0x11003A: QtConcurrent::IterateKernel<QList<QPair<int, int> >::iterator, void>::forThreadFunction() (qtconcurrentiteratekernel.h:255)
==32762== by 0x10FD77: QtConcurrent::IterateKernel<QList<QPair<int, int> >::iterator, void>::threadFunction() (qtconcurrentiteratekernel.h:217)
==32762== by 0x4E00A4C: QtConcurrent::ThreadEngineBase::run() (in /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5.11.3)
==32762==
==32762== 960 bytes in 24 blocks are possibly lost in loss record 3,679 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4EC9511: QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlagsQArrayData::AllocationOption) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15524C7E: QTypedArrayDataPBF::Feature::allocate(unsigned long, QFlagsQArrayData::AllocationOption) (qarraydata.h:222)
==32762== by 0x155247B7: QVectorPBF::Feature::reallocData(int, int, QFlagsQArrayData::AllocationOption) (qvector.h:562)
==32762== by 0x155221B0: QVectorPBF::Feature::reserve(int) (qvector.h:398)
==32762== by 0x15521548: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:100)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762==
==32762== 1,152 bytes in 4 blocks are possibly lost in loss record 3,715 of 3,842
==32762== at 0x4837D7B: realloc (vg_replace_malloc.c:826)
==32762== by 0x61D996B: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xB4E00CC: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4E429C: g_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4CEC80: g_param_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4D167A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0xB4BC9BB: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5800.3)
==32762== by 0x400F379: call_init.part.0 (dl-init.c:72)
==32762== by 0x400F475: call_init (dl-init.c:118)
==32762== by 0x400F475: _dl_init (dl-init.c:119)
==32762== by 0x40132D2: dl_open_worker (dl-open.c:517)
==32762== by 0x5862B2E: _dl_catch_exception (dl-error-skeleton.c:196)
==32762== by 0x4012BB9: _dl_open (dl-open.c:599)
==32762==
==32762== 1,248 bytes in 3 blocks are possibly lost in loss record 3,723 of 3,842
==32762== at 0x4837B65: calloc (vg_replace_malloc.c:752)
==32762== by 0x40116D1: allocate_dtv (dl-tls.c:286)
==32762== by 0x401203D: _dl_allocate_tls (dl-tls.c:532)
==32762== by 0x539DB95: allocate_stack (allocatestack.c:621)
==32762== by 0x539DB95: pthread_create@@GLIBC_2.2.5 (pthread_create.c:669)
==32762== by 0x621DC3F: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0x61FC71E: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0x61FC7C7: g_thread_new (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0x61D5043: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5800.3)
==32762== by 0xBAAC5C6: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xBAAC984: g_task_get_type (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xBB12160: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762== by 0xBB10312: g_dbus_proxy_new_for_bus (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5800.3)
==32762==
==32762== 1,520 bytes in 38 blocks are possibly lost in loss record 3,733 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4EC9511: QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlagsQArrayData::AllocationOption) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x1552460E: QTypedArrayData::allocate(unsigned long, QFlagsQArrayData::AllocationOption) (qarraydata.h:222)
==32762== by 0x15523FB7: QVector::reallocData(int, int, QFlagsQArrayData::AllocationOption) (qvector.h:562)
==32762== by 0x15521F90: QVector::reserve(int) (qvector.h:398)
==32762== by 0x15521457: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:96)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762==
==32762== 3,040 bytes in 95 blocks are possibly lost in loss record 3,771 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4F125B4: QHashData::allocateNode(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15523EC9: QHash<QString, unsigned int>::createNode(unsigned int, QString const&, unsigned int const&, QHashNode<QString, unsigned int>) (qhash.h:560)
==32762== by 0x15521E71: QHash<QString, unsigned int>::insert(QString const&, unsigned int const&) (qhash.h:776)
==32762== by 0x155213CF: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:95)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762==
==32762== 4,560 bytes in 95 blocks are possibly lost in loss record 3,790 of 3,842
==32762== at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==32762== by 0x4F127CF: QHashData::detach_helper(void ()(QHashData::Node, void*), void ()(QHashData::Node), int, int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15523CCE: QHash<QString, unsigned int>::detach_helper() (qhash.h:597)
==32762== by 0x15523BF8: QHash<QString, unsigned int>::detach() (qhash.h:275)
==32762== by 0x15521D7B: QHash<QString, unsigned int>::reserve(int) (qhash.h:880)
==32762== by 0x1552133C: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:93)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762==
==32762== 5,448 bytes in 154 blocks are possibly lost in loss record 3,798 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4EC9511: QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlagsQArrayData::AllocationOption) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x4F396E2: QString::QString(int, Qt::Initialization) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x50C50FC: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x4F3DAA1: QString::fromUtf8_helper(char const*, int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15520331: QString::fromUtf8(char const*, int) (qstring.h:569)
==32762== by 0x15521EF0: QString::fromStdString(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (qstring.h:1370)
==32762== by 0x155213B0: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:95)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762==
==32762== 12,920 bytes in 95 blocks are possibly lost in loss record 3,814 of 3,842
==32762== at 0x483650F: operator new[](unsigned long) (vg_replace_malloc.c:423)
==32762== by 0x4F12A9B: QHashData::rehash(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15521DAC: QHash<QString, unsigned int>::reserve(int) (qhash.h:881)
==32762== by 0x1552133C: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:93)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762== by 0x10FBFA: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIterations(QList<QPair<int, int> >::iterator, int, int, void*) (qtconcurrentmapkernel.h:77)
==32762==
==32762== 1,280,376 (163,616 direct, 1,116,760 indirect) bytes in 5,113 blocks are definitely lost in loss record 3,831 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4F125B4: QHashData::allocateNode(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15523EC9: QHash<QString, unsigned int>::createNode(unsigned int, QString const&, unsigned int const&, QHashNode<QString, unsigned int>
) (qhash.h:560)
==32762== by 0x15521E71: QHash<QString, unsigned int>::insert(QString const&, unsigned int const&) (qhash.h:776)
==32762== by 0x155213CF: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:95)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762==
==32762== 6,431,652 (3,476,024 direct, 2,955,628 indirect) bytes in 25,559 blocks are definitely lost in loss record 3,833 of 3,842
==32762== at 0x483650F: operator new[](unsigned long) (vg_replace_malloc.c:423)
==32762== by 0x4F12A9B: QHashData::rehash(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15521DAC: QHash<QString, unsigned int>::reserve(int) (qhash.h:881)
==32762== by 0x1552133C: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:93)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762== by 0x10FBFA: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIterations(QList<QPair<int, int> >::iterator, int, int, void*) (qtconcurrentmapkernel.h:77)
==32762==
==32762== 38,125,058 (3,826,712 direct, 34,298,346 indirect) bytes in 94,639 blocks are definitely lost in loss record 3,837 of 3,842
==32762== at 0x483577F: malloc (vg_replace_malloc.c:299)
==32762== by 0x4EC9511: QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlagsQArrayData::AllocationOption) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3)
==32762== by 0x15524C7E: QTypedArrayDataPBF::Feature::allocate(unsigned long, QFlagsQArrayData::AllocationOption) (qarraydata.h:222)
==32762== by 0x155247B7: QVectorPBF::Feature::reallocData(int, int, QFlagsQArrayData::AllocationOption) (qvector.h:562)
==32762== by 0x155221B0: QVectorPBF::Feature::reserve(int) (qvector.h:398)
==32762== by 0x15521548: PBF::Layer::Layer(vector_tile::Tile_Layer const*) (pbf.cpp:100)
==32762== by 0x155218F1: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762==
==32762== 370,672,640 (27,837,952 direct, 342,834,688 indirect) bytes in 869,936 blocks are definitely lost in loss record 3,842 of 3,842
==32762== at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==32762== by 0x155218D3: PBF::PBF(vector_tile::Tile const&) (pbf.cpp:110)
==32762== by 0x1551F9D1: PBFHandler::read(QImage*) (pbfhandler.cpp:92)
==32762== by 0x49F2F95: QImageReader::read(QImage*) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3)
==32762== by 0x10C958: App::image(QImage&, int, int, int, int) (pbf2png.cpp:50)
==32762== by 0x10CC00: App::render(QPair<int, int>&) (pbf2png.cpp:72)
==32762== by 0x10FE07: QtConcurrent::FunctionWrapper1<void, QPair<int, int>&>::operator()(QPair<int, int>&) (qtconcurrentfunctionwrappers.h:80)
==32762== by 0x10FB6A: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIteration(QList<QPair<int, int> >::iterator, int, void*) (qtconcurrentmapkernel.h:68)
==32762== by 0x10FBFA: QtConcurrent::MapKernel<QList<QPair<int, int> >::iterator, QtConcurrent::FunctionWrapper1<void, QPair<int, int>&> >::runIterations(QList<QPair<int, int> >::iterator, int, int, void*) (qtconcurrentmapkernel.h:77)
==32762== by 0x11003A: QtConcurrent::IterateKernel<QList<QPair<int, int> >::iterator, void>::forThreadFunction() (qtconcurrentiteratekernel.h:255)
==32762== by 0x10FD77: QtConcurrent::IterateKernel<QList<QPair<int, int> >::iterator, void>::threadFunction() (qtconcurrentiteratekernel.h:217)
==32762== by 0x4E00A4C: QtConcurrent::ThreadEngineBase::run() (in /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5.11.3)
==32762==
==32762== LEAK SUMMARY:
==32762== definitely lost: 35,304,560 bytes in 995,248 blocks
==32762== indirectly lost: 381,205,454 bytes in 7,366,806 blocks
==32762== possibly lost: 32,920 bytes in 552 blocks
==32762== still reachable: 1,616,858 bytes in 19,806 blocks
==32762== of which reachable via heuristic:
==32762== length64 : 3,296 bytes in 59 blocks
==32762== newarray : 2,048 bytes in 48 blocks
==32762== suppressed: 0 bytes in 0 blocks
==32762== Reachable blocks (those to which a pointer was found) are not shown.
==32762== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==32762==
==32762== For counts of detected and suppressed errors, rerun with: -v
==32762== ERROR SUMMARY: 25 errors from 25 contexts (suppressed: 0 from 0)

Can't draw water layer on maptiler pbf tiles

I use this code to convert vector tiles to png image:

    QImage *_image = new QImage();
    QString _file("C:\\z0_x0_y0.pbf");

    QImageReader _reader(_file, QString("0").toLatin1());

    //_reader.setScaledSize(QSize(256, 256));
    if (_reader.read(_image))
    {
        _image->save(_file+".png","PNG");

    }
    delete _image;

The received image does not contain water layer.
The visibility Layout property is not parsed?
style.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.