Ah, I see - like a decorator.
On Jul 13, 2011, at 5:56 PM, Chris Bartlett wrote: > On 14 July 2011 04:32, Greg Brown <gk_br...@verizon.net> wrote: >>> It just seems cleaner to prepare the data first, and then let >>> ImageView simply show whatever it has been given. Much the same as >>> when populating a ListView, TableView or TreeView for example. >> >> The difference is that the renderer would be modifying the data, rather than >> the application. That isn't good. > > No, I am not suggesting the renderer do anything other than render, > and certainly not modify any data. In fact the renderer wouldn't even > know that the 'clipped' image was in any way different to any other > image. For that matter, neither would ImageView or anything else that > uses Images, as it is none of their concern where the data originally > came from, or comes from now. They just need to know how to deal with > it once they are given it. > > Continuing the comparison with ListView - I can use a base > List<Widget> as the 'listData' for one ListView, and then create a 2nd > List<Widget> (which is backed by the other list) and use as the > 'listData' for another ListView. (The old FilteredList class would be > a perfect example of one list backed by another) > > Similarly, offsets & clip bounds would be handled by a lightweight > Image (the equivalient of the FilteredList above). That Image would > be backed by the 'source image' and just would paint the relevant part > of that source image when its own paint method was called. > > It could be considered similar to how the consumer of a > java.io.InputStream just deals with the data it receives, without > knowledge of any processing that may have occurred beforehand and > transformed the data in some way. > > Image = java.io.InputStream > ClippedImage = java.io.FilterInputStream