82 std::string
id =
"panel";
102 std::string
id =
"popup";
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
float f32
Số thực 32 bit.
Definition _types.h:28
bool ui_draw_panel(context &ctx, ui_layout &layout, const char *panel_id, const ui_event_callback &on_event=nullptr)
Vẽ một panel cụ thể trong layout.
void ui_layout_set_int(ui_layout &layout, const char *widget_id, i32 value)
Gán index cho choice.
bool ui_layout_save(const char *path, const ui_layout &layout, bool pretty=true)
Ghi bố cục UI ra file JSON.
void ui_draw_layout(context &ctx, ui_layout &layout, const ui_event_callback &on_event=nullptr)
Vẽ tất cả các panel có cờ visible == true và các popup đang open.
f32 ui_layout_get_float(const ui_layout &layout, const char *widget_id, f32 fallback=0.0f)
Đọc giá trị float của slider hoặc progress.
ui_style ui_pixel_style()
Style pixel-art tiêu chuẩn của njin (góc vuông phẳng, kích thước nhỏ gọn 16px).
bool ui_layout_is_clicked(const ui_layout &layout, const char *widget_id)
Kiểm tra nút có vừa được bấm trong lần vẽ gần nhất hay không.
std::function< void(const ui_layout_event &)> ui_event_callback
Kiểu hàm callback khi có sự kiện UI.
Definition njin_ui_layout.h:163
void ui_layout_set_text(ui_layout &layout, const char *widget_id, const char *text)
Gán nhãn/văn bản cho widget.
bool ui_layout_parse(const json_value &json, ui_layout &out)
Phân tích dữ liệu JSON thành ui_layout.
std::string ui_panel_generate_cpp(const ui_panel_data &panel, const char *func_name="draw_panel")
Sinh mã nguồn C++ cho một panel.
bool ui_layout_load(context &ctx, const char *path, ui_layout &out)
Nạp bố cục UI từ file JSON.
bool ui_layout_get_bool(const ui_layout &layout, const char *widget_id, bool fallback=false)
Đọc giá trị bool của toggle.
ui_style ui_default_style()
Giao diện mặc định: panel tối trong suốt, nút bo góc, màu nhấn xanh.
ui_widget_kind
Loại widget trong layout UI khai báo.
Definition njin_ui_layout.h:18
i32 ui_layout_get_int(const ui_layout &layout, const char *widget_id, i32 fallback=0)
Đọc index của choice.
json_value ui_layout_to_json(const ui_layout &layout)
Chuyển đổi ui_layout thành json_value để lưu file.
void ui_layout_set_bool(ui_layout &layout, const char *widget_id, bool value)
Gán giá trị bool cho toggle.
void ui_layout_set_float(ui_layout &layout, const char *widget_id, f32 value)
Gán giá trị float cho slider hoặc progress.
const char * ui_layout_get_text(const ui_layout &layout, const char *widget_id, const char *fallback="")
Đọc nhãn/văn bản của widget.
std::string ui_layout_generate_cpp(const ui_layout &layout, const char *func_name="draw_ui")
Sinh mã nguồn C++ gọi njin::ui_* từ ui_layout hoặc ui_panel_data.
@ choice
Danh sách lựa chọn.
Definition njin_ui_layout.h:24
@ slider
Thanh trượt giá trị.
Definition njin_ui_layout.h:23
@ progress
Thanh tiến độ.
Definition njin_ui_layout.h:25
@ toggle
Công tắc bật/tắt.
Definition njin_ui_layout.h:22
@ image
Ảnh tĩnh.
Definition njin_ui_layout.h:26
@ keybind
Dòng gán phím điều khiển.
Definition njin_ui_layout.h:28
@ button
Nút bấm.
Definition njin_ui_layout.h:21
@ label
Dòng chữ.
Definition njin_ui_layout.h:19
@ row
Xếp hàng ngang cho các widget tiếp theo.
Definition njin_ui_layout.h:27
@ space
Khoảng trống dọc.
Definition njin_ui_layout.h:20
Hình tròn.
Definition _math.h:19
Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object.
Definition njin_json.h:33
Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao.
Definition _math.h:13
Màu gồm đỏ, xanh lá, xanh dương và alpha.
Definition _types.h:64
Định danh của một texture, tạo bởi texture_load().
Definition _types.h:146
Sự kiện UI phát ra khi người dùng tương tác với widget.
Definition njin_ui_layout.h:144
i32 int_val
Lựa chọn mới của choice, hoặc nút đã bấm của popup.
Definition njin_ui_layout.h:159
f32 float_val
Giá trị mới của slider.
Definition njin_ui_layout.h:158
const char * widget_id
ID của widget, hoặc của popup với popup_dismissed.
Definition njin_ui_layout.h:156
bool bool_val
Giá trị mới của toggle.
Definition njin_ui_layout.h:157
enum njin::ui_layout_event::kind_t kind
Loại sự kiện.
const char * panel_id
ID của panel chứa widget.
Definition njin_ui_layout.h:153
kind_t
Loại sự kiện.
Definition njin_ui_layout.h:146
@ button_clicked
Nút được bấm.
Definition njin_ui_layout.h:148
@ value_changed
Giá trị đổi (toggle, slider, choice).
Definition njin_ui_layout.h:149
@ popup_dismissed
Popup đóng (chọn một nút hoặc bấm Back).
Definition njin_ui_layout.h:150
Toàn bộ bố cục UI nạp từ file JSON hoặc xuất từ editor.
Definition njin_ui_layout.h:113
ui_widget_data * find_widget(std::string_view widget_id)
Tìm widget theo ID trên toàn bộ các panel.
vec2 design_resolution
Độ phân giải thiết kế chuẩn.
Definition njin_ui_layout.h:115
i32 version
Phiên bản cấu trúc data UI.
Definition njin_ui_layout.h:114
ui_popup_data * find_popup(std::string_view popup_id)
Tìm popup theo ID.
ui_style style
Style giao diện mặc định.
Definition njin_ui_layout.h:116
const ui_widget_data * find_widget(std::string_view widget_id) const
Tìm widget theo ID trên toàn bộ các panel.
bool custom_style
Có áp dụng custom style trong layout không.
Definition njin_ui_layout.h:117
ui_panel_data * find_panel(std::string_view panel_id)
Tìm panel theo ID.
std::vector< ui_panel_data > panels
Danh sách các panel.
Definition njin_ui_layout.h:118
std::vector< ui_popup_data > popups
Danh sách các popup.
Definition njin_ui_layout.h:119
const ui_panel_data * find_panel(std::string_view panel_id) const
Tìm panel theo ID.
const ui_popup_data * find_popup(std::string_view popup_id) const
Tìm popup theo ID.
Dữ liệu của một panel chứa danh sách widget.
Definition njin_ui_layout.h:81
std::string title
Tiêu đề ở đầu panel.
Definition njin_ui_layout.h:83
const ui_widget_data * find_widget(std::string_view widget_id) const
Tìm widget theo ID trong panel này.
std::vector< ui_widget_data > widgets
Danh sách các widget trong panel.
Definition njin_ui_layout.h:90
vec2 pivot
Điểm đặt của panel vào anchor ({0.5, 0.5} là tâm).
Definition njin_ui_layout.h:85
vec2 offset
Độ dời pixel từ anchor.
Definition njin_ui_layout.h:86
bool background
Có vẽ nền panel hay không.
Definition njin_ui_layout.h:88
bool visible
Hiển thị panel khi vẽ layout.
Definition njin_ui_layout.h:89
f32 width
Chiều rộng panel (0 là dùng ui_style::width).
Definition njin_ui_layout.h:87
ui_widget_data * find_widget(std::string_view widget_id)
Tìm widget theo ID trong panel này.
vec2 anchor
Tỉ lệ neo trên màn hình ({0.5, 0.5} là giữa).
Definition njin_ui_layout.h:84
Toàn bộ giao diện của UI: phông chữ, kích thước, diện mạo từng loại widget, âm thanh.
Definition njin_ui.h:54
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39