Giter VIP home page Giter VIP logo

avitab's Introduction

AviTab - The Aviator's Tablet

AviTab is a plugin for the X-Plane flight simulator (versions 11.20+ and 12). It displays a tablet like computer with a few apps in the cockpit and is mainly used for flying in virtual reality. But is also very handy in windowed mode, with integrations such as Zibo's B737-800X, it truly enhances the flight experience with a fully functioning EFB in the virtual cockpit.

Purpose

When flying in a simulator, one often needs to lookup details in PDF charts, plane manuals, checklists or other documents. Using a PDF reader breaks the immersion because the virtual aviator either has to take off of their HMD or use other tools that can move windows into VR.

AviTab tries to solve this problem by offering a PDF reader inside a native plugin for X-Plane. Using a plugin also opens possibilites for more apps inside the tablet, for example to display information about the plane status or aid in navigation.

Features

Let the screenshots speak! Note that these were taken using the standalone version for better resolution, but all of this is available right inside your VR cockpit.

More screenshots here: Screenshots

Installation

  • Download the latest release from the release page
  • Extract the archive and move the folder into your X-Plane/Resources/Plugins directory
  • Start X-Plane
  • Find a new menu inside the plugins directory to toggle the tablet
  • Optionally, you can assign a key for this command (I prefer the right-hand lower trigger)

Usage

General

When hovering over the edges of the tablet from a short distance, X-Plane will display green bars around the tablet. The upper bar can be used to grab the window and move it around inside the cockpit.

Charts Viewer

The charts viewer displays PDF files inside the charts/ subdirectory of the plugin/ directoy. You can add your charts there, including subdirectories.

Limitations

  • PDFs containing CJK fonts or ancient fonts such Linear B are not supported. This is mainly due to font sizes - a version containing all fonts would be 40 Megabytes in size.

Compiling

See Compiling in the Wiki.

Donate

If you like AviTab and want to support its further development, you can donate.

Donate

avitab's People

Contributors

allebb avatar cyberang3l avatar dave6502 avatar ennissec avatar fpw avatar landonpatmore avatar missingnoodle avatar mitchdartsticitt avatar mjh65 avatar oobayly avatar simmer1234569 avatar tomvand 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

avitab's Issues

Add Browser

I could add a web browser, like the F3 a320 has, it helps a lot and is simple to do

Build under Win10 MINGW 64

Hi,

First thanks for your work, very fine for VR flying ;-)
I would like to build your software to extend online tile maps support .

Under Win10 with mingw64, and regarding your wiki https://github.com/fpw/avitab/wiki/Compiling,
I succeded in building :
-mupdf: after pulled it from git and patched Makethird
-curl: by downloading the curl-7.61.1.zip version (since there is no configure script present inside the git pulled version) and using your configure parameter described in your lib/curl-config.

then I tried to build your plugin, here is the result of "cmake .." in build directory :

