Here's an implementation for function based shading and 4 sample files. The implementation is rather simple. The real work is done in the function, see subtask. I'm using a reverse transformation of the two matrices so that getRaster() gets the "pure" values. The implementation works on two test images and fails on two. I believe that the cause for the two it fails is the problem I had with Type 4 and 5. I also noticed (when debugging) that for FUNSH01.pdf, my implementation always gets the same matrices despite that its 4 different areas in that page.
(Don't get confused by the name "asy-latticeshading.pdf", its not type 5 lattice shading)