all done in vector except for the coloring which must be done in bitmap :D
Hope it's exceptionable :)