Class RenderableText
- java.lang.Object
-
- org.pentaho.reporting.engine.classic.core.layout.model.RenderNode
-
- org.pentaho.reporting.engine.classic.core.layout.model.RenderableText
-
- All Implemented Interfaces:
Cloneable
,SplittableRenderNode
public final class RenderableText extends RenderNode implements SplittableRenderNode
The renderable text is a text chunk, enriched with layouting information, such as break opportunities, character sizes, kerning information and spacing information. Text is given as codepoints. Break opportunities are given as integer values, where zero forbids breaking, and higher values denote better breaks. Spacing and glyph sizes and kerning is given in micro-points; Spacing is the 'added' space between codepoints if text-justification is enabled. The text is computed as grapheme clusters; this means that several unicode codepoints may result in a single /virtual/ glyph/codepoint/character. (Example: 'A' + accent symbols). If the font supports Lithurges, these lithurges may also be represented as a single grapheme cluster (and thus behave unbreakable). Grapheme clusters with more than one unicode char have the size of that char added to the first codepoint, all subsequence codepoints of the same cluster have a size/kerning/etc of zero and are unbreakable. This text chunk is perfectly suitable for horizontal text, going either from left-to-right or right-to-left. (Breaking mixed text is up to the textfactory).- Author:
- Thomas Morgner
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.pentaho.reporting.engine.classic.core.layout.model.RenderNode
RenderNode.CacheState
-
-
Field Summary
-
Fields inherited from class org.pentaho.reporting.engine.classic.core.layout.model.RenderNode
CACHE_CLEAN, CACHE_DEEP_DIRTY, CACHE_DIRTY, HORIZONTAL_AXIS, VERTICAL_AXIS
-
-
Constructor Summary
Constructors Constructor Description RenderableText(StyleSheet layoutContext, ElementType elementType, InstanceID instanceID, ReportAttributeMap<Object> attributes, ExtendedBaselineInfo baselineInfo, GlyphList glyphs, int offset, int length, int script, boolean forceLinebreak)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
computeMaximumTextSize(long contentX2)
static long
convert(long fontMetricsValue)
ExtendedBaselineInfo
getBaselineInfo()
Returns the baseline info for the given node.GlyphList
getGlyphs()
int
getLength()
long
getMinimumWidth()
Returns the component's minimum width.int
getNodeType()
int
getOffset()
long
getPreferredWidth()
String
getRawText()
int
getScript()
protected void
initialize(GlyphList glyphs, int offset, int length, ExtendedBaselineInfo baselineInfo, int script, boolean forceLinebreak)
boolean
isDiscardable()
boolean
isEmpty()
boolean
isForceLinebreak()
boolean
isNormalTextSpacing()
RenderableText[]
splitBy(long widthOfFirst)
Splits the component into two children.String
toString()
-
Methods inherited from class org.pentaho.reporting.engine.classic.core.layout.model.RenderNode
apply, clone, derive, deriveFrozen, findNodeById, freeze, getApplyState, getAttributes, getCachedAge, getCachedHeight, getCachedWidth, getCachedX, getCachedX2, getCachedY, getCachedY2, getCacheState, getChangeTracker, getChildCount, getContentRefCount, getDescendantCount, getEffectiveMarginBottom, getEffectiveMarginTop, getEffectiveMinimumChunkSize, getElementType, getHeight, getInstanceId, getLayoutNodeType, getLayoutParent, getLinebreakAge, getLogicalPage, getMajorAxis, getMaximumBoxWidth, getMinimumChunkWidth, getMinorAxis, getName, getNext, getNodeLayoutProperties, getOrphanLeafCount, getOverflowAreaHeight, getOverflowAreaWidth, getParent, getPrev, getRestrictFinishedClearOut, getRowIndex, getStateKey, getStyleSheet, getTableRefCount, getValidateModelAge, getVerticalTextAlignment, getWidowLeafCount, getWidth, getX, getY, getY2, isBoxOverflowX, isBoxOverflowY, isBoxVisible, isBoxVisible, isBreakAfter, isCacheValid, isContainsReservedContent, isDeepFinishedTable, isFinishedPaginate, isFinishedTable, isFlag, isFrozen, isIgnorableForRendering, isLinebreakCacheValid, isNodeVisible, isNodeVisible, isNodeVisible, isNodeVisible, isOpen, isOrphanLeaf, isParanoidModelChecks, isRenderBox, isSizeSpecifiesBorderBox, isValidateModelCacheValid, isValidateModelResult, isVirtualNode, isVisible, isWidowBox, markApplyStateDirty, reinit, resetValidateModelResult, setCachedAge, setCachedHeight, setCachedWidth, setCachedX, setCachedY, setFinishedPaginate, setFinishedTable, setFlag, setHeight, setLinebreakAge, setMaximumBoxWidth, setMinimumChunkWidth, setNext, setNextUnchecked, setParent, setPrev, setPrevUnchecked, setValidateModelResult, setVirtualNode, setWidowBox, setWidth, setX, setY, shift, shiftCached, updateCacheState, updateChangeTracker
-
-
-
-
Constructor Detail
-
RenderableText
public RenderableText(StyleSheet layoutContext, ElementType elementType, InstanceID instanceID, ReportAttributeMap<Object> attributes, ExtendedBaselineInfo baselineInfo, GlyphList glyphs, int offset, int length, int script, boolean forceLinebreak)
-
-
Method Detail
-
initialize
protected void initialize(GlyphList glyphs, int offset, int length, ExtendedBaselineInfo baselineInfo, int script, boolean forceLinebreak)
-
getNodeType
public int getNodeType()
- Specified by:
getNodeType
in classRenderNode
-
isNormalTextSpacing
public boolean isNormalTextSpacing()
-
isForceLinebreak
public boolean isForceLinebreak()
-
getGlyphs
public GlyphList getGlyphs()
-
getOffset
public int getOffset()
-
getLength
public int getLength()
-
getRawText
public String getRawText()
-
isEmpty
public boolean isEmpty()
- Overrides:
isEmpty
in classRenderNode
-
isDiscardable
public boolean isDiscardable()
- Overrides:
isDiscardable
in classRenderNode
-
getBaselineInfo
public ExtendedBaselineInfo getBaselineInfo()
Returns the baseline info for the given node. This can be null, if the node does not have any baseline info.- Returns:
-
getScript
public int getScript()
-
getMinimumWidth
public long getMinimumWidth()
Description copied from interface:SplittableRenderNode
Returns the component's minimum width. A layout processor can be implemented so, that it does not compute its children's positions on the spot, postponing this action until the end. However, if it finds out the component should be broken, it stops the routine. And this is the case when this method is useful, as it helps not to change the implementation of the processor. Normally each layout component knows about its bounds, hence it will not takes much effort to implement the method.- Specified by:
getMinimumWidth
in interfaceSplittableRenderNode
- Returns:
- the minimum width of the component
-
getPreferredWidth
public long getPreferredWidth()
-
convert
public static long convert(long fontMetricsValue)
-
computeMaximumTextSize
public int computeMaximumTextSize(long contentX2)
-
splitBy
public RenderableText[] splitBy(long widthOfFirst)
Splits the component into two children. The width of first cannot exceedwidthOfFirst
. If the separation is impossiblenull
is returned. Note, there is no guarantee that the first kid has width equal towidthOfFirst
. Important! The separation is allowed only if .TextStyleKeys#WORDBREAK TextStyleKeys.WORDBREAK property istrue
- Specified by:
splitBy
in interfaceSplittableRenderNode
- Parameters:
widthOfFirst
- the maximum width of the first component- Returns:
- a pair of children or
null
- Throws:
IllegalArgumentException
- ifwidthOfFirst <= 0
IllegalStateException
- ifwidthOfFirst >= getMinimumWidth()
-
-