Package com.itextpdf.layout.renderer
Class TextSequenceWordWrapping
- java.lang.Object
-
- com.itextpdf.layout.renderer.TextSequenceWordWrapping
-
final class TextSequenceWordWrapping extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classTextSequenceWordWrapping.LastFittingChildRendererData(package private) static classTextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper(package private) static classTextSequenceWordWrapping.SpecialScriptsContainingSequenceStatus(package private) static classTextSequenceWordWrapping.SpecialScriptsContainingTextRendererSequenceInfo
-
Field Summary
Fields Modifier and Type Field Description private static floatOCCUPIED_AREA_RELAYOUT_EPS
-
Constructor Summary
Constructors Modifier Constructor Description privateTextSequenceWordWrapping()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static java.util.List<java.lang.Integer>convertPossibleBreakPointsToGlyphLineBased(java.util.List<java.lang.Integer> possibleBreakPoints, java.util.List<java.lang.Integer> amountOfChars, java.util.List<java.lang.Integer> indices)(package private) static voiddistributePossibleBreakPointsOverSequentialTextRenderers(LineRenderer lineRenderer, int childPos, int numberOfSequentialTextRenderers, java.util.List<java.lang.Integer> possibleBreakPointsGlobal, java.util.List<java.lang.Integer> indicesOfFloating)private static voidfillActualTextChunkRelatedLists(GlyphLine glyphLine, java.util.List<java.lang.Integer> amountOfCharsBetweenTextStartAndActualTextChunk, java.util.List<java.lang.Integer> glyphLineBasedIndicesOfActualTextChunkEnds)(package private) static floatgetCurWidthRelayoutedTextSequenceDecrement(int childPos, int newChildPos, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults)static TextSequenceWordWrapping.LastFittingChildRendererDatagetIndexAndLayoutResultOfTheLastTextRendererContainingSpecialScripts(LineRenderer lineRenderer, int childPos, java.util.Map<java.lang.Integer,LayoutResult> specialScriptLayoutResults, boolean wasParentsHeightClipped, boolean isOverflowFit)static TextSequenceWordWrapping.LastFittingChildRendererDatagetIndexAndLayoutResultOfTheLastTextRendererWithNoSpecialScripts(LineRenderer lineRenderer, int childPos, java.util.Map<java.lang.Integer,LayoutResult> textSequenceLayoutResults, boolean wasParentsHeightClipped, boolean isOverflowFit, boolean floatsPlaced)(package private) static TextSequenceWordWrapping.SpecialScriptsContainingSequenceStatusgetSpecialScriptsContainingSequenceStatus(LineRenderer lineRenderer, int analyzedTextRendererIndex)This method defines how to proceed with aTextRendererwithin which possible breaks haven't been found.(package private) static TextSequenceWordWrapping.SpecialScriptsContainingTextRendererSequenceInfogetSpecialScriptsContainingTextRendererSequenceInfo(LineRenderer lineRenderer, int childPos)static booleanisTextRendererAndRequiresSpecialScriptPreLayoutProcessing(IRenderer childRenderer)static booleanpostprocessTextSequenceOverflowX(LineRenderer lineRenderer, boolean textSequenceOverflowXProcessing, int childPos, IRenderer childRenderer, LayoutResult childResult, boolean wasXOverflowChanged)Checks if the layouting should be stopped on current child and resets configurations set onpreprocessTextSequenceOverflowX(LineRenderer, boolean, IRenderer, boolean, OverflowPropertyValue).static voidpreprocessTextSequenceOverflowX(LineRenderer lineRenderer, boolean textSequenceOverflowXProcessing, IRenderer childRenderer, boolean wasXOverflowChanged, OverflowPropertyValue oldXOverflow)Performs some settings onLineRendererand its child prior to layouting the child to be overflowed beyond the available area.static voidprocessSpecialScriptPreLayout(LineRenderer lineRenderer, int childPos)Preprocess a continuous sequence of TextRenderer containing special scripts prior to layouting the first TextRenderer in the sequence.static voidresetTextSequenceIfItEnded(java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, boolean specialScripts, IRenderer childRenderer, int childPos, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, boolean noSoftWrap, AbstractWidthHandler widthHandler)private static voidupdateMinMaxWidthOfLineRendererAfterTextRendererSequenceProcessing(boolean noSoftWrap, int childPos, LayoutResult layoutResult, AbstractWidthHandler widthHandler, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults)static LineRenderer.LineAscentDescentStateupdateTextRendererSequenceAscentDescent(LineRenderer lineRenderer, java.util.Map<java.lang.Integer,float[]> textRendererSequenceAscentDescent, int childPos, float[] childAscentDescent, LineRenderer.LineAscentDescentState preTextSequenceAscentDescent)static TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelperupdateTextRendererSequenceMinMaxWidth(LineRenderer lineRenderer, AbstractWidthHandler widthHandler, int childPos, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, boolean anythingPlaced, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, java.util.Map<java.lang.Integer,LayoutResult> specialScriptLayoutResults, float textIndent)static voidupdateTextSequenceLayoutResults(java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, boolean specialScripts, IRenderer childRenderer, int childPos, LayoutResult childResult)
-
-
-
Field Detail
-
OCCUPIED_AREA_RELAYOUT_EPS
private static final float OCCUPIED_AREA_RELAYOUT_EPS
- See Also:
- Constant Field Values
-
-
Method Detail
-
isTextRendererAndRequiresSpecialScriptPreLayoutProcessing
public static boolean isTextRendererAndRequiresSpecialScriptPreLayoutProcessing(IRenderer childRenderer)
-
processSpecialScriptPreLayout
public static void processSpecialScriptPreLayout(LineRenderer lineRenderer, int childPos)
Preprocess a continuous sequence of TextRenderer containing special scripts prior to layouting the first TextRenderer in the sequence.In this method we preprocess a sequence containing special scripts only, skipping floating renderers as they're not part of a regular layout flow, and breaking the prelayout processing once a non-special script containing renderer occurs. Note! Even though floats are skipped during calculating correct word boundaries, floats themselves are considered as soft-wrap opportunities.
Prelayout processing includes the following steps:
getSpecialScriptsContainingTextRendererSequenceInfo(LineRenderer, int): determine boundaries of the sequence and concatenate its TextRenderer#text fields converted to a String representation;- get the String analyzed with WordWrapper#getPossibleBreaks and receive a zero-based array of points where the String is allowed to got broken in lines;
distributePossibleBreakPointsOverSequentialTextRenderers(LineRenderer, int, int, List, List): distribute the list over the TextRenderer#specialScriptsWordBreakPoints, preliminarily having the points shifted, so that each TextRenderer#specialScriptsWordBreakPoints is based on the first element of TextRenderer#text.
- Parameters:
lineRenderer- line renderer containing text sequence to processchildPos- index of the childRenderer in LineRenderer#childRenderers from which the a continuous sequence of TextRenderer containing special scripts starts
-
updateTextSequenceLayoutResults
public static void updateTextSequenceLayoutResults(java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, boolean specialScripts, IRenderer childRenderer, int childPos, LayoutResult childResult)
-
resetTextSequenceIfItEnded
public static void resetTextSequenceIfItEnded(java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, boolean specialScripts, IRenderer childRenderer, int childPos, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, boolean noSoftWrap, AbstractWidthHandler widthHandler)
-
updateTextRendererSequenceAscentDescent
public static LineRenderer.LineAscentDescentState updateTextRendererSequenceAscentDescent(LineRenderer lineRenderer, java.util.Map<java.lang.Integer,float[]> textRendererSequenceAscentDescent, int childPos, float[] childAscentDescent, LineRenderer.LineAscentDescentState preTextSequenceAscentDescent)
-
updateTextRendererSequenceMinMaxWidth
public static TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper updateTextRendererSequenceMinMaxWidth(LineRenderer lineRenderer, AbstractWidthHandler widthHandler, int childPos, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, boolean anythingPlaced, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults, java.util.Map<java.lang.Integer,LayoutResult> specialScriptLayoutResults, float textIndent)
-
getIndexAndLayoutResultOfTheLastTextRendererWithNoSpecialScripts
public static TextSequenceWordWrapping.LastFittingChildRendererData getIndexAndLayoutResultOfTheLastTextRendererWithNoSpecialScripts(LineRenderer lineRenderer, int childPos, java.util.Map<java.lang.Integer,LayoutResult> textSequenceLayoutResults, boolean wasParentsHeightClipped, boolean isOverflowFit, boolean floatsPlaced)
-
getIndexAndLayoutResultOfTheLastTextRendererContainingSpecialScripts
public static TextSequenceWordWrapping.LastFittingChildRendererData getIndexAndLayoutResultOfTheLastTextRendererContainingSpecialScripts(LineRenderer lineRenderer, int childPos, java.util.Map<java.lang.Integer,LayoutResult> specialScriptLayoutResults, boolean wasParentsHeightClipped, boolean isOverflowFit)
-
preprocessTextSequenceOverflowX
public static void preprocessTextSequenceOverflowX(LineRenderer lineRenderer, boolean textSequenceOverflowXProcessing, IRenderer childRenderer, boolean wasXOverflowChanged, OverflowPropertyValue oldXOverflow)
Performs some settings onLineRendererand its child prior to layouting the child to be overflowed beyond the available area.- Parameters:
lineRenderer- line renderer containing text sequence to processtextSequenceOverflowXProcessing- true if it isTextRenderersequence processing in overflowX modechildRenderer- theLineRenderer's child to be preprocessedwasXOverflowChanged- true if value ofProperty.OVERFLOW_Xhas been changed during layoutingoldXOverflow- the value ofProperty.OVERFLOW_Xbefore it's been changed during layouting ofLineRendereror null ifProperty.OVERFLOW_Xhasn't been changed
-
postprocessTextSequenceOverflowX
public static boolean postprocessTextSequenceOverflowX(LineRenderer lineRenderer, boolean textSequenceOverflowXProcessing, int childPos, IRenderer childRenderer, LayoutResult childResult, boolean wasXOverflowChanged)
Checks if the layouting should be stopped on current child and resets configurations set onpreprocessTextSequenceOverflowX(LineRenderer, boolean, IRenderer, boolean, OverflowPropertyValue).- Parameters:
lineRenderer- line renderer containing text sequence to processtextSequenceOverflowXProcessing- true if it isTextRenderersequence processing in overflowX modechildRenderer- theLineRenderer's child to be preprocessedwasXOverflowChanged- true if value ofProperty.OVERFLOW_Xhas been changed during layouting
-
getSpecialScriptsContainingTextRendererSequenceInfo
static TextSequenceWordWrapping.SpecialScriptsContainingTextRendererSequenceInfo getSpecialScriptsContainingTextRendererSequenceInfo(LineRenderer lineRenderer, int childPos)
-
distributePossibleBreakPointsOverSequentialTextRenderers
static void distributePossibleBreakPointsOverSequentialTextRenderers(LineRenderer lineRenderer, int childPos, int numberOfSequentialTextRenderers, java.util.List<java.lang.Integer> possibleBreakPointsGlobal, java.util.List<java.lang.Integer> indicesOfFloating)
-
getSpecialScriptsContainingSequenceStatus
static TextSequenceWordWrapping.SpecialScriptsContainingSequenceStatus getSpecialScriptsContainingSequenceStatus(LineRenderer lineRenderer, int analyzedTextRendererIndex)
This method defines how to proceed with aTextRendererwithin which possible breaks haven't been found. Possible scenarios are: - Preceding renderer is also an instance ofTextRendererand does contain special scripts:getIndexAndLayoutResultOfTheLastTextRendererContainingSpecialScripts(LineRenderer, int, Map, boolean, boolean)will proceed to analyze the precedingTextRendereron the subject of possible breaks; - Preceding renderer is either an instance ofTextRendererwhich does not contain special scripts, or an instance ofImageRendereror is an inlineBlock child: in this case the entire subsequence ofTextRenderer-s containing special scripts is to be moved to the next line; - Otherwise a forced split is to happen.- Parameters:
lineRenderer- line renderer containing text sequence to processanalyzedTextRendererIndex- index of the latter child that has been analyzed on the subject of possible breaks- Returns:
TextSequenceWordWrapping.SpecialScriptsContainingSequenceStatusinstance standing for the strategy to proceed with.
-
getCurWidthRelayoutedTextSequenceDecrement
static float getCurWidthRelayoutedTextSequenceDecrement(int childPos, int newChildPos, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults)
-
updateMinMaxWidthOfLineRendererAfterTextRendererSequenceProcessing
private static void updateMinMaxWidthOfLineRendererAfterTextRendererSequenceProcessing(boolean noSoftWrap, int childPos, LayoutResult layoutResult, AbstractWidthHandler widthHandler, TextSequenceWordWrapping.MinMaxWidthOfTextRendererSequenceHelper minMaxWidthOfTextRendererSequenceHelper, java.util.Map<java.lang.Integer,LayoutResult> textRendererLayoutResults)
-
convertPossibleBreakPointsToGlyphLineBased
private static java.util.List<java.lang.Integer> convertPossibleBreakPointsToGlyphLineBased(java.util.List<java.lang.Integer> possibleBreakPoints, java.util.List<java.lang.Integer> amountOfChars, java.util.List<java.lang.Integer> indices)
-
fillActualTextChunkRelatedLists
private static void fillActualTextChunkRelatedLists(GlyphLine glyphLine, java.util.List<java.lang.Integer> amountOfCharsBetweenTextStartAndActualTextChunk, java.util.List<java.lang.Integer> glyphLineBasedIndicesOfActualTextChunkEnds)
-
-