#immediate-mode #widgets #ui #window #linux #dear-imgui

bin+lib amberwindow

为Rust设计的一个易于使用的即时模式GUI库

17个版本

0.3.61 2024年7月16日
0.3.7 2024年7月19日
0.2.4 2024年7月3日
0.1.2 2024年7月1日

#151 in GUI

Download history 352/week @ 2024-06-26 345/week @ 2024-07-03 471/week @ 2024-07-10 165/week @ 2024-07-17 40/week @ 2024-07-24

每月326次下载

MIT许可证

195KB
2K SLoC

AmberWindow

'amberwindow'是一个易于使用的即时模式GUI库,适用于Rust。

使用macroquad作为后端。灵感来源于像DearImgui这样的库。

支持的平台

  • Windows / PC
  • Linux(未测试)
  • MacOS(未测试)

功能

  • 易于设置
  • 让窗口运行起来很简单
  • 提供许多预制的组件供使用

示例

你好,窗口

use amberwindow::WindowManager;
use macroquad::prelude::*;

#[macroquad::main("Hello")]
async fn main() {
    let mut windows = WindowManager::new();
    loop {
        windows.begin("");
        windows.update_windows();
        next_frame().await;
    }
}

你好,世界

use amberwindow::{WindowManager, WindowWidget};
use macroquad::prelude::*;

#[macroquad::main("Hello")]
async fn main() {
    let mut windows = WindowManager::new();
    let widget = WindowWidget::new();

    loop {
        if let Some(win) = windows.begin("") {
            widget.Text( win, "Hello world");
        }

        windows.update_windows();
        next_frame().await;
    }
}

自定义样式

对于所有喜欢DearImgui样式的用户,使用AmberWindow的自定义样式功能可以让您“重新制作”DearImgui。

if let Some(win) = windows.begin("") {
    win.name("Debug");
    win.style(WindowStyle{
        font: font.clone(),
        bg_color: Color::from_hex(0x151617),
        tb_color: Color::from_hex(0x294a7a),
        deselected_tb_color: BLACK,
        border_color: BLANK,
        selected_border_color: Color::new(1.,1.,1., 0.7),
        title_color: WHITE,
        scale_color: Color::from_hex(0x294a7a),
        minimize_color: WHITE,
        close_color: WHITE
    });
    widget.Text(win, "Hello, world 123", None);
    widget.Button(win, "Save");
    widget.Slider(win, 0., 100., vec2(win.rect.w - 20.0, 15f32));
    widget.Checkbox(win, "Auto update", false);
    win.button_style(ButtonStyle{
        font: font.clone(),
        color: WHITE,
        bg_color: Color::from_hex(0x274972),
        hover_bg_color: Color::from_hex(0x496994),
        pressed_bg_color: Color::from_hex(0x274972)
    });
    win.slider_style(SliderStyle{
        color: WHITE,
        bg_color: Color::from_hex(0x163861),
        hover_bg_color: Color::from_hex(0x274972),
        value_color: SKYBLUE,
    });
    win.get(3).as_checkbox().bg_color = Color::from_hex(0x274972);
}

这将使其: https://i.imgur.com/du1M7wV.png (不含螃蟹图像.)

依赖项

~11MB
~249K SLoC