[scribus-dev] Scribus CTL

Khaled Hosny khaledhosny at eglug.org
Mon Feb 22 06:57:08 UTC 2016


On Sun, Feb 21, 2016 at 10:56:16PM +0100, Craig Bradney wrote:
> > We managed to finally rebase the work, it can now be found at:
> > https://github.com/HOST-Oman/scribus/tree/boxes
> > 
> > It builds and runs, but some regressions were introduced during the
> > (complex) rebase, we are now tracking them down then back to completing
> > the work. We really appreciate if people can poke around and tell us if
> > we are moving on the right direction.
> > 
> > Regards,
> > Khaled
> > 
> > P.S. Since Andreas is not responding again and the more we work on the
> > code the harder it is to rebase, we had to abandon work on the old pull
> > request to his GitHub repository in order to be able to rebase the code. 
> 
> 
> Cool stuff. Building it now so I can help a little if required to help
> merge/diff/patch in the future. 

Great. We just fixed the couple of regressions we found after the merge
and the code should be now back to the same state before the merge,
which is that screen rendering is OK, PDF semi-works and we are working
on completing it, all other backends are broken (PS, SVG, XPS,
ScPageOutput?).

To give an overview of the changes:

A new boxes model have been introduced, there are currently 3 box types
implemented: GroupBox (kind of a container for other boxes), LineBox (a
specialised GroupBox for lines) and GlyphBox (the smallest box
containing a glyph or group of closely related glyphs).

The result of PageItem_TextFrame::layout() is packaged in a GroupBox
containing LineBoxes which in turn contain GlyphBoxes. There is a
Box::render() method (implemented by all subclasses) that takes a
ScPainter and do all the heavy lifting of rendering a box and eventually
calls ScPainter primitives to do the actual rendering (drawLine,
drawGlyph, etc.).

ScPainter have been turned into a virtual class, with specialised
implementations for each target output. The existing Cairo-based painter
have been turned into a ScScreenPainter (but I think ScImagePainter
would be more accurate now since I just found that it draws to a Cairo
image surface). A new PdfPainter have been introduced for PDF output
(incomplete yet), and there should be a new PsPainter, SvgPainter, etc.
all implementing the output-specific code.

Regards,
Khaled



More information about the scribus-dev mailing list