- From: Philip Taylor <pjt47@cam.ac.uk>
- Date: Wed, 30 Apr 2008 02:33:33 +0100
- To: HTML WG <public-html@w3.org>
From the "Pixel manipulation" section: "readonly attribute int[] data;" - should that look like a JS Array object? I've seen one person write "imagedata.data.join(', ')" (for debugging), relying on the Array methods being there, so it might be good (for functionality and for interoperability) if that worked. "If the first argment to the method is null or not an ImageData object that was returned by createImageData() or getImageData()" - how can you get an ImageData object that wasn't returned by one of those methods? If it's possible, things should be changed to make that impossible (since such an object is unusable). If it's impossible, it's pointless to list those methods, and makes it harder for anyone to add a new way to return ImageData (e.g. a getImageData on a 3D context) since they'll have to update that putImageData definition each time. "If any of the arguments to createImageData() or getImageData() are infinite or NaN, or if either the sw or sh arguments are zero, the method must instead raise an INDEX_SIZE_ERR exception.", and "If any of the arguments to the method are infinite or NaN, the method must raise an INDEX_SIZE_ERR exception." - shouldn't infinite/NaN be handled with NOT_SUPPORTED_ERR, for consistency with every other method? If so, that case shouldn't need mentioning here, since it's implicitly handled by "Common conformance requirements for APIs exposed to JavaScript". "If the number is not an integer, it must be rounded to the nearest integer using the IEEE 754r roundTiesToEven rounding mode." - perhaps that should be convertToIntegerTiesToEven to be slightly more precise, since roundTiesToEven is a generic (not necessarily integer) algorithm. "for all values of x and y where dirtyX ≤ x < dirtyX+dirtyWidth and dirtyY ≤ y < dirtyY+dirtyHeight" - should say "for all integer values of x and y ..." Step 5 ("If, after those changes, either dirtyWidth or dirtyHeight is negative or zero, stop these steps without affecting the canvas.") is redundant and useless, since step 6 will have no effect anyway when either of those conditions holds. "the pixel with coordinate (x_{device}+x, y_{device}+y)" - they were called "dx_{device}" etc earlier - should be consistent. "Thus, while one could create an ImageData object, one would not necessarily know what resolution the canvas expected" - that doesn't make sense to me. It would make sense as "Thus, while one might wish to create an ImageData object by specifying the <code>width</code> and <code>height</code> attributes directly, one would not ..." "In the following example, the script first obtains the size of the canvas backing store, and then generates a few new ImageData objects which can be used." - no it doesn't. "The putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) method writes data from ImageData structures back to the canvas." - should say "The putImageData(imagedata, dx, dy) and putImageData(imagedata, dx, dy, ...) methods write ...", else it'll confuse people into thinking the dirty arguments are required. (Also, it'd be nice if there was link from here back up to the IDL so people can check the declarations.) "the following must result in no visible changes to the rendering: context.putImageData(context.getImageData(x, y, w, h), x, y); ...for any value of x and y." - should say "for any values of x, y, w and h." "The values of the data array may be changed" - abuse of RFC2119 keyword. ('MAY' is defined in terms of implementations optionally supporting a feature, and having to interoperate with implementations that include and exclude that feature, so it makes no sense here.) Typos: "rectanglewhose" "argment" "the heightmember of the imagedata structure" "thr pixels" "crateImageData" -- Philip Taylor pjt47@cam.ac.uk
Received on Wednesday, 30 April 2008 01:34:19 UTC