Skip to content

🎨 Wieloplatformowa biblioteka graficzna C++ dla prototypowania i szybkiej iteracji.

Notifications You must be signed in to change notification settings

avelanarius/rapid-viz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RapidViz Build status API Documentation

RapidViz to wieloplatformowa biblioteka graficzna napisana w C++, zorientowana na prostotę użycia, zaprojektowana pod kątem prototypowania i szybkiej iteracji.

RapidViz pozwala na wyświetlanie figur z szerokiej biblioteki kształtów, jak również różnego rodzaju linii oraz liczb. Proces wizualizacji odbywa się na osobnym wątku i nie wymaga obsługi ze strony użytkownika biblioteki.

RapidViz umożliwia w prosty sposób na interakcję z interfejsem: kliknięcie elementów widocznych na ekranie, klawisze klawiaturowe oraz wpisywane komendy. Cały przebieg wizualizacji może być zapisywany do pliku i interaktywnie odtwarzany w późniejszym czasie.


Przykładowy program, wykorzystujący RapidViz:

Spis treści

Funkcjonalność

  • Figury (na obrazku część):

    • Kształty z dostępnej biblioteki kształtów
    • Linie, z możliwością dostosowania grotów strzałek
    • Liczby
  • Pasek ze statusem, wyświetlający modyfikowalny status i pole opisu elementu pod kursorem myszki.

  • Minimapa, pozwalająca na szybkie przemieszczanie się po obszarze roboczym.

  • Wiele okien, ułatwiające obserwowanie obszaru roboczego w wielu miejscach na raz.

  • Interakcja z interfejsem, umożliwiająca przechwytywanie zdarzeń kliknięcia widocznych elementów, wciśnięcia klawisza lub wpisania komendy.

  • Zapis przebiegu wizualizacji, który może być później interaktywnie odtwarzany.

  • Akceleracja sprzętowa: biblioteka korzysta z OpenGL, dzięki czemu wyświetlanie jest wspomagane sprzętowo przez kartę graficzną.

  • Wsparcie kontrolera: kontroler Xbox One.

  • Wielowątkowość: proces wizualizacji działa na osobnym wątku, a wszystkie metody wizualizacji są bezpieczne wielowątkowo. Pozwala to na aktualizowanie UI, nawet gdy główny wątek jest zajęty.

Przykład użycia

Przykład dostępny w pliku RapidViz.cpp.

#include "wizualizacja.h"
#include "element_wiz.h"

int main() {
    /* Stwórz obiekt wizualizacji z początkowym oknem
     * o wymiarach 600 x 600. */
    Wizualizacja wiz(600, 600);

    while (true) {
        /* Jeżeli chcemy zmienić aktualny stan wizualizacji,
         * należy przekazać vector elementów. */
        std::vector<ElementWiz> wyswietlaneElementy;

        /* Stwórz kształt typu KWADRAT o środku w punkcie
         * (5, 5), wymiarach 10 x 10, kolorze White i opisie
         * "Tlo" (opis widoczny po najechaniu na element). */
        wyswietlaneElementy.push_back(
            ElementWiz::ksztalt(Ksztalt::KWADRAT,
                                { 5, 5 }, 10, sf::Color::White, "Tlo"));

        wyswietlaneElementy.push_back(
            ElementWiz::ksztalt(Ksztalt::DOM,
                                { 2, 2 }, 1, sf::Color::Red, "Pozycja startowa"));
        wyswietlaneElementy.push_back(
            ElementWiz::ksztalt(Ksztalt::GWIAZDA_8,
                                { 7, 7 }, 1, sf::Color::Red, "Pozycja docelowa"));

        wyswietlaneElementy.push_back(
            ElementWiz::linia({ 3, 3 }, { 6, 6 }, 0.15, StylLinii::STYL_KOLO_TROJKAT,
                              sf::Color::Blue, "Trasa"));

        /* Zaktualizuj wyświetlane elementy. */
        wiz.setNoweElementyWiz(wyswietlaneElementy);

        /* Ustaw status, widoczny w górnej belce. */
        wiz.setStatus("Przydatne informacje.");

        /* W tym przykładzie aktualizujemy stan wizualizacji
         * co sekundę, jednak wystarczy robić to tylko gdy
         * rzeczywiście chcemy zmienić wyświetlany stan. */
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

Dokumentacja API

Dostępna jest wygenerowana dokumentacja API Doxygen.

Instalacja

Wymagane biblioteki:

  • SFML
  • OpenGL
  • GLEW

Kod zawarty w repozytorium wymaga C++11.

Windows, Visual Studio 2017

Repozytorium zawiera projekt Visual Studio 2017. Potrzebne biblioteki należy zainstalować za pomocą narzędzia vcpkg:

vcpkg install sfml
vcpkg install opengl
vcpkg install glew

:: 64-bit
vcpkg install sfml:x64-windows
vcpkg install opengl:x64-windows
vcpkg install glew:x64-windows

vcpkg integrate

About

🎨 Wieloplatformowa biblioteka graficzna C++ dla prototypowania i szybkiej iteracji.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages