picoTK is split into two parts. Firstly a generic part, which contains
the hardware independent code. Currently the generic part is fully
contained in the file
PTK_generic.. Secondly the driver part,
which adapts picoTK to a specific hardware platform. Three drivers
are furnished with picoTK for 1, 4 and 8 bit color depth respectively
- they are contained in the files
They are alternatively linked together with the generic part to form
the picoTK library. That is a change of the color depth yields a
different picoTK library. Some of the functions in the driver are
non trivial - like the text draw functions - while others are. The
implementation is not yet fully optimized for speed. At present the
1 bit per pixel implementation is best optimized. The following
describes the picoTK driver API functions.
void picoDriverInit(void) void picoDrawPointRaw(int x, int y, int color) void picoFillRectRaw(int x, int y, int w, int h, int color) void picoReverseRectRaw(int x, int y, int w, int h) int picoDrawTextRaw(int x, int y, char *txt, struct picoFont *font, int fgc, int bgc) int picoDrawPixmapRaw(int x, int y, struct picoPixmap *pm, int fgc, int bgc) int picoScrollRaw(int x, int y, int w, int h, int delta, int bgc)
picoDriverInit() Initializes the hardware, which is basically the
clearing of the framebuffer. If your system requires intialization of
a CRTC this has to been done here as well. When using RTEMS with the
pc_386_lilo package the VGA subsystem has already been initialized and
clearing the screen is all which has to be done. (Actually the PC's BIOS
has already done the clearing of the screen on its own).
picoDrawPoint() This function draws a single point. It shall be
optimized for speed as it is called for the line drawing and rectangle
drawing functions as well.
picoFillRectRaw() Fills a rectangle window of the given size at
the given origin with the specified color.
picoReverseRectRaw() Reverses a rectangle of the given size at the
given origin. Every pixel value within this rectangle is inverted
picoDrawTextRaw() Draws text. As opposed to the high-level routine
picoDrawText() it does not do processing of non printables like
linebreaks. This function is relatively time consuming. As it generally
has to shift any byte from the font data to fit at the correct screen
position. The 1 bit per pixel driver has an optimization for 8 pixel
wide monospaced fonts on modulo 8 x position boundaries.
picoDrawPixmapRaw() Copies a picoTK pixmap to the screen. Currently
only 1 bit color depth pixmaps are supported. With the 4 and 8 bit color
depth drivers the pixmap is mapped to the screen by using the foreground
and background colors for pixmap color values of 0 and 1 respectively.
picoScrollRaw() Horizontally scrolls the screen up or down by delta
lines. Positive values of delta scroll down, negative scroll up.
int picoInfoSizeX(void); int picoInfoSizeY(void); int picoInfoColorDepth(void);
picoInfoSizeY()return the number of displayed pixels in X and Y direction respectively.
picoInfoColorDepth() return the number of bits per pixel. Values
of 1, 4 or 8 mean 2, 16 or 256 simultaneously displayable colors. Color
values range from 0 to 1, 15 and 255 respectively.