Release 0.1
- Custom styling, event subscriptions, additional widgets, new examples, and more!
#253
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR marks the end of the
0.1.0
milestone and the launch of a new release!The library has made some progress since the last
0.1.0-beta
landed, around 4 months ago.New features
During this time, we have been focusing on implementing basic functionality and new widgets while following the roadmap. The most important new features are:
Custom styling (Custom styling #146)
A simple, trait-based approach for customizing the appearance of different widgets.
Event subscriptions (Event subscriptions #122)
A declarative way to listen to external events asynchronously by leveraging streams.
Canvas
widget (Canvas widget for 2D graphics #193)A widget for drawing 2D graphics with an interface inspired by the Web Canvas API and powered by
lyon
.PaneGrid
widget (Pane grid widget #224)A widget that dynamically organizes layout by splitting panes that can be resized and drag and dropped.
Svg
widget (Svg and icon support #111)A widget that renders vector graphics on top of
resvg
andraqote
. Thanks to @Maldela!ProgressBar
widget (Progress bar widget #141)A widget to notify progress of asynchronous tasks to your users. Thanks to @Songtronix!
Configurable futures executor (Custom futures executor with
iced_futures
#164)Support for plugging
tokio
,async-std
,wasm-bindgen-futures
, or your own custom futures executor to an application.Compatibility with existing
wgpu
projects (Integration with existingwgpu
projects #183)A bunch of improvements to the flexibility of
iced_wgpu
to allow integration in existing codebases.Text selection for
TextInput
(Text Selection for text_input widget #202)Thanks to @FabianLars and @Finnerale!
Texture atlas for
iced_wgpu
(Texture atlas #154)An atlas on top of
guillotiere
for batching draw calls. Thanks to @Maldela!More examples
Back when I released the first beta, the codebase only had two examples: a simple
tour
showcasing the different widgets of the library, and atodos
tracker inspired by TodoMVC. Since then, and as a consequence of all the new features, the amount of examples has increased considerably:bezier_tool
, a Paint-like tool for drawing Bézier curves usinglyon
.clock
, an application that uses theCanvas
widget to draw a clock and its hands to display the current time.counter
, the classic counter example explained in theREADME
.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 conditionalSubscription
.geometry
, a custom widget showcasing how to draw geometry with theMesh2D
primitive iniced_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 theCanvas
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 theSvg
widget.Feel free to try them out and report any issues you may encounter!
Thank you! 🎉
Finally, I want to highlight the work of everyone that has contributed to the library in one way or another:
iced-pancurses
, started a great issue to find a project logo (Iced branding #143), and worked on a potential website (#115).Mesh2D
primitive foriced_wgpu
(Mesh2D primitive for rendering arbitrary geometry iniced_wgpu
#140) which ended up being the foundations of theCanvas
widget.Checkbox
widget (Customize Checkbox #192).Node
API (AddNode::move_to
and makeNode::align
public #187) and has been working on theGrid
widget (Grid widget #189).Clone
bound on theMessage
associated type ofApplication
(Remove Clone bound on Application::Message #155).TextInput
(Text Selection for text_input widget #202) on top of @Finnerale's work.Scrollable
widget (Make scrolling behave like you'd expect it to #95).iced_web
(Add several missing style attributes in iced_web #127), removed unnecessary bounds (Remove unnecessary bound in iced_web Container #128), and built a cool Space Engineers calculator.iced_winit
(Improve window setting #94), implemented thebezier_tool
example (Add MS paint example #144), and provided feedback related to using the library for building VST plugins (Allow setting initial state toApplication
on runtime? #118).winit
to0.21
(Updatewinit
to0.21
#181) and exposed theClipboard
type iniced_winit
(Exposeiced_winit::Clipboard
#178).integration
example (remove explicit lifetimes in integration example #240) and contributed other minor code cleanups (Some more code cleanups. #242).cargo fmt
(Remove excess whitespace from end of line to comply withcargo fmt
. #228).Svg
widget (Svg and icon support #111) and a texture atlas foriced_wgpu
(Texture atlas #154).Ctrl+Backspace
behavior forTextInput
(Add Ctrl+Backspace text field behaviour #249).const
(Make many functionsconst
#91) and added someFrom
implementations (AddFrom
impls forLength
,Point
, andSize
#92).svg
example (Fix sample file path for svg example #196).clock
example (Rework scaling in clock example #251).with_children
method forColumn
andRow
(Instantiate Column and Row with children #220).hash_layout
implementation of theImage
widget (Added path to image hash so it updates when path changes #101).winit
.ProgressBar
widget (Progress bar widget #141), contributed thedownload_progress
example (Add example for download with progress tracking #232), and has been using the library in Airshipper, a cross-platform launcher for Veloren.TextInput
(Enable custom fonts for text input #171).'static
lifetimes in a bunch of generic types (refactor: remove not mandatories 'static lifetimes #245).I am very grateful for all these contributions and all the feedback and suggestions received. Thank you, everyone!