Fix naming and waveform previews

This commit is contained in:
David Langley 2023-10-27 13:06:33 +01:00
parent ad81e2898c
commit 34dda1b568
4 changed files with 11 additions and 9 deletions

View file

@ -37,6 +37,6 @@ internal fun aVoiceMessageComposerState(
eventSink = {}, eventSink = {},
) )
internal var aWaveformLevels = List(100) { it.toFloat() / 200 }.toPersistentList() internal var aWaveformLevels = List(100) { it.toFloat() / 100 }.toPersistentList()

View file

@ -817,7 +817,7 @@ internal fun TextComposerVoicePreview() = ElementPreview {
enableVoiceMessages = true, enableVoiceMessages = true,
) )
PreviewColumn(items = persistentListOf({ PreviewColumn(items = persistentListOf({
VoicePreview(voiceMessageState = VoiceMessageState.Recording(61.seconds, List(100) { it.toFloat() / 200 }.toPersistentList())) VoicePreview(voiceMessageState = VoiceMessageState.Recording(61.seconds, List(100) { it.toFloat() / 100 }.toPersistentList()))
}, { }, {
VoicePreview(voiceMessageState = VoiceMessageState.Preview(isPlaying = false)) VoicePreview(voiceMessageState = VoiceMessageState.Preview(isPlaying = false))
}, { }, {

View file

@ -58,27 +58,29 @@ fun LiveWaveformView(
) { ) {
var canvasSize by remember { mutableStateOf(DpSize(0.dp, 0.dp)) } var canvasSize by remember { mutableStateOf(DpSize(0.dp, 0.dp)) }
var parentWidth by remember { mutableIntStateOf(0) }
val waveformWidth by remember(levels, lineWidth, linePadding) { val waveformWidth by remember(levels, lineWidth, linePadding) {
derivedStateOf { derivedStateOf {
levels.size * (lineWidth.value + linePadding.value) levels.size * (lineWidth.value + linePadding.value)
} }
} }
var width by remember { mutableIntStateOf(0) }
Box(contentAlignment = Alignment.CenterEnd, Box(contentAlignment = Alignment.CenterEnd,
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
.height(waveFormHeight) .height(waveFormHeight)
.onSizeChanged { width = it.width } .onSizeChanged { parentWidth = it.width }
) { ) {
Canvas( Canvas(
modifier = Modifier modifier = Modifier
.width(canvasSize.width) .width(Dp(waveformWidth))
.graphicsLayer(alpha = DEFAULT_GRAPHICS_LAYER_ALPHA) .graphicsLayer(alpha = DEFAULT_GRAPHICS_LAYER_ALPHA)
.then(modifier) .then(modifier)
) { ) {
canvasSize = DpSize(Dp(min(waveformWidth, width.toFloat())), size.height.toDp()) canvasSize = DpSize(Dp(min(waveformWidth, parentWidth.toFloat())), size.height.toDp())
val countThatFitsWidth = (width.toFloat() / (lineWidth.toPx() + linePadding.toPx())).toInt() val countThatFitsWidth = (parentWidth.toFloat() / (lineWidth.toPx() + linePadding.toPx())).toInt()
drawWaveform( drawWaveform(
waveformData = levels.takeLast(countThatFitsWidth).toPersistentList(), waveformData = levels.takeLast(countThatFitsWidth).toPersistentList(),
canvasSize = canvasSize, canvasSize = canvasSize,
@ -96,7 +98,7 @@ internal fun LiveWaveformViewPreview() = ElementPreview {
Column { Column {
LiveWaveformView( LiveWaveformView(
levels = List(100) { it.toFloat() / 200 }.toPersistentList(), levels = List(100) { it.toFloat() / 100 }.toPersistentList(),
modifier = Modifier.height(34.dp), modifier = Modifier.height(34.dp),
) )
LiveWaveformView( LiveWaveformView(

View file

@ -92,5 +92,5 @@ private fun RedRecordingDot(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun VoiceMessageRecordingPreview() = ElementPreview { internal fun VoiceMessageRecordingPreview() = ElementPreview {
VoiceMessageRecording(List(100) { it.toFloat() / 200 }.toPersistentList(), 0.seconds) VoiceMessageRecording(List(100) { it.toFloat() / 100 }.toPersistentList(), 0.seconds)
} }