<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">On Sunday 09 August 2009, Martin Renold wrote:<br>
&gt; On Sun, Aug 02, 2009 at 01:36:35PM +0100, Øyvind Kolås wrote:<br>
&gt; &gt; [...] or perhaps even make the projection/ fallback/cache rendering<br>
&gt; &gt; reference just an attribute of the filter/stack/layer.<br>
&gt;<br>
&gt; I think the fallback/cache will need own attributes, like x/y position and<br>
&gt; maybe the possibility to provide both a float and an 8bpc variant.<br>
I am not sure if I see the point of this, I would suggest to limit fallback to RGB8bit (eventually to grayscale 8bit).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; And we might have to distinguish between fallbacks/caches for filters<br>
&gt; (which provide a replacement image for everything below them) and<br>
&gt; fallbacks/caches for &lt;render&gt; tags (which are composited OVER whatever is<br>
&gt; below them).<br>
Why the need of a distinction, if you see &lt;render&gt;&lt;fallback /&gt;&lt;/render&gt; and &lt;filter&gt;&lt;fallback /&gt;&lt;/filter&gt; then you know what kind of replacement you need to do.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; &gt; We should permit fallbacks as a subelement of all possible OpenRaster XML<br>
&gt; &gt; elements,<br>
&gt;<br>
&gt; With this solution, if we want the applications that need the fallbacks<br>
&gt; also to actually use them, then we should quickly define a small, permanent<br>
&gt; and sealed list of possible OpenRaster XML elements.<br>
&gt;<br>
&gt; (Assuming we don't want an un-XML'ish solution after all, by asking<br>
&gt; implementations to check every unrecognized tag for fallbacks.)<br>
that would plead for doing the other way around &lt;fallback&gt; &lt;render /&gt; &lt;/fallback&gt;, I am unsure of what I prefer.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; &gt; and that it would be encouraged to make this information survive<br>
&gt; &gt; an load/edit/save cycle.<br>
&gt;<br>
&gt; Do you mean unrecognized filters and tags? In order for this to work,<br>
&gt; unrecognized datafiles also have to survive the load/edit/save cycle.<br>
&gt;<br>
&gt; Examples:<br>
&gt; - SVG datafiles used by an SVG render tag<br>
&gt; - color profiles (for apps that don't know about them)<br>
&gt; - app-specific extensions:<br>
&gt;   - vectorized strokes (tablet input data) for some layers<br>
&gt;   - avatar pictures of users who have edited the image<br>
&gt;<br>
&gt; To be sure you would have to preserve the whole ZIP content. Do you think<br>
&gt; such a thing would actually get implemented in GIMP or Krita?<br>
I hope so.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>&gt; &gt; There is currently no "render" element in OpenRaster.<br>
&gt;<br>
&gt; Wouldn't it be appropriate to use the &lt;render&gt; element also for text and<br>
&gt; for SVG data?  Applications that don't handle SVG or text could just<br>
&gt; support it with the same code. This also helps reducing the number of tags.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>For SVG, I would simply use &lt;layer src="myfile.svg" /&gt;.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>-- <br>
Cyrille Berger</p></body></html>