diff --git a/src/main/haxework/gui/ToggleButtonView.hx b/src/main/haxework/gui/ToggleButtonView.hx index 0984f74..4938dba 100755 --- a/src/main/haxework/gui/ToggleButtonView.hx +++ b/src/main/haxework/gui/ToggleButtonView.hx @@ -1,11 +1,8 @@ package haxework.gui; -import haxework.gui.skin.ISkin.SkinSet; - class ToggleButtonView extends ButtonView { public var on(default, set):Bool; - public var onSkin(default, set):SkinSet; public var onText(default, set):String; @@ -19,16 +16,6 @@ class ToggleButtonView extends ButtonView { return on; } - private function set_onSkin(value:SkinSet):SkinSet { - onSkin = value; - toRedraw(); - return onSkin; - } - - private function currentSkin():SkinSet { - return on ? onSkin : skin; - } - private function set_onText(value:String):String { if (onText != value) { onText = value; diff --git a/src/main/haxework/gui/core/Geometry.hx b/src/main/haxework/gui/core/Geometry.hx index 487bc19..f1244d1 100644 --- a/src/main/haxework/gui/core/Geometry.hx +++ b/src/main/haxework/gui/core/Geometry.hx @@ -5,28 +5,26 @@ enum SizeValue { PERCENT(value:Float); } -abstract SValue(String) { - public var percent(get, never):Bool; - public var value(get, never):Float; +abstract ASizeValue(SizeValue) { - inline public function new(value:String) { + public inline function new(value:SizeValue) { this = value; } - inline private function get_percent():Bool { - return this.substr(this.length - 1) == "%"; + @:from static public inline function fromFloat(value:Float):ASizeValue { + return new ASizeValue(FIXED(value)); } - inline private function get_value():Float { - return Std.parseFloat(this); + @:from static public inline function fromString(value:String):ASizeValue { + if (value.substr(value.length - 1) == "%") { + return new ASizeValue(PERCENT(Std.parseFloat(value))); + } else { + return new ASizeValue(FIXED(Std.parseFloat(value))); + } } - @:from static public inline function fromFloat(value:Float):SValue { - return new SValue('$value'); - } - - @:from static public inline function fromString(value:String):SValue { - return new SValue(value); + @:to public inline function toSizeValue():SizeValue { + return this; } } @@ -36,8 +34,8 @@ class SizeSet { public var percent(default, default):Size; public var stretch(null, set):Bool; - public var width(null, set):SValue; - public var height(null, set):SValue; + public var width(null, set):ASizeValue; + public var height(null, set):ASizeValue; public function new() { this.content = []; @@ -50,20 +48,18 @@ class SizeSet { return value; } - inline private function set_width(value:SValue):SValue { - if (value.percent) { - percent.width = value.value; - } else { - fixed.width = value.value; + inline private function set_width(value:ASizeValue):ASizeValue { + switch cast(value, SizeValue) { + case PERCENT(v): percent.width = v; + case FIXED(v): fixed.width = v; } return value; } - inline private function set_height(value:SValue):SValue { - if (value.percent) { - percent.height = value.value; - } else { - fixed.height = value.value; + inline private function set_height(value:ASizeValue):ASizeValue { + switch cast(value, SizeValue) { + case PERCENT(v): percent.height = v; + case FIXED(v): fixed.height = v; } return value; }