computer-graphics-0/programs/lab1/src/main.cpp

54 lines
2.0 KiB
C++

#include <QApplication>
#include <QMainWindow>
#include <QTimer>
#include <array>
#include <bgtu/computer_graphics_lab_work/renderer_api/color.hpp>
#include <bgtu/computer_graphics_lab_work/utilities/default_renderer_linear.hpp>
#include <bgtu/computer_graphics_lab_work/qt_utilities/separate_threaded_renderer.hpp>
#include <bgtu/computer_graphics_lab_work/qt_utilities/renderer_widget.hpp>
#include <bgtu/computer_graphics_lab_work/qt_utilities/owned_qimage.hpp>
#include "sprite_data.hpp"
#include "keyboard_catcher_widget.hpp"
#include "pixel_grid_sprite.hpp"
namespace BGTU::ComputerGraphicsLabWork::Lab1 {
int main(int argc, char **argv) {
QApplication qApplication{argc, argv};
PixelGridSprite pixels_grid_sprite{RendererApi::Color{0, 0, 0}, RendererApi::Color{32, 32, 32}};
auto sprites = std::to_array<RendererApi::Sprite<Lab1SpriteData> *const>({
&pixels_grid_sprite
});
Lab1SpriteData::Provider sprites_data{1};
sprites_data.set_pixel_size(16);
QMainWindow w{};
KeyboardCatcherWidget kbd{&w};
QObject::connect(&kbd, &KeyboardCatcherWidget::key_pressed_PageDown, &sprites_data, &Lab1SpriteData::Provider::decrease_pixel_size);
QObject::connect(&kbd, &KeyboardCatcherWidget::key_pressed_PageUp, &sprites_data, &Lab1SpriteData::Provider::increase_pixel_size);
QtUtilities::SeparateThreadedDefaultRendererLinear<Lab1SpriteData> renderer{};
renderer.set_sprite_data_provider(&sprites_data);
renderer.set_sprites(sprites.data(), sprites.size());
renderer.set_background(BGTU::ComputerGraphicsLabWork::RendererApi::Color{0, 0, 0});
QtUtilities::RendererWidget<Lab1SpriteData> canvas{&renderer, &kbd};
QObject::connect(&canvas, &QtUtilities::_RendererWidget_SignalSlots::resized, &sprites_data, &Lab1SpriteData::Provider::set_frame_size);
w.setCentralWidget(&canvas);
w.show();
QApplication::exec();
return 0;
}
}
int main(int argc, char **argv) {
return BGTU::ComputerGraphicsLabWork::Lab1::main(argc, argv);
}