[CREATE] OpenRaster, some open points

Cyrille Berger cberger at cberger.net
Tue Mar 13 06:56:13 PDT 2007


Hello,

A little update and call for comments about OpenRaster specifications:

- layer stack, it's the specification the closest to be finished (see 
http://create.freedesktop.org/wiki/index.php/OpenRaster/Layers_Stack_Specification), 
but there are still a few points that need to be addressed:
 . mask handling, currently, while it's not clearly stated in the draft, masks 
are stored as children nodes of the layer on which they are applied. But a 
second proposition has been made: masks could be handled as a filter layer, 
in fact a mask is a filter that works on the transparency of a layer. So mask 
storage could be done this way:
<filter name="filter1" type="masking">
<params>
 <param name="mask"><layer src="mask1.png" /></param>
</params>
</filter>

Instead of:

<layer name="layer1" src="image1.png" >
  <layer src="mask1.png" /> <!-- note that this layer element should be at 
least renamed to "mask" -->
</layer>

The main drawback is that the XML looks heavier this way, but the 
implementation should be easier, as you won't need to add a special way to 
handle masks as they would be correctly handle by the allready existing 
filter mechanism.

 . it needs to be bullet proof, I would like to know if there is any points 
that need clarification ?

- supported color spaces in baseline, RGBA (integer and float for HDR) 
8/16bits, GRAYA (integer) 8/16bits, CMYKA (integer) 8/16bits are must have. 
But Krita and gegl supports (or will supports) a much broader variety of 
color spaces (LABA, XYZA, YCbCrA...), the question is : is there an interest 
to consider some of those as important for interoperability, and therefor, 
needed to be included in baseline ?
- data storage specification
 . png for RGBA integer 8/16bits and GRAYA integer 8/16bits
 . exr for RGBA float 16/32bits

Some have expressed concern that having a specific data storage specification 
will make it complicated for a great variety of projects to write a complete 
implementation. On the other hand, at least CMYK 8/16bit is a must have, and 
none of the above fileformat supports it. And I also thinks that the above 
formats (or any other) are not unnecessarily the most efficient file formats 
for daily usuage in either the Gimp or Krita, and having either of them use a 
(even slightly) different fileformat will defeat one of the strongest 
interest of OpenRaster.


As we are definitively not going to reinvent the wheel for the few following 
items, we are going to take inspiration from existing file format

- filter / composite operations, the SVG specification define some filters and 
some composite operations (see http://www.w3.org/TR/SVG/filters.html), while 
SVG defines both of them as "filter", in OpenRaster they will have to be 
divided in to two sections : composite operations (takes two layers as input 
and return only one) and filters (transform one layer into an other).

- vector layer, tinySVG (see http://www.w3.org/TR/SVGMobile12/) seems to be 
enough for the need of OpenRaster

- text layer, before considering a solution, we need to think about the use of 
text layer and then the list of "features" we want text layer to have. Beside 
some basic formating like, alignment, fonts and styles (by style I mean 
italic, bold, underline...).


Remember, that we don't necessarily aim at being exhaustive for the first 
version of the specifications, but it is important that no unneeded features 
is included as they would be harder to remove in later revisions.

-- 
Cyrille Berger


More information about the CREATE mailing list