OK, good luck. On 12/2/13 1:16 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>The way it was implemented is like this: > >1) Tables and table columns have fixed widths. (I might add a default >width if none was set to prevent runtime errors. What's a reasonable >number?) >2) Table cell parcels are created with a maximum height of 8000. I'm not >sure why they picked that number, but it's probably high enough that it's >fine. After the cell is composed, the height of the parcel is adjusted. > >This simplifies the calculations tremendously because tables can be >safely composed on a row-by-row basis. I think both of these limitations >are reasonable ones and it's pretty consistent with how tables work in >DTP apps. The only thing I'm probably going to change is to add the >option of a fixed height to the cell parcel where the contents would just >become overset if it does not fit. > >One thing I'm planning on changing is related to table widths. Currently, >the width of a table is constrained by the with of the containing parcel. >I think it's reasonable that tables can extend beyond the bounds of the >parent parcel. This is the way InDesign works and I think it's necessary >for tables that flow across multiple containers since the width of the >containers are not necessarily constant. > >Another limitation that I think is reasonable is no nested tables. >InDesign for example allows unlimited levels of nesting tables inside >table cells. This adds a lot of complexity to the composition, and it >seems to me that this is an edge case. Does TLF currently support nested >text containers? (i.e. text containers as inline graphics) > >I think I'm also going to not allow cells to split across containers as >this also adds complexity (and I personally have no need for this >support). > >Harbs > >On Dec 2, 2013, at 8:19 AM, Avi Kessner wrote: > >> Just a random thought here, but what if you set the parcels at the end >>of >> table creation? Something like, populateParcels() which gets called >>after >> all cell sizes and positions are known, and then get placed into those >> rectangles? >> On Dec 2, 2013 7:02 AM, "Alex Harui" <aha...@adobe.com> wrote: >> >>> Harbs, >>> >>> I haven't looked at the Table code at all. I don't remember exactly >>>how >>> Parcels work for the standard case, either. >>> >>> IMO, HTML Tables are really hard. In some cases, I think you have to >>> compose cells multiple times in order to decide the cell widths and row >>> heights. If your use case can constrain the problem space it might be >>> easier to get something to work. >>> >>> FWIW, I agree that it doesn't make sense for the main container's >>> ParcelList to know about parcels in the table. >>> >>> Good luck, >>> -Alex >>> >>> On 12/1/13 6:14 AM, "Gavriel Harbater" <gavha...@gmail.com> wrote: >>> >>>> Some more rambling: >>>> >>>> The more I'm working through this, the more I'm convinced that the >>>> current implementation is fundamentally broken. The cell Parcels >>>>really >>>> can't be in the same ParcelList as the Containers. I'm pretty sure >>>>that >>>> not only multi-container text threads are broken, but multi-column >>>> containers are broken as well. >>>> >>>> It seems to me that there needs to be a separate ParcelList for table >>>> cells that are separate from the container parcel list. Table parcels >>>> don't exactly fit into the concept of container parcels either because >>>> they should be nested inside other parcels (which normal parcels are >>>> not). I think I should subclass Parcel as TableCellParcel which would >>>> have a parcel as a "parent". I'm also going to have to either modify >>>> ParcelList to track the cell parcels or subclass it for dealing with >>>>cell >>>> parcels. >>>> >>>> Harbs >>>> >>>> On Dec 1, 2013, at 2:42 PM, Harbs wrote: >>>> >>>>> This is really difficult, because I'm not sure what is supposed to >>>>>work >>>>> in the current implementation. I'm trying to reverse engineer how >>>>>tables >>>>> work when they don't really work. Trying to sift out what I don't >>>>> understand from what simply doesn't work from what is poorly >>>>>implemented >>>>> is a huge pain. >>>>> >>>>> I'm going to ramble a bit. I hope that things will become clearer to >>>>>me >>>>> as I ramble on... ;-) >>>>> >>>>> If someone who understands how text flow in TLF is supposed to work >>>>> would either confirm or correct me, I'd appreciate it. >>>>> >>>>> Here's how I understand the way TLF works with parcels: >>>>> >>>>> Each composition has a ParcelList which contains one or more parcels. >>>>> Each ContainerController has one or more parcels in the ParcelList. >>>>> Generally, there is one parcel per column. (If a ContainerController >>>>>has >>>>> more than one column, the composition of each column is done >>>>>separately >>>>> as a separate parcel.) >>>>> >>>>> For normal text frames, this is all pretty straight-forward. >>>>> >>>>> With tables things get a bit more muddled. Each table cell is in >>>>>effect >>>>> a separate composition area. If every composition area gets its own >>>>> parcel, I guess this would mean that every cell in the table would >>>>>get >>>>> its own parcel. If I'm reading the code correctly, it's supposed to >>>>>be >>>>> doing this. I think another way to look at it, would be to look at >>>>>each >>>>> column of each table within a specific Container as a separate >>>>> composition area (parcel) and position the text within that. I'm not >>>>> sure this makes any sense, though. The more I'm looking at how >>>>>parcels >>>>> work (i.e. vj, etc.), the less this makes sense. >>>>> >>>>> So, basically, every cell in the table would be a separate parcel, >>>>>and >>>>> these parcels need to be organized into rows and columns. Keeping >>>>>track >>>>> of the columns and the placement of the rows has some level of >>>>> complexity. Adding header and footer rows to the mix should make it >>>>>more >>>>> interesting. >>>>> >>>>> Here's what I'm not (yet) totally clear on (or even if it works >>>>>right): >>>>> 1) The logic of placing the table parcels relative to the container >>>>> parcels. The way I see it, the table parcels should be arranged >>>>>within >>>>> the bounds of the column parcels of the containing container(s). >>>>> 2) How the calculations of the parcel placement goes. This is >>>>> especially true for tables that might span more than one parent >>>>>parcel. >>>>> 3) The placement of the table parcels relative to the container >>>>>parcels >>>>> they are contained within. (Should there be a separate ParcelList for >>>>> table parcels, or should it be part of the main ParcelList?) >>>>> 4) What I'm not clear on... ;-) >>>>> >>>>> On Nov 28, 2013, at 3:20 PM, Harbs wrote: >>>>> >>>>>> I'm back on this, and starting to make some (slow) progress. >>>>>> >>>>>> I've started a Google Docs document to try to make some order out of >>>>>> the chaos that is the current state of TLF Tables. This is just a >>>>>>place >>>>>> where I'm jotting down my findings as I go and my thoughts on >>>>>>direction >>>>>> as I work on this. I made the document publicly editable and would >>>>>>love >>>>>> input. If there's anyone out there that has answers to the questions >>>>>> I'm posing, it would be very helpful! >>>>>> >>>>>> >>>>>> >>> >>>https://docs.google.com/document/d/1sT0IAiMfIOBVgmo8wwF6ZZviuNFcW2bUfQoj >>>>>> 0zDmSog/edit?usp=sharing >>>>>> >>>>>> Harb >>>>>> >>>>>> On Sep 10, 2013, at 11:22 PM, Harbs wrote: >>>>>> >>>>>>> My first tests are not very encouraging... >>>>>>> >>>>>>> Trying to compose the table results in this function returning >>>>>>>null: >>>>>>> static tlf_internal function >>> beginFactoryCompose():SimpleCompose >>>>>>> { >>>>>>> var rslt:SimpleCompose = _factoryComposer; >>>>>>> _factoryComposer = peekFactoryCompose(); >>>>>>> _savedFactoryComposer = null; >>>>>>> return rslt; >>>>>>> } >>>>>>> >>>>>>> Looks like I need to the composition process... >>>>>>> FWIW, it made no difference whether I added the rows to a >>>>>>> TableBodyElement or to the table directly. >>>>>>> >>>>>>> On Sep 10, 2013, at 7:17 PM, Alex Harui wrote: >>>>>>> >>>>>>>> Hi Harbs, >>>>>>>> >>>>>>>> I see code for Tables, but I'm not sure it is "officially" there. >>>>>>>> Or even >>>>>>>> complete, or even working at a prototype-level. >>>>>>>> >>>>>>>> So good luck with it. I might be able to ask folks who used to >>>>>>>>work >>>>>>>> on it >>>>>>>> a few questions, but I'm pretty sure their memories of it are >>>>>>>>pretty >>>>>>>> dim >>>>>>>> by now. >>>>>>>> >>>>>>>> -Alex >>>>>>>> >>>>>>>> On 9/10/13 6:16 AM, "Harbs" <harbs.li...@gmail.com> wrote: >>>>>>>> >>>>>>>>> I knew I was going to spend some real time on this one day, and >>>>>>>>> that time >>>>>>>>> is coming really soonŠ >>>>>>>>> >>>>>>>>> Before I dig in too deeply, what's the status on TLF Table >>>>>>>>>support? >>>>>>>>> I >>>>>>>>> know it's officially there, but I don't see any documentation on >>>>>>>>>it >>>>>>>>> -- >>>>>>>>> not even the basics on how it's supposed to be used. >>>>>>>>> >>>>>>>>> I fully expect to find bugs once I start really digging into it, >>>>>>>>> but some >>>>>>>>> documentation (any) would be nice to get me started. >>>>>>>>> >>>>>>>>> Looking at the source code, I see the following classes: >>>>>>>>> >>>>>>>>> TableElement >>>>>>>>> TableBodyElement >>>>>>>>> TableColElement >>>>>>>>> TableRowElement >>>>>>>>> TableColGroupElement >>>>>>>>> TableDataCellElement >>>>>>>>> TableFormattedElement >>>>>>>>> >>>>>>>>> I understand the structure like this: >>>>>>>>> >>>>>>>>> * A TableElement is the top level element for any table >>>>>>>>> * All elements in a table inherit from TableFormattedElement >>>>>>>>> * The bottom level of a table which needs to contain one or more >>>>>>>>> ParagraphElements in a TableDataCellElement >>>>>>>>> * TableDataCellElements must reside within a TableRowElement >>>>>>>>> >>>>>>>>> After this things get a bit fuzzier. >>>>>>>>> >>>>>>>>> What is TableBodyElement used for? >>>>>>>>> How is TableColGroupElement and TableColElement used? (I assume >>>>>>>>> they are >>>>>>>>> used for formatting table columns, but the details are not very >>>>>>>>> clear to >>>>>>>>> me.) >>>>>>>>> What about header and footer rows? Is that supported yet? >>>>>>>>> Header and footer columns? >>>>>>>>> Is breaking tables across containers supported yet? >>>>>>>>> >>>>>>>>> I have not started studying how to specify table formatting >>>>>>>>>either. >>>>>>>>> I'm >>>>>>>>> hoping that's obviousŠ >>>>>>>>> >>>>>>>>> I'll try to add some documentation to the source code as things >>>>>>>>> become >>>>>>>>> clearer to meŠ >>>>>>>>> >>>>>>>>> Harbs >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> >