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:
-
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 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));
}
}
Dostępna jest wygenerowana dokumentacja API Doxygen.
Wymagane biblioteki:
- SFML
- OpenGL
- GLEW
Kod zawarty w repozytorium wymaga C++11.
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