Hello people,
I am the author of LazPaint and I have added support for OpenRaster (without
substacks for now) in my software.
I am considering adding new features to my software and would be happy that it
would be added to OpenRaster as well:
- having a layer rendered from an original (SVG file, image file or an SVG
shape)
- having an affine transformation to be applied to the original
- adding effects to the original (I suggest using SVG format)
The idea is that while current readers would read the file just the same, the
layer node would have a subnode that contains how to produce the image of the
layer.
Note on units: I suggest to use a DPI of 96 for embedded SVG as it is quite
common. For SVG directly writting in the stack, I suggest to use either
percentage and use the pixel coordinates as default (and avoid the DPI mess).
For the sake of simplicity, we can limit the number of elements to 1 in the
layer. It is still possible to achieve multiple shapes by using multiple
layers, for example in a stack element.
Also we can support only basic SVG nodes, i.e. <ellipse>, <image>, <line>,
<path>, <polygon>, <polyline>, <rect>.
For example, the following file has a gradient background, a blurred embedded
SVG on top of it, and a PNG on top of it.
<?xml version="1.0" encoding="utf-8"?>
<image h="1024" w="1024">
<defs>
<filter id="filter1">
<feGaussianBlur stdDeviation="4"/>
</filter>
<linearGradient id="gradient1" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="5%" stop-color="green"/>
<stop offset="95%" stop-color="gold"/>
</linearGradient>
</defs>
<stack>
<layer x="100" y="50" src="data/layer2.png" name="rectangle"
opacity="1.000" visibility="visible" composite-op="svg:src-over">
<image src="originals/original2.png" transform="translate(200,50)
rotate(90)"/>
</layer>
<layer x="50" y="50" src="data/layer1.png" name="rectangle" opacity="1.000"
visibility="visible" composite-op="svg:src-over">
<svg src="originals/original1.svg" transform="translate(50,50)
scale(2,2)" filter="url(#filter1)"/>
</layer>
<layer x="0" y="0" src="data/layer0.png" name="gradient" opacity="1.000"
visibility="visible" composite-op="svg:src-over">
<rect x="0" y="0" width="1024" height="1024" fill="url(#gradient1)"/>
</layer>
</stack>
</image>
Regards,
--
Johann ELSASS
[email protected]
_______________________________________________
CREATE mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/create