Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,7 @@ enum class SerializedStockBrush {
PressurePenLatest,
HighlighterLatest,
DashedLineLatest,
EmojiHighlighterHeartLatest,
EmojiHighlighterStarLatest,
EmojiHighlighterPoopLatest,
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ class CahierTextureBitmapStore(context: Context) : TextureBitmapStore {

private val textureResources: Map<String, Int> = mapOf(
"music-clef-g" to R.drawable.music_clef_g,
"music-note-sixteenth" to R.drawable.music_note_sixteenth
"music-note-sixteenth" to R.drawable.music_note_sixteenth,
"emoji-heart" to R.drawable.emoji_heart,
"emoji-star" to R.drawable.emoji_star,
"emoji-poop" to R.drawable.emoji_poop,
)

private val loadedBitmaps = mutableMapOf<String, Bitmap>()
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/com/example/cahier/core/ui/Converters.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ class Converters {
StockBrushes.pressurePen() to SerializedStockBrush.PressurePenLatest,
StockBrushes.highlighter() to SerializedStockBrush.HighlighterLatest,
StockBrushes.dashedLine() to SerializedStockBrush.DashedLineLatest,
StockBrushes.emojiHighlighter("emoji-heart", showMiniEmojiTrail = true) to SerializedStockBrush.EmojiHighlighterHeartLatest,
StockBrushes.emojiHighlighter("emoji-star", showMiniEmojiTrail = true) to SerializedStockBrush.EmojiHighlighterStarLatest,
StockBrushes.emojiHighlighter("emoji-poop", showMiniEmojiTrail = true) to SerializedStockBrush.EmojiHighlighterPoopLatest,
Comment thread
maxmmitchell marked this conversation as resolved.
)

private val enumToStockBrush =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.PopupProperties
import androidx.ink.brush.BrushFamily
import androidx.ink.brush.StockBrushes
import com.example.cahier.R
Expand Down Expand Up @@ -140,6 +142,7 @@ private fun BrushLibraryMenu(
R.string.marker to StockBrushes.marker(),
R.string.pressure_pen to StockBrushes.pressurePen(),
R.string.dashed_line to StockBrushes.dashedLine(),
R.string.emoji_highlighter to StockBrushes.emojiHighlighter("emoji-heart", showMiniEmojiTrail = true),
)
}

Expand All @@ -159,7 +162,7 @@ private fun BrushLibraryMenu(
onClick = {},
enabled = false
)
stockBrushes.forEach { (nameResId, brushFamily) ->
stockBrushes.filter { it.first != R.string.emoji_highlighter }.forEach { (nameResId, brushFamily) ->
DropdownMenuItem(
text = { Text(stringResource(nameResId)) },
onClick = {
Expand All @@ -168,6 +171,49 @@ private fun BrushLibraryMenu(
}
)
}

var showEmojiSubMenu by remember { mutableStateOf(false) }

Box {
DropdownMenuItem(
text = { Text(stringResource(R.string.emoji_highlighter)) },
trailingIcon = {
Text(text = if (showEmojiSubMenu) "▶" else "▼")
},
onClick = { showEmojiSubMenu = true }
)
DropdownMenu(
expanded = showEmojiSubMenu,
onDismissRequest = { showEmojiSubMenu = false },
offset = DpOffset(x = 166.dp, y = (-56).dp),
properties = PopupProperties(focusable = true)
) {
DropdownMenuItem(
text = { Text(stringResource(R.string.emoji_heart)) },
onClick = {
onLoadBrush(StockBrushes.emojiHighlighter("emoji-heart", showMiniEmojiTrail = true))
showEmojiSubMenu = false
expanded = false
}
)
DropdownMenuItem(
text = { Text(stringResource(R.string.emoji_star)) },
onClick = {
onLoadBrush(StockBrushes.emojiHighlighter("emoji-star", showMiniEmojiTrail = true))
showEmojiSubMenu = false
expanded = false
}
)
DropdownMenuItem(
text = { Text(stringResource(R.string.emoji_poop)) },
onClick = {
onLoadBrush(StockBrushes.emojiHighlighter("emoji-poop", showMiniEmojiTrail = true))
showEmojiSubMenu = false
expanded = false
}
)
}
}

if (cahierBrushes.isNotEmpty()) {
DropdownMenuItem(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.PopupProperties
import androidx.ink.brush.BrushFamily
Expand Down Expand Up @@ -431,9 +433,14 @@ fun BrushesDropdownMenu(
customBrushes: List<CustomBrush>,
modifier: Modifier = Modifier
) {
var showEmojiSubMenu by remember { mutableStateOf(false) }

DropdownMenu(
expanded = expanded,
onDismissRequest = onDismissRequest,
onDismissRequest = {
onDismissRequest()
showEmojiSubMenu = false
},
properties = PopupProperties(focusable = true),
modifier = modifier
) {
Expand Down Expand Up @@ -477,6 +484,70 @@ fun BrushesDropdownMenu(
},
onClick = { onBrushChange(StockBrushes.dashedLine()) }
)
Box {
DropdownMenuItem(
text = { Text(text = stringResource(R.string.emoji_highlighter)) },
leadingIcon = {
Icon(
painter = painterResource(R.drawable.ic_emoji_highlighter),
contentDescription = stringResource(R.string.emoji_highlighter)
)
},
trailingIcon = {
Text(text = if (showEmojiSubMenu) "▶" else "▼")
},
onClick = { showEmojiSubMenu = true }
)
DropdownMenu(
expanded = showEmojiSubMenu,
onDismissRequest = { showEmojiSubMenu = false },
offset = DpOffset(x = 202.dp, y = (-56).dp),
Comment thread
maxmmitchell marked this conversation as resolved.
Outdated
properties = PopupProperties(focusable = true)
) {
DropdownMenuItem(
text = { Text(text = stringResource(R.string.emoji_heart)) },
leadingIcon = {
Icon(
painter = painterResource(R.drawable.ic_emoji_heart),
contentDescription = stringResource(R.string.emoji_heart)
)
},
onClick = {
onBrushChange(StockBrushes.emojiHighlighter("emoji-heart", showMiniEmojiTrail = true))
showEmojiSubMenu = false
onDismissRequest()
}
)
DropdownMenuItem(
text = { Text(text = stringResource(R.string.emoji_star)) },
leadingIcon = {
Icon(
painter = painterResource(R.drawable.ic_emoji_star),
contentDescription = stringResource(R.string.emoji_star)
)
},
onClick = {
onBrushChange(StockBrushes.emojiHighlighter("emoji-star", showMiniEmojiTrail = true))
showEmojiSubMenu = false
onDismissRequest()
}
)
DropdownMenuItem(
text = { Text(text = stringResource(R.string.emoji_poop)) },
leadingIcon = {
Icon(
painter = painterResource(R.drawable.ic_emoji_poop),
contentDescription = stringResource(R.string.emoji_poop)
)
},
onClick = {
onBrushChange(StockBrushes.emojiHighlighter("emoji-poop", showMiniEmojiTrail = true))
showEmojiSubMenu = false
onDismissRequest()
}
)
}
}
if (customBrushes.isNotEmpty()) {
HorizontalDivider()
Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,10 +375,12 @@ class DrawingCanvasViewModel @Inject constructor(
isBrushSelectedInSession = true
_selectedBrush.update { currentBrush ->
val newBrush = currentBrush.copy(family = brushFamily)
val colorToApply = if (newBrush.family == StockBrushes.highlighter()) {
newBrush.composeColor.copy(alpha = HIGHLIGHTER_ALPHA)
} else {
newBrush.composeColor.copy(alpha = 1f)
val colorToApply = when(newBrush.family) {
StockBrushes.highlighter() -> newBrush.composeColor.copy(alpha = HIGHLIGHTER_ALPHA)
StockBrushes.emojiHighlighter("emoji-heart", showMiniEmojiTrail = true) -> Color(0xFF45CA).copy(alpha = HIGHLIGHTER_ALPHA)
StockBrushes.emojiHighlighter("emoji-poop", showMiniEmojiTrail = true) -> Color(0x783013).copy(alpha = HIGHLIGHTER_ALPHA)
StockBrushes.emojiHighlighter("emoji-star", showMiniEmojiTrail = true) -> Color(0xFFE100).copy(alpha = HIGHLIGHTER_ALPHA)
else -> newBrush.composeColor.copy(alpha = 1f)
}
Comment thread
maxmmitchell marked this conversation as resolved.
newBrush.copyWithComposeColor(colorToApply)
}
Expand Down
Binary file added app/src/main/res/drawable/emoji_heart.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable/emoji_poop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable/emoji_star.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_emoji_heart.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#e3e3e3"
android:pathData="M480,840L422,788Q321,697 255,631Q189,565 150,512.5Q111,460 95.5,416Q80,372 80,326Q80,232 143,169Q206,106 300,106Q352,106 399,128Q446,150 480,190Q514,150 561,128Q608,106 660,106Q754,106 817,169Q880,232 880,326Q880,372 864.5,416Q849,460 810,512.5Q771,565 705,631Q639,697 538,788L480,840ZM480,732Q576,646 638,584.5Q700,523 736,477.5Q772,432 786,396.5Q800,361 800,326Q800,266 760,226Q720,186 660,186Q613,186 573,212.5Q533,239 518,280L518,280L442,280L442,280Q427,239 387,212.5Q347,186 300,186Q240,186 200,226Q160,266 160,326Q160,361 174,396.5Q188,432 224,477.5Q260,523 322,584.5Q384,646 480,732ZM480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459L480,459L480,459L480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Z"/>
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_emoji_highlighter.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#e3e3e3"
android:pathData="M620,920Q516,920 436.5,858Q357,796 331,700Q376,702 420,691Q464,680 504,660L668,660Q669,649 669.5,638.5Q670,628 670,617Q670,608 669.5,598.5Q669,589 668,580L609,580Q625,562 638.5,542Q652,522 663,500L804,500Q784,470 756,447.5Q728,425 693,413Q698,393 699.5,372Q701,351 700,331Q796,357 858,436.5Q920,516 920,620Q920,745 832.5,832.5Q745,920 620,920ZM525,818Q518,798 512.5,779Q507,760 503,740L436,740Q453,765 475.5,785Q498,805 525,818ZM620,832Q632,810 640.5,787Q649,764 655,740L585,740Q591,764 600,787Q609,810 620,832ZM715,818Q742,805 764.5,785Q787,765 804,740L737,740Q732,760 727,779Q722,798 715,818ZM748,660L836,660Q838,650 839,640.5Q840,631 840,620Q840,609 839,599.5Q838,590 836,580L748,580Q749,589 749.5,598.5Q750,608 750,617Q750,628 749.5,638.5Q749,649 748,660ZM340,640Q215,640 127.5,552.5Q40,465 40,340Q40,215 127.5,127.5Q215,40 340,40Q465,40 552.5,127.5Q640,215 640,340Q640,465 552.5,552.5Q465,640 340,640ZM340,560Q431,560 495.5,495.5Q560,431 560,340Q560,249 495.5,184.5Q431,120 340,120Q249,120 184.5,184.5Q120,249 120,340Q120,431 184.5,495.5Q249,560 340,560ZM240,320Q257,320 268.5,308.5Q280,297 280,280Q280,263 268.5,251.5Q257,240 240,240Q223,240 211.5,251.5Q200,263 200,280Q200,297 211.5,308.5Q223,320 240,320ZM340,496Q388,496 425.5,469Q463,442 480,400L200,400Q217,442 254.5,469Q292,496 340,496ZM440,320Q457,320 468.5,308.5Q480,297 480,280Q480,263 468.5,251.5Q457,240 440,240Q423,240 411.5,251.5Q400,263 400,280Q400,297 411.5,308.5Q423,320 440,320ZM340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Q340,340 340,340Z"/>
</vector>
11 changes: 11 additions & 0 deletions app/src/main/res/drawable/ic_emoji_poop.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#00000000"
android:strokeColor="#e3e3e3"
android:strokeWidth="60"
android:pathData="M 240,800 C 100,800 100,640 240,640 C 160,640 160,480 320,480 C 260,480 360,280 480,160 C 500,140 520,160 520,180 C 520,220 480,280 480,280 C 600,280 700,480 640,480 C 800,480 800,640 720,640 C 860,640 860,800 720,800 Z"/>
Comment thread
maxmmitchell marked this conversation as resolved.
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_emoji_star.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#e3e3e3"
android:pathData="M305,256L417,111Q429,95 445.5,87.5Q462,80 480,80Q498,80 514.5,87.5Q531,95 543,111L655,256L825,313Q851,321 866,342.5Q881,364 881,390Q881,402 877.5,414Q874,426 866,437L756,593L760,757Q761,792 737,816Q713,840 681,840Q679,840 659,837L480,787L301,837Q296,839 290,839.5Q284,840 279,840Q247,840 223,816Q199,792 200,757L204,592L95,437Q87,426 83.5,414Q80,402 80,390Q80,365 94.5,343.5Q109,322 135,313L305,256ZM354,325L160,389Q160,389 160,389Q160,389 160,389L284,568L280,759Q280,759 280,759Q280,759 280,759L480,704L680,760Q680,760 680,760Q680,760 680,760L676,568L800,391Q800,391 800,391Q800,391 800,391L606,325L480,160Q480,160 480,160Q480,160 480,160L354,325ZM480,460L480,460Q480,460 480,460Q480,460 480,460L480,460L480,460Q480,460 480,460Q480,460 480,460L480,460L480,460Q480,460 480,460Q480,460 480,460L480,460L480,460Q480,460 480,460Q480,460 480,460L480,460L480,460Q480,460 480,460Q480,460 480,460Z"/>
</vector>
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@
<string name="marker">Marker</string>
<string name="highlighter">Highlighter</string>
<string name="dashed_line">Dashed line</string>
<string name="emoji_highlighter">Emoji Highlighter</string>
<string name="emoji_heart">Heart Emoji</string>
<string name="emoji_star">Star Emoji</string>
<string name="emoji_poop">Poop Emoji</string>

<string name="note_image_preview">Note image preview</string>
<string name="drawing_note_indicator">Drawing note indicator</string>
Expand Down
Loading