#pragma once

#include <glm/vec2.hpp>
#include <glm/vec4.hpp>
#include <yoga/Yoga.h>

class Node;

namespace pp::panopainter {

void legacy_ui_node_set_width(Node& node, float value);
void legacy_ui_node_set_width_percent(Node& node, float value);
void legacy_ui_node_set_height(Node& node, float value);
void legacy_ui_node_set_height_percent(Node& node, float value);
void legacy_ui_node_set_size(Node& node, float w, float h);
void legacy_ui_node_set_size(Node& node, glm::vec2 value);
void legacy_ui_node_set_min_size(Node& node, float w, float h);
void legacy_ui_node_set_min_size(Node& node, glm::vec2 value);
void legacy_ui_node_set_max_size(Node& node, float w, float h);
void legacy_ui_node_set_max_size(Node& node, glm::vec2 value);
void legacy_ui_node_set_max_width(Node& node, float value);
void legacy_ui_node_set_max_width_percent(Node& node, float value);
void legacy_ui_node_set_max_height(Node& node, float value);
void legacy_ui_node_set_max_height_percent(Node& node, float value);
void legacy_ui_node_set_min_width(Node& node, float value);
void legacy_ui_node_set_min_width_percent(Node& node, float value);
void legacy_ui_node_set_min_height(Node& node, float value);
void legacy_ui_node_set_min_height_percent(Node& node, float value);
void legacy_ui_node_set_padding(Node& node, float t, float r, float b, float l);
glm::vec4 legacy_ui_node_get_padding(const Node& node);
void legacy_ui_node_set_margin(Node& node, float t, float r, float b, float l);
glm::vec4 legacy_ui_node_get_margin(const Node& node);
void legacy_ui_node_set_position(Node& node, float l, float t);
void legacy_ui_node_set_position(Node& node, float l, float t, float r, float b);
void legacy_ui_node_set_position(Node& node, glm::vec2 value);
float legacy_ui_node_get_width(const Node& node);
float legacy_ui_node_get_height(const Node& node);
glm::vec2 legacy_ui_node_get_position(const Node& node);
glm::vec2 legacy_ui_node_get_size(const Node& node);
YGDirection legacy_ui_node_get_rtl(const Node& node);
void legacy_ui_node_set_flex_grow(Node& node, float value);
void legacy_ui_node_set_flex_shrink(Node& node, float value);
void legacy_ui_node_set_flex_dir(Node& node, YGFlexDirection value);
void legacy_ui_node_set_flex_wrap(Node& node, YGWrap value);
void legacy_ui_node_set_justify(Node& node, YGJustify value);
void legacy_ui_node_set_align(Node& node, YGAlign value);
void legacy_ui_node_set_positioning(Node& node, YGPositionType value);
void legacy_ui_node_set_aspect_ratio(Node& node, float ar);
void legacy_ui_node_set_rtl(Node& node, YGDirection dir);
bool legacy_ui_node_get_visibility(const Node& node);
void legacy_ui_node_set_visibility(Node& node, bool visible);
void legacy_ui_node_toggle_visibility(Node& node);

} // namespace pp::panopainter
