LittlevGL is a graphics library to create Graphical User Interfaces (GUI) on TFT, LCD or monochrome displays using microcontroller based embedded systems.
Transparency, anti-aliassing and smooth animations can be used with no double buffering so typically no external memories are required.
The graphics library is written in C and it is completely hardware independent. You can even run it in a PC simulator without any embedded hardware.
Homepage: https://gl.littlev.hu
- Hardware independent, support any modern microcontroller
- High resolution TFTs, monochrome or any type of display supported (24/16/8/1 bit color depth)
- External RAM, FPU or GPU not required just optional
- Build GUI from simple graphical objects
- Buttons, Labels, Images
- Charts, Lists, Bars, Sliders, Text areas etc.
- High level graphical features without double buffering
- Antialiassing (font or full screen)
- Animations
- Transparency
- Gradient colors
- Smooth dragging and scrolling
- Layers
- Customizable appearance with styles
- Applications for complex tasks
- Can run in a PC simulator
- Modular and well-structured source code
- Actively developed
The following functions has to be provided
- hal/disp
disp_fill(x1, y1, x2, y2, color)
to fill area with a color - hal/disp
disp_map(x1, y1, x2, y2, &color_array)
copy a color map to an area - hal/disp
disp_color_cpy(dest, src, length, opa)
copy pixel, optional for GPU - hal/indev
indev_get(id, &x, &y)
get the x and y coordinates from an input device (e.g. touch pad) - hal/systick
systick_get()
get a system tick with 1 ms resolution - hal/systick
systick_elapse(prev_time)
get the elapsed milliseconds sience prev_time
See the example HAL repository!
- Misc. library is used by the graphics library
- Clone or download the following repositories:
- lvgl:
git clone https://github.com/littlevgl/lvgl.git
- misc:
git clone https://github.com/littlevgl/misc.git
- hal:
git clone https://github.com/littlevgl/hal.git
- lvgl:
- Create project with your prefered IDE and add the lvgl, misc and hal folders
- Add your projects root directory as include path
- Write your display, touch pad and system tick drivers in hal
- Copy lvgl/lv_conf_templ.h as lv_conf.h and misc/misc_conf_templ.h as misc_conf.h to the projects root folder
- In the *_conf.h files delete the first
#if 0
and its#endif
. Let the default configurations at first. - In your main.c include:
- #include "misc/misc.h"
- #include "misc/os/ptask.h"
- #include "lvgl/lvgl.h"
- In your main.c intialize:
- misc_init();
- your_systick_init();
- your_disp_init();
- your_indev_init();
- lv_init();
- To test create a label:
lv_obj_t * label = lv_label_create(lv_scr_act(), NULL);
- In the main while(1) call
ptask_handler();
and make a few milliseconds delay (e.g.your_delay_ms(5);
) - Compile the code and load it to your embedded hardware
If you don't have got an embedded hardware you can test the graphics library in a PC simulator. The simulator uses SDL2 to emulate a display on your monitor and a touch pad with your mouse.
There is a pre-configured PC project for Eclipse CDT in this repository: https://github.com/littlevgl/proj_pc
See CONTRIBUTING.md
If you are pleased with the graphics library and found it useful please support its further development: