You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2017/08/13 22:04:03 UTC

[10/42] git commit: [flex-asjs] [refs/heads/feature/amf] - The Text Engine needs to specify base offset for adornments

The Text Engine needs to specify base offset for adornments


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/6066f252
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/6066f252
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/6066f252

Branch: refs/heads/feature/amf
Commit: 6066f2528ddcbbf4f2060c7e31125b68674cd910
Parents: adf157a
Author: Harbs <ha...@in-tools.com>
Authored: Wed Aug 2 17:31:44 2017 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Wed Aug 2 17:31:44 2017 +0300

----------------------------------------------------------------------
 .../textLayout/compose/utils/AdornmentUtils.as  |  2 +-
 .../flex/textLayout/elements/FlowLeafElement.as | 14 +++++++++++++-
 .../apache/flex/text/engine/ElementFormat.as    |  2 +-
 .../org/apache/flex/text/engine/FontMetrics.as  | 20 ++++++++++++++++++++
 .../org/apache/flex/text/engine/ITextLine.as    |  3 ++-
 .../flex/org/apache/flex/text/html/TextLine.as  |  5 +++++
 6 files changed, 42 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/compose/utils/AdornmentUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/compose/utils/AdornmentUtils.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/compose/utils/AdornmentUtils.as
index abaa81e..9fa970e 100644
--- a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/compose/utils/AdornmentUtils.as
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/compose/utils/AdornmentUtils.as
@@ -210,7 +210,6 @@ package org.apache.flex.textLayout.compose.utils
 
 			var metrics:FontMetrics = element.getComputedFontMetrics();
 
-
 			var backgroundOnly:Boolean = !(element.computedFormat.textDecoration == TextDecoration.UNDERLINE || element.computedFormat.lineThrough);
 				
 			if (!backgroundOnly)
@@ -223,6 +222,7 @@ package org.apache.flex.textLayout.compose.utils
 						
 				var stOffset:Number = calculateStrikeThrough(element,tLine, blockProgression, metrics);
 				var ulOffset:Number = calculateUnderlineOffset(element, stOffset, blockProgression, metrics, tLine);
+				ulOffset += tLine.getAdornmentOffsetBase();
 			}
 						
 			if (blockProgression != BlockProgression.RL)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/elements/FlowLeafElement.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/elements/FlowLeafElement.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/elements/FlowLeafElement.as
index cee6fac..8f78fa3 100644
--- a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/elements/FlowLeafElement.as
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/elements/FlowLeafElement.as
@@ -329,7 +329,19 @@ package org.apache.flex.textLayout.elements
 			var tf:ITextFlow = getTextFlow();
 			if (tf && tf.flowComposer && tf.flowComposer.swfContext)
 				return tf.flowComposer.swfContext.callInContext(ef.getFontMetrics, ef, null, true);
-			return ef.getFontMetrics();
+			COMPILE::SWF
+			{
+				return ef.getFontMetrics();
+			}
+			COMPILE::JS
+			{
+				var metrics:FontMetrics = ef.getFontMetrics();
+				metrics.underlineOffset *= ef.fontSize;
+				metrics.underlineThickness *= ef.fontSize;
+				metrics.strikethroughOffset *= ef.fontSize;
+				metrics.strikethroughThickness *= ef.fontSize;
+				return metrics;
+			}
 		}
 
 		/** @private */

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ElementFormat.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ElementFormat.as b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ElementFormat.as
index b144b90..00a5c82 100644
--- a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ElementFormat.as
+++ b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ElementFormat.as
@@ -86,7 +86,7 @@ package org.apache.flex.text.engine
 		public function getFontMetrics():FontMetrics
 		{
 			assert(fontDescription != null,"fontDescription not assigned!");
-			return fontDescription.fontLoader.getFont(fontDescription.fontName,fontDescription.fontStyle).fontMetrics;
+			return fontDescription.fontLoader.getFont(fontDescription.fontName,fontDescription.fontStyle).fontMetrics.clone();
 		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/FontMetrics.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/FontMetrics.as b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/FontMetrics.as
index 5472c73..6cde245 100644
--- a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/FontMetrics.as
+++ b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/FontMetrics.as
@@ -87,5 +87,25 @@ package org.apache.flex.text.engine
 		{
 			return 1 / unitsPerEm * fontSize;
 		}
+		public function clone():FontMetrics
+		{
+			var metrics:FontMetrics = new FontMetrics();
+			if(emBox)
+				metrics.emBox = emBox.clone();
+			metrics.lineGap = lineGap;
+			metrics.strikethroughOffset = strikethroughOffset;
+			metrics.strikethroughThickness = strikethroughThickness;
+			metrics.subscriptOffset = subscriptOffset;
+			metrics.subscriptScale = subscriptScale;
+			metrics.superscriptOffset = superscriptOffset;
+			metrics.superscriptScale = superscriptScale;
+			metrics.underlineOffset = underlineOffset;
+			metrics.underlineThickness = underlineThickness;
+			metrics.ascender = ascender;
+			metrics.descender = descender;
+			metrics.xHeight = xHeight;
+			metrics.capsHeight = capsHeight;
+			return metrics;
+		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextLine.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextLine.as b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextLine.as
index f451ee8..60b6082 100644
--- a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextLine.as
+++ b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextLine.as
@@ -69,7 +69,8 @@ package org.apache.flex.text.engine
 		function getAtomTextRotation(atomIndex:int):String;
 		function getAtomWordBoundaryOnLeft(atomIndex:int):Boolean;
 		function getBaselinePosition(baseline:String):Number;
-		
+		function getAdornmentOffsetBase():Number;
+
 		[SWFOverride(returns="flash.geom.Rectangle",params="flash.display.DisplayObject",altparams="Object")]
 		function getBounds(ref:Object):Rectangle;
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/6066f252/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
index 5818a60..33d4b22 100644
--- a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
+++ b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
@@ -506,5 +506,10 @@ package org.apache.flex.text.html
 			_numberLine = value;
 		}
 
+		public function getAdornmentOffsetBase():Number
+		{
+			return 0;
+		}
+
 	}
 }
\ No newline at end of file