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 com.pixelized.rplexicon.data.model.roll.Throw
|
||||
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(
|
||||
val title: String,
|
||||
|
|
@ -14,7 +15,7 @@ data class Attack(
|
|||
val script: Script?,
|
||||
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) {
|
||||
PHYSICAL_MELEE_ATTACK("Mêlée"),
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.pixelized.rplexicon.data.model
|
|||
|
||||
import android.net.Uri
|
||||
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(
|
||||
val prefix: String?,
|
||||
|
|
@ -10,5 +10,5 @@ data class ObjectAction(
|
|||
val effect: Throw?,
|
||||
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 com.pixelized.rplexicon.data.model.roll.Throw
|
||||
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(
|
||||
val name: String,
|
||||
|
|
@ -15,5 +15,5 @@ data class Skill(
|
|||
val script: Script?,
|
||||
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
|
||||
|
||||
import android.net.Uri
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.spellIcon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.BaldurGageImageCache.spellIcon
|
||||
|
||||
data class Spell(
|
||||
val name: String,
|
||||
|
|
@ -14,7 +14,7 @@ data class Spell(
|
|||
val ritual: Boolean,
|
||||
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) {
|
||||
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.Flat
|
||||
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(
|
||||
val name: String,
|
||||
|
|
@ -15,7 +15,7 @@ data class Alteration(
|
|||
val status: Map<Property, Status>,
|
||||
private val iconUri: Uri?,
|
||||
) {
|
||||
val icon: Uri? get() = iconUri ?: name.alterationIcon()
|
||||
val icon: Any? get() = iconUri ?: alterationIcon(name = name)
|
||||
|
||||
data class Status(
|
||||
val name: String,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.pixelized.rplexicon.ui.composable.images
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
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.drawscope.DrawScope
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import coil.compose.AsyncImagePainter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
||||
@Composable
|
||||
fun AsyncImage(
|
||||
modifier: Modifier = Modifier,
|
||||
model: Any?,
|
||||
contentDescription: String? = null,
|
||||
transform: (AsyncImagePainter.State) -> AsyncImagePainter.State = AsyncImagePainter.DefaultTransform,
|
||||
onState: ((AsyncImagePainter.State) -> Unit)? = null,
|
||||
alignment: Alignment = Alignment.Center,
|
||||
contentScale: ContentScale = ContentScale.Fit,
|
||||
alpha: Float = DefaultAlpha,
|
||||
colorFilter: ColorFilter? = null,
|
||||
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality,
|
||||
) {
|
||||
coil.compose.AsyncImage(
|
||||
modifier = modifier,
|
||||
model = model,
|
||||
contentDescription = contentDescription,
|
||||
alignment = alignment,
|
||||
contentScale = contentScale,
|
||||
alpha = alpha,
|
||||
colorFilter = colorFilter,
|
||||
transform = transform,
|
||||
onState = onState,
|
||||
filterQuality = filterQuality,
|
||||
)
|
||||
when (model) {
|
||||
is Int -> Image(
|
||||
modifier = modifier,
|
||||
painter = painterResource(id = model),
|
||||
contentDescription = contentDescription,
|
||||
alignment = alignment,
|
||||
contentScale = contentScale,
|
||||
alpha = alpha,
|
||||
colorFilter = colorFilter,
|
||||
)
|
||||
|
||||
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_YES
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
|
|
@ -13,6 +12,7 @@ import androidx.compose.material3.IconButton
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
|
|
@ -28,16 +28,15 @@ import androidx.lifecycle.ViewModel
|
|||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.zoomable
|
||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class FullScreenImageViewModel @Inject constructor() : ViewModel() {
|
||||
private val _url = mutableStateOf<Uri?>(null)
|
||||
val url: State<Uri?> get() = _url
|
||||
private val _url = mutableStateOf<Any?>(null)
|
||||
val url: State<Any?> get() = _url
|
||||
|
||||
fun showDetail(url: Uri) {
|
||||
fun showDetail(url: Any) {
|
||||
_url.value = url
|
||||
}
|
||||
|
||||
|
|
@ -58,7 +57,7 @@ fun FullScreenImageHandler(
|
|||
|
||||
@Composable
|
||||
fun ImageDialog(
|
||||
url: State<Uri?>,
|
||||
url: State<Any?>,
|
||||
onDismissRequest: () -> Unit,
|
||||
) {
|
||||
val uri by url
|
||||
|
|
@ -103,7 +102,7 @@ fun ImageDialog(
|
|||
private fun ImageDialogPreview() {
|
||||
LexiconTheme {
|
||||
ImageDialog(
|
||||
url = remember { mutableStateOf(Uri.parse(R.drawable.im_brulkhai.uri)) },
|
||||
url = remember { mutableIntStateOf(R.drawable.im_brulkhai) },
|
||||
onDismissRequest = { },
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import androidx.compose.ui.layout.ContentScale
|
|||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
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.rememberBackgroundGradient
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
|
|
@ -30,7 +31,7 @@ import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
|||
@Stable
|
||||
data class AdventureBookUio(
|
||||
val bookTitle: String,
|
||||
val bookIcon: Uri?,
|
||||
val bookIcon: Any?,
|
||||
val documentId: String,
|
||||
val adventureTitle: String?,
|
||||
)
|
||||
|
|
@ -81,7 +82,7 @@ private fun AdventureItemPreview() {
|
|||
Surface {
|
||||
AdventureBook(
|
||||
item = AdventureBookUio(
|
||||
bookIcon = null,
|
||||
bookIcon = R.drawable.icbg_book_generic_c_unfaded,
|
||||
bookTitle = "Les chroniques d'une orc",
|
||||
documentId = "",
|
||||
adventureTitle = null,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.pixelized.rplexicon.ui.screens.adventure.detail
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.net.Uri
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
||||
import androidx.compose.foundation.layout.Box
|
||||
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.unit.IntOffset
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.net.toUri
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import com.pixelized.rplexicon.R
|
||||
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.TITLE
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import kotlin.math.min
|
||||
|
||||
|
|
@ -112,7 +109,7 @@ private fun AdventureDetailContent(
|
|||
isLoading: State<Boolean>,
|
||||
title: State<String?>,
|
||||
titleIndex: State<Int>,
|
||||
background: State<Uri?>,
|
||||
background: State<Any?>,
|
||||
adventures: State<List<AdventureLineUio>>,
|
||||
onBack: () -> Unit,
|
||||
onRefresh: () -> Unit,
|
||||
|
|
@ -286,9 +283,7 @@ private fun AdventureDetailPreview() {
|
|||
mutableIntStateOf(0)
|
||||
},
|
||||
background = remember {
|
||||
mutableStateOf(
|
||||
"https://img.freepik.com/premium-photo/painting-deer-forest-with-stream-water-generative-ai_955925-17321.jpg".toUri()
|
||||
)
|
||||
mutableIntStateOf(R.drawable.im_brulkhai)
|
||||
},
|
||||
adventures = remember {
|
||||
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.PreviewParameterProvider
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.composable.images.AsyncImage
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
|
||||
@Stable
|
||||
data class AlterationItemUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val label: String,
|
||||
val source: String,
|
||||
val subLabel: String?,
|
||||
|
|
@ -137,7 +138,7 @@ private fun RollAlterationPreview(
|
|||
private class RollAlterationPreviewProvider : PreviewParameterProvider<AlterationItemUio> {
|
||||
override val values: Sequence<AlterationItemUio> = sequenceOf(
|
||||
AlterationItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_bless,
|
||||
label = "Bénédiction",
|
||||
subLabel = "Bless",
|
||||
source = "Clerc",
|
||||
|
|
@ -145,7 +146,7 @@ private class RollAlterationPreviewProvider : PreviewParameterProvider<Alteratio
|
|||
override = false,
|
||||
),
|
||||
AlterationItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_guidance,
|
||||
label = "Assistance",
|
||||
subLabel = "Guidance",
|
||||
source = "Clerc",
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
|||
|
||||
@Stable
|
||||
data class AttackUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val id: Attack? = null,
|
||||
val name: String,
|
||||
@StringRes val type: Int,
|
||||
|
|
@ -167,7 +167,7 @@ private fun WeaponPreview(
|
|||
private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
|
||||
override val values: Sequence<AttackUio> = sequenceOf(
|
||||
AttackUio(
|
||||
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
|
||||
icon = R.drawable.icbg_main_hand_attack,
|
||||
name = "Sans arme",
|
||||
type = R.string.attack_type_melee,
|
||||
range = "5 ft reach",
|
||||
|
|
@ -175,7 +175,7 @@ private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
|
|||
damage = AttackUio.Action.Flat(label = "1"),
|
||||
),
|
||||
AttackUio(
|
||||
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
|
||||
icon = R.drawable.icbg_ranged_attack,
|
||||
name = "Long bow",
|
||||
type = R.string.attack_type_range,
|
||||
range = "30 ft reach",
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
|||
|
||||
@Stable
|
||||
data class EquipmentItemUio(
|
||||
val silhouette: String? = null,
|
||||
val silhouette: Any? = null,
|
||||
val head: String? = null,
|
||||
val face: String? = null,
|
||||
val shoulder: String? = null,
|
||||
|
|
@ -286,7 +286,7 @@ private fun InventoryItemPreview() {
|
|||
EquipmentItem(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
equipments = EquipmentItemUio(
|
||||
silhouette = R.drawable.ic_woman_archer_256.uri,
|
||||
silhouette = R.drawable.ic_woman_archer_256,
|
||||
shoulder = "Cloak of Protection",
|
||||
mainHand = "Battleaxe",
|
||||
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_YES
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
|
|
@ -36,7 +35,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
|||
|
||||
@Stable
|
||||
data class ObjectItemUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val prefix: String?,
|
||||
val name: String,
|
||||
val original: String?,
|
||||
|
|
@ -114,7 +113,7 @@ private fun ObjectItemPreview() {
|
|||
ObjectItem(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
item = ObjectItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_scroll_of_bless_unfaded,
|
||||
prefix = "Parchemin de ",
|
||||
name = "Bénédiction",
|
||||
original = "Blessing",
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
|||
|
||||
@Stable
|
||||
data class SkillItemUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val label: String,
|
||||
val translate: String?,
|
||||
val rest: String?,
|
||||
|
|
@ -193,7 +193,7 @@ fun rememberSkillsListStatePreview(): State<List<SkillItemUio>> = remember {
|
|||
private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio> {
|
||||
override val values: Sequence<SkillItemUio> = sequenceOf(
|
||||
SkillItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_relentless_endurance,
|
||||
label = "Endurance Implacable",
|
||||
translate = "Relentless Endurance",
|
||||
rest = "Récupération repos long",
|
||||
|
|
@ -204,7 +204,7 @@ private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio
|
|||
haveDetail = true,
|
||||
),
|
||||
SkillItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_magic_initiate_bard,
|
||||
label = "Apparence inspirante",
|
||||
translate = "Mantle of Inspiration",
|
||||
rest = null,
|
||||
|
|
@ -215,7 +215,7 @@ private class CounterItemPreviewProvider : PreviewParameterProvider<SkillItemUio
|
|||
haveDetail = true,
|
||||
),
|
||||
SkillItemUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_turn_undead,
|
||||
label = "Renvoi des morts-vivants",
|
||||
translate = "Turn Undead",
|
||||
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_YES
|
||||
import android.net.Uri
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.clickable
|
||||
|
|
@ -44,7 +43,7 @@ import com.pixelized.rplexicon.utilitary.extentions.uri
|
|||
|
||||
@Stable
|
||||
data class SpellUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val school: Spell.School,
|
||||
val name: String,
|
||||
val translated: String?,
|
||||
|
|
@ -269,7 +268,7 @@ private fun SpellPreview(
|
|||
private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
||||
override val values: Sequence<SpellUio> = sequenceOf(
|
||||
SpellUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_fireball,
|
||||
school = Spell.School.EVOCATION,
|
||||
name = "Trait de feu",
|
||||
translated = "Fire Bolt",
|
||||
|
|
@ -289,7 +288,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
|||
ritual = false,
|
||||
),
|
||||
SpellUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_vicious_mockery,
|
||||
school = Spell.School.ENCHANTMENT,
|
||||
name = "Moquerie cruelle",
|
||||
translated = "Vicious Mockery",
|
||||
|
|
@ -306,7 +305,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
|||
ritual = false,
|
||||
),
|
||||
SpellUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_cure_wounds,
|
||||
school = Spell.School.EVOCATION,
|
||||
name = "Soins",
|
||||
translated = "Cure Wounds",
|
||||
|
|
@ -323,7 +322,7 @@ private class SpellPreviewProvider : PreviewParameterProvider<SpellUio> {
|
|||
ritual = true,
|
||||
),
|
||||
SpellUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_cure_wounds,
|
||||
school = Spell.School.EVOCATION,
|
||||
name = "Soins",
|
||||
translated = "Cure Wounds",
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
|||
data class SpellChooserUio(
|
||||
val name: String,
|
||||
val original: String?,
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val spells: List<SpellLevelUio>,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
|||
|
||||
@Stable
|
||||
data class AlterationDialogDetailUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val name: String,
|
||||
val original: String?,
|
||||
val source: String,
|
||||
|
|
@ -151,7 +151,7 @@ private fun AlterationDetailPreview() {
|
|||
LexiconTheme {
|
||||
AlterationDetailDialogContent(
|
||||
detail = AlterationDialogDetailUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_rage_bear_heart,
|
||||
name = "Rage",
|
||||
original = "Rage",
|
||||
source = "Barbare",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.pixelized.rplexicon.ui.screens.character.composable.dialogs
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.ScrollState
|
||||
import androidx.compose.foundation.clickable
|
||||
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.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.composable.images.BackgroundImage
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.skillIcon
|
||||
|
||||
@Stable
|
||||
data class SkillDialogDetailUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val name: String,
|
||||
val original: String?,
|
||||
val description: String,
|
||||
|
|
@ -137,7 +136,7 @@ private fun AlterationDetailPreview() {
|
|||
LexiconTheme {
|
||||
SkillDetailDialogContent(
|
||||
detail = SkillDialogDetailUio(
|
||||
icon = "Endurance implacable".skillIcon(),
|
||||
icon = R.drawable.icbg_relentless_endurance,
|
||||
name = "Endurance implacable",
|
||||
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."
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
|||
|
||||
@Stable
|
||||
data class SpellDialogDetailUio(
|
||||
val icon: Uri?,
|
||||
val icon: Any?,
|
||||
val name: String,
|
||||
val translated: String,
|
||||
val level: String,
|
||||
|
|
@ -254,7 +254,7 @@ private fun SpellDetailDialogPreview() {
|
|||
LexiconTheme {
|
||||
SpellDetailDialogContent(
|
||||
detail = SpellDialogDetailUio(
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_hellish_rebuke,
|
||||
name = "Représailles infernales",
|
||||
translated = "Hellish Rebuke",
|
||||
level = "1",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
|
|||
mutableStateOf(
|
||||
listOf(
|
||||
AttackUio(
|
||||
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
|
||||
icon = R.drawable.icbg_main_hand_attack,
|
||||
name = "Unarmed attack",
|
||||
type = R.string.attack_type_melee,
|
||||
range = "5 ft reach",
|
||||
|
|
@ -29,7 +29,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
|
|||
),
|
||||
),
|
||||
AttackUio(
|
||||
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
|
||||
icon = R.drawable.icbg_ranged_attack,
|
||||
name = "Long bow",
|
||||
type = R.string.attack_type_range,
|
||||
range = "30 ft reach",
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ fun rememberSpellLevelChooserState() = remember {
|
|||
SpellChooserUio(
|
||||
name = "Soin",
|
||||
original = "Cure wounds",
|
||||
icon = null,
|
||||
icon = R.drawable.icbg_cure_wounds,
|
||||
spells = listOf(
|
||||
SpellLevelUio(
|
||||
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.tertiary
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.skillIcon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||
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.utilitary.extentions.icon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.spellIcon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -91,7 +90,11 @@ class SpellUioFactory @Inject constructor(
|
|||
SpellUio.Action.Dice(
|
||||
icon = diceThrow.dice?.icon ?: R.drawable.ic_d4_24,
|
||||
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.screens.character.composable.actions.EquipmentItemUio
|
||||
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.factory.ItemUioFactory
|
||||
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 dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -92,7 +92,7 @@ class InventoryViewModel @Inject constructor(
|
|||
val description = descriptionRepository.getDescription(name = item)
|
||||
if (description != null) {
|
||||
_dialog.value = SkillDialogDetailUio(
|
||||
icon = item.equipmentsIcon(),
|
||||
icon = equipmentsIcon(name = item),
|
||||
name = item,
|
||||
original = description.original,
|
||||
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_YES
|
||||
import android.net.Uri
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.foundation.ScrollState
|
||||
import androidx.compose.foundation.clickable
|
||||
|
|
@ -74,7 +73,7 @@ data class LexiconDetailUio(
|
|||
val race: String?,
|
||||
val status: String?,
|
||||
val location: String?,
|
||||
val portrait: List<Uri>,
|
||||
val portrait: List<Any>,
|
||||
val description: String?,
|
||||
val history: String?,
|
||||
val tags: String?,
|
||||
|
|
@ -116,7 +115,7 @@ private fun LexiconDetailContent(
|
|||
haveCharacterSheet: State<Boolean>,
|
||||
onBack: () -> Unit,
|
||||
onCharacterSheet: (String) -> Unit,
|
||||
onIllustration: (Uri) -> Unit,
|
||||
onIllustration: (Any) -> Unit,
|
||||
) {
|
||||
val typography = MaterialTheme.lexicon.typography
|
||||
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
||||
|
|
@ -389,9 +388,7 @@ private fun LexiconDetailPreview() {
|
|||
race = "Half-orc",
|
||||
status = "Vivante",
|
||||
location = "Manoir Durst",
|
||||
portrait = listOf(
|
||||
Uri.parse("https://cdnb.artstation.com/p/assets/images/images/003/024/889/large/bayard-wu-0716.jpg?1468642855"),
|
||||
),
|
||||
portrait = listOf(R.drawable.im_brulkhai),
|
||||
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,
|
||||
tags = "protagoniste, brute",
|
||||
|
|
|
|||
|
|
@ -100,9 +100,9 @@ import kotlinx.coroutines.launch
|
|||
@Stable
|
||||
data class LocationDetailUio(
|
||||
val name: String,
|
||||
val map: Uri?,
|
||||
val map: Any?,
|
||||
val description: String?,
|
||||
val illustrations: List<Uri>,
|
||||
val illustrations: List<Any>,
|
||||
val marquees: List<MarqueeUio>,
|
||||
)
|
||||
|
||||
|
|
@ -226,7 +226,7 @@ private fun LocationContent(
|
|||
selectedIndex: State<Int?>,
|
||||
mapHighlight: State<Offset>,
|
||||
onBack: () -> Unit,
|
||||
onIllustration: (Uri) -> Unit,
|
||||
onIllustration: (Any) -> Unit,
|
||||
onMarquee: (MarqueeUio) -> Unit,
|
||||
onDestination: (MarqueeUio) -> Unit,
|
||||
onMapTap: (Offset) -> Unit,
|
||||
|
|
@ -581,7 +581,7 @@ private fun LocationPreview() {
|
|||
mutableStateOf(
|
||||
LocationDetailUio(
|
||||
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",
|
||||
illustrations = emptyList(),
|
||||
marquees = listOf(
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ import com.pixelized.rplexicon.utilitary.styleWith
|
|||
@Stable
|
||||
data class QuestDetailUio(
|
||||
val id: String,
|
||||
val background: Uri?,
|
||||
val background: Any?,
|
||||
val completed: Boolean,
|
||||
val title: String,
|
||||
val steps: List<QuestStep>,
|
||||
|
|
@ -399,7 +399,7 @@ private class QuestDetailPreviewProvider : PreviewParameterProvider<State<QuestD
|
|||
QuestDetailUio(
|
||||
id = "La chasse aux loups",
|
||||
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",
|
||||
steps = listOf(
|
||||
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.SpellRepository
|
||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AlterationItemUio
|
||||
import com.pixelized.rplexicon.utilitary.extentions.string.alterationIcon
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -152,7 +151,9 @@ class AlterationFactory @Inject constructor(
|
|||
subLabel = description[alteration.name]?.original,
|
||||
source = alteration.source,
|
||||
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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,35 +1,10 @@
|
|||
package com.pixelized.rplexicon.utilitary.extentions.string
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.annotation.DrawableRes
|
||||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||
|
||||
fun String.attackIcon(): Uri? {
|
||||
return ResourcesCache.attacks[this]?.uri?.toUriOrNull()
|
||||
}
|
||||
|
||||
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(
|
||||
object BaldurGageImageCache {
|
||||
private val alterations = hashMapOf(
|
||||
"Arme enflammée" to R.drawable.icbg_flaming_blade,
|
||||
"Critique" to R.drawable.icbg_frenzied_strike,
|
||||
"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,
|
||||
)
|
||||
|
||||
val attacks = hashMapOf(
|
||||
private val attacks = hashMapOf(
|
||||
"Hache de guerre en argent" 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,
|
||||
|
|
@ -120,7 +95,7 @@ private object ResourcesCache {
|
|||
"É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 d'Arme spirituelle" to R.drawable.icbg_book_signedtradebisa_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,
|
||||
)
|
||||
|
||||
val equipments = hashMapOf(
|
||||
private val equipments = hashMapOf(
|
||||
"Dague" to R.drawable.icbg_dagger_unfaded,
|
||||
"Hache de guerre en argent" to R.drawable.icbg_battleaxe_plus_one_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,
|
||||
)
|
||||
|
||||
val skills = hashMapOf(
|
||||
private val skills = hashMapOf(
|
||||
"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 (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,
|
||||
)
|
||||
|
||||
val spells = hashMapOf(
|
||||
private val spells = hashMapOf(
|
||||
"Aide" to R.drawable.icbg_aid,
|
||||
"Alarme" to R.drawable.icbg_command_halt,
|
||||
"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,
|
||||
"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"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<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