private void saveRangeData( CssContext c, Box container, List blockContent, List inlineContent, BoxRangeLists rangeLists, boolean isBlock, int blockStart, int inlineStart, int blockRangeStart, int inlineRangeStart) { if (isBlock && c instanceof RenderingContext) { BlockBox blockBox = (BlockBox)container; if (blockBox.isNeedsClipOnPaint((RenderingContext)c)) { int blockEnd = blockContent.size(); if (blockStart != blockEnd) { BoxRange range = new BoxRange(blockStart, blockEnd); rangeLists.getBlock().add(blockRangeStart, new BoxRangeData(blockBox, range)); } int inlineEnd = inlineContent.size(); if (inlineStart != inlineEnd) { BoxRange range = new BoxRange(inlineStart, inlineEnd); rangeLists.getInline().add(inlineRangeStart, new BoxRangeData(blockBox, range)); } } } }
BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); box.paintListMarker(c); helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); } private void paintReplacedElements(RenderingContext c, List blocks, BoxRangeLists rangeLists) {
BoxRangeLists rangeLists = new BoxRangeLists(); List blocks = new ArrayList(); List lines = new ArrayList(); BoxCollector collector = new BoxCollector(); collector.collect(c, c.getOutputDevice().getClip(), this, startingPoint, blocks, lines, rangeLists); Map collapsedTableBorders = collectCollapsedTableBorders(c, blocks); paintBackgroundsAndBorders(c, blocks, collapsedTableBorders, rangeLists); paintListMarkers(c, blocks, rangeLists); paintInlineContent(c, lines, rangeLists); paintSelection(c, lines); // XXX only do when there is a selection paintReplacedElements(c, blocks, rangeLists); } private void paintListMarkers(RenderingContext c, List blocks, BoxRangeLists rangeLists) {
private void paintInlineContent(RenderingContext c, List lines, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper( c.getOutputDevice(), rangeLists.getInline()); for (int i = 0; i < lines.size(); i++) { helper.popClipRegions(c, i); helper.pushClipRegion(c, i); InlinePaintable paintable = (InlinePaintable)lines.get(i); paintable.paintInline(c); } helper.popClipRegions(c, lines.size()); }
private void paintListMarkers(RenderingContext c, List blocks, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); box.paintListMarker(c); helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); }
public void paintAsLayer(RenderingContext c, BlockBox startingPoint) { BoxRangeLists rangeLists = new BoxRangeLists(); List blocks = new ArrayList(); List lines = new ArrayList(); BoxCollector collector = new BoxCollector(); collector.collect(c, c.getOutputDevice().getClip(), this, startingPoint, blocks, lines, rangeLists); Map collapsedTableBorders = collectCollapsedTableBorders(c, blocks); paintBackgroundsAndBorders(c, blocks, collapsedTableBorders, rangeLists); paintListMarkers(c, blocks, rangeLists); paintInlineContent(c, lines, rangeLists); paintSelection(c, lines); // XXX only do when there is a selection paintReplacedElements(c, blocks, rangeLists); }
private void paintInlineContent(RenderingContext c, List lines, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper( c.getOutputDevice(), rangeLists.getInline()); for (int i = 0; i < lines.size(); i++) { helper.popClipRegions(c, i); helper.pushClipRegion(c, i); InlinePaintable paintable = (InlinePaintable)lines.get(i); paintable.paintInline(c); } helper.popClipRegions(c, lines.size()); }
private void saveRangeData( CssContext c, Box container, List blockContent, List inlineContent, BoxRangeLists rangeLists, boolean isBlock, int blockStart, int inlineStart, int blockRangeStart, int inlineRangeStart) { if (isBlock && c instanceof RenderingContext) { BlockBox blockBox = (BlockBox)container; if (blockBox.isNeedsClipOnPaint((RenderingContext)c)) { int blockEnd = blockContent.size(); if (blockStart != blockEnd) { BoxRange range = new BoxRange(blockStart, blockEnd); rangeLists.getBlock().add(blockRangeStart, new BoxRangeData(blockBox, range)); } int inlineEnd = inlineContent.size(); if (inlineStart != inlineEnd) { BoxRange range = new BoxRange(inlineStart, inlineEnd); rangeLists.getInline().add(inlineRangeStart, new BoxRangeData(blockBox, range)); } } } }
private void paintReplacedElements(RenderingContext c, List blocks, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); if (box.isReplaced()) { paintReplacedElement(c, box); } helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); }
paintReplacedElement(c, (BlockBox)getMaster()); } else { BoxRangeLists rangeLists = new BoxRangeLists();
BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); if (box.isReplaced()) { paintReplacedElement(c, box); } helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); } private void positionFixedLayer(RenderingContext c) {
paintReplacedElement(c, (BlockBox)getMaster()); } else { BoxRangeLists rangeLists = new BoxRangeLists();
private void paintBackgroundsAndBorders( RenderingContext c, List blocks, Map collapsedTableBorders, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); box.paintBackground(c); box.paintBorder(c); if (c.debugDrawBoxes()) { box.paintDebugOutline(c); } if (collapsedTableBorders != null && box instanceof TableCellBox) { TableCellBox cell = (TableCellBox)box; if (cell.hasCollapsedPaintingBorder()) { List borders = (List)collapsedTableBorders.get(cell); if (borders != null) { paintCollapsedTableBorders(c, borders); } } } helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); }
private void paintBackgroundsAndBorders( RenderingContext c, List blocks, Map collapsedTableBorders, BoxRangeLists rangeLists) { BoxRangeHelper helper = new BoxRangeHelper(c.getOutputDevice(), rangeLists.getBlock()); for (int i = 0; i < blocks.size(); i++) { helper.popClipRegions(c, i); BlockBox box = (BlockBox)blocks.get(i); box.paintBackground(c); box.paintBorder(c); if (c.debugDrawBoxes()) { box.paintDebugOutline(c); } if (collapsedTableBorders != null && box instanceof TableCellBox) { TableCellBox cell = (TableCellBox)box; if (cell.hasCollapsedPaintingBorder()) { List borders = (List)collapsedTableBorders.get(cell); if (borders != null) { paintCollapsedTableBorders(c, borders); } } } helper.pushClipRegion(c, i); } helper.popClipRegions(c, blocks.size()); }