--- [EMAIL PROTECTED] wrote:
>
>   -    private void createSpan(int numCols) {
>   +    /**
>   +     * Creates a new span reference area.
>   +     * @param bodyRegion The region-body to
> create the span for
>   +     * @param spanned true if a spanned region
> should be created
>   +     */
>   +    private void createSpan(BodyRegion
> bodyRegion, boolean spanned) {


Jeremias, I would like to move the initialization of
the Span's columns/normal-flow-reference-areas to the
Span class directly.  The Span constructor will take
three parameters: #columns, column gap, and totalIPD,
instead of its current two, and automatically make
those columns/NFRAs using the calculations you have
here in PSLM.

As a result, we will no longer be creating the
n-f-r-a's within PSLM directly (no more
Span.addAdditionalNormalFlow() calls) because they
will all be created by Span at one time.  When one
column is finished, we just have curFlow point to the
next one in the Span.

Next, within PSLM, instead of a curFlow variable, we
have a int curFlowIdx variable that points to the
zero-based column within the Span currently being
filled.  i.e.,
curSpan.getNormalFlow/Column(curFlowIdx).  This
reduces the chances of curFlow accidentally pointing
to a different Span object's columns.  curFlowIdx
would get incremented each time a column is filled,
and when done a new page is created (or the
page-breaking strategy is activated, etc.)

[I have one more method I would like to add in Span,
public int balanceColumns(), which will be eventually
called by PSLM whenever column balancing needs to be
done (e.g., a new block-area with span traits
indicating a new Span is needed), and would perhaps
return the new, smaller, bpd as a result of the
balancing.  It will stay empty for some time, but PSLM
can call it and PSLM at least will be finished in this
regard.]

Once this is done, I would like to modify
MainReference so that it always has one span by
default.  90% of the time that one span is all that is
needed.  PSLM().addSpan(BR, spanned) (to become
BodyRegion/MainReference.addSpan(boolean spanned)
perhaps), would be called only for new spans needed as
a result of an incoming block-area's span trait
needing a different number of columns (either one or
BR.getColumnCount()).  But the changes in this
paragraph I would revisit after the Span issues above
are finished.

Basically, the change would be that PSLM will still
handle the page-breaking, the flow-mapping, the
collection of areas and determination of (1) when new
spans are needed, (2) when curFlowIdx needs to be
incremented to the next column, and (3) when columns
in a span need to be balanced; however:  the actual
*creating* of n-f-r-a's, spans, and column balancing
will move to Span and BodyRegion/MainReference as
appropriate.

Thoughts?

Thanks,
Glen 

Reply via email to