On Aug 22, 2012, at 10:11 AM, Milian Wolff wrote:

> On Monday 20 August 2012 11:15:21 David Hyatt wrote:
>> You're going to see some patches in the coming weeks (first one coming soon)
>> to begin work on implementing:
>> 
>> http://www.w3.org/TR/css3-gcpm/
>> 
>> In some cases, there are going to be syntactic deviations from the spec as
>> we experiment (based off discussions that are ongoing in the CSS WG), but
>> in general we'll be implementing the features in the working draft.
> 
> Hey there,
> 
> very interesting to see you working on this! Can you tell me whether you are 
> going to work on the css3 paged-based media module next? Paired with GCPM it 
> would make WebKit a very powerful publishing tool.
> 
> Thanks, take care.

There are a number of tasks happening first that are mostly about fixing what 
code is there.

Right now we have a screen pagination mode that works in terms of columns. This 
has led us to add CSS properties to hack how columns get stacked (inline 
direction or block direction), when in reality this pagination mode should be 
operating in terms of pages instead.

In addition columns and pages don't play well together in terms of nesting. You 
can't even print a page with columns on it for example, because we're incapable 
of handling that nesting.

So architecturally what's happening is that pages and columns are getting a 
complete re-write, and they're being re-implemented in terms of regions and 
flow threads. In effect, we're unifying columns, pages and CSS Regions to all 
work in terms of RenderFlowThreads that hold the actual content and 
RenderRegions that the content flows into.

RenderRegion and RenderFlowThread are the base classes used by all three models.

RenderRegionSet is a new class that derives from RenderRegion and represents a 
run of contiguous identical regions. It is going to be used by columns and 
pages and (assuming it gets adopted) by overflow:regions (dbaron's proposal for 
auto-cloning of new regions to accommodate overflow).

RenderPageSet and RenderColumnSet derive from RenderRegionSet and handle 
specialized rendering of pages and column boxes. For example, RenderPageSet 
will eventually be expanded to render all the additional boxes around pages 
that CSS3 Paged Media allows.

Columns will no longer have any code in RenderBlock. Everything will be in 
subclasses, i.e., RenderMultiColumnBlock.

When printing, RenderView will shunt its children into a RenderPageFlowThread 
and create RenderPageSets as needed for the pages (with runs of identical pages 
sharing the same page set).

The screen pagination mode that changes RenderView to have columns will be 
re-written to use a RenderPageFlowThread and RenderPageSet instead.

RenderPageSet will know about progression direction and it will determine this 
based off overflow:paged-x/paged-y instead of having a custom column-specific 
property.

Anyway, that's the basic run-down. There is a lot of architectural work to be 
done to build up this new model, but the advantage is that regions, pages and 
columns will all be nestable and work much better together (e.g., you'll be 
able to have columns thread through regions, or regions thread through pages, 
etc.).

dave
([email protected])

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to