> -----Original Message-----
> From: Luca Furini [mailto:[EMAIL PROTECTED]
>
> > Simon Pepping wrote:

Hi Luca / Simon,

> > Marker extends FObjMixed, which adds InlineStackingLM.
<snip />
> I still have to really understand InlineStackingLM, I find it very
> enigmatic! It generates inline areas, but it has LineLM as a subclass ...

>From the javadoc description, I'm getting the impression that the FObjMixed
class was conceived when FOText still subclassed FObj (--correct? In that
case, is it still necessary?).

In a nutshell, a stroll through the code shows that:

The only two places where an InlineStackingLM is created are:
- fop.fo.FObjMixed.addLayoutManager()
- fop.layoutmgr.PageSequenceLM.getTitleArea()

Now, there are eight classes extending FObjMixed:
- fop.fo.flow.BidiOverride
- fop.fo.flow.Block
- fop.fo.flow.Inline
- fop.fo.flow.Leader
- fop.fo.flow.Marker
- fop.fo.flow.RetrieveMarker
- fop.fo.flow.Wrapper
- fop.fo.pagination.Title

WRT FObjMixed.addLM() these eight do the following:
- BidiOverride overrides [*]
- Block overrides, and adds a BlockLM instead
- Inline overrides, and adds an InlineLM instead
- Leader overrides, and adds a LeaderLM instead
- Marker uses the superclass version
- RetrieveMarker overrides and adds a RetrieveMarkerLM instead
- Wrapper overrides and lets its children call addLM() (a neutral element)
- Title uses the superclass version[**]

[*] unsure what it does, but there's mention of moving the logic to
BidiOverrideLM, so my best guess is that it would just add a BidiOverrideLM
instead
[**] actually, looks like it doesn't really use it at all --seems to be
handled by PageSequenceLM.getTitleArea()

I have, so far, confirmed two cases where trouble occurs:
1. fo:block->fo:inline->fo:block where the deeper fo:block causes a CCE
because BlockLM does not implement InlineLevelLM
2. fo:block->fo:retrieve-marker + fo:marker where the retrieved marker
causes a CCE because it adds an InlineStackingLM which does not implement
InlineLevelLM

...
> as a marker can only have children which could replace its
> retrieve-marker, wouldn't it be better to have just:
>
>          ...
>           |
>        parentLM
>        ---+---
>        |     |
>   chldLM1   chldLM2

That would definitely solve the second case, but still leaves the first.

Putting our heads together, we're going to get there, folks! Yes we are :-)


Greetz,

Andreas

Reply via email to