Package org.apache.fop.area

Examples of org.apache.fop.area.LineArea


     */
    public void activateLayout() {
        startPageNum = pageSeq.getStartingPageNumber();
        currentPageNum = startPageNum - 1;

        LineArea title = null;

        if (pageSeq.getTitleFO() != null) {
            try {
                ContentLayoutManager clm = getLayoutManagerMaker().
                    makeContentLayoutManager(this, pageSeq.getTitleFO());
View Full Code Here


            addAttribute("country", pageSequence.getCountry());
        }
        transferForeignObjects(pageSequence);
        startElement("pageSequence", atts);
        handleExtensionAttachments(pageSequence.getExtensionAttachments());
        LineArea seqTitle = pageSequence.getTitle();
        if (seqTitle != null) {
            startElement("title");
            List children = seqTitle.getInlineAreas();

            for (int count = 0; count < children.size(); count++) {
                InlineArea inline = (InlineArea) children.get(count);
                renderInlineArea(inline);
            }
View Full Code Here

                containingBPPosition = contBP;
                containingIPPosition = contIP;
            } else {
                // a line area is rendered from the top left position
                // of the line, each inline object is offset from there
                LineArea line = (LineArea) obj;
                currentIPPosition = contIP
                        + parent.getStartIndent()
                        + line.getStartIndent();
                renderLineArea(line);
                //InlineArea child = (InlineArea) line.getInlineAreas().get(0);
                currentBPPosition += line.getAllocBPD();
            }
            currentIPPosition = saveIP;
        }
    }
