An Interoperability Improvement in LibreOffice Impress Tables
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 542 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/61567 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Gamma functionSurfaceInformation managementCellular automatonPowerPointInformationMaxima and minimaDivision (mathematics)Range (statistics)AreaTotal S.A.Category of beingExecution unitSoftware testingCodeProduct (business)Cellular automatonCategory of beingGraph coloringLine (geometry)Table (information)Row (database)CASE <Informatik>Code1 (number)Traffic reportingLevel (video gaming)Functional (mathematics)MultilaterationUnit testingSurfacePixelLinear regressionMereologyFunction (mathematics)ImplementationRight angleArrow of timeInstance (computer science)Total S.A.Computer fileMathematicsRange (statistics)Process (computing)Entire functionGraph (mathematics)AreaPoint (geometry)BitLecture/Conference
07:55
Program flowchart
Transcript: English(auto-generated)
00:05
Hello everyone, I'm Saar Paraktamir and I work for Collabro Productivity. This talk will be about an interoperability improvement in LibreOffice Impress tables.
00:20
So this is a screenshot from the WAG report and let's talk about what was the problem on the surface level. On the right you can see how it appears in PowerPoint and on the left you can see how it appears when it was opened by Impress, the PPTX file, exported by PowerPoint.
00:44
What we need to focus here is the rows pointed by the arrows are somehow shrunk when it was opened in Impress and it wasn't immediately obvious. If we look at how PowerPoint exports the table layout into PPTX files,
01:04
what we will realize is it defines row heights. So let's just focus on that part but it doesn't really define a total table height to fit inside.
01:21
While we are importing this row height, what we do is we first calculate what does all of the row heights add up to because we use the total table height to layout the table. So we calculate that by adding up each of the row heights and also we assign each row with
01:43
their own heights but turns out when this specific file is exported and if you look at row heights for the empty rows they are correct there is nothing wrong there but if you look at for instance the one row that says color it appears to have a row height of zero
02:03
which doesn't really make sense and so now let's also something to mention here is if you start typing anything in one of the empty rows there are no text properties actually imported
02:23
from the PPTX file they are somehow lost in the process like the text when we start typing in the empty rows in the PowerPoint one starts as a blue it has a blue color etc it has a different size but if we write it in the impress one it is just defaulted so it's black and 18 points.
02:46
So before understanding the problem we need to know a little bit about how impressed layouts the table and the table is basically fitted into a given total height but while doing so we also care for what were the each row heights were so
03:08
basically we need to know the total height correctly because if it is smaller than some of the rows we basically happen to be shrinking trying to shrink the table
03:22
when when that happens what the impress tries to do is adjust the row highs proportionally to what were what were they before and if there's text inside there's a minimum height it can go to and when that happens and it like in this case when that happens since it can't shrink
03:45
the line that says color further it shrinks the empty line because it can to try to fit in that to that wrong table height also if you explore the PPTX output we will realize that the empty cell properties are exported in n paragraph run properties
04:06
we need to import that there is an already an implementation for that but i'll discuss this a little bit later if you look at the problem in detail let's say what we need to fix here is
04:21
we need to somehow care for this problematic row heights that during import which they don't have a height of zero but they are a defined as so such and empty cell we need to know the text sizes for empty cells too we need to do this from n paragraph run properties also there
04:43
was some previous range of pixels here that's kind of altered the layout in code instead of the import code and there are some regressions that messed up some table resizing functionality there we need to revert those changes and so basically it turns out to be powerpoint tries to
05:06
export desired row heights for instance if you try to just pull a row to zero while it has text in it it doesn't let you but it actually saves it as such so in the end that creates a problem
05:24
for us so to fix this what we can do and what what i did was during import before layouting the table into an area which how impress usually does it we do a pre-layouting
05:42
which is we just take the row sizes and we don't give the layouting code any area to layout into and we let it lay out itself so it basically just looks at the row sizes and tries to expand them if they are smaller than possible and that gives us a final height that we can use
06:05
to in successive layouting attempts so we kind of correct the total table heights doing that and we also don't have the text properties for the
06:28
empty rows so the problem there was and turns out these text properties are actually imported into text nodes but when there's new text is being typed they actually inherit their
06:46
properties from the cells own properties instead of the text nodes text nodes are just being dumped and new ones are being created so to fix that we need to push the text properties
07:02
from the entire graph around properties into the size properties at themselves to make it work correctly well to finish up with these fixes we were able to get rid of the problematic
07:22
regression causing code in the layout thing and we moved the conceptual fixes from there into the import code making it possible to work correctly and additionally some unit tests were added to make sure the entire graph around properties
07:43
state correctly that covered those areas thank you that's all from me