Emil Ernerfeldt
8dced5896c
|
4 years ago | |
---|---|---|
docs | 5 years ago | |
egui | 4 years ago | |
egui_glium | 4 years ago | |
egui_web | 4 years ago | |
example_glium | 5 years ago | |
example_wasm | 4 years ago | |
.gitignore | 5 years ago | |
Cargo.lock | 4 years ago | |
Cargo.toml | 4 years ago | |
LICENSE-APACHE | 5 years ago | |
LICENSE-MIT | 5 years ago | |
OFL.txt | 6 years ago | |
README.md | 4 years ago | |
build_glium.sh | 5 years ago | |
build_web.sh | 4 years ago | |
lint.sh | 6 years ago | |
start_server.sh | 5 years ago |
README.md
Egui
An immediate mode GUI library written in Rust. Works anywhere you can draw textured triangles.
Goals:
- Lightweight
- Short, conveniant syntax
- Responsive (60 Hz without breaking a sweat)
- Portable
- Platform independent (the same code works on the web and as a native app)
How it works:
Loop:
- Gather input: mouse, touches, screen size, ...
- Run application code (Immediate Mode GUI)
- Output is a triangle mesh
- Render with e.g. OpenGL
Available backends:
Wherever you can render textured triangles you can use Egui.
- WebAssembly (
egui_web
) for making a web app. Click to run. - Glium for native apps (see example_glium).
- miniquad web demo demo source
The same application code can thus be compiled to either into a native app or a web app.
Demos
Egui feature demo, (partial) source: https://github.com/emilk/emigui/blob/master/egui/src/examples/app.rs
Hobogo: A small game using Egui, source: https://github.com/emilk/hobogo
State
Alpha state. It works, but is somewhat incomplete.
Features:
- Labels
- Buttons, checkboxes, radio buttons and sliders
- Horizontal or vertical layout
- Column layout
- Collapsible headers (sections)
- Windows
- Resizable regions
- Vertical scolling
- Simple text input
- Anti-aliased rendering of circles, rounded rectangles and lines.
Conventions
- All coordinates are screen space coordinates, in locial "points" (which may consist of many physical pixels).
- All colors have premultiplied alpha
Inspiration
The one and only Dear ImGui is a great Immediate Mode GUI for C++ which works with many backends. That library revolutionized how I think about GUI code from something I hated to do to something I now like to do.
Name
The name of the gui library is "Egui", written like that in text and as egui
in code and pronounced as "e-gooey".
The library used to be called Emigui
, which is why it is still hosted at github.com/emilk/emigui. If you like, emigui
is the collection of helper crates that surrounds egui
, while egui
is the actual GUI library.
Credits / Licenses
Fonts:
- Comfortaa: Open Font License, see OFT.txt
- ProggyClean.ttf, Copyright (c) 2004, 2005 Tristan Grimmer. MIT License. http://www.proggyfonts.net/
- Roboto-Regular.ttf: Apache License, Version 2.0