[gui] add SizeValue wrapper

This commit is contained in:
2019-03-04 21:12:05 +03:00
parent 02e5481bbd
commit f1302e5636
2 changed files with 22 additions and 39 deletions

View File

@@ -1,11 +1,8 @@
package haxework.gui; package haxework.gui;
import haxework.gui.skin.ISkin.SkinSet;
class ToggleButtonView extends ButtonView { class ToggleButtonView extends ButtonView {
public var on(default, set):Bool; public var on(default, set):Bool;
public var onSkin(default, set):SkinSet;
public var onText(default, set):String; public var onText(default, set):String;
@@ -19,16 +16,6 @@ class ToggleButtonView extends ButtonView {
return on; 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 { private function set_onText(value:String):String {
if (onText != value) { if (onText != value) {
onText = value; onText = value;

View File

@@ -5,28 +5,26 @@ enum SizeValue {
PERCENT(value:Float); PERCENT(value:Float);
} }
abstract SValue(String) { abstract ASizeValue(SizeValue) {
public var percent(get, never):Bool;
public var value(get, never):Float;
inline public function new(value:String) { public inline function new(value:SizeValue) {
this = value; this = value;
} }
inline private function get_percent():Bool { @:from static public inline function fromFloat(value:Float):ASizeValue {
return this.substr(this.length - 1) == "%"; return new ASizeValue(FIXED(value));
} }
inline private function get_value():Float { @:from static public inline function fromString(value:String):ASizeValue {
return Std.parseFloat(this); 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 { @:to public inline function toSizeValue():SizeValue {
return new SValue('$value'); return this;
}
@:from static public inline function fromString(value:String):SValue {
return new SValue(value);
} }
} }
@@ -36,8 +34,8 @@ class SizeSet {
public var percent(default, default):Size; public var percent(default, default):Size;
public var stretch(null, set):Bool; public var stretch(null, set):Bool;
public var width(null, set):SValue; public var width(null, set):ASizeValue;
public var height(null, set):SValue; public var height(null, set):ASizeValue;
public function new() { public function new() {
this.content = []; this.content = [];
@@ -50,20 +48,18 @@ class SizeSet {
return value; return value;
} }
inline private function set_width(value:SValue):SValue { inline private function set_width(value:ASizeValue):ASizeValue {
if (value.percent) { switch cast(value, SizeValue) {
percent.width = value.value; case PERCENT(v): percent.width = v;
} else { case FIXED(v): fixed.width = v;
fixed.width = value.value;
} }
return value; return value;
} }
inline private function set_height(value:SValue):SValue { inline private function set_height(value:ASizeValue):ASizeValue {
if (value.percent) { switch cast(value, SizeValue) {
percent.height = value.value; case PERCENT(v): percent.height = v;
} else { case FIXED(v): fixed.height = v;
fixed.height = value.value;
} }
return value; return value;
} }