Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ kotlin.jvmToolchain {
}

tasks.withType<KotlinCompile> {
setJvmDefault("all-compatibility")
setJvmDefault("all")
kotlinOptions {
languageVersion = "1.6"
apiVersion = "1.6"
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[versions]
kotlin = "1.5.10"
kotlin = "1.6.21"
kotlinx-coroutines = "1.5.2"
jetbrains-annotations = "23.0.0"
universalcraft = "406"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package gg.essential.elementa.components.image
import gg.essential.universal.UMatrixStack
import java.awt.Color

@JvmDefaultWithCompatibility
interface ImageProvider {
/**
* Render the image provided by this component with the provided attributes.
Expand All @@ -21,4 +22,4 @@ interface ImageProvider {

fun drawImageCompat(matrixStack: UMatrixStack, x: Double, y: Double, width: Double, height: Double, color: Color): Unit =
UMatrixStack.Compat.runLegacyMethod(matrixStack) { @Suppress("DEPRECATION") drawImage(x, y, width, height, color) }
}
}
11 changes: 11 additions & 0 deletions src/main/kotlin/gg/essential/elementa/constraints/Constraint.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import java.awt.Color
* [T] is what this constraint deals with, for example Float for WidthConstraint
* or Color for ColorConstraint
*/
@JvmDefaultWithCompatibility
interface SuperConstraint<T> {
var cachedValue: T
var recalculate: Boolean
Expand Down Expand Up @@ -54,6 +55,7 @@ interface SuperConstraint<T> {
fun visitImpl(visitor: ConstraintVisitor, type: ConstraintType)
}

@JvmDefaultWithCompatibility
interface GeneralConstraint : PositionConstraint, SizeConstraint {
fun getXValue(component: UIComponent): Float

Expand All @@ -70,38 +72,45 @@ interface GeneralConstraint : PositionConstraint, SizeConstraint {
override fun getRadiusImpl(component: UIComponent) = getXValue(component)
}

@JvmDefaultWithCompatibility
interface PositionConstraint : XConstraint, YConstraint

@JvmDefaultWithCompatibility
interface XConstraint : SuperConstraint<Float> {
fun getXPositionImpl(component: UIComponent): Float

fun getXPosition(component: UIComponent): Float =
getCachedDebuggable(component, ConstraintType.X) { getXPositionImpl(it).roundToRealPixels() }
}

@JvmDefaultWithCompatibility
interface YConstraint : SuperConstraint<Float> {
fun getYPositionImpl(component: UIComponent): Float

fun getYPosition(component: UIComponent): Float =
getCachedDebuggable(component, ConstraintType.Y) { getYPositionImpl(it).roundToRealPixels() }
}

@JvmDefaultWithCompatibility
interface SizeConstraint : WidthConstraint, HeightConstraint, RadiusConstraint

@JvmDefaultWithCompatibility
interface RadiusConstraint : SuperConstraint<Float> {
fun getRadiusImpl(component: UIComponent): Float

fun getRadius(component: UIComponent): Float =
getCachedDebuggable(component, ConstraintType.RADIUS) { getRadiusImpl(it).roundToRealPixels() }
}

@JvmDefaultWithCompatibility
interface WidthConstraint : SuperConstraint<Float> {
fun getWidthImpl(component: UIComponent): Float

fun getWidth(component: UIComponent): Float =
getCachedDebuggable(component, ConstraintType.WIDTH) { getWidthImpl(it).roundToRealPixels() }
}

@JvmDefaultWithCompatibility
interface HeightConstraint : SuperConstraint<Float> {
fun getHeightImpl(component: UIComponent): Float

Expand All @@ -113,13 +122,15 @@ interface HeightConstraint : SuperConstraint<Float> {
}
}

@JvmDefaultWithCompatibility
interface ColorConstraint : SuperConstraint<Color> {
fun getColorImpl(component: UIComponent): Color

fun getColor(component: UIComponent): Color =
getCached(component) { getColorImpl(it) }
}

@JvmDefaultWithCompatibility
interface MasterConstraint : PositionConstraint, SizeConstraint

private inline fun SuperConstraint<Float>.getCachedDebuggable(component: UIComponent, type: ConstraintType, getImpl: (UIComponent) -> Float): Float {
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/gg/essential/elementa/font/FontProvider.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import gg.essential.elementa.constraints.SuperConstraint
import gg.essential.universal.UMatrixStack
import java.awt.Color

@JvmDefaultWithCompatibility
interface FontProvider : SuperConstraint<FontProvider> {
fun getStringWidth(string: String, pointSize: Float): Float

Expand Down Expand Up @@ -53,4 +54,4 @@ interface FontProvider : SuperConstraint<FontProvider> {
fun getShadowHeight(): Float

fun getBelowLineHeight(): Float
}
}