T25d Generative: sound and motion
AudioGenerationPlayer shows a generated sound's prompt, model and length, a bar while it is made, then chat::AudioMessage to play it; Regenerate and Download wait for it. TTSVoicePicker lists voices with a sample to play, the chosen one washed with a check, tags dropping below when narrow. VideoGenerationTimeline lays shots along their time under a ruler, with posters, placeholders, a playhead and Extend. AudioMessage's waveform is one Tab stop where Left and Right seek, and it gives way at 280px. debug::ruler serves the timeline's ruler. A mask shown to read no longer follows the pointer.
This commit is contained in:
1 parent
eb0634e7a0
commit
a4f101f7b3
16 files changed
+1198
-19
No files matched your search
@@ -19,6 +19,7 @@ pub use hex::HexViewer;
|
||||
pub use network::{NetworkInspector, Request};
|
||||
pub use session::{Breakpoint, BreakpointList, DebugCommand, DebugState, DebugToolbar};
|
||||
pub use stack::{CallStack, StackFrame, Thread, ThreadList, ThreadState};
|
||||
pub(crate) use timeline::ruler;
|
||||
pub use timeline::{Span, TimelineProfiler, zoomed};
|
||||
pub use variables::{ValueKind, Variable, VariablesPanel, Watch, WatchPanel};
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ fn tick_label(time: f64, step: f64) -> String {
|
||||
const TICKS: usize = 6;
|
||||
|
||||
/// The ruler's step and ticks: as many as leave `room` for each label across `width`, each with room before the end.
|
||||
fn ruler(range: (f64, f64), width: f32, room: f32) -> (f64, Vec<f64>) {
|
||||
pub(crate) fn ruler(range: (f64, f64), width: f32, room: f32) -> (f64, Vec<f64>) {
|
||||
let length = range.1 - range.0;
|
||||
let across = move |span: f64| (span / length) as f32 * width;
|
||||
let step = (2..=TICKS)
|
||||
|
||||
Reference in new issue
Block a user