You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2018/07/09 12:58:37 UTC

[royale-asjs] 14/15: Add inset option to DropDownFilter

This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 0e577ac948d7a4c9f64b956b1e053e3eb4b8c60f
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Sun Jul 8 16:59:26 2018 +0300

    Add inset option to DropDownFilter
---
 .../Graphics/src/main/resources/defaults.css       |  2 +
 .../org/apache/royale/svg/DropShadowFilter.as      | 59 +++++++++++++++++-----
 2 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/frameworks/projects/Graphics/src/main/resources/defaults.css b/frameworks/projects/Graphics/src/main/resources/defaults.css
index da97e79..99d45ee 100644
--- a/frameworks/projects/Graphics/src/main/resources/defaults.css
+++ b/frameworks/projects/Graphics/src/main/resources/defaults.css
@@ -44,4 +44,6 @@ svg|DropShadowFilter
 	BlurFilterElement: ClassReference("org.apache.royale.svg.BlurFilterElement");
 	BlendFilterElement: ClassReference("org.apache.royale.svg.BlendFilterElement");
 	SpreadFilterElement: ClassReference("org.apache.royale.svg.SpreadFilterElement");
+	CompositeFilterElement: ClassReference("org.apache.royale.svg.CompositeFilterElement");
+	InvertFilterElement: ClassReference("org.apache.royale.svg.InvertFilterElement");
 }
\ No newline at end of file
diff --git a/frameworks/projects/Graphics/src/main/royale/org/apache/royale/svg/DropShadowFilter.as b/frameworks/projects/Graphics/src/main/royale/org/apache/royale/svg/DropShadowFilter.as
index c9f90bc..dddc808 100644
--- a/frameworks/projects/Graphics/src/main/royale/org/apache/royale/svg/DropShadowFilter.as
+++ b/frameworks/projects/Graphics/src/main/royale/org/apache/royale/svg/DropShadowFilter.as
@@ -42,6 +42,7 @@ package org.apache.royale.svg
 		private var _blue:Number = 0;
 		private var _opacity:Number = 1;
 		private var _spread:Number = 1;
+		private var _inset:Boolean;
 
 		public function DropShadowFilter()
 		{
@@ -62,6 +63,10 @@ package org.apache.royale.svg
 				return;
 			}
 			loadBeadFromValuesManager(Filter, "filter", value);
+			if (inset)
+			{
+				loadBeadFromValuesManager(InvertFilterElement, "invertFilterElement", value);
+			}
 			var offset:OffsetFilterElement = loadBeadFromValuesManager(OffsetFilterElement, "offsetFilterElement", value) as OffsetFilterElement;
 			offset.dx = dx;
 			offset.dy = dy;
@@ -73,11 +78,21 @@ package org.apache.royale.svg
 			colorMatrix.blue = blue;
 			colorMatrix.opacity = opacity;
 			var spreadElement:SpreadFilterElement = loadBeadFromValuesManager(SpreadFilterElement, "spreadFilterElement", value) as SpreadFilterElement;
-			spreadElement.result = "spreadResult";
+			if (!inset)
+			{
+				spreadElement.result = "spreadResult";
+			}
 			spreadElement.spread = spread;
+			if (inset)
+			{
+				var composite:CompositeFilterElement = loadBeadFromValuesManager(CompositeFilterElement, "compositeFilterElement", value) as CompositeFilterElement;
+				composite.in2 = "SourceAlpha";
+				composite.operator = "in";
+				composite.result = "compositeResult";
+			}
 			var blend:BlendFilterElement = loadBeadFromValuesManager(BlendFilterElement, "blendFilterElement", value) as BlendFilterElement;
-			blend.in = "SourceGraphic";
-			blend.in2 = "spreadResult";
+			blend.in = inset ? "compositeResult" : "SourceGraphic";
+			blend.in2 = inset ? "SourceGraphic" : "spreadResult";
 			value.removeBead(this);
 		}
 
@@ -88,16 +103,16 @@ package org.apache.royale.svg
 			if (c)
 			{
 				COMPILE::JS
-					{
-						var f:Function = c as Function;
-						result = new f() as IBead;
-					}
-					COMPILE::SWF
-					{
-						result = new c() as IBead;
-					}
-					if (result)
-						strand.addBead(result);
+				{
+				var f:Function = c as Function;
+					result = new f() as IBead;
+				}
+				COMPILE::SWF
+				{
+					result = new c() as IBead;
+				}
+				if (result)
+					strand.addBead(result);
 			}
 			return result;
 		}
@@ -245,6 +260,24 @@ package org.apache.royale.svg
 		{
 			_spread = value;
 		}
+
+		/**
+		 *  Whether or not the drop shadow is inset.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.3
+		 */
+		public function get inset():Boolean 
+		{
+			return _inset;
+		}
+		
+		public function set inset(value:Boolean):void 
+		{
+			_inset = value;
+		}
 	}
 }