Well I kind of answered my question .. what all our example optimisations have 
in common is lack of transparency.  

Our fallback solution is similar to this snippet - 
http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet156.java

(With our solution copying three bytes over, and the above working an int at a 
time).

I also found the following interesting example which could result in a speedup…
- 
http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet341.java

The example is taking a buffer provided by OpenGL and setting it up for use as 
an ImageData.

The interesting part is that this is a 32 bit depth buffer (i.e. using alpha 
data like we want), they manage to use the bytes directly by assigning the 
following PaletteData:

ImageData data = new ImageData(bounds.width, bounds.height, 32, new 
PaletteData(0xFF000000, 0xFF0000, 0xFF00), PAD, bytes);

We would still require a manual pass to extract the alpha information, but the 
raw bytes of our buffered image could be used as is .. resulting in a speedup.
--  
Jody Garnett


On Friday, 15 March 2013 at 12:41 PM, Jody Garnett wrote:

> I was reusing the AWTSWTImageUtils class in another project and noticed an 
> inconsistency.
>  
> The createBufferedImage method consists of:
>  
>     /** Create a buffered image that can be be converted to SWTland later */
>     public static BufferedImage createBufferedImage( int w, int h ) {
>         //AWTSWTImageUtils.checkAccess();
>         return new BufferedImage(w, h, BufferedImage.TYPE_4BYTE_ABGR_PRE);
>     }
>  
>  
> But the createImagerData method is optimised for TYPE_3BYTE_BGR.
>  
> The consequence of this is that we are using a for loop to copy bytes over 
> from the BufferedImage to an SWT image one at a time. Changing over to BGR 
> did not actually help (the result lacked transparency and came out all 
> black). I had always assumed that this optimisation was intended for windows 
> or linux or something - but in testing today it is not used on Windows either.
>  
> So chances are there is some performance left on the ground here we could 
> really use.
>  
> Jesse do you remember if it is possible to set up a BufferedImage we can 
> cleanly use for ImageData? Or am I missing the point here.
>  
>  
> --  
> Jody Garnett
>  

_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to