Giter Site home page Giter Site logo

kompas-core's Introduction

Kompas is an portable navigation system with goal to be as multiplatform and extensible as possible. Its core library is written in pure C++ with no external dependencies, on top of it is Qt and SDL GUI. The application is licensed under LGPLv3.

This is Kompas Core library, needed by Qt and SDL GUI. It contains Plugin Manager, basic plugins for map servers and projections and various supporting utilities.

INSTALLATION

You can either use packaging scripts, which are stored in package/ subdirectory, or compile and install everything manually.

Dependencies

  • CMake - for building
  • Qt - optionally, for unit tests

Compilation, installation

mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr .. && make
make install

If you want to build also unit tests (which are not built by default), pass -DBUILD_TESTS=True to CMake. Unit tests use QtTest framework.

CONTACT

Want to learn more about the application? Found a bug or want to tell me an awesome idea? Feel free to visit project website or contact me at:

kompas-core's People

Contributors

jandupal avatar mosra avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

gauravalgo

kompas-core's Issues

Caching plugin interface

Implement an interface for hierarchical caching, either as filesystem cache or network cache.

Hierarchy should be defined with sequence of set() and get() functions, for example:

Child get(Node node);
set(Node node, Child child);

Plugin interfaces which need cached data access implement with these functions their own hierarchy and it should be possible for caching plugin to implement all or only some hierarchies.

  1. Define an interface - 10%
  2. Implement an plugin (in kompas-plugins) - 70%
  3. Make use of caching at least in AbstractRasterModel - 20%

Timeline support

Some maps provide time-based data, for example weather maps.These maps should expose that to user, so it's possible to view data from different date/time. The map should somehow provide timestamps for which the data are available:

  • All timestamps (bad for lots of timestamps),
  • Range and interval of timestamps (bad for irregular steps)

Examples of timeline-enabled data:

  • Weather maps (limited 15 minutes steps back, forecast every 6 hours)
  • Time-based path (irregular steps...)
  • Planet position (infinitely small steps, infinite range)

Vector plugin interface

Implement interface for plugins with vector data - unlike raster map plugins vector data are not limited only to maps. Because of that the vector plugin interface should be divided into two parts:

  • Interface for data access - "model"
  • Interface for viewing and managing the data (e.g. in kompas-qt) - "view"

Vector data can be really anything:

  • vector maps
  • points of interest
  • webcams, geotagged images
  • 360° panoramatic view / "street-view"
  • 3D objects
  • paths
  • ...

Data source:

  • from URL
  • from file
  • "direct input" (e.g. URL which has path coordinates encoded in itself)

For one model there can be multiple viewers, for e.g. path there can be direct in-map viewer or widget with elevation, length, time statistics.

Retrieving home directory path on Windows is not working.

The home directory is retrieved using some crazy winapi call, but the call doesn't retrieve anything.

TCHAR h[MAX_PATH];
if(!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, h)))
    return "";

Qt uses for the same thing (QDesktopServices) function SHGetSpecialFolderPath with totally different syntax, but the function is not in defined in shlobj.h (technically is, but some preprocessor black magic hides it).

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.