bresenham-0.rs/programs/labs1_2/src/zoomed_scene_sprite.hpp

26 lines
1.0 KiB
C++

#pragma once
#include <limits>
#include <bgtu/computer_graphics_lab_work/renderer_api/color.hpp>
#include <bgtu/computer_graphics_lab_work/renderer_api/point.hpp>
#include <bgtu/computer_graphics_lab_work/renderer_api/sprite.hpp>
#include <bgtu/computer_graphics_lab_work/utilities/default_renderer_linear.hpp>
#include "variants/sprite_data.hpp"
namespace BGTU::ComputerGraphicsLabWork::Impl {
class ZoomedSceneSprite : public RendererApi::Sprite<SpriteData, Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> {
private:
public:
ZoomedSceneSprite() = default;
void draw(Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl *frame, const SpriteData *data) const override {
Utilities::ZoomedVoxelPainter<Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> zoomed_painter{frame, data->central_pixel_tl, data->pixel_size};
for (std::size_t i = 0; i < data->sub_sprites_count; i++) {
zoomed_painter.current_owner = data->sub_sprites[i];
data->sub_sprites[i]->draw(&zoomed_painter, &data->shape_data);
}
}
};
}