|
@@ -3,7 +3,6 @@ package hrt.prefab.fx2d;
|
|
|
class Text extends Object2D {
|
|
|
|
|
|
// parameters
|
|
|
-
|
|
|
var color : Int = 16777215;
|
|
|
var size : Int = 12;
|
|
|
var cutoff : Float = 0.5;
|
|
@@ -12,6 +11,24 @@ class Text extends Object2D {
|
|
|
|
|
|
var pathFont : String;
|
|
|
|
|
|
+ // TextShadow
|
|
|
+ var enableTextShadow : Bool = false;
|
|
|
+ var tsDx: Float = 0;
|
|
|
+ var tsDy: Float = 0;
|
|
|
+ var tsColor: Int;
|
|
|
+ var tsAlpha: Float = 1;
|
|
|
+
|
|
|
+ // DropShadow
|
|
|
+ var enableDropShadow : Bool = false;
|
|
|
+ var dsDistance: Float = 0;
|
|
|
+ var dsAngle: Float = 0;
|
|
|
+ var dsColor: Int;
|
|
|
+ var dsAlpha: Float = 1;
|
|
|
+ var dsRadius: Float = 0;
|
|
|
+ var dsGain: Float = 1;
|
|
|
+ var dsQuality: Float = 1;
|
|
|
+ var dsSmoothColor: Bool = true;
|
|
|
+
|
|
|
#if editor
|
|
|
var text : String = "";
|
|
|
#end
|
|
@@ -26,6 +43,26 @@ class Text extends Object2D {
|
|
|
this.smoothing = v.smoothing;
|
|
|
this.pathFont = v.pathFont;
|
|
|
this.align = v.align;
|
|
|
+
|
|
|
+ if (v.enableTextShadow != null) this.enableTextShadow = v.enableTextShadow;
|
|
|
+ if (v.tsDx != null) this.tsDx = v.tsDx;
|
|
|
+ if (v.tsDy != null) this.tsDy = v.tsDy;
|
|
|
+ if (v.tsColor != null) this.tsColor = v.tsColor;
|
|
|
+ if (v.tsAlpha != null) this.tsAlpha = v.tsAlpha;
|
|
|
+
|
|
|
+ if (v.enableDropShadow != null) this.enableDropShadow = v.enableDropShadow;
|
|
|
+ if (v.dsDistance != null) this.dsDistance = v.dsDistance;
|
|
|
+ if (v.dsAngle != null) this.dsAngle = v.dsAngle;
|
|
|
+ if (v.dsColor != null) this.dsColor = v.dsColor;
|
|
|
+ if (v.dsAlpha != null) this.dsAlpha = v.dsAlpha;
|
|
|
+ if (v.dsRadius != null) this.dsRadius = v.dsRadius;
|
|
|
+ if (v.dsGain != null) this.dsGain = v.dsGain;
|
|
|
+ if (v.dsQuality != null) this.dsQuality = v.dsQuality;
|
|
|
+ if (v.dsSmoothColor != null) this.dsSmoothColor = v.dsSmoothColor;
|
|
|
+
|
|
|
+ #if editor
|
|
|
+ this.text = v.text;
|
|
|
+ #end
|
|
|
}
|
|
|
|
|
|
override function save() {
|
|
@@ -36,6 +73,25 @@ class Text extends Object2D {
|
|
|
o.smoothing = smoothing;
|
|
|
o.pathFont = pathFont;
|
|
|
o.align = align;
|
|
|
+ o.dsDistance = dsDistance;
|
|
|
+
|
|
|
+ o.enableTextShadow = enableTextShadow;
|
|
|
+ o.tsDx = tsDx;
|
|
|
+ o.tsDy = tsDy;
|
|
|
+ o.tsColor = tsColor;
|
|
|
+ o.tsAlpha = tsAlpha;
|
|
|
+
|
|
|
+ o.enableDropShadow = enableDropShadow;
|
|
|
+ o.dsAngle = dsAngle;
|
|
|
+ o.dsColor = dsColor;
|
|
|
+ o.dsAlpha = dsAlpha;
|
|
|
+ o.dsRadius = dsRadius;
|
|
|
+ o.dsGain = dsGain;
|
|
|
+ o.dsQuality = dsQuality;
|
|
|
+ o.dsSmoothColor = dsSmoothColor;
|
|
|
+ #if editor
|
|
|
+ o.text = text;
|
|
|
+ #end
|
|
|
return o;
|
|
|
}
|
|
|
|
|
@@ -45,6 +101,31 @@ class Text extends Object2D {
|
|
|
h2dText.visible = visible;
|
|
|
h2dText.color = h3d.Vector.fromColor(color);
|
|
|
h2dText.color.w = 1;
|
|
|
+
|
|
|
+ if (enableTextShadow) {
|
|
|
+ h2dText.dropShadow = {
|
|
|
+ dx: tsDx,
|
|
|
+ dy: tsDy,
|
|
|
+ color: tsColor,
|
|
|
+ alpha: tsAlpha
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ h2dText.dropShadow = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (enableDropShadow) {
|
|
|
+ h2dText.filter = new h2d.filter.DropShadow(
|
|
|
+ dsDistance,
|
|
|
+ dsAngle,
|
|
|
+ dsColor,
|
|
|
+ dsAlpha,
|
|
|
+ dsRadius,
|
|
|
+ dsGain,
|
|
|
+ dsQuality,
|
|
|
+ dsSmoothColor
|
|
|
+ );
|
|
|
+ } else
|
|
|
+ h2dText.filter = null;
|
|
|
|
|
|
h2dText.textAlign = switch (align) {
|
|
|
case 1:
|
|
@@ -184,9 +265,35 @@ class Text extends Object2D {
|
|
|
ctx.onChange(this, pname);
|
|
|
});
|
|
|
|
|
|
+ ctx.properties.add(new hide.Element('<div class="group" name="Text Shadow (double render)">
|
|
|
+ <dl>
|
|
|
+ <dt>Enable</dt><dd><input type="checkbox" field="enableTextShadow" /></dd><br />
|
|
|
+ <dt>DX</dt><dd><input type="range" min="-50" max="50" step="1" field="tsDx" /></dd>
|
|
|
+ <dt>DY</dt><dd><input type="range" min="-50" max="50" step="1" field="tsDy" /></dd>
|
|
|
+ <dt>Color</dt><dd><input type="color" field="tsColor" /></dd>
|
|
|
+ <dt>Alpha</dt><dd><input type="range" min="0" max="1" step="0.01" field="tsAlpha" /></dd>
|
|
|
+ </dl></div>'), this, function(pname) {
|
|
|
+ ctx.onChange(this, pname);
|
|
|
+ });
|
|
|
+
|
|
|
+ ctx.properties.add(new hide.Element('<div class="group" name="Drop Shadow">
|
|
|
+ <dl>
|
|
|
+ <dt>Enable</dt><dd><input type="checkbox" field="enableDropShadow" /></dd><br />
|
|
|
+ <dt>Distance</dt><dd><input type="range" min="-50" max="50" step="1" field="dsDistance" /></dd>
|
|
|
+ <dt>Angle</dt><dd><input type="range" min="-1.571" max="1.571" step="0.0524" field="dsAngle" /></dd>
|
|
|
+ <dt>Color</dt><dd><input type="color" field="dsColor" /></dd>
|
|
|
+ <dt>Alpha</dt><dd><input type="range" min="0" max="1" step="0.01" field="dsAlpha" /></dd>
|
|
|
+ <dt>Radius</dt><dd><input type="range" min="0" max="50" step="1" field="dsRadius" /></dd>
|
|
|
+ <dt>Gain</dt><dd><input type="range" min="0.1" max="50" step="0.1" field="dsGain" /></dd>
|
|
|
+ <dt>Quality</dt><dd><input type="range" min="0" max="1" step="0.01" field="dsQuality" /></dd>
|
|
|
+ <dt>Smooth Color</dt><dd><input type="checkbox" field="dsSmoothColor" /></dd>
|
|
|
+ </dl></div>'), this, function(pname) {
|
|
|
+ ctx.onChange(this, pname);
|
|
|
+ });
|
|
|
+
|
|
|
ctx.properties.add(new hide.Element('<div class="group" name="Responsive">
|
|
|
<dl>
|
|
|
- <dt>Text (not saved)</dt><dd><input type="text" field="text" /></dd>
|
|
|
+ <dt>Text</dt><dd><input type="text" field="text" /></dd>
|
|
|
</dl></div>'), this, function(pname) {
|
|
|
ctx.onChange(this, pname);
|
|
|
});
|