$ git describe --tags
v0.2.5
$ cd build
$ cmake ..
-- The C compiler identification is GNU 8.2.0
-- The CXX compiler identification is GNU 8.2.0
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Check for working C compiler: /mingw64/bin/cc.exe
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Check for working C compiler: /mingw64/bin/cc.exe -- works
-- Detecting C compiler ABI info
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Detecting C compiler ABI info - done
-- Detecting C compile features
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Detecting C compile features - done
-- Check for working CXX compiler: /mingw64/bin/g++.exe
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Check for working CXX compiler: /mingw64/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0 to use this system, please send your config file to [email protected] so it can be added to cmake
-- Detecting CXX compile features - done
-- Found CURL: /usr/local/lib/libcurl.a (found version "7.61.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /c/Dev/XPlaneDev/avitab2/build

Then I try despite the problem of plateform detection of cmake to build the plugin :

$ make
Scanning dependencies of target lvgl
[ 0%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_group.c.obj
[ 1%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_indev.c.obj
[ 1%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_obj.c.obj
[ 2%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_refr.c.obj
[ 2%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_style.c.obj
[ 3%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_core/lv_vdb.c.obj
[ 3%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_draw/lv_draw_vbasic.c.obj
[ 4%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_draw/lv_draw.c.obj
[ 4%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_draw/lv_draw_rbasic.c.obj
[ 5%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_hal/lv_hal_disp.c.obj
[ 5%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_hal/lv_hal_indev.c.obj
[ 5%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_hal/lv_hal_tick.c.obj
[ 6%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_10.c.obj
[ 6%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_20.c.obj
[ 7%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_30.c.obj
[ 7%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_40.c.obj
[ 8%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_10_cyrillic.c.obj
[ 8%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_20_cyrillic.c.obj
[ 9%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_30_cyrillic.c.obj
[ 9%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_40_cyrillic.c.obj
[ 10%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_10_latin_sup.c.obj
[ 10%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_20_latin_sup.c.obj
[ 11%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_30_latin_sup.c.obj
[ 11%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_dejavu_40_latin_sup.c.obj
[ 12%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_symbol_10.c.obj
[ 12%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_symbol_20.c.obj
[ 13%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_symbol_30.c.obj
[ 13%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fonts/lv_font_symbol_40.c.obj
[ 14%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_font.c.obj
[ 14%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_circ.c.obj
[ 14%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_area.c.obj
[ 15%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_task.c.obj
[ 15%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_fs.c.obj
[ 16%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_anim.c.obj
[ 16%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_mem.c.obj
[ 17%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_ll.c.obj
[ 17%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_color.c.obj
[ 18%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_txt.c.obj
[ 18%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_ufs.c.obj
[ 19%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_trigo.c.obj
[ 19%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_misc/lv_math.c.obj
[ 20%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_bar.c.obj
[ 20%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_cb.c.obj
[ 21%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_ddlist.c.obj
[ 21%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_kb.c.obj
[ 22%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_line.c.obj
[ 22%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_mbox.c.obj
[ 23%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_roller.c.obj
[ 23%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_tabview.c.obj
[ 23%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_btn.c.obj
[ 24%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_chart.c.obj
[ 24%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_gauge.c.obj
[ 25%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_label.c.obj
[ 25%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_list.c.obj
[ 26%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_slider.c.obj
[ 26%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_ta.c.obj
[ 27%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_btnm.c.obj
[ 27%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_cont.c.obj
[ 28%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_img.c.obj
[ 28%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_led.c.obj
[ 29%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_lmeter.c.obj
[ 29%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_page.c.obj
[ 30%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_sw.c.obj
[ 30%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_objx/lv_win.c.obj
[ 31%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_alien.c.obj
[ 31%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme.c.obj
[ 32%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_default.c.obj
[ 32%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_night.c.obj
[ 32%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_templ.c.obj
[ 33%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_zen.c.obj
[ 33%] Building C object lib/CMakeFiles/lvgl.dir/lvgl/lv_themes/lv_theme_material.c.obj
[ 34%] Linking C static library liblvgl.a
[ 34%] Built target lvgl
Scanning dependencies of target detex
[ 34%] Building C object lib/CMakeFiles/detex.dir/detex/bptc-tables.c.obj
[ 34%] Building C object lib/CMakeFiles/detex.dir/detex/bits.c.obj
[ 35%] Building C object lib/CMakeFiles/detex.dir/detex/clamp.c.obj
[ 35%] Building C object lib/CMakeFiles/detex.dir/detex/convert.c.obj
[ 36%] Building C object lib/CMakeFiles/detex.dir/detex/dds.c.obj
[ 36%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-bc.c.obj
[ 37%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-bptc.c.obj
[ 37%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-bptc-float.c.obj
[ 38%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-etc.c.obj
[ 38%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-eac.c.obj
[ 39%] Building C object lib/CMakeFiles/detex.dir/detex/decompress-rgtc.c.obj
[ 39%] Building C object lib/CMakeFiles/detex.dir/detex/division-tables.c.obj
[ 40%] Building C object lib/CMakeFiles/detex.dir/detex/file-info.c.obj
[ 40%] Building C object lib/CMakeFiles/detex.dir/detex/half-float.c.obj
[ 41%] Building C object lib/CMakeFiles/detex.dir/detex/hdr.c.obj
[ 41%] Building C object lib/CMakeFiles/detex.dir/detex/ktx.c.obj
[ 42%] Building C object lib/CMakeFiles/detex.dir/detex/misc.c.obj
[ 42%] Building C object lib/CMakeFiles/detex.dir/detex/raw.c.obj
[ 43%] Building C object lib/CMakeFiles/detex.dir/detex/texture.c.obj
[ 43%] Linking C static library libdetex.a
[ 43%] Built target detex
Scanning dependencies of target avitab_plugin
[ 44%] Building CXX object src/CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj
[ 44%] Building CXX object src/CMakeFiles/avitab_plugin.dir/Logger.cpp.obj
[ 45%] Linking CXX shared library AviTab.xpl
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x169): undefined reference to __imp_XPLMEnableFeature' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x175): undefined reference to curl_global_init'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x1bd): undefined reference to avitab::Environment::loadConfig()' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x1db): undefined reference to avitab::Environment::getConfig()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x22e): undefined reference to avitab::Config::getBool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x486): undefined reference to avitab::AviTab::startApp()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x59c): undefined reference to avitab::AviTab::onPlaneLoad()' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x5d9): undefined reference to avitab::AviTab::stopApp()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x6f5): undefined reference to avitab::AviTab::stopApp()' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text+0x717): undefined reference to curl_global_cleanup'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text$ZSt11make_uniqueIN6avitab6AviTabEJRSt10shared_ptrINS0_11EnvironmentEEEENSt9_MakeUniqIT_E15__single_objectEDpOT0[ZSt11make_uniqueIN6avitab6AviTabEJRSt10shared_ptrINS0_11EnvironmentEEEENSt9_MakeUniqIT_E15__single_objectEDpOT0]+0x45): undefined reference to avitab::AviTab::AviTab(std::shared_ptr<avitab::Environment>)' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj:Plugin.cpp:(.text$_ZN9__gnu_cxx13new_allocatorIN6avitab17XPlaneEnvironmentEE9constructIS2_JEEEvPT_DpOT0_[_ZN9__gnu_cxx13new_allocatorIN6avitab17XPlaneEnvironmentEE9constructIS2_JEEEvPT_DpOT0_]+0x30): undefined reference to avitab::XPlaneEnvironment::XPlaneEnvironment()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/avitab_plugin.dir/Logger.cpp.obj:Logger.cpp:(.text+0xc7): undefined reference to `platform::getLocalTime(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/avitab_plugin.dir/build.make:99: src/AviTab.xpl] Error 1
make[1]: *** [CMakeFiles/Makefile2:207: src/CMakeFiles/avitab_plugin.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

I tried too the last version from today :

$ git describe --tags
v0.3.2-8-g2463f80

$ make
[ 32%] Built target lvgl
[ 41%] Built target detex
[ 42%] Building CXX object src/CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj
In file included from C:/Dev/XPlaneDev/avitab.last/src/libnavigraph/OIDCClient.h:27,
from C:/Dev/XPlaneDev/avitab.last/src/libnavigraph/NavigraphAPI.h:33,
from C:/Dev/XPlaneDev/avitab.last/src/avitab/AviTab.h:23,
from C:/Dev/XPlaneDev/avitab.last/src/Plugin.cpp:24:
C:/Dev/XPlaneDev/avitab.last/src/libnavigraph/Crypto.h:21:10: fatal error: mbedtls/config.h: No such file or directory
#include <mbedtls/config.h>
^~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/CMakeFiles/avitab_plugin.dir/build.make:63: src/CMakeFiles/avitab_plugin.dir/Plugin.cpp.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:210: src/CMakeFiles/avitab_plugin.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

cmake problem is the same than with the 0.2.5, but build failed before

HOPE YOU CAN HELP ;-)
THANKS

Navigraph sync gone?

I no longer have the navigraph sync with Avitab (but used to have it previously.) Cannot see any 'navigraph' icons in avitab, and when searching for a large airport (EGSS), no option for charts appears. Any idea what I can check? Have uninstalled/ Avitab with no success - but have confirmed that Navigraph subscription is current and is downloading the AIRAC to x-plane?

OPENSSL_1.0.0

I have problem loading this plugin in Arch Linux System:
symbol SSLv3_client_method version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

SSLv3 support was dropped some time ago and is considered unsafe now. I think this plugin needs to be upgraded to TLS.

How to manually calibrate a chart?

Hi!

So, I have a symlink in such way that Mercato folder -> charts folder. So, under maps -> Mercator`, I'm able to see my charts.

Now I'm trying to manually calibrate it accordingly with the Wiki, but it's not working.

  1. opened it, clicked in track button; since I don't have the correspondent .json, it will ask me to calibrate it
  2. at this moment, a suggested lat/long appears - not sure to where it is pointing
  3. so I put the red box in a distant point in the chart (say, it's an movement airport chart) and then click in track button; it becomes blue
  4. after that, I move the blue box to where my aircraft is standing, then erase the field and press track button again - it will get the current lat/long of the aircraft, and then press track button.
  5. although it shows the red airplane icon pointing to where the aircraft is, it does not follows the aircraft movement in a right way.

I know that I could do it through Little Navmap, but I really wanted to map it to my charts, since I have access to Jeppesen but not to Navigraph.

What am I doing wrong?

Feature request - custom PDF zoomlevel

Especially when i´m loading the Simbrief flightplans,
the adjustable zoomlevel of the pdf is too small or huge.

Feature Request: adding smaller zoomlevel steps or the possibility to enter a custom zoomlevel (e.g. 37%)

Error loading library with macOS High Sierra

It doesn't load in mac, this line found on log file.

By the way, I don't have /opt/local/lib directory on my macOS Hight Sierra.

dlerror:dlopen(/Users/ahmad/Library/Application Support/Steam/steamapps/common/X-Plane 11/Resources/plugins/AviTab/mac_x64/AviTab.xpl, 6): Library not loaded: /opt/local/lib/libcurl.4.dylib
Referenced from: /Users/ahmad/Library/Application Support/Steam/steamapps/common/X-Plane 11/Resources/plugins/AviTab/mac_x64/AviTab.xpl
Reason: Incompatible library version: AviTab.xpl requires version 10.0.0 or later, but libcurl.4.dylib provides version 7.0.0

AviTab not showing on Plugin's page

I Installed AviTab Correctly, but when I open the game It doesn' show up on the plugins page, I don't know what might be causing this. I attached my log file, Thanks in advance!
Log.txt

Feature Request - Ability to change Avitab position on runtime

I am implementing Avitab on FF A350 OIS display, charts page. But the aircraft has the option to switch OIS display from left to pedestal. In that case avitab must be disabled not to be on top of other pages like FMC, checklists, etc.

It will be great to be able to follow OIS display position by changing Avitab position on runtime.

Dragging not possible in VR

In VR, X-Plane sends us the coordinates of the real mouse when performing drag gestures. We need the VR pointer coordinates to properly support gestures. I filed a bug report to the X-Plane team about this.

Feature Requests

Via Mail:

So now I have dataref control of Avitab working, a summary of datarefs I'd like to see, if possible, are:

Avitab/map_latitude
Avitab/map_longitude
Avitab/map_zoomlevel

If I could write to these, I think I could code every function in lua.

Is it possible to hide, or disable the aircraft shape graphic that shows where the user is on the map btw?

Embed navigraph charts as map option

I have a Navigraph subscription, which is linked and I can get my charts in the AviTab... what I'd like it to be able to choose Navigraph Charts as a map option too, especially when they get the VFR charts added in there too!

One reason why this would be useful is in VR the Charts app seems to use hardware acceleration and therefore MoveVR can't display the window.

Starting folder for Aircraft Manuals

I tried to see if this was covered somewhere else. Apologies if I missed it. When I click the manual button in avitab, it starts at the root of my steam common folder, meaning I have to scroll to my xplane folder before I can get to the folders for my specific aircraft. The issue is I have a lot (probably too many) steam apps, and, well, x-plane starts with x. Ive never finished scrolling in vr, I usually accidentally click outside the window or click back and have to start over. I have tried it in nonvr in a flight using auto pilot and the mouse and got into the aircraft folder, but the next time I go it its back to steamapps/common. Is there somewhere to change the starting path that I missed? Otherwise this is a very very cool tool.

Linux: SEGV when closing PDF in Charts view

Avitab crashes Xplane with a segmentation fault when I close a PDF (Charts) on Linux x86_64.

I compiled the latest git version (plugin and standalone). Same problem on both.

Here is a gdb backtrace of the standalone version (no debug-versions of the libs installed).
I started the Prog, selected Charts, loaded the readme.pdf and closed it.

`(gdb) run
17:31:25 i: AviTab logger initialized
17:31:25 v: Main thread has id -134555712
17:31:25 v: Initializing GLFW driver...
17:31:25 v: Initializing GUI driver
[New Thread 0x7ffff47a8700 (LWP 4085)]
17:31:25 v: LVGL thread has id -193296640
[New Thread 0x7ffff3fa7700 (LWP 4086)]
17:31:25 i: Loading nav data...
17:31:25 v: Couldn't load desired font, using fallback font
17:31:25 e: Couldn't load nav data: Couldn't open file: /home/users/me/X-Plane 11/Resources/default scenery/default apt dat/Earth nav data/apt.dat
[Thread 0x7ffff3fa7700 (LWP 4086) exited]
17:31:25 v: Starting AviTab 0.3.15
17:31:25 i: No panel config - window only mode
17:31:25 i: Showing tablet
17:31:25 v: Creating GLFW window 'Aviator's Tablet 0.3.15', dimensions 800x480
17:31:25 v: Creating timer in thread -193296640
17:31:25 v: Creating timer in thread -193296640
17:31:25 v: Creating timer in thread -193296640
[New Thread 0x7ffff1320700 (LWP 4087)]
17:31:25 v: TileCache spawned thread -248379648
17:31:25 v: Couldn't load desired font, using fallback font
17:31:25 e: Couldn't load nav data: std::exception
17:31:31 v: Creating timer in thread -193296640
17:31:31 v: Init fitz in thread -193296640
17:31:31 i: Loading '/home/users/me/avitab/avitab/build/charts/readme.pdf in thread -193296640'
17:31:31 v: Document has 1 pages
17:31:31 i: Document loaded
[New Thread 0x7ffff3fa7700 (LWP 4091)]
17:31:31 v: TileCache spawned thread -201689344
17:31:31 v: Couldn't load desired font, using fallback font
17:31:31 v: Loading page 0 in thread -201689344
17:31:31 v: Page 0 rasterized
17:31:33 v: TileCache ending thread -201689344
[Thread 0x7ffff3fa7700 (LWP 4091) exited]
17:31:33 v: Destroying timer in thread -193296640

Thread 2 "AviTab-standalo" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff47a8700 (LWP 4085)]
0x000000000045051e in std::__shared_ptr<avitab::App, (__gnu_cxx::_Lock_policy)2>::get() const ()
(gdb) bt
#0 0x000000000045051e in std::__shared_ptr<avitab::App, (__gnu_cxx::_Lock_policy)2>::get() const ()
#1 0x000000000044fc72 in std::__shared_ptr_access<avitab::App, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const ()
#2 0x000000000044f382 in std::__shared_ptr_access<avitab::App, (__gnu_cxx::_Lock_policy)2, false, false>::operator->() const ()
#3 0x000000000048652e in avitab::ChartsApp::onSelect(std::vector<platform::DirEntry, std::allocatorplatform::DirEntry > const&, unsigned long)::{lambda()#1}::operator()() const ()
#4 0x0000000000486be5 in std::_Function_handler<void (), avitab::ChartsApp::onSelect(std::vector<platform::DirEntry, std::allocatorplatform::DirEntry > const&, unsigned long)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#5 0x000000000041d1ce in std::function<void ()>::operator()() const ()
#6 0x0000000000470944 in avitab::App::exit()::{lambda()#1}::operator()() const ()
#7 0x0000000000470acb in std::_Function_handler<void (), avitab::App::exit()::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#8 0x000000000041d1ce in std::function<void ()>::operator()() const ()
#9 0x0000000000440ef2 in avitab::LVGLToolkit::guiLoop() ()
#10 0x0000000000442c88 in void std::__invoke_impl<void, void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit>(std::__invoke_memfun_deref, void (avitab::LVGLToolkit::&&)(), avitab::LVGLToolkit&&) ()
#11 0x0000000000442466 in std::__invoke_result<void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit>::type std::__invoke<void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit>(void (avitab::LVGLToolkit::&&)(), avitab::LVGLToolkit&&) ()
#12 0x0000000000443fa3 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) ()
#13 0x0000000000443f25 in std::thread::_Invoker<std::tuple<void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit> >::operator()() ()
#14 0x0000000000443ec4 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (avitab::LVGLToolkit::)(), avitab::LVGLToolkit> > >::_M_run() ()
#15 0x00007ffff744538f in ?? () from /usr/lib64/libstdc++.so.6
#16 0x00007ffff7713569 in start_thread () from /lib64/libpthread.so.0
#17 0x00007ffff69469ef in clone () from /lib64/libc.so.6
(gdb) quit
`

Feature Request - List custom charts in the Airports app

I've organised custom charts in the charts directory by the ICAO airport code, like so:
image

It would be useful if the Airport app could list any charts in a folder with the same ICAO code. This could be done in a similar way to how the Navigraph charts are listed - eg appending "Custom Charts" to the list, or if there is no link Navigraph account, just the charts on their own.

image

I'm not a big C++ developer, especially when it comes to GUI stuff, but I'll have a stab at getting a PR together.

Pre-compiled binaries for Windows

Not able to compile GLFW on my own, right out of the box, I went ahead and downloaded the binaries so that I could at least run the example provided in the tutorial; unfortunately, the binaries for GLFW do not include the dependencies (glad). So, it would be nice if that was the case.

Read airport data from custom scenery folder

Avitab only reads from the x-plane default dataset of airports when showing frequencies, runways, etc. If there's updated scenery in the 'Custom Scenery' folder, it would be nice if Avitab would check for updated scenery and data.

VOR-DME-NDB overlay

Please, add a new overlay like airports. I think that a new VOR-DME-NDB overlay could help a lot.

Unreliable map loading

Initially the default zoom level of the map loads fine but other zoom levels only partially load or not at all, after a short time it appears to stop loading completely on all zoom levels, one possible cause I thought of is bandwidth, I'm limited to about 3mbps down which may not be quite enough to load the map easily, but even with the follow mode off it doesn't load at all no matter how long I wait.

AviTab.log

Empty chart list

Chart list is empty and no ../ button. In charts folder 2156 pdf files.

Feature Request: Checklists

Any plans to port a checklist feature like the one in the 737 Ultimate to a generic feature in AviTab? Is anyone working on this? If not, would you welcome some development help or a pull request to add this feature?

Disk usage

Would it be possible to do disk cleanup of the downloaded tiles after X amount of time passed since filemtime ?

Avitab 0.3.11 - false airport metar

Hello,

i just noticed that if you will choose an airport,
the recceived & shown meta is from an different IVAO aiport.

Bug? I tried clean installation and restarts with same mismatching result.

Build under msys2/mingw64

I did see another long issue (now closed) with the same exact problem.

 > /c/Users/salazag/Downloads/glfw
cmake ../glfw-3.3.2
-- The C compiler identification is GNU 10.1.0
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0-17763 to use this system, please post your config file on discourse.cmake.org so it can be added to cmake
-- Check for working C compiler: /mingw64/bin/cc.exe
System is unknown to cmake, create:
Platform/MINGW64_NT-10.0-17763 to use this system, . . . 

These are a few values from the environment:

 > /c/Users/salazag/Downloads/glfw
env | grep MINGW
MINGW_PACKAGE_PREFIX=mingw-w64-x86_64
MINGW_CHOST=x86_64-w64-mingw32
MSYSTEM=MINGW64
MINGW_PREFIX=/mingw64
 > /c/Users/salazag/Downloads/glfw
uname -a
MINGW64_NT-10.0-17763 md2ysbtc 3.1.4-340.x86_64 2020-05-22 08:28 UTC x86_64 Msys

I wonder what value GLFW is expecting and how picky it may be...is there a way for me to overwrite MINGW64_NT-10.0-17763 with just MINGW64_NT-10.0 ? or some trick along those lines?

mupdf breaking changes

I was following your 'compiling' instructions on the wiki, but because mupdf did some breaking changes in their latest version (1.14.0rc1), I ran into all kinds of errors. Manually downloading the 1.13.0. version and compiling that one fixed those.

Feature request: Tabs in Chart view

It would be nice to have tabs in chart view so we can open multiple pdf files, similar to what we can already do with Navigraph.
I know we can switch PDFs but with the click of a button but tabs would be better I think.

ATIS Frequency still a bit off

Hi @fpw ,

first of all thanks for this wonderful plugin. I'm really enjoying using it in the Zibo Mod.
I was happy to see, that you fixed the ATIS frequency display in 0.3.14. unfortunately there still might be some minor issues. Maybe it's an rounding error. My base airport EDDV seems to be right now, but I just recently noticed that NaviTab shows the ATIS frequency for Prag (LKPR) as 122.16 but in the simulator it actually is 122.15

Cheers and keep up the great work

Patrick

Crash on Mac

Hi, just experienced a crash while starting X-Plane. I managed to get a backtrace, and thought I would leave it here in case anybody can track down the issue.

This is using the newest release of avitab, with the 10.30 beta 1.

* thread #30, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x00007fff60f6d044 libc++.1.dylib`std::__1::__shared_weak_count::__release_weak() + 4
libc++.1.dylib`std::__1::__shared_weak_count::__release_weak:
->  0x7fff60f6d044 <+4>:  movq   0x10(%rdi), %rax
    0x7fff60f6d048 <+8>:  testq  %rax, %rax
    0x7fff60f6d04b <+11>: je     0x7fff60f6d061            ; <+33>
    0x7fff60f6d04d <+13>: movq   $-0x1, %rax
Target 0: (X-Plane) stopped.
(lldb) bt
* thread #30, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
  * frame #0: 0x00007fff60f6d044 libc++.1.dylib`std::__1::__shared_weak_count::__release_weak() + 4
    frame #1: 0x00000000804f46dc AviTab.xpl`std::__1::weak_ptr<xdata::Fix>::~weak_ptr() + 44
    frame #2: 0x00000000804f0035 AviTab.xpl`std::__1::weak_ptr<xdata::Fix>::~weak_ptr() + 21
    frame #3: 0x000000008055f350 AviTab.xpl`xdata::Runway::attachILSData(std::__1::weak_ptr<xdata::Fix>) + 720
    frame #4: 0x0000000080546ed0 AviTab.xpl`xdata::Airport::attachILSData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::weak_ptr<xdata::Fix>) + 1712
    frame #5: 0x00000000804ef123 AviTab.xpl`xdata::NavaidLoader::onNavaidLoaded(xdata::NavaidData const&) + 3827
    frame #6: 0x00000000804f12ca AviTab.xpl`xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()(xdata::NavaidData const&) const + 74
    frame #7: 0x00000000804f126d AviTab.xpl`void std::__1::__invoke_void_return_wrapper<void>::__call<xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&, xdata::NavaidData const&>(xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&&, xdata::NavaidData const&&&) + 77
    frame #8: 0x00000000804f1149 AviTab.xpl`std::__1::__function::__func<xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0, std::__1::allocator<xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>, void (xdata::NavaidData const&)>::operator()(xdata::NavaidData const&) + 57
    frame #9: 0x000000008053a339 AviTab.xpl`std::__1::function<void (xdata::NavaidData const&)>::operator()(xdata::NavaidData const&) const + 121
    frame #10: 0x0000000080539f36 AviTab.xpl`xdata::NavaidParser::parseLine() + 5702
    frame #11: 0x000000008053bacd AviTab.xpl`void std::__1::__invoke_void_return_wrapper<void>::__call<std::__1::__bind<void (xdata::NavaidParser::*)(), xdata::NavaidParser*>&>(std::__1::__bind<void (xdata::NavaidParser::*)(), xdata::NavaidParser*>&&&) + 285
    frame #12: 0x000000008053b919 AviTab.xpl`std::__1::__function::__func<std::__1::__bind<void (xdata::NavaidParser::*)(), xdata::NavaidParser*>, std::__1::allocator<std::__1::__bind<void (xdata::NavaidParser::*)(), xdata::NavaidParser*> >, void ()>::operator()() + 41
    frame #13: 0x000000008048bf16 AviTab.xpl`std::__1::function<void ()>::operator()() const + 102
    frame #14: 0x0000000080512e49 AviTab.xpl`xdata::BaseParser::eachLine(std::__1::function<void ()>) + 1113
    frame #15: 0x0000000080538895 AviTab.xpl`xdata::NavaidParser::loadNavaids() + 517
    frame #16: 0x00000000804ee17e AviTab.xpl`xdata::NavaidLoader::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 158
    frame #17: 0x00000000804c7a7a AviTab.xpl`xdata::XData::loadNavaids() + 266
    frame #18: 0x00000000804c72d0 AviTab.xpl`xdata::XData::load() + 80
    frame #19: 0x0000000080489ff2 AviTab.xpl`avitab::Environment::loadNavWorldAsync() + 338
    frame #20: 0x000000008048d672 AviTab.xpl`std::__1::shared_ptr<xdata::World> std::__1::__async_func<std::__1::shared_ptr<xdata::World> (avitab::Environment::*)(), avitab::Environment*>::__execute<1ul>(std::__1::__tuple_indices<1ul>) + 194
    frame #21: 0x000000008048d59c AviTab.xpl`std::__1::__async_func<std::__1::shared_ptr<xdata::World> (avitab::Environment::*)(), avitab::Environment*>::operator()() + 28
    frame #22: 0x000000008048d034 AviTab.xpl`std::__1::__async_assoc_state<std::__1::shared_ptr<xdata::World>, std::__1::__async_func<std::__1::shared_ptr<xdata::World> (avitab::Environment::*)(), avitab::Environment*> >::__execute() + 52
    frame #23: 0x000000008048e4ab AviTab.xpl`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (std::__1::__async_assoc_state<std::__1::shared_ptr<xdata::World>, std::__1::__async_func<std::__1::shared_ptr<xdata::World> (avitab::Environment::*)(), avitab::Environment*> >::*)(), std::__1::__async_assoc_state<std::__1::shared_ptr<xdata::World>, std::__1::__async_func<std::__1::shared_ptr<xdata::World> (avitab::Environment::*)(), avitab::Environment*> >*> >(void*) + 667```

Guide for implementing Avitab in an aircraft

Hi, I'm loving using Avitab, but particularly when it is integrated into an aircraft. For example the Zibo mod 737 feels much nice to use than a floating window in the sim, as it feels more immersive.

Is there a guide for integrating it into an aircraft model? At the moment I have no idea how the Avitab gets placed in the Zibo 3D model and would be interested in know how to get started.

Can you point me in the right direction?

Thanks, and great work on the project!

Feature request: Open FlightMaps as map provider

  • As a sim maintainer I would like to configure map sources for avitab to add new map sources (example: OFM)

  • As a pilot I would like to change the map provider of the online map in the tablet to show OFM charts for VFR flying.

The guys from open flightmaps seem to be very cooperative in providing links to use their map. And it sounds their map uses the same format as OpenTopo which is the current map provider. So there should be "no difficulties"(tm) in using OFM in the tab.

But you can use the EPGS tiles from OFM offline: Yes, I know. But they do not contain all information visible on the online map. Specially VFR patterns and routes.

Documentation Flow

First time user.
After downloading AviTab from the x-plane forum the readme.txt file says "You can find the AviTab manual at https://github.com/fpw/avitab/wiki".
Upon clicking the link I'm presented with an empty wiki.

Fix: Add a link at minimum to the Wiki about installation and all the great info on the forum.

Betterpushback

Hello folks, i'm just wondering where do you put the file. you don't seem to be clear on that.
Or im just not in the right place.
THX...RobertC

Question: Save settings

When I change some basic settings in Avitab, it works fine. But when I reboot the x-plane program, all settings in Avitab was reset to default.

So every time before the flight I have to spend a lot of time to change settings in Avitab to my preferred settings. Is there any solution for me to save my Avitab settings and load it during initialization?

Thanks!

Working on additional features

I love avitab, and I want to add some features to it:

  • GPS on/off to have a static map without showing your position (for more realistic VFR flying)
  • PilotEdge connect button (for easy connect/disconnect)
  • Show traffic on moving map (more specifically PE traffic)
  • Weight/balance editing

I'm doing these in a fork, and I will create a PR when it's done, just wanted to let you know in case you happen to be considering any of these features.

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.