Skip to content

odox 0.3.0

Choose a tag to compare

@anderix anderix released this 15 Sep 02:53
· 99 commits to main since this release

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-align says 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.