[Libreoffice] [GSoC 2011][svg export filter] GSoC project start

Marco Cecchetti mrcekets at gmail.com
Mon May 21 00:12:36 PDT 2012


Hi Thorsten, everyone,
so it's time to start working on the project. :)

I pushed a new feature branch named feature/svg-export,
where I'll commit all contributions I 'm going to provide
on GSoC time-frame.
At present there are two initial commits: the first one is
a technical commit where I fixed some indentation issue,
the second is an improvement of the Python script that generates
the c++ header from the JavaScript engine: now debug printers are
turned off automatically by the Python script, so there is no more
the need to turn them off manually before performing a commit.

The first task I'll tackle is to rework the navigation part of the
JavaScript engine in order to be able to implement the support for
slide transition.

In order to enable support for slide transitions we need to modify
the way draw pages and master pages are exported by the svg export
filter.

The following two examples point out the motivations for such
modifications.

       * Given two slides A and B targeting the same master page and
a push transition (say from left to right) used to pass from slide A
to slide B, we have that the shared master page has to be both
leaving from the right and entering from the left at the same time.

       * Given two slides A and B targeting the same master page, but
with two different master page footer field contents, and a fade
transition used to pass from slide A to slide B, the shared footer
field should be updated with the specific content of both slides
at the same time.

Master page elements will be wrapped by a <defs> element and
referenced by <use> elements where needed.
An exported draw page will have the following structure:
* <g class=’Slide’>
*    <g class=’MasterPageView’>
*    </g>
*    <g class=’Page’>    // this is the old Slide element
*    </g>
* </g>

The master page view will have the following structure:
*  <g class='MasterPageView'>
*      <use class='Background'>           // reference to master page
background element
*      <g class='BackgroundObjects'>
*          <g class='BackgroundFields'>   // cloned elements
*          <g class='Slide_Number'>
*                  ...
*          </g>
*          <g class='Date/Time'>
*                  ...
*          </g>
*          <g class='Footer'>
*                  ...
*          </g>
*          <g class='Header'>
*                  ...
*          </g>
*          </g>
*          <use class='BackgroundShapes'>     // reference to the group of
shapes
*      </g>                                   // on the master page
*  </g>

So in a master page view the Background and BackgroundShapes elements
are referenced by <use> elements, whilst text field elements are cloned
 from the master page into the master page view per each slide, in order
to support different text content for each slide.

So, that is the initial plan.
I'll provide a log book and a weekly report.

I wish good work (and fun) to all gsocers. :)

Cheers,
-- Marco

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


More information about the LibreOffice mailing list