Skip to content

Instantly share code, notes, and snippets.

Avatar

Francesc Vilariño Güell fvilarino

View GitHub Profile
@fvilarino
fvilarino / ticker_final.kt
Last active March 24, 2023 20:48
Ticker Final
View ticker_final.kt
private val TickerCycleMillis = 150
private object AlphabetMapper {
private val Alphabet = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789•".toList()
val size: Int = Alphabet.size
fun getLetterAt(index: Int): Char = Alphabet[index % size]
fun getIndexOf(letter: Char, offset: Int = 0): TickerIndex {
@fvilarino
fvilarino / ticker_board.kt
Created March 5, 2023 00:30
Ticker - Ticker Board
View ticker_board.kt
@Composable
fun TickerBoard(
// 1
text: String,
// 2
numColumns: Int,
// 3
numRows: Int,
modifier: Modifier = Modifier,
textColor: Color = Color.White,
@fvilarino
fvilarino / ticker_row.kt
Created March 5, 2023 00:26
Ticker - Ticker Row
View ticker_row.kt
@Composable
fun TickerRow(
// 1
text: String,
// 2
numCells: Int,
modifier: Modifier = Modifier,
textColor: Color = Color.White,
backgroundColor: Color = Color.Black,
fontSize: TextUnit = 96.sp,
@fvilarino
fvilarino / ticker_ticker_v1.kt
Last active March 5, 2023 00:22
Ticker - Ticker V1
View ticker_ticker_v1.kt
@Composable
fun Ticker(
letter: Char,
modifier: Modifier = Modifier,
textColor: Color = Color.White,
backgroundColor: Color = Color.Black,
fontSize: TextUnit = 96.sp,
) {
// 1
val animatable = remember {
@fvilarino
fvilarino / ticker_alphabet.kt
Created March 5, 2023 00:11
Ticker - Alphabet
View ticker_alphabet.kt
private object AlphabetMapper {
// 1
private val Alphabet = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789•".toList()
val size: Int = Alphabet.size
// 2
fun getLetterAt(index: Int): Char = Alphabet[index % size]
// 3
@fvilarino
fvilarino / ticker_basic_layout.kt
Created March 4, 2023 23:53
Ticker - Basic Layout
View ticker_basic_layout.kt
@Composable
fun Ticker(
letter: Char,
modifier: Modifier = Modifier,
textColor: Color = Color.White,
backgroundColor: Color = Color.Black,
fontSize: TextUnit = 96.sp,
) {
// 1
val currentLetter = /* TODO */
@fvilarino
fvilarino / ticker_bottom_half.kt
Created March 4, 2023 23:30
Ticker - Bottom Half
View ticker_bottom_half.kt
@Composable
private fun BottomHalf(
modifier: Modifier = Modifier,
content: @Composable () -> Unit,
) {
Layout(
modifier = modifier.clipToBounds(),
content = content,
) { measurables, constraints ->
require(measurables.size == 1) { "This composable expects a single child" }
@fvilarino
fvilarino / ticker_top_half.kt
Created March 4, 2023 23:15
Ticker - Top Half
View ticker_top_half.kt
@Composable
private fun TopHalf(
modifier: Modifier = Modifier,
content: @Composable () -> Unit,
) {
// 1
Layout(
// 2
modifier = modifier.clipToBounds(),
content = content,
@fvilarino
fvilarino / ticker_centered_text.kt
Last active March 10, 2023 21:07
Ticker - Centered Text
View ticker_centered_text.kt
@Composable
fun CenteredText(
letter: Char,
modifier: Modifier = Modifier,
textColor: Color = Color.White,
backgroundColor: Color = Color.Black,
fontSize: TextUnit = 96.sp,
) {
// 1
var ascent by remember {
@fvilarino
fvilarino / ticker_text_properties.kt
Created March 4, 2023 19:46
Ticker - Text Properties
View ticker_text_properties.kt
Text(
text = letter.toString(),
color = textColor,
fontFamily = FontFamily.Monospace,
fontSize = fontSize,
modifier = modifier
.background(backgroundColor)
.drawBehind {
drawLine(
Color.Red,