Высота: видео в контейнере прижимается к верху/низу по vertical (Row-центрирование съедало вертикаль)
This commit is contained in:
@@ -115,6 +115,9 @@ fun GlassesMovieScreen(
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth().background(Color.Black),
|
||||
// Видео в контейнере прижимается к верху (vertical=1) или низу (vertical=0):
|
||||
// Row-центрирование съедало вертикаль — картинка оставалась «по центру».
|
||||
verticalAlignment = Alignment.Top,
|
||||
horizontalArrangement = if (side == Side.LEFT) Arrangement.End else Arrangement.Start,
|
||||
) {
|
||||
if (SCALE_DEBUG_SQUARE) {
|
||||
@@ -125,7 +128,9 @@ fun GlassesMovieScreen(
|
||||
BinocularVideoPlayer(
|
||||
player = player,
|
||||
renderer = renderer,
|
||||
modifier = Modifier.size(playerWidth.px, playerHeight.px),
|
||||
modifier = Modifier
|
||||
.size(playerWidth.px, playerHeight.px)
|
||||
.offset(y = videoOffsetY(containerH, playerHeight, vertical).px),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -155,6 +160,14 @@ fun scaleOffsetX(side: Side, screenWidthPx: Int, scale: Float): Int =
|
||||
fun verticalOffsetY(screenHeightPx: Int, scale: Float, vertical: Float): Int =
|
||||
((1f - vertical) * screenHeightPx * (1f - scale)).toInt()
|
||||
|
||||
/**
|
||||
* Смещение видео внутри контейнера глаза: vertical=1.0 — у верха контейнера,
|
||||
* 0.0 — у низа (нижняя кромка видео прижата к низу контейнера, который сам
|
||||
* у низа экрана при vertical=0). Row-центрирование иначе съедало вертикаль.
|
||||
*/
|
||||
fun videoOffsetY(containerHeightPx: Int, videoHeightPx: Int, vertical: Float): Int =
|
||||
((1f - vertical) * (containerHeightPx - videoHeightPx).coerceAtLeast(0)).toInt()
|
||||
|
||||
/** Отладочный режим: красный квадрат вместо видео (проверка масштаба/позиций скрином). Перед финалом — false. */
|
||||
private const val SCALE_DEBUG_SQUARE = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user