Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Dear fellow hackers,

as of Saturday, a first cut of a new emf+ parser & rendering framework
from Armin has hit master (thx to Moggi and Stephan for fixing up the
ODR / unit test breakage fallout!).

The old implementation is a source of significant pain & issues
(separate implementation, only able to render into offscreen bitmaps,
no real vector, incomplete import etc etc). There have been various
efforts & plans in the past to address that (some of the heroes of
fixing the existing impl, and those interested in a rewrite in Cc) -
so I'm most happy to announce that the Technical University Dresden /
Germany stepped up & in the person of Prof. Oliver Sander is funding
this re-factoring.

That out of the way, here's how to play with it & hack it:

* in recent master (Tuesday or later, to avoid unit test issues)
* get yourself a dbgutil build
* either change in the cxx, or set in the debugger:
  bTestEMFPDecomposition to true
  (drawinglayer/source/processor2d/vclpixelprocessor2d.cxx:500
  currently)
* of course stick an emf+ graphic into your document ;)
* for directly comparing old vs. new, also set bUseChangedColorObject
  to true (gets you a blended overlay for new and old renderer)

Right now, it's all pretty bare-bones - technically, wmf/emf/emf+
parsers have been moved to emfio, and code is in place to convert wmf
& friends data into a vector scene graph just like svg is currently
imported & rendered. End-to-end, currently only polygons and colors
are working though - any help to expand functionality there
appreciated. But the framework & preparation work has landed now,
including carrying the original binary files around for proper
roundtrips, and holding a buffered preview graphic for quick repaints.

Next steps (again, help much appreciated!):

- add more GraphicPrimitive generators, complete up to a state that
  the filter at least covers what the current direct canvas renderer
  delivers:
   * clip regions
   * text rendering - it's parsed, but graphic primitive generation is
     missing
   * gradients/hatches
- once this works, cut over to new impl, bin the old code in cppcanvas
  (there's sadly a small amount of duplicate code now in the parsers)
- iteratively expand, to cover near-100% of EMF+ (mostly lacking around
  gradients & effects):
   * more complex fill types like bitmaps/tiles
   * path gradient
   * xor & stuff

Cheers,

-- Thorsten

Attachment: signature.asc
Description: Digital signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.