feature/barcode feedback sought ...
Michael Meeks
michael.meeks at collabora.com
Mon Jan 26 13:31:31 PST 2015
Hi guys,
So - I just checked some initial QR code integration into the
feature/barcode branch; it sort of works ;-) but it raises a number of
interesting questions and/or opportunities; and I'd love some quick
directional input from someone clueful =)
First - what is it so far:
* I hacked an existing smiley to add the (existing but
apparently un-used / buggy) custom draw:engine pieces thus:
<draw:custom-shape draw:style-name="gr1" draw:text-style-name="P1"
draw:layer="layout" svg:width="8.128cm" svg:height="6.35cm"
svg:x="5.445cm" svg:y="5.064cm"
draw:engine="org.libreoffice.draw.barcode" draw:data="LibreOffice
prototype, native QR code rendering, thanks to Collabora">
...
</draw:custom-shape>
It -looks- like this code was intended to add a rather sexy extension
point for custom shapes via the drawing::XCustomShapeEngine IDL file.
Usually I love to hate UNO - but in this case it looks like what could
be possible there is rather sexy.
My -hope- is that this with minimal tweaking would allow me to have
arbitrary python plugins rendering interesting document content - and
also serializing their rendered state as an OLE-style preview to the
XML.
Of course - I'd love to have some feedback on my sanity - quite
possibly this is utterly crazy; quite possibly there are 3x easier &
better ways to achieve the same thing (?) =)
Known problems:
* for QR codes (but prolly not bar-codes) the idea of
representing a bitmap as a ton of polypolygons is prolly
not the greatest idea.
+ but while you can put arbitrary XShape's in there
I suspect serializing that into an attribute is
unlikely to work well.
* no UI yet you need to
* script-ability - I guess we'd want some field / data-driven
/ easy-automation magic:
+ would this work better as a field ?
+ how about as a general draw shape (the svx draw shapes
seem pretty horrible).
* bar-code specifications:
+ some of the spec's are a bit strict: "no less
than 2mm between X and Y"
+ that gives some UI / rendering / unit constraints
+ currently not captured.
* zint
+ software quality appears to be dire
+ hint if you are conditionally replacing
malloc with "alloca" on some platforms
with no other associated changes - something
is wrong.
+ horribly un-maintained: pick the best of at least 3x
under-loved forks.
http://users.freedesktop.org/~michael/zint.tar.bz2
has a snapshot.
+ at least it renders more kinds of bar-codes than
is sensible
Known bugs:
* ODF / back-compatibility - we re-export the original (in my
case smiley) custom-shape which shows up as an unhelpful
fallback for older LibreOffice'n.
* zint is sufficiently bad & closely tied to layout / text
rendering etc. it's prolly easier to re-write
* no system-zint: we're internal / static only - and this is not
a good idea; but I'll list it here anyway for completeness.
I have a blog entry with obligatory screenshot here:
https://people.gnome.org/~michael/blog/2015-01-25.html
I'd love to have some clue on how best to fiddle with this / re-work it
somewhere that it fits.
And yes I have seen this plugin:
http://extensions.openoffice.org/en/project/qr-code-generator
which appears to use some google web plugin to render bitmaps
remotely ;-) not great if they contain confidential data etc.
Thanks !
Michael.
--
michael.meeks at collabora.com <><, Pseudo Engineer, itinerant idiot
More information about the LibreOffice
mailing list