Hi Bodo-

First, I don't think I qualify as better overlooking
FOP, since my one and only contribution is getting
that list-item thing to do what I wanted. But, here
are some things I found out during that process, and
answered below:

--- "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> Hi Don, Arved
> i would be greatfull to work with someone on a
> related problem, who  
> better overlooks FOP then i do at the moment .
> right now i have some questions:
> 
> 1. i do not fully understand about the numerical and
> symbolic values for 
> the keep-* stuff.
> the standard says (in "4.8 Keeps and Breaks") that
> there is any interger 
> value allowed which specify the "strength", whereas
> higher number means 
> more strength is imposed on the keep condition. in
> other words the 
> bigger the values is the more the fo-processor
> should try to keep the 
> stuff together, right?   but there are in addition
> to symbolic values
> "auto" (which means no keep condition) and "always"
> (which means " keep 
> always ") .
> on the other hand in FOP   "always" is mapped to "5"
> in fop and "auto" 
> is mapped to "7".
> which would mean only the values 5,6 and 7 are
> meaningfull  and moreover 
> it looks as if the always should actually at least
> be greater then "auto".
> could you help me reducing my confusion?

Maybe it would be easiest to just start with binary,
either attempt to keep-with-next, or don't attempt.
That might be a simpler case than trying to figure out
how to define the various levels of keepness.  To me
it seems that would be most cases because either you
can keep-with-next, or you can't because the keeped
parts would overflow the column or page. That is a bug
in what I did because overflow would cause an infinite
loop.

> 2. i'm unsure about the "within-*" (e.g.
> "within-page") property 
> refinement.
> if for example, i have a block with
> keep-with-next.within-page="always" but
> keep-with-next.within-column="auto"
> does this mean that i should make a page break
> before that block if 
>  normaly the pagebreak would occure after it. but i
> should not start new 
> column before that block instead let occure the
> column break after this 
> block as if no keep-with-next property would have
> been set, right?

I was focused on the keep-with-next.within-page, so I
am not really familiar with column handling.

> 3. i don't yet understand how the mechanics of the
> FONode.rollback() 
> works. it seems it has something to do with undoing
> layout operations in 
> order to redoing this part of the  layout with eg.
> different column or 
> page breaks (e.g. if a keep condition occured that
> could not be 
> fulfilled). am i on the right trak here? do you any
> more details on 
> that, or do i need just to look more deeply in to
> the source?

I was looking at rollback, and it didn't seem to undo
layouts.  Instead I set up a Vector in FOnode to
contain a list of areas that a node creates, then
filled in FONode.removeAreas() to remove the areas
using that list.  Then, I changed block to add the
area it creates to that list.  Then, set the marker to
a value that will cause areas to be recreated, but not
do anything to IDs (couldn't figure out how to back
out ID's so didn't worry about it). The algorithm I
see for keep-with-next:

A node layout returns keep-with-next
Set flag active for keep-with-next(page or column)
Attempt to layout next node
If next node layout returns AREA_FULL_NONE
determine if full area is a page or a column
If full area match with-(page/column)
remove areas created by previous node
set marker to prior to layout of previous node (I
think I have remove doing this.)
Return AREA_FULL_SOME

Seems fairly simple. Here are the gotchas.
1) Preventing infinite loops.  If you have both areas
combined overflow the column of page, then it is
impossible to keep-with-next.
2) I think a marker needs to be enumerated for setup
done no area created.  Say AREAS_READY_TO_BE_CREATED =
-42, or possibly 0, since block uses the marker to
designate which subnodes have been created so far.
Basically, I think the use of marker needs to be
fomalized somewhat.
3) Does undoing areas cause problems with the ID code?
If so, how do we undo IDs too?

I hope that helps Bodo.

Don


> Bodo


__________________________________________________
Do You Yahoo!?
Get email alerts & NEW webcam video instant messaging with Yahoo! Messenger
http://im.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to