odox 0.3.0
Five gaps in the slide renderer, a crash a drag-and-drop away on every platform,
and the groundwork for Windows and macOS.
The renderer gaps were found by comparing what odox draws against what
LibreOffice draws from the same file. Across the twelve slides of
growing-liberty.odp it now paints 98.7% of each the same colour on average and
97.1% at worst, where three of the twelve were under 93% and the worst was 82%.
Added
-
draw:path, which states a shape's outline as SVG path data rather than in
ODF's own commands. It flattens through the same pen the custom shapes use,
so a path fills, strokes and holds text the way every other shape does. An
elliptical arc inside one is drawn as the straight line to where it ends. -
draw:connector, whose route between the two shapes it joins the producer
has already worked out and written beside the endpoints. Where it wrote none,
the straight line between them is the whole shape. -
A shape's label, which is paragraphs of the shape's own rather than a
draw:text-box.draw:textarea-vertical-alignsays where between the top and
the bottom edge it sits, so the numeral in a circle is in the middle of it. -
draw:transform, which is how a shape that is turned or leaned says where it
is. Such a shape gives no corner, so until now it was dropped without a trace:
137 shapes across ten of the templates, most of them the decoration a template
is recognised by. A turned rectangle draws as a quadrilateral, a turned ellipse
as a polygon, and a turned picture as its own four corners. A turned shape's
label is left undrawn. -
The window's icon on Windows, and the document macOS sends instead of an
argument. Neither platform ships yet: the packaging for both is built and the
part that needs each machine is not. Both are exercised on every push by a
runner, which is how the crash below was found.
Fixed
- Opening a document could abort the process. A document names font
families, registering them takes effect at the start of the next frame, and
the document was being drawn in the frame that opened it, so it asked for a
family the definitions in force did not carry. egui does not fall back for
that. Every way of opening a document but one goes through a frame: a drop,
Ctrl+O, Reload. The exception is the path on the command line, which is why
this survived every screenshot taken of it. - A frame whose picture is stated more than once — an SVG and then a PNG of the
same drawing, which is how the templates carry their decorations — drew the
first child and nothing else. It now takes the first one that decodes.