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
  circu...@operamail.com
_______________________________________________
CREATE mailing list
CREATE@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/create

Reply via email to