public RelayoutDataList(int size) { _hints = new ArrayList(size); for (int i = 0; i < size; i++) { _hints.add(new RelayoutData()); } }
public int getRunStart(int runEnd) { int offset = runEnd; RelayoutData current = get(offset); if (! current.isEndsRun()) { throw new RuntimeException("Not the end of a run"); } while (! current.isStartsRun()) { current = get(--offset); } return offset; } }
if (c.isPrint()) { relayoutData = relayoutDataList.get(offset); relayoutData.setLayoutState(c.copyStateForRelayout()); relayoutData.setChildOffset(childOffset); pageCount = c.getRootLayer().getPages().size(); relayoutData == null ? null : relayoutData.getLayoutState()); boolean keepWithInline = child.isNeedsKeepWithInline(c); if (tryToAvoidPageBreak || needPageClear || keepWithInline) { c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, true, childOffset, pageCount, relayoutData.getLayoutState()); c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, false, childOffset, pageCount, relayoutData.getLayoutState());
if (c.isPrint()) { relayoutData = relayoutDataList.get(offset); relayoutData.setLayoutState(c.copyStateForRelayout()); relayoutData.setChildOffset(childOffset); pageCount = c.getRootLayer().getPages().size(); relayoutData == null ? null : relayoutData.getLayoutState()); boolean keepWithInline = child.isNeedsKeepWithInline(c); if (tryToAvoidPageBreak || needPageClear || keepWithInline) { c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, true, childOffset, pageCount, relayoutData.getLayoutState()); c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, false, childOffset, pageCount, relayoutData.getLayoutState());
private static int relayoutRun( LayoutContext c, List localChildren, BlockBox block, RelayoutDataList relayoutDataList, int start, int end, boolean onNewPage) { int childOffset = relayoutDataList.get(start).getChildOffset(); c.restoreStateForRelayout(relayoutData.getLayoutState()); relayoutData.setChildOffset(childOffset); boolean mayCheckKeepTogether = false; if ((child.getStyle().isAvoidPageBreakInside() || child.getStyle().isKeepWithInline()) c, block, child, false, childOffset, NO_PAGE_TRIM, relayoutData.getLayoutState()); boolean keepWithInline = child.isNeedsKeepWithInline(c); if (tryToAvoidPageBreak || needPageClear || keepWithInline) { c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, true, childOffset, pageCount, relayoutData.getLayoutState()); c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, false, childOffset, pageCount, relayoutData.getLayoutState());
private static int relayoutRun( LayoutContext c, List localChildren, BlockBox block, RelayoutDataList relayoutDataList, int start, int end, boolean onNewPage) { int childOffset = relayoutDataList.get(start).getChildOffset(); c.restoreStateForRelayout(relayoutData.getLayoutState()); relayoutData.setChildOffset(childOffset); boolean mayCheckKeepTogether = false; if ((child.getStyle().isAvoidPageBreakInside() || child.getStyle().isKeepWithInline()) c, block, child, false, childOffset, NO_PAGE_TRIM, relayoutData.getLayoutState()); boolean keepWithInline = child.isNeedsKeepWithInline(c); if (tryToAvoidPageBreak || needPageClear || keepWithInline) { c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, true, childOffset, pageCount, relayoutData.getLayoutState()); c.restoreStateForRelayout(relayoutData.getLayoutState()); child.reset(c); layoutBlockChild( c, block, child, false, childOffset, pageCount, relayoutData.getLayoutState());
boolean mightNeedRelayout = false; int runEnd = -1; if (offset == localChildren.size() - 1 && relayoutData.isEndsRun()) { mightNeedRelayout = true; runEnd = offset; } else if (offset > 0) { RelayoutData previousRelayoutData = relayoutDataList.get(offset - 1); if (previousRelayoutData.isEndsRun()) { mightNeedRelayout = true; runEnd = offset - 1;
boolean mightNeedRelayout = false; int runEnd = -1; if (offset == localChildren.size() - 1 && relayoutData.isEndsRun()) { mightNeedRelayout = true; runEnd = offset; } else if (offset > 0) { RelayoutData previousRelayoutData = relayoutDataList.get(offset - 1); if (previousRelayoutData.isEndsRun()) { mightNeedRelayout = true; runEnd = offset - 1;
public void markRun(int offset, BlockBox previous, BlockBox current) { RelayoutData previousData = get(offset - 1); RelayoutData currentData = get(offset); IdentValue previousAfter = previous.getStyle().getIdent(CSSName.PAGE_BREAK_AFTER); IdentValue currentBefore = current.getStyle().getIdent(CSSName.PAGE_BREAK_BEFORE); if ((previousAfter == IdentValue.AVOID && currentBefore == IdentValue.AUTO) || (previousAfter == IdentValue.AUTO && currentBefore == IdentValue.AVOID) || (previousAfter == IdentValue.AVOID && currentBefore == IdentValue.AVOID)) { if (! previousData.isInRun()) { previousData.setStartsRun(true); } previousData.setInRun(true); currentData.setInRun(true); if (offset == _hints.size() - 1) { currentData.setEndsRun(true); } } else { if (previousData.isInRun()) { previousData.setEndsRun(true); } } }
public void markRun(int offset, BlockBox previous, BlockBox current) { RelayoutData previousData = get(offset - 1); RelayoutData currentData = get(offset); IdentValue previousAfter = previous.getStyle().getIdent(CSSName.PAGE_BREAK_AFTER); IdentValue currentBefore = current.getStyle().getIdent(CSSName.PAGE_BREAK_BEFORE); if ((previousAfter == IdentValue.AVOID && currentBefore == IdentValue.AUTO) || (previousAfter == IdentValue.AUTO && currentBefore == IdentValue.AVOID) || (previousAfter == IdentValue.AVOID && currentBefore == IdentValue.AVOID)) { if (! previousData.isInRun()) { previousData.setStartsRun(true); } previousData.setInRun(true); currentData.setInRun(true); if (offset == _hints.size() - 1) { currentData.setEndsRun(true); } } else { if (previousData.isInRun()) { previousData.setEndsRun(true); } } }
public int getRunStart(int runEnd) { int offset = runEnd; RelayoutData current = get(offset); if (! current.isEndsRun()) { throw new RuntimeException("Not the end of a run"); } while (! current.isStartsRun()) { current = get(--offset); } return offset; } }
public RelayoutDataList(int size) { _hints = new ArrayList(size); for (int i = 0; i < size; i++) { _hints.add(new RelayoutData()); } }