Over all, this sounds ok. There's one point, though: the one with the
column balancing. Following XP principles I'd skip that because I'm
almost sure that we can't implement column balancing just by calling a
balanceColumns() method like your foresee. Don't try to do too many
optimizations too soon as we're currently in "rough mode" (in the branch).

On 23.03.2005 00:22:44 Glen Mazza wrote:
> --- [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 



Jeremias Maerki

Reply via email to