-
-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
25443c5
commit 9fa97de
Showing
13 changed files
with
144 additions
and
162 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,12 @@ | ||
package haxe.ui.filters; | ||
|
||
class Blur extends Filter { | ||
public static var DEFAULTS:Array<Any> = [1]; | ||
|
||
public var amount:Float; | ||
|
||
public override function parse(filterDetails:Array<Any>) { | ||
var copy = Filter.applyDefaults(filterDetails, DEFAULTS); | ||
this.amount = copy[0]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,24 @@ | ||
package haxe.ui.filters; | ||
|
||
class BoxShadow extends Filter { | ||
private static var DEFAULTS:Array<Any> = [2, 2, 0, .1, 1, 0, false]; | ||
|
||
public var offsetX:Float; | ||
public var offsetY:Float; | ||
public var color:Int; | ||
public var alpha:Float; | ||
public var blurRadius:Float; | ||
public var spreadRadius:Float; | ||
public var inset:Bool; | ||
|
||
public override function parse(filterDetails:Array<Any>) { | ||
var copy = Filter.applyDefaults(filterDetails, DEFAULTS); | ||
this.offsetX = copy[0]; | ||
this.offsetY = copy[1]; | ||
this.color = copy[2]; | ||
this.alpha = copy[3]; | ||
this.blurRadius = copy[4]; | ||
this.spreadRadius = copy[5]; | ||
this.inset = copy[6]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,169 +1,19 @@ | ||
package haxe.ui.filters; | ||
|
||
import haxe.ui.styles.CssFilters; | ||
|
||
class FilterParser { | ||
private static var filterParamDefaults:Map<String, Array<Dynamic>>; | ||
|
||
public static function parseFilter(filterDetails:Array<Dynamic>):Filter { | ||
var filter:Filter = null; | ||
if (filterDetails[0] == "drop-shadow") { | ||
filter = parseDropShadow(filterDetails); | ||
} else if (filterDetails[0] == "box-shadow") { | ||
filter = parseBoxShadow(filterDetails); | ||
} else if (filterDetails[0] == "blur") { | ||
filter = parseBlur(filterDetails); | ||
} else if (filterDetails[0] == "outline") { | ||
filter = parseOutline(filterDetails); | ||
} else if (filterDetails[0] == "grayscale") { | ||
filter = parseGrayscale(filterDetails); | ||
} | ||
return filter; | ||
} | ||
|
||
public static function parseDropShadow(filterDetails:Array<Dynamic>):DropShadow { | ||
if (filterDetails == null || filterDetails.length == 0) { | ||
return null; | ||
} | ||
|
||
var copy:Array<Dynamic> = filterDetails.copy(); | ||
buildDefaults(); | ||
|
||
var filterName = copy[0]; | ||
copy.remove(filterName); | ||
|
||
copy = copyFilterDefaults(filterName, copy); | ||
|
||
var dropShadow:DropShadow = new DropShadow(); | ||
dropShadow.distance = copy[0]; | ||
dropShadow.angle = copy[1]; | ||
dropShadow.color = copy[2]; | ||
dropShadow.alpha = copy[3]; | ||
dropShadow.blurX = copy[4]; | ||
dropShadow.blurY = copy[5]; | ||
dropShadow.strength = copy[6]; | ||
dropShadow.quality = copy[7]; | ||
dropShadow.inner = copy[8]; | ||
return dropShadow; | ||
} | ||
|
||
public static function parseBoxShadow(filterDetails:Array<Dynamic>):BoxShadow { | ||
if (filterDetails == null || filterDetails.length == 0) { | ||
return null; | ||
} | ||
|
||
var copy:Array<Dynamic> = filterDetails.copy(); | ||
buildDefaults(); | ||
|
||
var filterName = copy[0]; | ||
copy.remove(filterName); | ||
|
||
copy = copyFilterDefaults(filterName, copy); | ||
|
||
var boxShadow:BoxShadow = new BoxShadow(); | ||
boxShadow.offsetX = copy[0]; | ||
boxShadow.offsetY = copy[1]; | ||
boxShadow.color = copy[2]; | ||
boxShadow.alpha = copy[3]; | ||
boxShadow.blurRadius = copy[4]; | ||
boxShadow.spreadRadius = copy[5]; | ||
boxShadow.inset = copy[6]; | ||
return boxShadow; | ||
} | ||
|
||
public static function parseBlur(filterDetails:Array<Dynamic>):Blur { | ||
if (filterDetails == null || filterDetails.length == 0) { | ||
return null; | ||
} | ||
|
||
var copy:Array<Dynamic> = filterDetails.copy(); | ||
buildDefaults(); | ||
|
||
var filterName = copy[0]; | ||
copy.remove(filterName); | ||
|
||
copy = copyFilterDefaults(filterName, copy); | ||
|
||
var blur:Blur = new Blur(); | ||
blur.amount = copy[0]; | ||
return blur; | ||
} | ||
|
||
public static function parseOutline(filterDetails:Array<Dynamic>):Outline { | ||
if (filterDetails == null || filterDetails.length == 0) { | ||
public static function parseFilter(filterDetails:Array<Any>):Filter { | ||
var filterName = filterDetails.shift(); | ||
if (!CssFilters.hasCssFilter(filterName)) { | ||
return null; | ||
} | ||
|
||
var copy:Array<Dynamic> = filterDetails.copy(); | ||
buildDefaults(); | ||
|
||
var filterName = copy[0]; | ||
copy.remove(filterName); | ||
|
||
copy = copyFilterDefaults(filterName, copy); | ||
|
||
var outline:Outline = new Outline(); | ||
outline.color = copy[0]; | ||
outline.size = copy[1]; | ||
return outline; | ||
} | ||
|
||
private static function copyFilterDefaults(filterName:String, params:Array<Dynamic>):Array<Dynamic> { | ||
var copy:Array<Dynamic> = []; | ||
|
||
var defaultParams:Array<Dynamic> = filterParamDefaults[filterName]; | ||
if (defaultParams != null) { | ||
for (p in defaultParams) { | ||
copy.push(p); | ||
} | ||
} | ||
if (params != null) { | ||
var n:Int = 0; | ||
for (p in params) { | ||
copy[n] = p; | ||
n++; | ||
} | ||
} | ||
|
||
return copy; | ||
} | ||
|
||
public static function parseGrayscale(filterDetails:Array<Dynamic>):Grayscale { | ||
if (filterDetails == null || filterDetails.length == 0) { | ||
return null; | ||
} | ||
|
||
var copy:Array<Dynamic> = filterDetails.copy(); | ||
buildDefaults(); | ||
|
||
var filterName = copy[0]; | ||
copy.remove(filterName); | ||
|
||
copy = copyFilterDefaults(filterName, copy); | ||
|
||
var grayscale:Grayscale = new Grayscale(); | ||
grayscale.amount = copy[0]; | ||
return grayscale; | ||
} | ||
|
||
private static function buildDefaults() { | ||
if (filterParamDefaults != null) { | ||
return; | ||
} | ||
|
||
filterParamDefaults = new Map<String, Array<Dynamic>>(); | ||
filterParamDefaults["drop-shadow"] = []; | ||
filterParamDefaults["drop-shadow"] = filterParamDefaults["drop-shadow"].concat([4, 45, 0, 1, 4, 4, 1, 1, false, false, false]); | ||
|
||
filterParamDefaults["box-shadow"] = []; | ||
filterParamDefaults["box-shadow"] = filterParamDefaults["box-shadow"].concat([2, 2, 0, .1, 1, 0, false]); | ||
|
||
filterParamDefaults["blur"] = []; | ||
filterParamDefaults["blur"] = filterParamDefaults["blur"].concat([1]); | ||
|
||
filterParamDefaults["outline"] = []; | ||
filterParamDefaults["outline"] = filterParamDefaults["outline"].concat([0, 1]); | ||
|
||
filterParamDefaults["grayscale"] = []; | ||
filterParamDefaults["grayscale"] = filterParamDefaults["grayscale"].concat([100]); | ||
|
||
var ctor = CssFilters.getCssFilter(filterName); | ||
var filter:Filter = ctor(); | ||
filter.parse(filterDetails); | ||
return filter; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,12 @@ | ||
package haxe.ui.filters; | ||
|
||
class Grayscale extends Filter { | ||
public static var DEFAULTS:Array<Any> = [100]; | ||
|
||
public var amount:Float; | ||
|
||
public override function parse(filterDetails:Array<Any>) { | ||
var copy = Filter.applyDefaults(filterDetails, DEFAULTS); | ||
this.amount = copy[0]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,14 @@ | ||
package haxe.ui.filters; | ||
|
||
class Outline extends Filter { | ||
public static var DEFAULTS:Array<Any> = [0, 1]; | ||
|
||
public var color:Int; | ||
public var size:Int; | ||
|
||
public override function parse(filterDetails:Array<Any>) { | ||
var copy = Filter.applyDefaults(filterDetails, DEFAULTS); | ||
this.color = copy[0]; | ||
this.size = copy[1]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.