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