I think it's partly in there in a non-functional form,
> the patch I've attached removes it and adds a new
> function to the Axes class called directshow. This
> accepts the same syntax as imshow (where relevant)
> rather than adding options to imshow; I chose to do this
> as my old syntax for passing through imshow wasn't that
> easy to understand didn't makes the different
> functionality clear. This function calls a class call
> DirectImage which inherits from AxesImage.
I have mixed feelings about making this a separate class / separate
function. The current axes imshow / image.AxesImage is already
overloaded (handling MxN, MxNx3, MxNx3, _image.Image and PIL images.
What is the logic of making a special functions/classes case for MxNx4
with directshow. On the one hand, I appreciate the desire to simplify
the code by pulling it into separate classes and functions. On the
other hand, I wonder if it will confuse users to have one separate
function for UInt8 images and another for everything else. Another
worry I have about the separate DirectImage class is that it copies
much of the image resize functionality from AxesImage, including the
broken handling of aspect='preserve'. This too argues for keeping as
much functionality in AxesImage as possible, testing for A.typecode()
where appropriate. What do you think?
Also, note the matplotlib CVS has added several new image
interpolation methods. Some of these need the parameters
as described in the imshow docstring. Since directimage exposes the
interpolation method, shouldn't it also expose these new params.
> I've also rewritten my c++ image object creation
> function called frombyte to take an unsigned byte array
> as input rather than a buffer. By using the
> std::memcopy function rather than a loop for copying the
> speed advantage of passing data in as a buffer
> disappears and using arrays is generally more intuitive.
> The function still only takes x*y*4 arrays as input at
> the moment as the processor time decrease from not using
> loops to copy is fairly significant.
Looks good to me. I'll hold off on applying these changes until I
hear from you on the issues above.