View Full Code Here

                iCurrParIndex = lbp.iParIndex;
                KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(iCurrParIndex);
                int iStartElement = lbp.iStartIndex;
                int iEndElement = lbp.getLeafPos();
   
                LineArea lineArea = new LineArea((lbp.getLeafPos() < seq.size() - 1 ? textAlignment : textAlignmentLast),
                                                 lbp.difference, lbp.availableStretch, lbp.availableShrink);
                lineArea.setStartIndent(lbp.startIndent);
                lineArea.setBPD(lbp.lineHeight);
                lineArea.setIPD(lbp.lineWidth);
                lineArea.addTrait(Trait.SPACE_BEFORE, new Integer(lbp.spaceBefore));
                lineArea.addTrait(Trait.SPACE_AFTER, new Integer(lbp.spaceAfter));
                alignmentContext.resizeLine(lbp.lineHeight, lbp.baseline);

                if (seq instanceof Paragraph) {
                    Paragraph currPar = (Paragraph) seq;
                    // ignore the first elements added by the LineLayoutManager
                    iStartElement += (iStartElement == 0) ? currPar.ignoreAtStart : 0;
                   
                    // if this is the last line area that for this paragraph,
                    // ignore the last elements added by the LineLayoutManager and
                    // subtract the last-line-end-indent from the area ipd
                    if (iEndElement == (currPar.size() - 1)) {
                        iEndElement -= currPar.ignoreAtEnd;
                        lineArea.setIPD(lineArea.getIPD() - lastLineEndIndent.getValue(this));
                    }
                }
               
                // ignore the last element in the line if it is a KnuthGlue object
                seqIterator = seq.listIterator(iEndElement);
                tempElement = (KnuthElement) seqIterator.next();
                if (tempElement.isGlue()) {
                    iEndElement--;
                    // this returns the same KnuthElement
                    seqIterator.previous();
                    tempElement = (KnuthElement) seqIterator.previous();
                }
                lastLM = tempElement.getLayoutManager();
   
                // ignore KnuthGlue and KnuthPenalty objects
                // at the beginning of the line
                seqIterator = seq.listIterator(iStartElement);
                tempElement = (KnuthElement) seqIterator.next();
                while (!tempElement.isBox() && seqIterator.hasNext()) {
                    tempElement = (KnuthElement) seqIterator.next();
                    iStartElement++;
                }
   
                // Add the inline areas to lineArea
                PositionIterator inlinePosIter
                    = new KnuthPossPosIter(seq, iStartElement,
                                           iEndElement + 1);
   
                iStartElement = lbp.getLeafPos() + 1;
                if (iStartElement == seq.size()) {
                    // advance to next paragraph
                    iStartElement = 0;
                }
   
                lc.setSpaceAdjust(lbp.dAdjust);
                lc.setIPDAdjust(lbp.ipdAdjust);
                lc.setLeadingSpace(new SpaceSpecifier(true));
                lc.setTrailingSpace(new SpaceSpecifier(false));
                lc.setFlags(LayoutContext.RESOLVE_LEADING_SPACE, true);

                /* extension (not in the XSL FO recommendation): if the left and right margins
                   have been optimized, recompute indents and / or adjust ratio, according
                   to the paragraph horizontal alignment */
                if (false && textAlignment == EN_JUSTIFY) {
                    // re-compute space adjust ratio
                    int updatedDifference = context.getStackLimit().opt - lbp.lineWidth + lbp.difference;
                    double updatedRatio = 0.0;
                    if (updatedDifference > 0) {
                        updatedRatio = (float) updatedDifference / lbp.availableStretch;
                    } else if (updatedDifference < 0) {
                        updatedRatio = (float) updatedDifference / lbp.availableShrink;
                    }
                    lc.setIPDAdjust(updatedRatio);
                    //log.debug("LLM.addAreas> old difference = " + lbp.difference + " new difference = " + updatedDifference);
                    //log.debug("              old ratio = " + lbp.ipdAdjust + " new ratio = " + updatedRatio);
                } else if (false && textAlignment == EN_CENTER) {
                    // re-compute indent
                    int updatedIndent = lbp.startIndent
                                            + (context.getStackLimit().opt - lbp.lineWidth) / 2;
                    lineArea.setStartIndent(updatedIndent);
                } else if (false && textAlignment == EN_END) {
                    // re-compute indent
                    int updatedIndent = lbp.startIndent
                                            + (context.getStackLimit().opt - lbp.lineWidth);
                    lineArea.setStartIndent(updatedIndent);
                }

                setCurrentArea(lineArea);
                setChildContext(lc);
                while ((childLM = inlinePosIter.getNextChildLM()) != null) {
                    lc.setFlags(LayoutContext.LAST_AREA, (childLM == lastLM));
                    childLM.addAreas(inlinePosIter, lc);
                    lc.setLeadingSpace(lc.getTrailingSpace());
                    lc.setTrailingSpace(new SpaceSpecifier(false));
                }
               
                // when can this be null?
                // if display-align is distribute, add space after
                if (context.getSpaceAfter() > 0
                    && (!context.isLastArea() || parentIter.hasNext())) {
                    lineArea.setBPD(lineArea.getBPD() + context.getSpaceAfter());
                }
                lineArea.finalize();
                parentLM.addChildArea(lineArea);
            } else if (pos instanceof NonLeafPosition) {
                // Nested block-level content;
                // go down the LM stack again;
                // collect all consecutive NonLeafPosition objects,
                // "unwrap" them and put the child positions in a new list.
                LinkedList positionList = new LinkedList();
                Position innerPosition;
                innerPosition = ((NonLeafPosition) pos).getPosition();
                positionList.add(innerPosition);
                while (parentIter.hasNext()) {
                    pos = (Position)parentIter.peekNext();
                    if (!(pos instanceof NonLeafPosition)) {
                        break;
                    }
                    pos = (Position) parentIter.next();
                    innerPosition = ((NonLeafPosition) pos).getPosition();
                    positionList.add(innerPosition);
                }
               
                // do we have the last LM?
                LayoutManager lastLM = null;
                if (!parentIter.hasNext()) {
                    lastLM = innerPosition.getLM();
                }

                // this may be wrong; not all areas belong inside a single line area
                // see InlineStackingLM.addChildArea
                LineArea lineArea = new LineArea();
                setCurrentArea(lineArea);
                setChildContext(lc);

                PositionIterator childPosIter = new StackingIter(positionList.listIterator());
                LayoutContext blocklc = new LayoutContext(0);
                blocklc.setLeadingSpace(new SpaceSpecifier(true));
                blocklc.setTrailingSpace(new SpaceSpecifier(false));
                blocklc.setFlags(LayoutContext.RESOLVE_LEADING_SPACE, true);
                while ((childLM = childPosIter.getNextChildLM()) != null) {
                    // set last area flag
                    blocklc.setFlags(LayoutContext.LAST_AREA,
                            (context.isLastArea() && childLM == lastLM));
                    blocklc.setStackLimit(context.getStackLimit());
                    // Add the line areas to Area
                    childLM.addAreas(childPosIter, blocklc);
                    blocklc.setLeadingSpace(blocklc.getTrailingSpace());
                    blocklc.setTrailingSpace(new SpaceSpecifier(false));
                }
                lineArea.updateExtentsFromChildren();
                parentLM.addChildArea(lineArea);
            } else {
                // pos was the Position inside a penalty item, nothing to do
            }
        }
