Bug 112086 - PPTX with zoom animation opens with repair in PowerPoint after roundtrip
Summary: PPTX with zoom animation opens with repair in PowerPoint after roundtrip
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Impress (show other bugs)
Version:
(earliest affected)
4.0.0.3 release
Hardware: All All
: medium normal
Assignee: Szymon Kłos
URL:
Whiteboard: target:6.0.0
Keywords: filter:pptx
Depends on:
Blocks: PPTX-Corrupted
  Show dependency treegraph
 
Reported: 2017-08-29 11:20 UTC by Aron Budea
Modified: 2017-09-25 07:40 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
Sample PPTX with zoom animation (29.83 KB, application/vnd.openxmlformats-officedocument.presentationml.presentation)
2017-08-29 11:20 UTC, Aron Budea
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Aron Budea 2017-08-29 11:20:40 UTC
Created attachment 135847 [details]
Sample PPTX with zoom animation

The attached presentation contains a single shape with zoom animation.
Save it as a new PPTX in Impress. The resulting file opens with repair in PowerPoint.

Observed using LO 6.0 daily build (2017-08-27_23:19:54, 9600f5179795380749aa5a7c9fa0bf5387d2b95f), 4.0.0.3 / Windows 7.

Roundtripping a PPT with the same animation opens fine in PowerPoint.
Comment 1 Xisco Faulí 2017-08-31 22:58:08 UTC
Validating in Open XML SDK 2.5 I get:

AttributeNameList - The element has incomplete content
VariantValue - The element has incomplete content
Comment 2 Aron Budea 2017-09-18 11:03:55 UTC
One of the issues is that the <p:val> element of type p:fltVal is not exported.

original snippet:
  <p:tavLst>
    <p:tav tm="0">
      <p:val>
        <p:fltVal val="0"/>
      </p:val>
    </p:tav>
    <p:tav tm="100000">
      <p:val>
        <p:strVal val="#ppt_w"/>
      </p:val>
    </p:tav>
  </p:tavLst>

exported snippet:
  <p:tavLst>
    <p:tav tm="0">
      <p:val/>
    </p:tav>
    <p:tav tm="100000">
      <p:val>
        <p:strVal val="#ppt_w"/>
      </p:val>
    </p:tav>
  </p:tavLst>

The code doesn't like p:fltVal for Width attribute, see what's in the 'if' around here:
https://opengrok.libreoffice.org/xref/core/sd/source/filter/eppt/pptexanimations.cxx#1390

Not sure what's allowed, since conversion seems to be involved in general, but maybe interpreting a double with the value 0 could be allowed there?
Adding that still exports a p:strVal instead of p:fltVal, though, so further changes are needed.
Comment 3 Aron Budea 2017-09-20 01:59:29 UTC
My previous comment is mostly incorrect, the linked function is about converting values, which doesn't have to be done in this case. Nevertheless, the fix is on its way.
Comment 4 Commit Notification 2017-09-25 07:39:23 UTC
Szymon Kłos committed a patch related to this issue.
It has been pushed to "master":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=6676193b9fadea85c08d3e9783e023ffdfa1e682

tdf#112086 PPTX export fltValue, ppt_w, ppt_h

It will be available in 6.0.0.

The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
http://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.