#gamedev #control #direct #buffer #render

已弃用 direct-gui

在缓冲区上简单直接渲染GUI控件

27次发布

0.1.26 2020年10月10日
0.1.25 2020年4月16日
0.1.24 2020年2月12日
0.1.22 2019年7月28日
0.1.18 2018年3月4日

#61 in #direct

Download history 19/week @ 2024-03-27 19/week @ 2024-04-03 4/week @ 2024-04-10 4/week @ 2024-04-17 14/week @ 2024-04-24 2/week @ 2024-05-08 3/week @ 2024-05-15 4/week @ 2024-05-22 2/week @ 2024-05-29 7/week @ 2024-06-05 4/week @ 2024-06-12

每月下载量107
用于 3 crate

GPL-3.0 协议

47KB
635 代码行

direct-gui

简单直接渲染GUI控件

CI Version Rust Documentation License

文档

使用方法

将此内容添加到您的 Cargo.toml

[dependencies]
direct-gui = "0.1"

并将此内容添加到您的crate根目录

extern crate direct_gui;

运行示例

在Linux上,您需要安装 xkbwayland 软件包,这是由 minifb 所要求的 -- sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev

cargo run --example button

Example

cargo run --example label

Example

cargo run --example sprite

Example

示例

use direct_gui::*;
use direct_gui::controls::*;

let screen_size = (800i32, 600i32);

// Create a buffer where we will render to
let mut buffer: Vec<u32> = vec![0; (screen_size.0 * screen_size.1) as usize];

// Create a new instance of the gui
let mut gui = Gui::new(screen_size);

// Load the sprite of a button
let button_img = gui.load_sprite_from_file("examples/button.png", 0xFF00FF).unwrap();

// Create a new button using the sprite loaded before at pixel (20, 10)
gui.register(Button::new(button_img).pos(20, 10));

// Handle "input events" by pretending that the mouse is hovering over the button.
let cs = ControlState {
    mouse_pos: (22, 12),
    ..ControlState::default()
};
gui.update(&cs);

// Finally render the current gui state to the buffer
gui.draw_to_buffer(&mut buffer);

致谢

精灵功能由 Hammster 提供

默认字体由 usr_share 提供

依赖项

~7.5MB
~123K SLoC