[gui] add SizeValue wrapper
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user