Crate amberwindow

Source
Expand description

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

Uses macroquad as a backend.

§Supported Platforms

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

§Features

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

§Examples

§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;
    }
}

§Custom Styling

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

Structs§

Button
Widget > Button (Simple text button).
ButtonStyle
Style > Custom Button styling.
Checkbox
Widget > Checkbox (Toggled bool value).
DisplayImage
Widget > DisplayImage (Displays an image on the window).
Slider
Widget > Slider (Simple floating point slider).
SliderStyle
Style > Custom Slider Styling.
Text
Widget > Text (Renders single-line text).
TextBox
TextBoxBase
WidgetRow
Widget > WidgetRow (Horizontally places widgets).
Window
The base window class.
WindowManager
Manages window update and creation.
WindowProperties
Properties > Properties for windows.
WindowStyle
Style > Custom window styling.
WindowWidget
Widget > WindowWidget (Manages widget creation).

Enums§

InputState
Widget
Widget > Widget (Base enum for all widgets).

Traits§

ConvertString
GetText