[whatwg] [canvas] imageRenderingQuality property
oliver at apple.com
Mon Jun 30 17:18:29 PDT 2008
> So now we need to define levels of graphic burden? and at what level
> of burden does the quality suffer? Seems just as hard to define.
> Having the author explicit say "this has to be as high quality as
> possible" or "less can be low quality" seems better and we have
> examples of other specs offering the same kind of control.
No. The whole point is that the UA is in the best position to
identify what the tradeoffs are, not the author -- if you want a flag
to specify the quality to be used then that would require you to
determine what the tradeoffs were yourself, with no substantial
knowledge of what combination any given user was actually using. You
need to realise that different UAs and different platforms have
substantially different performance characteristics.
And that said how would you make the decision yourself anyway? Your
decision will almost always hurt *some* portion of your userbase,
either through lower quality than would otherwise be possible, or by
making a page that is unusable for someone with a lower powered device.
And then, after you've made that decision you will start getting some
people saying UA1 looks better than UA2 because you underestimated
performance of the UAs, and UA1 ignores the flag. Or you'll get
people saying UA1 is unusable because you found it was slow in UA2, so
you dropped the quality setting -- which UA1 ignores, but then a year
later you get people saying UA1 looks better again because hardware is
faster so it now do its higher quality rendering without any problem
-- but UA2 is still using the low quality path. Finally you test on
UA1 and UA2, and find your site looks good in one, but is too slow in
the other, do you now lower the quality in both so that your site is
usable in both, or do you try and make the decision in JS at runtime?
If the latter you now have quite a bit more work to do. How do you
determine the performance of a particular UA/platform combination? JS
performance is not the same as canvas, so you have to manually test
canvas performance, so you are now trying to hand code what could
already be built into the UA. Alternatively you could just try to
take the lazy path and do a UA check, and try to determine the
performance based on UA but now you have *all* of the standard UA
check problems, and you still can't test the real performance because
you don't know what hardware you're on.
If the UA makes its own decisions about performance, it can make a
decision based on a wide range of information that you do not have any
access to, in addition to being aware of the specific costs of certain
operations (eg. a UA could choose to lower the quality of only a
single operation, like image scaling, but leave other operations at
their standard fidelity -- trying to do this in a flag would be both
horrifically complicated for authors *and* would represent tremendous
over specification by the standard)
More information about the whatwg