On the other hand,  HTML has row-level styling / compositing.  
So it might be easier to work internally with rows/cells rather than cells 
directly.

IMO, not supporting vertically joined cells is acceptable.  

Maurice

-----Message d'origine-----
De : Avi Kessner [mailto:akess...@gmail.com] 
Envoyé : mercredi 4 décembre 2013 14:33
À : dev@flex.apache.org
Objet : Re: TLF Tables

I would vote for table/cells
I think it more accurately describes a table.
This way you could also more easily set the borders of cells like excell does.
IMO rows and columns don't actually exist,  they are just a coordinate system 
to locate a cell.
On Dec 4, 2013 2:42 PM, "Harbs" <harbs.li...@gmail.com> wrote:

> There's one more issue I'm struggling with:
>
> The way the elements were implemented is that rows are nested inside 
> tables and cells are inside rows. Table columns are not directly 
> connected to cells -- they are really just there to compute the position.
>
> This makes sense in the way that the tables would normally be composed 
> (i.e. row by row).
>
> The only issue I can see with this, would be joined cells. If cells 
> are joined horizontally, it would not be to complicated since the row 
> would be composed across.
>
> Vertically joined cells would be much more complicated. Once cells are 
> joined vertically, a single cell would actually reside inside two 
> different rows. This does not jive very well with the concept of cells 
> belonging to a specific row. A better fit might be to make cells 
> children of the table and to have cells contain row and column info.
>
> It might be possible to compose joined cells even if they are children 
> of rows and use placeholder objects to indicate the joined cell 
> location within the row -- or maybe skip that area.
>
> I think I'm leaning towards sticking with tables/rows/cells rather 
> than tables/cells because I think it's neater for the classic tables, 
> but I'm not completely set on it.
>
> I'd like to hear if anyone has input on the subject…
>
> On Dec 2, 2013, at 9:08 PM, Alex Harui wrote:
>
> > 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/1sT0IAiMfIOBVgmo8wwF6ZZviuNFcW2bUfQ
> oj
> >>>>>>> 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
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>
> >
>
>

Reply via email to