#graphics

xege

Rust style safe warpper of C++ graphics libraries

7 releases

Uses new Rust 2024

0.3.0 Sep 12, 2025
0.2.4 Aug 12, 2025
0.1.0 Aug 8, 2025

#874 in Graphics APIs

MIT license

1.5MB
2.5K SLoC

xege

EGE is an easy-to-use C++ graphics library for the Windows platform, built upon Windows' GDI/GDI+ interfaces. It provides features like graphics rendering and keyboard/mouse event handling. Known for its user-friendly API, it is widely favored by beginners. xege-ffi offers Rust FFI bindings for EGE, enabling the usage of EGE in Rust. xege is a Rust-style safe wrapper around xege-ffi, allowing Rust developers to utilize EGE more conveniently.

Introduction

EGE employs a state machine mechanism in its implementation. Consequently, most graphics context types are neither Send nor Sync, meaning they cannot be used across threads.

EGE offers powerful drawing capabilities, enabling you to create a wide variety of graphical applications, whether GUI programs or game engines.

Example

use xege::*;

fn main() {
    let mut xege = initgraph(1000, 800, Init::NoSysDPI).unwrap();

    xege.setbkcolor(color::DARKGRAY);
    xege.setcolor(color::BLACK);
    xege.setfillcolor(color::CYAN);
    xege.clear();
    xege.enable_aa(true);

    const TEXTS: [&str; 10] = [
        "Hello, World!",
        "你好,世界!",
        "こんにちは世界",
        "안녕하세요 세계!",
        "Привет мир!",
        "مرحبا بالعالم!",
        "Γεια σου κόσμε!",
        "नमस्ते दुनिया!",
        "∑(π²) ≠ ∞",
        "←↑→↓ ↖↗↘↙",
    ];

    let mut path = Path::new();
    for (i, &s) in TEXTS.iter().enumerate() {
        path.addtext(
            30f32,
            10f32 + i as f32 * 40f32,
            s,
            "黑体",
            30f32,
            FontStyle::Black,
        );
    }
    path.outline(Option::<Mat3<f32>>::None, 0.0);
    xege.drawpath_at(&path, 16.0, 16.0);
    xege.fillpath_at(&path, 15.0, 15.0);
    loop {}
}

img

License

xege is licensed under the MIT License.

Dependencies

~23MB
~498K SLoC