ImpressionistDoc--This basically maintains the bitmap for answering the color query from the brush. It also acts as the bridge between the brushes and the UI (including views).
ImpBrush--This is a base class for each of the paint brushes. It defines the functionality that the brushes should have. Your new brushes should inherit from this class. The color that your brush paints with is also set here.
PaintView--This maintains the paint view of the input images and handles events related to the paint view. Add new events and changes to the painted image here.
OriginalView--This maintains the original view of the input images. Add changes to the original image here.
PointBrush--This is the implementation of Point Brush. It
is a kind of ImpBrush. All your brush implementations will look like this
with different GL primitive calls.