hecrj/iced

A cross-platform GUI library for Rust focused on simplicity and type-safety

Cross-platform support (Windows, macOS, Linux, and text inputs, Debug overlay with performance metrics

iced

A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm.

Features

  • Simple, easy-to-use, batteries-included API
  • Type-safe, reactive programming model
  • Cross-platform support (Windows, macOS, Linux, and the Web)
  • Responsive layout
  • Built-in widgets (including text inputs, scrollables, and more!)
  • Custom widget support (create your own!)
  • Debug overlay with performance metrics
  • First-class support for async actions (use futures!)
  • Modular ecosystem split into reusable parts:

iced is currently experimental software. Take a look at the roadmap, check out the issues, and feel free to contribute!

Installation

Add iced as a dependency in your Cargo.toml:

iced moves fast and the master branch can contain breaking changes! If you want to learn about a specific release, check out the release list.

Overview

Inspired by The Elm Architecture, iced expects you to split user interfaces into four different concepts:

  • State — the state of your application
  • Messages — user interactions or meaningful events that you care about
  • View logic — a way to display your state as widgets that may produce messages on user interaction
  • Update logic — a way to react to messages and update your state

We can build something to see how this works! Let's say we want a simple counter that can be incremented and decremented using two buttons.

We start by modelling the state of our application:

Next, we need to define the possible user interactions of our counter: the button presses. These interactions are our messages:

Now, let's show the actual counter by putting it all together in our view logic:

Finally, we need to be able to react to any produced messages and change our state accordingly in our update logic:

And that's everything! We just wrote a whole user interface. iced is now able to:

  1. Take the result of our view logic and layout its widgets.
  2. Process events from our system and produce messages for our update logic.
  3. Draw the resulting user interface.

Browse the documentation and the examples to learn more!

Implementation details

iced was originally born as an attempt at bringing the simplicity of Elm and The Elm Architecture into Coffee, a 2D game engine I am working on.

The core of the library was implemented during May 2019 in this pull request. The first alpha version was eventually released as a renderer-agnostic GUI library. The library did not provide a renderer and implemented the current tour example on top of ggez, a game library.

Since then, the focus has shifted towards providing a batteries-included, end-user-oriented GUI library, while keeping the ecosystem modular:

Common problems

  1. Error: GraphicsAdapterNotFound

    This occurs when the selected built-in renderer is not able to create a context.

    Often this will occur while using iced_wgpu as the renderer without supported hardware (needs Vulkan, Metal or DX12). In this case, you could try using the iced_glow renderer:

    First, check if it works with

    and then use it in your project with

    NOTE: Chances are you have hardware that supports at least OpenGL 2.1 or OpenGL ES 2.0, but if you don't, right now there's no software fallback, so it means your hardware doesn't support Iced.

Contributing / Feedback

Contributions are greatly appreciated! If you want to contribute, please read our contributing guidelines for more details.

Feedback is also welcome! You can open an issue or, if you want to talk, come chat to our Discord server. Moreover, you can find me (and a bunch of awesome folks) over the #games-and-graphics and #gui-and-ui channels in the Rust Community Discord. I go by lone_scientist#9554 there.

Sponsors

The development of iced is sponsored by the Cryptowatch team at Kraken.com

Issues

Collection of the latest Issues

SkymanOne

SkymanOne

bug
Comment Icon2

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

This might be related to #470.

Context

I am using pure feature and displaying static tab bar at the bottom of a windows. This is achieved simply by using Row.

Problem

When window is resized by pulling one of the top corners, there some artefact shown at the bottom of a window. I have tried to position the tab bat at the top and the result is the same. The footages below demonstrate the problem.

Demo

https://user-images.githubusercontent.com/17993104/175770850-a4a73915-9cc1-47f0-808c-8756027004a3.mp4

https://user-images.githubusercontent.com/17993104/175770897-8a5a790b-7943-4e1a-8cc7-5072eeff836e.mp4

What is the expected behavior?

No jittering and artefacts

Version

0.4

Operative System

macOS

Do you have any log output?

No response

ThatsNoMoon

ThatsNoMoon

bug
Comment Icon0

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

The native implementation of path::Builder::arc_to simply draws one straight line to the first point provided and then draws an arc to the endpoint.

Any usage of arc_to will reproduce this behavior.

What is the expected behavior?

I expected iced_graphics's arc_to to act like CanvasRenderingContext2D.arcTo, which takes a control point and draws two straight lines between the starting point and the ending point connected by an arc,

Version

0.4

Operative System

Windows

Do you have any log output?

No response

DevAlone

DevAlone

bug
Comment Icon2

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

I don't trust developers (including myself), so on my personal PC I do programming inside a VM. As a benefit, I get a clean system without tons of library pollution, as a drawback, things sometimes just don't work, the same happens to iced inside a vagrant box with GUI forwarded through ssh. The window appears, but the whole canvas is just white.

Unfortunately, I can't provide viable steps, I tried to make them up, but probably I need to install more libraries or something, cuz now it's even worse, the screen is black and the app terminates immediately with a message Segmentation fault (core dumped).

Steps to (try to) reproduce:

  1. Create a box

  2. Enable X forwarding

Add these lines before the last end:

You can also optionally uncomment the config.vm.provider "virtualbox" do |vb| and ask for more CPU and memory to make compilation faster

  1. Start the VM

  2. Inside the VM, install necessary software and run the example

  3. Observe the white screen and these errors in the logs (or the seg fault)

The host system is Ubuntu

Running everything in Gnome with X11. Feel free to ask for more info/logs/anything.

What is the expected behavior?

Clock

Version

master

Operative System

Linux

Do you have any log output?

Bohmthedudevulture

Bohmthedudevulture

bug
Comment Icon4

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

I have wrote the following file

with the following Cargo.toml

And I am only getting a white screen.

What is the expected behavior?

A black screen

Version

master

Operative System

Linux

Do you have any log output?

No response

luanmenglei

luanmenglei

bug
Comment Icon1

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

I made a app that is used to get a random student in class. It works on my computer. But when I move the app that is build on my computer to the school's computer, I got a very wired result. The UI is both Mirror flip and up and down flip. I don't have the screenshot now but I will upload it tomorrow.

What is the expected behavior?

image

Version

0.3.0

Operative System

Windows

Do you have any log output?

Sherlock-Holo

Sherlock-Holo

bug
Comment Icon12

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

my codes

I use iced master branch with pure feature

When I drag the window, the window moves very slow, it looks likes it sucks, like this video

My CPU is AMD R9 5900x and GPU is RTX 3070

When I am dragging the window, I notice the GPU usage is not high, only 25%(looks from nvtop which I ssh to my PC from my Phone) but the CPU usage is 100%(can look from nvtop and htop)

What is the expected behavior?

it should be smooth, like when I running the hello-window example

Version

master

Operative System

Linux

Do you have any log output?

No response

avilella

avilella

bug
Comment Icon11

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

$ cargo run --package clock Finished dev [unoptimized + debuginfo] target(s) in 0.14s Running target/debug/clock libEGL warning: DRI2: failed to authenticate Segmentation fault (core dumped)

What is the expected behavior?

a window appears

Version

master

Operative System

Linux

Do you have any log output?

oknozor

oknozor

bug
Comment Icon2

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

When I launch any iced app either in release or debug mode it can take up to 10 seconds to show up. This is random and sometimes does not happen at all. I have not been able to reproduce on other laptops.

At first I thought it was related to the app I am writing but I am getting the same result with the Pokedex example.

I tried to change the wgpu backend like so : WGPU_BACKEND=vulkan onagre, WGPU_BACKEND=gl onagre without success.

Hardware :

  • MSI bravo 15
  • 03:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 14 [Radeon RX 5500/5500M / Pro 5500M] (rev c1)
  • 07:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev *c7)

