Refactor the AsyncImage to make it work in preview & clean some resources.
This commit is contained in:
parent
c23dba7669
commit
90bf11909f
43 changed files with 125 additions and 210 deletions
|
|
@ -3,7 +3,8 @@ package com.pixelized.rplexicon.data.model
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.pixelized.rplexicon.data.model.roll.Throw
|
import com.pixelized.rplexicon.data.model.roll.Throw
|
||||||
import com.pixelized.rplexicon.script.Script
|
import com.pixelized.rplexicon.script.Script
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.attackIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.attackIcon
|
||||||
|
|
||||||
|
|
||||||
data class Attack(
|
data class Attack(
|
||||||
val title: String,
|
val title: String,
|
||||||
|
|
@ -14,7 +15,7 @@ data class Attack(
|
||||||
val script: Script?,
|
val script: Script?,
|
||||||
private val iconUri: Uri?,
|
private val iconUri: Uri?,
|
||||||
) {
|
) {
|
||||||
val icon: Uri? get() = this.iconUri ?: title.attackIcon()
|
val icon: Any? get() = this.iconUri ?: attackIcon(name = title)
|
||||||
|
|
||||||
enum class Type(val key: String) {
|
enum class Type(val key: String) {
|
||||||
PHYSICAL_MELEE_ATTACK("Mêlée"),
|
PHYSICAL_MELEE_ATTACK("Mêlée"),
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.pixelized.rplexicon.data.model
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.pixelized.rplexicon.data.model.roll.Throw
|
import com.pixelized.rplexicon.data.model.roll.Throw
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.objectIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.objectIcon
|
||||||
|
|
||||||
data class ObjectAction(
|
data class ObjectAction(
|
||||||
val prefix: String?,
|
val prefix: String?,
|
||||||
|
|
@ -10,5 +10,5 @@ data class ObjectAction(
|
||||||
val effect: Throw?,
|
val effect: Throw?,
|
||||||
private val iconUri: Uri?,
|
private val iconUri: Uri?,
|
||||||
) {
|
) {
|
||||||
val icon: Uri? get() = iconUri ?: "${prefix ?: ""}${name}".objectIcon()
|
val icon: Any? get() = iconUri ?: objectIcon(name = "${prefix ?: ""}${name}")
|
||||||
}
|
}
|
||||||
|
|
@ -3,7 +3,7 @@ package com.pixelized.rplexicon.data.model
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.pixelized.rplexicon.data.model.roll.Throw
|
import com.pixelized.rplexicon.data.model.roll.Throw
|
||||||
import com.pixelized.rplexicon.script.Script
|
import com.pixelized.rplexicon.script.Script
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.skillIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.skillIcon
|
||||||
|
|
||||||
data class Skill(
|
data class Skill(
|
||||||
val name: String,
|
val name: String,
|
||||||
|
|
@ -15,5 +15,5 @@ data class Skill(
|
||||||
val script: Script?,
|
val script: Script?,
|
||||||
private val iconUri: Uri?,
|
private val iconUri: Uri?,
|
||||||
) {
|
) {
|
||||||
val icon: Uri? get() = iconUri ?: name.skillIcon()
|
val icon: Any? get() = iconUri ?: skillIcon(name = name)
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.pixelized.rplexicon.data.model
|
package com.pixelized.rplexicon.data.model
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.spellIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.spellIcon
|
||||||
|
|
||||||
data class Spell(
|
data class Spell(
|
||||||
val name: String,
|
val name: String,
|
||||||
|
|
@ -14,7 +14,7 @@ data class Spell(
|
||||||
val ritual: Boolean,
|
val ritual: Boolean,
|
||||||
private val iconUri: Uri?,
|
private val iconUri: Uri?,
|
||||||
) {
|
) {
|
||||||
val icon: Uri? get() = iconUri ?: name.spellIcon()
|
val icon: Any? get() = iconUri ?: spellIcon(name = name)
|
||||||
|
|
||||||
enum class School(val key: String) {
|
enum class School(val key: String) {
|
||||||
ABJURATION("Abjuration"),
|
ABJURATION("Abjuration"),
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.pixelized.rplexicon.data.model.Property
|
||||||
import com.pixelized.rplexicon.data.model.roll.Dice
|
import com.pixelized.rplexicon.data.model.roll.Dice
|
||||||
import com.pixelized.rplexicon.data.model.roll.Flat
|
import com.pixelized.rplexicon.data.model.roll.Flat
|
||||||
import com.pixelized.rplexicon.script.Script
|
import com.pixelized.rplexicon.script.Script
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.alterationIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.alterationIcon
|
||||||
|
|
||||||
data class Alteration(
|
data class Alteration(
|
||||||
val name: String,
|
val name: String,
|
||||||
|
|
@ -15,7 +15,7 @@ data class Alteration(
|
||||||
val status: Map<Property, Status>,
|
val status: Map<Property, Status>,
|
||||||
private val iconUri: Uri?,
|
private val iconUri: Uri?,
|
||||||
) {
|
) {
|
||||||
val icon: Uri? get() = iconUri ?: name.alterationIcon()
|
val icon: Any? get() = iconUri ?: alterationIcon(name = name)
|
||||||
|
|
||||||
data class Status(
|
data class Status(
|
||||||
val name: String,
|
val name: String,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.pixelized.rplexicon.ui.composable.images
|
package com.pixelized.rplexicon.ui.composable.images
|
||||||
|
|
||||||
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -8,31 +9,39 @@ import androidx.compose.ui.graphics.DefaultAlpha
|
||||||
import androidx.compose.ui.graphics.FilterQuality
|
import androidx.compose.ui.graphics.FilterQuality
|
||||||
import androidx.compose.ui.graphics.drawscope.DrawScope
|
import androidx.compose.ui.graphics.drawscope.DrawScope
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import coil.compose.AsyncImagePainter
|
import androidx.compose.ui.res.painterResource
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AsyncImage(
|
fun AsyncImage(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
model: Any?,
|
model: Any?,
|
||||||
contentDescription: String? = null,
|
contentDescription: String? = null,
|
||||||
transform: (AsyncImagePainter.State) -> AsyncImagePainter.State = AsyncImagePainter.DefaultTransform,
|
|
||||||
onState: ((AsyncImagePainter.State) -> Unit)? = null,
|
|
||||||
alignment: Alignment = Alignment.Center,
|
alignment: Alignment = Alignment.Center,
|
||||||
contentScale: ContentScale = ContentScale.Fit,
|
contentScale: ContentScale = ContentScale.Fit,
|
||||||
alpha: Float = DefaultAlpha,
|
alpha: Float = DefaultAlpha,
|
||||||
colorFilter: ColorFilter? = null,
|
colorFilter: ColorFilter? = null,
|
||||||
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality,
|
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality,
|
||||||
) {
|
) {
|
||||||
coil.compose.AsyncImage(
|
when (model) {
|
||||||
modifier = modifier,
|
is Int -> Image(
|
||||||
model = model,
|
modifier = modifier,
|
||||||
contentDescription = contentDescription,
|
painter = painterResource(id = model),
|
||||||
alignment = alignment,
|
contentDescription = contentDescription,
|
||||||
contentScale = contentScale,
|
alignment = alignment,
|
||||||
alpha = alpha,
|
contentScale = contentScale,
|
||||||
colorFilter = colorFilter,
|
alpha = alpha,
|
||||||
transform = transform,
|
colorFilter = colorFilter,
|
||||||
onState = onState,
|
)
|
||||||
filterQuality = filterQuality,
|
|
||||||
)
|
else -> coil.compose.AsyncImage(
|
||||||
|
modifier = modifier,
|
||||||
|
model = model,
|
||||||
|
contentDescription = contentDescription,
|
||||||
|
alignment = alignment,
|
||||||
|
contentScale = contentScale,
|
||||||
|
alpha = alpha,
|
||||||
|
colorFilter = colorFilter,
|
||||||
|
filterQuality = filterQuality,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2,7 +2,6 @@ package com.pixelized.rplexicon.ui.composable.images
|
||||||
|
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
|
@ -13,6 +12,7 @@ import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableIntStateOf
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
|
|
@ -28,16 +28,15 @@ import androidx.lifecycle.ViewModel
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.zoomable
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.zoomable
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class FullScreenImageViewModel @Inject constructor() : ViewModel() {
|
class FullScreenImageViewModel @Inject constructor() : ViewModel() {
|
||||||
private val _url = mutableStateOf<Uri?>(null)
|
private val _url = mutableStateOf<Any?>(null)
|
||||||
val url: State<Uri?> get() = _url
|
val url: State<Any?> get() = _url
|
||||||
|
|
||||||
fun showDetail(url: Uri) {
|
fun showDetail(url: Any) {
|
||||||
_url.value = url
|
_url.value = url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,7 +57,7 @@ fun FullScreenImageHandler(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ImageDialog(
|
fun ImageDialog(
|
||||||
url: State<Uri?>,
|
url: State<Any?>,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
) {
|
) {
|
||||||
val uri by url
|
val uri by url
|
||||||
|
|
@ -103,7 +102,7 @@ fun ImageDialog(
|
||||||
private fun ImageDialogPreview() {
|
private fun ImageDialogPreview() {
|
||||||
LexiconTheme {
|
LexiconTheme {
|
||||||
ImageDialog(
|
ImageDialog(
|
||||||
url = remember { mutableStateOf(Uri.parse(R.drawable.im_brulkhai.uri)) },
|
url = remember { mutableIntStateOf(R.drawable.im_brulkhai) },
|
||||||
onDismissRequest = { },
|
onDismissRequest = { },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
||||||
import com.pixelized.rplexicon.ui.composable.images.rememberBackgroundGradient
|
import com.pixelized.rplexicon.ui.composable.images.rememberBackgroundGradient
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
|
@ -30,7 +31,7 @@ import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
@Stable
|
@Stable
|
||||||
data class AdventureBookUio(
|
data class AdventureBookUio(
|
||||||
val bookTitle: String,
|
val bookTitle: String,
|
||||||
val bookIcon: Uri?,
|
val bookIcon: Any?,
|
||||||
val documentId: String,
|
val documentId: String,
|
||||||
val adventureTitle: String?,
|
val adventureTitle: String?,
|
||||||
)
|
)
|
||||||
|
|
@ -81,7 +82,7 @@ private fun AdventureItemPreview() {
|
||||||
Surface {
|
Surface {
|
||||||
AdventureBook(
|
AdventureBook(
|
||||||
item = AdventureBookUio(
|
item = AdventureBookUio(
|
||||||
bookIcon = null,
|
bookIcon = R.drawable.icbg_book_generic_c_unfaded,
|
||||||
bookTitle = "Les chroniques d'une orc",
|
bookTitle = "Les chroniques d'une orc",
|
||||||
documentId = "",
|
documentId = "",
|
||||||
adventureTitle = null,
|
adventureTitle = null,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.pixelized.rplexicon.ui.screens.adventure.detail
|
package com.pixelized.rplexicon.ui.screens.adventure.detail
|
||||||
|
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.animation.core.animateFloatAsState
|
import androidx.compose.animation.core.animateFloatAsState
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
|
@ -52,7 +51,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.IntOffset
|
import androidx.compose.ui.unit.IntOffset
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.core.net.toUri
|
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
||||||
|
|
@ -64,7 +62,6 @@ import com.pixelized.rplexicon.ui.screens.adventure.detail.AdventureLineUio.Styl
|
||||||
import com.pixelized.rplexicon.ui.screens.adventure.detail.AdventureLineUio.Style.SUB_TITLE
|
import com.pixelized.rplexicon.ui.screens.adventure.detail.AdventureLineUio.Style.SUB_TITLE
|
||||||
import com.pixelized.rplexicon.ui.screens.adventure.detail.AdventureLineUio.Style.TITLE
|
import com.pixelized.rplexicon.ui.screens.adventure.detail.AdventureLineUio.Style.TITLE
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
|
|
@ -112,7 +109,7 @@ private fun AdventureDetailContent(
|
||||||
isLoading: State<Boolean>,
|
isLoading: State<Boolean>,
|
||||||
title: State<String?>,
|
title: State<String?>,
|
||||||
titleIndex: State<Int>,
|
titleIndex: State<Int>,
|
||||||
background: State<Uri?>,
|
background: State<Any?>,
|
||||||
adventures: State<List<AdventureLineUio>>,
|
adventures: State<List<AdventureLineUio>>,
|
||||||
onBack: () -> Unit,
|
onBack: () -> Unit,
|
||||||
onRefresh: () -> Unit,
|
onRefresh: () -> Unit,
|
||||||
|
|
@ -286,9 +283,7 @@ private fun AdventureDetailPreview() {
|
||||||
mutableIntStateOf(0)
|
mutableIntStateOf(0)
|
||||||
},
|
},
|
||||||
background = remember {
|
background = remember {
|
||||||
mutableStateOf(
|
mutableIntStateOf(R.drawable.im_brulkhai)
|
||||||
"https://img.freepik.com/premium-photo/painting-deer-forest-with-stream-water-generative-ai_955925-17321.jpg".toUri()
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
adventures = remember {
|
adventures = remember {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
|
|
|
||||||
|
|
@ -35,12 +35,13 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.images.AsyncImage
|
import com.pixelized.rplexicon.ui.composable.images.AsyncImage
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class AlterationItemUio(
|
data class AlterationItemUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val label: String,
|
val label: String,
|
||||||
val source: String,
|
val source: String,
|
||||||
val subLabel: String?,
|
val subLabel: String?,
|
||||||
|
|
@ -137,7 +138,7 @@ private fun RollAlterationPreview(
|
||||||
private class RollAlterationPreviewProvider : PreviewParameterProvider<AlterationItemUio> {
|
private class RollAlterationPreviewProvider : PreviewParameterProvider<AlterationItemUio> {
|
||||||
override val values: Sequence<AlterationItemUio> = sequenceOf(
|
override val values: Sequence<AlterationItemUio> = sequenceOf(
|
||||||
AlterationItemUio(
|
AlterationItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_bless,
|
||||||
label = "Bénédiction",
|
label = "Bénédiction",
|
||||||
subLabel = "Bless",
|
subLabel = "Bless",
|
||||||
source = "Clerc",
|
source = "Clerc",
|
||||||
|
|
@ -145,7 +146,7 @@ private class RollAlterationPreviewProvider : PreviewParameterProvider<Alteratio
|
||||||
override = false,
|
override = false,
|
||||||
),
|
),
|
||||||
AlterationItemUio(
|
AlterationItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_guidance,
|
||||||
label = "Assistance",
|
label = "Assistance",
|
||||||
subLabel = "Guidance",
|
subLabel = "Guidance",
|
||||||
source = "Clerc",
|
source = "Clerc",
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class AttackUio(
|
data class AttackUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val id: Attack? = null,
|
val id: Attack? = null,
|
||||||
val name: String,
|
val name: String,
|
||||||
@StringRes val type: Int,
|
@StringRes val type: Int,
|
||||||
|
|
@ -167,7 +167,7 @@ private fun WeaponPreview(
|
||||||
private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
|
private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
|
||||||
override val values: Sequence<AttackUio> = sequenceOf(
|
override val values: Sequence<AttackUio> = sequenceOf(
|
||||||
AttackUio(
|
AttackUio(
|
||||||
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
|
icon = R.drawable.icbg_main_hand_attack,
|
||||||
name = "Sans arme",
|
name = "Sans arme",
|
||||||
type = R.string.attack_type_melee,
|
type = R.string.attack_type_melee,
|
||||||
range = "5 ft reach",
|
range = "5 ft reach",
|
||||||
|
|
@ -175,7 +175,7 @@ private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
|
||||||
damage = AttackUio.Action.Flat(label = "1"),
|
damage = AttackUio.Action.Flat(label = "1"),
|
||||||
),
|
),
|
||||||
AttackUio(
|
AttackUio(
|
||||||
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
|
icon = R.drawable.icbg_ranged_attack,
|
||||||
name = "Long bow",
|
name = "Long bow",
|
||||||
type = R.string.attack_type_range,
|
type = R.string.attack_type_range,
|
||||||
range = "30 ft reach",
|
range = "30 ft reach",
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class EquipmentItemUio(
|
data class EquipmentItemUio(
|
||||||
val silhouette: String? = null,
|
val silhouette: Any? = null,
|
||||||
val head: String? = null,
|
val head: String? = null,
|
||||||
val face: String? = null,
|
val face: String? = null,
|
||||||
val shoulder: String? = null,
|
val shoulder: String? = null,
|
||||||
|
|
@ -286,7 +286,7 @@ private fun InventoryItemPreview() {
|
||||||
EquipmentItem(
|
EquipmentItem(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
equipments = EquipmentItemUio(
|
equipments = EquipmentItemUio(
|
||||||
silhouette = R.drawable.ic_woman_archer_256.uri,
|
silhouette = R.drawable.ic_woman_archer_256,
|
||||||
shoulder = "Cloak of Protection",
|
shoulder = "Cloak of Protection",
|
||||||
mainHand = "Battleaxe",
|
mainHand = "Battleaxe",
|
||||||
offHand = "Shield",
|
offHand = "Shield",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.pixelized.rplexicon.ui.screens.character.composable.actions
|
||||||
|
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
|
@ -36,7 +35,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class ObjectItemUio(
|
data class ObjectItemUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val prefix: String?,
|
val prefix: String?,
|
||||||
val name: String,
|
val name: String,
|
||||||
val original: String?,
|
val original: String?,
|
||||||
|
|
@ -114,7 +113,7 @@ private fun ObjectItemPreview() {
|
||||||
ObjectItem(
|
ObjectItem(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
item = ObjectItemUio(
|
item = ObjectItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_scroll_of_bless_unfaded,
|
||||||
prefix = "Parchemin de ",
|
prefix = "Parchemin de ",
|
||||||
name = "Bénédiction",
|
name = "Bénédiction",
|
||||||
original = "Blessing",
|
original = "Blessing",
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SkillItemUio(
|
data class SkillItemUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val label: String,
|
val label: String,
|
||||||
val translate: String?,
|
val translate: String?,
|
||||||
val rest: String?,
|
val rest: String?,
|
||||||
|
|
@ -193,7 +193,7 @@ fun rememberSkillsListStatePreview(): State<List<SkillItemUio>> = remember {
|
||||||
private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio> {
|
private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio> {
|
||||||
override val values: Sequence<SkillItemUio> = sequenceOf(
|
override val values: Sequence<SkillItemUio> = sequenceOf(
|
||||||
SkillItemUio(
|
SkillItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_relentless_endurance,
|
||||||
label = "Endurance Implacable",
|
label = "Endurance Implacable",
|
||||||
translate = "Relentless Endurance",
|
translate = "Relentless Endurance",
|
||||||
rest = "Récupération repos long",
|
rest = "Récupération repos long",
|
||||||
|
|
@ -204,7 +204,7 @@ private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio
|
||||||
haveDetail = true,
|
haveDetail = true,
|
||||||
),
|
),
|
||||||
SkillItemUio(
|
SkillItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_magic_initiate_bard,
|
||||||
label = "Apparence inspirante",
|
label = "Apparence inspirante",
|
||||||
translate = "Mantle of Inspiration",
|
translate = "Mantle of Inspiration",
|
||||||
rest = null,
|
rest = null,
|
||||||
|
|
@ -215,7 +215,7 @@ private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio
|
||||||
haveDetail = true,
|
haveDetail = true,
|
||||||
),
|
),
|
||||||
SkillItemUio(
|
SkillItemUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_turn_undead,
|
||||||
label = "Renvoi des morts-vivants",
|
label = "Renvoi des morts-vivants",
|
||||||
translate = "Turn Undead",
|
translate = "Turn Undead",
|
||||||
rest = "Récupération repos long",
|
rest = "Récupération repos long",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.pixelized.rplexicon.ui.screens.character.composable.actions
|
||||||
|
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
import android.net.Uri
|
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
|
|
@ -44,7 +43,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SpellUio(
|
data class SpellUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val school: Spell.School,
|
val school: Spell.School,
|
||||||
val name: String,
|
val name: String,
|
||||||
val translated: String?,
|
val translated: String?,
|
||||||
|
|
@ -269,7 +268,7 @@ private fun SpellPreview(
|
||||||
private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
||||||
override val values: Sequence<SpellUio> = sequenceOf(
|
override val values: Sequence<SpellUio> = sequenceOf(
|
||||||
SpellUio(
|
SpellUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_fireball,
|
||||||
school = Spell.School.EVOCATION,
|
school = Spell.School.EVOCATION,
|
||||||
name = "Trait de feu",
|
name = "Trait de feu",
|
||||||
translated = "Fire Bolt",
|
translated = "Fire Bolt",
|
||||||
|
|
@ -289,7 +288,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
||||||
ritual = false,
|
ritual = false,
|
||||||
),
|
),
|
||||||
SpellUio(
|
SpellUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_vicious_mockery,
|
||||||
school = Spell.School.ENCHANTMENT,
|
school = Spell.School.ENCHANTMENT,
|
||||||
name = "Moquerie cruelle",
|
name = "Moquerie cruelle",
|
||||||
translated = "Vicious Mockery",
|
translated = "Vicious Mockery",
|
||||||
|
|
@ -306,7 +305,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
||||||
ritual = false,
|
ritual = false,
|
||||||
),
|
),
|
||||||
SpellUio(
|
SpellUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_cure_wounds,
|
||||||
school = Spell.School.EVOCATION,
|
school = Spell.School.EVOCATION,
|
||||||
name = "Soins",
|
name = "Soins",
|
||||||
translated = "Cure Wounds",
|
translated = "Cure Wounds",
|
||||||
|
|
@ -323,7 +322,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
||||||
ritual = true,
|
ritual = true,
|
||||||
),
|
),
|
||||||
SpellUio(
|
SpellUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_cure_wounds,
|
||||||
school = Spell.School.EVOCATION,
|
school = Spell.School.EVOCATION,
|
||||||
name = "Soins",
|
name = "Soins",
|
||||||
translated = "Cure Wounds",
|
translated = "Cure Wounds",
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
data class SpellChooserUio(
|
data class SpellChooserUio(
|
||||||
val name: String,
|
val name: String,
|
||||||
val original: String?,
|
val original: String?,
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val spells: List<SpellLevelUio>,
|
val spells: List<SpellLevelUio>,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class AlterationDialogDetailUio(
|
data class AlterationDialogDetailUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val name: String,
|
val name: String,
|
||||||
val original: String?,
|
val original: String?,
|
||||||
val source: String,
|
val source: String,
|
||||||
|
|
@ -151,7 +151,7 @@ private fun AlterationDetailPreview() {
|
||||||
LexiconTheme {
|
LexiconTheme {
|
||||||
AlterationDetailDialogContent(
|
AlterationDetailDialogContent(
|
||||||
detail = AlterationDialogDetailUio(
|
detail = AlterationDialogDetailUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_rage_bear_heart,
|
||||||
name = "Rage",
|
name = "Rage",
|
||||||
original = "Rage",
|
original = "Rage",
|
||||||
source = "Barbare",
|
source = "Barbare",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.pixelized.rplexicon.ui.screens.character.composable.dialogs
|
package com.pixelized.rplexicon.ui.screens.character.composable.dialogs
|
||||||
|
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.foundation.ScrollState
|
import androidx.compose.foundation.ScrollState
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
|
|
@ -30,16 +29,16 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.skillIcon
|
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SkillDialogDetailUio(
|
data class SkillDialogDetailUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val name: String,
|
val name: String,
|
||||||
val original: String?,
|
val original: String?,
|
||||||
val description: String,
|
val description: String,
|
||||||
|
|
@ -137,7 +136,7 @@ private fun AlterationDetailPreview() {
|
||||||
LexiconTheme {
|
LexiconTheme {
|
||||||
SkillDetailDialogContent(
|
SkillDetailDialogContent(
|
||||||
detail = SkillDialogDetailUio(
|
detail = SkillDialogDetailUio(
|
||||||
icon = "Endurance implacable".skillIcon(),
|
icon = R.drawable.icbg_relentless_endurance,
|
||||||
name = "Endurance implacable",
|
name = "Endurance implacable",
|
||||||
original = "Relentless Endurance",
|
original = "Relentless Endurance",
|
||||||
description = "Lorsque vous tombez à 0 point de vie, mais que vous n'êtes pas tué sur le coup, vous pouvez passer à 1 point de vie à la place. Vous devez terminer un repos long avant de pouvoir utiliser cette capacité de nouveau."
|
description = "Lorsque vous tombez à 0 point de vie, mais que vous n'êtes pas tué sur le coup, vous pouvez passer à 1 point de vie à la place. Vous devez terminer un repos long avant de pouvoir utiliser cette capacité de nouveau."
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SpellDialogDetailUio(
|
data class SpellDialogDetailUio(
|
||||||
val icon: Uri?,
|
val icon: Any?,
|
||||||
val name: String,
|
val name: String,
|
||||||
val translated: String,
|
val translated: String,
|
||||||
val level: String,
|
val level: String,
|
||||||
|
|
@ -254,7 +254,7 @@ private fun SpellDetailDialogPreview() {
|
||||||
LexiconTheme {
|
LexiconTheme {
|
||||||
SpellDetailDialogContent(
|
SpellDetailDialogContent(
|
||||||
detail = SpellDialogDetailUio(
|
detail = SpellDialogDetailUio(
|
||||||
icon = null,
|
icon = R.drawable.icbg_hellish_rebuke,
|
||||||
name = "Représailles infernales",
|
name = "Représailles infernales",
|
||||||
translated = "Hellish Rebuke",
|
translated = "Hellish Rebuke",
|
||||||
level = "1",
|
level = "1",
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
listOf(
|
listOf(
|
||||||
AttackUio(
|
AttackUio(
|
||||||
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
|
icon = R.drawable.icbg_main_hand_attack,
|
||||||
name = "Unarmed attack",
|
name = "Unarmed attack",
|
||||||
type = R.string.attack_type_melee,
|
type = R.string.attack_type_melee,
|
||||||
range = "5 ft reach",
|
range = "5 ft reach",
|
||||||
|
|
@ -29,7 +29,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
AttackUio(
|
AttackUio(
|
||||||
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
|
icon = R.drawable.icbg_ranged_attack,
|
||||||
name = "Long bow",
|
name = "Long bow",
|
||||||
type = R.string.attack_type_range,
|
type = R.string.attack_type_range,
|
||||||
range = "30 ft reach",
|
range = "30 ft reach",
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ fun rememberSpellLevelChooserState() = remember {
|
||||||
SpellChooserUio(
|
SpellChooserUio(
|
||||||
name = "Soin",
|
name = "Soin",
|
||||||
original = "Cure wounds",
|
original = "Cure wounds",
|
||||||
icon = null,
|
icon = R.drawable.icbg_cure_wounds,
|
||||||
spells = listOf(
|
spells = listOf(
|
||||||
SpellLevelUio(
|
SpellLevelUio(
|
||||||
spell = "",
|
spell = "",
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import com.pixelized.rplexicon.utilitary.extentions.local.primary
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.secondary
|
import com.pixelized.rplexicon.utilitary.extentions.local.secondary
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.tertiary
|
import com.pixelized.rplexicon.utilitary.extentions.local.tertiary
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.skillIcon
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import com.pixelized.rplexicon.data.repository.character.DescriptionRepository
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.SpellUio
|
import com.pixelized.rplexicon.ui.screens.character.composable.actions.SpellUio
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.icon
|
import com.pixelized.rplexicon.utilitary.extentions.icon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.spellIcon
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -91,7 +90,11 @@ class SpellUioFactory @Inject constructor(
|
||||||
SpellUio.Action.Dice(
|
SpellUio.Action.Dice(
|
||||||
icon = diceThrow.dice?.icon ?: R.drawable.ic_d4_24,
|
icon = diceThrow.dice?.icon ?: R.drawable.ic_d4_24,
|
||||||
label = "${diceThrow.dice?.toLabel()}${modifier.toLabel(true)}" +
|
label = "${diceThrow.dice?.toLabel()}${modifier.toLabel(true)}" +
|
||||||
"+ ${level.dice?.count?.times(delta)}d${level.dice?.faces}${deltaModifier.toLabel(true)}",
|
"+ ${level.dice?.count?.times(delta)}d${level.dice?.faces}${
|
||||||
|
deltaModifier.toLabel(
|
||||||
|
true
|
||||||
|
)
|
||||||
|
}",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ import com.pixelized.rplexicon.data.repository.character.InventoryRepository
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.characterSheetArgument
|
import com.pixelized.rplexicon.ui.navigation.screens.characterSheetArgument
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.EquipmentItemUio
|
import com.pixelized.rplexicon.ui.screens.character.composable.actions.EquipmentItemUio
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.InventoryItemUio
|
import com.pixelized.rplexicon.ui.screens.character.composable.actions.InventoryItemUio
|
||||||
import com.pixelized.rplexicon.ui.screens.character.factory.ItemUioFactory
|
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.dialogs.SkillDialogDetailUio
|
import com.pixelized.rplexicon.ui.screens.character.composable.dialogs.SkillDialogDetailUio
|
||||||
|
import com.pixelized.rplexicon.ui.screens.character.factory.ItemUioFactory
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.context
|
import com.pixelized.rplexicon.utilitary.extentions.context
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.equipmentsIcon
|
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.equipmentsIcon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|
@ -92,7 +92,7 @@ class InventoryViewModel @Inject constructor(
|
||||||
val description = descriptionRepository.getDescription(name = item)
|
val description = descriptionRepository.getDescription(name = item)
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
_dialog.value = SkillDialogDetailUio(
|
_dialog.value = SkillDialogDetailUio(
|
||||||
icon = item.equipmentsIcon(),
|
icon = equipmentsIcon(name = item),
|
||||||
name = item,
|
name = item,
|
||||||
original = description.original,
|
original = description.original,
|
||||||
description = description.description
|
description = description.description
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.pixelized.rplexicon.ui.screens.lexicon.detail
|
||||||
|
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.foundation.ScrollState
|
import androidx.compose.foundation.ScrollState
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
|
|
@ -74,7 +73,7 @@ data class LexiconDetailUio(
|
||||||
val race: String?,
|
val race: String?,
|
||||||
val status: String?,
|
val status: String?,
|
||||||
val location: String?,
|
val location: String?,
|
||||||
val portrait: List<Uri>,
|
val portrait: List<Any>,
|
||||||
val description: String?,
|
val description: String?,
|
||||||
val history: String?,
|
val history: String?,
|
||||||
val tags: String?,
|
val tags: String?,
|
||||||
|
|
@ -116,7 +115,7 @@ private fun LexiconDetailContent(
|
||||||
haveCharacterSheet: State<Boolean>,
|
haveCharacterSheet: State<Boolean>,
|
||||||
onBack: () -> Unit,
|
onBack: () -> Unit,
|
||||||
onCharacterSheet: (String) -> Unit,
|
onCharacterSheet: (String) -> Unit,
|
||||||
onIllustration: (Uri) -> Unit,
|
onIllustration: (Any) -> Unit,
|
||||||
) {
|
) {
|
||||||
val typography = MaterialTheme.lexicon.typography
|
val typography = MaterialTheme.lexicon.typography
|
||||||
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
||||||
|
|
@ -389,9 +388,7 @@ private fun LexiconDetailPreview() {
|
||||||
race = "Half-orc",
|
race = "Half-orc",
|
||||||
status = "Vivante",
|
status = "Vivante",
|
||||||
location = "Manoir Durst",
|
location = "Manoir Durst",
|
||||||
portrait = listOf(
|
portrait = listOf(R.drawable.im_brulkhai),
|
||||||
Uri.parse("https://cdnb.artstation.com/p/assets/images/images/003/024/889/large/bayard-wu-0716.jpg?1468642855"),
|
|
||||||
),
|
|
||||||
description = "Brulkhai, ou plus simplement Bru, est solidement bâti. Elle mesure 192 cm pour 110 kg de muscles lorsqu’elle est en bonne santé. Elle a les cheveux châtains, les yeux noisettes et la peau couleur gris-vert typique de son espèce. D’un tempérament taciturne, elle parle peu et de façon concise. Elle est parfois brutale, aussi bien physiquement que verbalement, Elle ne prend cependant aucun plaisir à malmener ceux qu’elle considère plus faibles qu’elle. D’une nature simple et honnête, elle ne mâche pas ses mots et ne dissimule généralement pas ses pensées. Son intelligence modeste est plus le reflet d’un manque d’éducation et d’une capacité limitée à gérer ses émotions qu’à une débilité congénitale. Elle voue à la force un culte car c’est par son expression qu’elle se sent vraiment vivante et éprouve de grandes difficultés vis à vis de ceux qu’elle nomme foshnu (bébé, chouineur en commun).",
|
description = "Brulkhai, ou plus simplement Bru, est solidement bâti. Elle mesure 192 cm pour 110 kg de muscles lorsqu’elle est en bonne santé. Elle a les cheveux châtains, les yeux noisettes et la peau couleur gris-vert typique de son espèce. D’un tempérament taciturne, elle parle peu et de façon concise. Elle est parfois brutale, aussi bien physiquement que verbalement, Elle ne prend cependant aucun plaisir à malmener ceux qu’elle considère plus faibles qu’elle. D’une nature simple et honnête, elle ne mâche pas ses mots et ne dissimule généralement pas ses pensées. Son intelligence modeste est plus le reflet d’un manque d’éducation et d’une capacité limitée à gérer ses émotions qu’à une débilité congénitale. Elle voue à la force un culte car c’est par son expression qu’elle se sent vraiment vivante et éprouve de grandes difficultés vis à vis de ceux qu’elle nomme foshnu (bébé, chouineur en commun).",
|
||||||
history = null,
|
history = null,
|
||||||
tags = "protagoniste, brute",
|
tags = "protagoniste, brute",
|
||||||
|
|
|
||||||
|
|
@ -100,9 +100,9 @@ import kotlinx.coroutines.launch
|
||||||
@Stable
|
@Stable
|
||||||
data class LocationDetailUio(
|
data class LocationDetailUio(
|
||||||
val name: String,
|
val name: String,
|
||||||
val map: Uri?,
|
val map: Any?,
|
||||||
val description: String?,
|
val description: String?,
|
||||||
val illustrations: List<Uri>,
|
val illustrations: List<Any>,
|
||||||
val marquees: List<MarqueeUio>,
|
val marquees: List<MarqueeUio>,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -226,7 +226,7 @@ private fun LocationContent(
|
||||||
selectedIndex: State<Int?>,
|
selectedIndex: State<Int?>,
|
||||||
mapHighlight: State<Offset>,
|
mapHighlight: State<Offset>,
|
||||||
onBack: () -> Unit,
|
onBack: () -> Unit,
|
||||||
onIllustration: (Uri) -> Unit,
|
onIllustration: (Any) -> Unit,
|
||||||
onMarquee: (MarqueeUio) -> Unit,
|
onMarquee: (MarqueeUio) -> Unit,
|
||||||
onDestination: (MarqueeUio) -> Unit,
|
onDestination: (MarqueeUio) -> Unit,
|
||||||
onMapTap: (Offset) -> Unit,
|
onMapTap: (Offset) -> Unit,
|
||||||
|
|
@ -581,7 +581,7 @@ private fun LocationPreview() {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
LocationDetailUio(
|
LocationDetailUio(
|
||||||
name = "Barovie",
|
name = "Barovie",
|
||||||
map = Uri.parse("https://cdn.discordapp.com/attachments/1123326578508714106/1161014438736969759/Map_of_Barovia_-_4k_-_Names_-_No_Special_Locations_-_Without_Hex.jpg?ex=6536c1f4&is=65244cf4&hm=671ddc88d073e5559bd37af14dc731e497b78457dc37a3ea5620a5342004b733&"),
|
map = R.drawable.ic_empty,
|
||||||
description = "Contrée sombre et maudite soumise au joug de Stradh von Zarovith",
|
description = "Contrée sombre et maudite soumise au joug de Stradh von Zarovith",
|
||||||
illustrations = emptyList(),
|
illustrations = emptyList(),
|
||||||
marquees = listOf(
|
marquees = listOf(
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ import com.pixelized.rplexicon.utilitary.styleWith
|
||||||
@Stable
|
@Stable
|
||||||
data class QuestDetailUio(
|
data class QuestDetailUio(
|
||||||
val id: String,
|
val id: String,
|
||||||
val background: Uri?,
|
val background: Any?,
|
||||||
val completed: Boolean,
|
val completed: Boolean,
|
||||||
val title: String,
|
val title: String,
|
||||||
val steps: List<QuestStep>,
|
val steps: List<QuestStep>,
|
||||||
|
|
@ -399,7 +399,7 @@ private class QuestDetailPreviewProvider : PreviewParameterProvider<State<QuestD
|
||||||
QuestDetailUio(
|
QuestDetailUio(
|
||||||
id = "La chasse aux loups",
|
id = "La chasse aux loups",
|
||||||
completed = true,
|
completed = true,
|
||||||
background = Uri.parse("https://as1.ftcdn.net/v2/jpg/05/50/22/58/1000_F_550225869_jAkLTRVb7ym7EHJYvDApVXQnpANvRd8O.jpg"),
|
background = R.drawable.icbg_book_parchment_e,
|
||||||
title = "La chasse aux loups",
|
title = "La chasse aux loups",
|
||||||
steps = listOf(
|
steps = listOf(
|
||||||
QuestDetailUio.QuestStep(
|
QuestDetailUio.QuestStep(
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import com.pixelized.rplexicon.data.repository.character.AlterationRepository
|
||||||
import com.pixelized.rplexicon.data.repository.character.SkillRepository
|
import com.pixelized.rplexicon.data.repository.character.SkillRepository
|
||||||
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AlterationItemUio
|
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AlterationItemUio
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.string.alterationIcon
|
|
||||||
import kotlinx.coroutines.flow.firstOrNull
|
import kotlinx.coroutines.flow.firstOrNull
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -152,7 +151,9 @@ class AlterationFactory @Inject constructor(
|
||||||
subLabel = description[alteration.name]?.original,
|
subLabel = description[alteration.name]?.original,
|
||||||
source = alteration.source,
|
source = alteration.source,
|
||||||
checked = override[alteration.name] ?: checked[alteration.name] ?: false,
|
checked = override[alteration.name] ?: checked[alteration.name] ?: false,
|
||||||
override = override[alteration.name]?.let { it != (checked[alteration.name] ?: false) } ?: false,
|
override = override[alteration.name]?.let {
|
||||||
|
it != (checked[alteration.name] ?: false)
|
||||||
|
} ?: false,
|
||||||
)
|
)
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,10 @@
|
||||||
package com.pixelized.rplexicon.utilitary.extentions.string
|
package com.pixelized.rplexicon.utilitary.extentions.string
|
||||||
|
|
||||||
import android.net.Uri
|
import androidx.annotation.DrawableRes
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
|
||||||
|
|
||||||
fun String.attackIcon(): Uri? {
|
object BaldurGageImageCache {
|
||||||
return ResourcesCache.attacks[this]?.uri?.toUriOrNull()
|
private val alterations = hashMapOf(
|
||||||
}
|
|
||||||
|
|
||||||
fun String.objectIcon(): Uri? {
|
|
||||||
return ResourcesCache.objects[this]?.uri?.toUriOrNull()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.equipmentsIcon(): Uri? {
|
|
||||||
return ResourcesCache.equipments[this]?.uri?.toUriOrNull()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.alterationIcon(): Uri? {
|
|
||||||
return ResourcesCache.alterations[this]?.uri?.toUriOrNull()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.skillIcon(): Uri? {
|
|
||||||
return ResourcesCache.skills[this]?.uri?.toUriOrNull()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.spellIcon(): Uri? {
|
|
||||||
return ResourcesCache.spells[this]?.uri?.toUriOrNull()
|
|
||||||
}
|
|
||||||
|
|
||||||
private object ResourcesCache {
|
|
||||||
val alterations = hashMapOf(
|
|
||||||
"Arme enflammée" to R.drawable.icbg_flaming_blade,
|
"Arme enflammée" to R.drawable.icbg_flaming_blade,
|
||||||
"Critique" to R.drawable.icbg_frenzied_strike,
|
"Critique" to R.drawable.icbg_frenzied_strike,
|
||||||
"Esquiver" to R.drawable.icbg_uncanny_dodge,
|
"Esquiver" to R.drawable.icbg_uncanny_dodge,
|
||||||
|
|
@ -87,7 +62,7 @@ private object ResourcesCache {
|
||||||
"Arbalète de poing" to R.drawable.icbg_hand_crossbow_unfaded,
|
"Arbalète de poing" to R.drawable.icbg_hand_crossbow_unfaded,
|
||||||
)
|
)
|
||||||
|
|
||||||
val attacks = hashMapOf(
|
private val attacks = hashMapOf(
|
||||||
"Hache de guerre en argent" to R.drawable.icbg_reckless_attack,
|
"Hache de guerre en argent" to R.drawable.icbg_reckless_attack,
|
||||||
"Hache de guerre en argent (2 mains)" to R.drawable.icbg_reckless_attack,
|
"Hache de guerre en argent (2 mains)" to R.drawable.icbg_reckless_attack,
|
||||||
"Dague" to R.drawable.icbg_main_hand_attack,
|
"Dague" to R.drawable.icbg_main_hand_attack,
|
||||||
|
|
@ -120,7 +95,7 @@ private object ResourcesCache {
|
||||||
"Épée courte" to R.drawable.icbg_main_hand_attack,
|
"Épée courte" to R.drawable.icbg_main_hand_attack,
|
||||||
)
|
)
|
||||||
|
|
||||||
val objects = hashMapOf(
|
private val objects = hashMapOf(
|
||||||
"Parchemin de Bénédiction" to R.drawable.icbg_scroll_of_bless_unfaded,
|
"Parchemin de Bénédiction" to R.drawable.icbg_scroll_of_bless_unfaded,
|
||||||
"Parchemin d'Arme spirituelle" to R.drawable.icbg_book_signedtradebisa_unfaded,
|
"Parchemin d'Arme spirituelle" to R.drawable.icbg_book_signedtradebisa_unfaded,
|
||||||
"Potion de guérison" to R.drawable.icbg_pot_potion_of_healing_unfaded,
|
"Potion de guérison" to R.drawable.icbg_pot_potion_of_healing_unfaded,
|
||||||
|
|
@ -133,7 +108,7 @@ private object ResourcesCache {
|
||||||
"Poussière de disparition" to R.drawable.icbg_haste_spore_grenade_unfaded,
|
"Poussière de disparition" to R.drawable.icbg_haste_spore_grenade_unfaded,
|
||||||
)
|
)
|
||||||
|
|
||||||
val equipments = hashMapOf(
|
private val equipments = hashMapOf(
|
||||||
"Dague" to R.drawable.icbg_dagger_unfaded,
|
"Dague" to R.drawable.icbg_dagger_unfaded,
|
||||||
"Hache de guerre en argent" to R.drawable.icbg_battleaxe_plus_one_unfaded,
|
"Hache de guerre en argent" to R.drawable.icbg_battleaxe_plus_one_unfaded,
|
||||||
"Bouclier" to R.drawable.icbg_studded_shield_unfaded,
|
"Bouclier" to R.drawable.icbg_studded_shield_unfaded,
|
||||||
|
|
@ -142,7 +117,7 @@ private object ResourcesCache {
|
||||||
"Armure de cuir" to R.drawable.icbg_leather_armour_rogue_unfaded,
|
"Armure de cuir" to R.drawable.icbg_leather_armour_rogue_unfaded,
|
||||||
)
|
)
|
||||||
|
|
||||||
val skills = hashMapOf(
|
private val skills = hashMapOf(
|
||||||
"Dé de vie (Barbare)" to R.drawable.icbg_bolstering_magic_boon,
|
"Dé de vie (Barbare)" to R.drawable.icbg_bolstering_magic_boon,
|
||||||
"Dé de vie (Guerrier)" to R.drawable.icbg_bolstering_magic_boon,
|
"Dé de vie (Guerrier)" to R.drawable.icbg_bolstering_magic_boon,
|
||||||
"Dé de vie (Rodeur)" to R.drawable.icbg_bolstering_magic_boon,
|
"Dé de vie (Rodeur)" to R.drawable.icbg_bolstering_magic_boon,
|
||||||
|
|
@ -208,7 +183,7 @@ private object ResourcesCache {
|
||||||
"Style de combat : Défense" to R.drawable.icbg_heavily_armoured,
|
"Style de combat : Défense" to R.drawable.icbg_heavily_armoured,
|
||||||
)
|
)
|
||||||
|
|
||||||
val spells = hashMapOf(
|
private val spells = hashMapOf(
|
||||||
"Aide" to R.drawable.icbg_aid,
|
"Aide" to R.drawable.icbg_aid,
|
||||||
"Alarme" to R.drawable.icbg_command_halt,
|
"Alarme" to R.drawable.icbg_command_halt,
|
||||||
"Appel de familier" to R.drawable.icbg_find_familiar_cat,
|
"Appel de familier" to R.drawable.icbg_find_familiar_cat,
|
||||||
|
|
@ -275,4 +250,22 @@ private object ResourcesCache {
|
||||||
"Dissipation de la magie" to R.drawable.icbg_unshackling_strike,
|
"Dissipation de la magie" to R.drawable.icbg_unshackling_strike,
|
||||||
"Protection contre le mal et le bien" to R.drawable.icbg_protection_from_evil_and_good,
|
"Protection contre le mal et le bien" to R.drawable.icbg_protection_from_evil_and_good,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun attackIcon(name: String): Int? = attacks[name]
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun objectIcon(name: String): Int? = objects[name]
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun equipmentsIcon(name: String): Int? = equipments[name]
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun alterationIcon(name: String): Int? = alterations[name]
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun skillIcon(name: String): Int? = skills[name]
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
fun spellIcon(name: String): Int? = spells[name]
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<vector android:height="24dp" android:tint="#000000"
|
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M7.41,8.59L12,13.17l4.59,-4.58L18,10l-6,6 -6,-6 1.41,-1.41z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<vector android:height="24dp" android:viewportHeight="512"
|
|
||||||
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="#000000" android:pathData="M244.19,21.97C347.89,119.18 428.1,216.27 494.72,304.06L494.72,191.66c-7.06,-6.39 -14.15,-12.68 -21.34,-18.84 2.99,-3.46 4.81,-7.97 4.81,-12.91 0,-10.93 -8.85,-19.78 -19.78,-19.78 -6.28,0 -11.88,2.96 -15.5,7.53 -43.25,-34.45 -88.29,-64.96 -134,-91.31 1.01,-2.03 1.59,-4.27 1.59,-6.69 0,-8.35 -6.77,-15.13 -15.13,-15.13 -5.42,0 -10.14,2.85 -12.81,7.13 -12.76,-6.88 -25.57,-13.45 -38.38,-19.69zM104.63,40.09c5.11,5.18 10.18,10.36 15.22,15.59 -4.22,1.17 -7.38,4.29 -8.35,9 -1.81,8.84 4.73,19.92 14.63,24.72 3.64,1.77 7.24,2.42 10.41,2.12 -2.54,4.11 -4,8.97 -4,14.16 0,14.89 12.05,26.94 26.94,26.94 8.68,0 16.41,-4.1 21.34,-10.47 88.69,101.2 165.6,208.4 235.16,306.72 -7.4,6.05 -12.13,15.23 -12.13,25.53 0,18.21 14.76,32.97 32.97,32.97 6.27,0 12.13,-1.77 17.12,-4.81 3.09,4.35 6.19,8.76 9.25,13.06h31.53L494.72,381.28c-41.36,-69.22 -154.77,-193.34 -184.53,-213.31 24.14,33.4 45.1,64.34 64.81,94.03 -87.49,-95.75 -183.44,-179.59 -270.38,-221.91zM76.4,55.34c-1.87,0.09 -3.74,0.55 -5.53,1.41 -7.18,3.43 -10.21,12.04 -6.78,19.22 3.43,7.18 12.04,10.21 19.22,6.78 7.18,-3.43 10.21,-12.04 6.78,-19.22 -2.57,-5.38 -8.08,-8.44 -13.69,-8.19zM432.15,75.72c-1.45,0.05 -2.86,0.36 -4.16,0.97 -6.92,3.26 -8.27,13.63 -3,23.16 5.26,9.53 15.14,14.63 22.06,11.38 6.92,-3.26 8.26,-13.63 3,-23.16 -4.28,-7.74 -11.6,-12.56 -17.91,-12.34zM281.03,110.97c-1.98,0.12 -3.85,0.72 -5.44,1.78 -6.37,4.24 -6.17,14.69 0.44,23.34 6.61,8.65 17.1,12.24 23.47,8 6.37,-4.24 6.17,-14.69 -0.44,-23.34 -4.95,-6.49 -12.08,-10.15 -18.03,-9.78zM25.19,149.28c91.02,100.04 158.7,190.4 212,271.6 -8.48,-1.36 -18.44,4.95 -20.25,13.59 -6.22,29.78 12.9,53.91 47.59,61.15L390.19,495.62c-97.97,-139.74 -234.78,-282.95 -365,-346.34zM55.22,251.13c-3.81,0.08 -7.2,1.33 -9.41,3.84 -5.05,5.74 -2.15,15.78 6.47,22.44 8.62,6.65 19.7,7.4 24.75,1.66 5.05,-5.74 2.18,-15.79 -6.44,-22.44 -4.85,-3.74 -10.48,-5.6 -15.38,-5.5zM102.41,289.25c-14.89,0 -26.94,12.05 -26.94,26.94 0,14.89 12.05,26.97 26.94,26.97 14.89,0 26.97,-12.08 26.97,-26.97 0,-14.89 -12.08,-26.94 -26.97,-26.94zM182.13,392.72c-10.93,0 -19.78,8.85 -19.78,19.78 0,10.93 8.85,19.78 19.78,19.78 10.93,0 19.78,-8.85 19.78,-19.78 0,-10.93 -8.85,-19.78 -19.78,-19.78z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<vector android:height="24dp" android:viewportHeight="512"
|
|
||||||
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="#000000" android:pathData="M19.75,14.44c59.54,112.29 142.51,202.35 232.28,292.72l3.63,3.75 0.06,-0.06c21.83,21.93 44.04,43.92 66.4,66.25 -18.86,14.81 -38.97,28.2 -59.94,40.31l28.53,28.53 68.72,-68.72c42.34,27.64 76.29,63.65 104.09,105.81l28.06,-28.06c-42.47,-27.49 -79.74,-60.21 -106.03,-103.88l68.94,-68.94 -28.53,-28.53c-11.11,21.85 -24.41,42.01 -39.47,60.59 -43.85,-43.8 -86.46,-85.84 -130.13,-125.47 -0.22,-0.2 -0.43,-0.42 -0.66,-0.63C183.62,122.75 108.51,63.91 19.75,14.44zM491.63,14.44c-83.04,46.28 -154.12,100.78 -221.97,161.16l22.81,21.56 56.81,-56.81 13.22,13.19 -56.44,56.44 24.59,23.19c61.8,-66.92 117.6,-136.92 160.97,-218.72zM162.1,140.34l200.56,200.53c-4.36,4.44 -8.84,8.79 -13.4,13.03L148.88,153.53l13.22,-13.19zM85.4,253.62l-28.5,28.53 68.91,68.91c-26.29,43.67 -63.53,76.41 -106,103.91l28.06,28.06c27.81,-42.16 61.76,-78.17 104.09,-105.81l68.72,68.72 28.53,-28.53c-20.96,-12.11 -41.08,-25.5 -59.94,-40.31 17.86,-17.83 35.61,-35.43 53.16,-52.97l-24.84,-25.66 -55.47,55.47c-4.57,-4.24 -9.01,-8.62 -13.37,-13.06l55.84,-55.84 -24.53,-25.37c-18.28,17.86 -36.6,36.06 -55.16,54.59 -15.07,-18.59 -28.38,-38.76 -39.5,-60.63z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="512"
|
|
||||||
android:viewportHeight="512">
|
|
||||||
<path
|
|
||||||
android:fillColor="#000000"
|
|
||||||
android:pathData="M92.41,13.02l-0.16,156.35c3.06,0.51 6.21,1.38 9.39,2.63 36.5,14.31 74.21,22.43 111.86,25.47l43.4,-60.42 42.32,58.91c36.81,-4.13 72.57,-12.5 105.97,-24.09 3.75,-1.3 7.37,-2.18 10.82,-2.6l1.52,-156.25 -75.82,95.55 -34.08,-95.55 -53.72,103.74 -53.72,-103.74 -35.44,95.55 -72.32,-95.55h-0.01zM256.9,169.09l-28.64,39.86 28.63,39.86 28.64,-39.86 -28.64,-39.86zM86.76,187.55c-2.17,-0.08 -3.84,0.27 -5.01,0.76 -2.35,0.98 -3.17,2.19 -3.5,4.2 -0.64,4.01 2.83,14.35 23.03,21.36 41.7,14.47 84.26,23.75 126.78,26.83l-17.75,-24.7c-38.77,-3.29 -77.69,-11.77 -115.5,-26.6 -3.2,-1.25 -5.88,-1.77 -8.05,-1.85zM420.04,187.74c-2.16,0.05 -5.05,0.51 -8.73,1.79 -33.58,11.65 -69.49,20.22 -106.52,24.65l-19.26,26.82c40.43,-2.6 80.43,-11.29 119.22,-26.96 15.91,-6.43 21.46,-17.81 21.36,-22.36 -0.05,-2.28 -0.28,-2.57 -1.75,-3.27 -0.74,-0.35 -2.16,-0.71 -4.31,-0.66zM401.92,235.18c-42.5,15.87 -86.26,23.86 -130.26,25.12l-14.76,20.55 -14.88,-20.71c-44.99,-1.75 -89.98,-10.23 -133.9,-24.31 -12.78,28.51 -18.94,61.14 -19.6,93.44 37.52,17.5 62.13,39.82 75.56,64.63C177,417.8 179.28,443.62 174.18,467.98c7.72,5.01 16.13,9.14 24.98,12.43l5.56,-47.89 18.56,2.15 -5.93,51.16c9.57,2.21 19.44,3.53 29.38,3.98v-54.67h18.69v54.49c9.9,-0.64 19.7,-2.13 29.16,-4.48l-5.86,-50.47 18.56,-2.15 5.44,46.85c8.75,-3.42 17,-7.64 24.51,-12.69 -5.76,-24.41 -3.77,-49.67 9.01,-72.99 13.28,-24.23 37.72,-46 74.8,-64.29 -0.62,-33.53 -6.69,-66.12 -19.11,-94.23zM135.19,282.18c34.6,0.23 68.41,12.24 101.36,36.87 -46.6,33.15 -129.79,34.37 -108.29,-36.76 2.32,-0.09 4.63,-0.13 6.93,-0.11zM378.01,282.18c2.31,-0.02 4.62,0.02 6.93,0.11 21.51,71.13 -61.68,69.9 -108.29,36.76 32.95,-24.63 66.76,-36.64 101.36,-36.87zM255.16,332.14c11.77,21.73 19.19,43.45 25.37,65.18h-50.74c4.57,-21.73 13.77,-43.45 25.37,-65.18z" />
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:width="24dp"
|
android:width="200dp"
|
||||||
android:height="24dp"
|
android:height="200dp"
|
||||||
android:viewportWidth="24"
|
android:viewportWidth="24"
|
||||||
android:viewportHeight="24">
|
android:viewportHeight="24">
|
||||||
<path
|
<path
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<vector android:height="24dp" android:viewportHeight="512"
|
|
||||||
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="#000000" android:pathData="M129.66,21.19L37.94,79.78c3.54,26.81 8.91,53.55 16.13,80.13L240.72,39.59l-19.28,-12.5c-31.28,-0.88 -62.2,-2.84 -91.78,-5.91zM383.13,21.81c-40.51,3.97 -83.5,5.94 -126.47,5.84l204.63,132.72c7.11,-25.89 12.49,-51.92 16.09,-78.03l-94.25,-60.53zM257.94,50.75L59.47,178.66c8.02,26.32 17.86,52.46 29.53,78.31l243.25,-158 -74.31,-48.22zM349.41,110.09l-74.56,48.44 151.28,98.78c11.71,-25.8 21.59,-51.91 29.69,-78.19l-106.41,-69.03zM257.72,169.66L97,274.06c12.2,25.17 26.14,50.06 41.84,74.56l196.09,-128.53 -77.22,-50.44zM352,231.22l-77.53,50.84 101.4,67.19c15.82,-24.6 29.9,-49.58 42.22,-74.88L352,231.22zM257.47,293.19l-108.35,71.03c13.56,20.06 28.33,39.85 44.28,59.31l132.03,-85.28 -67.97,-45.06zM342.44,349.5L274.5,393.41l47.03,30.38c15.85,-19.34 30.51,-38.99 44.03,-58.94L342.44,349.5zM257.47,404.38L205.5,437.97c16.23,18.93 33.61,37.54 52.16,55.78 18.39,-18.15 35.64,-36.68 51.78,-55.53l-52.09,-33.63 0.13,-0.22z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="512"
|
|
||||||
android:viewportHeight="512">
|
|
||||||
<path
|
|
||||||
android:pathData="M230.31,18.22c-38.37,0 -65.98,2.77 -85.03,8.5 -19.05,5.73 -29.25,13.7 -35.87,25.47 -12.14,21.56 -10.57,61.47 -8.38,120.59 19.88,-8.89 47.44,-11.33 78.19,-10.9 35.38,0.49 74.69,5.72 109.31,14.38 18.68,-46.79 28.3,-91.06 38,-135.34 0.55,43.8 0.98,87.61 -9.65,131.41 26.36,9.14 45.59,23.72 56.53,39.44 11.88,-31.15 20.09,-58.35 23.63,-81.09 4.29,-27.62 1.97,-48.6 -6.87,-64.41 -8.85,-15.8 -24.57,-27.57 -50.66,-35.75 -26.09,-8.18 -62.19,-12.28 -109.19,-12.28zM171.97,180.53c-9.12,0.09 -17.84,0.61 -25.94,1.47 -9.86,77.77 -11.77,156.56 -4.47,254.56 26.54,23.08 66.74,31.19 105.47,40.91 -32.55,1.31 -65.25,0.19 -98.5,-9.6 8.33,17.87 23.53,25.03 44,25.03H450.5c37.1,0 22.51,-40.21 3.09,-66.94 -22.22,-30.58 -65.65,-34.5 -101.22,-58.53l0.13,0.22c-38.97,-15.46 -77.94,0.41 -116.91,31.56 20.12,-29.93 48.29,-56.02 80.19,-56.47 3.74,-0.05 7.54,0.28 11.38,0.97 -3.08,-8.27 -5.61,-16.39 -7.66,-24.38 -33.09,-22.49 -73.68,-16.99 -118,2.5 22.38,-19.51 49.35,-35.1 75.44,-35.63 13.23,-0.27 26.24,3.35 38.31,12.28 -5.43,-35.45 -1.14,-68.74 9.44,-102.47 -4.55,-2.32 -9.48,-4.46 -14.78,-6.31l-12.38,-2.13 -2.72,9.66c-35.35,-9.93 -78.42,-16.17 -115.88,-16.69 -2.34,-0.03 -4.67,-0.05 -6.97,-0.03z"
|
|
||||||
android:fillColor="#000000"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
<vector android:height="24dp" android:tint="#000000"
|
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM7.35,18.5C8.66,17.56 10.26,17 12,17s3.34,0.56 4.65,1.5C15.34,19.44 13.74,20 12,20S8.66,19.44 7.35,18.5zM18.14,17.12L18.14,17.12C16.45,15.8 14.32,15 12,15s-4.45,0.8 -6.14,2.12l0,0C4.7,15.73 4,13.95 4,12c0,-4.42 3.58,-8 8,-8s8,3.58 8,8C20,13.95 19.3,15.73 18.14,17.12z"/>
|
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M12,6c-1.93,0 -3.5,1.57 -3.5,3.5S10.07,13 12,13s3.5,-1.57 3.5,-3.5S13.93,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<vector android:height="24dp" android:tint="#000000"
|
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M20.5,3l-0.16,0.03L15,5.1 9,3 3.36,4.9c-0.21,0.07 -0.36,0.25 -0.36,0.48L3,20.5c0,0.28 0.22,0.5 0.5,0.5l0.16,-0.03L9,18.9l6,2.1 5.64,-1.9c0.21,-0.07 0.36,-0.25 0.36,-0.48L21,3.5c0,-0.28 -0.22,-0.5 -0.5,-0.5zM10,5.47l4,1.4v11.66l-4,-1.4L10,5.47zM5,6.46l3,-1.01v11.7l-3,1.16L5,6.46zM19,17.54l-3,1.01L16,6.86l3,-1.16v11.84z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="24"
|
|
||||||
android:viewportHeight="24">
|
|
||||||
<path
|
|
||||||
android:fillColor="#FF000000"
|
|
||||||
android:pathData="M8,2C6.355,2 5,3.355 5,5L5,16L2,16L2,19C2,20.645 3.355,22 5,22L14,22L15,22C16.645,22 18,20.645 18,19L18,8L22,8L22,5C22,3.355 20.645,2 19,2L8,2zM8,4L16.188,4C16.074,4.315 16,4.648 16,5L16,19C16,19.56 15.572,19.991 15.014,19.998L15.014,19.986C14.45,19.994 14.008,19.563 14,19L13.973,16.004L13,16.014L13,16L7,16L7,5C7,4.435 7.435,4 8,4zM19,4C19.565,4 20,4.435 20,5L20,6L18,6L18,5C18,4.435 18.435,4 19,4zM4,18L11.99,18L12,19.025L12,19.027C12.005,19.37 12.081,19.694 12.193,20L5,20C4.435,20 4,19.565 4,19L4,18z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="512"
|
|
||||||
android:viewportHeight="512">
|
|
||||||
<path
|
|
||||||
android:fillColor="#FF000000"
|
|
||||||
android:pathData="m78,12 l9,70 -69,-11 41,56 -11,323c-11,13 -20,29 -25,48 74,-56 152,-72 223,-101l-36,-36c-53,25 -106,42 -142,71l9,-280 8,10 3,5h71l200,227c15,-14 29,-28 42,-45L172,156L172,84l-12,-9 273,-11c-30,37 -47,89 -71,143l36,36c30,-70 45,-148 101,-221 -19,5 -34,13 -47,23L137,57 78,12zM102,54 L153,93v55L99,148L60,97l49,8 -7,-51zM351,222c-9,13 -17,26 -27,38l31,26 34,-26 -38,-38zM451,312c-36,57 -76,100 -135,136 59,20 118,37 179,44 -9,-61 -24,-121 -44,-180zM266,317c-13,11 -27,22 -42,31l38,38c8,-15 18,-28 29,-41l-25,-28z" />
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<vector android:height="24dp" android:viewportHeight="512"
|
|
||||||
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="#000000" android:pathData="M103.43,17.84c-1.12,0 -2.23,0.03 -3.35,0.08 -2.55,0.11 -5.08,0.33 -7.6,0.68 -20.17,2.75 -39.16,13.67 -52.32,33.67 -24.61,37.4 2.19,98.03 56.63,98.03 0.54,0 1.06,-0.01 1.58,-0.02v0.7h60.56c-10.76,31.99 -30.3,66.6 -52.45,101.43 -2.16,3.4 -4.25,6.88 -6.29,10.41l34.88,35.73 -56.26,9.42c-32.73,85.97 -27.42,182.07 48.28,182.07v-0l9.31,0.07c23.83,-0.57 46.73,-4.3 61.33,-12.89 4.17,-2.46 7.63,-5.24 10.47,-8.42h-32.45c-20.33,5.95 -40.8,-6.94 -47.4,-25.92 -8.96,-25.77 7.52,-52.36 31.87,-60.45 5.8,-1.93 11.72,-2.83 17.57,-2.83v-0.41h178.33c-0.57,-44.4 16.35,-90.13 49.18,-126 23.95,-26.18 42.03,-60.62 51.3,-94.85l-41.22,-24.93 38.27,-6.91 -43.37,-25.81h-0l0,-0 0,0 52.13,-8.85c-5.23,-39.13 -28.84,-68.11 -77.37,-68.11C341.14,32.26 222.11,35.29 149.34,28.5c-14.89,-6.76 -30.55,-10.72 -45.91,-10.65zM103.9,36.55c13.14,0.04 27.41,3.8 41.25,10.63l0.03,-0.07c4.67,4.74 8.54,9.74 11.68,14.98L82.92,62.09l10.57,14.78c10.61,14.83 19.8,31.99 21.09,42.02 0.64,5.02 -0.11,7.17 -1.81,8.84 -1.71,1.67 -6.23,3.88 -15.99,3.88 -40.59,0 -56.88,-44.95 -41.01,-69.06C66.24,46.64 79.58,39.22 95,37.12c2.89,-0.4 5.86,-0.58 8.89,-0.57zM118.5,80.78h46.28c4.28,15.73 3.66,33.07 -0.54,51.51L131.52,132.29c1.9,-5.03 2.27,-10.57 1.6,-15.77 -1.53,-11.91 -7.41,-24.07 -14.62,-35.74zM220.05,397.88c6.44,6.84 11.19,15.31 13.37,24.91 3.8,16.74 3.09,31.21 -1.77,43.2 -4.53,11.18 -12.58,19.79 -22.29,26h237.19c14.45,0 24.89,-5.68 32.2,-14.32 7.31,-8.64 11.2,-20.51 10.7,-32.35 -0.19,-4.47 -0.98,-8.91 -2.41,-13.18l-69.91,-8.2 42.02,-20.53c-8.32,-3.44 -18.64,-5.54 -31.38,-5.54L220.05,397.87zM177.39,398.38c-1.15,-0 -2.31,0.05 -3.46,0.15 -2.63,0.24 -5.26,0.77 -7.82,1.63 -15.11,5.02 -25.34,21.54 -20.11,36.58 3.67,10.57 15.35,17.71 25.65,13.94l1.55,-0.57h43.35c0.95,-6.36 0.75,-13.88 -1.36,-23.19 -3.71,-16.36 -20.54,-28.48 -37.81,-28.54z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<vector android:height="24dp" android:viewportHeight="512"
|
|
||||||
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<path android:fillColor="#000000" android:pathData="M227.4,34.7c-10.1,0 -20.2,0.2 -30.2,0.5l6.1,65.6 -61.1,-62.5c-31.3,2.5 -62.5,6.6 -93.8,12.5l34.2,28.4 -48,-0.6c35.1,100.2 6.9,182.6 -0.3,292.1L130,476.5c10,-1.3 19.9,-2.4 29.6,-3.3l21.5,-42.2 18.6,28.8 41.5,-33.5 0.8,43c82.9,-0.2 157.7,9.1 235.7,7.9 -28.2,-73 -31.2,-143.6 -31.9,-209.2l-33.3,-19.1 32.7,-33.9c-0.4,-21.3 -1.3,-42 -3.6,-61.9l-57.4,0.7 50.2,-41.7c-3.8,-15.5 -9,-30.4 -16.1,-44.7l-29.5,-23.9C335,38 281.2,34.6 227.4,34.7zM286.1,71.7c10.6,24.75 21.1,49.5 31.7,74.3 7.5,-10.5 14.9,-21 22.4,-31.5 16,27.2 32,54.3 48,81.5l-16.2,9.5 -33.3,-56.7 -42.5,59.4 -15.2,-10.9 24,-33.5 -21.9,-51.5 -24.6,40.1 12,22.6 -16.5,8.8 -18.3,-34.5 -24.8,58.2 -17.2,-7.4 32.5,-76.2 7.7,-18c4.8,9.2 9.6,18.3 14.5,27.4 12.5,-20.6 25.1,-41.11 37.7,-61.6zM91.2,128c6.72,1.6 13.4,3.4 19.2,5.3 -2.1,5.9 -4.1,11.8 -6.2,17.6 -5.79,-1.6 -11.72,-3.4 -16.9,-4.7 1.39,-6 2.62,-12.1 3.9,-18.2zM129.1,141.4c6.3,3.8 12,7.2 17,12.8L132.6,167c-4,-3.7 -8.6,-7 -12.8,-9.4zM157.8,173.7c2.1,7.4 2.1,15.7 1.6,22.5l-18.5,-2.4c0.1,-5.1 0.3,-10 -1,-14.5zM136.6,209.4l17.2,7.1c-3.3,6.6 -5.1,12.7 -8.6,17.8l-16.3,-9c2.6,-5.4 5.6,-10.8 7.7,-15.9zM120.1,243.5l17.7,6.1c-1.5,5.4 -3,11.2 -3.6,16.2l-18.6,-2c1.3,-7.5 2.1,-14 4.5,-20.3zM327.9,260.9c8.5,1 14.6,3 21.7,7.1l-9.8,16c-4.1,-2.8 -9.4,-3.8 -13.5,-4.5zM306.7,262.4c1.1,6.1 2.5,12.2 3.9,18.3 -5.9,1.3 -11.7,3.3 -16.5,5.1l-6.8,-17.4c6.7,-2.4 13.5,-4.7 19.4,-6zM268.8,278.3l11,15.1c-5.6,4 -11.8,7.8 -16.8,10.6l-8.9,-16.4c5.1,-2.9 10.6,-6.3 14.7,-9.3zM135.3,281c1.5,4.7 4.2,9.2 6.9,12.1l-13.8,12.6c-5.5,-5.7 -9.5,-13.5 -11.2,-20.1zM365.6,284.3c3.5,6.4 6.8,12.7 8.7,19.1l-17.8,5.6c-2,-5.4 -4.3,-10.8 -6.8,-14.8zM238.2,295.2l6.9,17.3c-6.4,2.7 -12.9,4.8 -18.6,6.5l-5,-18c5.9,-1.6 11.3,-3.8 16.7,-5.8zM154.4,301.4c5.3,1.7 10.8,3.4 15.7,4.2 -1.2,6.1 -2,12.3 -2.8,18.5 -7,-1 -14.5,-3.3 -20.5,-5.7zM204.4,304.9l2.8,18.5c-7.2,1.3 -13.4,1.6 -19.8,1.9l-0.4,-18.7c5.9,-0.2 11.6,-0.8 17.4,-1.7zM378.9,322.9c1,6.4 1.6,12.9 2.2,19.3l-18.7,1.5c-0.4,-6 -0.9,-11.9 -2,-17.8zM311.3,353.7c18.9,3.5 44.9,16.2 68.9,33.9 7.4,-9.9 14.4,-20.4 21.3,-31.1l30.1,12.9c-4.7,12.3 -15,25.6 -28.6,37.2 17,16.2 30.9,34.5 37,53 -13.8,-18.1 -31.1,-31.8 -50.3,-42.8 -23.4,15.8 -52.7,25.9 -79.6,20.4 22.9,-4.4 40.6,-16.6 55.8,-32.6 -16.5,-7.5 -33.8,-13.9 -51.3,-20.1z"/>
|
|
||||||
</vector>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="512"
|
|
||||||
android:viewportHeight="512">
|
|
||||||
<path
|
|
||||||
android:pathData="M128.84,16.31c-1.26,0.01 -2.52,0.04 -3.75,0.09 -19.69,0.81 -35.63,6.79 -46.63,17.78 -21.99,21.99 -23.81,63.78 -4.72,115.69s58.57,112.16 113.69,167.28c55.12,55.12 115.38,94.6 167.28,113.69 51.91,19.09 93.73,17.27 115.72,-4.72 21.99,-21.99 23.78,-63.78 4.69,-115.69 -19.09,-51.9 -58.54,-112.19 -113.66,-167.31C306.35,88.01 246.06,48.56 194.15,29.47c-24.33,-8.95 -46.42,-13.32 -65.31,-13.16zM163.81,68.47c45.35,-0.48 113.94,35.97 175.15,97.19 76.95,76.95 114.75,165.57 89.28,205 -16.35,-55.69 -56.74,-120.15 -115.44,-178.84C254.13,133.13 189.69,92.73 134,76.38c8.06,-5.2 18.17,-7.78 29.81,-7.91zM42.72,70.03L31.78,80.97c-10.99,10.99 -16.85,26.35 -17.69,46.06 -0.83,19.71 3.62,43.48 13.22,69.38C46.51,248.2 86.06,308.37 141.16,363.47c55.1,55.1 115.27,94.65 167.06,113.84 25.9,9.6 49.66,14.05 69.37,13.22 19.71,-0.83 35.08,-6.7 46.06,-17.69l10.97,-10.97c-25.29,3.14 -55.02,-1.98 -86.35,-13.5 -55.3,-20.34 -117.29,-61.23 -174.06,-118 -56.77,-56.77 -97.66,-118.73 -118,-174.03 -11.52,-31.3 -16.63,-61.03 -13.5,-86.31zM119.94,91.91c52.77,13.2 119.52,52.99 179.66,113.13 60.13,60.14 99.93,126.89 113.13,179.66 -41.03,21.15 -126.71,-16.64 -201.41,-91.34 -74.71,-74.72 -112.55,-160.42 -91.38,-201.44z"
|
|
||||||
android:fillColor="#000000"/>
|
|
||||||
</vector>
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue