[GSOC] Tiled Rendering, ahunt, Weekly Report 01 / WK22

Andrzej Hunt andrzej at ahunt.org
Sun May 25 11:35:02 PDT 2014


Dear All,

The last 2-3 weeks I've been working on the following:

* Pushing the tiled rendering api out via LibLO:
** Initially by painting to an X11 "context" (I.e. the 5+ handles that 
SystemGraphicsData contains
     on Linux).
*** Was quite horrible, and not at all cross platform. Also results in a 
background window being
       shown as we have to use one of the X11 backends for this (and 
they all show a full
       window for the SalFrame which every document creates...).
** Ported to using bitmap buffer rendering (i.e. using the svp backend), 
and simply returning
    a pointer to the basebmp BitmapDevice internal buffer.
** Further modified to allow feeding in an arbitrary buffer (going via 
vcl VirtualDevice->
     svp SvpSalVirtualDevice -> basebmp BitmapDevice) -- this is a 
little finicky as the buffer
     is liable to be ignored if the VirtualDevice's size is changed at 
any point -- but seems to
     work fine for now.
** Also added support for setting top-to-bottom rendering direction (svp 
assumes that the
     buffers should be painted bottom-to-top, gtk the opposite -- we can 
now set this freely,
     saving us direct buffer manipulation).

* Moved bitcount->colourspace mapping into a central place for svp, 
implemented overriding
   of the defaults. (Previously there was a hardcoded assumption that 
BGR (or ABGR) was used
  for 24 (or 32 bit) colours. In our case we need RGB(A) for use in gtk 
(and similarly for qt AFAICS).)
** We just use 32 bit for now as that already has RGBA/ARGB/ABGR/BGRA 
implementation, we could
      quite easily allow the RGB/BGR choice for 24 bit too AFAICS (and 
allow arbitrary choie via the
      libLO API if appropriate).
** The alpha channel doesn't actually work -- for now I have to manually 
overwrite it in the tiled
      rendering app to make the document visible -- still need to dig 
into this in more detail.

* Miscellaneous reading around calc wrt. where tiled rendering should 
happen.
* Miscellaneous digging around vcl.

Current work is happening on feature/gtkbmptiledviewer, the app is under 
instdir/program/gtktiledviewer.
(The feature/gtktiledviewer branch is the X11 rendering early version of 
things.)

(Unfortunately I'm still in the middle of uni. projects for another 1.5 
weeks so not fully free yet...)

Cheers,

     Andrzej


More information about the LibreOffice mailing list