Drivers :

  • mesa 21.3.7-2
  • vulkan-radeon 21.3.7-2

I'd be curious to know if people with the same hardware experience the same issue. Also does this belongs in wgpu's repo ?

What is the expected behavior?

Iced apps should start faster.

Version

0.3.0

Operative System

Linux

Do you have any log output?

The application hangs at the last line of these logs : https://gist.github.com/oknozor/024a8baa43466b1bf5d9b9d19fa8d0f7

And continue with the following: https://gist.github.com/oknozor/8a55d64df7a77f347454d7dc379cfde0

KiraResari

KiraResari

bug
Comment Icon1

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

I am writing a program for displaying the relationships between Kanji and related characters. For that, I want to display the character ⺮. I know that the font MS Gothic can display that character. That font consist of two font files:

  • msgothic.ttc
  • msgothic_0.ttc

I have imported them like this:

This has worked nicely for all characters thus far. However, for ⺮ it only displays ☐ (the missing character symbol).

I suspect that this happens because the multi-file font support is not working as expected.

What is the expected behavior?

The character ⺮ should be displayed correctly.

Version

0.3.0

Operative System

Windows

Do you have any log output?

No response

CodeDead

CodeDead

bug
Comment Icon0

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

When running a native application and trying to position the initial window in the center, it does not center the window, but instead it opens the window in the top-left corner.

