From 3638c8d2b66eaf47f70873c4e83d250db4b96761 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 17 Apr 2019 16:42:26 +0300 Subject: [PATCH] [view] add Geometry size ratio param --- src/main/haxework/net/BaseMediaLoader.hx | 2 +- src/main/haxework/view/ButtonImageView.hx | 37 +++++++++++++++++++++++ src/main/haxework/view/Root.hx | 2 ++ src/main/haxework/view/View.hx | 14 +++++++++ src/main/haxework/view/core/Geometry.hx | 6 ++++ 5 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/main/haxework/view/ButtonImageView.hx diff --git a/src/main/haxework/net/BaseMediaLoader.hx b/src/main/haxework/net/BaseMediaLoader.hx index 1f6b2d2..d8e3254 100755 --- a/src/main/haxework/net/BaseMediaLoader.hx +++ b/src/main/haxework/net/BaseMediaLoader.hx @@ -18,7 +18,7 @@ class BaseMediaLoader extends BaseLoader { private var loader:Loader; override private function internalRequest(url:String):Void { - L.d("BaseMediaLoader", "request: " + url); + //L.d("BaseMediaLoader", "request: " + url); cockTimeout(); loader = buildLoader(); loader.load(new URLRequest(url), buildLoaderContext(false)); diff --git a/src/main/haxework/view/ButtonImageView.hx b/src/main/haxework/view/ButtonImageView.hx new file mode 100644 index 0000000..b86c4e5 --- /dev/null +++ b/src/main/haxework/view/ButtonImageView.hx @@ -0,0 +1,37 @@ +package haxework.view; + +import flash.display.BitmapData; +import haxework.view.skin.ButtonBitmapSkin; +import haxework.view.skin.ISkin; +import haxework.view.utils.BitmapUtil; +import haxework.view.utils.DrawUtil.FillType; +import haxework.net.ImageLoader; + +class ButtonImageView extends ButtonView { + + public var image(default, set):BitmapData; + private var bitmapSkin:ButtonBitmapSkin = new ButtonBitmapSkin(); + + public function new(image:BitmapData = null) { + super(); + if (image != null) { + this.image = image; + } + } + + override private function set_skin(value:SkinSet):SkinSet { + value = value.slice(0); + value.unshift(bitmapSkin); + return super.set_skin(value); + } + + private function set_image(value:BitmapData):BitmapData { + if (image != value) { + setContentSize(value.width, value.height, "image"); + image = value; + bitmapSkin.image = image; + toRedraw(); + } + return image; + } +} diff --git a/src/main/haxework/view/Root.hx b/src/main/haxework/view/Root.hx index 02ea5b2..a9475a2 100755 --- a/src/main/haxework/view/Root.hx +++ b/src/main/haxework/view/Root.hx @@ -55,6 +55,8 @@ class Root { view.height = content.stage.stageHeight; view.toUpdate(); } else { + view.width = view.geometry.minWidth; + view.height = view.geometry.minHeight; view.x = (content.stage.stageWidth - view.width) / 2; view.y = (content.stage.stageHeight - view.height) / 2; } diff --git a/src/main/haxework/view/View.hx b/src/main/haxework/view/View.hx index 64a9a0e..74e39b0 100755 --- a/src/main/haxework/view/View.hx +++ b/src/main/haxework/view/View.hx @@ -98,6 +98,13 @@ class View implements IView { if (width != value) { width = value; toRedraw(); + if (geometry != null && geometry.size.ratio > -1) { + var ratioHeight = value / geometry.size.ratio; + var size = geometry.size.content["ratio.height"]; + if (size == null || size.height != ratioHeight) { + this.setContentSize(-1, ratioHeight, "ratio.height"); + } + } } return width; } @@ -106,6 +113,13 @@ class View implements IView { if (height != value) { height = value; toRedraw(); + if (geometry != null && geometry.size.ratio > -1) { + var ratioWidth = value * geometry.size.ratio; + var size = geometry.size.content["ratio.width"]; + if (size == null || size.width != ratioWidth) { + this.setContentSize(ratioWidth, -1, "ratio.width"); + } + } } return height; } diff --git a/src/main/haxework/view/core/Geometry.hx b/src/main/haxework/view/core/Geometry.hx index 2465484..7f4303f 100644 --- a/src/main/haxework/view/core/Geometry.hx +++ b/src/main/haxework/view/core/Geometry.hx @@ -34,6 +34,7 @@ class SizeSet { public var percent(default, default):Size; public var stretch(null, set):Bool; public var empty(get, null):Bool; + public var ratio(default, default):Float = -1; public var width(null, set):ASizeValue; public var height(null, set):ASizeValue; @@ -156,4 +157,9 @@ class Geometry { this.size.height = height; return this; } + + public function setRatio(ratio:Float):Geometry { + this.size.ratio = ratio; + return this; + } }