12 个版本
0.3.1 | 2024 年 4 月 29 日 |
---|---|
0.3.0 | 2024 年 4 月 29 日 |
0.2.4 | 2023 年 11 月 28 日 |
0.1.4 | 2023 年 11 月 8 日 |
#386 在 GUI
每月 30 次下载
用于 yakui-macroquad
35KB
685 行
yakui-miniquad
这是一个简单的库,用于整合 yakui 和 miniquad,使您能够轻松地在 miniquad 项目中使用 yakui。
我很高兴接受以修复或改进形式的贡献,只需保持友好即可 :)
如果您对可直接与 macroquad 一起使用的版本感兴趣,请参阅: yakui-macroquad!
版本
此版本适用于 miniquad 0.4 和 yakui 0.2.0。
示例
见 示例,您也可以使用 cargo run --example hello-world
来测试示例。
许可证
见 LICENSE
lib.rs
:
yakui-miniquad
整合 yakui 和 miniquad。
用法
为了使用此库,请创建 YakuiMiniQuad
的实例,并从您的 miniquad::EventHandler
实现中调用其事件处理函数。
以下是一个仅将 "hello, world" 渲染到屏幕中央的示例。
use std::ops::DerefMut;
use miniquad::*;
use miniquad::window::new_rendering_backend;
use yakui::{widgets::Pad, Color};
use yakui_miniquad::*;
struct Stage {
ctx: Box<Context>,
yakui_mq: YakuiMiniQuad,
}
impl Stage {
pub fn new(mut ctx: Box<Context>) -> Stage {
let yakui_mq = YakuiMiniQuad::new(ctx.deref_mut());
Stage {
ctx,
yakui_mq
}
}
}
impl EventHandler for Stage {
fn update(&mut self) {
self.yakui_mq.start();
yakui::center(|| {
yakui::colored_box_container(Color::CORNFLOWER_BLUE, || {
yakui::pad(Pad::all(16.0), || {
yakui::text(32.0, "hello, world!");
});
});
});
self.yakui_mq.finish();
}
fn draw(&mut self) {
self.ctx.begin_default_pass(Default::default());
// draw some stuff before the UI?
self.yakui_mq.draw(self.ctx.deref_mut());
// ... draw some stuff after the UI!
self.ctx.end_render_pass();
self.ctx.commit_frame();
}
fn resize_event(&mut self, width: f32, height: f32) {
self.yakui_mq.resize_event(width, height);
}
fn mouse_motion_event(&mut self, x: f32, y: f32) {
self.yakui_mq.mouse_motion_event(x, y);
}
fn mouse_wheel_event(&mut self, x: f32, y: f32) {
self.yakui_mq.mouse_wheel_event(x, y);
}
fn mouse_button_down_event(&mut self, button: MouseButton, x: f32, y: f32) {
self.yakui_mq.mouse_button_down_event(button, x, y);
}
fn mouse_button_up_event(&mut self, button: MouseButton, x: f32, y: f32) {
self.yakui_mq.mouse_button_up_event(button, x, y);
}
fn char_event(&mut self, character: char, keymods: KeyMods, repeat: bool) {
self.yakui_mq.char_event(character, keymods, repeat);
}
fn key_down_event(
&mut self,
keycode: KeyCode,
keymods: KeyMods,
repeat: bool,
) {
self.yakui_mq.key_down_event(keycode, keymods, repeat);
}
fn key_up_event(&mut self, keycode: KeyCode, keymods: KeyMods) {
self.yakui_mq.key_up_event(keycode, keymods);
}
}
fn main() {
miniquad::start(conf::Conf::default(), || {
Box::new(Stage::new(new_rendering_backend()))
});
}
依赖项
~9MB
~227K SLoC