> -----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