awayjs-display
Version:
AwayJS displaylist classes
312 lines (272 loc) • 9.94 kB
text/typescript
import Image2D from "awayjs-core/lib/image/Image2D";
import ByteArray from "awayjs-core/lib/utils/ByteArray";
import CastError from "../errors/CastError";
import Single2DTexture from "../textures/Single2DTexture";
/**
* Helper class for casting assets to usable objects
*/
class Cast
{
private static _colorNames:Object;
private static _hexChars:string = "0123456789abcdefABCDEF";
private static _notClasses:Object = new Object();
private static _classes:Object = new Object();
public static string(data:any):string
{
if (typeof(data) == 'function')
data = new data;
if (typeof(data) == 'string')
return data;
return <string> data;
}
public static byteArray(data:any):ByteArray
{
if (typeof(data) == 'function')
data = new data;
if (data instanceof ByteArray)
return data;
return <ByteArray> data;
}
// public static xml(data:any):XML
// {
// if (typeof(data) == 'function')
// data = new data;
//
// if (data is XML)
// return data;
//
// return XML(data);
// }
private static isHex(str:string):boolean
{
var length:number /*int*/ = str.length;
for (var i:number /*int*/ = 0; i < length; ++i) {
if (this._hexChars.indexOf(str.charAt(i)) == -1)
return false;
}
return true;
}
public static tryColor(data:any):number /*uint*/
{
if (typeof(data) == 'number' /*uint*/)
return Math.floor(<number> data);
if (typeof(data) == 'string') {
if (data == "random")
return Math.floor(Math.random()*0x1000000);
if (this._colorNames == null) {
this._colorNames = new Object();
this._colorNames["steelblue"] = 0x4682B4;
this._colorNames["royalblue"] = 0x041690;
this._colorNames["cornflowerblue"] = 0x6495ED;
this._colorNames["lightsteelblue"] = 0xB0C4DE;
this._colorNames["mediumslateblue"] = 0x7B68EE;
this._colorNames["slateblue"] = 0x6A5ACD;
this._colorNames["darkslateblue"] = 0x483D8B;
this._colorNames["midnightblue"] = 0x191970;
this._colorNames["navy"] = 0x000080;
this._colorNames["darkblue"] = 0x00008B;
this._colorNames["mediumblue"] = 0x0000CD;
this._colorNames["blue"] = 0x0000FF;
this._colorNames["dodgerblue"] = 0x1E90FF;
this._colorNames["deepskyblue"] = 0x00BFFF;
this._colorNames["lightskyblue"] = 0x87CEFA;
this._colorNames["skyblue"] = 0x87CEEB;
this._colorNames["lightblue"] = 0xADD8E6;
this._colorNames["powderblue"] = 0xB0E0E6;
this._colorNames["azure"] = 0xF0FFFF;
this._colorNames["lightcyan"] = 0xE0FFFF;
this._colorNames["paleturquoise"] = 0xAFEEEE;
this._colorNames["mediumturquoise"] = 0x48D1CC;
this._colorNames["lightseagreen"] = 0x20B2AA;
this._colorNames["darkcyan"] = 0x008B8B;
this._colorNames["teal"] = 0x008080;
this._colorNames["cadetblue"] = 0x5F9EA0;
this._colorNames["darkturquoise"] = 0x00CED1;
this._colorNames["aqua"] = 0x00FFFF;
this._colorNames["cyan"] = 0x00FFFF;
this._colorNames["turquoise"] = 0x40E0D0;
this._colorNames["aquamarine"] = 0x7FFFD4;
this._colorNames["mediumaquamarine"] = 0x66CDAA;
this._colorNames["darkseagreen"] = 0x8FBC8F;
this._colorNames["mediumseagreen"] = 0x3CB371;
this._colorNames["seagreen"] = 0x2E8B57;
this._colorNames["darkgreen"] = 0x006400;
this._colorNames["green"] = 0x008000;
this._colorNames["forestgreen"] = 0x228B22;
this._colorNames["limegreen"] = 0x32CD32;
this._colorNames["lime"] = 0x00FF00;
this._colorNames["chartreuse"] = 0x7FFF00;
this._colorNames["lawngreen"] = 0x7CFC00;
this._colorNames["greenyellow"] = 0xADFF2F;
this._colorNames["yellowgreen"] = 0x9ACD32;
this._colorNames["palegreen"] = 0x98FB98;
this._colorNames["lightgreen"] = 0x90EE90;
this._colorNames["springgreen"] = 0x00FF7F;
this._colorNames["mediumspringgreen"] = 0x00FA9A;
this._colorNames["darkolivegreen"] = 0x556B2F;
this._colorNames["olivedrab"] = 0x6B8E23;
this._colorNames["olive"] = 0x808000;
this._colorNames["darkkhaki"] = 0xBDB76B;
this._colorNames["darkgoldenrod"] = 0xB8860B;
this._colorNames["goldenrod"] = 0xDAA520;
this._colorNames["gold"] = 0xFFD700;
this._colorNames["yellow"] = 0xFFFF00;
this._colorNames["khaki"] = 0xF0E68C;
this._colorNames["palegoldenrod"] = 0xEEE8AA;
this._colorNames["blanchedalmond"] = 0xFFEBCD;
this._colorNames["moccasin"] = 0xFFE4B5;
this._colorNames["wheat"] = 0xF5DEB3;
this._colorNames["navajowhite"] = 0xFFDEAD;
this._colorNames["burlywood"] = 0xDEB887;
this._colorNames["tan"] = 0xD2B48C;
this._colorNames["rosybrown"] = 0xBC8F8F;
this._colorNames["sienna"] = 0xA0522D;
this._colorNames["saddlebrown"] = 0x8B4513;
this._colorNames["chocolate"] = 0xD2691E;
this._colorNames["peru"] = 0xCD853F;
this._colorNames["sandybrown"] = 0xF4A460;
this._colorNames["darkred"] = 0x8B0000;
this._colorNames["maroon"] = 0x800000;
this._colorNames["brown"] = 0xA52A2A;
this._colorNames["firebrick"] = 0xB22222;
this._colorNames["indianred"] = 0xCD5C5C;
this._colorNames["lightcoral"] = 0xF08080;
this._colorNames["salmon"] = 0xFA8072;
this._colorNames["darksalmon"] = 0xE9967A;
this._colorNames["lightsalmon"] = 0xFFA07A;
this._colorNames["coral"] = 0xFF7F50;
this._colorNames["tomato"] = 0xFF6347;
this._colorNames["darkorange"] = 0xFF8C00;
this._colorNames["orange"] = 0xFFA500;
this._colorNames["orangered"] = 0xFF4500;
this._colorNames["crimson"] = 0xDC143C;
this._colorNames["red"] = 0xFF0000;
this._colorNames["deeppink"] = 0xFF1493;
this._colorNames["fuchsia"] = 0xFF00FF;
this._colorNames["magenta"] = 0xFF00FF;
this._colorNames["hotpink"] = 0xFF69B4;
this._colorNames["lightpink"] = 0xFFB6C1;
this._colorNames["pink"] = 0xFFC0CB;
this._colorNames["palevioletred"] = 0xDB7093;
this._colorNames["mediumvioletred"] = 0xC71585;
this._colorNames["purple"] = 0x800080;
this._colorNames["darkmagenta"] = 0x8B008B;
this._colorNames["mediumpurple"] = 0x9370DB;
this._colorNames["blueviolet"] = 0x8A2BE2;
this._colorNames["indigo"] = 0x4B0082;
this._colorNames["darkviolet"] = 0x9400D3;
this._colorNames["darkorchid"] = 0x9932CC;
this._colorNames["mediumorchid"] = 0xBA55D3;
this._colorNames["orchid"] = 0xDA70D6;
this._colorNames["violet"] = 0xEE82EE;
this._colorNames["plum"] = 0xDDA0DD;
this._colorNames["thistle"] = 0xD8BFD8;
this._colorNames["lavender"] = 0xE6E6FA;
this._colorNames["ghostwhite"] = 0xF8F8FF;
this._colorNames["aliceblue"] = 0xF0F8FF;
this._colorNames["mintcream"] = 0xF5FFFA;
this._colorNames["honeydew"] = 0xF0FFF0;
this._colorNames["lightgoldenrodyellow"] = 0xFAFAD2;
this._colorNames["lemonchiffon"] = 0xFFFACD;
this._colorNames["cornsilk"] = 0xFFF8DC;
this._colorNames["lightyellow"] = 0xFFFFE0;
this._colorNames["ivory"] = 0xFFFFF0;
this._colorNames["floralwhite"] = 0xFFFAF0;
this._colorNames["linen"] = 0xFAF0E6;
this._colorNames["oldlace"] = 0xFDF5E6;
this._colorNames["antiquewhite"] = 0xFAEBD7;
this._colorNames["bisque"] = 0xFFE4C4;
this._colorNames["peachpuff"] = 0xFFDAB9;
this._colorNames["papayawhip"] = 0xFFEFD5;
this._colorNames["beige"] = 0xF5F5DC;
this._colorNames["seashell"] = 0xFFF5EE;
this._colorNames["lavenderblush"] = 0xFFF0F5;
this._colorNames["mistyrose"] = 0xFFE4E1;
this._colorNames["snow"] = 0xFFFAFA;
this._colorNames["white"] = 0xFFFFFF;
this._colorNames["whitesmoke"] = 0xF5F5F5;
this._colorNames["gainsboro"] = 0xDCDCDC;
this._colorNames["lightgrey"] = 0xD3D3D3;
this._colorNames["silver"] = 0xC0C0C0;
this._colorNames["darkgrey"] = 0xA9A9A9;
this._colorNames["grey"] = 0x808080;
this._colorNames["lightslategrey"] = 0x778899;
this._colorNames["slategrey"] = 0x708090;
this._colorNames["dimgrey"] = 0x696969;
this._colorNames["darkslategrey"] = 0x2F4F4F;
this._colorNames["black"] = 0x000000;
this._colorNames["transparent"] = 0xFF000000;
}
if (this._colorNames[data] != null)
return this._colorNames[data];
if (((<string> data).length == 6) && this.isHex(data))
return parseInt("0x" + data);
}
return null;
}
public static color(data:any):number /*uint*/
{
var result:number /*uint*/ = this.tryColor(data);
if (result == null)
throw new CastError("Can't cast to color: " + data);
return result;
}
public static tryClass(name:string):any
{
if (this._notClasses[name])
return name;
var result:any = this._classes[name];
if (result != null)
return result;
try {
result = window[name];
this._classes[name] = result;
return result;
} catch (e /*ReferenceError*/) {
}
this._notClasses[name] = true;
return name;
}
public static image2D(data:any):Image2D
{
if (data == null)
return null;
if (typeof(data) == 'string')
data = this.tryClass(data);
if (typeof(data) == 'function') {
try {
data = new data();
} catch (e /*ArgumentError*/) {
data = new data(0, 0);
}
}
if (data instanceof Image2D)
return data;
if (data instanceof Single2DTexture)
data = (<Single2DTexture> data).image2D;
throw new CastError("Can't cast to BitmapImage2D: " + data);
}
public static bitmapTexture(data:any):Single2DTexture
{
if (data == null)
return null;
if (typeof(data) == 'string')
data = this.tryClass(data);
if (typeof(data) == 'function') {
try {
data = new data();
} catch (e /*ArgumentError*/) {
data = new data(0, 0);
}
}
if (data instanceof Single2DTexture)
return data;
try {
var bmd:Image2D = Cast.image2D(data);
return new Single2DTexture(bmd);
} catch (e /*CastError*/) {
}
throw new CastError("Can't cast to Single2DTexture: " + data);
}
}
export default Cast;