VIC is not meant to be a full bloated window manager, widgets, dialogs, theme rendering framework. If you need an advanced windowed GUI, there are many other cool libraries around, like µC/GUI, StWin etc. Basicly every display needs a driver. But unlike as in many other designs, the driver is the highest class of which the head (display) is instanciated. A graphic driver only needs to implement drv_pixel_set_color and drv_pixel_get functions. But most modern display controllers can provide more sophisticated functions for native line/box rendering, block moving etc. If a controller can provide such special functions, the according function is implemented in the driver by simply overriding the virtual function of the gpr base class. All graphic functions which the controller/driver can't provide natively are handled by the gpr. Of cource, native rendering on a specialized LCD controller is always faster and should be prefered.