[CREATE] ORA fullscreen viewers

Alastair M. Robinson blackfive at fakenhamweb.co.uk
Fri Sep 10 12:49:44 PDT 2010


Hi :)

On 10/09/10 19:28, Luka Čehovin wrote:

> I think we should start working on the solution for this problem step
> by step. First we need a baseline/reference for storing and loading
> ora files that is capable of accessing all the data elements in some
> platform independent manner.

So a separation of storage and interpretation?  Probaby a good idea, 
given the ambitious goals of ORA.

> After that a viewer can be built for a
> specific platform using this library and some graphics library that
> actually handles rendering. Putting all this functionality in one
> library and expecting it to render a single raster for you would be
> either a lot of work and a lot of code to maintain or would require
> using a lot of external dependencies (in my vision the basic library
> should be similar to libpng in terms of external dependencies).

Well by all means have a low-level library analogous to libpng - just 
bear in mind that if using such a library is too burdensome for 
application developers it won't be used.  I don't want to sound 
pessimistic here, because ORA's a great idea - but there are two ways it 
could go horribly wrong:

1. The reference library doesn't provide enough functionality, and 
leaves the application developer to implement various filters, blends 
and colourspace conversions.  As you rightly point out, this is a lot of 
work, which in this scenario has to be duplicated in each application 
that suports ORA.  As a result, support for ORA remains patchy, and 
those applications which do support it have incomplete or bug-ridden 
implementations.  End users find that using ORA causes them problems, so 
avoid the format.

2. The reference library provides application developers with a way of 
getting a flat pixel buffer from an ORA file, but doesn't support all 
the blend modes and filters.  In this case, many applications will 
rapidly gain ORA support, but end users will once again find that their 
images don't appear correctly, and again get the impression that the 
format can't be "trusted" and should be avoided.

To my mind the best solution would be to have both a high-level and 
low-level interface - so apps which can handle layers, blend modes, etc, 
would use, say, libora_lowlevel, and apps that don't care about the 
composition of the image but just want to display or print it can use 
libora_highlevel to get a flat pixel buffer.  If the high-level library 
doesn't support all blend modes, etc, then fair enough - that can be 
improved over time.  What is vital, however, and I cannot emphasize this 
enough, is that if a user attempts to open an ORA file that makes use of 
unsupported features, the user *must* be informed that the flat pixel 
buffer is only a best-effort rendition.

Wow - I'm in blowhard mode tonight - hope someone finds these thoughts 
useful anyway. :)

All the best
--
Alastair M. Robinson


More information about the CREATE mailing list