I went through all the ParagraphElements and TextFlowLines. I added it up, and it’s clear to me that the _curElementOffset and _cur is being upped by 41 which is the length of the current line before the line is initialized. That seems to be throwing everything out of whack.
Now I just need to figure out where that’s happening… On Nov 23, 2014, at 9:55 PM, Harbs <harbs.li...@gmail.com> wrote: > I’m back on this. I have a simpler case where things are getting out of sync. > > I have a line where the _curElementOffset is 382, the _curElementStart is 803 > (total 1201). > > The total textLength of the textFlow is 1201. > > The _curLineStart is 1185 and the rawTextLength of the TextLine returned by > the TextBlock is 41. This adds up to more than the total length. > Interestingly, the length of the previous line is 41 as well. > > Adding up all the lengths of the TextLines in the TextBlock only comes to > 389, but the paragraph (and span) has a length of 398. > > It looks like the whole paragraph and TextBlock is somehow out of whack > > Sorry for the noise, but I’m writing this in the hope that the lightbulb will > come on for either me or someone reading this… > > Harbs > > On Nov 18, 2014, at 12:23 AM, Harbs <harbs.li...@gmail.com> wrote: > >> Right. My question is more related to TextFlowLines than Slugs though. >> >> Let’s say a flowComposer has an array of TextFlowLines and the geometry of >> them does not fit in the new composition space. What is supposed to happen >> to the old TextFlowLines? I’m having trouble understanding the architecture >> here. >> >> What I would have done if I was designing the engine would be to recalculate >> geometry of the TextFlowLine each time I’m composing it. If the geometry >> changed, I’d throw out the old TextLine and ask the textBlock for a new one. >> Getting new TextLines, I see, but recalculating the geometry I don’t. >> >> I assume I’m missing something obvious. If someone can help me spot it, that >> would be great! >> >> (BTW I just fixed a vertical placement issue with table blocks. I’m >> committing it now.) >> >> On Nov 18, 2014, at 12:17 AM, Alex Harui <aha...@adobe.com> wrote: >> >>> I don’t know for sure, I just looked up the Slug class. It says it is >>> created by Parcels to track geometrical line information. >>> >>> Maybe a simpler test case would help you understand the desired behavior? >>> I would think at some point if the composable areas change, the Parcels >>> and their Slugs get updated. It would probably be either at the beginning >>> when the composition is given new bounds, or more likely, gradually as the >>> composer works its way down through the container and on to the next >>> container. If a Parcel and its Slugs (I’m going to start a band with that >>> name!) gets moved to a different container, you would think there would be >>> some invalidation of that Parcel if any information is cached, or maybe no >>> old information is supposed to matter and everything gets recomputed >>> during composition. >>> >>> If the table work has changed the recalculation of the Slugs because >>> you’ve deferred it in order to compute table cells, that might be the >>> cause. >>> >>> I’m not sure how well the code works for non-rectangular parcels. >>> >>> Good luck, >>> -Alex >>> >>> On 11/17/14, 3:27 AM, "Harbs" <harbs.li...@gmail.com> wrote: >>> >>>> Just to be a little clearer: >>>> >>>> I’m not sure why this used to work, and now it doesn’t. >>>> >>>> It seems to me that if the parcel changes on a TextFlowLine, the >>>> outerTargetWidth could be changed and the TextLine regenerated. (Then the >>>> Slug and the outerTargetWidth should match.) The thing is, the code did >>>> not used to do that and I’m not sure how/why. >>>> >>>> Another issue with this approach is what happens if we add the ability to >>>> have non-rectangular parcels. The the TextFlowLine width should need to >>>> be refigured every time it’s composed (which is something that I don’t >>>> think is happening currently). Of course there’s no reason to worry about >>>> that until we might be adding that support… >>>> >>>> I’m also not entirely sure what the check that’s failing is supposed to >>>> be checking for… >>>> >>>> Harbs >>>> >>>> On Nov 17, 2014, at 12:29 PM, Harbs <harbs.li...@gmail.com> wrote: >>>> >>>>> I took a little break on this to deal with some other crises. >>>>> >>>>> I found where it’s going off: >>>>> >>>>> In BaseCompose.fitLineToParcel() this check was failing: >>>>> >>>>> // check to see if we got a good line >>>>> if (Twips.to(_lineSlug.width) != >>>>> _curLine.outerTargetWidthTW) >>>>> return false; >>>>> The reason it’s failing is because the _lineSlug width does not match >>>>> the new width of the line. (The first column/parcel is wider than the >>>>> second.) >>>>> >>>>> When it fails, the composer tries to keep getting the next line and >>>>> upping the line absolute start but the _currentElementOffset does not >>>>> get increased until we get an error. >>>>> >>>>> So, I’m back to my original question. What’s the correct way to deal >>>>> with this situation? I’m not 100% sure how line slugs and TexFlowLines >>>>> are supposed to interact. >>>>> >>>>> Any suggestions? >>>>> >>>>> On Nov 7, 2014, at 10:34 AM, Harbs <harbs.li...@gmail.com> wrote: >>>>> >>>>>> A bit more progress: It looks like things go off where the text flows >>>>>> from one container into another mid-paragraph… >>>>>> >>>>>> (Sorry for polluting the mailing list with this. I’ll try to be quiet >>>>>> until I figure it out…) >>>>>> >>>>>> On Nov 7, 2014, at 9:55 AM, Harbs <harbs.li...@gmail.com> wrote: >>>>>> >>>>>>> It’s pretty big. >>>>>>> >>>>>>> It consistently gets out of whack at the end of the second paragraph. >>>>>>> I’m getting closer to where it’s going off… >>>>>>> >>>>>>> >>>>>>> On Nov 7, 2014, at 1:01 AM, Alex Harui <aha...@adobe.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 11/6/14, 2:02 PM, "Harbs" <harbs.li...@gmail.com> wrote: >>>>>>>> >>>>>>>>> I think it’s _curElementOffset which gets updated. >>>>>>>>> >>>>>>>>> It does look like something is getting out of sync. I’m just not >>>>>>>>> sure yet >>>>>>>>> what. This is one of those areas that’s way too fragile IMHO… Every >>>>>>>>> time >>>>>>>>> I’ve run into these kinds of issues it’s taken me days to figure out >>>>>>>>> exactly what’s off. >>>>>>>> >>>>>>>> Is the paragraph huge? In the past I simply have to watch each line >>>>>>>> get >>>>>>>> created, figure out what is in the line, and how much the offset >>>>>>>> should >>>>>>>> change and verify it changed. This was when I was dealing with some >>>>>>>> unicode character issues where an atom could be made of more than one >>>>>>>> character. >>>>>>>> >>>>>>>> -Alex >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >