amberwindow

Crates.ioamberwindow
lib.rsamberwindow
version0.3.14
sourcesrc
created_at2024-07-01 10:45:08.248048
updated_at2024-10-04 19:00:52.115813
descriptionAn easy to use ImmediateMode gui library for Rust.
homepagehttps://github.com/creepersaur/AmberWindow
repositoryhttps://github.com/creepersaur/AmberWindow
max_upload_size
id1288645
size431,455
(creepersaur)

documentation

README

AmberWindow

'amberwindow' is an easy to use ImmediateMode gui library for Rust.

Uses macroquad as a backend. Inspired by libraries like DearImgui.

Supported Platforms

  • Windows / PC
  • Linux (untested)
  • MacOS (untested)

Features

  • Easy to setup
  • Getting windows working is easy
  • Many pre-made widgets to use

Examples

Macroquad App

use macroquad::prelude::*;

#[macroquad::main("MACROQUAD")]
async fn main() {
    loop { next_frame().await }
}

Hello Window

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

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

Hello World

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

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

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

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

For all of you who love dearimgui's styling, using the custom styling features in AmberWindow can let you "remake" dearimgui.

(Add this to satisfy all the style imports.)

use amberwindow::*;
if let Some(win) = windows.begin("") {
    win.name("Debug");
    win.Text("Hello, world 123", WHITE);
    win.Button("Save");
    win.Slider_float(0., 100., None, vec2(win.rect.w - 20.0, 15f32));
    win.Checkbox("Auto update", false);
    win.button_style(ButtonStyle{
        font: None,
        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.style(WindowStyle{
        font: None,
        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
    });
    for i in win.widgets.iter_mut() {
        if let Widget::Checkbox(i) = i {
            i.bg_color = Color::from_hex(0x385884);
        }
    }
}

It will make this: https://i.imgur.com/du1M7wV.png (Without the crab image.)

Commit count: 51

cargo fmt