#include #include #include #include #include #include #include #include #include #include #include #include "sprite_data.hpp" #include "keyboard_catcher_widget.hpp" #include "pixel_grid_sprite.hpp" #include "variants.hpp" #include "zoomed_scene_sprite.hpp" namespace BGTU::ComputerGraphicsLabWork::Lab1 { volatile RendererApi::Color bg{0, 0, 0}; RendererApi::Color::Transparent fg{255, 255, 255, 127}; int main(int argc, char **argv) { #if 1 QApplication qApplication{argc, argv}; PixelGridSprite pixels_grid_sprite{RendererApi::Color{0, 0, 0}, RendererApi::Color{16, 16, 16}}; ZoomedSceneSprite zoomed_scene_sprite{}; auto sprites = std::to_array *const>({ &pixels_grid_sprite, &zoomed_scene_sprite }); Lab1SpriteData::Provider sprites_data{1}; sprites_data.set_pixel_size(16); sprites_data.set_sub_sprites(variant1.sprites, variant1.count); 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); QObject::connect(&kbd, &KeyboardCatcherWidget::key_pressed_G, &sprites_data, &Lab1SpriteData::Provider::invert_show_grid); QtUtilities::SeparateThreadedDefaultRendererLinear 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 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; #else auto c = Utilities::apply_transparent_color(*(RendererApi::Color*)&bg, fg); std::cout << c.red << c.green << c.blue << std::endl; return 0; #endif } } int main(int argc, char **argv) { return BGTU::ComputerGraphicsLabWork::Lab1::main(argc, argv); }