### Text User interface toolkit Spade includes a basic text UI toolkit with which you can assemble some basic user interface. The toolkit includes input boxes, select dropdowns etc. ### Layouts Layouts are used to arrage various widgets on the screen. Layouts can be either Horizontal or Vertical. A UI can be built by nested combination of horizontal and vertical layouts. ### Character graphics Spade includes the ability to write text to arbitrary screen locations and do screen updates without flicker. This is done by painting only the changes portions of the screen. Try running 'char-animation.spd' program from the samples folder to see this. To start using this feature, you should first initialize the buffers using #link: csinit# function. The you can start writing stuff to arbitrary locations on screen by going to the required location using #link: csgoto# and writing stuff using #link: csprint# function. Then at the end, you have to call the #link: csdraw# function to actually display the screen. You might also want to call #link: csclear# function to clear the buffers before starting to draw the next frame. Here is a small program that prints "Hello world!" at 10 columns right and 10 rows down. ``` csinit() csgoto(10, 10) csprint("Hello world!") csdraw() waitforkey() ```