76 lines
2.8 KiB
C++
76 lines
2.8 KiB
C++
#include <array>
|
|
#include <iostream>
|
|
#include <QApplication>
|
|
#include <QMainWindow>
|
|
#include <QTimer>
|
|
#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/utilities/voxel_painter_exporter_to_packed_array.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"
|
|
#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<RendererApi::Sprite<Lab1SpriteData, Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> *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<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;
|
|
#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);
|
|
} |