Skip to main content

embedded_gui/
lib.rs

1#![no_std]
2
3#[cfg(feature = "std")]
4extern crate std;
5
6pub mod animation;
7pub mod animation_timeline;
8pub mod animation_timing;
9pub mod block;
10pub mod cinematic;
11pub mod completion;
12pub mod context;
13pub mod display_backend;
14#[cfg(feature = "embassy")]
15pub mod embassy;
16pub mod font;
17pub mod framebuffer;
18pub mod geometry;
19pub mod image;
20pub mod input;
21#[cfg(any(feature = "embedded-text", feature = "embedded-layout"))]
22pub mod interop;
23pub mod layout;
24mod math;
25pub mod present;
26pub mod render;
27pub mod screen;
28pub mod screen_transition;
29pub mod state;
30pub mod style;
31pub mod swapchain;
32#[cfg(feature = "std")]
33pub mod test_buffer;
34pub mod text;
35pub mod transition_preset;
36pub mod visual_widgets;
37pub mod widget;
38pub mod widget_animation;
39pub mod widgets;
40
41pub use visual_widgets::{BusyWheel, GaugeWidget};
42#[cfg(feature = "embedded-dsp")]
43pub use visual_widgets::{SpectrumAnalyzerWidget, TouchInputFilter};
44
45pub use animation::{
46    Animation, AnimationError, AnimationHandlers, AnimationId, AnimationManager,
47    AnimationManagerCallbacks, AnimationState, Easing, InertiaAnimator, PathAnimator, PathPoint,
48    RepeatMode, SpringAnimator, Timer, Tween, apply_easing,
49};
50pub use animation_timeline::{
51    AnimationGroup, AnimationSequence, ComposedAnimation, ComposedAnimationCallbacks,
52    ComposedAnimationPlayer, ComposedAnimationStatus, CompositionControls, CompositionMode,
53    Keyframe, KeyframeTrack, KeyframeTrackCallbacks, SequencePlayer, SequencePlayerStatus,
54    SequenceRepeatMode, TimelineError, TimelineStep,
55};
56pub use animation_timing::{
57    DEFAULT_DURATION_MS, FRAME_INTERVAL_MS, MOOOK_DURATION_MS, NORMALIZED_MAX,
58    PORT_HOLE_DURATION_MS, SHUTTER_DURATION_MS, interpolate_moook, moook_curve, moook_duration_ms,
59    timing_half_phase, timing_scaled, timing_shutter_phase,
60};
61pub use block::Block;
62pub use cinematic::{
63    CardDeckDirection, CardDeckState, CardStory, CardStoryTransition, CinematicPreset,
64    GlanceTileSpec, MotionTokens, PeekRevealSpec, TimelineMotionPreset, animate_glance_focus,
65    animate_peek_reveal, apply_carddeck_visibility, setup_card_story, setup_launcher_glance,
66    setup_launcher_glance_with_tokens, setup_peek_timeline, setup_peek_timeline_with_tokens,
67};
68pub use completion::{CompletionSlot, WaitTransfer, WaitTransferFuture};
69pub use context::{
70    GuiContext, GuiError, KeyBindingAction, PressTiming, WidgetKeyBindings, WidgetKeyInputPolicy,
71};
72pub use display_backend::{
73    AsyncDmaTransfer, DisplayBackend, DisplayError, DisplayRegion, DmaTransfer, SimulatorBackend,
74    TransferError,
75};
76#[cfg(feature = "embassy")]
77pub use embassy::{EmbassyWaitTransfer, EmbassyWaitTransferFuture, FrameClock};
78pub use embedded_graphics_framebuf::{
79    FrameBuf,
80    backends::{DMACapableFrameBufferBackend, EndianCorrectedBuffer, EndianCorrection},
81};
82pub use font::FontId;
83pub use framebuffer::{Framebuffer, FramebufferGray8, FramebufferRgba8888, Rgba8888};
84pub use geometry::{DirtyTracker, EdgeInsets, Rect};
85#[cfg(all(feature = "std", feature = "image-decode"))]
86pub use image::{
87    BasicImageDecoder, EncodedImageFormat, ImageDecodeError, ImageDecoder, decode_image_auto,
88    decode_image_with, decode_ppm_ascii,
89};
90pub use image::{
91    ImageAtlas, ImageAtlasEntry, ImageFit, ImageRef, ReelFrame, ReelPlayer, SpriteSheet, TileMode,
92    TileRef,
93};
94pub use input::{
95    EventPhaseMask, InputEvent, PointerButton, PointerState, UiEvent, UiEventFilter,
96    WidgetDispatchPolicy, WidgetEvent, WidgetEventFilter, WidgetEventKind,
97};
98pub use layout::{Align, Axis, Constraint, LayoutItem, Length, LinearLayout};
99pub use present::PresentRegion;
100pub use render::{
101    AntiAliasMode, Blend, BlendMode, CHAR_HEIGHT, CHAR_WIDTH, ColorFormat, Compositor, Dither,
102    EllipsisMode, LayerState, PixelRead, RenderBackendCaps, RenderCtx, RenderQuality, StrokeCap,
103    StrokeJoin, StrokeStyle, TextAlign, TextMetrics, TextOverflow, TextOverflowPolicy, TextStyle,
104    TextWrap, Transform2D, VerticalAlign,
105};
106pub use screen::{
107    Screen, ScreenCommand, ScreenId, ScreenLifecycleEvent, ScreenStack, ScreenStackError,
108    ScreenTransition,
109};
110pub use screen_transition::{
111    ActiveScreenTransition, ScreenTransitionEffect, ScreenTransitionOrigin, ScreenTransitionRunner,
112    ScreenTransitionSample, ScreenTransitionSpec, render_transition_pair,
113};
114pub use state::{FeedTimelineState, ListState, ScrollState, SliderState, TabsState};
115pub use style::{
116    AlphaLinearGradient, AlphaRadialGradient, Border, GradientDirection, LinearGradient, Shadow,
117    StateStyle, Style, StyleTransition, Theme, VisualState, WidgetStyle, lerp_style,
118};
119pub use swapchain::{StandardSwapChain, SwapChain};
120#[cfg(feature = "triple-buffering")]
121pub use swapchain::{StandardTripleSwapChain, TripleSwapChain};
122#[cfg(feature = "std")]
123pub use test_buffer::{LayerCanvas, TestBuffer};
124pub use text::{
125    BasicTextShaper, Line, ShapedGlyph, ShapingConfig, Span, Text, TextDirection, TextShaper,
126};
127pub use transition_preset::TransitionPreset;
128pub use widget::{
129    EventContext, EventPhase, EventPolicy, FocusGroupId, MenuContract, StatefulWidget,
130    StyleClassId, WidgetFlags, WidgetId,
131};
132pub use widget_animation::presets;
133pub use widget_animation::{
134    AnimatedProperty, AnimationConflictPolicy, BindingSnapshot, WidgetAnimationCallbacks,
135    WidgetAnimationError, WidgetAnimator, WidgetKeyframeState, WidgetPropertyKeyframe,
136};
137pub use widgets::{
138    ChartMode, KeyboardLayout, NotificationLevel, SurfaceState, WidgetKind, WidgetNode,
139};
140
141pub mod prelude {
142    pub use crate::{
143        ActiveScreenTransition, Align, AlphaLinearGradient, AlphaRadialGradient, AnimatedProperty,
144        Animation, AnimationConflictPolicy, AnimationError, AnimationGroup, AnimationHandlers,
145        AnimationId, AnimationManager, AnimationManagerCallbacks, AnimationSequence,
146        AnimationState, AntiAliasMode, Axis, BasicTextShaper, BindingSnapshot, Blend, BlendMode,
147        Block, Border, CardDeckDirection, CardDeckState, CardStory, CardStoryTransition, ChartMode,
148        CinematicPreset, ColorFormat, ComposedAnimation, ComposedAnimationCallbacks,
149        ComposedAnimationPlayer, ComposedAnimationStatus, CompositionControls, CompositionMode,
150        Compositor, Constraint, DirtyTracker, Dither, Easing, EdgeInsets, EllipsisMode,
151        EventContext, EventPhase, EventPhaseMask, EventPolicy, FeedTimelineState, FocusGroupId,
152        FontId, Framebuffer, FramebufferGray8, FramebufferRgba8888, GlanceTileSpec,
153        GradientDirection, GuiContext, GuiError, ImageAtlas, ImageAtlasEntry, ImageFit, ImageRef,
154        InertiaAnimator, InputEvent, KeyBindingAction, KeyboardLayout, Keyframe, KeyframeTrack,
155        KeyframeTrackCallbacks, LayerState, LayoutItem, Length, Line, LinearGradient, LinearLayout,
156        ListState, MenuContract, MotionTokens, NotificationLevel, PathAnimator, PathPoint,
157        PeekRevealSpec, PixelRead, PointerButton, PointerState, PresentRegion, PressTiming, Rect,
158        ReelFrame, ReelPlayer, RenderBackendCaps, RenderCtx, RenderQuality, RepeatMode, Rgba8888,
159        Screen, ScreenCommand, ScreenId, ScreenLifecycleEvent, ScreenStack, ScreenStackError,
160        ScreenTransition, ScreenTransitionEffect, ScreenTransitionOrigin, ScreenTransitionRunner,
161        ScreenTransitionSample, ScreenTransitionSpec, ScrollState, SequencePlayer,
162        SequencePlayerStatus, SequenceRepeatMode, Shadow, ShapedGlyph, ShapingConfig, SliderState,
163        Span, SpringAnimator, SpriteSheet, StateStyle, StatefulWidget, StrokeCap, StrokeJoin,
164        StrokeStyle, Style, StyleClassId, StyleTransition, SurfaceState, TabsState, Text,
165        TextAlign, TextDirection, TextMetrics, TextOverflow, TextOverflowPolicy, TextShaper,
166        TextStyle, TextWrap, Theme, TileMode, TileRef, TimelineError, TimelineMotionPreset,
167        TimelineStep, Timer, Transform2D, TransitionPreset, Tween, UiEvent, UiEventFilter,
168        VerticalAlign, VisualState, WidgetAnimationCallbacks, WidgetAnimationError, WidgetAnimator,
169        WidgetDispatchPolicy, WidgetEvent, WidgetEventFilter, WidgetEventKind, WidgetFlags,
170        WidgetId, WidgetKeyBindings, WidgetKeyInputPolicy, WidgetKeyframeState, WidgetKind,
171        WidgetNode, WidgetPropertyKeyframe, WidgetStyle, animate_glance_focus, animate_peek_reveal,
172        apply_carddeck_visibility, apply_easing, lerp_style, presets, render_transition_pair,
173        setup_card_story, setup_launcher_glance, setup_launcher_glance_with_tokens,
174        setup_peek_timeline, setup_peek_timeline_with_tokens,
175    };
176
177    #[cfg(all(feature = "std", feature = "image-decode"))]
178    pub use crate::{
179        BasicImageDecoder, EncodedImageFormat, ImageDecodeError, ImageDecoder, LayerCanvas,
180        TestBuffer, decode_image_auto, decode_image_with, decode_ppm_ascii,
181    };
182
183    #[cfg(all(feature = "std", not(feature = "image-decode")))]
184    pub use crate::{LayerCanvas, TestBuffer};
185}