forked from BGTU/computer-graphics-0
26 lines
1.0 KiB
C++
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);
|
|
}
|
|
}
|
|
};
|
|
} |