Package com.itextpdf.layout.renderer
Class BlockRenderer
java.lang.Object
com.itextpdf.layout.renderer.AbstractRenderer
com.itextpdf.layout.renderer.BlockRenderer
- All Implemented Interfaces:
IPropertyContainer
,IRenderer
- Direct Known Subclasses:
AbstractFormFieldRenderer
,AbstractSelectFieldRenderer
,CellRenderer
,DivRenderer
,LineSeparatorRenderer
,ListRenderer
,ParagraphRenderer
Represents a renderer for block elements.
-
Field Summary
Fields inherited from class com.itextpdf.layout.renderer.AbstractRenderer
BOTTOM_SIDE, childRenderers, EPS, flushed, INF, isLastRendererForModelElement, LEFT_SIDE, modelElement, occupiedArea, OVERLAP_EPSILON, parent, positionedRenderers, properties, RIGHT_SIDE, TOP_SIDE
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
BlockRenderer
(IElement modelElement) Creates a BlockRenderer from its corresponding layout object. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addMarkedContent
(DrawContext drawContext, boolean isBegin) (package private) boolean
applyMaxHeight
(Rectangle parentBBox, Float blockMaxHeight, MarginsCollapseHandler marginsCollapseHandler, boolean isCellRenderer, boolean wasParentsHeightClipped, OverflowPropertyValue overflowY) (package private) AbstractRenderer
applyMinHeight
(OverflowPropertyValue overflowY, Rectangle layoutBox) protected void
applyRotationLayout
(Rectangle layoutBox) This method rotates content of the renderer and calculates correct occupied area for the rotated element.protected void
This method applies vertical alignment for the occupied area of the renderer and its children renderers.(package private) void
applyWidth
(Rectangle parentBBox, Float blockWidth, OverflowPropertyValue overflowX) protected void
beginRotationIfApplied
(PdfCanvas canvas) This method starts rotation for the renderer if rotation angle property is specified.private int
checkPointSide
(Point filteredPoint, Point clipLineBeg, Point clipLineEnd) clipPolygon
(List<Point> points, Point clipLineBeg, Point clipLineEnd) (package private) void
correctFixedLayout
(Rectangle layoutBox) protected AbstractRenderer
createOverflowRenderer
(int layoutResult) Creates an overflow renderer.protected AffineTransform
This method createsAffineTransform
instance that could be used to rotate content inside the occupied area.(package private) AbstractRenderer[]
createSplitAndOverflowRenderers
(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) protected AbstractRenderer
createSplitRenderer
(int layoutResult) Creates a split renderer.(package private) void
decreaseLayoutBoxAfterChildPlacement
(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) void
draw
(DrawContext drawContext) Flushes the renderer subtree contents, i.e.protected void
endRotationIfApplied
(PdfCanvas canvas) This method ends rotation for the renderer if applied.(package private) void
fixOccupiedAreaIfOverflowedX
(OverflowPropertyValue overflowX, Rectangle layoutBox) (package private) void
fixOccupiedAreaIfOverflowedY
(OverflowPropertyValue overflowY, Rectangle layoutBox) private Point
getIntersectionPoint
(Point lineBeg, Point lineEnd, Point clipLineBeg, Point clipLineEnd) Calculates min and max width values for current renderer.Gets the bounding box that contains all content written to theDrawContext
by thisIRenderer
.protected PdfFont
getResolvedFont
(PdfDocument pdfDocument) Get the font set in properties, if it is not set, then resolves the firstPdfFont
fromFontProvider
.(package private) void
handleForcedPlacement
(boolean anythingPlaced) private boolean
layout
(LayoutContext layoutContext) This method simulates positioning of the renderer, including all of its children, and returns theLayoutResult
, representing the layout result, including occupied area, status, i.e.(package private) LayoutResult
processNotFullChildResult
(LayoutContext layoutContext, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers, boolean wasHeightClipped, List<Rectangle> floatRendererAreas, boolean marginsCollapsingEnabled, float clearHeightCorrection, Border[] borders, UnitValue[] paddings, List<Rectangle> areas, int currentAreaPos, Rectangle layoutBox, Set<Rectangle> nonChildFloatingRendererAreas, IRenderer causeOfNothing, boolean anythingPlaced, int childPos, LayoutResult result) (package private) Rectangle
recalculateLayoutBoxBeforeChildLayout
(Rectangle layoutBox, IRenderer childRenderer, Rectangle initialLayoutBox) (package private) void
recalculateOccupiedAreaAfterChildLayout
(Rectangle resultBBox, Float blockMaxHeight) private void
replaceSplitRendererKidFloats
(Map<Integer, IRenderer> waitingFloatsSplitRenderers, IRenderer splitRenderer) (package private) MarginsCollapseInfo
startChildMarginsHandling
(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) (package private) boolean
stopLayoutingChildrenIfChildResultNotFull
(LayoutResult returnResult) Methods inherited from class com.itextpdf.layout.renderer.AbstractRenderer
addAllChildRenderers, addAllChildRenderers, addAllProperties, addChild, addChildRenderer, alignChildHorizontally, allowLastYLineRecursiveExtraction, applyAbsolutePosition, applyAbsolutePositionIfNeeded, applyAction, applyBorderBox, applyBorderBox, applyDestination, applyDestinationsAndAnnotation, applyLinkAnnotation, applyMargins, applyMargins, applyMarginsBordersPaddings, applyPaddings, applyPaddings, applyRelativePositioningTranslation, beginElementOpacityApplying, beginTransformationIfApplied, calculateAbsolutePdfBBox, calculateAdditionalWidth, calculateBBox, calculatePaddingBorderHeight, calculatePaddingBorderWidth, calculateShiftToPositionBBoxOfPointsAt, clipBackgroundArea, clipBackgroundArea, clipBorderArea, createFontCharacteristics, createXObject, deleteOwnProperty, deleteProperty, drawBackground, drawBorder, drawChildren, drawPositionedChildren, endElementOpacityApplying, endTransformationIfApplied, getAspectRatio, getBackgroundArea, getBorderAreaBBox, getBorderRadii, getBorders, getBorders, getChildRenderers, getDefaultProperty, getFirstYLineRecursively, getInnerAreaBBox, getLastYLineRecursively, getMargins, getModelElement, getOccupiedArea, getOwnProperties, getOwnProperty, getPaddings, getParent, getPdfDocument, getProperty, getProperty, getPropertyAsBoolean, getPropertyAsColor, getPropertyAsFloat, getPropertyAsFloat, getPropertyAsFloat, getPropertyAsFont, getPropertyAsInteger, getPropertyAsTransparentColor, getPropertyAsUnitValue, getPropertyAsUnitValue, getRootRenderer, hasAbsoluteUnitValue, hasAspectRatio, hasOwnOrModelProperty, hasOwnProperty, hasProperty, hasRelativeUnitValue, initElementAreas, isAbsolutePosition, isBorderBoxSizing, isFirstOnRootArea, isFirstOnRootArea, isFixedLayout, isFlushed, isKeepTogether, isKeepTogether, isNotFittingHeight, isNotFittingLayoutArea, isNotFittingWidth, isOverflowFit, isOverflowProperty, isOverflowProperty, isOverflowProperty, isPositioned, isRelativePosition, isStaticLayout, logWarningIfGetNextRendererNotOverridden, move, noAbsolutePositionInfo, preparePositionedRendererAndAreaForLayout, processWaitingDrawing, rectangleToPointsList, removeAllChildRenderers, removeChildRenderer, replaceOwnProperty, resolveFirstPdfFont, resolveFirstPdfFont, retrieveHeight, retrieveMaxHeight, retrieveMaxWidth, retrieveMinHeight, retrieveMinWidth, retrieveUnitValue, retrieveUnitValue, retrieveWidth, returnBackOwnProperty, setBorders, setChildRenderer, setChildRenderers, setMinMaxWidthBasedOnFixedWidth, setParent, setProperty, setThisAsParent, shrinkOccupiedAreaForAbsolutePosition, toString, transformPoints, updateHeight, updateHeightsOnSplit, updateHeightsOnSplit, updateMaxHeight, updateMinHeight, updateWidth
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.itextpdf.layout.renderer.IRenderer
getNextRenderer
-
Constructor Details
-
BlockRenderer
Creates a BlockRenderer from its corresponding layout object.- Parameters:
modelElement
- theIElement
which this object should manage
-
-
Method Details
-
layout
This method simulates positioning of the renderer, including all of its children, and returns theLayoutResult
, representing the layout result, including occupied area, status, i.e. if there was enough place to fit the renderer subtree, etc.LayoutResult
can be extended to return custom layout results for custom elements, e.g.TextRenderer
usesTextLayoutResult
as its result. This method can be called standalone to learn how much area the renderer subtree needs, or can be called beforeIRenderer.draw(DrawContext)
, to prepare the renderer to be flushed to the output stream.- Parameters:
layoutContext
- the description of layout area and any other additional information- Returns:
- result of the layout process
-
draw
Description copied from class:AbstractRenderer
Flushes the renderer subtree contents, i.e. draws itself on canvas, adds necessary objects to thePdfDocument
etc.- Specified by:
draw
in interfaceIRenderer
- Overrides:
draw
in classAbstractRenderer
- Parameters:
drawContext
- contains thePdfDocument
to which the renderer subtree if flushed, thePdfCanvas
on which the renderer subtree is drawn and other additional parameters needed to perform drawing
-
getOccupiedAreaBBox
Description copied from class:AbstractRenderer
Gets the bounding box that contains all content written to theDrawContext
by thisIRenderer
.- Overrides:
getOccupiedAreaBBox
in classAbstractRenderer
- Returns:
- the smallest
Rectangle
that surrounds the content
-
createSplitRenderer
Creates a split renderer.- Parameters:
layoutResult
- the result of content layouting- Returns:
- a new
AbstractRenderer
instance
-
createOverflowRenderer
Creates an overflow renderer.- Parameters:
layoutResult
- the result of content layouting- Returns:
- a new
AbstractRenderer
instance
-
recalculateOccupiedAreaAfterChildLayout
-
startChildMarginsHandling
MarginsCollapseInfo startChildMarginsHandling(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) -
recalculateLayoutBoxBeforeChildLayout
-
createSplitAndOverflowRenderers
AbstractRenderer[] createSplitAndOverflowRenderers(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) -
applyVerticalAlignment
protected void applyVerticalAlignment()This method applies vertical alignment for the occupied area of the renderer and its children renderers. -
applyRotationLayout
This method rotates content of the renderer and calculates correct occupied area for the rotated element.- Parameters:
layoutBox
- aRectangle
-
createRotationTransformInsideOccupiedArea
This method createsAffineTransform
instance that could be used to rotate content inside the occupied area. Be aware that it should be used only after layout rendering is finished and correct occupied area for the rotated element is calculated.- Returns:
AffineTransform
that rotates the content and places it inside occupied area.
-
beginRotationIfApplied
This method starts rotation for the renderer if rotation angle property is specified.- Parameters:
canvas
- thePdfCanvas
to draw on
-
endRotationIfApplied
This method ends rotation for the renderer if applied.- Parameters:
canvas
- thePdfCanvas
to draw on
-
getResolvedFont
Get the font set in properties, if it is not set, then resolves the firstPdfFont
fromFontProvider
. IfFontProvider
is not set, then returns null.- Parameters:
pdfDocument
- thePdfDocument
to get default font from.- Returns:
- the font or null if it is not set and
FontProvider
is not set.
-
stopLayoutingChildrenIfChildResultNotFull
-
processNotFullChildResult
LayoutResult processNotFullChildResult(LayoutContext layoutContext, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers, boolean wasHeightClipped, List<Rectangle> floatRendererAreas, boolean marginsCollapsingEnabled, float clearHeightCorrection, Border[] borders, UnitValue[] paddings, List<Rectangle> areas, int currentAreaPos, Rectangle layoutBox, Set<Rectangle> nonChildFloatingRendererAreas, IRenderer causeOfNothing, boolean anythingPlaced, int childPos, LayoutResult result) -
decreaseLayoutBoxAfterChildPlacement
void decreaseLayoutBoxAfterChildPlacement(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) -
correctFixedLayout
-
applyWidth
-
applyMaxHeight
boolean applyMaxHeight(Rectangle parentBBox, Float blockMaxHeight, MarginsCollapseHandler marginsCollapseHandler, boolean isCellRenderer, boolean wasParentsHeightClipped, OverflowPropertyValue overflowY) -
applyMinHeight
-
fixOccupiedAreaIfOverflowedX
-
fixOccupiedAreaIfOverflowedY
-
getMinMaxWidth
Calculates min and max width values for current renderer.- Overrides:
getMinMaxWidth
in classAbstractRenderer
- Returns:
- instance of
MinMaxWidth
-
handleForcedPlacement
void handleForcedPlacement(boolean anythingPlaced) -
isAnythingOccupied
private boolean isAnythingOccupied() -
replaceSplitRendererKidFloats
-
addMarkedContent
-
clipPolygon
-
checkPointSide
-
getIntersectionPoint
-