/
d.vision
/
division_engine_cpp
Обзор
Документация
Войти
/
d.vision
/
division_engine_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/ffi/ffi.cpp
81 строка
3 KB
den163
Added SDF font support
05 дек 2024, 01:01
05 дек 2024, 01:01
a1df803
Код
Авторство
О чём код?
#include "division_engine/ffi/ffi.hpp" #include "canvas/components/collision_rect.hpp" #include "canvas/components/render_texture.hpp" #include "division_engine/canvas/border_radius.hpp" #include "division_engine/canvas/components/render_bounds.hpp" #include "division_engine/canvas/components/renderable_rect.hpp" #include "division_engine/canvas/components/renderable_text.hpp" #include "division_engine/canvas/rect_drawer.hpp" #include "division_engine/canvas/render_manager.hpp" #include "division_engine/canvas/state.hpp" #include "division_engine/canvas/text_drawer.hpp" #include "division_engine_core/types/id.h" #include "flecs/addons/cpp/entity.hpp" #include <flecs.h> #include <stdexcept> #include <stdint.h> #include <tuple> using division_engine::canvas::BorderRadius; using division_engine::Rect; using division_engine::canvas::RenderManager; using division_engine::canvas::State; using division_engine::canvas::components::RenderableRect; using division_engine::canvas::components::RenderableText; using division_engine::canvas::components::RenderBounds; using rect_renderable_t = division_engine::canvas::RectDrawer::renderable_type; using text_renderable_t = division_engine::canvas::TextDrawer::renderable_type; extern "C" { uint64_t division_ffi_create_drawable_rect( State* state, RenderManager* render_manager, uint64_t batch_id ) { return render_manager->create_renderer(*state, rect_renderable_t {}, 0, batch_id); } uint64_t division_ffi_create_drawable_text( division_engine::canvas::State* state, division_engine::canvas::RenderManager* render_manager ) { return render_manager->create_renderer(*state, text_renderable_t {}); } uint64_t division_ffi_create_selectable( division_engine::canvas::State* state, division_engine::canvas::RenderManager* render_manager ) { return render_manager->create_renderer(*state, std::tuple<CollisionRect> {}) .add<Selectable>(flecs::Tag); } DivisionId division_ffi_create_texture(division_engine::canvas::State* state, const char* texture_path) { return state->context.create_texture(texture_path); } uint64_t division_ffi_create_texture_batch(division_engine::canvas::State* state, DivisionId texture_id) { return state->world.entity().set(RenderTexture { texture_id }); } void division_ffi_destroy_texture(division_engine::canvas::State* state, DivisionId texture) { state->context.delete_texture(texture); } void division_ffi_destroy_entity(division_engine::canvas::State* state, uint64_t entity_id) { flecs::entity { state->world, entity_id }.destruct(); } }