Relevant system specs:

  • Fedora Linux 35 (fully updated as of 03-16-2022
  • 2 active monitors

What is the expected behavior?

The application window should open in the center of the screen of the active monitor

Version

master

Operative System

Linux

Do you have any log output?

No response

mtkennerly

mtkennerly

feature
Comment Icon1

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

When there's too much text to fit on screen at once, after scrolling so that the start of the text is no longer visible, the cursor stays stuck to the right side. This makes it harder to read/edit (you can't scroll to a particular word and edit the middle while the whole word is visible), and it leads to some odd behavior when clicking/dragging (dragging left will very quickly scroll all the way back until the start is visible).

This happens both with master (a53fa91e0ddf374bbeb66d5e831b79127ed47a9d) and with 0.2.0.

https://user-images.githubusercontent.com/4934192/158257293-61a6abcd-cfd5-4de7-9384-72484be48c22.mp4

What is the expected behavior?

  • The cursor can freely move in the visible range without scrolling/changing the visible text.
  • The visible range only moves when the cursor hits the left or right edges.

https://user-images.githubusercontent.com/4934192/158257618-edef78c6-cc9a-4ec6-a1ca-ed9800476343.mp4

Version

master

Operative System

Windows

Do you have any log output?

No response

jg2562

jg2562

bug
Comment Icon0

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

When building both tour and my own app on master, they now get rendered into a web canvas. However, the web canvas is a fixed size of 1024x768. Oddly, the canvas also doesn't get rendered until the mouse is hovered over it. This also seems to happen when rendered on both windows and linux.

After a discussion with hecjr, I realized this problem is probably on iced rather than iced_web as it uses a canvas. So I moved the issue to here.

What is the expected behavior?

The canvas should be resized to fit the screen.

Version

master

Operative System

Linux

Do you have any log output?

No response

hecrj

hecrj

bug
Comment Icon1

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

If we try to run any of the examples that set the Settings::antialiasing flag to true, the example will compile but it won't display anything when opened in the browser!

The developer console shows a warning that most likely indicates the culprit:

If we set the Settings::antialiasing flag to false, the example works as expected.

What is the expected behavior?

The example should render correctly when the Settings::antialiasing flag is enabled, without warnings or errors.

Version

master

Operative System

Linux

Do you have any log output?

Ploppz

Ploppz

bug
Comment Icon31

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

