mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2026-01-08 20:22:37 +01:00
Fix slider ticks drawing, other feedback on !44
This commit is contained in:
parent
e891cdd116
commit
835ffd53af
@ -80,6 +80,7 @@ VerticalMenuBorder = #dfdfdf
|
||||
|
||||
SliderBackground = #aaaaaa
|
||||
SliderBorder = #888888
|
||||
SliderTick = #989898
|
||||
SliderHandler = #bbbbbb
|
||||
SliderForeground = #333333
|
||||
|
||||
|
||||
@ -13,13 +13,12 @@ import scala.collection.mutable
|
||||
import scala.util.control.Breaks._
|
||||
|
||||
//noinspection ScalaWeakerAccess,ScalaUnusedSymbol
|
||||
class Graphics(initialScalingFactor: Float) extends Logging with Resource {
|
||||
class Graphics(private var scalingFactor: Float) extends Logging with Resource {
|
||||
private var time = 0f
|
||||
|
||||
private var projection = Transform2D.viewport(800, 600)
|
||||
private var width = 800
|
||||
private var height = 600
|
||||
private var scalingFactor = initialScalingFactor
|
||||
|
||||
private val shaderProgram = new ShaderProgram("general")
|
||||
private val renderer = new InstanceRenderer(Mesh.quad, shaderProgram)
|
||||
|
||||
@ -64,7 +64,7 @@ class Slider(var value: Float, val text: String, val snapPoints: Int = 0) extend
|
||||
DrawUtils.ring(g, position.x, position.y, width, height, 2, ColorScheme("SliderBorder"))
|
||||
|
||||
for (i <- 1 until snapPoints - 1) {
|
||||
DrawUtils.ring(g, position.x + (i / (snapPoints.toFloat - 1)) * (bounds.w - handleWidth / 2), position.y + 6, handleWidth / 2, height - 12, 2, ColorScheme("SliderBorder"))
|
||||
g.rect(position.x + (i / (snapPoints.toFloat - 1)) * (bounds.w - handleWidth / 2), position.y + 6, handleWidth / 2, height - 12, ColorScheme("SliderTick"))
|
||||
}
|
||||
|
||||
g.rect(position.x + value * (bounds.w - handleWidth), position.y, handleWidth, height, ColorScheme("SliderHandler"))
|
||||
|
||||
@ -56,10 +56,13 @@ class UISettingsTab extends SettingsTab {
|
||||
children :+= new PaddingBox(new Slider((Settings.get.scaleFactor - 1) / 2, "Interface scale", 5) {
|
||||
override def minimumSize: Size2D = Size2D(512, 24)
|
||||
|
||||
override def formatText: String = f"$text: ${(value * 4 + 2).round.max(2).min(6) / 2.0f}%.1fx"
|
||||
// Interpolates [0; 1] as [1; 3] rounded to nearest 0.5
|
||||
private def convertToScale(slider: Float): Float = (slider * 4 + 2).round.max(2).min(6) / 2.0f
|
||||
|
||||
override def formatText: String = f"$text: ${convertToScale(value)}%.1fx"
|
||||
|
||||
override def onValueFinal(value: Float): Unit = {
|
||||
Settings.get.scaleFactor = (value * 4 + 2).round.max(2).min(6) / 2.0f
|
||||
Settings.get.scaleFactor = convertToScale(value)
|
||||
applySettings()
|
||||
}
|
||||
}, Padding2D(bottom = 8))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user