View Full Code Here

     */
    public void activateLayout() {
        startPageNum = pageSeq.getStartingPageNumber();
        currentPageNum = startPageNum - 1;

        LineArea title = null;

        if (pageSeq.getTitleFO() != null) {
            ContentLayoutManager clm = new ContentLayoutManager(pageSeq
                    .getTitleFO(), this);
            title = (LineArea) clm.getParentArea(null);
View Full Code Here

                containingBPPosition = contBP;
                containingIPPosition = contIP;
            } else {
                // a line area is rendered from the top left position
                // of the line, each inline object is offset from there
                LineArea line = (LineArea) obj;
                currentIPPosition = contIP
                        + parent.getStartIndent()
                        + line.getStartIndent();
                renderLineArea(line);
                //InlineArea child = (InlineArea) line.getInlineAreas().get(0);
                currentBPPosition += line.getAllocBPD();
            }
            currentIPPosition = saveIP;
        }
    }
View Full Code Here

     */
    public void activateLayout() {
        startPageNum = pageSeq.getStartingPageNumber();
        currentPageNum = startPageNum - 1;

        LineArea title = null;

        if (pageSeq.getTitleFO() != null) {
            ContentLayoutManager clm = new ContentLayoutManager(pageSeq
                    .getTitleFO(), this);
            title = (LineArea) clm.getParentArea(null);
View Full Code Here

     * PageSequenceLayoutManager parent.
     */
    public ContentLayoutManager(Title foTitle, PageSequenceLayoutManager pslm) {
        // get breaks then add areas to title
        this.parentLM = pslm;
        holder = new LineArea();

        //        setUserAgent(foTitle.getUserAgent());

        // use special layout manager to add the inline areas
        // to the Title.
View Full Code Here

                LineBreakPosition lbp = (LineBreakPosition) pos;
                iCurrParIndex = lbp.iParIndex;
                KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(iCurrParIndex);
                iEndElement = lbp.getLeafPos();
   
                LineArea lineArea = new LineArea((lbp.getLeafPos() < seq.size() - 1 ? textAlignment : textAlignmentLast),
                                                 lbp.difference, lbp.availableStretch, lbp.availableShrink);
                lineArea.setStartIndent(lbp.startIndent);
                lineArea.setBPD(lbp.lineHeight);
                lineArea.setIPD(lbp.lineWidth);
                lineArea.addTrait(Trait.SPACE_BEFORE, new Integer(lbp.spaceBefore));
                lineArea.addTrait(Trait.SPACE_AFTER, new Integer(lbp.spaceAfter));
                alignmentContext.resizeLine(lbp.lineHeight, lbp.baseline);

                if (seq instanceof Paragraph) {
                    Paragraph currPar = (Paragraph) seq;
                    // ignore the first elements added by the LineLayoutManager
                    iStartElement += (iStartElement == 0) ? currPar.ignoreAtStart : 0;
                   
                    // if this is the last line area that for this paragraph,
                    // ignore the last elements added by the LineLayoutManager and
                    // subtract the last-line-end-indent from the area ipd
                    if (iEndElement == (currPar.size() - 1)) {
                        iEndElement -= currPar.ignoreAtEnd;
                        lineArea.setIPD(lineArea.getIPD() - lastLineEndIndent.getValue(this));
                    }
                }
               
                // ignore the last element in the line if it is a KnuthGlue object
                seqIterator = seq.listIterator(iEndElement);
                tempElement = (KnuthElement) seqIterator.next();
                if (tempElement.isGlue()) {
                    iEndElement--;
                    // this returns the same KnuthElement
                    seqIterator.previous();
                    tempElement = (KnuthElement) seqIterator.previous();
                }
                lastLM = tempElement.getLayoutManager();
   
                // ignore KnuthGlue and KnuthPenalty objects
                // at the beginning of the line
                seqIterator = seq.listIterator(iStartElement);
                tempElement = (KnuthElement) seqIterator.next();
                while (!tempElement.isBox() && seqIterator.hasNext()) {
                    tempElement = (KnuthElement) seqIterator.next();
                    iStartElement++;
                }
   
                // Add the inline areas to lineArea
                PositionIterator inlinePosIter
                    = new KnuthPossPosIter(seq, iStartElement,
                                           iEndElement + 1);
   
                iStartElement = lbp.getLeafPos() + 1;
                if (iStartElement == seq.size()) {
                    // advance to next paragraph
                    iStartElement = 0;
                }
   
                lc.setSpaceAdjust(lbp.dAdjust);
                lc.setIPDAdjust(lbp.ipdAdjust);
                lc.setLeadingSpace(new SpaceSpecifier(true));
                lc.setTrailingSpace(new SpaceSpecifier(false));
                lc.setFlags(LayoutContext.RESOLVE_LEADING_SPACE, true);

                /* extension (not in the XSL FO recommendation): if the left and right margins
                   have been optimized, recompute indents and / or adjust ratio, according
                   to the paragraph horizontal alignment */
                if (false && textAlignment == EN_JUSTIFY) {
                    // re-compute space adjust ratio
                    int updatedDifference = context.getStackLimit().opt - lbp.lineWidth + lbp.difference;
                    double updatedRatio = 0.0;
                    if (updatedDifference > 0) {
                        updatedRatio = (float) updatedDifference / lbp.availableStretch;
                    } else if (updatedDifference < 0) {
                        updatedRatio = (float) updatedDifference / lbp.availableShrink;
                    }
                    lc.setIPDAdjust(updatedRatio);
                    //log.debug("LLM.addAreas> old difference = " + lbp.difference + " new difference = " + updatedDifference);
                    //log.debug("              old ratio = " + lbp.ipdAdjust + " new ratio = " + updatedRatio);
                } else if (false && textAlignment == EN_CENTER) {
                    // re-compute indent
                    int updatedIndent = lbp.startIndent
                                            + (context.getStackLimit().opt - lbp.lineWidth) / 2;
                    lineArea.setStartIndent(updatedIndent);
                } else if (false && textAlignment == EN_END) {
                    // re-compute indent
                    int updatedIndent = lbp.startIndent
                                            + (context.getStackLimit().opt - lbp.lineWidth);
                    lineArea.setStartIndent(updatedIndent);
                }

                setCurrentArea(lineArea);
                setChildContext(lc);
                while ((childLM = inlinePosIter.getNextChildLM()) != null) {
                    lc.setFlags(LayoutContext.LAST_AREA, (childLM == lastLM));
                    childLM.addAreas(inlinePosIter, lc);
                    lc.setLeadingSpace(lc.getTrailingSpace());
                    lc.setTrailingSpace(new SpaceSpecifier(false));
                }
               
                // when can this be null?
                // if display-align is distribute, add space after
                if (context.getSpaceAfter() > 0
                    && (!context.isLastArea() || parentIter.hasNext())) {
                    lineArea.setBPD(lineArea.getBPD() + context.getSpaceAfter());
                }
                lineArea.finalize();
                parentLM.addChildArea(lineArea);
            } else if (pos instanceof NonLeafPosition) {
                // Nested block-level content;
                // go down the LM stack again;
                // collect all consecutive NonLeafPosition objects,
                // "unwrap" them and put the child positions in a new list.
                LinkedList positionList = new LinkedList();
                Position innerPosition;
                innerPosition = ((NonLeafPosition) pos).getPosition();
                positionList.add(innerPosition);
                while (parentIter.hasNext()) {
                    pos = (Position)parentIter.peekNext();
                    if (!(pos instanceof NonLeafPosition)) {
                        break;
                    }
                    pos = (Position) parentIter.next();
                    innerPosition = ((NonLeafPosition) pos).getPosition();
                    positionList.add(innerPosition);
                }
               
                // do we have the last LM?
                LayoutManager lastLM = null;
                if (!parentIter.hasNext()) {
                    lastLM = innerPosition.getLM();
                }

                // this may be wrong; not all areas belong inside a single line area
                // see InlineStackingLM.addChildArea
                LineArea lineArea = new LineArea();
                setCurrentArea(lineArea);
                setChildContext(lc);

                PositionIterator childPosIter = new StackingIter(positionList.listIterator());
                LayoutContext blocklc = new LayoutContext(0);
                blocklc.setLeadingSpace(new SpaceSpecifier(true));
                blocklc.setTrailingSpace(new SpaceSpecifier(false));
                blocklc.setFlags(LayoutContext.RESOLVE_LEADING_SPACE, true);
                while ((childLM = childPosIter.getNextChildLM()) != null) {
                    // set last area flag
                    blocklc.setFlags(LayoutContext.LAST_AREA,
                            (context.isLastArea() && childLM == lastLM));
                    blocklc.setStackLimit(context.getStackLimit());
                    // Add the line areas to Area
                    childLM.addAreas(childPosIter, blocklc);
                    blocklc.setLeadingSpace(blocklc.getTrailingSpace());
                    blocklc.setTrailingSpace(new SpaceSpecifier(false));
                }
                lineArea.updateExtentsFromChildren();
                parentLM.addChildArea(lineArea);
            } else {
                // pos was the Position inside a penalty item, nothing to do
            }
        }
View Full Code Here

TOP

Related Classes of org.apache.fop.area.LineArea

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.