bckfnn 2004/10/19 14:51:54 Modified: src/java/org/apache/fop/layoutmgr InlineStackingLayoutManager.java Added: src/java/org/apache/fop/layoutmgr InlineLayoutManager.java Log: Third phase of performance improvement. - Split the border/padding features of InlineStackingLM out into a InlineLM which is the LM for fo:inline. PR: 31699 Revision Changes Path 1.13 +5 -41 xml-fop/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java Index: InlineStackingLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- InlineStackingLayoutManager.java 22 Sep 2004 08:24:32 -0000 1.12 +++ InlineStackingLayoutManager.java 19 Oct 2004 21:51:54 -0000 1.13 @@ -26,8 +26,6 @@ import org.apache.fop.fo.FObj; import org.apache.fop.fo.PropertyManager; -import org.apache.fop.fo.properties.CommonBorderAndPadding; -import org.apache.fop.fo.properties.CommonBackground; import org.apache.fop.traits.InlineProps; import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; @@ -66,12 +64,10 @@ /** * Size of border and padding in BPD (ie, before and after). */ - private MinOptMax extraBPD; + protected MinOptMax extraBPD; private InlineProps inlineProps = null; - private CommonBorderAndPadding borderProps = null; - private CommonBackground backgroundProps; private Area currentArea; // LineArea or InlineParent @@ -103,16 +99,7 @@ protected void initProperties() { PropertyManager pm = fobj.getPropertyManager(); inlineProps = pm.getInlineProps(); - borderProps = pm.getBorderAndPadding(); - // Calculdate border and padding size in BPD - int iPad = borderProps.getPadding(CommonBorderAndPadding.BEFORE, false); - iPad += borderProps.getBorderWidth(CommonBorderAndPadding.BEFORE, - false); - iPad += borderProps.getPadding(CommonBorderAndPadding.AFTER, false); - iPad += borderProps.getBorderWidth(CommonBorderAndPadding.AFTER, false); - extraBPD = new MinOptMax(iPad); - - backgroundProps = pm.getBackgroundProps(); + extraBPD = new MinOptMax(0); } /** @@ -135,28 +122,16 @@ } private MinOptMax getExtraIPD(boolean bNotFirst, boolean bNotLast) { - int iBP = borderProps.getPadding(CommonBorderAndPadding.START, - bNotFirst); - iBP += borderProps.getBorderWidth(CommonBorderAndPadding.START, - bNotFirst); - iBP += borderProps.getPadding(CommonBorderAndPadding.END, bNotLast); - iBP += borderProps.getBorderWidth(CommonBorderAndPadding.END, bNotLast); - return new MinOptMax(iBP); + return new MinOptMax(0); } protected boolean hasLeadingFence(boolean bNotFirst) { - int iBP = borderProps.getPadding(CommonBorderAndPadding.START, - bNotFirst); - iBP += borderProps.getBorderWidth(CommonBorderAndPadding.START, - bNotFirst); - return (iBP > 0); + return false; } protected boolean hasTrailingFence(boolean bNotLast) { - int iBP = borderProps.getPadding(CommonBorderAndPadding.END, bNotLast); - iBP += borderProps.getBorderWidth(CommonBorderAndPadding.END, bNotLast); - return (iBP > 0); + return false; } /** @@ -519,17 +494,6 @@ // Add own trailing space to parent context (or set on area?) if (context.getTrailingSpace() != null) { context.getTrailingSpace().addSpace(inlineProps.spaceEnd); - } - - // Add border and padding to current area and set flags (FIRST, LAST ...) - TraitSetter.setBorderPaddingTraits(getCurrentArea(), - borderProps, bAreaCreated, !bIsLast); - - if (borderProps != null) { - TraitSetter.addBorders(getCurrentArea(), borderProps); - } - if (backgroundProps != null) { - TraitSetter.addBackground(getCurrentArea(), backgroundProps); } parentLM.addChild(getCurrentArea()); 1.1 xml-fop/src/java/org/apache/fop/layoutmgr/InlineLayoutManager.java Index: InlineLayoutManager.java =================================================================== /* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* $Id: InlineLayoutManager.java,v 1.1 2004/10/19 21:51:54 bckfnn Exp $ */ package org.apache.fop.layoutmgr; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; import org.apache.fop.fo.properties.CommonMarginInline; import org.apache.fop.fo.properties.SpaceProperty; import org.apache.fop.traits.MinOptMax; import org.apache.fop.traits.SpaceVal; /** * LayoutManager for objects which stack children in the inline direction, * such as Inline or Line */ public class InlineLayoutManager extends InlineStackingLayoutManager { private Inline fobj; private CommonMarginInline inlineProps = null; private CommonBorderPaddingBackground borderProps = null; /** * Create an inline layout manager. * This is used for fo's that create areas that * contain inline areas. * * @param node the formatting object that creates the area */ public InlineLayoutManager(Inline node) { super(node); fobj = node; } /** * @see org.apache.fop.layoutmgr.AbstractLayoutManager#initProperties() */ protected void initProperties() { super.initProperties(); inlineProps = fobj.getCommonMarginInline(); borderProps = fobj.getCommonBorderPaddingBackground(); int iPad = borderProps.getPadding(CommonBorderPaddingBackground.BEFORE, false); iPad += borderProps.getBorderWidth(CommonBorderPaddingBackground.BEFORE, false); iPad += borderProps.getPadding(CommonBorderPaddingBackground.AFTER, false); iPad += borderProps.getBorderWidth(CommonBorderPaddingBackground.AFTER, false); extraBPD = new MinOptMax(iPad); } protected MinOptMax getExtraIPD(boolean bNotFirst, boolean bNotLast) { int iBP = borderProps.getPadding(CommonBorderPaddingBackground.START, bNotFirst); iBP += borderProps.getBorderWidth(CommonBorderPaddingBackground.START, bNotFirst); iBP += borderProps.getPadding(CommonBorderPaddingBackground.END, bNotLast); iBP += borderProps.getBorderWidth(CommonBorderPaddingBackground.END, bNotLast); return new MinOptMax(iBP); } protected boolean hasLeadingFence(boolean bNotFirst) { int iBP = borderProps.getPadding(CommonBorderPaddingBackground.START, bNotFirst); iBP += borderProps.getBorderWidth(CommonBorderPaddingBackground.START, bNotFirst); return (iBP > 0); } protected boolean hasTrailingFence(boolean bNotLast) { int iBP = borderProps.getPadding(CommonBorderPaddingBackground.END, bNotLast); iBP += borderProps.getBorderWidth(CommonBorderPaddingBackground.END, bNotLast); return (iBP > 0); } protected SpaceProperty getSpaceStart() { return inlineProps.spaceStart; } protected SpaceProperty getSpaceEnd() { return inlineProps.spaceEnd; } /** * Return value indicating whether the next area to be generated could * start a new line. This should only be called in the "START" condition * if a previous inline BP couldn't end the line. * Return true if any space-start, border-start or padding-start, else * propagate to first child LM */ public boolean canBreakBefore(LayoutContext context) { if (new SpaceVal(inlineProps.spaceStart).getSpace().min > 0 || hasLeadingFence(false)) { return true; } return super.canBreakBefore(context); } protected void setTraits(boolean bNotFirst, boolean bNotLast) { // Add border and padding to current area and set flags (FIRST, LAST ...) TraitSetter.setBorderPaddingTraits(getCurrentArea(), borderProps, bNotFirst, bNotLast); if (borderProps != null) { TraitSetter.addBorders(getCurrentArea(), borderProps); TraitSetter.addBackground(getCurrentArea(), borderProps); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]