Skip to main content

embedded_gui/
lib.rs

1#![no_std]
2
3#[cfg(feature = "std")]
4extern crate std;
5
6pub mod block;
7pub mod completion;
8pub mod context;
9pub mod display_backend;
10#[cfg(feature = "embassy")]
11pub mod embassy;
12pub mod font;
13pub mod framebuffer;
14pub mod geometry;
15pub mod haptics;
16pub mod image;
17pub mod input;
18#[cfg(any(
19    feature = "embedded-text",
20    feature = "embedded-layout",
21    feature = "embedded-3dgfx"
22))]
23pub mod interop;
24pub mod layout;
25mod math;
26pub mod motion;
27pub mod palette;
28pub mod pdc;
29pub use motion as animation;
30pub use motion as animation_timeline;
31pub use motion as animation_timing;
32pub use motion as cinematic;
33pub use motion as screen_transition;
34pub use motion as transition_preset;
35pub use motion as widget_animation;
36pub mod present;
37pub mod render;
38pub mod round;
39pub mod screen;
40pub mod state;
41pub mod style;
42pub mod swapchain;
43#[cfg(feature = "std")]
44pub mod test_buffer;
45pub mod text;
46pub mod visual_widgets;
47pub mod widget;
48pub mod widgets;
49
50pub use haptics::{HapticPattern, HapticSequencer};
51
52pub use visual_widgets::{BusyWheel, GaugeWidget};
53#[cfg(feature = "embedded-dsp")]
54pub use visual_widgets::{SpectrumAnalyzerWidget, TouchInputFilter};
55
56pub use animation::{
57    Animation, AnimationError, AnimationHandlers, AnimationId, AnimationManager,
58    AnimationManagerCallbacks, AnimationState, Easing, InertiaAnimator, PathAnimator, PathPoint,
59    RepeatMode, SpringAnimator, Timer, Tween, apply_easing,
60};
61pub use animation_timeline::{
62    AnimationGroup, AnimationSequence, ComposedAnimation, ComposedAnimationCallbacks,
63    ComposedAnimationPlayer, ComposedAnimationStatus, CompositionControls, CompositionMode,
64    Keyframe, KeyframeTrack, KeyframeTrackCallbacks, SequencePlayer, SequencePlayerStatus,
65    SequenceRepeatMode, TimelineError, TimelineStep,
66};
67pub use animation_timing::{
68    DEFAULT_DURATION_MS, FRAME_INTERVAL_MS, MOOOK_DURATION_MS, NORMALIZED_MAX,
69    PORT_HOLE_DURATION_MS, SHUTTER_DURATION_MS, interpolate_moook, moook_curve, moook_duration_ms,
70    timing_half_phase, timing_scaled, timing_shutter_phase,
71};
72pub use block::Block;
73pub use cinematic::{
74    CardDeckDirection, CardDeckState, CardStory, CardStoryTransition, CinematicPreset,
75    GlanceTileSpec, MotionTokens, PeekRevealSpec, TimelineMotionPreset, animate_glance_focus,
76    animate_peek_reveal, apply_carddeck_visibility, setup_card_story, setup_launcher_glance,
77    setup_launcher_glance_with_tokens, setup_peek_timeline, setup_peek_timeline_with_tokens,
78};
79pub use completion::{CompletionSlot, WaitTransfer, WaitTransferFuture};
80pub use context::{
81    GuiContext, GuiError, KeyBindingAction, PressTiming, WidgetBuilder, WidgetKeyBindings,
82    WidgetKeyInputPolicy,
83};
84pub use display_backend::{
85    AsyncDmaTransfer, DisplayBackend, DisplayError, DisplayRegion, DmaTransfer, SimulatorBackend,
86    TransferError,
87};
88#[cfg(feature = "embassy")]
89pub use embassy::{EmbassyWaitTransfer, EmbassyWaitTransferFuture, FrameClock};
90pub use embedded_graphics_framebuf::{
91    FrameBuf,
92    backends::{DMACapableFrameBufferBackend, EndianCorrectedBuffer, EndianCorrection},
93};
94pub use font::{BitmapFont, Font, FontId, PackedFont};
95pub use framebuffer::{Framebuffer, FramebufferGray8, FramebufferRgba8888, Rgba8888};
96pub use geometry::{Anchor, DirtyTracker, EdgeInsets, HorizontalAlign, Rect};
97#[cfg(all(feature = "std", feature = "image-decode"))]
98pub use image::{
99    BasicImageDecoder, EncodedImageFormat, ImageDecodeError, ImageDecoder, decode_image_auto,
100    decode_image_with, decode_ppm_ascii,
101};
102pub use image::{
103    ImageAtlas, ImageAtlasEntry, ImageFit, ImageRef, ReelFrame, ReelPlayer, SpriteSheet, TileMode,
104    TileRef,
105};
106pub use input::{
107    EventPhaseMask, InputEvent, PointerButton, PointerState, UiEvent, UiEventFilter,
108    WidgetDispatchPolicy, WidgetEvent, WidgetEventFilter, WidgetEventKind,
109};
110pub use layout::{
111    Align, Axis, Constraint, GridLayout, GridPlacement, GridTrack, JustifyContent, LayoutItem,
112    Length, LinearLayout,
113};
114pub use palette::{DisplayMode, DisplayPalette, InkRole, RoleColors};
115pub use pdc::{PdcCommand, PdcCommandType, PdcImage, PdcPrecisePoint};
116pub use present::PresentRegion;
117pub use render::{
118    AntiAliasMode, Blend, BlendMode, CHAR_HEIGHT, CHAR_WIDTH, ColorFormat, Compositor, Dither,
119    DrawTask, DrawTaskQueue, DrawUnit, EllipsisMode, LayerState, PartialBandBuffer, PathVerb,
120    PixelRead, RenderBackendCaps, RenderCtx, RenderQuality, SoftwareDrawUnit, StrokeCap,
121    StrokeJoin, StrokeStyle, TextAlign, TextMetrics, TextOverflow, TextOverflowPolicy, TextStyle,
122    TextWrap, Transform2D, VectorPath, VerticalAlign, dispatch_draw_tasks,
123};
124pub use round::{UnobstructedArea, circle_chord_width, round_screen_line_bounds};
125pub use screen::{
126    Screen, ScreenCommand, ScreenId, ScreenLifecycleEvent, ScreenStack, ScreenStackError,
127    ScreenTransition,
128};
129pub use screen_transition::{
130    ActiveScreenTransition, ScreenTransitionEffect, ScreenTransitionOrigin, ScreenTransitionRunner,
131    ScreenTransitionSample, ScreenTransitionSpec, composite_framebuffer_fade,
132    fade_outgoing_opacity, render_transition_pair,
133};
134pub use state::{FeedTimelineState, ListState, ScrollState, SliderState, TabsState};
135pub use style::{
136    AlphaLinearGradient, AlphaRadialGradient, Border, GradientDirection, LinearGradient,
137    MultiPartStyle, PartStyleRule, Shadow, StateStyle, Style, StyleTransition, Theme, VisualState,
138    VisualStateMask, WidgetPart, WidgetStyle, lerp_style,
139};
140pub use swapchain::{StandardSwapChain, SwapChain};
141#[cfg(feature = "triple-buffering")]
142pub use swapchain::{StandardTripleSwapChain, TripleSwapChain};
143#[cfg(feature = "std")]
144pub use test_buffer::{LayerCanvas, TestBuffer};
145pub use text::{
146    BasicTextShaper, Line, ShapedGlyph, ShapingConfig, Span, Text, TextDirection, TextShaper,
147};
148pub use transition_preset::TransitionPreset;
149pub use widget::{
150    EventContext, EventPhase, EventPolicy, FocusGroupId, MenuContract, PropertyError, PropertyKey,
151    PropertyValue, StatefulWidget, StyleClassId, Widget, WidgetFlags, WidgetId,
152};
153pub use widget_animation::presets;
154pub use widget_animation::{
155    AnimatedProperty, AnimationConflictPolicy, BindingSnapshot, WidgetAnimationCallbacks,
156    WidgetAnimationError, WidgetAnimator, WidgetKeyframeState, WidgetPropertyKeyframe,
157};
158pub use widgets::{
159    ActionBarWidget, ActionMenuError, ActionMenuItem, ActionMenuWidget, ActionableDialogWidget,
160    BatteryState, ConfirmationDialogWidget, ContentIndicatorDirection, ContentIndicatorWidget,
161    CrumbsIndicatorWidget, DialogAction, DialogError, DialogType, NotificationAction,
162    NotificationError, NotificationPriority, NotificationSheetWidget, NumberPickerWidget,
163    PeekBannerWidget, PickerError, RichTextError, RichTextNodeWidget, ScaleMode, ScaleWidget,
164    SelectionWidget, SpinboxWidget, StatusBarError, StatusBarMode, StatusBarWidget, TableWidget,
165    TextSpan, TimeFormat, TimePickerField, TimePickerWidget, TimelineNodeState, TimelineNodeWidget,
166};
167pub use widgets::{
168    ChartMode, KeyboardLayout, NotificationLevel, SurfaceState, WidgetKind, WidgetNode,
169};
170
171pub mod prelude {
172    pub use crate::{
173        ActiveScreenTransition, Align, AlphaLinearGradient, AlphaRadialGradient, AnimatedProperty,
174        Animation, AnimationConflictPolicy, AnimationError, AnimationGroup, AnimationHandlers,
175        AnimationId, AnimationManager, AnimationManagerCallbacks, AnimationSequence,
176        AnimationState, AntiAliasMode, Axis, BasicTextShaper, BindingSnapshot, BitmapFont, Blend,
177        BlendMode, Block, Border, CardDeckDirection, CardDeckState, CardStory, CardStoryTransition,
178        ChartMode, CinematicPreset, ColorFormat, ComposedAnimation, ComposedAnimationCallbacks,
179        ComposedAnimationPlayer, ComposedAnimationStatus, CompositionControls, CompositionMode,
180        Compositor, Constraint, DirtyTracker, Dither, Easing, EdgeInsets, EllipsisMode,
181        EventContext, EventPhase, EventPhaseMask, EventPolicy, FeedTimelineState, FocusGroupId,
182        Font, FontId, Framebuffer, FramebufferGray8, FramebufferRgba8888, GlanceTileSpec,
183        GradientDirection, GridLayout, GridPlacement, GridTrack, GuiContext, GuiError,
184        HapticPattern, HapticSequencer, ImageAtlas, ImageAtlasEntry, ImageFit, ImageRef,
185        InertiaAnimator, InputEvent, KeyBindingAction, KeyboardLayout, Keyframe, KeyframeTrack,
186        KeyframeTrackCallbacks, LayerState, LayoutItem, Length, Line, LinearGradient, LinearLayout,
187        ListState, MenuContract, MotionTokens, NotificationLevel, PackedFont, PathAnimator,
188        PathPoint, PathVerb, PeekRevealSpec, PixelRead, PointerButton, PointerState, PresentRegion,
189        PressTiming, Rect, ReelFrame, ReelPlayer, RenderBackendCaps, RenderCtx, RenderQuality,
190        RepeatMode, Rgba8888, ScaleMode, ScaleWidget, Screen, ScreenCommand, ScreenId,
191        ScreenLifecycleEvent, ScreenStack, ScreenStackError, ScreenTransition,
192        ScreenTransitionEffect, ScreenTransitionOrigin, ScreenTransitionRunner,
193        ScreenTransitionSample, ScreenTransitionSpec, ScrollState, SequencePlayer,
194        SequencePlayerStatus, SequenceRepeatMode, Shadow, ShapedGlyph, ShapingConfig, SliderState,
195        Span, SpinboxWidget, SpringAnimator, SpriteSheet, StateStyle, StatefulWidget, StrokeCap,
196        StrokeJoin, StrokeStyle, Style, StyleClassId, StyleTransition, SurfaceState, TableWidget,
197        TabsState, Text, TextAlign, TextDirection, TextMetrics, TextOverflow, TextOverflowPolicy,
198        TextShaper, TextStyle, TextWrap, Theme, TileMode, TileRef, TimelineError,
199        TimelineMotionPreset, TimelineStep, Timer, Transform2D, TransitionPreset, Tween, UiEvent,
200        UiEventFilter, VectorPath, VerticalAlign, VisualState, WidgetAnimationCallbacks,
201        WidgetAnimationError, WidgetAnimator, WidgetDispatchPolicy, WidgetEvent, WidgetEventFilter,
202        WidgetEventKind, WidgetFlags, WidgetId, WidgetKeyBindings, WidgetKeyInputPolicy,
203        WidgetKeyframeState, WidgetKind, WidgetNode, WidgetPropertyKeyframe, WidgetStyle,
204        animate_glance_focus, animate_peek_reveal, apply_carddeck_visibility, apply_easing,
205        lerp_style, presets, render_transition_pair, setup_card_story, setup_launcher_glance,
206        setup_launcher_glance_with_tokens, setup_peek_timeline, setup_peek_timeline_with_tokens,
207    };
208
209    #[cfg(all(feature = "std", feature = "image-decode"))]
210    pub use crate::{
211        BasicImageDecoder, EncodedImageFormat, ImageDecodeError, ImageDecoder, LayerCanvas,
212        TestBuffer, decode_image_auto, decode_image_with, decode_ppm_ascii,
213    };
214
215    #[cfg(all(feature = "std", not(feature = "image-decode")))]
216    pub use crate::{LayerCanvas, TestBuffer};
217
218    #[cfg(feature = "macros")]
219    pub use embedded_gui_macros::{gui_kdl, include_gui};
220}
221
222#[cfg(feature = "macros")]
223pub use embedded_gui_macros::{gui_kdl, include_gui};