diff --git a/common/src/main/kotlin/com/gitlab/kordlib/common/Color.kt b/common/src/main/kotlin/com/gitlab/kordlib/common/Color.kt new file mode 100644 index 000000000000..ec3bfac8cda3 --- /dev/null +++ b/common/src/main/kotlin/com/gitlab/kordlib/common/Color.kt @@ -0,0 +1,23 @@ +package com.gitlab.kordlib.common + + +class Color(val rgb: Int) { + constructor(red: Int, green: Int, blue: Int) : this(rgb(red, green, blue)) + + val red: Int get() = (rgb shr 16) and 0xFF + val green: Int get() = (rgb shr 8) and 0xFF + val blue: Int get() = (rgb shr 0) and 0xFF + + init { + if (rgb < 0 || rgb > 0xFFFFFF) throw IllegalArgumentException("Color is invalid.") + } +} + + +private fun rgb(red: Int, green: Int, blue: Int): Int { + return red and 0xFF shl 16 or + (green and 0xFF shl 8) or + (blue and 0xFF) shl 0 +} + +val java.awt.Color.kColor get() = Color(rgb) \ No newline at end of file diff --git a/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Embed.kt b/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Embed.kt index ae08cc382c52..e53a9c954347 100644 --- a/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Embed.kt +++ b/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Embed.kt @@ -1,11 +1,11 @@ package com.gitlab.kordlib.core.entity +import com.gitlab.kordlib.common.Color import com.gitlab.kordlib.core.Kord import com.gitlab.kordlib.core.KordObject import com.gitlab.kordlib.core.cache.data.* import com.gitlab.kordlib.core.toInstant import com.gitlab.kordlib.rest.builder.message.EmbedBuilder -import java.awt.Color import java.time.Instant internal const val embedDeprecationMessage = """ @@ -49,7 +49,7 @@ data class Embed(val data: EmbedData, override val kord: Kord) : KordObject { /** * The color of the embed, if present. */ - val color: Color? get() = data.color?.let { Color(it, true) } + val color: Color? get() = data.color?.let { Color(it) } /** * The footer, if present. diff --git a/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Role.kt b/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Role.kt index 0715236c5488..2c2dd5f9a405 100644 --- a/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Role.kt +++ b/core/src/main/kotlin/com/gitlab/kordlib/core/entity/Role.kt @@ -1,5 +1,6 @@ package com.gitlab.kordlib.core.entity +import com.gitlab.kordlib.common.Color import com.gitlab.kordlib.common.entity.Permissions import com.gitlab.kordlib.common.entity.Snowflake import com.gitlab.kordlib.core.Kord @@ -7,7 +8,6 @@ import com.gitlab.kordlib.core.behavior.RoleBehavior import com.gitlab.kordlib.core.cache.data.RoleData import com.gitlab.kordlib.core.supplier.EntitySupplier import com.gitlab.kordlib.core.supplier.EntitySupplyStrategy -import java.awt.Color import java.util.* data class Role( @@ -22,7 +22,7 @@ data class Role( override val guildId: Snowflake get() = Snowflake(data.guildId) - val color: Color get() = Color(data.color, true) + val color: Color get() = Color(data.color) val hoisted: Boolean get() = data.hoisted diff --git a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/message/EmbedBuilder.kt b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/message/EmbedBuilder.kt index ce8de219bd91..9d4ec0d42456 100644 --- a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/message/EmbedBuilder.kt +++ b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/message/EmbedBuilder.kt @@ -1,9 +1,9 @@ package com.gitlab.kordlib.rest.builder.message +import com.gitlab.kordlib.common.Color import com.gitlab.kordlib.common.annotation.KordDsl import com.gitlab.kordlib.rest.builder.RequestBuilder import com.gitlab.kordlib.rest.json.request.* -import java.awt.Color import java.time.Instant import java.time.format.DateTimeFormatter diff --git a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleCreateBuilder.kt b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleCreateBuilder.kt index ce2705de6fbe..f5bf30caa2fc 100644 --- a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleCreateBuilder.kt +++ b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleCreateBuilder.kt @@ -1,10 +1,10 @@ package com.gitlab.kordlib.rest.builder.role +import com.gitlab.kordlib.common.Color +import com.gitlab.kordlib.common.annotation.KordDsl import com.gitlab.kordlib.common.entity.Permissions import com.gitlab.kordlib.rest.builder.AuditRequestBuilder -import com.gitlab.kordlib.common.annotation.KordDsl import com.gitlab.kordlib.rest.json.request.GuildRoleCreateRequest -import java.awt.Color @KordDsl class RoleCreateBuilder : AuditRequestBuilder{ diff --git a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleModifyBuilder.kt b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleModifyBuilder.kt index 7280c3113238..c371c6ebe4ae 100644 --- a/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleModifyBuilder.kt +++ b/rest/src/main/kotlin/com/gitlab/kordlib/rest/builder/role/RoleModifyBuilder.kt @@ -1,10 +1,10 @@ package com.gitlab.kordlib.rest.builder.role +import com.gitlab.kordlib.common.Color +import com.gitlab.kordlib.common.annotation.KordDsl import com.gitlab.kordlib.common.entity.Permissions import com.gitlab.kordlib.rest.builder.AuditRequestBuilder -import com.gitlab.kordlib.common.annotation.KordDsl import com.gitlab.kordlib.rest.json.request.GuildRoleModifyRequest -import java.awt.Color @KordDsl class RoleModifyBuilder : AuditRequestBuilder { diff --git a/rest/src/test/kotlin/com/gitlab/kordlib/rest/services/RestServiceTest.kt b/rest/src/test/kotlin/com/gitlab/kordlib/rest/services/RestServiceTest.kt index c720b1b2aa0a..318c6f514dae 100644 --- a/rest/src/test/kotlin/com/gitlab/kordlib/rest/services/RestServiceTest.kt +++ b/rest/src/test/kotlin/com/gitlab/kordlib/rest/services/RestServiceTest.kt @@ -1,5 +1,6 @@ package com.gitlab.kordlib.rest.services +import com.gitlab.kordlib.common.Color import com.gitlab.kordlib.common.entity.* import com.gitlab.kordlib.rest.json.request.* import com.gitlab.kordlib.rest.ratelimit.ExclusionRequestRateLimiter @@ -7,12 +8,8 @@ import com.gitlab.kordlib.rest.request.KtorRequestHandler import com.gitlab.kordlib.rest.request.RequestHandler import com.gitlab.kordlib.rest.service.RestClient import io.ktor.client.HttpClient -import io.ktor.client.engine.cio.CIO -import io.ktor.client.features.defaultRequest -import io.ktor.client.request.header import kotlinx.coroutines.runBlocking import org.junit.jupiter.api.* -import java.awt.Color import java.util.* fun image(path: String): String { @@ -254,7 +251,7 @@ class RestServiceTest { val role = createGuildRole(guildId) { name = "Sudoers" permissions = Permissions { +Permission.Administrator } - color = Color.RED + color = Color(0xFF0000) hoist = true mentionable = true }