Browse Source

FOP-2184: optimize inefficient position adjustment array allocation in non-CS path.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1432383 13f79535-47bb-0310-9956-ffa450edef68
pull/1/head
Glenn Adams 11 years ago
parent
commit
056f9fd373
2 changed files with 20 additions and 22 deletions
  1. 17
    22
      src/java/org/apache/fop/render/intermediate/IFRenderer.java
  2. 3
    0
      status.xml

+ 17
- 22
src/java/org/apache/fop/render/intermediate/IFRenderer.java View File

@@ -1048,12 +1048,16 @@ public class IFRenderer extends AbstractPathOrientedRenderer {

int[][] dp = word.getGlyphPositionAdjustments();
if ( dp == null ) {
dp = IFUtil.convertDXToDP ( word.getLetterAdjustArray() );
renderTextWithAdjustments(s, word.getLetterAdjustArray(), word.isReversed(),
font, (AbstractTextArea)word.getParentArea());
} else if ( IFUtil.isDPOnlyDX ( dp ) ) {
renderTextWithAdjustments(s, IFUtil.convertDPToDX ( dp ), word.isReversed(),
font, (AbstractTextArea)word.getParentArea());
} else {
renderTextWithAdjustments(s, dp, word.isReversed(),
font, (AbstractTextArea)word.getParentArea());
}

renderText(s, dp, word.isReversed(),
font, (AbstractTextArea)word.getParentArea());

super.renderWord(word);
}

@@ -1063,7 +1067,7 @@ public class IFRenderer extends AbstractPathOrientedRenderer {
String s = space.getSpace();

AbstractTextArea textArea = (AbstractTextArea)space.getParentArea();
renderText(s, null, false, font, textArea);
renderTextWithAdjustments(s, (int[]) null, false, font, textArea);

if (textUtil.combined && space.isAdjustable()) {
//Used for justified text, for example
@@ -1076,17 +1080,6 @@ public class IFRenderer extends AbstractPathOrientedRenderer {
super.renderSpace(space);
}

private void renderText(String s,
int[][] dp, boolean reversed,
Font font, AbstractTextArea parentArea) {
if ( ( dp == null ) || IFUtil.isDPOnlyDX ( dp ) ) {
int[] dx = IFUtil.convertDPToDX ( dp );
renderTextWithAdjustments ( s, dx, reversed, font, parentArea );
} else {
renderTextWithAdjustments ( s, dp, reversed, font, parentArea );
}
}

/**
* Does low-level rendering of text using DX only position adjustments.
* @param s text to render
@@ -1154,12 +1147,14 @@ public class IFRenderer extends AbstractPathOrientedRenderer {
}

void adjust(int dx) {
adjust ( new int[] {
dx, // xPlaAdjust
0, // yPlaAdjust
dx, // xAdvAdjust
0 // yAdvAdjust
} );
if (dx != 0) {
adjust ( new int[] {
dx, // xPlaAdjust
0, // yPlaAdjust
dx, // xAdvAdjust
0 // yAdvAdjust
} );
}
}

void adjust(int[] pa) {

+ 3
- 0
status.xml View File

@@ -59,6 +59,9 @@
documents. Example: the fix of marks layering will be such a case when it's done.
-->
<release version="FOP Trunk" date="TBD">
<action context="Renderers" dev="GA" type="fix" fixes-bug="FOP-2184" due-to="Luis Bernardo">
Optimize inefficient position adjustment array allocation in non-CS path.
</action>
<action context="Fonts" dev="PH" type="add" fixes-bug="FOP-2180" due-to="Alexey Neyman">
TTFReader: Output bounding box information for glyphs.
</action>

Loading…
Cancel
Save