private void alignLineAreas(BlockArea b, LayoutState ls) { BlockAlignment alignment = ls.getReferenceAlignment(); ReferenceArea r = ls.getReferenceArea(); double measure = r.isVertical() ? r.getWidth() : r.getHeight(); double consumed = 0; int numChildren = 0; for (AreaNode c : b.getChildren()) { consumed += c.getBPD(); ++numChildren; } double available = measure - consumed; if (available > 0) { if (alignment == BlockAlignment.BEFORE) { // no-op } else if (alignment == BlockAlignment.AFTER) { // no-op } else if (alignment == BlockAlignment.CENTER) { // no-op } else { justifyLineAreas(b, measure, consumed, numChildren, alignment); } } else if (available < 0) { b.setOverflow(-available); } }
private void alignBlockAreas(ReferenceArea r, BlockAlignment alignment) { double measure = r.isVertical() ? r.getWidth() : r.getHeight(); double consumed = 0; for (AreaNode c : r.getChildren()) { consumed += c.getBPD(); } double available = measure - consumed; if (available > 0) { if (alignment == BlockAlignment.BEFORE) { AreaNode a = new BlockFillerArea(r.getElement(), 0, available); r.addChild(a, null); } else if (alignment == BlockAlignment.AFTER) { AreaNode a = new BlockFillerArea(r.getElement(), 0, available); r.insertChild(a, r.firstChild(), null); } else if (alignment == BlockAlignment.CENTER) { double half = available / 2; AreaNode a1 = new BlockFillerArea(r.getElement(), 0, half); AreaNode a2 = new BlockFillerArea(r.getElement(), 0, half); r.insertChild(a1, r.firstChild(), null); r.insertChild(a2, null, null); } else { // no-op } } else if (available < 0) { r.setOverflow(-available); } }