When running the clock example in WSL with WSLg installed (graphics support for WSL), the example exits with Error: GraphicsAdapterNotFound. Note that the xclockcommand runs fine in the same terminal. I found that in the wgpu repo, cd wgpu ; cargo run --example cube works fine also. So it seems to be an iced issue.

What is the expected behavior?

It should work without error

Version

master

Operative System

Windows

Do you have any log output?

No response

Versions

Find the latest versions by id

0.4.0 - May 03, 2022

OctaSine Universal Android Debloater Borderlands 3 Save Edtor

New features

  • Stateless widgets (#1284)
    A brand new widget API that removes the need to keep track of internal widget state. No more button::State in your application!

  • Component trait (#1131)
    A new trait to implement custom widgets with internal mutable state while using composition and The Elm Architecture.

  • Responsive widget (#1193)
    A widget that is aware of its dimensions and can be used to easily build responsive user interfaces.

  • Experimental WebGL support (#1096)
    Applications can now be rendered into an HTML canvas when targeting Wasm by leveraging the WebGL support in wgpu. Thanks to @pacmancoder and @kaimast!

  • Support for Raspberry Pis and older devices (#1160)
    The compatibility of our OpenGL renderer has been improved and should run on any hardware that supports OpenGL 2.1+ or OpenGL ES 2.0+. Additionally, we started maintaining Docker images for aarch64 and armv7 to easily cross-compile iced applications and target Raspberry Pis. Thanks to @derezzedex!

  • Simpler Renderer APIs (#1110)
    The surface of the Renderer APIs of the library has been considerably reduced. Instead of a Renderer trait per widget, now there are only 3 traits that are reused by all the widgets.

Thank you! :tada:

  • @0x192 implemented the Default trait for pure::State (#1298).
  • @13r0ck added support for selecting a value of a PickList by scrolling (#872).
  • @Ace4896 added placeholder support for the PickList widget (#888).
  • @aentity fixed a bug causing high memory usage of the Svg widget (#952).
  • @akavel implemented proper handling of Exif orientation for raster images in iced_wgpu.
  • @akhilman fixed an issue with window transparency in iced_glow (#1021).
  • @Alch-Emi introduced ContentFit support for the Image and Svg widgets (#1219).
  • @AldoMX added a select_all method to text_input::State (#776).
  • @AlisCode decoupled image::Handle from iced_native and lowered the trait bound of text::Renderer::Font (#1155).
  • @AndiHofi allowed Application::run to return on native platforms (#1112).
  • @ATiltedTree improved the compatibility of iced_wgpu by using the preferred texture format of the window surface (#978).
  • @BillyDM
    • fixed iced_wgpu panicking when a SwapChain frame is outdated (#667), and
    • tweaked the default styling of the Rule widget (#994).
  • @blefevre added support for asymmetrical padding (#630).
  • @casperstorm implemented a pure version of the Tooltip widget (#1315).
  • @Chiheisen
    • fixed the layout logic of PickList to respect custom fonts (#886), and
    • improved the layout logic of the image::Viewer widget (#885).
  • @clarkmoody
    • added support for generic elements in the title bars of a PaneGrid (#892), and
    • introduced overlay support for the title bar of a PaneGrid (#920).
  • @cmot17 fixed an issue with text selection in the TextInput widget (#1098).
  • @cossonleo fixed the overlay position of the Component widget (#1205).
  • @Cupnfish
    • fixed a typo in the documentation (#810),
    • and added a primary backend option to the WGPU_BACKEND environment variable (#876).
  • @daladim added the iced logo to the documentation (#1147).
  • @derezzedex added support for ARM devices and older hardware (#1160).
  • @diegodox fixed a typo in the documentation of canvas::Program (#927).
  • @Dispersia upgraded wgpu to 0.8 (#830).
  • @EkardNT added support for Sandbox applications to quit gracefully (#1175).
  • @feylinara fixed a memory leak in the integration_opengl example (#1181).
  • @gonsor added text_color to the Style of a Checkbox (#1116).
  • @Imberflur
    • upgraded winit to 0.25 (#919),
    • fixed a few links in the documentation (#1121), and
    • fixed the hash_layout implementation of the Container widget (#1140).
  • @Kaiden42 implemented a Toggler widget (#535).
  • @LordRatte updated links in the documentation to point to the new iced-rs organization (#1168).
  • @Luni-4
    • added executable permissions to the todos example in CI for macOS builds (#956), and
    • stopped the shell from opening on Windows (#1049).
  • @marienz fixed overlay calls not being forwarded when using Element::map (#1294).
  • @mettz fixed an incorrect color being used with Element::explain (#1109).
  • @mtsr documented how to disable a Button (#646).
  • @nicksenger
    • fixed the Widget::height implementation of the Component widget (#1149),
    • implemented Widget::overlay for Component (#1154),
    • fixed layout invalidation of nested components (#1169),
    • fixed the overlay layout for the Responsive widget (#1262),
    • fixed the diffing strategy for nested pure components (#1301),
    • fixed the diffing strategy for pure stateless components (#1309), and
    • fixed a panic when using a pure Component in a pure Responsive widget (#1319).
  • @n8henrie fixed the path to ferris.png in the tour example (#1157).
  • @oknozor fixed the visibility of the constants in the blit shader in iced_wgpu (#1084).
  • @PolyMeilex
    • upgraded wgpu to 0.9 (#925),
    • upgraded wgpu to 0.10 (#1000), and
    • upgraded wgpu to 0.11 (#1081).
  • @pacmancoder implemented experimental WebGL support in iced_wgpu (#1096).
  • @RamType0 removed unnecessary String allocation in some examples (#1106).
  • @RDambrosio016 fixed example links in the documentation to point to the latest release (#877).
  • @sundy-li fixed the README of the integration_opengl example.
  • @taiki_e enabled the qr_code feature in docs.rs (#815).
  • @TannerRogalsky
    • disabled the default features in the twox-hash dependency (#1117)
    • fixed async traits for Wasm (#1118).
  • @tarkah
    • added a new Hidden variant to window::Mode (#825),
    • introduced a new Moved variant to window::Event (#965),
    • fixed the overlays on a PaneGrid title bar not closing when dragging a pane (#971),
    • added a Fill variant for Alignment (#1044),
    • removed redundant Slider messages (#1114),
    • added a line dash API for the Canvas widget (#1225), and
    • fixed the text wrapping of the selected option of a PickList (#1318).
  • @thenlevy
    • fixed the dimensions of scissor_rect in iced_wgpu being too large in some circumstances (#818), and
    • implemented event handling of the Enter key for TextInput (#1150).
  • @ThisIsRex fixed the position of the handle and rail of a Slider (#1286).
  • @traxys introduced a window::Setting to toggle drag and drop on Windows (#893).
  • @xy37v replaced Zulip mentions in the README with the new Discord server (#1151).
  • @yamadapc improved the support of iced_glow for multi-windowed applications (#980).
  • @yusdacra
    • added methods to control a Scrollable programmatically (#607),
    • introduced a flag to toggle multithreaded rasterization of text primitives (#914), and
    • updated links in the documentation (#915).
  • @ZakisM optimized the RGBA / BGRA conversion for vectorial images in iced_wgpu (#875).
  • @zdevwu added text_color and font methods to Radio and Checkbox (#831).

0.3.0 - Mar 31, 2021

Added

  • Touch support. #57 #650 (thanks to @simlay and @discordance!)
  • Clipboard write access for
    • TextInput widget. #770
    • Application::update. #773
  • image::Viewer widget. It allows panning and scaling of an image. #319 (thanks to @tarkah!)
  • Tooltip widget. It annotates content with some text on mouse hover. #465 (thanks to @yusdacra!)
  • Support for the smol async runtime. #699 (thanks to @JayceFayne!)
  • Support for graceful exiting when using the Application trait. #804
  • Image format features in iced_wgpu to reduce code bloat. #392 (thanks to @unrelentingtech!)
  • Focused and Unfocused variant to window::Event. #701 (thanks to @cossonleo!)
  • WGPU_BACKEND environment variable to configure the internal graphics backend of iced_wgpu. #789 (thanks to @Cupnfish!)

Changed

  • The TitleBar of a PaneGrid now supports generic elements. #657 (thanks to @clarkmoody!)
  • The Error type now implements Send and Sync. #719 (thanks to @taiki-e!)
  • The Style types in iced_style now implement Clone and Copy. #720 (thanks to @taiki-e!)
  • The following dependencies have been updated:
    • font-kit0.10 #669
    • glutin0.26 #658
    • resvg0.12 #669
    • tokio1.0 #672 (thanks to @yusdacra!)
    • winit0.24 #658
    • wgpu0.7 #725 (thanks to @PolyMeilex!)
  • The following examples were improved:
    • download_progress now showcases multiple file downloads at once. #283 (thanks to @Folyd!)
    • solar_system uses the new rand API. #760 (thanks to @TriedAngle!)

Fixed

  • Button events not being propagated to contents. #668
  • Incorrect overlay implementation for the Button widget. #764 (thanks to @thenlevy!)
  • Viewport::physical_width returning the wrong value. #700 (thanks to @TannerRogalsky!)
  • Outdated documentation for the Sandbox trait. #710 (thanks to @GunpowderGuy!)

0.2.0 - Nov 26, 2020

Game of Life Cryptowatch Desktop

New features

Thank you! :tada:

  • @AberrantWolf updated the Radio widget to make it consistent with Checkbox (#345).
  • @aentity updated winit in iced_winit to 0.23 (#542) and guillotiere to 0.6 (#600).
  • @AlisCode fixed some async examples by feature-gating the Command implementations (#322).
  • @atsuzaki added a transparent field to window::Settings (#484).
  • @Azorlogh implemented conversion traits for Point, Size, and [f32; 2] (#558).
  • @azriel91 introduced feature gates to disable the font-kit dependency (#370).
  • @bitshifter upgraded glam to 0.9 (#482).
  • @clarkmoody created the color_palette example showcasing conversion traits for palette (#200), improved the spacing of the PaneGrid widget (#361), and implemented scrollbar customization for the Scrollable widget (#575).
  • @derezzedex removed an empty bind group in the integration example (#390).
  • @ethanpailes improved the documentation of theimage::Handle constructors (#324).
  • @frapa introduced support to set a window icon (#285).
  • @Imberflur fixed the Clone trait implementation for the Text widget (#363).
  • @Kaiden42 implemented the From<Color> trait for Option<Background> (#487).
  • @Limeth fixed a typo in the hash_layout implementation of Column and Row (#563) and added conversion fuctions for Size and Vector (#583).
  • @Masterchef365 added an on_release handler to the Slider widget (#378).
  • @mobile-bungalow implemented an always_show_controls method for pane_grid::TitleBar (#463).
  • @MonliH removed an outdated comment in the documentation of Column and Row (#545).
  • @mtkennerly fixed a panic when pasting in a TextInput (#445).
  • @myfreeweb added explicit background color support, including transparency (#371).
  • @oknozor introduced a focus method to text_input::State (#598).
  • @rubik83 fixed a bug with empty ranges in ProgressBar and Slider (#527).
  • @sum-elier fixed the description of an error message in a window::icon (#592).
  • @TomPridham introduced accessibility attributes to the iced_web widgets (#292).
  • @twitchyliquid64 added support for always_on_top in window::Settings (#543).
  • @valbendan upgraded tokio to 0.3 (#595).
  • @Vanille-N fixed the ellipse implementation of path::Builder (#401).
  • @Veykril updated the dependencies of iced_wgpu (#334).
  • @Voker57 fixed the documentation of the progress_bar module (#396).
  • @ZakisM fixed a bug with "select all" in a text input on macOS (#605).

0.1.1 - Apr 15, 2020

Added

  • Settings::with_flags to easily initialize some default settings with flags. #266
  • Default implementation for canvas::layer::Cache. #267
  • Ctrl + Del support for TextInput. #268
  • Helper methods in canvas::Path to easily draw lines, rectangles, and circles. #293
  • From<Color> implementation for canvas::Fill. #293
  • From<String> implementation for canvas::Text. #293
  • From<&str> implementation for canvas::Text. #293

Changed

  • new method of Radio and Checkbox now take a generic Into<String> for the label. #260
  • Frame::fill now takes a generic Into<canvas::Fill>. #293
  • Frame::stroke now takes a generic Into<canvas::Stroke>. #293
  • Frame::fill_text now takes a generic Into<canvas::Text>. #293

Fixed

  • Feature flags not being referenced in documentation. #259
  • Crash in some graphics drivers when displaying an empty Canvas. #278
  • Text measuring when spaces where present at the beginning of a TextInput value. #279
  • TextInput producing a Clip primitive when unnecessary. #279
  • Alignment of Text primitive in iced_wgpu. #281
  • CursorEntered and CursorLeft not being generated. #289

Removed

  • Unnecessary 'static lifetimes in Renderer bounds. #290

0.1.0 - Apr 02, 2020

71867993-acff4300-310c-11ea-85a3-d01d8f884346.gif SelfassuredAromaticDunnart-small.gif

New features

More examples

  • bezier_tool, a Paint-like tool for drawing Bézier curves using lyon.
  • clock, an application that uses the Canvas widget to draw a clock and its hands to display the current time.
  • counter, the classic counter example explained in the README.
  • custom_widget, a custom widget that draws a circle.
  • download_progress, a basic application that asynchronously downloads a dummy file of 100 MB and tracks the download progress.
  • events, a log of native events displayed using a conditional Subscription.
  • geometry, a custom widget showcasing how to draw geometry with the Mesh2D primitive in iced_wgpu.
  • integration, an example demonstrating how to integrate Iced in an existing graphical application.
  • pane_grid, a grid of panes that can be split, resized, and reorganized.
  • pokedex, an application that displays a random Pokédex entry (sprite included!) by using the PokéAPI.
  • progress_bar, a simple progress bar that can be filled by using a slider.
  • styling, an example showcasing custom styling with a light and dark theme.
  • solar_system, an animated solar system drawn using the Canvas widget and showcasing how to compose different transforms.
  • stopwatch, a watch with start/stop and reset buttons showcasing how to listen to time.
  • svg, an application that renders the Ghostscript Tiger by leveraging the Svg widget.

Thank you! :tada:

  • @AlisCode created iced-pancurses, started a great issue to find a project logo (#143), and worked on a potential website (#115).
  • @artursapek contributed a Mesh2D primitive for iced_wgpu (#140) which ended up being the foundations of the Canvas widget.
  • @clarkmoody added customization support for the Checkbox widget (#192).
  • @daxpedda improved the Node API (#187) and has been working on the Grid widget (#189).
  • @ejmahler removed the Clone bound on the Message associated type of Application (#155).
  • @FabianLars contributed text selection for TextInput (#202) on top of @Finnerale's work.
  • @Friz64 enhanced the scrolling behavior of the Scrollable widget (#95).
  • @Gohla introduced missing style attributes in iced_web (#127), removed unnecessary bounds (#128), and built a cool Space Engineers calculator.
  • @hatoo added platform-specific settings to iced_winit (#94), implemented the bezier_tool example (#144), and provided feedback related to using the library for building VST plugins (#118).
  • @Imberflur updated winit to 0.21 (#181) and exposed the Clipboard type in iced_winit (#178).
  • @kaimast removed unnecessary lifetimes in the integration example (#240) and contributed other minor code cleanups (#242).
  • @maaku fixed some formatting to comply with cargo fmt (#228).
  • @Maldela implemented the Svg widget (#111) and a texture atlas for iced_wgpu (#154).
  • @memoryruins cleaned up some code and made it more idiomatic (#45).
  • @michael-swan implemented Ctrl+Backspace behavior for TextInput (#249).
  • @mrkgnao added support for displaying already-decoded images (#211).
  • @nvzqz made a bunch of functions const (#91) and added some From implementations (#92).
  • @piaoger fixed the file path of the svg example (#196).
  • @Plecra improved the scaling of the hands in the clock example (#251).
  • @rowungiles introduced a with_children method for Column and Row (#220).
  • @Shootertrex fixed the hash_layout implementation of the Image widget (#101).
  • @simlay experimented with iOS support and touch events (#57) while contributing to winit.
  • @Songtronix wrote the ProgressBar widget (#141), contributed the download_progress example (#232), and has been using the library in Airshipper, a cross-platform launcher for Veloren.
  • @sumibi-yakitori enabled custom fonts for TextInput (#171).
  • @tirz removed unnecessary 'static lifetimes in a bunch of generic types (#245).

0.1.0-beta - Nov 25, 2019

Changed

  • The old iced becomes iced_native. The current iced crate turns into a batteries-included, cross-platform GUI library.

0.1.0-alpha - Sep 05, 2019

Added

  • First release! :tada:

Information - Updated Jul 08, 2022

Stars: 14.4K
Forks: 622
Issues: 172

Repositories & Extras

A mid-level 2D graphics library for rust

rgx is a 2D graphics library built on top of Vulkan/

A mid-level 2D graphics library for rust

Safe Rust bindings to the Skia Graphics Library

Safe Rust bindings to the

Safe Rust bindings to the Skia Graphics Library

Vulkano Vulkan Graphics API for Rust

Vulkano is a Rust wrapper around Wgpu-rs or the Vulkan graphics GPU API

Vulkano Vulkan Graphics API for Rust

My implementation for chess in rust, implemented both the logic and graphics

This is a WIP graphics engine build in Rust and really meant for reference and learning

My implementation for chess in rust, implemented both the logic and graphics

This is a NES (Nintendo Entertainment System) emulator written in Rust using SDL2 for graphics...

This is a NES (Nintendo Entertainment System) emulator written in Rust using SDL2 for graphics and input

This is a NES (Nintendo Entertainment System) emulator written in Rust using SDL2 for graphics...

Nanachi - pure Rust 2D graphics library

NOTE: Nanachi is still buggy and the API will changed!

Nanachi - pure Rust 2D graphics library

chip8 emulator written in rust, using rust-sdl2 for graphics

Fully implemented all 35 original chip8 opcodes

chip8 emulator written in rust, using rust-sdl2 for graphics

A 2D vector graphics library written in Rust

It uses documentation for examples and API usage

A 2D vector graphics library written in Rust

Rust 3D graphics library for the browser

A work-in-progress Rust -&gt; WASM 3D graphics library for the browser built on top of WebGL, aimed at making it dead simple to do graphics

Rust 3D graphics library for the browser

Rust Graphics Crates

This is an opinionated list of modern graphics crates in Rust

Rust Graphics Crates

🕊 ɱ&upsilon;ɠҽ &middot; むげ

Minimal, Modular, Multiplatform Graphics Enginefor Rust and WebAssembly

🕊 ɱ&upsilon;ɠҽ &middot; むげ

A Rust library for rendering SVG Graphics with WASM

This crate provides a fast and effective way to interact with SVG's using WebAssembly

A Rust library for rendering SVG Graphics with WASM
Facebook Instagram Twitter GitHub Dribbble
Privacy