You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Emil Ernerfeldt 96e6f1f3fc [optimize] switch to ahash for ids and most maps and sets 5 years ago
docs Remove 'Web' from GuiInput 5 years ago
emigui [optimize] switch to ahash for ids and most maps and sets 5 years ago
emigui_glium Remove dropping files from emigui Input 5 years ago
emigui_wasm [refactor] collect stuff into new `mod paint` 5 years ago
example_glium example_glium: restore example app state 5 years ago
example_wasm Remove 'Web' from GuiInput 5 years ago
.gitignore Add a benchmark 5 years ago
Cargo.lock [optimize] switch to ahash for ids and most maps and sets 5 years ago
Cargo.toml Tweak opt-level and lto settings 5 years ago
OFL.txt New font: Comfortaa 6 years ago
README.md Add a fractal clock example to showcase painting performance 5 years ago
build_glium.sh Add a fractal clock example to showcase painting performance 5 years ago
build_wasm.sh Update wasm/web example 5 years ago
lint.sh No typescript. Just one index.html + wasm. 6 years ago
start_server.sh Update wasm/web example 5 years ago

README.md

Emigui

(Experimental, Modularized Immediate mode Graphical User Interface)

An immediate mode GUI library written in Rust. For web apps or native apps.

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 Emigui.

Currently two backends have been tested:

The same application code can thus be compiled to either into a native app or a web app.

Demos

Emigui feature demo, (partial) source: https://github.com/emilk/emigui/blob/master/emigui/src/examples/app.rs

Hobogo: A small game using Emigui, source: https://github.com/emilk/hobogo

State

Mostly a tech demo at this point. I hope to find time to work more on this in the future.

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.

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