- From: Charles McCathieNevile <chaals@opera.com>
- Date: Sun, 18 Dec 2011 17:44:48 +0100
- To: "Steve Faulkner" <faulkner.steve@gmail.com>, "Paul Bakaus" <pbakaus@zynga.com>
- Cc: public-canvas-api@w3.org, public-html@w3.org, public-html-a11y@w3.org
On Sun, 18 Dec 2011 11:15:59 +0100, Steve Faulkner <faulkner.steve@gmail.com> wrote: > Jonas wrote: > >> However even for hit testing and focus management, maybe we would >> design the API differently if we weren't trying to use them to built >> text editors. I really don't know enough about accessibility to fully >> answer that. One proposal was to re-use the image map paradigm, because it is well known, widely implemented interoperably (modulo some implementations being partial - just like HTML5 and SVG and CSS3...), and because it already provides at least a great many of the necessary hooks to make an interactive visual representation of something accessible. There are indeed other ways to do this (e.g. we could use the aria syntax that builds the same thing, we could design the API from scratch, we could adopt something from SVG, etc), but what I do know about accessibility leads me to doubt that we need to reinvent this wheel again from scratch. We should of course examine it for the use cases which go beyond "accessibility" before taking such a decision. > For hit testing, example uses and background is provided by Frank > Olivier in the doc i pointed to: > http://www.w3.org/wiki/Canvas_hit_testing > He has also publicly stated that building text editors in canvas is a > 'fools errand': > http://lists.w3.org/Archives/Public/public-html/2011Nov/0210 > So I think it is reasonable to assume that Franks hit testing proposal > is not motivated by the desire to build text editors in canvas. I also believe that building text editors in canvas is a fool's errand, but that hit testing with a level of "what pixel was touched" would be valuable. There are a lot of use cases. I'll detail some and roughly describe some more. I cc'ed Paul because I recall him saying that for games this would be really valuable. Use case: Graphics editors Canvas has been used to create numerous applications for manipulating graphics. Where button controls are drawn into the canvas, some relatively simple calculation needs to be done to check whether they have been activated. Where there is any dynamic aspect to this (e.g. a brush selection button results in a number of possible brushes being shown) the complexity of the calculations required increases rapidly. Elements which can have a listener applied and whose coordinates in the canvas can be easily described (which is already done to draw or "undraw" them) reduce the complexity and increase the maintainability of the code. (Having had such tools on the Apple II Plus (1983) I find the argument that this sot of application is not suited to keyboard use a load of post-hoc rationalisation of nonsense, although I recognise that it has been successfully employed in the past for setting legal requirements. The difference between that and technical use cases is one related to where the burden is imposed. Applying the principle that things should be easiest for users and hardest for proponents of theoretical technical purity, I conclude that making this possible in a browser is less burden on the world than making every app developer do it on their own). Use case: Adaptable games Many very simple graphical games (pitched around kindergarten level) can be made in either SVG, HTML+CSS or canvas, with the most important determinant being the programming paradigm most suited to the developer's further needs. peepo.com provided a suite of such games for people with severe intellectual disability, explicitly designed to familiarise people with the use of the mouse to interact with on-screen objects which were randomly drawn on the canvas. The ability to hit-test and determine which of a set of objects is nearly all of the active code in a canvas implementation (the examples on peepo happened to use SVG because the author was more familiar with it, and it is indeed better suited to this kind of application). NB There are many demos of "piles of photos" which have similar underlying code requirements. Use case: Jigsaw puzzles Canvas is ideally suited to making dynamic jigsaw puzzles. Taking a picture, cutting it into fragments, and randomly distributing them on the canvas is much easier in canvas than SVG. But to enable a user to dynamically interact with the pieces, some kind of hit-testing is required. Doing this with listeners on elements whose location can be updated, rather than having to do the calculation in javascript every time, makes a significant difference to the amount of code required and to its complexity and maintainability. In many ways this is a specialisation of the previous use case, but one where the use of canvas really is far more natural than any alternative. Use case: Accessible visual testing The tests required for a driving license in Victoria (and presumably in many countries, since the underlying parts are basically the same) include many based on visual interpretation of a scene and identifying important points. The level of visual perception required for the normal presentations of the test (on relatively small touch screens) is notably higher than the level of visual perception required to drive safely. Similarly, the use of visual interactive canvases to explain chemistry and then examine students is decades old*, but a certain proportion of prospective chemists will need to zoom and pan around the presentation because their vision is insufficient to interact with the default system (while perfectly good enough to be expert chemists - something that in fact people can do being completely blind). The ability to dynamically adjust the size of the canvas without having to re-calculate all hit zones simplifies the task of making the system meet legal requirements for accessibility. (I studied chemistry decades ago and had to squint to use such systems.) Some other places this would be helpful beyond simple generalisation of the use cases above include: + 2-dimensional interactive map and map-based interactions (from treasure-map games to crowd-sourcing information about danger spots in a given area); + offering the ability to move annotations on a map so they don't overlap; + games which intrinsically require zoom and pan e.g. to mimic the limited view a pilot has at any time over the entire set of controls available in a flight deck; + Interactive UI design tools that allow for live addition of functionality to components initially drawn and manipulated on a canvas This is by no means exhaustive, just some illustrative examples. cheers Chaals -- Charles 'chaals' McCathieNevile Opera Software, Standards Group je parle français -- hablo español -- jeg kan litt norsk http://my.opera.com/chaals Try Opera: http://www.opera.com
Received on Sunday, 18 December 2011 16:45:31 UTC